From b3d035be9f00f843535f30e9b7ee4776b7e4be1d Mon Sep 17 00:00:00 2001 From: Joey Parrish Date: Fri, 19 Dec 2014 14:26:19 -0800 Subject: [PATCH] Shaka Player release v1.0 --- .gitignore | 7 + AUTHORS | 16 + CHANGELOG.md | 58 + CONTRIBUTING.md | 58 + CONTRIBUTORS | 28 + LICENSE.txt | 202 + README.md | 115 + app.js | 548 ++ assets/.htaccess | 4 + assets/angel_one.mpd | 92 + assets/angel_one.sidx | Bin 0 -> 272 bytes assets/bear-av-enc.mp4 | Bin 0 -> 148151 bytes assets/car-20120827-87.sidx | Bin 0 -> 476 bytes assets/car-20120827-manifest.mpd | 65 + assets/car_cenc-20120827-manifest.mpd | 66 + .../feelings_audio_only-20130806-manifest.mpd | 21 + assets/feelings_vp9-20130806-171.webm.cues | Bin 0 -> 235 bytes assets/feelings_vp9-20130806-171.webm.headers | Bin 0 -> 4452 bytes assets/feelings_vp9-20130806-manifest.mpd | 59 + assets/generate_jwkset.py | 29 + assets/poster.jpg | Bin 0 -> 15030 bytes assets/poster.license | 7 + assets/test_license.json | 1 + assets/test_subs.vtt | 5 + build/all.sh | 23 + build/audit_todo.sh | 32 + build/build.sh | 48 + build/check.sh | 24 + build/docs.sh | 24 + build/gendeps.sh | 25 + build/lib.sh | 88 + build/lint.sh | 22 + docs/mainpage.md | 28 + docs/reference.html | 38 + externs/fullscreen.js | 21 + externs/htmltrackelement.js | 50 + externs/jwk_set.js | 53 + externs/mediakeys.js | 237 + externs/prefixed_eme.js | 133 + externs/promise.js | 26 + externs/videoplaybackquality.js | 50 + index.css | 43 + index.html | 158 + jsdoc.conf.json | 16 + lib/dash/abr_manager.js | 265 + lib/dash/dash_stream.js | 789 +++ lib/dash/dash_text_stream.js | 132 + lib/dash/i_dash_stream.js | 87 + lib/dash/i_segment_index_parser.js | 46 + lib/dash/isobmff_segment_index_parser.js | 177 + lib/dash/mpd_parser.js | 1282 ++++ lib/dash/mpd_processor.js | 1560 +++++ lib/dash/mpd_request.js | 62 + lib/dash/segment_index.js | 118 + lib/dash/segment_range.js | 56 + lib/dash/segment_reference.js | 100 + lib/dash/source_buffer_manager.js | 546 ++ lib/dash/webm_segment_index_parser.js | 346 ++ lib/debug/asserts.js | 57 + lib/debug/log.js | 121 + lib/debug/timer.js | 109 + lib/player/audio_track.js | 87 + lib/player/dash_video_source.js | 650 ++ lib/player/drm_scheme_info.js | 171 + lib/player/http_video_source.js | 170 + lib/player/i_video_source.js | 169 + lib/player/player.js | 968 +++ lib/player/stats.js | 266 + lib/player/text_track.js | 80 + lib/player/video_track.js | 99 + lib/polyfill/fullscreen.js | 46 + lib/polyfill/mediakeys.js | 58 + lib/polyfill/patchedmediakeys_nop.js | 105 + lib/polyfill/patchedmediakeys_v01b.js | 724 +++ lib/polyfill/videoplaybackquality.js | 66 + lib/util/ajax_request.js | 387 ++ lib/util/array_utils.js | 93 + lib/util/data_view_reader.js | 167 + lib/util/ebml_parser.js | 298 + lib/util/event_manager.js | 136 + lib/util/ewma.js | 78 + lib/util/ewma_bandwidth_estimator.js | 116 + lib/util/fake_event.js | 59 + lib/util/fake_event_target.js | 152 + lib/util/i_bandwidth_estimator.js | 58 + lib/util/language_utils.js | 155 + lib/util/license_request.js | 62 + lib/util/multi_map.js | 109 + lib/util/pssh.js | 73 + lib/util/public_promise.js | 59 + lib/util/range_request.js | 63 + lib/util/string_utils.js | 133 + lib/util/typed_bind.js | 39 + load.js | 57 + shaka-player.uncompiled.js | 26 + spec/dash_video_source_spec.js | 160 + spec/data_view_reader_spec.js | 253 + spec/ebml_parser_spec.js | 347 ++ spec/event_manager_spec.js | 156 + spec/fake_event_target.js | 87 + spec/language_utils_spec.js | 64 + spec/license_request_spec.js | 165 + spec/mpd_processor_spec.js | 486 ++ spec/mpd_spec.js | 789 +++ spec/player_integration.js | 345 ++ spec/segment_index_spec.js | 275 + spec/util.js | 234 + spec_runner.html | 62 + support.html | 110 + third_party/SUMMARY.txt | 44 + third_party/blanket_jasmine/LICENSE.txt | 22 + .../blanket_jasmine/blanket_jasmine.js | 5309 +++++++++++++++++ third_party/closure/LICENSE.txt | 202 + third_party/closure/compiler.jar | Bin 0 -> 5899263 bytes third_party/closure/deps/depswriter.py | 202 + third_party/closure/deps/source.py | 118 + third_party/closure/deps/treescan.py | 78 + third_party/closure/goog/base.js | 843 +++ third_party/closure/goog/uri/uri.js | 872 +++ third_party/closure/goog/uri/utils.js | 144 + .../gjslint/closure_linter-2.3.13/LICENSE.txt | 202 + .../gjslint/closure_linter-2.3.13/PKG-INFO | 10 + .../gjslint/closure_linter-2.3.13/README | 9 + .../closure_linter/__init__.py | 16 + .../closure_linter/aliaspass.py | 219 + .../closure_linter/aliaspass_test.py | 161 + .../closure_linter/checker.py | 106 + .../closure_linter/checkerbase.py | 192 + .../closurizednamespacesinfo.py | 494 ++ .../closurizednamespacesinfo_test.py | 602 ++ .../closure_linter/common/__init__.py | 16 + .../closure_linter/common/error.py | 65 + .../closure_linter/common/erroraccumulator.py | 46 + .../closure_linter/common/errorhandler.py | 61 + .../closure_linter/common/erroroutput.py | 52 + .../closure_linter/common/filetestcase.py | 108 + .../closure_linter/common/htmlutil.py | 170 + .../closure_linter/common/lintrunner.py | 39 + .../closure_linter/common/matcher.py | 60 + .../closure_linter/common/position.py | 126 + .../closure_linter/common/simplefileflags.py | 190 + .../closure_linter/common/tokenizer.py | 185 + .../closure_linter/common/tokens.py | 145 + .../closure_linter/common/tokens_test.py | 113 + .../closure_linter/ecmalintrules.py | 828 +++ .../closure_linter/ecmametadatapass.py | 579 ++ .../closure_linter/error_check.py | 93 + .../closure_linter/error_fixer.py | 525 ++ .../closure_linter/error_fixer_test.py | 57 + .../closure_linter/errorrecord.py | 66 + .../closure_linter/errorrules.py | 72 + .../closure_linter/errorrules_test.py | 117 + .../closure_linter/errors.py | 147 + .../closure_linter/fixjsstyle.py | 58 + .../closure_linter/fixjsstyle_test.py | 375 ++ .../closure_linter/full_test.py | 118 + .../closure_linter/gjslint.py | 284 + .../closure_linter/indentation.py | 581 ++ .../closure_linter/javascriptlintrules.py | 738 +++ .../closure_linter/javascriptstatetracker.py | 157 + .../javascriptstatetracker_test.py | 278 + .../closure_linter/javascripttokenizer.py | 363 ++ .../closure_linter/javascripttokens.py | 147 + .../closure_linter/not_strict_test.py | 74 + .../closure_linter/requireprovidesorter.py | 325 + .../requireprovidesorter_test.py | 155 + .../closure_linter/runner.py | 193 + .../closure_linter/runner_test.py | 101 + .../closure_linter/scopeutil.py | 180 + .../closure_linter/scopeutil_test.py | 205 + .../closure_linter/statetracker.py | 1212 ++++ .../closure_linter/statetracker_test.py | 122 + .../closure_linter/strict_test.py | 68 + .../closure_linter/testutil.py | 91 + .../closure_linter/tokenutil.py | 694 +++ .../closure_linter/tokenutil_test.py | 289 + .../gjslint/closure_linter-2.3.13/setup.py | 38 + third_party/gjslint/gjslint | 34 + third_party/gjslint/python-gflags-2.0/AUTHORS | 2 + .../gjslint/python-gflags-2.0/ChangeLog | 62 + .../gjslint/python-gflags-2.0/LICENSE.txt | 28 + .../gjslint/python-gflags-2.0/MANIFEST.in | 19 + .../gjslint/python-gflags-2.0/Makefile | 69 + third_party/gjslint/python-gflags-2.0/NEWS | 78 + .../gjslint/python-gflags-2.0/PKG-INFO | 10 + third_party/gjslint/python-gflags-2.0/README | 23 + .../gjslint/python-gflags-2.0/debian/README | 7 + .../python-gflags-2.0/debian/changelog | 54 + .../gjslint/python-gflags-2.0/debian/compat | 1 + .../gjslint/python-gflags-2.0/debian/control | 26 + .../python-gflags-2.0/debian/copyright | 41 + .../gjslint/python-gflags-2.0/debian/docs | 2 + .../gjslint/python-gflags-2.0/debian/rules | 62 + .../gjslint/python-gflags-2.0/gflags.py | 2862 +++++++++ .../gjslint/python-gflags-2.0/gflags2man.py | 544 ++ .../python-gflags-2.0/gflags_validators.py | 187 + .../python_gflags.egg-info/PKG-INFO | 10 + .../python_gflags.egg-info/SOURCES.txt | 30 + .../dependency_links.txt | 1 + .../python_gflags.egg-info/top_level.txt | 2 + .../gjslint/python-gflags-2.0/setup.cfg | 5 + .../gjslint/python-gflags-2.0/setup.py | 44 + .../flags_modules_for_testing/__init__.py | 0 .../flags_modules_for_testing/module_bar.py | 135 + .../flags_modules_for_testing/module_baz.py | 45 + .../flags_modules_for_testing/module_foo.py | 141 + .../tests/gflags_googletest.py | 119 + .../tests/gflags_helpxml_test.py | 535 ++ .../tests/gflags_unittest.py | 1949 ++++++ .../tests/gflags_validators_test.py | 220 + third_party/jasmine/LICENSE.txt | 20 + third_party/jasmine/lib/jasmine-2.1.3/boot.js | 120 + .../jasmine/lib/jasmine-2.1.3/console.js | 190 + .../jasmine/lib/jasmine-2.1.3/jasmine-html.js | 404 ++ .../jasmine/lib/jasmine-2.1.3/jasmine.css | 62 + .../jasmine/lib/jasmine-2.1.3/jasmine.js | 2913 +++++++++ .../lib/jasmine-2.1.3/jasmine_favicon.png | Bin 0 -> 1486 bytes .../lib/jasmine-ajax-trunk/mock-ajax.js | 374 ++ third_party/jsdoc/.eslintignore | 7 + third_party/jsdoc/.eslintrc | 169 + third_party/jsdoc/.gitignore | 20 + third_party/jsdoc/.npmignore | 14 + third_party/jsdoc/.travis.yml | 7 + third_party/jsdoc/CONTRIBUTING.md | 69 + third_party/jsdoc/LICENSE.md | 380 ++ third_party/jsdoc/LICENSE.txt | 202 + third_party/jsdoc/README.md | 135 + third_party/jsdoc/changes.md | 240 + third_party/jsdoc/cli.js | 463 ++ third_party/jsdoc/conf.json.EXAMPLE | 17 + third_party/jsdoc/gulpfile.js | 81 + third_party/jsdoc/jsdoc | 33 + third_party/jsdoc/jsdoc.cmd | 26 + third_party/jsdoc/jsdoc.js | 184 + third_party/jsdoc/lib/jsdoc/augment.js | 270 + third_party/jsdoc/lib/jsdoc/borrow.js | 107 + third_party/jsdoc/lib/jsdoc/config.js | 60 + third_party/jsdoc/lib/jsdoc/doclet.js | 426 ++ third_party/jsdoc/lib/jsdoc/fs.js | 74 + third_party/jsdoc/lib/jsdoc/name.js | 424 ++ third_party/jsdoc/lib/jsdoc/opts/argparser.js | 301 + third_party/jsdoc/lib/jsdoc/opts/args.js | 140 + third_party/jsdoc/lib/jsdoc/package.js | 254 + third_party/jsdoc/lib/jsdoc/path.js | 134 + third_party/jsdoc/lib/jsdoc/plugins.js | 53 + third_party/jsdoc/lib/jsdoc/readme.js | 26 + third_party/jsdoc/lib/jsdoc/schema.js | 736 +++ third_party/jsdoc/lib/jsdoc/src/astbuilder.js | 390 ++ third_party/jsdoc/lib/jsdoc/src/astnode.js | 299 + third_party/jsdoc/lib/jsdoc/src/filter.js | 67 + third_party/jsdoc/lib/jsdoc/src/handlers.js | 325 + third_party/jsdoc/lib/jsdoc/src/parser.js | 519 ++ third_party/jsdoc/lib/jsdoc/src/scanner.js | 70 + third_party/jsdoc/lib/jsdoc/src/syntax.js | 67 + third_party/jsdoc/lib/jsdoc/src/visitor.js | 442 ++ third_party/jsdoc/lib/jsdoc/src/walker.js | 536 ++ third_party/jsdoc/lib/jsdoc/tag.js | 192 + third_party/jsdoc/lib/jsdoc/tag/dictionary.js | 99 + .../lib/jsdoc/tag/dictionary/definitions.js | 891 +++ third_party/jsdoc/lib/jsdoc/tag/inline.js | 141 + third_party/jsdoc/lib/jsdoc/tag/type.js | 308 + third_party/jsdoc/lib/jsdoc/tag/validator.js | 56 + third_party/jsdoc/lib/jsdoc/template.js | 83 + third_party/jsdoc/lib/jsdoc/tutorial.js | 140 + .../jsdoc/lib/jsdoc/tutorial/resolver.js | 192 + third_party/jsdoc/lib/jsdoc/util/doop.js | 82 + third_party/jsdoc/lib/jsdoc/util/dumper.js | 135 + third_party/jsdoc/lib/jsdoc/util/error.js | 35 + third_party/jsdoc/lib/jsdoc/util/logger.js | 232 + third_party/jsdoc/lib/jsdoc/util/markdown.js | 156 + third_party/jsdoc/lib/jsdoc/util/runtime.js | 117 + .../jsdoc/lib/jsdoc/util/templateHelper.js | 843 +++ third_party/jsdoc/node/fs.js | 63 + third_party/jsdoc/node_modules/async/LICENSE | 19 + third_party/jsdoc/node_modules/async/index.js | 3 + .../jsdoc/node_modules/async/lib/async.js | 692 +++ .../jsdoc/node_modules/async/package.json | 35 + .../jsdoc/node_modules/catharsis/LICENSE | 17 + .../jsdoc/node_modules/catharsis/catharsis.js | 166 + .../node_modules/catharsis/lib/describe.js | 532 ++ .../node_modules/catharsis/lib/parser.js | 4 + .../node_modules/catharsis/lib/schema.js | 69 + .../node_modules/catharsis/lib/stringify.js | 265 + .../jsdoc/node_modules/catharsis/lib/types.js | 24 + .../node_modules/underscore-contrib/LICENSE | 22 + .../node_modules/underscore-contrib/index.js | 16 + .../underscore-contrib/package.json | 43 + .../underscore.array.builders.js | 197 + .../underscore.array.selectors.js | 117 + .../underscore.collections.walk.js | 196 + .../underscore.function.arity.js | 200 + .../underscore.function.combinators.js | 266 + .../underscore.function.dispatch.js | 33 + .../underscore.function.iterators.js | 334 ++ .../underscore.function.predicates.js | 112 + .../underscore.object.builders.js | 120 + .../underscore.object.selectors.js | 108 + .../underscore.util.existential.js | 32 + .../underscore.util.operators.js | 164 + .../underscore.util.strings.js | 129 + .../underscore.util.trampolines.js | 39 + .../jsdoc/node_modules/catharsis/package.json | 48 + .../jsdoc/node_modules/catharsis/res/en.json | 91 + .../node_modules/crypto-browserify/index.js | 68 + .../crypto-browserify/package.json | 29 + .../node_modules/crypto-browserify/rng.js | 37 + .../node_modules/crypto-browserify/sha.js | 210 + .../escape-string-regexp/index.js | 11 + .../escape-string-regexp/package.json | 69 + .../escape-string-regexp/readme.md | 27 + .../jsdoc/node_modules/esprima/esprima.js | 5195 ++++++++++++++++ .../jsdoc/node_modules/esprima/package.json | 61 + .../node_modules/js2xmlparser/LICENSE.md | 16 + .../js2xmlparser/lib/js2xmlparser.js | 328 + .../node_modules/js2xmlparser/package.json | 54 + third_party/jsdoc/node_modules/marked/LICENSE | 19 + .../jsdoc/node_modules/marked/index.js | 1 + .../jsdoc/node_modules/marked/lib/marked.js | 1266 ++++ .../jsdoc/node_modules/marked/package.json | 50 + .../strip-json-comments/package.json | 61 + .../strip-json-comments.js | 64 + .../jsdoc/node_modules/taffydb/README.md | 1 + .../jsdoc/node_modules/taffydb/package.json | 21 + .../node_modules/taffydb/taffy-test.html | 84 + .../jsdoc/node_modules/taffydb/taffy.js | 1973 ++++++ .../jsdoc/node_modules/tv4/LICENSE.txt | 8 + third_party/jsdoc/node_modules/tv4/README.md | 453 ++ third_party/jsdoc/node_modules/tv4/lang/de.js | 29 + .../jsdoc/node_modules/tv4/package.json | 73 + .../node_modules/tv4/tv4.async-jquery.js | 34 + third_party/jsdoc/node_modules/tv4/tv4.js | 1388 +++++ .../jsdoc/node_modules/underscore/LICENSE | 23 + .../node_modules/underscore/package.json | 52 + .../node_modules/underscore/underscore.js | 1343 +++++ third_party/jsdoc/node_modules/wrench/LICENSE | 21 + .../jsdoc/node_modules/wrench/lib/wrench.js | 399 ++ .../jsdoc/node_modules/wrench/package.json | 43 + third_party/jsdoc/package.json | 59 + third_party/jsdoc/plugins/commentConvert.js | 23 + third_party/jsdoc/plugins/commentsOnly.js | 18 + third_party/jsdoc/plugins/escapeHtml.js | 21 + third_party/jsdoc/plugins/eventDumper.js | 115 + third_party/jsdoc/plugins/markdown.js | 89 + third_party/jsdoc/plugins/overloadHelper.js | 185 + third_party/jsdoc/plugins/partial.js | 31 + third_party/jsdoc/plugins/railsTemplate.js | 20 + third_party/jsdoc/plugins/shout.js | 17 + third_party/jsdoc/plugins/sourcetag.js | 51 + third_party/jsdoc/plugins/summarize.js | 61 + .../jsdoc/plugins/test/fixtures/markdown.js | 24 + .../plugins/test/fixtures/overloadHelper.js | 50 + .../test/fixtures/railsTemplate.js.erb | 19 + .../plugins/test/specs/commentConvert.js | 19 + .../jsdoc/plugins/test/specs/escapeHtml.js | 19 + .../jsdoc/plugins/test/specs/markdown.js | 48 + .../plugins/test/specs/overloadHelper.js | 101 + .../jsdoc/plugins/test/specs/railsTemplate.js | 17 + third_party/jsdoc/plugins/test/specs/shout.js | 19 + .../jsdoc/plugins/test/specs/sourcetag.js | 23 + .../jsdoc/plugins/test/specs/summarize.js | 112 + third_party/jsdoc/rhino/MPL_2.0.txt | 373 ++ third_party/jsdoc/rhino/assert.js | 315 + third_party/jsdoc/rhino/crypto.js | 3 + third_party/jsdoc/rhino/events.js | 292 + third_party/jsdoc/rhino/fs.js | 167 + third_party/jsdoc/rhino/js.jar | Bin 0 -> 1168318 bytes .../jsdoc/rhino/jsdoc/src/astbuilder.js | 18 + third_party/jsdoc/rhino/jsdoc/src/parser.js | 38 + third_party/jsdoc/rhino/jsdoc/src/visitor.js | 57 + third_party/jsdoc/rhino/os.js | 19 + third_party/jsdoc/rhino/path.js | 432 ++ third_party/jsdoc/rhino/querystring.js | 121 + third_party/jsdoc/rhino/rhino-shim.js | 181 + third_party/jsdoc/rhino/util.js | 532 ++ third_party/jsdoc/templates/README.md | 27 + third_party/jsdoc/templates/default/README.md | 1 + .../jsdoc/templates/default/publish.js | 697 +++ .../static/fonts/OpenSans-Bold-webfont.eot | Bin 0 -> 19544 bytes .../static/fonts/OpenSans-Bold-webfont.svg | 1830 ++++++ .../static/fonts/OpenSans-Bold-webfont.woff | Bin 0 -> 22432 bytes .../fonts/OpenSans-BoldItalic-webfont.eot | Bin 0 -> 20133 bytes .../fonts/OpenSans-BoldItalic-webfont.svg | 1830 ++++++ .../fonts/OpenSans-BoldItalic-webfont.woff | Bin 0 -> 23048 bytes .../static/fonts/OpenSans-Italic-webfont.eot | Bin 0 -> 20265 bytes .../static/fonts/OpenSans-Italic-webfont.svg | 1830 ++++++ .../static/fonts/OpenSans-Italic-webfont.woff | Bin 0 -> 23188 bytes .../static/fonts/OpenSans-Light-webfont.eot | Bin 0 -> 19514 bytes .../static/fonts/OpenSans-Light-webfont.svg | 1831 ++++++ .../static/fonts/OpenSans-Light-webfont.woff | Bin 0 -> 22248 bytes .../fonts/OpenSans-LightItalic-webfont.eot | Bin 0 -> 20535 bytes .../fonts/OpenSans-LightItalic-webfont.svg | 1835 ++++++ .../fonts/OpenSans-LightItalic-webfont.woff | Bin 0 -> 23400 bytes .../static/fonts/OpenSans-Regular-webfont.eot | Bin 0 -> 19836 bytes .../static/fonts/OpenSans-Regular-webfont.svg | 1831 ++++++ .../fonts/OpenSans-Regular-webfont.woff | Bin 0 -> 22660 bytes .../default/static/scripts/linenumber.js | 25 + .../scripts/prettify/Apache-License-2.0.txt | 202 + .../static/scripts/prettify/lang-css.js | 2 + .../static/scripts/prettify/prettify.js | 28 + .../default/static/scripts/toggle.js | 44 + .../default/static/styles/jsdoc-default.css | 385 ++ .../default/static/styles/prettify-jsdoc.css | 111 + .../static/styles/prettify-tomorrow.css | 132 + .../templates/default/tmpl/augments.tmpl | 10 + .../templates/default/tmpl/container.tmpl | 177 + .../jsdoc/templates/default/tmpl/details.tmpl | 152 + .../jsdoc/templates/default/tmpl/example.tmpl | 2 + .../templates/default/tmpl/examples.tmpl | 13 + .../templates/default/tmpl/exceptions.tmpl | 30 + .../jsdoc/templates/default/tmpl/layout.tmpl | 47 + .../templates/default/tmpl/mainpage.tmpl | 14 + .../jsdoc/templates/default/tmpl/members.tmpl | 42 + .../jsdoc/templates/default/tmpl/method.tmpl | 111 + .../jsdoc/templates/default/tmpl/params.tmpl | 112 + .../templates/default/tmpl/properties.tmpl | 108 + .../jsdoc/templates/default/tmpl/returns.tmpl | 19 + .../jsdoc/templates/default/tmpl/source.tmpl | 8 + .../templates/default/tmpl/tutorial.tmpl | 17 + .../jsdoc/templates/default/tmpl/type.tmpl | 7 + third_party/jsdoc/templates/haruki/README.md | 39 + third_party/jsdoc/templates/haruki/publish.js | 220 + third_party/jsdoc/test/README.md | 45 + third_party/jsdoc/test/async-callback.js | 57 + .../jsdoc/test/fixtures/abstracttag.js | 17 + third_party/jsdoc/test/fixtures/accesstag.js | 29 + third_party/jsdoc/test/fixtures/alias.js | 13 + third_party/jsdoc/test/fixtures/alias2.js | 10 + third_party/jsdoc/test/fixtures/alias3.js | 12 + third_party/jsdoc/test/fixtures/alias4.js | 12 + .../jsdoc/test/fixtures/aliasglobal.js | 7 + .../jsdoc/test/fixtures/aliasglobal2.js | 18 + .../jsdoc/test/fixtures/aliasresolve.js | 19 + .../jsdoc/test/fixtures/aliasresolve2.js | 19 + third_party/jsdoc/test/fixtures/also.js | 46 + third_party/jsdoc/test/fixtures/also2.js | 14 + .../jsdoc/test/fixtures/augmentstag.js | 51 + .../jsdoc/test/fixtures/augmentstag2.js | 6 + .../jsdoc/test/fixtures/augmentstag3.js | 18 + .../jsdoc/test/fixtures/augmentstag4.js | 21 + .../jsdoc/test/fixtures/augmentstag5.js | 36 + third_party/jsdoc/test/fixtures/authortag.js | 10 + third_party/jsdoc/test/fixtures/borrowstag.js | 13 + .../jsdoc/test/fixtures/borrowstag2.js | 20 + .../jsdoc/test/fixtures/callbacktag.js | 21 + .../jsdoc/test/fixtures/classdesctag.js | 7 + third_party/jsdoc/test/fixtures/classtag.js | 12 + .../jsdoc/test/fixtures/classwithoutname.js | 9 + .../jsdoc/test/fixtures/constanttag.js | 15 + .../jsdoc/test/fixtures/constructortag.js | 15 + .../jsdoc/test/fixtures/constructstag.js | 19 + .../jsdoc/test/fixtures/constructstag2.js | 16 + .../jsdoc/test/fixtures/constructstag3.js | 26 + .../jsdoc/test/fixtures/constructstag4.js | 23 + .../jsdoc/test/fixtures/constructstag5.js | 14 + .../jsdoc/test/fixtures/copyrighttag.js | 6 + third_party/jsdoc/test/fixtures/defaulttag.js | 57 + .../jsdoc/test/fixtures/deprecatedtag.js | 11 + .../jsdoc/test/fixtures/descriptiontag.js | 7 + .../jsdoc/test/fixtures/destructuring.js | 5 + third_party/jsdoc/test/fixtures/doclet.js | 23 + .../jsdoc/test/fixtures/emptycomments.js | 27 + third_party/jsdoc/test/fixtures/enumtag.js | 11 + third_party/jsdoc/test/fixtures/enumtag2.js | 32 + third_party/jsdoc/test/fixtures/es6.js | 48 + .../jsdoc/test/fixtures/eventfirestag.js | 30 + third_party/jsdoc/test/fixtures/exampletag.js | 14 + .../jsdoc/test/fixtures/exceptiontag.js | 27 + third_party/jsdoc/test/fixtures/exports.js | 24 + third_party/jsdoc/test/fixtures/exportstag.js | 20 + .../jsdoc/test/fixtures/exportstag2.js | 18 + .../jsdoc/test/fixtures/exportstag3.js | 22 + .../jsdoc/test/fixtures/exportstag4.js | 12 + .../jsdoc/test/fixtures/exportstag5.js | 13 + .../jsdoc/test/fixtures/exportstag6.js | 18 + .../jsdoc/test/fixtures/exportstag7.js | 16 + .../jsdoc/test/fixtures/exportstag8.js | 4 + .../jsdoc/test/fixtures/externaltag.js | 24 + .../jsdoc/test/fixtures/externaltag2.js | 11 + .../jsdoc/test/fixtures/externaltag3.js | 22 + third_party/jsdoc/test/fixtures/file.js | 7 + .../jsdoc/test/fixtures/funcExpression.js | 7 + .../jsdoc/test/fixtures/funcExpression2.js | 7 + .../jsdoc/test/fixtures/funcExpression3.js | 9 + .../jsdoc/test/fixtures/functiontag.js | 7 + third_party/jsdoc/test/fixtures/getset.js | 37 + third_party/jsdoc/test/fixtures/globaltag.js | 16 + third_party/jsdoc/test/fixtures/ignoretag.js | 6 + third_party/jsdoc/test/fixtures/ignoretag2.js | 6 + .../jsdoc/test/fixtures/inlinecomment.js | 2 + third_party/jsdoc/test/fixtures/inner.js | 7 + third_party/jsdoc/test/fixtures/innerscope.js | 17 + .../jsdoc/test/fixtures/innerscope2.js | 18 + .../test/fixtures/interface-implements.js | 73 + .../jsdoc/test/fixtures/jslangnames.js | 23 + third_party/jsdoc/test/fixtures/kindtag.js | 2 + third_party/jsdoc/test/fixtures/lends.js | 16 + third_party/jsdoc/test/fixtures/lends2.js | 18 + third_party/jsdoc/test/fixtures/lends3.js | 18 + third_party/jsdoc/test/fixtures/lends4.js | 16 + third_party/jsdoc/test/fixtures/lends5.js | 15 + third_party/jsdoc/test/fixtures/lends6.js | 29 + .../jsdoc/test/fixtures/lendsglobal.js | 14 + third_party/jsdoc/test/fixtures/letkeyword.js | 17 + third_party/jsdoc/test/fixtures/licensetag.js | 2 + third_party/jsdoc/test/fixtures/linktag.js | 15 + third_party/jsdoc/test/fixtures/listenstag.js | 33 + .../jsdoc/test/fixtures/markdowntest.md | 10 + .../jsdoc/test/fixtures/memberoftag.js | 11 + .../jsdoc/test/fixtures/memberoftag2.js | 10 + .../jsdoc/test/fixtures/memberoftag3.js | 19 + .../jsdoc/test/fixtures/memberoftag4.js | 16 + .../jsdoc/test/fixtures/memberoftagforced.js | 44 + third_party/jsdoc/test/fixtures/membertag.js | 8 + third_party/jsdoc/test/fixtures/mixintag.js | 26 + .../jsdoc/test/fixtures/moduleinner.js | 28 + .../test/fixtures/moduleisconstructor.js | 19 + .../jsdoc/test/fixtures/moduleisfunction.js | 10 + .../jsdoc/test/fixtures/modules/data/mod-1.js | 5 + .../jsdoc/test/fixtures/modules/data/mod-2.js | 5 + .../jsdoc/test/fixtures/modules/data/mod-3.js | 21 + third_party/jsdoc/test/fixtures/moduletag.js | 11 + third_party/jsdoc/test/fixtures/moduletag2.js | 9 + third_party/jsdoc/test/fixtures/moduletag3.js | 19 + third_party/jsdoc/test/fixtures/moduletag4.js | 37 + third_party/jsdoc/test/fixtures/moduletag5.js | 3 + .../jsdoc/test/fixtures/namespacetag.js | 11 + third_party/jsdoc/test/fixtures/nametag.js | 24 + third_party/jsdoc/test/fixtures/objectlit.js | 8 + third_party/jsdoc/test/fixtures/objectlit2.js | 8 + third_party/jsdoc/test/fixtures/objectlit3.js | 10 + .../jsdoc/test/fixtures/objectpropertykeys.js | 22 + third_party/jsdoc/test/fixtures/paramtag.js | 55 + third_party/jsdoc/test/fixtures/paramtag2.js | 7 + .../test/fixtures/paramtaginvalidtype.js | 9 + third_party/jsdoc/test/fixtures/plugins.js | 10 + third_party/jsdoc/test/fixtures/privatetag.js | 9 + .../jsdoc/test/fixtures/privatetag2.js | 8 + third_party/jsdoc/test/fixtures/projecttag.js | 9 + .../jsdoc/test/fixtures/propertytag.js | 15 + .../jsdoc/test/fixtures/protectedtag.js | 20 + .../jsdoc/test/fixtures/protectedtag2.js | 13 + third_party/jsdoc/test/fixtures/quotename.js | 18 + third_party/jsdoc/test/fixtures/quotename2.js | 10 + .../jsdoc/test/fixtures/readonlytag.js | 8 + .../jsdoc/test/fixtures/requirestag.js | 20 + third_party/jsdoc/test/fixtures/returnstag.js | 23 + third_party/jsdoc/test/fixtures/scopetags.js | 10 + third_party/jsdoc/test/fixtures/seetag.js | 11 + third_party/jsdoc/test/fixtures/sincetag.js | 6 + .../jsdoc/test/fixtures/specialnames.js | 2 + .../jsdoc/test/fixtures/src/_dir2/four.js | 0 .../jsdoc/test/fixtures/src/_ignored.js | 0 .../jsdoc/test/fixtures/src/dir1/three.js | 0 .../jsdoc/test/fixtures/src/ignored.txt | 0 third_party/jsdoc/test/fixtures/src/one.js | 0 third_party/jsdoc/test/fixtures/src/two.js | 0 .../jsdoc/test/fixtures/starbangstar.js | 12 + third_party/jsdoc/test/fixtures/summarytag.js | 3 + .../jsdoc/test/fixtures/testPlugin1.js | 31 + .../jsdoc/test/fixtures/testPlugin2.js | 22 + .../jsdoc/test/fixtures/this-and-objectlit.js | 11 + third_party/jsdoc/test/fixtures/this.js | 10 + third_party/jsdoc/test/fixtures/this2.js | 15 + third_party/jsdoc/test/fixtures/this3.js | 4 + third_party/jsdoc/test/fixtures/thistag.js | 10 + third_party/jsdoc/test/fixtures/todotag.js | 6 + .../jsdoc/test/fixtures/tutorialtag.js | 5 + third_party/jsdoc/test/fixtures/typedeftag.js | 13 + third_party/jsdoc/test/fixtures/typekind.js | 17 + third_party/jsdoc/test/fixtures/typetag.js | 14 + third_party/jsdoc/test/fixtures/typetag2.js | 4 + .../jsdoc/test/fixtures/typetaginline.js | 35 + .../jsdoc/test/fixtures/typetagwithnewline.js | 14 + .../jsdoc/test/fixtures/undocumentedtag.js | 3 + third_party/jsdoc/test/fixtures/utf8.js | 6 + third_party/jsdoc/test/fixtures/var.js | 10 + third_party/jsdoc/test/fixtures/variations.js | 26 + .../jsdoc/test/fixtures/variations2.js | 36 + .../jsdoc/test/fixtures/variations3.js | 15 + third_party/jsdoc/test/fixtures/versiontag.js | 6 + third_party/jsdoc/test/fixtures/virtual.js | 3 + third_party/jsdoc/test/fixtures/virtual2.js | 28 + third_party/jsdoc/test/fixtures/virtual3.js | 11 + third_party/jsdoc/test/jasmine-jsdoc.js | 187 + third_party/jsdoc/test/lib/jasmine.js | 2537 ++++++++ third_party/jsdoc/test/reporter.js | 292 + third_party/jsdoc/test/runner.js | 65 + third_party/jsdoc/test/spec-collection.js | 93 + .../jsdoc/test/specs/documentation/alias.js | 80 + .../jsdoc/test/specs/documentation/also.js | 69 + .../test/specs/documentation/callback.js | 27 + .../specs/documentation/classwithoutname.js | 14 + .../test/specs/documentation/emptycomments.js | 15 + .../jsdoc/test/specs/documentation/exports.js | 20 + .../specs/documentation/funcExpression.js | 29 + .../jsdoc/test/specs/documentation/getset.js | 24 + .../test/specs/documentation/inlinecomment.js | 12 + .../jsdoc/test/specs/documentation/inner.js | 24 + .../test/specs/documentation/innerscope.js | 41 + .../jsdoc/test/specs/documentation/lends.js | 137 + .../test/specs/documentation/letkeyword.js | 28 + .../test/specs/documentation/moduleinner.js | 13 + .../documentation/moduleisconstructor.js | 37 + .../specs/documentation/moduleisfunction.js | 23 + .../jsdoc/test/specs/documentation/modules.js | 71 + .../test/specs/documentation/objectlit.js | 67 + .../specs/documentation/objectpropertykeys.js | 6 + .../test/specs/documentation/quotename.js | 23 + .../test/specs/documentation/specialnames.js | 10 + .../test/specs/documentation/starbangstar.js | 13 + .../jsdoc/test/specs/documentation/this.js | 102 + .../test/specs/documentation/typetaginline.js | 71 + .../specs/documentation/typetagwithnewline.js | 28 + .../jsdoc/test/specs/documentation/var.js | 61 + .../test/specs/documentation/variations.js | 38 + .../jsdoc/test/specs/documentation/virtual.js | 53 + third_party/jsdoc/test/specs/jsdoc/augment.js | 4 + third_party/jsdoc/test/specs/jsdoc/borrow.js | 3 + third_party/jsdoc/test/specs/jsdoc/config.js | 47 + third_party/jsdoc/test/specs/jsdoc/doclet.js | 64 + third_party/jsdoc/test/specs/jsdoc/name.js | 421 ++ .../jsdoc/test/specs/jsdoc/opts/argparser.js | 170 + .../jsdoc/test/specs/jsdoc/opts/args.js | 303 + third_party/jsdoc/test/specs/jsdoc/package.js | 264 + third_party/jsdoc/test/specs/jsdoc/path.js | 137 + third_party/jsdoc/test/specs/jsdoc/plugins.js | 19 + third_party/jsdoc/test/specs/jsdoc/readme.js | 14 + third_party/jsdoc/test/specs/jsdoc/schema.js | 87 + .../jsdoc/test/specs/jsdoc/src/astbuilder.js | 46 + .../jsdoc/test/specs/jsdoc/src/astnode.js | 584 ++ .../jsdoc/test/specs/jsdoc/src/filter.js | 167 + .../jsdoc/test/specs/jsdoc/src/handlers.js | 55 + .../jsdoc/test/specs/jsdoc/src/parser.js | 388 ++ .../jsdoc/test/specs/jsdoc/src/scanner.js | 56 + .../jsdoc/test/specs/jsdoc/src/syntax.js | 23 + .../jsdoc/test/specs/jsdoc/src/visitor.js | 4 + .../jsdoc/test/specs/jsdoc/src/walker.js | 36 + third_party/jsdoc/test/specs/jsdoc/tag.js | 237 + .../jsdoc/test/specs/jsdoc/tag/dictionary.js | 144 + .../specs/jsdoc/tag/dictionary/definitions.js | 231 + .../jsdoc/test/specs/jsdoc/tag/inline.js | 254 + .../jsdoc/test/specs/jsdoc/tag/type.js | 255 + .../jsdoc/test/specs/jsdoc/tag/validator.js | 98 + .../jsdoc/test/specs/jsdoc/template.js | 4 + .../jsdoc/test/specs/jsdoc/tutorial.js | 284 + .../test/specs/jsdoc/tutorial/resolver.js | 232 + .../jsdoc/test/specs/jsdoc/util/doop.js | 109 + .../jsdoc/test/specs/jsdoc/util/dumper.js | 103 + .../jsdoc/test/specs/jsdoc/util/error.js | 38 + .../jsdoc/test/specs/jsdoc/util/logger.js | 200 + .../jsdoc/test/specs/jsdoc/util/markdown.js | 101 + .../jsdoc/test/specs/jsdoc/util/runtime.js | 62 + .../test/specs/jsdoc/util/templateHelper.js | 1473 +++++ .../jsdoc/test/specs/plugins/plugins.js | 57 + third_party/jsdoc/test/specs/rhino/fs.js | 4 + third_party/jsdoc/test/specs/rhino/os.js | 4 + third_party/jsdoc/test/specs/rhino/path.js | 35 + .../jsdoc/test/specs/rhino/src/parser.js | 183 + .../jsdoc/test/specs/rhino/src/visitor.js | 88 + .../jsdoc/test/specs/tags/abstracttag.js | 20 + .../jsdoc/test/specs/tags/accesstag.js | 24 + third_party/jsdoc/test/specs/tags/aliastag.js | 11 + .../jsdoc/test/specs/tags/augmentstag.js | 152 + .../jsdoc/test/specs/tags/authortag.js | 18 + .../jsdoc/test/specs/tags/borrowstag.js | 24 + .../jsdoc/test/specs/tags/classdesctag.js | 8 + third_party/jsdoc/test/specs/tags/classtag.js | 14 + .../jsdoc/test/specs/tags/constanttag.js | 66 + .../jsdoc/test/specs/tags/constructortag.js | 13 + .../jsdoc/test/specs/tags/constructstag.js | 54 + .../jsdoc/test/specs/tags/copyrighttag.js | 8 + .../jsdoc/test/specs/tags/defaulttag.js | 75 + .../jsdoc/test/specs/tags/deprecatedtag.js | 14 + .../jsdoc/test/specs/tags/descriptiontag.js | 15 + third_party/jsdoc/test/specs/tags/enumtag.js | 58 + .../jsdoc/test/specs/tags/eventfirestag.js | 30 + .../jsdoc/test/specs/tags/exampletag.js | 22 + .../jsdoc/test/specs/tags/exceptiontag.js | 32 + .../jsdoc/test/specs/tags/exportstag.js | 215 + .../jsdoc/test/specs/tags/externaltag.js | 37 + .../jsdoc/test/specs/tags/functiontag.js | 18 + .../jsdoc/test/specs/tags/globaltag.js | 24 + .../jsdoc/test/specs/tags/ignoretag.js | 18 + .../jsdoc/test/specs/tags/implementstag.js | 31 + .../jsdoc/test/specs/tags/interfacetag.js | 17 + third_party/jsdoc/test/specs/tags/kindtag.js | 8 + third_party/jsdoc/test/specs/tags/lendstag.js | 16 + .../jsdoc/test/specs/tags/licensetag.js | 8 + .../jsdoc/test/specs/tags/listenstag.js | 16 + .../jsdoc/test/specs/tags/memberoftag.js | 83 + .../jsdoc/test/specs/tags/membertag.js | 38 + third_party/jsdoc/test/specs/tags/mixestag.js | 19 + third_party/jsdoc/test/specs/tags/mixintag.js | 13 + .../jsdoc/test/specs/tags/moduletag.js | 90 + .../jsdoc/test/specs/tags/namespacetag.js | 33 + third_party/jsdoc/test/specs/tags/nametag.js | 30 + .../jsdoc/test/specs/tags/overviewtag.js | 81 + third_party/jsdoc/test/specs/tags/paramtag.js | 120 + .../jsdoc/test/specs/tags/privatetag.js | 75 + .../jsdoc/test/specs/tags/propertytag.js | 21 + .../jsdoc/test/specs/tags/protectedtag.js | 75 + .../jsdoc/test/specs/tags/readonlytag.js | 9 + .../jsdoc/test/specs/tags/requirestag.js | 24 + .../jsdoc/test/specs/tags/returnstag.js | 37 + .../jsdoc/test/specs/tags/scopetags.js | 31 + third_party/jsdoc/test/specs/tags/seetag.js | 13 + third_party/jsdoc/test/specs/tags/sincetag.js | 8 + .../jsdoc/test/specs/tags/summarytag.js | 7 + third_party/jsdoc/test/specs/tags/thistag.js | 16 + third_party/jsdoc/test/specs/tags/todotag.js | 13 + .../jsdoc/test/specs/tags/tutorialtag.js | 12 + .../jsdoc/test/specs/tags/typedeftag.js | 40 + third_party/jsdoc/test/specs/tags/typekind.js | 15 + third_party/jsdoc/test/specs/tags/typetag.js | 77 + .../jsdoc/test/specs/tags/undocumentedtag.js | 12 + .../jsdoc/test/specs/tags/versiontag.js | 8 + third_party/jsdoc/test/tutorials/build.sh | 2 + .../test/tutorials/duplicateDefined/asdf.html | 1 + .../test/tutorials/duplicateDefined/asdf.json | 1 + .../tutorials/duplicateDefined/index.json | 5 + .../test/tutorials/incomplete/parent.html | 3 + .../test/tutorials/incomplete/parent.json | 1 + third_party/jsdoc/test/tutorials/src/x.js | 8 + .../test/tutorials/tutorials/constructor.md | 1 + .../test/tutorials/tutorials/multiple.json | 12 + .../tutorials/recursive/test_recursive.md | 1 + .../jsdoc/test/tutorials/tutorials/test.html | 3 + .../jsdoc/test/tutorials/tutorials/test.json | 1 + .../test/tutorials/tutorials/test2.markdown | 1 + .../jsdoc/test/tutorials/tutorials/test3.htm | 3 + .../jsdoc/test/tutorials/tutorials/test4.md | 1 + .../jsdoc/test/tutorials/tutorials/test5.txt | 1 + .../jsdoc/test/tutorials/tutorials/test6.xml | 1 + tutorials/caveats.html | 46 + tutorials/caveats.json | 3 + tutorials/dev.html | 225 + tutorials/dev.json | 3 + tutorials/intro.html | 107 + tutorials/intro.json | 3 + tutorials/language.html | 103 + tutorials/language.json | 3 + tutorials/player.html | 961 +++ tutorials/player.json | 3 + tutorials/polyfills.html | 52 + tutorials/polyfills.json | 3 + tutorials/sample1.txt | 47 + tutorials/sample2.txt | 48 + tutorials/sample3.txt | 79 + tutorials/sample4.txt | 81 + tutorials/sample5.txt | 221 + tutorials/sample6.txt | 301 + tutorials/update_samples.py | 120 + 752 files changed, 115015 insertions(+) create mode 100644 .gitignore create mode 100644 AUTHORS create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 CONTRIBUTORS create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 app.js create mode 100644 assets/.htaccess create mode 100644 assets/angel_one.mpd create mode 100644 assets/angel_one.sidx create mode 100644 assets/bear-av-enc.mp4 create mode 100644 assets/car-20120827-87.sidx create mode 100644 assets/car-20120827-manifest.mpd create mode 100644 assets/car_cenc-20120827-manifest.mpd create mode 100644 assets/feelings_audio_only-20130806-manifest.mpd create mode 100644 assets/feelings_vp9-20130806-171.webm.cues create mode 100644 assets/feelings_vp9-20130806-171.webm.headers create mode 100644 assets/feelings_vp9-20130806-manifest.mpd create mode 100755 assets/generate_jwkset.py create mode 100644 assets/poster.jpg create mode 100644 assets/poster.license create mode 100644 assets/test_license.json create mode 100644 assets/test_subs.vtt create mode 100755 build/all.sh create mode 100755 build/audit_todo.sh create mode 100755 build/build.sh create mode 100755 build/check.sh create mode 100755 build/docs.sh create mode 100755 build/gendeps.sh create mode 100644 build/lib.sh create mode 100755 build/lint.sh create mode 100644 docs/mainpage.md create mode 100644 docs/reference.html create mode 100644 externs/fullscreen.js create mode 100644 externs/htmltrackelement.js create mode 100644 externs/jwk_set.js create mode 100644 externs/mediakeys.js create mode 100644 externs/prefixed_eme.js create mode 100644 externs/promise.js create mode 100644 externs/videoplaybackquality.js create mode 100644 index.css create mode 100644 index.html create mode 100644 jsdoc.conf.json create mode 100644 lib/dash/abr_manager.js create mode 100644 lib/dash/dash_stream.js create mode 100644 lib/dash/dash_text_stream.js create mode 100644 lib/dash/i_dash_stream.js create mode 100644 lib/dash/i_segment_index_parser.js create mode 100644 lib/dash/isobmff_segment_index_parser.js create mode 100644 lib/dash/mpd_parser.js create mode 100644 lib/dash/mpd_processor.js create mode 100644 lib/dash/mpd_request.js create mode 100644 lib/dash/segment_index.js create mode 100644 lib/dash/segment_range.js create mode 100644 lib/dash/segment_reference.js create mode 100644 lib/dash/source_buffer_manager.js create mode 100644 lib/dash/webm_segment_index_parser.js create mode 100644 lib/debug/asserts.js create mode 100644 lib/debug/log.js create mode 100644 lib/debug/timer.js create mode 100644 lib/player/audio_track.js create mode 100644 lib/player/dash_video_source.js create mode 100644 lib/player/drm_scheme_info.js create mode 100644 lib/player/http_video_source.js create mode 100644 lib/player/i_video_source.js create mode 100644 lib/player/player.js create mode 100644 lib/player/stats.js create mode 100644 lib/player/text_track.js create mode 100644 lib/player/video_track.js create mode 100644 lib/polyfill/fullscreen.js create mode 100644 lib/polyfill/mediakeys.js create mode 100644 lib/polyfill/patchedmediakeys_nop.js create mode 100644 lib/polyfill/patchedmediakeys_v01b.js create mode 100644 lib/polyfill/videoplaybackquality.js create mode 100644 lib/util/ajax_request.js create mode 100644 lib/util/array_utils.js create mode 100644 lib/util/data_view_reader.js create mode 100644 lib/util/ebml_parser.js create mode 100644 lib/util/event_manager.js create mode 100644 lib/util/ewma.js create mode 100644 lib/util/ewma_bandwidth_estimator.js create mode 100644 lib/util/fake_event.js create mode 100644 lib/util/fake_event_target.js create mode 100644 lib/util/i_bandwidth_estimator.js create mode 100644 lib/util/language_utils.js create mode 100644 lib/util/license_request.js create mode 100644 lib/util/multi_map.js create mode 100644 lib/util/pssh.js create mode 100644 lib/util/public_promise.js create mode 100644 lib/util/range_request.js create mode 100644 lib/util/string_utils.js create mode 100644 lib/util/typed_bind.js create mode 100644 load.js create mode 100644 shaka-player.uncompiled.js create mode 100644 spec/dash_video_source_spec.js create mode 100644 spec/data_view_reader_spec.js create mode 100644 spec/ebml_parser_spec.js create mode 100644 spec/event_manager_spec.js create mode 100644 spec/fake_event_target.js create mode 100644 spec/language_utils_spec.js create mode 100644 spec/license_request_spec.js create mode 100644 spec/mpd_processor_spec.js create mode 100644 spec/mpd_spec.js create mode 100644 spec/player_integration.js create mode 100644 spec/segment_index_spec.js create mode 100644 spec/util.js create mode 100644 spec_runner.html create mode 100644 support.html create mode 100644 third_party/SUMMARY.txt create mode 100644 third_party/blanket_jasmine/LICENSE.txt create mode 100644 third_party/blanket_jasmine/blanket_jasmine.js create mode 100644 third_party/closure/LICENSE.txt create mode 100644 third_party/closure/compiler.jar create mode 100755 third_party/closure/deps/depswriter.py create mode 100644 third_party/closure/deps/source.py create mode 100644 third_party/closure/deps/treescan.py create mode 100644 third_party/closure/goog/base.js create mode 100644 third_party/closure/goog/uri/uri.js create mode 100644 third_party/closure/goog/uri/utils.js create mode 100644 third_party/gjslint/closure_linter-2.3.13/LICENSE.txt create mode 100644 third_party/gjslint/closure_linter-2.3.13/PKG-INFO create mode 100644 third_party/gjslint/closure_linter-2.3.13/README create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/__init__.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/aliaspass.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/aliaspass_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/checker.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/checkerbase.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/closurizednamespacesinfo.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/closurizednamespacesinfo_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/__init__.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/error.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/erroraccumulator.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/errorhandler.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/erroroutput.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/filetestcase.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/htmlutil.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/lintrunner.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/matcher.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/position.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/simplefileflags.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokenizer.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokens.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokens_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/ecmalintrules.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/ecmametadatapass.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/error_check.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/error_fixer.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/error_fixer_test.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrecord.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrules.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrules_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/errors.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/fixjsstyle.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/fixjsstyle_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/full_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/gjslint.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/indentation.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptlintrules.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptstatetracker.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptstatetracker_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/javascripttokenizer.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/javascripttokens.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/not_strict_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/requireprovidesorter.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/requireprovidesorter_test.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/runner.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/runner_test.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/scopeutil.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/scopeutil_test.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/statetracker.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/statetracker_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/strict_test.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/testutil.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/closure_linter/tokenutil.py create mode 100644 third_party/gjslint/closure_linter-2.3.13/closure_linter/tokenutil_test.py create mode 100755 third_party/gjslint/closure_linter-2.3.13/setup.py create mode 100755 third_party/gjslint/gjslint create mode 100644 third_party/gjslint/python-gflags-2.0/AUTHORS create mode 100644 third_party/gjslint/python-gflags-2.0/ChangeLog create mode 100644 third_party/gjslint/python-gflags-2.0/LICENSE.txt create mode 100644 third_party/gjslint/python-gflags-2.0/MANIFEST.in create mode 100644 third_party/gjslint/python-gflags-2.0/Makefile create mode 100644 third_party/gjslint/python-gflags-2.0/NEWS create mode 100644 third_party/gjslint/python-gflags-2.0/PKG-INFO create mode 100644 third_party/gjslint/python-gflags-2.0/README create mode 100644 third_party/gjslint/python-gflags-2.0/debian/README create mode 100644 third_party/gjslint/python-gflags-2.0/debian/changelog create mode 100644 third_party/gjslint/python-gflags-2.0/debian/compat create mode 100644 third_party/gjslint/python-gflags-2.0/debian/control create mode 100644 third_party/gjslint/python-gflags-2.0/debian/copyright create mode 100644 third_party/gjslint/python-gflags-2.0/debian/docs create mode 100755 third_party/gjslint/python-gflags-2.0/debian/rules create mode 100644 third_party/gjslint/python-gflags-2.0/gflags.py create mode 100755 third_party/gjslint/python-gflags-2.0/gflags2man.py create mode 100755 third_party/gjslint/python-gflags-2.0/gflags_validators.py create mode 100644 third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/PKG-INFO create mode 100644 third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/SOURCES.txt create mode 100644 third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/dependency_links.txt create mode 100644 third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/top_level.txt create mode 100644 third_party/gjslint/python-gflags-2.0/setup.cfg create mode 100755 third_party/gjslint/python-gflags-2.0/setup.py create mode 100644 third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/__init__.py create mode 100755 third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_bar.py create mode 100755 third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_baz.py create mode 100755 third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_foo.py create mode 100644 third_party/gjslint/python-gflags-2.0/tests/gflags_googletest.py create mode 100755 third_party/gjslint/python-gflags-2.0/tests/gflags_helpxml_test.py create mode 100755 third_party/gjslint/python-gflags-2.0/tests/gflags_unittest.py create mode 100755 third_party/gjslint/python-gflags-2.0/tests/gflags_validators_test.py create mode 100644 third_party/jasmine/LICENSE.txt create mode 100644 third_party/jasmine/lib/jasmine-2.1.3/boot.js create mode 100644 third_party/jasmine/lib/jasmine-2.1.3/console.js create mode 100644 third_party/jasmine/lib/jasmine-2.1.3/jasmine-html.js create mode 100644 third_party/jasmine/lib/jasmine-2.1.3/jasmine.css create mode 100644 third_party/jasmine/lib/jasmine-2.1.3/jasmine.js create mode 100644 third_party/jasmine/lib/jasmine-2.1.3/jasmine_favicon.png create mode 100644 third_party/jasmine/lib/jasmine-ajax-trunk/mock-ajax.js create mode 100644 third_party/jsdoc/.eslintignore create mode 100644 third_party/jsdoc/.eslintrc create mode 100644 third_party/jsdoc/.gitignore create mode 100644 third_party/jsdoc/.npmignore create mode 100644 third_party/jsdoc/.travis.yml create mode 100644 third_party/jsdoc/CONTRIBUTING.md create mode 100644 third_party/jsdoc/LICENSE.md create mode 100644 third_party/jsdoc/LICENSE.txt create mode 100644 third_party/jsdoc/README.md create mode 100644 third_party/jsdoc/changes.md create mode 100644 third_party/jsdoc/cli.js create mode 100644 third_party/jsdoc/conf.json.EXAMPLE create mode 100644 third_party/jsdoc/gulpfile.js create mode 100755 third_party/jsdoc/jsdoc create mode 100644 third_party/jsdoc/jsdoc.cmd create mode 100755 third_party/jsdoc/jsdoc.js create mode 100644 third_party/jsdoc/lib/jsdoc/augment.js create mode 100644 third_party/jsdoc/lib/jsdoc/borrow.js create mode 100644 third_party/jsdoc/lib/jsdoc/config.js create mode 100644 third_party/jsdoc/lib/jsdoc/doclet.js create mode 100644 third_party/jsdoc/lib/jsdoc/fs.js create mode 100644 third_party/jsdoc/lib/jsdoc/name.js create mode 100644 third_party/jsdoc/lib/jsdoc/opts/argparser.js create mode 100644 third_party/jsdoc/lib/jsdoc/opts/args.js create mode 100644 third_party/jsdoc/lib/jsdoc/package.js create mode 100644 third_party/jsdoc/lib/jsdoc/path.js create mode 100644 third_party/jsdoc/lib/jsdoc/plugins.js create mode 100644 third_party/jsdoc/lib/jsdoc/readme.js create mode 100644 third_party/jsdoc/lib/jsdoc/schema.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/astbuilder.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/astnode.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/filter.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/handlers.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/parser.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/scanner.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/syntax.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/visitor.js create mode 100644 third_party/jsdoc/lib/jsdoc/src/walker.js create mode 100644 third_party/jsdoc/lib/jsdoc/tag.js create mode 100644 third_party/jsdoc/lib/jsdoc/tag/dictionary.js create mode 100644 third_party/jsdoc/lib/jsdoc/tag/dictionary/definitions.js create mode 100644 third_party/jsdoc/lib/jsdoc/tag/inline.js create mode 100644 third_party/jsdoc/lib/jsdoc/tag/type.js create mode 100644 third_party/jsdoc/lib/jsdoc/tag/validator.js create mode 100644 third_party/jsdoc/lib/jsdoc/template.js create mode 100644 third_party/jsdoc/lib/jsdoc/tutorial.js create mode 100644 third_party/jsdoc/lib/jsdoc/tutorial/resolver.js create mode 100644 third_party/jsdoc/lib/jsdoc/util/doop.js create mode 100644 third_party/jsdoc/lib/jsdoc/util/dumper.js create mode 100644 third_party/jsdoc/lib/jsdoc/util/error.js create mode 100644 third_party/jsdoc/lib/jsdoc/util/logger.js create mode 100644 third_party/jsdoc/lib/jsdoc/util/markdown.js create mode 100644 third_party/jsdoc/lib/jsdoc/util/runtime.js create mode 100644 third_party/jsdoc/lib/jsdoc/util/templateHelper.js create mode 100644 third_party/jsdoc/node/fs.js create mode 100644 third_party/jsdoc/node_modules/async/LICENSE create mode 100644 third_party/jsdoc/node_modules/async/index.js create mode 100644 third_party/jsdoc/node_modules/async/lib/async.js create mode 100644 third_party/jsdoc/node_modules/async/package.json create mode 100644 third_party/jsdoc/node_modules/catharsis/LICENSE create mode 100644 third_party/jsdoc/node_modules/catharsis/catharsis.js create mode 100644 third_party/jsdoc/node_modules/catharsis/lib/describe.js create mode 100644 third_party/jsdoc/node_modules/catharsis/lib/parser.js create mode 100644 third_party/jsdoc/node_modules/catharsis/lib/schema.js create mode 100644 third_party/jsdoc/node_modules/catharsis/lib/stringify.js create mode 100644 third_party/jsdoc/node_modules/catharsis/lib/types.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/LICENSE create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/index.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/package.json create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.array.builders.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.array.selectors.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.collections.walk.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.arity.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.combinators.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.dispatch.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.iterators.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.predicates.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.object.builders.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.object.selectors.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.existential.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.operators.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.strings.js create mode 100644 third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.trampolines.js create mode 100644 third_party/jsdoc/node_modules/catharsis/package.json create mode 100644 third_party/jsdoc/node_modules/catharsis/res/en.json create mode 100644 third_party/jsdoc/node_modules/crypto-browserify/index.js create mode 100644 third_party/jsdoc/node_modules/crypto-browserify/package.json create mode 100644 third_party/jsdoc/node_modules/crypto-browserify/rng.js create mode 100644 third_party/jsdoc/node_modules/crypto-browserify/sha.js create mode 100644 third_party/jsdoc/node_modules/escape-string-regexp/index.js create mode 100644 third_party/jsdoc/node_modules/escape-string-regexp/package.json create mode 100644 third_party/jsdoc/node_modules/escape-string-regexp/readme.md create mode 100644 third_party/jsdoc/node_modules/esprima/esprima.js create mode 100644 third_party/jsdoc/node_modules/esprima/package.json create mode 100644 third_party/jsdoc/node_modules/js2xmlparser/LICENSE.md create mode 100644 third_party/jsdoc/node_modules/js2xmlparser/lib/js2xmlparser.js create mode 100644 third_party/jsdoc/node_modules/js2xmlparser/package.json create mode 100644 third_party/jsdoc/node_modules/marked/LICENSE create mode 100644 third_party/jsdoc/node_modules/marked/index.js create mode 100644 third_party/jsdoc/node_modules/marked/lib/marked.js create mode 100644 third_party/jsdoc/node_modules/marked/package.json create mode 100644 third_party/jsdoc/node_modules/strip-json-comments/package.json create mode 100644 third_party/jsdoc/node_modules/strip-json-comments/strip-json-comments.js create mode 100644 third_party/jsdoc/node_modules/taffydb/README.md create mode 100644 third_party/jsdoc/node_modules/taffydb/package.json create mode 100644 third_party/jsdoc/node_modules/taffydb/taffy-test.html create mode 100644 third_party/jsdoc/node_modules/taffydb/taffy.js create mode 100644 third_party/jsdoc/node_modules/tv4/LICENSE.txt create mode 100644 third_party/jsdoc/node_modules/tv4/README.md create mode 100644 third_party/jsdoc/node_modules/tv4/lang/de.js create mode 100644 third_party/jsdoc/node_modules/tv4/package.json create mode 100644 third_party/jsdoc/node_modules/tv4/tv4.async-jquery.js create mode 100644 third_party/jsdoc/node_modules/tv4/tv4.js create mode 100644 third_party/jsdoc/node_modules/underscore/LICENSE create mode 100644 third_party/jsdoc/node_modules/underscore/package.json create mode 100644 third_party/jsdoc/node_modules/underscore/underscore.js create mode 100644 third_party/jsdoc/node_modules/wrench/LICENSE create mode 100644 third_party/jsdoc/node_modules/wrench/lib/wrench.js create mode 100644 third_party/jsdoc/node_modules/wrench/package.json create mode 100644 third_party/jsdoc/package.json create mode 100644 third_party/jsdoc/plugins/commentConvert.js create mode 100644 third_party/jsdoc/plugins/commentsOnly.js create mode 100644 third_party/jsdoc/plugins/escapeHtml.js create mode 100644 third_party/jsdoc/plugins/eventDumper.js create mode 100644 third_party/jsdoc/plugins/markdown.js create mode 100644 third_party/jsdoc/plugins/overloadHelper.js create mode 100644 third_party/jsdoc/plugins/partial.js create mode 100644 third_party/jsdoc/plugins/railsTemplate.js create mode 100644 third_party/jsdoc/plugins/shout.js create mode 100644 third_party/jsdoc/plugins/sourcetag.js create mode 100644 third_party/jsdoc/plugins/summarize.js create mode 100644 third_party/jsdoc/plugins/test/fixtures/markdown.js create mode 100644 third_party/jsdoc/plugins/test/fixtures/overloadHelper.js create mode 100644 third_party/jsdoc/plugins/test/fixtures/railsTemplate.js.erb create mode 100644 third_party/jsdoc/plugins/test/specs/commentConvert.js create mode 100644 third_party/jsdoc/plugins/test/specs/escapeHtml.js create mode 100644 third_party/jsdoc/plugins/test/specs/markdown.js create mode 100644 third_party/jsdoc/plugins/test/specs/overloadHelper.js create mode 100644 third_party/jsdoc/plugins/test/specs/railsTemplate.js create mode 100644 third_party/jsdoc/plugins/test/specs/shout.js create mode 100644 third_party/jsdoc/plugins/test/specs/sourcetag.js create mode 100644 third_party/jsdoc/plugins/test/specs/summarize.js create mode 100644 third_party/jsdoc/rhino/MPL_2.0.txt create mode 100644 third_party/jsdoc/rhino/assert.js create mode 100644 third_party/jsdoc/rhino/crypto.js create mode 100644 third_party/jsdoc/rhino/events.js create mode 100644 third_party/jsdoc/rhino/fs.js create mode 100644 third_party/jsdoc/rhino/js.jar create mode 100644 third_party/jsdoc/rhino/jsdoc/src/astbuilder.js create mode 100644 third_party/jsdoc/rhino/jsdoc/src/parser.js create mode 100644 third_party/jsdoc/rhino/jsdoc/src/visitor.js create mode 100644 third_party/jsdoc/rhino/os.js create mode 100644 third_party/jsdoc/rhino/path.js create mode 100644 third_party/jsdoc/rhino/querystring.js create mode 100644 third_party/jsdoc/rhino/rhino-shim.js create mode 100644 third_party/jsdoc/rhino/util.js create mode 100644 third_party/jsdoc/templates/README.md create mode 100644 third_party/jsdoc/templates/default/README.md create mode 100644 third_party/jsdoc/templates/default/publish.js create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.eot create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.svg create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.woff create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-BoldItalic-webfont.eot create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-BoldItalic-webfont.svg create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-BoldItalic-webfont.woff create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Italic-webfont.eot create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Italic-webfont.svg create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Italic-webfont.woff create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.eot create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.svg create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.woff create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.eot create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.svg create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.woff create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.eot create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.svg create mode 100644 third_party/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.woff create mode 100644 third_party/jsdoc/templates/default/static/scripts/linenumber.js create mode 100644 third_party/jsdoc/templates/default/static/scripts/prettify/Apache-License-2.0.txt create mode 100644 third_party/jsdoc/templates/default/static/scripts/prettify/lang-css.js create mode 100644 third_party/jsdoc/templates/default/static/scripts/prettify/prettify.js create mode 100644 third_party/jsdoc/templates/default/static/scripts/toggle.js create mode 100644 third_party/jsdoc/templates/default/static/styles/jsdoc-default.css create mode 100644 third_party/jsdoc/templates/default/static/styles/prettify-jsdoc.css create mode 100644 third_party/jsdoc/templates/default/static/styles/prettify-tomorrow.css create mode 100644 third_party/jsdoc/templates/default/tmpl/augments.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/container.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/details.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/example.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/examples.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/exceptions.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/layout.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/mainpage.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/members.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/method.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/params.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/properties.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/returns.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/source.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/tutorial.tmpl create mode 100644 third_party/jsdoc/templates/default/tmpl/type.tmpl create mode 100644 third_party/jsdoc/templates/haruki/README.md create mode 100644 third_party/jsdoc/templates/haruki/publish.js create mode 100644 third_party/jsdoc/test/README.md create mode 100644 third_party/jsdoc/test/async-callback.js create mode 100644 third_party/jsdoc/test/fixtures/abstracttag.js create mode 100644 third_party/jsdoc/test/fixtures/accesstag.js create mode 100644 third_party/jsdoc/test/fixtures/alias.js create mode 100644 third_party/jsdoc/test/fixtures/alias2.js create mode 100644 third_party/jsdoc/test/fixtures/alias3.js create mode 100644 third_party/jsdoc/test/fixtures/alias4.js create mode 100644 third_party/jsdoc/test/fixtures/aliasglobal.js create mode 100644 third_party/jsdoc/test/fixtures/aliasglobal2.js create mode 100644 third_party/jsdoc/test/fixtures/aliasresolve.js create mode 100644 third_party/jsdoc/test/fixtures/aliasresolve2.js create mode 100644 third_party/jsdoc/test/fixtures/also.js create mode 100644 third_party/jsdoc/test/fixtures/also2.js create mode 100644 third_party/jsdoc/test/fixtures/augmentstag.js create mode 100644 third_party/jsdoc/test/fixtures/augmentstag2.js create mode 100644 third_party/jsdoc/test/fixtures/augmentstag3.js create mode 100644 third_party/jsdoc/test/fixtures/augmentstag4.js create mode 100644 third_party/jsdoc/test/fixtures/augmentstag5.js create mode 100644 third_party/jsdoc/test/fixtures/authortag.js create mode 100644 third_party/jsdoc/test/fixtures/borrowstag.js create mode 100644 third_party/jsdoc/test/fixtures/borrowstag2.js create mode 100644 third_party/jsdoc/test/fixtures/callbacktag.js create mode 100644 third_party/jsdoc/test/fixtures/classdesctag.js create mode 100644 third_party/jsdoc/test/fixtures/classtag.js create mode 100644 third_party/jsdoc/test/fixtures/classwithoutname.js create mode 100644 third_party/jsdoc/test/fixtures/constanttag.js create mode 100644 third_party/jsdoc/test/fixtures/constructortag.js create mode 100644 third_party/jsdoc/test/fixtures/constructstag.js create mode 100644 third_party/jsdoc/test/fixtures/constructstag2.js create mode 100644 third_party/jsdoc/test/fixtures/constructstag3.js create mode 100644 third_party/jsdoc/test/fixtures/constructstag4.js create mode 100644 third_party/jsdoc/test/fixtures/constructstag5.js create mode 100644 third_party/jsdoc/test/fixtures/copyrighttag.js create mode 100644 third_party/jsdoc/test/fixtures/defaulttag.js create mode 100644 third_party/jsdoc/test/fixtures/deprecatedtag.js create mode 100644 third_party/jsdoc/test/fixtures/descriptiontag.js create mode 100644 third_party/jsdoc/test/fixtures/destructuring.js create mode 100644 third_party/jsdoc/test/fixtures/doclet.js create mode 100644 third_party/jsdoc/test/fixtures/emptycomments.js create mode 100644 third_party/jsdoc/test/fixtures/enumtag.js create mode 100644 third_party/jsdoc/test/fixtures/enumtag2.js create mode 100644 third_party/jsdoc/test/fixtures/es6.js create mode 100644 third_party/jsdoc/test/fixtures/eventfirestag.js create mode 100644 third_party/jsdoc/test/fixtures/exampletag.js create mode 100644 third_party/jsdoc/test/fixtures/exceptiontag.js create mode 100644 third_party/jsdoc/test/fixtures/exports.js create mode 100644 third_party/jsdoc/test/fixtures/exportstag.js create mode 100644 third_party/jsdoc/test/fixtures/exportstag2.js create mode 100644 third_party/jsdoc/test/fixtures/exportstag3.js create mode 100644 third_party/jsdoc/test/fixtures/exportstag4.js create mode 100644 third_party/jsdoc/test/fixtures/exportstag5.js create mode 100644 third_party/jsdoc/test/fixtures/exportstag6.js create mode 100644 third_party/jsdoc/test/fixtures/exportstag7.js create mode 100644 third_party/jsdoc/test/fixtures/exportstag8.js create mode 100644 third_party/jsdoc/test/fixtures/externaltag.js create mode 100644 third_party/jsdoc/test/fixtures/externaltag2.js create mode 100644 third_party/jsdoc/test/fixtures/externaltag3.js create mode 100644 third_party/jsdoc/test/fixtures/file.js create mode 100644 third_party/jsdoc/test/fixtures/funcExpression.js create mode 100644 third_party/jsdoc/test/fixtures/funcExpression2.js create mode 100644 third_party/jsdoc/test/fixtures/funcExpression3.js create mode 100644 third_party/jsdoc/test/fixtures/functiontag.js create mode 100644 third_party/jsdoc/test/fixtures/getset.js create mode 100644 third_party/jsdoc/test/fixtures/globaltag.js create mode 100644 third_party/jsdoc/test/fixtures/ignoretag.js create mode 100644 third_party/jsdoc/test/fixtures/ignoretag2.js create mode 100644 third_party/jsdoc/test/fixtures/inlinecomment.js create mode 100644 third_party/jsdoc/test/fixtures/inner.js create mode 100644 third_party/jsdoc/test/fixtures/innerscope.js create mode 100644 third_party/jsdoc/test/fixtures/innerscope2.js create mode 100644 third_party/jsdoc/test/fixtures/interface-implements.js create mode 100644 third_party/jsdoc/test/fixtures/jslangnames.js create mode 100644 third_party/jsdoc/test/fixtures/kindtag.js create mode 100644 third_party/jsdoc/test/fixtures/lends.js create mode 100644 third_party/jsdoc/test/fixtures/lends2.js create mode 100644 third_party/jsdoc/test/fixtures/lends3.js create mode 100644 third_party/jsdoc/test/fixtures/lends4.js create mode 100644 third_party/jsdoc/test/fixtures/lends5.js create mode 100644 third_party/jsdoc/test/fixtures/lends6.js create mode 100644 third_party/jsdoc/test/fixtures/lendsglobal.js create mode 100644 third_party/jsdoc/test/fixtures/letkeyword.js create mode 100644 third_party/jsdoc/test/fixtures/licensetag.js create mode 100644 third_party/jsdoc/test/fixtures/linktag.js create mode 100644 third_party/jsdoc/test/fixtures/listenstag.js create mode 100644 third_party/jsdoc/test/fixtures/markdowntest.md create mode 100644 third_party/jsdoc/test/fixtures/memberoftag.js create mode 100644 third_party/jsdoc/test/fixtures/memberoftag2.js create mode 100644 third_party/jsdoc/test/fixtures/memberoftag3.js create mode 100644 third_party/jsdoc/test/fixtures/memberoftag4.js create mode 100644 third_party/jsdoc/test/fixtures/memberoftagforced.js create mode 100644 third_party/jsdoc/test/fixtures/membertag.js create mode 100644 third_party/jsdoc/test/fixtures/mixintag.js create mode 100644 third_party/jsdoc/test/fixtures/moduleinner.js create mode 100644 third_party/jsdoc/test/fixtures/moduleisconstructor.js create mode 100644 third_party/jsdoc/test/fixtures/moduleisfunction.js create mode 100644 third_party/jsdoc/test/fixtures/modules/data/mod-1.js create mode 100644 third_party/jsdoc/test/fixtures/modules/data/mod-2.js create mode 100644 third_party/jsdoc/test/fixtures/modules/data/mod-3.js create mode 100644 third_party/jsdoc/test/fixtures/moduletag.js create mode 100644 third_party/jsdoc/test/fixtures/moduletag2.js create mode 100644 third_party/jsdoc/test/fixtures/moduletag3.js create mode 100644 third_party/jsdoc/test/fixtures/moduletag4.js create mode 100644 third_party/jsdoc/test/fixtures/moduletag5.js create mode 100644 third_party/jsdoc/test/fixtures/namespacetag.js create mode 100644 third_party/jsdoc/test/fixtures/nametag.js create mode 100644 third_party/jsdoc/test/fixtures/objectlit.js create mode 100644 third_party/jsdoc/test/fixtures/objectlit2.js create mode 100644 third_party/jsdoc/test/fixtures/objectlit3.js create mode 100644 third_party/jsdoc/test/fixtures/objectpropertykeys.js create mode 100644 third_party/jsdoc/test/fixtures/paramtag.js create mode 100644 third_party/jsdoc/test/fixtures/paramtag2.js create mode 100644 third_party/jsdoc/test/fixtures/paramtaginvalidtype.js create mode 100644 third_party/jsdoc/test/fixtures/plugins.js create mode 100644 third_party/jsdoc/test/fixtures/privatetag.js create mode 100644 third_party/jsdoc/test/fixtures/privatetag2.js create mode 100644 third_party/jsdoc/test/fixtures/projecttag.js create mode 100644 third_party/jsdoc/test/fixtures/propertytag.js create mode 100644 third_party/jsdoc/test/fixtures/protectedtag.js create mode 100644 third_party/jsdoc/test/fixtures/protectedtag2.js create mode 100644 third_party/jsdoc/test/fixtures/quotename.js create mode 100644 third_party/jsdoc/test/fixtures/quotename2.js create mode 100644 third_party/jsdoc/test/fixtures/readonlytag.js create mode 100644 third_party/jsdoc/test/fixtures/requirestag.js create mode 100644 third_party/jsdoc/test/fixtures/returnstag.js create mode 100644 third_party/jsdoc/test/fixtures/scopetags.js create mode 100644 third_party/jsdoc/test/fixtures/seetag.js create mode 100644 third_party/jsdoc/test/fixtures/sincetag.js create mode 100644 third_party/jsdoc/test/fixtures/specialnames.js create mode 100644 third_party/jsdoc/test/fixtures/src/_dir2/four.js create mode 100644 third_party/jsdoc/test/fixtures/src/_ignored.js create mode 100644 third_party/jsdoc/test/fixtures/src/dir1/three.js create mode 100644 third_party/jsdoc/test/fixtures/src/ignored.txt create mode 100644 third_party/jsdoc/test/fixtures/src/one.js create mode 100644 third_party/jsdoc/test/fixtures/src/two.js create mode 100644 third_party/jsdoc/test/fixtures/starbangstar.js create mode 100644 third_party/jsdoc/test/fixtures/summarytag.js create mode 100644 third_party/jsdoc/test/fixtures/testPlugin1.js create mode 100644 third_party/jsdoc/test/fixtures/testPlugin2.js create mode 100644 third_party/jsdoc/test/fixtures/this-and-objectlit.js create mode 100644 third_party/jsdoc/test/fixtures/this.js create mode 100644 third_party/jsdoc/test/fixtures/this2.js create mode 100644 third_party/jsdoc/test/fixtures/this3.js create mode 100644 third_party/jsdoc/test/fixtures/thistag.js create mode 100644 third_party/jsdoc/test/fixtures/todotag.js create mode 100644 third_party/jsdoc/test/fixtures/tutorialtag.js create mode 100644 third_party/jsdoc/test/fixtures/typedeftag.js create mode 100644 third_party/jsdoc/test/fixtures/typekind.js create mode 100644 third_party/jsdoc/test/fixtures/typetag.js create mode 100644 third_party/jsdoc/test/fixtures/typetag2.js create mode 100644 third_party/jsdoc/test/fixtures/typetaginline.js create mode 100644 third_party/jsdoc/test/fixtures/typetagwithnewline.js create mode 100644 third_party/jsdoc/test/fixtures/undocumentedtag.js create mode 100644 third_party/jsdoc/test/fixtures/utf8.js create mode 100644 third_party/jsdoc/test/fixtures/var.js create mode 100644 third_party/jsdoc/test/fixtures/variations.js create mode 100644 third_party/jsdoc/test/fixtures/variations2.js create mode 100644 third_party/jsdoc/test/fixtures/variations3.js create mode 100644 third_party/jsdoc/test/fixtures/versiontag.js create mode 100644 third_party/jsdoc/test/fixtures/virtual.js create mode 100644 third_party/jsdoc/test/fixtures/virtual2.js create mode 100644 third_party/jsdoc/test/fixtures/virtual3.js create mode 100644 third_party/jsdoc/test/jasmine-jsdoc.js create mode 100644 third_party/jsdoc/test/lib/jasmine.js create mode 100644 third_party/jsdoc/test/reporter.js create mode 100644 third_party/jsdoc/test/runner.js create mode 100644 third_party/jsdoc/test/spec-collection.js create mode 100644 third_party/jsdoc/test/specs/documentation/alias.js create mode 100644 third_party/jsdoc/test/specs/documentation/also.js create mode 100644 third_party/jsdoc/test/specs/documentation/callback.js create mode 100644 third_party/jsdoc/test/specs/documentation/classwithoutname.js create mode 100644 third_party/jsdoc/test/specs/documentation/emptycomments.js create mode 100644 third_party/jsdoc/test/specs/documentation/exports.js create mode 100644 third_party/jsdoc/test/specs/documentation/funcExpression.js create mode 100644 third_party/jsdoc/test/specs/documentation/getset.js create mode 100644 third_party/jsdoc/test/specs/documentation/inlinecomment.js create mode 100644 third_party/jsdoc/test/specs/documentation/inner.js create mode 100644 third_party/jsdoc/test/specs/documentation/innerscope.js create mode 100644 third_party/jsdoc/test/specs/documentation/lends.js create mode 100644 third_party/jsdoc/test/specs/documentation/letkeyword.js create mode 100644 third_party/jsdoc/test/specs/documentation/moduleinner.js create mode 100644 third_party/jsdoc/test/specs/documentation/moduleisconstructor.js create mode 100644 third_party/jsdoc/test/specs/documentation/moduleisfunction.js create mode 100644 third_party/jsdoc/test/specs/documentation/modules.js create mode 100644 third_party/jsdoc/test/specs/documentation/objectlit.js create mode 100644 third_party/jsdoc/test/specs/documentation/objectpropertykeys.js create mode 100644 third_party/jsdoc/test/specs/documentation/quotename.js create mode 100644 third_party/jsdoc/test/specs/documentation/specialnames.js create mode 100644 third_party/jsdoc/test/specs/documentation/starbangstar.js create mode 100644 third_party/jsdoc/test/specs/documentation/this.js create mode 100644 third_party/jsdoc/test/specs/documentation/typetaginline.js create mode 100644 third_party/jsdoc/test/specs/documentation/typetagwithnewline.js create mode 100644 third_party/jsdoc/test/specs/documentation/var.js create mode 100644 third_party/jsdoc/test/specs/documentation/variations.js create mode 100644 third_party/jsdoc/test/specs/documentation/virtual.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/augment.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/borrow.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/config.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/doclet.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/name.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/opts/argparser.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/opts/args.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/package.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/path.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/plugins.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/readme.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/schema.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/astbuilder.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/astnode.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/filter.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/handlers.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/parser.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/scanner.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/syntax.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/visitor.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/src/walker.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/tag.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/tag/dictionary.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/tag/dictionary/definitions.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/tag/inline.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/tag/type.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/tag/validator.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/template.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/tutorial.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/tutorial/resolver.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/util/doop.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/util/dumper.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/util/error.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/util/logger.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/util/markdown.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/util/runtime.js create mode 100644 third_party/jsdoc/test/specs/jsdoc/util/templateHelper.js create mode 100644 third_party/jsdoc/test/specs/plugins/plugins.js create mode 100644 third_party/jsdoc/test/specs/rhino/fs.js create mode 100644 third_party/jsdoc/test/specs/rhino/os.js create mode 100644 third_party/jsdoc/test/specs/rhino/path.js create mode 100644 third_party/jsdoc/test/specs/rhino/src/parser.js create mode 100644 third_party/jsdoc/test/specs/rhino/src/visitor.js create mode 100644 third_party/jsdoc/test/specs/tags/abstracttag.js create mode 100644 third_party/jsdoc/test/specs/tags/accesstag.js create mode 100644 third_party/jsdoc/test/specs/tags/aliastag.js create mode 100644 third_party/jsdoc/test/specs/tags/augmentstag.js create mode 100644 third_party/jsdoc/test/specs/tags/authortag.js create mode 100644 third_party/jsdoc/test/specs/tags/borrowstag.js create mode 100644 third_party/jsdoc/test/specs/tags/classdesctag.js create mode 100644 third_party/jsdoc/test/specs/tags/classtag.js create mode 100644 third_party/jsdoc/test/specs/tags/constanttag.js create mode 100644 third_party/jsdoc/test/specs/tags/constructortag.js create mode 100644 third_party/jsdoc/test/specs/tags/constructstag.js create mode 100644 third_party/jsdoc/test/specs/tags/copyrighttag.js create mode 100644 third_party/jsdoc/test/specs/tags/defaulttag.js create mode 100644 third_party/jsdoc/test/specs/tags/deprecatedtag.js create mode 100644 third_party/jsdoc/test/specs/tags/descriptiontag.js create mode 100644 third_party/jsdoc/test/specs/tags/enumtag.js create mode 100644 third_party/jsdoc/test/specs/tags/eventfirestag.js create mode 100644 third_party/jsdoc/test/specs/tags/exampletag.js create mode 100644 third_party/jsdoc/test/specs/tags/exceptiontag.js create mode 100644 third_party/jsdoc/test/specs/tags/exportstag.js create mode 100644 third_party/jsdoc/test/specs/tags/externaltag.js create mode 100644 third_party/jsdoc/test/specs/tags/functiontag.js create mode 100644 third_party/jsdoc/test/specs/tags/globaltag.js create mode 100644 third_party/jsdoc/test/specs/tags/ignoretag.js create mode 100644 third_party/jsdoc/test/specs/tags/implementstag.js create mode 100644 third_party/jsdoc/test/specs/tags/interfacetag.js create mode 100644 third_party/jsdoc/test/specs/tags/kindtag.js create mode 100644 third_party/jsdoc/test/specs/tags/lendstag.js create mode 100644 third_party/jsdoc/test/specs/tags/licensetag.js create mode 100644 third_party/jsdoc/test/specs/tags/listenstag.js create mode 100644 third_party/jsdoc/test/specs/tags/memberoftag.js create mode 100644 third_party/jsdoc/test/specs/tags/membertag.js create mode 100644 third_party/jsdoc/test/specs/tags/mixestag.js create mode 100644 third_party/jsdoc/test/specs/tags/mixintag.js create mode 100644 third_party/jsdoc/test/specs/tags/moduletag.js create mode 100644 third_party/jsdoc/test/specs/tags/namespacetag.js create mode 100644 third_party/jsdoc/test/specs/tags/nametag.js create mode 100644 third_party/jsdoc/test/specs/tags/overviewtag.js create mode 100644 third_party/jsdoc/test/specs/tags/paramtag.js create mode 100644 third_party/jsdoc/test/specs/tags/privatetag.js create mode 100644 third_party/jsdoc/test/specs/tags/propertytag.js create mode 100644 third_party/jsdoc/test/specs/tags/protectedtag.js create mode 100644 third_party/jsdoc/test/specs/tags/readonlytag.js create mode 100644 third_party/jsdoc/test/specs/tags/requirestag.js create mode 100644 third_party/jsdoc/test/specs/tags/returnstag.js create mode 100644 third_party/jsdoc/test/specs/tags/scopetags.js create mode 100644 third_party/jsdoc/test/specs/tags/seetag.js create mode 100644 third_party/jsdoc/test/specs/tags/sincetag.js create mode 100644 third_party/jsdoc/test/specs/tags/summarytag.js create mode 100644 third_party/jsdoc/test/specs/tags/thistag.js create mode 100644 third_party/jsdoc/test/specs/tags/todotag.js create mode 100644 third_party/jsdoc/test/specs/tags/tutorialtag.js create mode 100644 third_party/jsdoc/test/specs/tags/typedeftag.js create mode 100644 third_party/jsdoc/test/specs/tags/typekind.js create mode 100644 third_party/jsdoc/test/specs/tags/typetag.js create mode 100644 third_party/jsdoc/test/specs/tags/undocumentedtag.js create mode 100644 third_party/jsdoc/test/specs/tags/versiontag.js create mode 100755 third_party/jsdoc/test/tutorials/build.sh create mode 100644 third_party/jsdoc/test/tutorials/duplicateDefined/asdf.html create mode 100644 third_party/jsdoc/test/tutorials/duplicateDefined/asdf.json create mode 100644 third_party/jsdoc/test/tutorials/duplicateDefined/index.json create mode 100644 third_party/jsdoc/test/tutorials/incomplete/parent.html create mode 100644 third_party/jsdoc/test/tutorials/incomplete/parent.json create mode 100644 third_party/jsdoc/test/tutorials/src/x.js create mode 100644 third_party/jsdoc/test/tutorials/tutorials/constructor.md create mode 100644 third_party/jsdoc/test/tutorials/tutorials/multiple.json create mode 100644 third_party/jsdoc/test/tutorials/tutorials/recursive/test_recursive.md create mode 100644 third_party/jsdoc/test/tutorials/tutorials/test.html create mode 100644 third_party/jsdoc/test/tutorials/tutorials/test.json create mode 100644 third_party/jsdoc/test/tutorials/tutorials/test2.markdown create mode 100644 third_party/jsdoc/test/tutorials/tutorials/test3.htm create mode 100644 third_party/jsdoc/test/tutorials/tutorials/test4.md create mode 100644 third_party/jsdoc/test/tutorials/tutorials/test5.txt create mode 100644 third_party/jsdoc/test/tutorials/tutorials/test6.xml create mode 100644 tutorials/caveats.html create mode 100644 tutorials/caveats.json create mode 100644 tutorials/dev.html create mode 100644 tutorials/dev.json create mode 100644 tutorials/intro.html create mode 100644 tutorials/intro.json create mode 100644 tutorials/language.html create mode 100644 tutorials/language.json create mode 100644 tutorials/player.html create mode 100644 tutorials/player.json create mode 100644 tutorials/polyfills.html create mode 100644 tutorials/polyfills.json create mode 100644 tutorials/sample1.txt create mode 100644 tutorials/sample2.txt create mode 100644 tutorials/sample3.txt create mode 100644 tutorials/sample4.txt create mode 100644 tutorials/sample5.txt create mode 100644 tutorials/sample6.txt create mode 100755 tutorials/update_samples.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..77362d8078 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.pyc +third_party/closure/goog/deps.js +shaka-player.compiled.js +shaka-player.compiled.debug.js +shaka-player.compiled.debug.map +docs/api +docs/reference diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000000..65c4ca6e07 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,16 @@ +# This is the official list of shaka-player authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. +# +# Names should be added to this file with one of the following patterns: +# +# For individual contributors: +# Name +# +# For corporate contributors: +# Organization +# See examples below or python fnmatch module documentation for more information. +# +# Please keep the list sorted. + +Google Inc. <*@google.com> diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..5b4c4d2f76 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,58 @@ +## 1.0 (2014-12-19) + +First public release. + +Bugfixes: + - Text tracks are no longer ignored in MPD manifests. + - Adaptation decisions are now quicker and more reliable. + - (This bug was more noticeable on faster internet connections.) + - Playback no longer gets "stuck" on certain content. + - Playback no longer gets "stuck" after certain seek patterns. + - Player get/select/enable methods can now be called without a video source. + - A \ tag's "videoWidth"/"videoHeight" attributes now update + correctly on Chrome >= 40. + - Manual adaptation while paused no longer unpauses the video. + - Credentials can now be used on cross-domain license requests. + - Range headers are no longer sent for all segment requests. + - (This fixes issues with IIS.) + - A missing declaration of getVideoPlaybackQuality() has been added. + - The compiled code no longer pollutes the global namespace. + - DASH manifests using \ are now parsed correctly. + - Formatting has been fixed in the "Shaka Player Development" tutorial. + +Features: + - The Player is now reusable. You can call load() multiple times without + calling destroy(). + - The JS linter is now included in sources, fixing compatibility issues + between versions. + - The test suite now includes playback integration tests. + - The Player has been updated to support the 01 Dec 2014 draft of the EME + specification. + - The loader in load.js no longer makes assumptions about app.js. You can + now use load.js to bootstrap other applications. + - The test app now uses less screen real estate. + - All custom events have been documented, and a new tutorial has been added + to demonstrate how they can be used. + - The Player now has a support-check API to determine if the browser has all + necessary features for playback. + - Sample code in the tutorials is now marked up to highlight changes from the + previous sample. + - Code coverage in unit tests has been increased. + - Flakiness in unit tests has been reduced. + - DASH manifests using \ without a segment index or segment + timeline are now supported. + - The DASH "presentationTimeOffset" attribute is now supported. + +Broken Compatibility: + - ContentProtectionCallback no longer takes a "mimeType" argument. + - DrmSchemeInfo constructor no longer takes a "mimeType" argument. + - DrmSchemeInfo constructor's "initData" argument is now an object with + fields instead of a Uint8Array. + - DrmSchemeInfo now takes a "withCredentials" argument. + - lib.js has been renamed to shaka-player.compiled.js. + + +## 0.1b (2014-11-21) + +Private beta release. + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..e8ee028500 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,58 @@ +# How to contribute # + +We'd love to accept your patches and contributions to this project. There are +just a few small guidelines you need to follow. + + +## Contributor License Agreement ## + +Contributions to any Google project must be accompanied by a Contributor +License Agreement. This is not a copyright **assignment**, it simply gives +Google permission to use and redistribute your contributions as part of the +project. + + * If you are an individual writing original source code and you're sure you + own the intellectual property, then you'll need to sign an [individual + CLA][]. + + * If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a [corporate CLA][]. + +You generally only need to submit a CLA once, so if you've already submitted +one (even if it was for a different project), you probably don't need to do it +again. + +[individual CLA]: https://developers.google.com/open-source/cla/individual +[corporate CLA]: https://developers.google.com/open-source/cla/corporate + +Once your CLA is submitted (or if you already submitted one for +another Google project), make a commit adding yourself to the +[AUTHORS][] and [CONTRIBUTORS][] files. This commit can be part +of your first [pull request][]. + +[AUTHORS]: AUTHORS +[CONTRIBUTORS]: CONTRIBUTORS + + +## Submitting a patch ## + + 1. It's generally best to start by opening a new issue describing the bug or + feature you're intending to fix. Even if you think it's relatively minor, + it's helpful to know what people are working on. Mention in the initial + issue that you are planning to work on that bug or feature so that it can + be assigned to you. + + 1. Follow the normal process of [forking][] the project, and setup a new + branch to work in. It's important that each group of changes be done in + separate branches in order to ensure that a pull request only includes the + commits related to that bug or feature. + + 1. Do your best to have [well-formed commit messages][] for each change. + This provides consistency throughout the project, and ensures that commit + messages are able to be formatted properly by various git tools. + + 1. Finally, push the commits to your fork and submit a [pull request][]. + +[forking]: https://help.github.com/articles/fork-a-repo +[well-formed commit messages]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html +[pull request]: https://help.github.com/articles/creating-a-pull-request diff --git a/CONTRIBUTORS b/CONTRIBUTORS new file mode 100644 index 0000000000..dd226b72d4 --- /dev/null +++ b/CONTRIBUTORS @@ -0,0 +1,28 @@ +# People who have agreed to one of the CLAs and can contribute patches. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# Names should be added to this file only after verifying that +# the individual or the individual's organization has agreed to +# the appropriate Contributor License Agreement, found here: +# +# https://developers.google.com/open-source/cla/individual +# https://developers.google.com/open-source/cla/corporate +# +# The agreement for individuals can be filled out on the web. +# +# When adding J Random Contributor's name to this file, +# either J's name or J's organization's name should be +# added to the AUTHORS file, depending on whether the +# individual or corporate CLA was used. +# +# Names should be added to this file as: +# Name +# +# Please keep the list sorted. + +Joey Parrish +Natalie Harris +Timothy Drews +Vasanth Polipelli diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000000..bdd53e34e6 --- /dev/null +++ b/README.md @@ -0,0 +1,115 @@ +# Shaka Player # + +The Shaka Player is a JavaScript library which implements a [DASH][] client. +It relies on [HTML5 video][], [MediaSource Extensions][], and [Encrypted Media +Extensions][] for playback. + +A generic DASH client can be difficult to implement, and the DASH standard does +not always align well with the new browser APIs that DASH clients are built on. +Our goal is to reduce this friction and make it easier to adopt these emerging +web standards for streaming, without falling back to plugins. + +We support both ISO BMFF (MP4) and WebM files (even in the same manifest), +WebVTT for subtitles and captions, both clear and encrypted content, and +multiple audio and subtitle languages (even in the same manifest). +And best of all, it's free! + +[DASH]: http://dashif.org/ +[HTML5 video]: http://www.html5rocks.com/en/tutorials/video/basics/ +[MediaSource Extensions]: http://w3c.github.io/media-source/ +[Encrypted Media Extensions]: https://w3c.github.io/encrypted-media/ + + +## Dependencies ## + +Most of the tools you need to work on the Shaka Player are included in the +sources, including the [Closure Compiler][], [gjslint][], [JSDoc][], and +[Jasmine][]. + +[Closure Compiler]: https://developers.google.com/closure/compiler/ +[gjslint]: https://developers.google.com/closure/utilities/docs/linter_howto +[JSDoc]: http://usejsdoc.org/ +[Jasmine]: http://jasmine.github.io/2.1/introduction.html + + +## Documentation ## + +We have detailed documentation which is generated from the sources using JSDoc. +A pre-rendered version of this documentation is available on the web at +http://shaka-player-demo.appspot.com/docs/index.html . This will be updated +with each release, but you can generate the same docs yourself at any time: +```Shell +./build/docs.sh +``` + +If you are new to the project, we recommend you start by browsing the docs, +in particular [the tutorials][]. This landing page is very brief, and only +covers the most basic information about the project. + +[the tutorials]: http://shaka-player-demo.appspot.com/docs/tutorial-player.html + + +## Getting Sources ## + +Up-to-date sources can be obtained from http://github.com/google/shaka-player . + + +## Building ## + +The development process is documented in more detail [in our generated docs][], +but in short, you can build the library by running: +```Shell +./build/all.sh +``` + +[in our generated docs]: http://shaka-player-demo.appspot.com/docs/tutorial-dev.html + + +## Running ## + +The library comes with a test app that can be used to tinker with all of the +library's basic functionality. The test app (index.html and app.js in the +sources) is meant to be used by making the source folder available to a local +web server and pointing your browser at it. + +A hosted version of the test app is also available at +http://shaka-player-demo.appspot.com/ for your convenience. + + +## Updating ## + +Simply pull new sources from github and enjoy! +```Shell +git pull --rebase +``` + + +## Design Overview ## + +The main entities you care about are [shaka.player.Player][], +[shaka.player.DashVideoSource][], and [shaka.player.DrmSchemeInfo][]. +In short, you construct a player and give it a \ tag, then you +construct a DASH video source and give it a manifest URL and an optional DRM +callback. Your DRM callback returns DrmSchemeInfo objects to describe your +DRM setup. You load this video source into the player to begin playback. + +The player handles high-level playback and DRM, while the video source deals +with streaming and all of the low-level parts of adaptive playback. The DRM +scheme info is an explicit set of parameters for DRM, and contains everything +the library can't glean from a DASH manifest. + +More detailed information and walkthroughs with fully-functional sample code +can be found in [the tutorials][]. + +[shaka.player.Player]: http://shaka-player-demo.appspot.com/docs/shaka.player.Player.html +[shaka.player.DashVideoSource]: http://shaka-player-demo.appspot.com/docs/shaka.player.DashVideoSource.html +[shaka.player.DrmSchemeInfo]: http://shaka-player-demo.appspot.com/docs/shaka.player.DrmSchemeInfo.html +[the tutorials]: http://shaka-player-demo.appspot.com/docs/tutorial-player.html + + +## Contributing ## + +If you have improvements or fixes, we would love to have your contributions. +Please read CONTRIBUTIONS.md for more information on the process we would like +contributors to follow. + diff --git a/app.js b/app.js new file mode 100644 index 0000000000..1fa4ef1fc1 --- /dev/null +++ b/app.js @@ -0,0 +1,548 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements the application layer of the test application. + */ + + +/** @class */ +var app = function() {}; + + +/** + * The video element owned by the app. + * + * @private {HTMLVideoElement} + */ +app.video_ = null; + + +/** + * The video resolution debug element owned by the app. + * + * @private {Element} + */ +app.videoResDebug_ = null; + + +/** + * True if the aspect ratio has been set for this playback. + * + * @private {boolean} + */ +app.aspectRatioSet_ = false; + + +/** + * The player object owned by the app. + * + * @private {shaka.player.Player} + */ +app.player_ = null; + + +/** + * True if polyfills have been installed. + * + * @private {boolean} + */ +app.polyfillsInstalled_ = false; + + +/** + * Initializes the application. + */ +app.init = function() { + // Set default values. + document.getElementById('forcePrefixed').checked = false; + document.getElementById('preferredLanguage').value = 'en-US'; + + document.getElementById('licenseServerUrlInput').value = + 'assets/test_license.json'; + document.getElementById('mediaUrlInput').value = 'assets/bear-av-enc.mp4'; + document.getElementById('subtitlesUrlInput').value = 'assets/test_subs.vtt'; + + document.getElementById('mpdList').value = + 'assets/car_cenc-20120827-manifest.mpd'; + + app.video_ = + /** @type {!HTMLVideoElement} */ (document.getElementById('video')); + app.videoResDebug_ = document.getElementById('videoResDebug'); + window.setInterval(app.updateVideoSize_, 50); + + var fields = location.search.split('?').pop(); + fields = fields ? fields.split(';') : []; + var params = {}; + for (var i = 0; i < fields.length; ++i) { + var kv = fields[i].split('='); + params[kv[0]] = kv[1]; + } + + if ('prefixed' in params) { + document.getElementById('forcePrefixed').checked = true; + } + if ('lang' in params) { + document.getElementById('preferredLanguage').value = params['lang']; + } + if ('nocenc' in params) { + document.getElementById('mpdList').value = + 'assets/car-20120827-manifest.mpd'; + } + if ('vp9' in params) { + document.getElementById('mpdList').value = + 'assets/feelings_vp9-20130806-manifest.mpd'; + } + if ('tng' in params) { + document.getElementById('mpdList').value = + 'assets/angel_one.mpd'; + } + if ('debug' in params && shaka.log) { + shaka.log.setLevel(shaka.log.Level.DEBUG); + } + if ('v' in params && shaka.log) { + shaka.log.setLevel(shaka.log.Level.V1); + } + + app.onMpdChange(); + + if ('dash' in params) { + document.getElementById('streamTypeList').value = 'dash'; + app.onStreamTypeChange(); + app.loadStream(); + } else if ('http' in params) { + document.getElementById('streamTypeList').value = 'http'; + app.onStreamTypeChange(); + app.loadStream(); + } +}; + + +/** + * Called when the stream type is changed. + */ +app.onStreamTypeChange = function() { + var type = document.getElementById('streamTypeList').value; + var on; + var off; + + if (type == 'http') { + on = document.getElementsByClassName('http'); + off = document.getElementsByClassName('dash'); + } else { + on = document.getElementsByClassName('dash'); + off = document.getElementsByClassName('http'); + } + + for (var i = 0; i < on.length; ++i) { + on[i].style.display = 'table-row'; + } + for (var i = 0; i < off.length; ++i) { + off[i].style.display = 'none'; + } +}; + + +/** + * Called when a new MPD is selected. + */ +app.onMpdChange = function() { + document.getElementById('manifestUrlInput').value = + document.getElementById('mpdList').value; +}; + + +/** + * Called when the custom MPD field is used. + */ +app.onMpdCustom = function() { + document.getElementById('mpdList').value = ''; +}; + + +/** + * Called when a new video track is selected. + */ +app.onVideoChange = function() { + var id = document.getElementById('videoTracks').value; + document.getElementById('adaptationEnabled').checked = false; + app.onAdaptationChange(); + app.player_.selectVideoTrack(id); +}; + + +/** + * Called when adaptation is enabled or disabled. + */ +app.onAdaptationChange = function() { + var enabled = document.getElementById('adaptationEnabled').checked; + if (app.player_) { + app.player_.enableAdaptation(enabled); + } +}; + + +/** + * Called when a new audio track is selected. + */ +app.onAudioChange = function() { + var id = document.getElementById('audioTracks').value; + app.player_.selectAudioTrack(id); +}; + + +/** + * Called when a new text track is selected or its enabled state is changed. + */ +app.onTextChange = function() { + var id = document.getElementById('textTracks').value; + var enabled = document.getElementById('textEnabled').checked; + app.player_.selectTextTrack(id); + app.player_.enableTextTrack(enabled); +}; + + +/** + * A very lazy demo function to cycle through audio tracks. + */ +app.cycleAudio = function() { + var intervalId = window.setInterval(function() { + // On EOF, the video goes into a paused state. + if (app.video_.paused) { + window.clearInterval(intervalId); + return; + } + + var audioTracks = document.getElementById('audioTracks'); + var option = audioTracks.selectedOptions[0]; + option = option.nextElementSibling || audioTracks.firstElementChild; + audioTracks.value = option.value; + app.onAudioChange(); + }, 3000); +}; + + +/** + * Loads whatever stream type is selected. + */ +app.loadStream = function() { + var type = document.getElementById('streamTypeList').value; + if (type == 'http') { + app.loadHttpStream(); + } else { + app.loadDashStream(); + } +}; + + +/** + * Loads an http stream. + */ +app.loadHttpStream = function() { + if (!app.player_) { + app.installPolyfills_(); + app.initPlayer_(); + } + + var mediaUrl = document.getElementById('mediaUrlInput').value; + var keySystem = document.getElementById('keySystemList').value; + var licenseServerUrl = document.getElementById('licenseServerUrlInput').value; + var subtitlesUrl = document.getElementById('subtitlesUrlInput').value; + var drmSchemeInfo = null; + if (keySystem) { + drmSchemeInfo = new shaka.player.DrmSchemeInfo( + keySystem, false, licenseServerUrl, false, null, null); + } + + app.load_(new shaka.player.HttpVideoSource(mediaUrl, subtitlesUrl, + drmSchemeInfo)); +}; + + +/** + * Loads a dash stream. + */ +app.loadDashStream = function() { + if (!app.player_) { + app.installPolyfills_(); + app.initPlayer_(); + } + + var mediaUrl = document.getElementById('manifestUrlInput').value; + + app.load_( + new shaka.player.DashVideoSource( + mediaUrl, + app.interpretContentProtection_)); +}; + + +/** + * Exceptions thrown in 'then' handlers are not seen until catch. + * Promises can therefore mask what would otherwise be uncaught exceptions. + * As a utility to work around this, wrap the function in setTimeout so that + * it is called outside of the Promise's 'then' handler. + * + * @param {function(...)} fn + * @return {function(...)} + * @private + */ +app.breakOutOfPromise_ = function(fn) { + return window.setTimeout.bind(window, fn, 0); +}; + + +/** + * Loads the given video source into the player. + * @param {!shaka.player.IVideoSource} videoSource + * @private + */ +app.load_ = function(videoSource) { + console.assert(app.player_ != null); + + var preferredLanguage = document.getElementById('preferredLanguage').value; + app.player_.setPreferredLanguage(preferredLanguage); + + app.player_.load(videoSource).then(app.breakOutOfPromise_( + function() { + app.displayMetadata_(); + }) + ).catch(function() {}); // Error already handled through error event. +}; + + +/** + * Displays player metadata on the page. + * @private + */ +app.displayMetadata_ = function() { + console.assert(app.player_ != null); + app.aspectRatioSet_ = false; + + // Populate video tracks. + var videoTracksList = document.getElementById('videoTracks'); + while (videoTracksList.firstChild) { + videoTracksList.removeChild(videoTracksList.firstChild); + } + var videoTracks = app.player_.getVideoTracks(); + videoTracks.sort(shaka.player.VideoTrack.compare); + for (var i = 0; i < videoTracks.length; ++i) { + var track = videoTracks[i]; + var item = document.createElement('option'); + item.textContent = track.width + 'x' + track.height + ', ' + + track.bandwidth + ' bits/s'; + item.value = track.id; + item.selected = track.active; + videoTracksList.appendChild(item); + } + + // Populate audio tracks. + var audioTracksList = document.getElementById('audioTracks'); + while (audioTracksList.firstChild) { + audioTracksList.removeChild(audioTracksList.firstChild); + } + var audioTracks = app.player_.getAudioTracks(); + audioTracks.sort(shaka.player.AudioTrack.compare); + for (var i = 0; i < audioTracks.length; ++i) { + var track = audioTracks[i]; + var item = document.createElement('option'); + item.textContent = 'language: ' + track.lang + ', ' + + track.bandwidth + ' bits/s'; + item.value = track.id; + item.selected = track.active; + audioTracksList.appendChild(item); + } + + // Populate text tracks. + var textTracksList = document.getElementById('textTracks'); + while (textTracksList.firstChild) { + textTracksList.removeChild(textTracksList.firstChild); + } + var textTracks = app.player_.getTextTracks(); + textTracks.sort(shaka.player.TextTrack.compare); + for (var i = 0; i < textTracks.length; ++i) { + var track = textTracks[i]; + var item = document.createElement('option'); + item.textContent = 'language: ' + track.lang; + item.value = track.id; + item.selected = track.active; + if (track.enabled) { + document.getElementById('textEnabled').checked = true; + } + textTracksList.appendChild(item); + } +}; + + +/** + * Requests fullscreen mode. + */ +app.requestFullscreen = function() { + if (app.player_) { + app.player_.requestFullscreen(); + } +}; + + +/** + * Update video resolution information. + * @private + */ +app.updateVideoSize_ = function() { + if (app.aspectRatioSet_ == false) { + var aspect = app.video_.videoWidth / app.video_.videoHeight; + if (aspect) { + // Round off common aspect ratios. + if (Math.abs(aspect - (16 / 9)) < 0.01) { + aspect = 16 / 9; + } else if (Math.abs(aspect - (4 / 3)) < 0.01) { + aspect = 4 / 3; + } + + // Resize the video tag to match the aspect ratio of the media. + var h = 576; + var w = h * aspect; + app.video_.width = w.toString(); + app.video_.height = h.toString(); + + app.aspectRatioSet_ = true; + } + } + + app.videoResDebug_.innerText = + app.video_.videoWidth + ' x ' + app.video_.videoHeight; +}; + + +/** + * Installs the polyfills if the have not yet been installed. + * @private + */ +app.installPolyfills_ = function() { + if (app.polyfillsInstalled_) + return; + + var forcePrefixedElement = document.getElementById('forcePrefixed'); + var forcePrefixed = forcePrefixedElement.checked; + + // Once the setting is applied, it cannot be changed. + forcePrefixedElement.disabled = true; + forcePrefixedElement.title = 'EME choice locked in for this browser session.'; + + if (forcePrefixed) { + window['MediaKeys'] = null; + window['MediaKeySession'] = null; + HTMLMediaElement.prototype['setMediaKeys'] = null; + Navigator.prototype['requestMediaKeySystemAccess'] = null; + } + + shaka.polyfill.Fullscreen.install(); + shaka.polyfill.MediaKeys.install(); + shaka.polyfill.VideoPlaybackQuality.install(); + + app.polyfillsInstalled_ = true; +}; + + +/** + * Initializes the Player instance. + * If the Player instance already exists then it is reinitialized. + * @private + */ +app.initPlayer_ = function() { + console.assert(app.player_ == null); + if (app.player_) { + return; + } + + app.player_ = + new shaka.player.Player(/** @type {!HTMLVideoElement} */ (app.video_)); + app.player_.addEventListener('error', app.onPlayerError_, false); + app.player_.addEventListener('adaptation', app.displayMetadata_, false); + + // Load the adaptation setting. + app.onAdaptationChange(); +}; + + +/** + * Called when the player generates an error. + * @param {!Event} event + * @private + */ +app.onPlayerError_ = function(event) { + console.error('Player error', event); +}; + + +/** + * Called to interpret ContentProtection elements from the MPD. + * @param {!shaka.dash.mpd.ContentProtection} contentProtection The MPD element. + * @return {shaka.player.DrmSchemeInfo} or null if the element is not + * understood by this application. + * @private + */ +app.interpretContentProtection_ = function(contentProtection) { + var StringUtils = shaka.util.StringUtils; + + var override = document.getElementById('wvLicenseServerUrlInput'); + if (override.value) { + // The user is using the test app's UI to override the MPD. + // This is useful to test external MPDs when no mapping is known in + // advance. + return new shaka.player.DrmSchemeInfo( + 'com.widevine.alpha', true, override.value, false, null, null); + } + + if (contentProtection.schemeIdUri == 'com.youtube.clearkey') { + // This is the scheme used by YouTube's MediaSource demo. + var child = contentProtection.children[0]; + var keyid = StringUtils.fromHex(child.getAttribute('keyid')); + var key = StringUtils.fromHex(child.getAttribute('key')); + var keyObj = { + kty: 'oct', + kid: StringUtils.toBase64(keyid, false), + k: StringUtils.toBase64(key, false) + }; + var jwkSet = {keys: [keyObj]}; + var license = JSON.stringify(jwkSet); + var initData = { + initData: StringUtils.toUint8Array(keyid), + initDataType: 'cenc' + }; + var licenseServerUrl = 'data:application/json;base64,' + + StringUtils.toBase64(license); + return new shaka.player.DrmSchemeInfo( + 'org.w3.clearkey', false, licenseServerUrl, false, initData, null); + } + + if (contentProtection.schemeIdUri == + 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed') { + // This is the UUID which represents Widevine in the edash-packager. + var licenseServerUrl = 'http://widevine-proxy.appspot.com/proxy'; + return new shaka.player.DrmSchemeInfo( + 'com.widevine.alpha', true, licenseServerUrl, false, null, null); + } + + console.warn('Unrecognized scheme: ' + contentProtection.schemeIdUri); + return null; +}; + + +if (document.readyState == 'complete' || + document.readyState == 'interactive') { + app.init(); +} else { + document.addEventListener('DOMContentLoaded', app.init); +} diff --git a/assets/.htaccess b/assets/.htaccess new file mode 100644 index 0000000000..733ba0edb0 --- /dev/null +++ b/assets/.htaccess @@ -0,0 +1,4 @@ +AddType text/vtt .vtt +AddCharset utf-8 .vtt +Header set Access-Control-Allow-Origin "*" +Header set Access-Control-Allow-Headers "Range" diff --git a/assets/angel_one.mpd b/assets/angel_one.mpd new file mode 100644 index 0000000000..c85bf0c10b --- /dev/null +++ b/assets/angel_one.mpd @@ -0,0 +1,92 @@ + + + http://shaka-player-demo.appspot.com/assets/angel_one/ + + + + a-en.webm + + + + + + + + a-de.webm + + + + + + + + a-es.webm + + + + + + + + a-fr.webm + + + + + + + + a-it.webm + + + + + + + + v-768x576-1M.webm + + + + + + v-768x576-500k.webm + + + + + + v-576x432-250k.webm + + + + + + v-432x324-125k.webm + + + + + + + + subs/s-en.vtt + + + + + subs/s-fr.vtt + + + + + subs/s-pt-BR.vtt + + + + + subs/s-el.vtt + + + + diff --git a/assets/angel_one.sidx b/assets/angel_one.sidx new file mode 100644 index 0000000000000000000000000000000000000000..4d6988e1b68f308831abdb59638572ef86c69ef9 GIT binary patch literal 272 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

rQBVXuuXtYhpNNc6I<2-WTq;UNVW##0GMYI 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 E07z|l&;S4c literal 0 HcmV?d00001 diff --git a/assets/car-20120827-manifest.mpd b/assets/car-20120827-manifest.mpd new file mode 100644 index 0000000000..27278f8e4e --- /dev/null +++ b/assets/car-20120827-manifest.mpd @@ -0,0 +1,65 @@ + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-89.mp4 + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-88.mp4 + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-87.mp4 + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-86.mp4 + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-85.mp4 + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-160.mp4 + + + + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-8c.mp4 + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-8d.mp4 + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-8b.mp4 + + + + + + + diff --git a/assets/car_cenc-20120827-manifest.mpd b/assets/car_cenc-20120827-manifest.mpd new file mode 100644 index 0000000000..57fedb9977 --- /dev/null +++ b/assets/car_cenc-20120827-manifest.mpd @@ -0,0 +1,66 @@ + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car_cenc-20120827-manifest.mpd + + + + + + + + car_cenc-20120827-89.mp4 + + + + + + car_cenc-20120827-88.mp4 + + + + + + car_cenc-20120827-87.mp4 + + + + + + car_cenc-20120827-86.mp4 + + + + + + car_cenc-20120827-85.mp4 + + + + + + + + + + + + car_cenc-20120827-8c.mp4 + + + + + + car_cenc-20120827-8d.mp4 + + + + + + car_cenc-20120827-8b.mp4 + + + + + + + diff --git a/assets/feelings_audio_only-20130806-manifest.mpd b/assets/feelings_audio_only-20130806-manifest.mpd new file mode 100644 index 0000000000..8c52da87c1 --- /dev/null +++ b/assets/feelings_audio_only-20130806-manifest.mpd @@ -0,0 +1,21 @@ + + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-171.webm + + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-172.webm + + + + + + + diff --git a/assets/feelings_vp9-20130806-171.webm.cues b/assets/feelings_vp9-20130806-171.webm.cues new file mode 100644 index 0000000000000000000000000000000000000000..52e50e534782f764b1893a55b8d78b98517ff5d2 GIT binary patch literal 235 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 Nt(x@MRP>gb_HRBNSo#0} literal 0 HcmV?d00001 diff --git a/assets/feelings_vp9-20130806-manifest.mpd b/assets/feelings_vp9-20130806-manifest.mpd new file mode 100644 index 0000000000..97cd59d39b --- /dev/null +++ b/assets/feelings_vp9-20130806-manifest.mpd @@ -0,0 +1,59 @@ + + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-171.webm + + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-172.webm + + + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-242.webm + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-243.webm + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-244.webm + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-245.webm + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-246.webm + + + + + + http://yt-dash-mse-test.commondatastorage.googleapis.com/media/feelings_vp9-20130806-247.webm + + + + + + + diff --git a/assets/generate_jwkset.py b/assets/generate_jwkset.py new file mode 100755 index 0000000000..638ef60dcc --- /dev/null +++ b/assets/generate_jwkset.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import base64 +import binascii +import sys + +#TEST_KEY_ID = "0123456789012345" +#TEST_KEY = "ebdd62f16814d27b68ef122afce4ae3c" + +key_id = base64.b64encode(sys.argv[1]).rstrip("=") +key = base64.b64encode(binascii.unhexlify(sys.argv[2])).rstrip("=") + +jwk = '{"kty":"oct","kid":"%s","k":"%s"}' % (key_id, key) +jwk_set = '{"keys":[%s]}' % jwk +sys.stdout.write(jwk_set) diff --git a/assets/poster.jpg b/assets/poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..611fabf76ecb9f04b718cf32e42172b5e04268f5 GIT binary patch literal 15030 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 00:00:02.000 D:vertical A:start +The Web is always changing diff --git a/build/all.sh b/build/all.sh new file mode 100755 index 0000000000..4faaa5344f --- /dev/null +++ b/build/all.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dir=$(dirname $0)/.. + +set -e + +"$dir"/build/gendeps.sh +"$dir"/build/build.sh +"$dir"/build/lint.sh diff --git a/build/audit_todo.sh b/build/audit_todo.sh new file mode 100755 index 0000000000..a924414d5b --- /dev/null +++ b/build/audit_todo.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dir=$(dirname $0)/.. + +set -e + +cd "$dir" + +# Find TODO and FIXME comments that are not annotated with a story ID. +grep --color=auto -Pr '(TODO|FIXME)(?!.*story)' \ + lib/ \ + app.js \ + load.js \ + index.* \ + spec/ \ + spec_runner.html \ + support.html + diff --git a/build/build.sh b/build/build.sh new file mode 100755 index 0000000000..8f0ef0be22 --- /dev/null +++ b/build/build.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dir=$(dirname $0)/.. +. "$dir"/build/lib.sh + +set -e + +# This was the old name. +rm -f "$dir"/lib.js{,.map} + +# These are the new names. +rm -f "$dir"/shaka-player.compiled.debug.{js,map} +rm -f "$dir"/shaka-player.compiled.js + +# Compile once with app.js so that it gets checked. Don't keep the output. +(library_sources_0; closure_sources_0) | compile_0 \ + --summary_detail_level 3 "$dir"/app.js > /dev/null +# NOTE: --js_output_file /dev/null results in a non-zero return value and +# stops execution of this script. + +# Compile without app.js and output the minified library only. +(library_sources_0; closure_sources_0) | compile_0 \ + --create_source_map "$dir"/shaka-player.compiled.debug.map \ + --js_output_file "$dir"/shaka-player.compiled.debug.js + +# Fork the non-debug version before appending debug info. +cp "$dir"/shaka-player.compiled{.debug,}.js + +# Add a special source-mapping comment so that Chrome and Firefox can map line +# and character numbers from the compiled library back to the original source +# locations. +echo "//# sourceMappingURL=shaka-player.compiled.debug.map" >> \ + "$dir"/shaka-player.compiled.debug.js + diff --git a/build/check.sh b/build/check.sh new file mode 100755 index 0000000000..a8d9278406 --- /dev/null +++ b/build/check.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dir=$(dirname $0)/.. + +set -e + +"$dir"/build/build.sh +"$dir"/build/lint.sh + +echo "Compiled binary is $(cat "$dir"/shaka-player.compiled.js | wc -c) bytes." diff --git a/build/docs.sh b/build/docs.sh new file mode 100755 index 0000000000..4dd29da2bb --- /dev/null +++ b/build/docs.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dir=$(dirname $0)/.. +. "$dir"/build/lib.sh + +set -e + +cd "$dir" +rm -rf docs/api +./third_party/jsdoc/jsdoc -c jsdoc.conf.json -R docs/mainpage.md diff --git a/build/gendeps.sh b/build/gendeps.sh new file mode 100755 index 0000000000..c58fde587d --- /dev/null +++ b/build/gendeps.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dir=$(dirname $0)/.. + +set -e + +cd "$dir" +python third_party/closure/deps/depswriter.py \ + --root_with_prefix="lib ../../../lib" \ + --root_with_prefix="third_party/closure ../../../third_party/closure" \ + > third_party/closure/goog/deps.js diff --git a/build/lib.sh b/build/lib.sh new file mode 100644 index 0000000000..4eac7acdce --- /dev/null +++ b/build/lib.sh @@ -0,0 +1,88 @@ +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dir=$(dirname $0)/.. + +closure_opts=" + --language_in ECMASCRIPT5 + --language_out ECMASCRIPT5 + + --jscomp_error=accessControls + --jscomp_error=ambiguousFunctionDecl + --jscomp_error=checkDebuggerStatement + --jscomp_error=checkRegExp + --jscomp_error=checkTypes + --jscomp_error=checkVars + --jscomp_error=const + --jscomp_error=constantProperty + --jscomp_error=deprecated + --jscomp_error=duplicate + --jscomp_error=es5Strict + --jscomp_error=externsValidation + --jscomp_error=fileoverviewTags + --jscomp_error=globalThis + --jscomp_error=internetExplorerChecks + --jscomp_error=invalidCasts + --jscomp_error=missingProperties + --jscomp_error=nonStandardJsDocs + --jscomp_error=strictModuleDepCheck + --jscomp_error=suspiciousCode + --jscomp_error=undefinedNames + --jscomp_error=undefinedVars + --jscomp_error=unknownDefines + --jscomp_error=uselessCode + --jscomp_error=visibility + + --extra_annotation_name=listens + + -O ADVANCED + --generate_exports + --output_wrapper='(function(){%output%}.bind(window))()' + + -D COMPILED=true + -D goog.DEBUG=false + -D goog.STRICT_MODE_COMPATIBLE=true + -D goog.ENABLE_DEBUG_LOADER=false + -D shaka.asserts.ENABLE_ASSERTS=false + -D shaka.log.MAX_LOG_LEVEL=0 +" + +set -e + +function library_sources_0() { + find \ + "$dir"/lib \ + "$dir"/externs \ + -name '*.js' -print0 +} + +function closure_sources_0() { + find \ + "$dir"/third_party/closure \ + -name '*.js' -print0 +} + +function compile_0() { + xargs -0 java -jar "$dir"/third_party/closure/compiler.jar $closure_opts "$@" +} + +function lint_0() { + # Allow JSDoc3 tags not normally recognized by the linter, but be strict + # otherwise. + jsdoc3_tags=static,summary,namespace,event,description,property,fires,listens + xargs -0 "$dir"/third_party/gjslint/gjslint \ + --custom_jsdoc_tags $jsdoc3_tags \ + --strict "$@" 1>&2 +} + diff --git a/build/lint.sh b/build/lint.sh new file mode 100755 index 0000000000..14e6e01d05 --- /dev/null +++ b/build/lint.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dir=$(dirname $0)/.. +. "$dir"/build/lib.sh + +set -e + +library_sources_0 | lint_0 "$dir"/app.js diff --git a/docs/mainpage.md b/docs/mainpage.md new file mode 100644 index 0000000000..54bbfcf385 --- /dev/null +++ b/docs/mainpage.md @@ -0,0 +1,28 @@ +## Welcome to the Shaka Player documentation! + +The Shaka Player library is meant be compiled before deployment. The compiled +library will only have some symbols exported. Others will be inaccessible from +the compiled bundle. + +Because of this, these API docs can be filtered to show you what is and isn't +accessible. The combo box in the top-right corner of the page lets you select +different views of the library. You can choose the "exported", "public", or +"everything" view. + +"Exported" means everything which is available outside the compiled library. +In all modes, exported symbols are shown in red. + +"Public" means everything which is public in the sources. This is used in the +sense of [public/protected/private](http://goo.gl/jg5iKD) in object-oriented +programming languages. + +"Everything" shows all symbols, even private ones. + +Whatever view you choose will be stored by the browser across page loads and +sessions, so you should not have to keep setting it as you browse the docs. + + +## What Next? + +If you're not sure where to go next, try the Tutorials on the right. Enjoy! + diff --git a/docs/reference.html b/docs/reference.html new file mode 100644 index 0000000000..8e45bdcea9 --- /dev/null +++ b/docs/reference.html @@ -0,0 +1,38 @@ + + + + + External reference docs + + +

+ These documents are copyrighted by their respective authors. + Links are provided for convenience. +

+ + + diff --git a/externs/fullscreen.js b/externs/fullscreen.js new file mode 100644 index 0000000000..f0a30b2c50 --- /dev/null +++ b/externs/fullscreen.js @@ -0,0 +1,21 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Externs for prefixed fullscreen methods. + * @externs + */ + + +HTMLMediaElement.prototype.mozRequestFullscreen = function() {}; diff --git a/externs/htmltrackelement.js b/externs/htmltrackelement.js new file mode 100644 index 0000000000..5c73c24d84 --- /dev/null +++ b/externs/htmltrackelement.js @@ -0,0 +1,50 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview HTMLTrackElement externs. + * @externs + */ + + + +/** + * @constructor + * @extends {HTMLElement} + */ +function HTMLTrackElement() {} + + +/** @type {string} */ +HTMLTrackElement.prototype.kind; + + +/** @type {string} */ +HTMLTrackElement.prototype.src; + + +/** @type {string} */ +HTMLTrackElement.prototype.srclang; + + +/** @type {string} */ +HTMLTrackElement.prototype.label; + + +/** @type {boolean} */ +HTMLTrackElement.prototype.default; + + +/** @const {TextTrack} */ +HTMLTrackElement.prototype.track; diff --git a/externs/jwk_set.js b/externs/jwk_set.js new file mode 100644 index 0000000000..df0fd5244f --- /dev/null +++ b/externs/jwk_set.js @@ -0,0 +1,53 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Externs for JWK set. + * @externs + */ + + + +/** + * A JSON Web Key set. + * + * @constructor + * @struct + */ +function JWKSet() { + /** @type {Array.} */ + this.keys = []; +} + + + +/** + * A JSON Web Key. + * + * @constructor + * @struct + */ +function JWK() { + /** + * A key in hex. + * @type {string} + */ + this.k = ''; + + /** + * A key ID in hex. + * @type {string} + */ + this.kid = ''; +} diff --git a/externs/mediakeys.js b/externs/mediakeys.js new file mode 100644 index 0000000000..120f05b260 --- /dev/null +++ b/externs/mediakeys.js @@ -0,0 +1,237 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview MediaKey externs. + * Based on the Dec 1, 2014 draft of the EME spec. + * @externs + */ + + +/** @typedef {ArrayBufferView|ArrayBuffer} */ +var BufferSource; + + +/** @typedef {!Object.} */ +var MediaKeyStatuses; + + +/** + * @param {string} keySystem + * @param {Array.=} opt_supportedConfigurations + * @return {!Promise.} + */ +Navigator.prototype.requestMediaKeySystemAccess = + function(keySystem, opt_supportedConfigurations) {}; + + +/** + * @type {MediaKeys} + * @const + */ +HTMLMediaElement.prototype.mediaKeys; + + +/** + * NOTE: Not yet implemented as of Chrome 40. Type may be incorrect. + * @type {string} + * @const + */ +HTMLMediaElement.prototype.waitingFor; + + +/** + * @param {MediaKeys} mediaKeys + * @return {!Promise} + */ +HTMLMediaElement.prototype.setMediaKeys = function(mediaKeys) {}; + + + +/** @interface */ +function MediaKeySystemAccess() {} + + +/** @return {!Promise.} */ +MediaKeySystemAccess.prototype.createMediaKeys = function() {}; + + +/** + * NOTE: Not yet implemented as of Chrome 40. Type may be incorrect. + * @return {Object} + */ +MediaKeySystemAccess.prototype.getConfiguration = function() {}; + + +/** @type {string} */ +MediaKeySystemAccess.prototype.keySystem; + + + +/** @interface */ +function MediaKeys() {} + + +/** + * @param {string=} opt_sessionType + * @return {!MediaKeySession} + * @throws {TypeError} if opt_sessionType is invalid. + */ +MediaKeys.prototype.createSession = function(opt_sessionType) {}; + + +/** + * @param {BufferSource} serverCertificate + * @return {!Promise} + */ +MediaKeys.prototype.setServerCertificate = function(serverCertificate) {}; + + + +/** + * @interface + * @extends {EventTarget} + */ +function MediaKeySession() {} + + +/** + * @type {string} + * @const + */ +MediaKeySession.prototype.sessionId; + + +/** + * @type {number} + * @const + */ +MediaKeySession.prototype.expiration; + + +/** + * @type {!Promise} + * @const + */ +MediaKeySession.prototype.closed; + + +/** + * NOTE: Not yet implemented as of Chrome 40. Type may be incorrect. + * @type {!MediaKeyStatuses} + * @const + */ +MediaKeySession.prototype.keyStatuses; + + +/** + * @param {string} initDataType + * @param {BufferSource} initData + * @return {!Promise} + */ +MediaKeySession.prototype.generateRequest = function(initDataType, initData) {}; + + +/** + * @param {string} sessionId + * @return {!Promise.}} + */ +MediaKeySession.prototype.load = function(sessionId) {}; + + +/** + * @param {BufferSource} response + * @return {!Promise} + */ +MediaKeySession.prototype.update = function(response) {}; + + +/** + * @return {!Promise} + */ +MediaKeySession.prototype.close = function() {}; + + +/** @return {!Promise} */ +MediaKeySession.prototype.remove = function() {}; + + +/** @override */ +MediaKeySession.prototype.addEventListener = + function(type, listener, useCapture) {}; + + +/** @override */ +MediaKeySession.prototype.removeEventListener = + function(type, listener, useCapture) {}; + + +/** @override */ +MediaKeySession.prototype.dispatchEvent = function(evt) {}; + + + +/** + * @constructor + * @param {string} type + * @param {Object=} opt_eventInitDict + * @extends {Event} + */ +function MediaKeyMessageEvent(type, opt_eventInitDict) {} + + +/** + * @type {string} + * @const + */ +MediaKeyMessageEvent.prototype.messageType; + + +/** + * @type {!ArrayBuffer} + * @const + */ +MediaKeyMessageEvent.prototype.message; + + +/** + * @type {!MediaKeySession} + * @const + */ +MediaKeyMessageEvent.prototype.target; + + + +/** + * @constructor + * @param {string} type + * @param {Object=} opt_eventInitDict + * @extends {Event} + */ +function MediaEncryptedEvent(type, opt_eventInitDict) {} + + +/** + * @type {string} + * @const + */ +MediaEncryptedEvent.prototype.initDataType; + + +/** + * @type {ArrayBuffer} + * @const + */ +MediaEncryptedEvent.prototype.initData; + diff --git a/externs/prefixed_eme.js b/externs/prefixed_eme.js new file mode 100644 index 0000000000..261631e0c3 --- /dev/null +++ b/externs/prefixed_eme.js @@ -0,0 +1,133 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Externs for prefixed EME v0.1b. + * @externs + */ + + +/** + * @param {string} keySystem + * @param {Uint8Array} key + * @param {Uint8Array} keyId + * @param {string} sessionId + */ +HTMLMediaElement.prototype.webkitAddKey = + function(keySystem, key, keyId, sessionId) {}; + + +/** + * @param {string} keySystem + * @param {string} sessionId + */ +HTMLMediaElement.prototype.webkitCancelKeyRequest = + function(keySystem, sessionId) {}; + + +/** + * @param {string} keySystem + * @param {!Uint8Array} initData + */ +HTMLMediaElement.prototype.webkitGenerateKeyRequest = + function(keySystem, initData) {}; + + +/** + * @param {string} mimeType + * @param {string=} opt_keySystem + * @return {string} '', 'maybe', or 'probably' + */ +HTMLVideoElement.prototype.canPlayType = + function(mimeType, opt_keySystem) {}; + + + +/** + * @constructor + * @param {string} type + * @param {Object=} opt_eventInitDict + * @extends {Event} + */ +function MediaKeyEvent(type, opt_eventInitDict) {} + + +/** + * @type {string} + * @const + */ +MediaKeyEvent.prototype.keySystem; + + +/** + * @type {string} + * @const + */ +MediaKeyEvent.prototype.sessionId; + + +/** + * @type {Uint8Array} + * @const + */ +MediaKeyEvent.prototype.initData; + + +/** + * @type {Uint8Array} + * @const + */ +MediaKeyEvent.prototype.message; + + +/** + * @type {string} + * @const + */ +MediaKeyEvent.prototype.defaultURL; + + +/** + * @type {MediaKeyError} + * @const + */ +MediaKeyEvent.prototype.errorCode; + + +/** + * @type {number} + * @const + */ +MediaKeyEvent.prototype.systemCode; + + +/** + * @type {!HTMLMediaElement} + * @const + */ +MediaKeyEvent.prototype.target; + + + +/** @constructor */ +function MediaKeyError() {} + + +/** @type {number} */ +MediaKeyError.prototype.code; + + +/** @type {number} */ +MediaKeyError.prototype.systemCode; + diff --git a/externs/promise.js b/externs/promise.js new file mode 100644 index 0000000000..f882d45caf --- /dev/null +++ b/externs/promise.js @@ -0,0 +1,26 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Promise externs missing from closure. + * @externs + */ + + +/** + * @param {function(!Error)} fn + * @return {!Promise} + */ +Promise.prototype.catch = function(fn) {}; + diff --git a/externs/videoplaybackquality.js b/externs/videoplaybackquality.js new file mode 100644 index 0000000000..d6df912dfa --- /dev/null +++ b/externs/videoplaybackquality.js @@ -0,0 +1,50 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Externs for VideoPlaybackQuality. + * @externs + */ + + + +/** + * @constructor + */ +function VideoPlaybackQuality() {} + + +/** @type {number} */ +VideoPlaybackQuality.prototype.creationTime; + + +/** @type {number} */ +VideoPlaybackQuality.prototype.corruptedVideoFrames; + + +/** @type {number} */ +VideoPlaybackQuality.prototype.droppedVideoFrames; + + +/** @type {number} */ +VideoPlaybackQuality.prototype.totalFrameDelay; + + +/** @type {number} */ +VideoPlaybackQuality.prototype.totalVideoFrames; + + +/** @return {VideoPlaybackQuality} */ +HTMLVideoElement.prototype.getVideoPlaybackQuality = function() {}; + diff --git a/index.css b/index.css new file mode 100644 index 0000000000..49c234c3c3 --- /dev/null +++ b/index.css @@ -0,0 +1,43 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +table { + border: 3px solid navy; + border-collapse: collapse; +} + +td { + padding: 2px; +} + +td.heading { + font-weight: bold; + text-decoration: underline; + font-size: 120%; +} + +tr { + padding: 2px; +} + +#preferredLanguage { + width: 50px; +} + +.http { + display: none; +} + diff --git a/index.html b/index.html new file mode 100644 index 0000000000..036d955252 --- /dev/null +++ b/index.html @@ -0,0 +1,158 @@ + + + + + + Shaka Player Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Stream Setup
Force prefixed EME?
Stream type: + +
Media URL:
Key system: + +
License server URL:
Subtitles URL:
Preferred language:
Test manifest: + +
Custom manifest URL: + +
+ Custom WV license server URL: + [?] + + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Stream info
Available video tracks: + Enable adaptation? + +
Available audio tracks:
Available text tracks: + Enable subs? + +
Active resolution: + +
+ +
+ +
+ +
+ + diff --git a/jsdoc.conf.json b/jsdoc.conf.json new file mode 100644 index 0000000000..b089eec37f --- /dev/null +++ b/jsdoc.conf.json @@ -0,0 +1,16 @@ +{ + "tags": { + /* This reverses the preferred order of tag dictionaries so that + * closure's version of tag interpretation is used over jsdoc's. */ + "dictionaries": [ "closure", "jsdoc" ] + }, + "source": { + "include": [ "lib" ] + }, + "opts": { + "private": true, + "recurse": true, + "tutorials": "tutorials", + "destination": "docs/api" + } +} diff --git a/lib/dash/abr_manager.js b/lib/dash/abr_manager.js new file mode 100644 index 0000000000..7b5e2c4203 --- /dev/null +++ b/lib/dash/abr_manager.js @@ -0,0 +1,265 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a manager for adaptive bitrate streaming. + */ + +goog.provide('shaka.dash.AbrManager'); + +goog.require('shaka.log'); +goog.require('shaka.player.AudioTrack'); +goog.require('shaka.player.IVideoSource'); +goog.require('shaka.player.VideoTrack'); +goog.require('shaka.util.EventManager'); +goog.require('shaka.util.IBandwidthEstimator'); + + + +/** + * Creates an AbrManager. AbrManager listens for bandwidth events and makes + * decisions about which stream should be used at any given time. It can be + * queried for the initial stream to use when starting playback, and it will + * make active stream changes during playback (if enabled). + * + * @param {!shaka.util.IBandwidthEstimator} estimator + * @param {!shaka.player.IVideoSource} videoSource + * + * @listens shaka.util.IBandwidthEstimator.BandwidthEvent + * + * @struct + * @constructor + */ +shaka.dash.AbrManager = function(estimator, videoSource) { + /** @private {!shaka.util.IBandwidthEstimator} */ + this.estimator_ = estimator; + + /** @private {!shaka.player.IVideoSource} */ + this.videoSource_ = videoSource; + + /** @private {!shaka.util.EventManager} */ + this.eventManager_ = new shaka.util.EventManager(); + + /** + * The timestamp after which we are allowed to adapt, in seconds. + * @private {number} + */ + this.nextAdaptationTime_ = (Date.now() / 1000) + + shaka.dash.AbrManager.FIRST_SWITCH_INTERVAL_; + + /** @private {boolean} */ + this.enabled_ = true; + + this.eventManager_.listen(this.estimator_, 'bandwidth', + this.onBandwidth_.bind(this)); +}; + + +/** + * The minimum amount of time that must pass before the first switch, in + * seconds. This gives the bandwidth estimator time to get some real data + * before changing anything. + * + * @private + * @const {number} + */ +shaka.dash.AbrManager.FIRST_SWITCH_INTERVAL_ = 4.0; + + +/** + * The minimum amount of time that must pass between switches, in seconds. + * This keeps us from changing too often and annoying the user. + * + * @private + * @const {number} + */ +shaka.dash.AbrManager.MIN_SWITCH_INTERVAL_ = 8.0; + + +/** + * The minimum amount of time that must pass between bandwidth evaluations, in + * seconds. This keeps us from checking for adaptation opportunities too often. + * + * @private + * @const {number} + */ +shaka.dash.AbrManager.MIN_EVAL_INTERVAL_ = 3.0; + + +/** + * The fraction of the estimated bandwidth which we should try to use when + * upgrading. + * + * @private + * @const {number} + */ +shaka.dash.AbrManager.BANDWIDTH_UPGRADE_TARGET_ = 0.85; + + +/** + * The fraction of the estimated bandwidth we should downgrade to avoid + * exceeding. + * + * @private + * @const {number} + */ +shaka.dash.AbrManager.BANDWIDTH_DOWNGRADE_TARGET_ = 0.95; + + +/** + * Destroy the AbrManager. + * + * @suppress {checkTypes} to set otherwise non-nullable types to null. + */ +shaka.dash.AbrManager.prototype.destroy = function() { + this.eventManager_.destroy(); + + this.eventManager_ = null; + this.estimator_ = null; + this.videoSource_ = null; +}; + + +/** + * Enable or disable the AbrManager. It is enabled by default when created. + * + * @param {boolean} enabled + */ +shaka.dash.AbrManager.prototype.enable = function(enabled) { + this.enabled_ = enabled; +}; + + +/** + * Decide on an initial video track to use. Called before playback begins. + * + * @return {?number} The chosen video track ID or null if there are no video + * tracks to choose. + */ +shaka.dash.AbrManager.prototype.getInitialVideoTrackId = function() { + var chosen = this.chooseVideoTrack_(); + return chosen ? chosen.id : null; +}; + + +/** + * Find the active track in the list. + * + * @param {!Array.} trackList + * @return {T} + * + * @template T + * @private + */ +shaka.dash.AbrManager.findActiveTrack_ = function(trackList) { + for (var i = 0; i < trackList.length; ++i) { + if (trackList[i].active) { + return trackList[i]; + } + } + + return null; +}; + + +/** + * Handles bandwidth update events and makes adaptation decisions. + * + * @param {!Event} event + * @private + */ +shaka.dash.AbrManager.prototype.onBandwidth_ = function(event) { + if (!this.enabled_) { + return; + } + + // Alias. + var AbrManager = shaka.dash.AbrManager; + + var now = Date.now() / 1000.0; + if (now < this.nextAdaptationTime_) { + return; + } + + var chosen = this.chooseVideoTrack_(); + + if (chosen) { + if (chosen.active) { + // We are already using the correct video track. + this.nextAdaptationTime_ = now + AbrManager.MIN_EVAL_INTERVAL_; + return; + } + + shaka.log.info('Video adaptation:', chosen); + this.videoSource_.selectVideoTrack(chosen.id, false); + } + + this.nextAdaptationTime_ = now + AbrManager.MIN_SWITCH_INTERVAL_; +}; + + +/** + * Choose a video track based on current bandwidth conditions. + * + * @return {shaka.player.VideoTrack} The chosen video track or null if there + * are no video tracks to choose. + * @private + */ +shaka.dash.AbrManager.prototype.chooseVideoTrack_ = function() { + // Alias. + var AbrManager = shaka.dash.AbrManager; + + var videoTracks = this.videoSource_.getVideoTracks(); + if (videoTracks.length == 0) { + return null; + } + + videoTracks.sort(shaka.player.VideoTrack.compare); + + var activeAudioTrack = + AbrManager.findActiveTrack_(this.videoSource_.getAudioTracks()); + var audioBandwidth = activeAudioTrack ? activeAudioTrack.bandwidth : 0; + + var bandwidth = this.estimator_.getBandwidth(); + + // Start by assuming that we will use the first track. + var chosen = videoTracks[0]; + + for (var i = 0; i < videoTracks.length; ++i) { + var track = videoTracks[i]; + var nextTrack = (i + 1 < videoTracks.length) ? + videoTracks[i + 1] : + { bandwidth: Number.POSITIVE_INFINITY }; + + // Ignore any track which is missing bandwidth info. + if (!track.bandwidth) continue; + + var minBandwidth = (track.bandwidth + audioBandwidth) / + AbrManager.BANDWIDTH_DOWNGRADE_TARGET_; + var maxBandwidth = (nextTrack.bandwidth + audioBandwidth) / + AbrManager.BANDWIDTH_UPGRADE_TARGET_; + shaka.log.v2('Bandwidth ranges:', + ((track.bandwidth + audioBandwidth) / 1e6).toFixed(3), + (minBandwidth / 1e6).toFixed(3), + (maxBandwidth / 1e6).toFixed(3)); + + if (bandwidth >= minBandwidth && bandwidth <= maxBandwidth) { + chosen = track; + if (chosen.active) break; + } + } + + return chosen; +}; + diff --git a/lib/dash/dash_stream.js b/lib/dash/dash_stream.js new file mode 100644 index 0000000000..d153c6775b --- /dev/null +++ b/lib/dash/dash_stream.js @@ -0,0 +1,789 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a DASH stream. + */ + +goog.provide('shaka.dash.DashStream'); + +goog.require('shaka.asserts'); +goog.require('shaka.dash.IDashStream'); +goog.require('shaka.dash.ISegmentIndexParser'); +goog.require('shaka.dash.IsobmffSegmentIndexParser'); +goog.require('shaka.dash.SegmentIndex'); +goog.require('shaka.dash.SourceBufferManager'); +goog.require('shaka.dash.WebmSegmentIndexParser'); +goog.require('shaka.dash.mpd'); +goog.require('shaka.log'); +goog.require('shaka.timer'); +goog.require('shaka.util.FakeEvent'); +goog.require('shaka.util.FakeEventTarget'); +goog.require('shaka.util.IBandwidthEstimator'); +goog.require('shaka.util.RangeRequest'); +goog.require('shaka.util.TypedBind'); + + +/** + * @event shaka.dash.DashStream.AdaptationEvent + * @description Fired when video or audio tracks change. + * Bubbles up through the Player. + * @property {string} type 'adaptation' + * @property {boolean} bubbles true + * @property {string} contentType 'video' or 'audio' + * @property {?{width: number, height: number}} size The resolution chosen, if + * the stream is a video stream. + * @property {number} bandwidth The stream's bandwidth requirement in bits per + * second. + * @export + */ +/** + * @event shaka.dash.DashStream.EndedEvent + * @description Fired when the stream ends. + * @property {string} type 'ended' + * @property {boolean} bubbles false + */ + + + +/** + * Creates a DashStream. A DashStream is an active representation. + * @param {!shaka.util.FakeEventTarget} parent The parent for event bubbling. + * @param {!HTMLVideoElement} video The video element. + * @param {!MediaSource} mediaSource The SourceBuffer's MediaSource parent. + * @param {!SourceBuffer} sourceBuffer The SourceBuffer. It's assumed that + * |sourceBuffer| has the same mime type as |representation|. + * @param {shaka.util.IBandwidthEstimator} estimator A bandwidth estimator to + * attach to all DASH data requests. + * + * @fires shaka.dash.DashStream.AdaptationEvent + * @fires shaka.dash.DashStream.EndedEvent + * @fires shaka.player.Player.ErrorEvent + * + * @struct + * @constructor + * @implements {shaka.dash.IDashStream} + * @extends {shaka.util.FakeEventTarget} + */ +shaka.dash.DashStream = + function(parent, video, mediaSource, sourceBuffer, estimator) { + shaka.util.FakeEventTarget.call(this, parent); + + /** @private {!HTMLVideoElement} */ + this.video_ = video; + + /** @private {!SourceBuffer} */ + this.sourceBuffer_ = sourceBuffer; + + /** @private {!shaka.dash.SourceBufferManager} */ + this.sbm_ = + new shaka.dash.SourceBufferManager(mediaSource, sourceBuffer, estimator); + + /** @private {shaka.util.IBandwidthEstimator} */ + this.estimator_ = estimator; + + /** @private {shaka.dash.mpd.Representation} */ + this.representation_ = null; + + /** @private {shaka.dash.SegmentIndex} */ + this.segmentIndex_ = null; + + /** @private {?function()} */ + this.nextSwitch_ = null; + + /** @private {?number} */ + this.updateTimerId_ = null; + + /** @private {shaka.dash.DashStream.State_} */ + this.state_ = shaka.dash.DashStream.State_.IDLE; + + /** @private {string} */ + this.type_ = ''; +}; +goog.inherits(shaka.dash.DashStream, shaka.util.FakeEventTarget); + + +/** + * @enum + * @private + */ +shaka.dash.DashStream.State_ = { + // The stream has not started yet. + IDLE: 0, + + // The stream is starting. + INITIALIZING: 1, + + // The stream is fetching metadata for the new representation and is still + // updating using the old representation. + SWITCHING: 2, + + // The stream has stopped updating using the old representation and is + // splicing in segments into the source buffer from the new representation. + SPLICING: 3, + + // The stream is updating by periodically appending segments into the + // source buffer. + UPDATING: 4, + + // The stream has ended. + ENDED: 5 +}; + + +/** + * The number of seconds of data we try to keep in buffer after initiating + * playback. Mpd.minBufferTime, if greater, will override this. + * + * @private {number} + * @const + */ +shaka.dash.DashStream.BUFFER_SIZE_SECONDS_ = 15.0; + + +/** + * The number of seconds of old data we keep in buffer when switching + * representations to avoid buffering during the switch operation. + * Mpd.minBufferTime, if greater, will override this. + * + * @private {number} + * @const + */ +shaka.dash.DashStream.SWITCH_BUFFER_SIZE_SECONDS_ = 5.0; + + +/** + * The duration of a single frame at 20 FPS. We use this value to force the + * video element to start showing new content after an immediate switch. + * + * @private + * @const {number} + */ +shaka.dash.DashStream.SINGLE_FRAME_SECONDS_ = 0.05; + + +/** + * @override + * @suppress {checkTypes} to set otherwise non-nullable types to null. + */ +shaka.dash.DashStream.prototype.destroy = function() { + this.state_ = null; + + this.cancelUpdateTimer_(); + + this.nextSwitch_ = null; + this.segmentIndex_ = null; + this.representation_ = null; + this.estimator_ = null; + + this.sbm_.destroy(); + this.sbm_ = null; + + this.sourceBuffer_ = null; + this.video_ = null; + + this.parent = null; +}; + + +/** @override */ +shaka.dash.DashStream.prototype.getRepresentation = function() { + return this.representation_; +}; + + +/** @override */ +shaka.dash.DashStream.prototype.hasEnded = function() { + return this.state_ == shaka.dash.DashStream.State_.ENDED; +}; + + +/** @override */ +shaka.dash.DashStream.prototype.start = function(representation) { + if (!this.validateRepresentation_(representation)) { + return; + } + + shaka.asserts.assert(this.state_ == shaka.dash.DashStream.State_.IDLE); + if (this.state_ != shaka.dash.DashStream.State_.IDLE) { + shaka.log.error('Cannot start stream: stream has already been started.'); + return; + } + + shaka.log.info('Starting stream for', representation); + + this.representation_ = representation; + this.type_ = representation.mimeType.split('/')[0]; + this.segmentIndex_ = null; + this.state_ = shaka.dash.DashStream.State_.INITIALIZING; + + // Request all segment metadata in parallel. + var async = this.requestAllSegmentMetadata_(representation); + + Promise.all(async).then(shaka.util.TypedBind(this, + /** @param {!Array} results */ + function(results) { + var segmentIndexData = results[0]; + var initSegmentData = results[1]; + + // Create/get SegmentIndex. + if (representation.segmentBase) { + shaka.asserts.assert(segmentIndexData); + this.segmentIndex_ = this.createSegmentIndex_( + representation, segmentIndexData, initSegmentData); + if (!this.segmentIndex_) { + var error = new Error('Failed to create SegmentIndex.'); + error.type = 'dash'; + return Promise.reject(error); + } + } else { + this.segmentIndex_ = /** @type {shaka.dash.SegmentIndex} */ ( + representation.segmentList.userData); + shaka.asserts.assert(this.segmentIndex_); + } + + // Set the SourceBuffer's timestamp offset to handle non-zero earliest + // presentation times. + var firstReference = this.segmentIndex_.getReference(0); + if (firstReference && firstReference.startTime >= 1.0) { + // If the start time is less than one then assume any offset is + // because the segment index uses DTS (decoding timestamps). + this.sourceBuffer_.timestampOffset = -firstReference.startTime; + shaka.log.v1('timestampOffset', -firstReference.startTime); + } + + var initialBufferTime = representation.minBufferTime; + var segmentRange = this.segmentIndex_.getRangeForInterval( + this.getCurrentTime_(), initialBufferTime); + if (!segmentRange) { + return Promise.reject(new Error('No segments available.')); + } + shaka.log.v1('Fetching segment range', this.type_, + segmentRange.references); + return this.sbm_.fetch(segmentRange, initSegmentData); + }) + ).then(shaka.util.TypedBind(this, + function() { + this.fireAdaptationEvent_(representation); + this.switchRepresentationOrUpdate_(); + }) + ).catch(shaka.util.TypedBind(this, + /** @param {!Error} error */ + function(error) { + if (error.type != 'aborted') { + this.state_ = shaka.dash.DashStream.State_.IDLE; + var event = shaka.util.FakeEvent.createErrorEvent(error); + this.dispatchEvent(event); + } + }) + ); +}; + + +/** @override */ +shaka.dash.DashStream.prototype.switch = function(representation, immediate) { + shaka.timer.begin('switch'); + shaka.timer.begin('switch logic'); + if (!this.validateRepresentation_(representation)) { + // Error has already been dispatched. + return; + } + + // Alias. + var DashStream = shaka.dash.DashStream; + + // We cannot switch representations if the stream has not been started. + shaka.asserts.assert(this.state_ != DashStream.State_.IDLE); + if (this.state_ == DashStream.State_.IDLE) { + shaka.log.error( + 'Cannot switch representation: stream has not been started.'); + return; + } + + // We cannot switch representations if we are initializing or already + // switching representations. + if (this.state_ == DashStream.State_.INITIALIZING || + this.state_ == DashStream.State_.SWITCHING || + this.state_ == DashStream.State_.SPLICING) { + shaka.log.info('Waiting to switch representations...'); + this.nextSwitch_ = this.switch.bind(this, representation, immediate); + return; + } + + if (representation == this.representation_) { + shaka.log.info('Ignoring switch.'); + // Nothing to do. If this was a deferred switch, the update loop is not + // running. So kick off an update to be safe. + this.onUpdate_(); + return; + } + + shaka.log.info('Switching representations to', representation); + + if (immediate && representation.height && + representation.height != this.representation_.height) { + var check = (function(video) { + if (video.videoHeight == representation.height) { + shaka.timer.end('switch'); + shaka.timer.diff('switch', 'switch logic'); + } else { + window.setTimeout(check, 50); + } + }).bind(null, this.video_); + check(); + } + + this.state_ = DashStream.State_.SWITCHING; + + // Request all segment metadata in parallel. + var async = this.requestAllSegmentMetadata_(representation); + + // If it's an immediate switch, pause the video and cancel updates until the + // switch is complete. + var previouslyPaused = this.video_.paused; + if (immediate) { + this.video_.pause(); + this.cancelUpdateTimer_(); + async.push(this.sbm_.abort()); + } + + // Save intermediate results so that we do not have to nest promises. + var initSegmentData; + + Promise.all(async).then(shaka.util.TypedBind(this, + /** @param {!Array} results */ + function(results) { + var segmentIndexData = results[0]; + initSegmentData = results[1]; + + // Create/get SegmentIndex. + if (representation.segmentBase) { + shaka.asserts.assert(segmentIndexData); + this.segmentIndex_ = this.createSegmentIndex_( + representation, segmentIndexData, initSegmentData); + if (!this.segmentIndex_) { + var error = new Error('Failed to create SegmentIndex.'); + error.type = 'dash'; + return Promise.reject(error); + } + } else { + this.segmentIndex_ = /** @type {shaka.dash.SegmentIndex} */ ( + representation.segmentList.userData); + shaka.asserts.assert(this.segmentIndex_); + } + + this.representation_ = representation; + this.type_ = representation.mimeType.split('/')[0]; + this.state_ = DashStream.State_.SPLICING; + + this.sbm_.reset(); + + this.fireAdaptationEvent_(representation); + + // Stop updating and abort |sbm_|'s current operation. This will reject + // |sbm_|'s current promise. + this.cancelUpdateTimer_(); + return this.sbm_.abort(); + }) + ).then(shaka.util.TypedBind(this, + function() { + var currentTime = this.getCurrentTime_(); + var bufferTime = Math.max(representation.minBufferTime, + DashStream.BUFFER_SIZE_SECONDS_); + // Fetch new segments to meet the buffering requirement and replace + // what's currently in buffer. + var segmentRange = this.segmentIndex_.getRangeForInterval( + this.getCurrentTime_(), + bufferTime); + if (!segmentRange) { + return Promise.reject(new Error('No segments available.')); + } + shaka.log.v1('Fetching segment range', this.type_, + segmentRange.references); + return this.sbm_.fetch(segmentRange, initSegmentData); + }) + ).then(shaka.util.TypedBind(this, + function() { + if (immediate) { + // Force the video to start presenting the new segment(s). + this.video_.currentTime -= DashStream.SINGLE_FRAME_SECONDS_; + if (!previouslyPaused) { + this.video_.play(); + } + } + shaka.timer.end('switch logic'); + this.switchRepresentationOrUpdate_(); + }) + ).catch(shaka.util.TypedBind(this, + /** @param {!Error} error */ + function(error) { + if (error.type != 'aborted') { + var event = shaka.util.FakeEvent.createErrorEvent(error); + this.dispatchEvent(event); + + // Try to recover. + this.state_ = DashStream.State_.UPDATING; + this.onUpdate_(); + } + }) + ); +}; + + +/** + * Fires a shaka.dash.DashStream.AdaptationEvent for a given representation. + * + * @param {shaka.dash.mpd.Representation} representation + * @private + */ +shaka.dash.DashStream.prototype.fireAdaptationEvent_ = + function(representation) { + var contentType = representation.mimeType.split('/')[0]; + var size = (contentType != 'video') ? null : { + 'width': representation.width, + 'height': representation.height + }; + var event = shaka.util.FakeEvent.create({ + 'type': 'adaptation', + 'bubbles': true, + 'contentType': contentType, + 'size': size, + 'bandwidth': representation.bandwidth + }); + this.dispatchEvent(event); +}; + + +/** + * Validates the given |representation|. If |representation| is valid then + * return true; otherwise, dispatch an error event and return false. + * + * @param {shaka.dash.mpd.Representation} representation + * @return {boolean} + * + * @private + */ +shaka.dash.DashStream.prototype.validateRepresentation_ = function( + representation) { + var hasSegmentBase = representation.segmentBase && + representation.segmentBase.representationIndex && + representation.segmentBase.representationIndex.range && + representation.segmentBase.mediaUrl; + + var hasSegmentList = representation.segmentList && + representation.segmentList.userData; + + if (!hasSegmentBase && !hasSegmentList) { + var error = new Error('Missing critical segment information.'); + error.type = 'mpd'; + + var event = shaka.util.FakeEvent.createErrorEvent(error); + this.dispatchEvent(event); + + return false; + } + + return true; +}; + + +/** + * Calls |nextSwitch_| if it's non-null; otherwise, calls onUpdate_(). + * @private + */ +shaka.dash.DashStream.prototype.switchRepresentationOrUpdate_ = function() { + // Alias. + var DashStream = shaka.dash.DashStream; + + shaka.asserts.assert(this.state_ == DashStream.State_.INITIALIZING || + this.state_ == DashStream.State_.SPLICING); + + + // Note that |state_| must be set to UPDATING before switchRepresentation_() + // is called. + this.state_ = DashStream.State_.UPDATING; + + if (this.nextSwitch_) { + shaka.log.info('Processing deferred switch...'); + var f = this.nextSwitch_; + this.nextSwitch_ = null; + f(); + } else { + this.onUpdate_(); + } +}; + + +/** @override */ +shaka.dash.DashStream.prototype.resync = function() { + // Alias. + var DashStream = shaka.dash.DashStream; + + shaka.asserts.assert(this.state_ != DashStream.State_.IDLE); + if (this.state_ == DashStream.State_.IDLE) { + shaka.log.error('Cannot resync stream: stream has not been initialized.'); + return; + } + + if (this.state_ == DashStream.State_.INITIALIZING || + this.state_ == DashStream.State_.SWITCHING || + this.state_ == DashStream.State_.SPLICING) { + // Since the stream is initializing or switching it will be resynchronized + // after the first call to onUpdate_(). + return; + } + + // Stop updating and abort |sbm_|'s current operation. This will reject + // |sbm_|'s current promise. + this.cancelUpdateTimer_(); + this.sbm_.abort().then(shaka.util.TypedBind(this, + function() { + this.state_ = DashStream.State_.UPDATING; + this.onUpdate_(); + }) + ); +}; + + +/** @override */ +shaka.dash.DashStream.prototype.setEnabled = function(enabled) { + // NOP, not supported for audio and video streams. +}; + + +/** @override */ +shaka.dash.DashStream.prototype.getEnabled = function() { + return true; +}; + + +/** + * Requests all segment metadata for the given representation. + * @param {!shaka.dash.mpd.Representation} representation + * @return {!Array.|!Promise.>} The first result + * contains the segment index data or null. The second result contains the + * initialization segment data or null. + * @private + */ +shaka.dash.DashStream.prototype.requestAllSegmentMetadata_ = function( + representation) { + var async; + + if (representation.segmentBase) { + return [ + this.requestSegmentMetadata_( + representation.segmentBase.representationIndex), + this.requestSegmentMetadata_( + representation.segmentBase.initialization)]; + } else { + return [ + Promise.resolve(null), + this.requestSegmentMetadata_( + representation.segmentList.initialization)]; + } +}; + + +/** + * Requests either a segment index or an initialization segment. + * @param {shaka.dash.mpd.RepresentationIndex| + * shaka.dash.mpd.Initialization} urlTypeObject + * @return {!Promise.|!Promise.} + * @private + */ +shaka.dash.DashStream.prototype.requestSegmentMetadata_ = function( + urlTypeObject) { + if (!urlTypeObject || !urlTypeObject.url) { + shaka.log.debug('No metadata to fetch.'); + return Promise.resolve(null); + } + + var range = urlTypeObject.range; + if (!range) { + range = { begin: 0, end: null }; + } + + var urlString = urlTypeObject.url.toString(); + var request = new shaka.util.RangeRequest(urlString, range.begin, range.end); + request.estimator = this.estimator_; + return request.send(); +}; + + +/** + * Creates a SegmentIndex. |representation| must contain a SegmentBase. + * @param {shaka.dash.mpd.Representation} representation + * @param {!ArrayBuffer} segmentIndexData The segment index data. + * @param {ArrayBuffer} initSegmentData The initialization segment data. + * @return {shaka.dash.SegmentIndex} + * @private + */ +shaka.dash.DashStream.prototype.createSegmentIndex_ = function( + representation, segmentIndexData, initSegmentData) { + shaka.asserts.assert(representation.segmentBase); + shaka.asserts.assert(representation.segmentBase.mediaUrl); + + /** @type {shaka.dash.ISegmentIndexParser} */ + var indexParser = null; + + if (representation.mimeType.indexOf('mp4') >= 0) { + indexParser = new shaka.dash.IsobmffSegmentIndexParser( + /** @type {!goog.Uri} */ (representation.segmentBase.mediaUrl)); + } else if (representation.mimeType.indexOf('webm') >= 0) { + if (!initSegmentData) { + shaka.log.error('Cannot create segment index: initialization segment ' + + 'required for WebM.'); + return null; + } + indexParser = new shaka.dash.WebmSegmentIndexParser( + /** @type {!goog.Uri} */ (representation.segmentBase.mediaUrl)); + } else { + shaka.log.error('Cannot create segment index: unsupported mime type.'); + return null; + } + shaka.asserts.assert(indexParser); + + var initSegmentDataView = + initSegmentData ? new DataView(initSegmentData) : null; + var segmentIndexDataView = new DataView(segmentIndexData); + var indexOffset = representation.segmentBase.representationIndex.range.begin; + + var references = + indexParser.parse(initSegmentDataView, segmentIndexDataView, indexOffset); + + if (!references) { + shaka.log.error('Cannot create segment index: failed to parse references.'); + return null; + } + + return new shaka.dash.SegmentIndex(references); +}; + + +/** + * Update callback. + * @private + */ +shaka.dash.DashStream.prototype.onUpdate_ = function() { + // Alias. + var DashStream = shaka.dash.DashStream; + + shaka.asserts.assert(this.representation_); + shaka.asserts.assert(this.segmentIndex_); + shaka.asserts.assert(this.state_ == DashStream.State_.SWITCHING || + this.state_ == DashStream.State_.UPDATING); + + // Avoid stacking timeouts. + this.cancelUpdateTimer_(); + + // Get the SegmentReference index and actual SegmentReference (if one exists) + // for the next unbuffered time range. + var currentTime = this.getCurrentTime_(); + var referenceIndex = this.findNextNeededIndex_(currentTime); + var reference = this.segmentIndex_.getReference(referenceIndex); + + if (!reference) { + // EOF. + shaka.log.info('EOF for ' + this.representation_.mimeType + ' stream.'); + this.state_ = DashStream.State_.ENDED; + + // Dispatch a non-bubbling event. Let the VideoSource handle it. + var event = shaka.util.FakeEvent.create({ type: 'ended' }); + this.dispatchEvent(event); + + return; + } + + var bufferingGoal = Math.max(this.representation_.minBufferTime, + DashStream.BUFFER_SIZE_SECONDS_); + var bufferedAhead = reference.startTime - currentTime; + if (bufferedAhead >= bufferingGoal) { + // We don't need to make a request right now, so check again in a second. + this.updateTimerId_ = window.setTimeout(this.onUpdate_.bind(this), 1000); + return; + } + + // Fetch and append the next segment. Only fetch a single segment, because + // fetching multiple segments could cause a buffering event when utilization + // of available bandwidth is high. If we are behind our buffering goal by + // more than one segment, we should still be able to catch up by requesting + // single segments so long as we are using an appropriate representation. + + // This operation may be interrupted by switchRepresentation_(). + shaka.log.v1('Fetching segment', this.type_, reference); + + var fetch = this.sbm_.fetch(new shaka.dash.SegmentRange([reference])); + fetch.then(shaka.util.TypedBind(this, + function() { + shaka.log.v1('Added segment', referenceIndex); + this.onUpdate_(); + }) + ).catch(shaka.util.TypedBind(this, + /** @param {!Error} error */ + function(error) { + // The fetch operation may be aborted while switching representations. + if (error.type != 'aborted') { + var event = shaka.util.FakeEvent.createErrorEvent(error); + this.dispatchEvent(event); + } + }) + ); +}; + + +/** + * Returns the index of the SegmentReference corresponding to the first + * unbuffered segment starting at |time|. + * + * @param {number} time + * @return {number} + * + * @private + */ +shaka.dash.DashStream.prototype.findNextNeededIndex_ = function(time) { + shaka.asserts.assert(this.segmentIndex_); + + var index = this.segmentIndex_.findReferenceIndex(time); + while (index >= 0 && index < this.segmentIndex_.getNumReferences()) { + if (!this.sbm_.isBuffered(index)) { + break; + } + index++; + } + + return index; +}; + + +/** + * Cancels the update timer if it is running. + * @private + */ +shaka.dash.DashStream.prototype.cancelUpdateTimer_ = function() { + if (this.updateTimerId_) { + window.clearTimeout(this.updateTimerId_); + this.updateTimerId_ = null; + } +}; + + +/** + * Gets the video's current time, offset by the earliest presentation time. + * @return {number} + * @private + */ +shaka.dash.DashStream.prototype.getCurrentTime_ = function() { + return this.video_.currentTime - this.sourceBuffer_.timestampOffset; +}; + diff --git a/lib/dash/dash_text_stream.js b/lib/dash/dash_text_stream.js new file mode 100644 index 0000000000..683abc6fc2 --- /dev/null +++ b/lib/dash/dash_text_stream.js @@ -0,0 +1,132 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a DASH stream for text tracks. + */ + +goog.provide('shaka.dash.DashTextStream'); + +goog.require('shaka.dash.IDashStream'); +goog.require('shaka.log'); +goog.require('shaka.util.FakeEventTarget'); + + + +/** + * Creates a DashTextStream. A DashTextStream is a DashStream work-alike for + * text tracks. + * + * @param {!shaka.util.FakeEventTarget} parent The parent for event bubbling. + * @param {!HTMLVideoElement} video The video element. + * @struct + * @constructor + * @implements {shaka.dash.IDashStream} + * @extends {shaka.util.FakeEventTarget} + */ +shaka.dash.DashTextStream = function(parent, video) { + shaka.util.FakeEventTarget.call(this, parent); + + /** @private {!HTMLVideoElement} */ + this.video_ = video; + + /** @private {shaka.dash.mpd.Representation} */ + this.representation_ = null; + + /** @private {HTMLTrackElement} */ + this.track_ = null; +}; +goog.inherits(shaka.dash.DashTextStream, shaka.util.FakeEventTarget); + + +/** + * @override + * @suppress {checkTypes} to set otherwise non-nullable types to null. + */ +shaka.dash.DashTextStream.prototype.destroy = function() { + if (this.track_) { + this.video_.removeChild(this.track_); + } + + this.track_ = null; + this.representation_ = null; + this.video_ = null; + this.parent = null; +}; + + +/** @override */ +shaka.dash.DashTextStream.prototype.getRepresentation = function() { + return this.representation_; +}; + + +/** @override */ +shaka.dash.DashTextStream.prototype.hasEnded = function() { + return true; +}; + + +/** @override */ +shaka.dash.DashTextStream.prototype.start = function(representation) { + this.representation_ = representation; + shaka.log.info('Starting stream for', this.representation_); + + // NOTE: Simply changing the src attribute of an existing track may result + // in both the old and new subtitles appearing simultaneously. To be safe, + // remove the old track and create a new one. + if (this.track_) { + // NOTE: When the current track is enabled, and we change tracks and + // immediately disable the new one, the new one seems to end up enabled + // anyway. To solve this, we disable the current track before removing. + this.setEnabled(false); + this.video_.removeChild(this.track_); + } + + this.track_ = /** @type {HTMLTrackElement} */ + (document.createElement('track')); + this.video_.appendChild(this.track_); + + var url = this.representation_.baseUrl.toString(); + this.track_.src = url; + + // NOTE: mode must be set after appending to the DOM. + this.setEnabled(false); +}; + + +/** @override */ +shaka.dash.DashTextStream.prototype.switch = + function(representation, immediate) { + this.start(representation); +}; + + +/** @override */ +shaka.dash.DashTextStream.prototype.resync = function() { + // NOP +}; + + +/** @override */ +shaka.dash.DashTextStream.prototype.setEnabled = function(enabled) { + this.track_.track.mode = enabled ? 'showing' : 'disabled'; +}; + + +/** @override */ +shaka.dash.DashTextStream.prototype.getEnabled = function() { + return this.track_.track.mode == 'showing'; +}; + diff --git a/lib/dash/i_dash_stream.js b/lib/dash/i_dash_stream.js new file mode 100644 index 0000000000..b1de0d36b6 --- /dev/null +++ b/lib/dash/i_dash_stream.js @@ -0,0 +1,87 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview DASH stream interface. + */ + +goog.provide('shaka.dash.IDashStream'); + +goog.require('shaka.dash.mpd'); + + + +/** + * An IDashStream is an active representation. + * + * @interface + * @extends {EventTarget} + */ +shaka.dash.IDashStream = function() {}; + + +/** + * Destroys the DashStream. + */ +shaka.dash.IDashStream.prototype.destroy = function() {}; + + +/** @return {shaka.dash.mpd.Representation} */ +shaka.dash.IDashStream.prototype.getRepresentation = function() {}; + + +/** @return {boolean} */ +shaka.dash.IDashStream.prototype.hasEnded = function() {}; + + +/** + * Start processing the stream. This should only be called once. + * An 'ended' event will be fired on EOF. + * + * @param {!shaka.dash.mpd.Representation} representation The representation. + */ +shaka.dash.IDashStream.prototype.start = function(representation) {}; + + +/** + * Switch the stream to use the given |representation|. The stream must + * already be started. + * + * @param {!shaka.dash.mpd.Representation} representation The representation. + * @param {boolean} immediate If true, switch as soon as possible. Otherwise, + * switch when convenient. + */ +shaka.dash.IDashStream.prototype.switch = + function(representation, immediate) {}; + + +/** + * Resync the stream with the video's currentTime. Called on seeking. + */ +shaka.dash.IDashStream.prototype.resync = function() {}; + + +/** + * Enable or disable the stream. Not supported for all stream types. + * + * @param {boolean} enabled + */ +shaka.dash.IDashStream.prototype.setEnabled = function(enabled) {}; + + +/** + * @return {boolean} true if the stream is enabled. + */ +shaka.dash.IDashStream.prototype.getEnabled = function() {}; + diff --git a/lib/dash/i_segment_index_parser.js b/lib/dash/i_segment_index_parser.js new file mode 100644 index 0000000000..0613d97a92 --- /dev/null +++ b/lib/dash/i_segment_index_parser.js @@ -0,0 +1,46 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview An interface for a generic segment index parser. + */ + +goog.provide('shaka.dash.ISegmentIndexParser'); + +goog.require('shaka.dash.SegmentReference'); + + + +/** + * An interface for a generic segment index parser. + * + * @interface + */ +shaka.dash.ISegmentIndexParser = function() {}; + + +/** + * Parses a segment index into segment references. + * + * @param {DataView} initSegmentData The initialization segment, or null if not + * available. Some parsers may require this. + * @param {!DataView} indexData The segment index bytes. + * @param {number} indexOffset The byte offset of the segmentIndex in the + * container. + * @return {Array.} The segment references, or + * null if an error occurred + */ +shaka.dash.ISegmentIndexParser.prototype.parse = + function(initSegmentData, indexData, indexOffset) {}; + diff --git a/lib/dash/isobmff_segment_index_parser.js b/lib/dash/isobmff_segment_index_parser.js new file mode 100644 index 0000000000..7a03048e56 --- /dev/null +++ b/lib/dash/isobmff_segment_index_parser.js @@ -0,0 +1,177 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Parses a segment index from an ISO BMFF SIDX structure. + */ + +goog.provide('shaka.dash.IsobmffSegmentIndexParser'); + +goog.require('shaka.dash.ISegmentIndexParser'); +goog.require('shaka.dash.SegmentReference'); +goog.require('shaka.log'); +goog.require('shaka.util.DataViewReader'); + + + +/** + * A parser for ISO BMFF SIDX structures. + * + * @param {!goog.Uri} mediaUrl The location of the segments, i.e., all parsed + * SegmentReferences are assumed to be reteivable from |mediaUrl|. + * + * @constructor + * @implements {shaka.dash.ISegmentIndexParser} + */ +shaka.dash.IsobmffSegmentIndexParser = function(mediaUrl) { + /** @private {!goog.Uri} */ + this.mediaUrl_ = mediaUrl; +}; + + +/** @override */ +shaka.dash.IsobmffSegmentIndexParser.prototype.parse = + function(initSegmentData, indexData, indexOffset) { + var references = null; + + try { + references = this.parseInternal_(indexData, indexOffset); + } catch (exception) { + if (!(exception instanceof RangeError)) { + throw exception; + } + } + + return references; +}; + + +/** + * Indicates the SIDX box structure. It is equal to the string 'sidx' as a + * 32-bit unsigned integer. + * @const {number} + */ +shaka.dash.IsobmffSegmentIndexParser.SIDX_INDICATOR = 0x73696478; + + +/** + * Parses the segment index from an ISO BMFF SIDX structure. + * @param {!DataView} dataView The ISO BMFF SIDX data. + * @param {number} sidxOffset The byte offset of the SIDX in the container. + * @return {Array.} The segment references, or + * null if an error occurred. + * @throws {RangeError} + * @private + * @see ISO/IEC 14496-12:2012 section 4.2 and 8.16.3 + */ +shaka.dash.IsobmffSegmentIndexParser.prototype.parseInternal_ = function( + dataView, sidxOffset) { + var reader = new shaka.util.DataViewReader( + dataView, + shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + + /** @type {!Array.} */ + var references = []; + + // A SIDX structure is contained within a FullBox structure, which itself is + // contained within a Box structure. + + // Parse the Box structure. + var boxSize = reader.readUint32(); + var boxType = reader.readUint32(); + + if (boxType != shaka.dash.IsobmffSegmentIndexParser.SIDX_INDICATOR) { + shaka.log.error('Invalid box type, expected "sidx".'); + return null; + } + + if (boxSize == 1) { + boxSize = reader.readUint64(); + } + + // Parse the FullBox structure. + var version = reader.readUint8(); + + // Skip flags (24 bits) + reader.skip(3); + + // Parse the SIDX structure. + // Skip reference_ID (32 bits). + reader.skip(4); + + var timescale = reader.readUint32(); + shaka.asserts.assert(timescale != 0); + if (timescale == 0) { + shaka.log.error('Invalid timescale.'); + return null; + } + + var earliestPresentationTime; + var firstOffset; + + if (version == 0) { + earliestPresentationTime = reader.readUint32(); + firstOffset = reader.readUint32(); + } else { + earliestPresentationTime = reader.readUint64(); + firstOffset = reader.readUint64(); + } + + // Skip reserved (16 bits). + reader.skip(2); + + // Add references. + var referenceCount = reader.readUint16(); + var unscaledStartTime = earliestPresentationTime; + var startByte = sidxOffset + boxSize + firstOffset; + + for (var i = 0; i < referenceCount; i++) { + // |chunk| is 1 bit for |referenceType|, and 31 bits for |referenceSize|. + var chunk = reader.readUint32(); + var referenceType = (chunk & 0x80000000) >>> 31; + var referenceSize = chunk & 0x7FFFFFFF; + + var subsegmentDuration = reader.readUint32(); + + // |chunk| is 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits + // for |sapDelta|. + // TODO(story 1891508): Handle stream access point (SAP)? + chunk = reader.readUint32(); + var startsWithSap = (chunk & 0x80000000) >>> 31; + var sapType = (chunk & 0x70000000) >>> 28; + var sapDelta = chunk & 0x0FFFFFFF; + + // If |referenceType| is 1 then the reference is to another SIDX. + // We do not support this. + if (referenceType == 1) { + shaka.log.error('Heirarchical SIDXs are not supported.'); + return null; + } + + references.push( + new shaka.dash.SegmentReference( + i, + unscaledStartTime / timescale, + (unscaledStartTime + subsegmentDuration) / timescale, + startByte, + startByte + referenceSize - 1, + this.mediaUrl_)); + + unscaledStartTime += subsegmentDuration; + startByte += referenceSize; + } + + return references; +}; + diff --git a/lib/dash/mpd_parser.js b/lib/dash/mpd_parser.js new file mode 100644 index 0000000000..54e217c412 --- /dev/null +++ b/lib/dash/mpd_parser.js @@ -0,0 +1,1282 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a media presentation description object. + */ + +goog.provide('shaka.dash.mpd'); + +goog.require('goog.Uri'); +goog.require('shaka.log'); +goog.require('shaka.util.DataViewReader'); +goog.require('shaka.util.LanguageUtils'); +goog.require('shaka.util.Pssh'); +goog.require('shaka.util.StringUtils'); + + +/** + * Creates an Mpd. The MPD XML text is parsed into a tree structure. + * + * If a tag that should only exist once exists more than once, then all + * instances of that tag are ignored; for example, if a "Representation" tag + * contains more than one "SegmentBase" tag, then every "SegmentBase" tag + * contained in that "Representation" tag is ignored. + * + * Numbers, times, and byte ranges are set to null if they cannot be parsed. + * + * @param {string} source The MPD XML text. + * @param {string} url The MPD URL for relative BaseURL resolution. + * @return {shaka.dash.mpd.Mpd} + * + * @see ISO/IEC 23009-1 + */ +shaka.dash.mpd.parseMpd = function(source, url) { + var parser = new DOMParser(); + var xml = parser.parseFromString(source, 'text/xml'); + + if (!xml) { + shaka.log.error('Failed to parse MPD XML.'); + return null; + } + + // Reset the unique IDs so that IDs are predictable no matter how many MPDs + // are parsed in this browser session. + shaka.dash.mpd.nextUniqueId_ = 0; + + // Construct a virtual parent for the MPD to use in resolving relative URLs. + var parent = { baseUrl: new goog.Uri(url) }; + + return shaka.dash.mpd.parseChild_(parent, xml, shaka.dash.mpd.Mpd); +}; + + +/** @private {number} */ +shaka.dash.mpd.nextUniqueId_ = 0; + + +/** + * @private {number} + * @const + */ +shaka.dash.mpd.DEFAULT_MIN_BUFFER_TIME_ = 5.0; + + + +/** @constructor */ +shaka.dash.mpd.Mpd = function() { + /** @type {?string} */ + this.id = null; + + /** @type {?string} */ + this.type = null; + + /** @type {goog.Uri} */ + this.baseUrl = null; + + /** + * The duration in seconds. + * @type {?number} + */ + this.duration = null; + + /** + * Time in seconds that should be buffered before playback begins, to assure + * uninterrupted playback. + * @type {number} + */ + this.minBufferTime = shaka.dash.mpd.DEFAULT_MIN_BUFFER_TIME_; + + /** @type {!Array.} */ + this.periods = []; +}; + + + +/** @constructor */ +shaka.dash.mpd.Period = function() { + /** @type {?string} */ + this.id = null; + + /** + * Never seen on the Period itself, but inherited from Mpd for convenience. + * @see Mpd.minBufferTime + * @type {number} + */ + this.minBufferTime = shaka.dash.mpd.DEFAULT_MIN_BUFFER_TIME_; + + /** + * The start time in seconds. + * @type {?number} + */ + this.start = null; + + /** + * The duration in seconds. + * @type {?number} + */ + this.duration = null; + + /** @type {goog.Uri} */ + this.baseUrl = null; + + /** @type {shaka.dash.mpd.SegmentBase} */ + this.segmentBase = null; + + /** @type {shaka.dash.mpd.SegmentList} */ + this.segmentList = null; + + /** @type {shaka.dash.mpd.SegmentTemplate} */ + this.segmentTemplate = null; + + /** @type {!Array.} */ + this.adaptationSets = []; +}; + + + +/** @constructor */ +shaka.dash.mpd.AdaptationSet = function() { + /** @type {?string} */ + this.id = null; + + /** + * Never seen on the AdaptationSet itself, but inherited from Mpd for + * convenience. + * @see Mpd.minBufferTime + * @type {number} + */ + this.minBufferTime = shaka.dash.mpd.DEFAULT_MIN_BUFFER_TIME_; + + /** + * The language. + * @type {?string} + * @see IETF RFC 5646 + * @see ISO 639 + */ + this.lang = null; + + /** + * Should be 'video' or 'audio', not a MIME type. + * If not specified, will be inferred from the MIME type. + * @type {?string} + */ + this.contentType = null; + + /** @type {?number} */ + this.width = null; + + /** @type {?number} */ + this.height = null; + + /** + * If not specified, will be inferred from the first representation. + * @type {?string} + */ + this.mimeType = null; + + /** @type {?string} */ + this.codecs = null; + + /** @type {goog.Uri} */ + this.baseUrl = null; + + /** @type {shaka.dash.mpd.SegmentBase} */ + this.segmentBase = null; + + /** @type {shaka.dash.mpd.SegmentList} */ + this.segmentList = null; + + /** @type {shaka.dash.mpd.SegmentTemplate} */ + this.segmentTemplate = null; + + /** @type {!Array.} */ + this.contentProtections = []; + + /** @type {*} */ + this.userData = null; + + /** @type {!Array.} */ + this.representations = []; +}; + + + +/** @constructor */ +shaka.dash.mpd.ContentComponent = function() { + /** @type {?string} */ + this.id = null; + + /** + * The language. + * @type {?string} + * @see IETF RFC 5646 + * @see ISO 639 + */ + this.lang = null; + + /** + * Should be 'video' or 'audio', not a MIME type. + * @type {?string} + */ + this.contentType = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.Representation = function() { + /** @type {?string} */ + this.id = null; + + /** + * Never seen on the Representation itself, but inherited from AdapationSet + * for convenience. + * @see AdaptationSet.lang + * @type {?string} + */ + this.lang = null; + + /** + * Never seen on the Representation itself, but inherited from Mpd for + * convenience. + * @see Mpd.minBufferTime + * @type {number} + */ + this.minBufferTime = shaka.dash.mpd.DEFAULT_MIN_BUFFER_TIME_; + + /** + * Bandwidth required, in bits per second, to assure uninterrupted playback, + * assuming that Mpd.minBufferTime seconds of video are in buffer before + * playback begins. + * @type {?number} + */ + this.bandwidth = null; + + /** @type {?number} */ + this.width = null; + + /** @type {?number} */ + this.height = null; + + /** @type {?string} */ + this.mimeType = null; + + /** @type {?string} */ + this.codecs = null; + + /** @type {goog.Uri} */ + this.baseUrl = null; + + /** @type {shaka.dash.mpd.SegmentBase} */ + this.segmentBase = null; + + /** @type {shaka.dash.mpd.SegmentList} */ + this.segmentList = null; + + /** @type {shaka.dash.mpd.SegmentTemplate} */ + this.segmentTemplate = null; + + /** @type {!Array.} */ + this.contentProtections = []; + + /** @type {*} */ + this.userData = null; + + /** + * A unique ID independent of |id| or other attributes. + * @type {number} + */ + this.uniqueId = ++shaka.dash.mpd.nextUniqueId_; +}; + + + +/** @constructor */ +shaka.dash.mpd.ContentProtection = function() { + /** + * @type {?string} + * @expose + */ + this.schemeIdUri = null; + + /** @type {?string} */ + this.value = null; + + /** @type {!Array.} */ + this.children = []; + + /** + * @type {shaka.dash.mpd.CencPssh} + * @expose + */ + this.pssh = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.CencPssh = function() { + /** + * @type {Uint8Array} + * @expose + */ + this.psshBox = null; + + /** + * @type {shaka.util.Pssh} + * @expose + */ + this.parsedPssh = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.BaseUrl = function() { + /** @type {?string} */ + this.url = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.SegmentBase = function() { + /** + * This not an actual XML attribute of SegmentBase. It is inherited from the + * SegmentBase's parent Representation. + * @type {goog.Uri} + */ + this.baseUrl = null; + + /** + * This is not an actual XML attribute of SegmentBase. It is either inherited + * from the SegmentBase's parent Representation or generated from a + * SegmentTemplate. + * @type {goog.Uri} + */ + this.mediaUrl = null; + + /** @type {shaka.dash.mpd.Range} */ + this.indexRange = null; + + /** @type {shaka.dash.mpd.RepresentationIndex} */ + this.representationIndex = null; + + /** @type {shaka.dash.mpd.Initialization} */ + this.initialization = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.RepresentationIndex = function() { + /** @type {goog.Uri} */ + this.url = null; + + /** + * Inherits the value of SegmentBase.indexRange if not specified. + * @type {shaka.dash.mpd.Range} + */ + this.range = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.Initialization = function() { + /** @type {goog.Uri} */ + this.url = null; + + /** @type {shaka.dash.mpd.Range} */ + this.range = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.SegmentList = function() { + /** + * This not an actual XML attribute of SegmentList. It is inherited from the + * SegmentList's parent Representation. + * @type {goog.Uri} + */ + this.baseUrl = null; + + /** @type {number} */ + this.timescale = 1; + + /** @type {number} */ + this.presentationTimeOffset = 0; + + /** @type {?number} */ + this.segmentDuration = null; + + /** @type {number} */ + this.firstSegmentNumber = 1; + + /** @type {shaka.dash.mpd.Initialization} */ + this.initialization = null; + + /** @type {!Array.} */ + this.segmentUrls = []; + + /** @type {*} */ + this.userData = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.SegmentUrl = function() { + /** @type {goog.Uri} */ + this.mediaUrl = null; + + /** @type {shaka.dash.mpd.Range} */ + this.mediaRange = null; + + /** + * This is not an actual XML attribute. It is either left null or generated + * from a SegmentTemplate. + * @type {?number} + */ + this.startTime = null; + + /** + * This is not an actual XML attribute. It is either left null or generated + * from a SegmentTemplate. + * @type {?number} + */ + this.duration = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.SegmentTemplate = function() { + /** @type {number} */ + this.timescale = 1; + + /** @type {number} */ + this.presentationTimeOffset = 0; + + /** @type {?number} */ + this.segmentDuration = null; + + /** @type {number} */ + this.firstSegmentNumber = 1; + + /** @type {?string} */ + this.mediaUrlTemplate = null; + + /** @type {?string} */ + this.indexUrlTemplate = null; + + /** @type {?string} */ + this.initializationUrlTemplate = null; + + /** @type {shaka.dash.mpd.SegmentTimeline} */ + this.timeline = null; +}; + + + +/** @constructor */ +shaka.dash.mpd.SegmentTimeline = function() { + /** @type {!Array.} */ + this.timePoints = []; +}; + + + +/** @constructor */ +shaka.dash.mpd.SegmentTimePoint = function() { + /** @type {?number} */ + this.startTime = null; + + /** @type {?number} */ + this.duration = null; + + /** @type {?number} */ + this.repeat = null; +}; + + + +/** + * Creates a Range. + * @param {number} begin The beginning of the range. + * @param {number} end The end of the range. + * @constructor + */ +shaka.dash.mpd.Range = function(begin, end) { + /** @type {number} */ + this.begin = begin; + + /** @type {number} */ + this.end = end; +}; + + +// MPD tag names -------------------------------------------------------------- + + +/** + * @const {string} + * @expose all TAG_NAME properties so that they do not get stripped during + * advanced compilation. + */ +shaka.dash.mpd.Mpd.TAG_NAME = 'MPD'; + + +/** @const {string} */ +shaka.dash.mpd.Period.TAG_NAME = 'Period'; + + +/** @const {string} */ +shaka.dash.mpd.AdaptationSet.TAG_NAME = 'AdaptationSet'; + + +/** @const {string} */ +shaka.dash.mpd.ContentComponent.TAG_NAME = 'ContentComponent'; + + +/** @const {string} */ +shaka.dash.mpd.Representation.TAG_NAME = 'Representation'; + + +/** @const {string} */ +shaka.dash.mpd.ContentProtection.TAG_NAME = 'ContentProtection'; + + +/** @const {string} */ +shaka.dash.mpd.CencPssh.TAG_NAME = 'cenc:pssh'; + + +/** @const {string} */ +shaka.dash.mpd.BaseUrl.TAG_NAME = 'BaseURL'; + + +/** @const {string} */ +shaka.dash.mpd.SegmentBase.TAG_NAME = 'SegmentBase'; + + +/** @const {string} */ +shaka.dash.mpd.RepresentationIndex.TAG_NAME = 'RepresentationIndex'; + + +/** @const {string} */ +shaka.dash.mpd.Initialization.TAG_NAME = 'Initialization'; + + +/** @const {string} */ +shaka.dash.mpd.SegmentList.TAG_NAME = 'SegmentList'; + + +/** @const {string} */ +shaka.dash.mpd.SegmentUrl.TAG_NAME = 'SegmentURL'; + + +/** @const {string} */ +shaka.dash.mpd.SegmentTemplate.TAG_NAME = 'SegmentTemplate'; + + +/** @const {string} */ +shaka.dash.mpd.SegmentTimeline.TAG_NAME = 'SegmentTimeline'; + + +/** @const {string} */ +shaka.dash.mpd.SegmentTimePoint.TAG_NAME = 'S'; + + +// MPD tag parsing functions -------------------------------------------------- + + +/** + * Parses an "MPD" tag. + * @param {!Object} parent A virtual parent tag containing a BaseURL which + * refers to the MPD resource itself. + * @param {!Node} elem The MPD XML element. + */ +shaka.dash.mpd.Mpd.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + this.id = mpd.parseAttr_(elem, 'id', mpd.parseString_); + this.type = mpd.parseAttr_(elem, 'type', mpd.parseString_); + this.duration = + mpd.parseAttr_(elem, 'mediaPresentationDuration', mpd.parseDuration_); + this.minBufferTime = + mpd.parseAttr_(elem, 'minBufferTime', mpd.parseDuration_) || + mpd.DEFAULT_MIN_BUFFER_TIME_; + + // Parse simple child elements. + var baseUrl = mpd.parseChild_(this, elem, mpd.BaseUrl); + this.baseUrl = mpd.resolveUrl_(parent.baseUrl, baseUrl ? baseUrl.url : null); + + // Parse hierarchical children. + this.periods = mpd.parseChildren_(this, elem, mpd.Period); +}; + + +/** + * Parses a "Period" tag. + * @param {!shaka.dash.mpd.Mpd} parent The parent Mpd. + * @param {!Node} elem The Period XML element. + */ +shaka.dash.mpd.Period.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + this.id = mpd.parseAttr_(elem, 'id', mpd.parseString_); + this.start = mpd.parseAttr_(elem, 'start', mpd.parseDuration_); + this.duration = mpd.parseAttr_(elem, 'duration', mpd.parseDuration_); + + // Never seen on this element itself, but inherited for convenience. + this.minBufferTime = parent.minBufferTime; + + // Parse simple child elements. + var baseUrl = mpd.parseChild_(this, elem, mpd.BaseUrl); + this.baseUrl = mpd.resolveUrl_(parent.baseUrl, baseUrl ? baseUrl.url : null); + + // Parse hierarchical children. + this.segmentBase = mpd.parseChild_(this, elem, mpd.SegmentBase); + this.segmentList = mpd.parseChild_(this, elem, mpd.SegmentList); + this.segmentTemplate = mpd.parseChild_(this, elem, mpd.SegmentTemplate); + + this.adaptationSets = mpd.parseChildren_(this, elem, mpd.AdaptationSet); +}; + + +/** + * Parses an "AdaptationSet" tag. + * @param {!shaka.dash.mpd.Period} parent The parent Period. + * @param {!Node} elem The AdaptationSet XML element. + */ +shaka.dash.mpd.AdaptationSet.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse children which provide properties of the AdaptationSet. + var contentComponent = mpd.parseChild_(this, elem, mpd.ContentComponent) || + {}; + + // Parse attributes. + this.id = mpd.parseAttr_(elem, 'id', mpd.parseString_); + this.lang = mpd.parseAttr_(elem, 'lang', mpd.parseString_) || + contentComponent.lang; + this.contentType = mpd.parseAttr_(elem, 'contentType', mpd.parseString_) || + contentComponent.contentType; + this.width = mpd.parseAttr_(elem, 'width', mpd.parsePositiveInt_); + this.height = mpd.parseAttr_(elem, 'height', mpd.parsePositiveInt_); + this.mimeType = mpd.parseAttr_(elem, 'mimeType', mpd.parseString_); + this.codecs = mpd.parseAttr_(elem, 'codecs', mpd.parseString_); + + // Normalize the language tag. + if (this.lang) this.lang = shaka.util.LanguageUtils.normalize(this.lang); + + // Never seen on this element itself, but inherited for convenience. + this.minBufferTime = parent.minBufferTime; + + // Parse simple child elements. + var baseUrl = mpd.parseChild_(this, elem, mpd.BaseUrl); + this.baseUrl = mpd.resolveUrl_(parent.baseUrl, baseUrl ? baseUrl.url : null); + + this.contentProtections = + mpd.parseChildren_(this, elem, mpd.ContentProtection); + + if (!this.contentType && this.mimeType) { + // Infer contentType from mimeType. This must be done before parsing any + // child Representations, as Representation inherits contentType. + this.contentType = this.mimeType.split('/')[0]; + } + + // Parse hierarchical children. + this.segmentBase = mpd.parseChild_(this, elem, mpd.SegmentBase) || + parent.segmentBase; + this.segmentList = mpd.parseChild_(this, elem, mpd.SegmentList) || + parent.segmentList; + this.segmentTemplate = mpd.parseChild_(this, elem, mpd.SegmentTemplate) || + parent.segmentTemplate; + + this.representations = mpd.parseChildren_(this, elem, mpd.Representation); + + if (!this.mimeType && this.representations.length) { + // Infer mimeType from children. MpdProcessor will deal with the case + // where Representations have inconsistent mimeTypes. + this.mimeType = this.representations[0].mimeType; + + if (!this.contentType && this.mimeType) { + this.contentType = this.mimeType.split('/')[0]; + } + } +}; + + +/** + * Parses a "ContentComponent" tag. + * @param {!shaka.dash.mpd.AdaptationSet} parent The parent AdaptationSet. + * @param {!Node} elem The ContentComponent XML element. + */ +shaka.dash.mpd.ContentComponent.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + this.id = mpd.parseAttr_(elem, 'id', mpd.parseString_); + this.lang = mpd.parseAttr_(elem, 'lang', mpd.parseString_); + this.contentType = mpd.parseAttr_(elem, 'contentType', mpd.parseString_); + + // Normalize the language tag. + if (this.lang) this.lang = shaka.util.LanguageUtils.normalize(this.lang); +}; + + +/** + * Parses a "Representation" tag. + * @param {!shaka.dash.mpd.AdaptationSet} parent The parent AdaptationSet. + * @param {!Node} elem The Representation XML element. + */ +shaka.dash.mpd.Representation.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + this.id = mpd.parseAttr_(elem, 'id', mpd.parseString_); + this.bandwidth = mpd.parseAttr_(elem, 'bandwidth', mpd.parsePositiveInt_); + this.width = + mpd.parseAttr_(elem, 'width', mpd.parsePositiveInt_) || parent.width; + this.height = + mpd.parseAttr_(elem, 'height', mpd.parsePositiveInt_) || parent.height; + this.mimeType = + mpd.parseAttr_(elem, 'mimeType', mpd.parseString_) || parent.mimeType; + this.codecs = + mpd.parseAttr_(elem, 'codecs', mpd.parseString_) || parent.codecs; + + // Never seen on this element itself, but inherited for convenience. + this.lang = parent.lang; + this.minBufferTime = parent.minBufferTime; + + // Parse simple child elements. + var baseUrl = mpd.parseChild_(this, elem, mpd.BaseUrl); + this.baseUrl = mpd.resolveUrl_(parent.baseUrl, baseUrl ? baseUrl.url : null); + + this.contentProtections = + mpd.parseChildren_(this, elem, mpd.ContentProtection); + + // Parse hierarchical children. + this.segmentBase = mpd.parseChild_(this, elem, mpd.SegmentBase) || + parent.segmentBase; + this.segmentList = mpd.parseChild_(this, elem, mpd.SegmentList) || + parent.segmentList; + this.segmentTemplate = mpd.parseChild_(this, elem, mpd.SegmentTemplate) || + parent.segmentTemplate; + + if (this.contentProtections.length == 0) { + this.contentProtections = parent.contentProtections; + } +}; + + +/** + * Parses a "ContentProtection" tag. + * @param {*} parent The parent object. + * @param {!Node} elem The ContentProtection XML element. + */ +shaka.dash.mpd.ContentProtection.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + this.schemeIdUri = mpd.parseAttr_(elem, 'schemeIdUri', mpd.parseString_); + this.value = mpd.parseAttr_(elem, 'value', mpd.parseString_); + + // Parse simple child elements. + this.pssh = mpd.parseChild_(this, elem, mpd.CencPssh); + + // NOTE: A given ContentProtection tag could contain anything, and a scheme + // could be application-specific. Therefore we must capture whatever it + // contains, and let the application choose a scheme and map it to a key + // system. + this.children = elem.children; +}; + + +/** + * Parse a "cenc:pssh" tag. + * @param {*} parent The parent object. + * @param {!Node} elem The CencPssh XML element. + */ +shaka.dash.mpd.CencPssh.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + var StringUtils = shaka.util.StringUtils; + + var contents = mpd.getContents_(elem); + if (!contents) { + return; + } + + this.psshBox = StringUtils.toUint8Array(StringUtils.fromBase64(contents)); + + try { + this.parsedPssh = new shaka.util.Pssh(this.psshBox); + } catch (exception) { + if (!(exception instanceof RangeError)) { + throw exception; + } + } +}; + + +/** + * Parses a "BaseURL" tag. + * @param {*} parent The parent object. + * @param {!Node} elem The BaseURL XML element. + */ +shaka.dash.mpd.BaseUrl.prototype.parse = function(parent, elem) { + this.url = shaka.dash.mpd.getContents_(elem); +}; + + +/** + * Parses a "SegmentBase" tag. + * @param {*} parent The parent object. + * @param {!Node} elem The SegmentBase XML element. + */ +shaka.dash.mpd.SegmentBase.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + this.baseUrl = parent.baseUrl; + this.mediaUrl = parent.baseUrl; + + // Parse attributes. + this.indexRange = mpd.parseAttr_(elem, 'indexRange', mpd.parseRange_); + + // Parse simple child elements. + this.representationIndex = + mpd.parseChild_(this, elem, mpd.RepresentationIndex); + + this.initialization = mpd.parseChild_(this, elem, mpd.Initialization); + + if (this.representationIndex) { + if (!this.representationIndex.range) { + this.representationIndex.range = this.indexRange; + } + } else { + // Normalize the SegmentBase by creating a default RepresentationIndex. + this.representationIndex = new shaka.dash.mpd.RepresentationIndex(); + this.representationIndex.url = this.baseUrl; + this.representationIndex.range = this.indexRange; + } +}; + + +/** + * Parses a "RepresentationIndex" tag. + * @param {!shaka.dash.mpd.SegmentBase} parent The parent SegmentBase. + * @param {!Node} elem The RepresentationIndex XML element. + */ +shaka.dash.mpd.RepresentationIndex.prototype.parse = function( + parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + var url = mpd.parseAttr_(elem, 'sourceURL', mpd.parseString_); + this.url = mpd.resolveUrl_(parent.baseUrl, url); + + this.range = mpd.parseAttr_(elem, 'range', mpd.parseRange_); +}; + + +/** + * Parses an "Initialization" tag. + * @param {!shaka.dash.mpd.SegmentBase|!shaka.dash.mpd.SegmentList} parent + * The parent SegmentBase or parent SegmentList. + * @param {!Node} elem The Initialization XML element. + */ +shaka.dash.mpd.Initialization.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + var url = mpd.parseAttr_(elem, 'sourceURL', mpd.parseString_); + this.url = mpd.resolveUrl_(parent.baseUrl, url); + + this.range = mpd.parseAttr_(elem, 'range', mpd.parseRange_); +}; + + +/** + * Parses a "SegmentList" tag. + * @param {*} parent The parent object. + * @param {!Node} elem The SegmentList XML element. + */ +shaka.dash.mpd.SegmentList.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + this.baseUrl = parent.baseUrl; + + // Parse attributes. + this.timescale = + mpd.parseAttr_(elem, 'timescale', mpd.parsePositiveInt_) || 1; + + this.presentationTimeOffset = mpd.parseAttr_( + elem, 'presentationTimeOffset', mpd.parseNonNegativeInt_) || 0; + + this.segmentDuration = + mpd.parseAttr_(elem, 'duration', mpd.parseNonNegativeInt_); + + this.firstSegmentNumber = + mpd.parseAttr_(elem, 'startNumber', mpd.parsePositiveInt_) || 1; + + // Parse simple children + this.initialization = mpd.parseChild_(this, elem, mpd.Initialization); + this.segmentUrls = mpd.parseChildren_(this, elem, mpd.SegmentUrl); +}; + + +/** + * Parses a "SegmentUrl" tag. + * @param {!shaka.dash.mpd.SegmentList} parent The parent SegmentList. + * @param {!Node} elem The SegmentUrl XML element. + */ +shaka.dash.mpd.SegmentUrl.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + var url = mpd.parseAttr_(elem, 'media', mpd.parseString_); + this.mediaUrl = mpd.resolveUrl_(parent.baseUrl, url); + + this.mediaRange = mpd.parseAttr_(elem, 'mediaRange', mpd.parseRange_); +}; + + +/** + * Parses a "SegmentTemplate" tag. + * @param {*} parent The parent object. + * @param {!Node} elem The SegmentTemplate XML element. + */ +shaka.dash.mpd.SegmentTemplate.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + this.timescale = + mpd.parseAttr_(elem, 'timescale', mpd.parsePositiveInt_) || 1; + + this.presentationTimeOffset = mpd.parseAttr_( + elem, 'presentationTimeOffset', mpd.parseNonNegativeInt_) || 0; + + this.segmentDuration = + mpd.parseAttr_(elem, 'duration', mpd.parseNonNegativeInt_); + + this.firstSegmentNumber = + mpd.parseAttr_(elem, 'startNumber', mpd.parsePositiveInt_) || 1; + + this.mediaUrlTemplate = mpd.parseAttr_(elem, 'media', mpd.parseString_); + this.indexUrlTemplate = mpd.parseAttr_(elem, 'index', mpd.parseString_); + this.initializationUrlTemplate = + mpd.parseAttr_(elem, 'initialization', mpd.parseString_); + + // Parse hierarchical children. + this.timeline = mpd.parseChild_(this, elem, mpd.SegmentTimeline); +}; + + +/** + * Parses a "SegmentTimeline" tag. + * @param {!shaka.dash.mpd.SegmentTemplate} parent The parent SegmentTemplate. + * @param {!Node} elem The SegmentTimeline XML element. + */ +shaka.dash.mpd.SegmentTimeline.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + this.timePoints = mpd.parseChildren_(this, elem, mpd.SegmentTimePoint); +}; + + +/** + * Parses an "S" tag. + * @param {!shaka.dash.mpd.SegmentTimeline} parent The parent SegmentTimeline. + * @param {!Node} elem The SegmentTimePoint XML element. + */ +shaka.dash.mpd.SegmentTimePoint.prototype.parse = function(parent, elem) { + var mpd = shaka.dash.mpd; + + // Parse attributes. + this.startTime = mpd.parseAttr_(elem, 't', mpd.parseNonNegativeInt_); + this.duration = mpd.parseAttr_(elem, 'd', mpd.parseNonNegativeInt_); + this.repeat = mpd.parseAttr_(elem, 'r', mpd.parseNonNegativeInt_); +}; + + +// MPD parsing utility functions ---------------------------------------------- + + +/** + * Resolves |urlString| relative to |baseUrl|. + * @param {goog.Uri} baseUrl + * @param {?string} urlString + * @return {goog.Uri} + * @private + */ +shaka.dash.mpd.resolveUrl_ = function(baseUrl, urlString) { + var url = urlString ? new goog.Uri(urlString) : null; + + if (baseUrl) { + return url ? baseUrl.resolve(url) : baseUrl; + } else { + return url; + } +}; + + +/** + * Parses a child XML element. + * @param {*} parent The parsed parent object. + * @param {!Node} elem The parent XML element. + * @param {function(new:T)} constructor The constructor of the parsed + * child XML element. The constructor must define the attribute "TAG_NAME". + * @return {T} The parsed child XML element on success, or null if a child + * XML element does not exist with the given tag name OR if there exists + * more than one child XML element with the given tag name OR if the child + * XML element could not be parsed. + * @template T + * @private + */ +shaka.dash.mpd.parseChild_ = function(parent, elem, constructor) { + var childElement = null; + + for (var i = 0; i < elem.children.length; i++) { + if (elem.children[i].tagName != constructor.TAG_NAME) { + continue; + } + if (childElement) { + return null; + } + childElement = elem.children[i]; + } + + if (!childElement) { + return null; + } + + var parsedChild = new constructor(); + parsedChild.parse.call(parsedChild, parent, childElement); + return parsedChild; +}; + + +/** + * Parses an array of child XML elements. + * @param {*} parent The parsed parent object. + * @param {!Node} elem The parent XML element. + * @param {function(new:T)} constructor The constructor of each parsed child + * XML element. The constructor must define the attribute "TAG_NAME". + * @return {!Array.} The parsed child XML elements. + * @template T + * @private + */ +shaka.dash.mpd.parseChildren_ = function(parent, elem, constructor) { + var parsedChildren = []; + + for (var i = 0; i < elem.children.length; i++) { + if (elem.children[i].tagName != constructor.TAG_NAME) { + continue; + } + var parsedChild = new constructor(); + parsedChild.parse.call(parsedChild, parent, elem.children[i]); + parsedChildren.push(parsedChild); + } + + return parsedChildren; +}; + + +/** + * Gets an array of child XML elements by tag name, without parsing them. + * @param {!Node} elem The parent XML element. + * @param {string} tagName The tag name to filter by. + * @return {!Array.} The child XML elements. + * @private + */ +shaka.dash.mpd.getChildren_ = function(elem, tagName) { + var children = []; + + for (var i = 0; i < elem.children.length; i++) { + if (elem.children[i].tagName != tagName) { + continue; + } + children.push(elem.children[i]); + } + + return children; +}; + + +/** + * Gets the text contents of a node. + * @param {!Node} elem The XML element. + * @return {?string} The text contents, or null if there are none. + * @private + */ +shaka.dash.mpd.getContents_ = function(elem) { + var contents = elem.firstChild; + if (contents.nodeType != Node.TEXT_NODE) { + return null; + } + + return contents.nodeValue; +}; + + +/** + * Parses an attribute by its name. + * @param {!Node} elem The XML element. + * @param {string} name The attribute name. + * @param {function(string): (T|null)} parseFunction A function to parse the + * attribute. + * @return {(T|null)} The parsed attribute on success, or null if the + * attribute does not exist OR could not be parsed. + * @template T + * @private + */ +shaka.dash.mpd.parseAttr_ = function(elem, name, parseFunction) { + return parseFunction(elem.getAttribute(name)); +}; + + +/** + * Parses an XML duration string. + * Note that months and years are not supported, nor are negative values. + * @param {string} durationString The duration string, e.g., "PT1H3M43.2S", + * which means 1 hour, 3 minutes, and 43.2 seconds. + * @return {?number} The parsed duration in seconds, or null if the duration + * string could not be parsed. + * @see http://www.datypic.com/sc/xsd/t-xsd_duration.html + * @private + */ +shaka.dash.mpd.parseDuration_ = function(durationString) { + if (!durationString) { + return null; + } + + var regex = + /^P(?:([0-9]*)D)?(?:T(?:([0-9]*)H)?(?:([0-9]*)M)?(?:([0-9.]*)S)?)?$/; + var matches = regex.exec(durationString); + + if (!matches) { + shaka.log.warning('Invalid duration string:', durationString); + return null; + } + + var duration = 0; + + var days = shaka.dash.mpd.parseNonNegativeInt_(matches[1]); + if (days) { + duration += 86400 * days; + } + + var hours = shaka.dash.mpd.parseNonNegativeInt_(matches[2]); + if (hours) { + duration += 3600 * hours; + } + + var minutes = shaka.dash.mpd.parseNonNegativeInt_(matches[3]); + if (minutes) { + duration += 60 * minutes; + } + + var seconds = shaka.dash.mpd.parseFloat_(matches[4]); + if (seconds) { + duration += seconds; + } + + return duration; +}; + + +/** + * Parses a range string. + * @param {string} rangeString The range string, e.g., "101-9213" + * @return {shaka.dash.mpd.Range} The parsed range, or null if the range string + * could not be parsed. + * @private + */ +shaka.dash.mpd.parseRange_ = function(rangeString) { + var matches = /([0-9]+)-([0-9]+)/.exec(rangeString); + + if (!matches) { + return null; + } + + var begin = shaka.dash.mpd.parseNonNegativeInt_(matches[1]); + if (begin == null) { + return null; + } + + var end = shaka.dash.mpd.parseNonNegativeInt_(matches[2]); + if (end == null) { + return null; + } + + return new shaka.dash.mpd.Range(begin, end); +}; + + +/** + * Parses a positive integer. + * @param {string} intString The integer string. + * @return {?number} The parsed positive integer on success; otherwise, + * return null. + * @private + */ +shaka.dash.mpd.parsePositiveInt_ = function(intString) { + var result = window.parseInt(intString, 10); + return (result > 0 ? result : null); +}; + + +/** + * Parses a non-negative integer. + * @param {string} intString The integer string. + * @return {?number} The parsed non-negative integer on success; otherwise, + * return null. + * @private + */ +shaka.dash.mpd.parseNonNegativeInt_ = function(intString) { + var result = window.parseInt(intString, 10); + return (result >= 0 ? result : null); +}; + + +/** + * Parses a floating point number. + * @param {string} floatString The floating point number string. + * @return {?number} The parsed floating point number, or null if the floating + * point number string could not be parsed. + * @private + */ +shaka.dash.mpd.parseFloat_ = function(floatString) { + var result = window.parseFloat(floatString); + return (!isNaN(result) ? result : null); +}; + + +/** + * A misnomer. Does no parsing, just returns the input string as-is. + * @param {string} inputString The inputString. + * @return {?string} The "parsed" string. The type is specified as nullable + * only to fit into the parseAttr_() template, but null will never be + * returned. + * @private + */ +shaka.dash.mpd.parseString_ = function(inputString) { + return inputString; +}; + diff --git a/lib/dash/mpd_processor.js b/lib/dash/mpd_processor.js new file mode 100644 index 0000000000..dfb9da6e94 --- /dev/null +++ b/lib/dash/mpd_processor.js @@ -0,0 +1,1560 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Processes, filters, and interprets an MPD. + */ + +goog.provide('shaka.dash.MpdProcessor'); + +goog.require('goog.Uri'); +goog.require('shaka.asserts'); +goog.require('shaka.dash.SegmentIndex'); +goog.require('shaka.dash.SegmentReference'); +goog.require('shaka.dash.mpd'); +goog.require('shaka.log'); +goog.require('shaka.player.DrmSchemeInfo'); +goog.require('shaka.player.Player'); +goog.require('shaka.util.ArrayUtils'); +goog.require('shaka.util.LanguageUtils'); +goog.require('shaka.util.MultiMap'); + + + +/** + * Set up an MPD processor. + * @param {shaka.player.DashVideoSource.ContentProtectionCallback} + * interpretContentProtection + * @constructor + * @struct + */ +shaka.dash.MpdProcessor = function(interpretContentProtection) { + /** @private {shaka.player.DashVideoSource.ContentProtectionCallback} */ + this.interpretContentProtection_ = interpretContentProtection; + + /** + * @private {!Array.} + */ + this.adaptationSetMapAndDrmSchemeByPeriod_ = []; +}; + + +/** + * Maps content types to collections of AdaptationSets. + * @typedef {!shaka.util.MultiMap.} + */ +shaka.dash.MpdProcessor.AdaptationSetMap; + + +/** + * @typedef {{adaptationSetMap: !shaka.dash.MpdProcessor.AdaptationSetMap, + * drmScheme: shaka.player.DrmSchemeInfo}} + */ +shaka.dash.MpdProcessor.AdaptationSetMapAndDrmScheme; + + +/** + * Determine the full MIME type of a Representation. + * + * @param {!shaka.dash.mpd.Representation} representation + * @return {string} + */ +shaka.dash.MpdProcessor.representationMimeType = function(representation) { + var type = representation.mimeType || ''; + if (representation.codecs) { + type += '; codecs="' + representation.codecs + '"'; + } + return type; +}; + + +/** + * Process the MPD. The MPD will be modified by having unsupported + * Representations and AdaptationSets removed, setting userData fields on + * Representations and AdaptationSets, and sorting Representations. + * + * @param {!shaka.dash.mpd.Mpd} mpd + */ +shaka.dash.MpdProcessor.prototype.process = function(mpd) { + // First, check that each Representation has only one of SegmentBase, + // SegmentList, or SegmentTemplate. + this.validateSegmentInfo_(mpd); + + // Next, generate concrete Representations from SegmentTemplates. + this.processSegmentTemplates_(mpd); + + // Next, fix up period start/duration and MPD duration attributes. + this.calculateDurations_(mpd); + + // Next, filter out any invalid Representations. + this.filterRepresentations_(mpd); + + // Next, build segment indexes for each SegmentList. + this.buildSegmentIndexes_(mpd); + + // Next, bubble up DRM scheme info to the AdaptationSet level. + this.bubbleUpDrmSchemes_(mpd); + + // Next, sort the Representations by bandwidth. + this.sortRepresentations_(mpd); + + // Finally, choose AdaptationSets for each period. + this.chooseAdaptationSets_(mpd); +}; + + +/** + * Get the number of processed periods. + * + * @return {number} + */ +shaka.dash.MpdProcessor.prototype.getNumPeriods = function() { + return this.adaptationSetMapAndDrmSchemeByPeriod_.length; +}; + + +/** + * Get the processed AdaptationSets for a given period. + * + * @param {number} periodIdx + * @param {string=} opt_type Optional content type. If left undefined then all + * AdaptationSets are returned for the given period. + * @return {!Array.} + */ +shaka.dash.MpdProcessor.prototype.getAdaptationSets = function( + periodIdx, opt_type) { + shaka.asserts.assert( + periodIdx >= 0 && + periodIdx < this.adaptationSetMapAndDrmSchemeByPeriod_.length); + + var tuple = this.adaptationSetMapAndDrmSchemeByPeriod_[periodIdx]; + if (!tuple) { + return []; + } + + return opt_type ? + tuple.adaptationSetMap.get(opt_type) || [] : + tuple.adaptationSetMap.getAll(); +}; + + +/** + * Get the common DRM scheme for a given period. + * + * @param {number} periodIdx + * @return {shaka.player.DrmSchemeInfo} + */ +shaka.dash.MpdProcessor.prototype.getDrmScheme = function(periodIdx) { + shaka.asserts.assert( + periodIdx >= 0 && + periodIdx < this.adaptationSetMapAndDrmSchemeByPeriod_.length); + + var tuple = this.adaptationSetMapAndDrmSchemeByPeriod_[periodIdx]; + if (!tuple) { + return null; + } + + return tuple.drmScheme; +}; + + +/** + * Select AdaptationSets for a given period. + * + * @param {number} periodIdx + * @param {string} preferredLang The preferred language. + * @return {!Array.} + */ +shaka.dash.MpdProcessor.prototype.selectAdaptationSets = function( + periodIdx, preferredLang) { + shaka.asserts.assert( + periodIdx >= 0 && + periodIdx < this.adaptationSetMapAndDrmSchemeByPeriod_.length); + + var tuple = this.adaptationSetMapAndDrmSchemeByPeriod_[periodIdx]; + if (!tuple) { + return []; + } + + var sets = []; + + // Add a video AdaptationSet. + var videoSets = tuple.adaptationSetMap.get('video'); + if (videoSets && videoSets.length > 0) { + shaka.asserts.assert(videoSets.length == 1); + sets.push(videoSets[0]); + } + + // Add an audio AdaptationSet. + var audioSets = tuple.adaptationSetMap.get('audio'); + if (audioSets && audioSets.length > 0) { + var favoredAudioSets = + this.filterSetsByLanguage_(audioSets, preferredLang); + + // If no matches were found, take the first audio set. + sets.push(favoredAudioSets.length > 0 ? favoredAudioSets[0] : audioSets[0]); + } + + // Add a text AdaptationSet. + var textSets = tuple.adaptationSetMap.get('text'); + if (textSets && textSets.length > 0) { + var favoredTextSets = + this.filterSetsByLanguage_(textSets, preferredLang); + + // If no matches were found, take the first subtitle set. + var textSet = favoredTextSets.length > 0 ? favoredTextSets[0] : + textSets[0]; + sets.push(textSet); + } + + return sets; +}; + + +/** + * Enforces restrictions on the video Representations can be used. + * Representations which exceed any of these restrictions will be removed. + * + * @param {!shaka.dash.mpd.Mpd} mpd + * @param {!shaka.player.DrmSchemeInfo.Restrictions} restrictions + */ +shaka.dash.MpdProcessor.prototype.enforceRestrictions = + function(mpd, restrictions) { + for (var i = 0; i < mpd.periods.length; ++i) { + var period = mpd.periods[i]; + + for (var j = 0; j < period.adaptationSets.length; ++j) { + var adaptationSet = period.adaptationSets[j]; + + for (var k = 0; k < adaptationSet.representations.length; ++k) { + var representation = adaptationSet.representations[k]; + var remove = false; + + if (restrictions.maxWidth && + representation.width > restrictions.maxWidth) { + remove = true; + } + + if (restrictions.maxHeight && + representation.height > restrictions.maxHeight) { + remove = true; + } + + if (remove) { + adaptationSet.representations.splice(k, 1); + --k; + } + } // for k + } // for j + } // for i +}; + + +/** + * Returns a list of sets matching the preferred language. + * + * @param {Array.} sets + * @param {string} preferredLang The preferred language. + * @return {!Array.} + * @private + */ +shaka.dash.MpdProcessor.prototype.filterSetsByLanguage_ = + function(sets, preferredLang) { + // Alias. + var LanguageUtils = shaka.util.LanguageUtils; + + if (sets && sets.length > 0) { + // Do a fuzzy match and stop on the lowest successful fuzz level. + var favoredSets; + for (var fuzz = LanguageUtils.MatchType.MIN; + fuzz <= LanguageUtils.MatchType.MAX; + ++fuzz) { + favoredSets = sets.filter( + function(set) { + var candidate = set.lang || ''; + return LanguageUtils.match(fuzz, preferredLang, candidate); + }); + if (favoredSets.length) { + return favoredSets; + } + } + } + return []; +}; + + +/** + * Calculate each Period's start and duration as well as the MPD's duration. + * + * @see ISO/IEC 23009-1:2014 section 5.3.2.1 + * + * @param {!shaka.dash.mpd.Mpd} mpd + * @private + */ +shaka.dash.MpdProcessor.prototype.calculateDurations_ = function(mpd) { + if (!mpd.periods.length) { + return; + } + + // "If the 'start' attribute is absent, and the Period element is the first + // in the MPD, and the MPD type is 'static', then the Period.start time shall + // be set to zero." + if (mpd.type == 'static' && mpd.periods[0].start == null) { + mpd.periods[0].start = 0; + } + + // If it's zero or truthy, it's set. This means null and NaN are not set. + var isSet = function(x) { return x == 0 || !!x; }; + + if (mpd.periods.length == 1 && + !isSet(mpd.periods[0].duration) && + isSet(mpd.duration)) { + // Assume the period's duration is equal to the MPD's + // 'mediaPresentationDuration' attribute. + mpd.periods[0].duration = mpd.duration; + } + + var totalDuration = 0; + + for (var i = 0; i < mpd.periods.length; ++i) { + var previousPeriod = mpd.periods[i - 1]; + var period = mpd.periods[i]; + + this.calculatePeriodDuration_(period); + shaka.log.debug('Period duration', period.duration); + + // "The Period extends until the Period.start of the next Period, or until + // the end of the Media Presentation in the case of the last Period." + var nextPeriod = mpd.periods[i + 1] || { start: mpd.duration }; + + // "If the 'start' attribute is absent, but the previous period contains a + // 'duration' attribute, the start time of the new Period is the sum of the + // start time of the previous period Period.start and the value of the + // attribute 'duration' of the previous Period." + if (!isSet(period.start) && + previousPeriod && isSet(previousPeriod.duration)) { + shaka.asserts.assert(isSet(previousPeriod.start)); + period.start = previousPeriod.start + previousPeriod.duration; + } + shaka.asserts.assert(isSet(period.start)); + + // "The difference between the start time of a Period and the start time + // of the following Period is the duration of the media content represented + // by this Period." + if (!isSet(period.duration) && isSet(nextPeriod.start)) { + period.duration = nextPeriod.start - period.start; + } + shaka.asserts.assert(isSet(period.duration)); + + totalDuration += period.duration; + } + shaka.asserts.assert(isSet(totalDuration)); + + var finalPeriod = mpd.periods[mpd.periods.length - 1]; + // "The Media Presentation Duration is provided either as the value of MPD + // 'mediaPresentationDuration' attribute if present, or as the sum of + // Period.start + Period.duration of the last Period." + if (!isSet(mpd.duration)) { + mpd.duration = finalPeriod.start + finalPeriod.duration; + } + shaka.asserts.assert(isSet(mpd.duration)); + shaka.asserts.assert(totalDuration == mpd.duration); +}; + + +/** + * Calculate |period|'s duration based upon its Representations. + * + * @param {!shaka.dash.mpd.Period} period + * + * @private + */ +shaka.dash.MpdProcessor.prototype.calculatePeriodDuration_ = function(period) { + if (period.duration) { + return; + } + + var maxDuration = 0; + + for (var i = 0; i < period.adaptationSets.length; ++i) { + var adaptationSet = period.adaptationSets[i]; + for (var j = 0; j < adaptationSet.representations.length; ++j) { + var representation = adaptationSet.representations[j]; + + if (!representation.segmentList) { + continue; + } + + var segmentListDuration = + this.calculateSegmentListDuration_(representation.segmentList); + + maxDuration = Math.max(maxDuration, segmentListDuration); + } + } + + period.duration = maxDuration; +}; + + +/** + * Calculates the duration of a SegmentList. + * @param {!shaka.dash.mpd.SegmentList} segmentList + * + * @return {number} The duration of |segmentList|. + * @private + */ +shaka.dash.MpdProcessor.prototype.calculateSegmentListDuration_ = function( + segmentList) { + if (segmentList.segmentDuration) { + return segmentList.segmentDuration / + segmentList.timescale * + segmentList.segmentUrls.length; + } + + var totalUnscaledDuration = 0; + + for (var i = 0; i < segmentList.segmentUrls.length; ++i) { + var segmentUrl = segmentList.segmentUrls[i]; + + shaka.asserts.assert(segmentUrl.duration); + totalUnscaledDuration += segmentUrl.duration; + } + + return totalUnscaledDuration / segmentList.timescale; +}; + + +/** + * Ensure that each Representation has only one of SegmentBase, SegmentList, + * or SegmentTemplate. + * + * @param {!shaka.dash.mpd.Mpd} mpd + * + * @private + */ +shaka.dash.MpdProcessor.prototype.validateSegmentInfo_ = function(mpd) { + for (var i = 0; i < mpd.periods.length; ++i) { + var period = mpd.periods[i]; + for (var j = 0; j < period.adaptationSets.length; ++j) { + var adaptationSet = period.adaptationSets[j]; + if (adaptationSet.contentType == 'text') continue; + + for (var k = 0; k < adaptationSet.representations.length; ++k) { + var representation = adaptationSet.representations[k]; + + var n = 0; + n += representation.segmentBase ? 1 : 0; + n += representation.segmentList ? 1 : 0; + n += representation.segmentTemplate ? 1 : 0; + + if (n == 0) { + shaka.log.warning( + 'Representation does not contain any segment information. ' + + 'Representation must contain one of SegmentBase, ' + + 'SegmentList, or SegmentTemplate.'); + adaptationSet.representations.splice(k, 1); + --k; + } else if (n != 1) { + shaka.log.warning( + 'Representation contains multiple segment information sources. ' + + 'Representation should only contain one of SegmentBase, ' + + 'SegmenstList, or SegmentTemplate.'); + if (representation.segmentBase) { + shaka.log.info('Using SegmentBase by default.'); + representation.segmentList = null; + representation.segmentTemplate = null; + } else if (representation.segmentList) { + shaka.log.info('Using SegmentList by default.'); + representation.segmentTemplate = null; + } else { + shaka.asserts.unreachable(); + } + } + } // for k + } + } +}; + + +/** + * Generates either a SegmentBase or SegmentList for each Representation that + * uses a SegmentTemplate. + * + * @see ISO/IEC 23009-1:2014 section 5.3.9.4 + * + * @param {!shaka.dash.mpd.Mpd} mpd + * @private + */ +shaka.dash.MpdProcessor.prototype.processSegmentTemplates_ = function(mpd) { + for (var i = 0; i < mpd.periods.length; ++i) { + var period = mpd.periods[i]; + for (var j = 0; j < period.adaptationSets.length; ++j) { + var adaptationSet = period.adaptationSets[j]; + for (var k = 0; k < adaptationSet.representations.length; ++k) { + var representation = adaptationSet.representations[k]; + + if (!representation.segmentTemplate) { + continue; + } + + var segmentTemplate = representation.segmentTemplate; + + // Prefer an explicit segment index URL, then a segment timeline, and + // then a segment duration. + if (segmentTemplate.indexUrlTemplate) { + if (segmentTemplate.timeline) { + shaka.log.warning( + 'Ignoring segment timeline because an explicit segment index ' + + 'URL was provided for the SegmentTemplate.'); + } + if (segmentTemplate.duration) { + shaka.log.warning( + 'Ignoring segment duration because an explicit segment index ' + + 'URL was provided for the SegmentTemplate.'); + } + this.generateSegmentBase_(representation); + if (!representation.segmentBase) { + // An error has already been logged. + adaptationSet.representations.splice(k, 1); + --k; + } + } else if (segmentTemplate.timeline) { + if (segmentTemplate.segmentDuration) { + shaka.log.warning( + 'Ignoring segment duration because a segment timeline was ' + + 'provided for the SegmentTemplate.'); + } + this.generateSegmentListFromTimeline_(representation); + if (!representation.segmentList) { + // An error has already been logged. + adaptationSet.representations.splice(k, 1); + --k; + } + } else if (segmentTemplate.segmentDuration) { + if (period.duration) { + this.generateSegmentListFromDuration_( + representation, + period.duration); + if (!representation.segmentList) { + // An error has already been logged. + adaptationSet.representations.splice(k, 1); + --k; + } + } else { + shaka.log.error( + 'SegmentTemplate provides a segment duration but the ' + + 'Period\'s duration is unknown.'); + adaptationSet.representations.splice(k, 1); + --k; + } + } else { + shaka.log.error( + 'SegmentTemplate does not provide a segment timeline, a ' + + 'segment duration, or an explicit index URL template.'); + adaptationSet.representations.splice(k, 1); + --k; + } + } // for k + } + } +}; + + +/** + * Generates a SegmentBase from a SegmentTemplate. + * Sets |representation.segmentBase| on success. + * + * @param {!shaka.dash.mpd.Representation} representation + * + * @private + */ +shaka.dash.MpdProcessor.prototype.generateSegmentBase_ = function( + representation) { + shaka.asserts.assert(representation.segmentBase == null); + shaka.asserts.assert(representation.segmentList == null); + shaka.asserts.assert(representation.segmentTemplate); + shaka.asserts.assert(representation.segmentTemplate.indexUrlTemplate); + + var segmentTemplate = representation.segmentTemplate; + var segmentBase = new shaka.dash.mpd.SegmentBase(); + + segmentBase.representationIndex = + this.generateRepresentationIndex_(representation); + if (!segmentBase.representationIndex) { + // An error has already been logged. + return; + } + + segmentBase.initialization = this.generateInitialization_(representation); + + // Generate the media URL. Since there is no SegmentTimeline there is only + // one media URL, so just map $Number$ to 1 and $Time$ to 0. + var mediaUrl; + if (segmentTemplate.mediaUrlTemplate) { + var filledUrlTemplate = this.fillUrlTemplate_( + segmentTemplate.mediaUrlTemplate, + representation.id, + 1, + representation.bandwidth, + 0); + + if (!filledUrlTemplate) { + // An error has already been logged. + return; + } + + mediaUrl = representation.baseUrl ? + representation.baseUrl.resolve(filledUrlTemplate) : + filledUrlTemplate; + } else { + // Fallback to the Representation's URL. + mediaUrl = representation.baseUrl; + } + + segmentBase.mediaUrl = mediaUrl; + representation.segmentBase = segmentBase; +}; + + +/** + * Generates a SegmentList from a SegmentTemplate which has a segment timeline. + * Sets |representation.segmentList| on success. + * + * @param {!shaka.dash.mpd.Representation} representation + * + * @private + */ +shaka.dash.MpdProcessor.prototype.generateSegmentListFromTimeline_ = function( + representation) { + shaka.asserts.assert(representation.segmentBase == null); + shaka.asserts.assert(representation.segmentList == null); + shaka.asserts.assert(representation.segmentTemplate); + shaka.asserts.assert(representation.segmentTemplate.timeline); + + var segmentTemplate = representation.segmentTemplate; + if (!segmentTemplate.mediaUrlTemplate) { + shaka.log.error('SegmentTemplate provided without a media URL template.'); + return; + } + + var segmentList = new shaka.dash.mpd.SegmentList(); + + // Note: do not copy |segmentDuration| since the segments may have different + // lengths. + segmentList.timescale = segmentTemplate.timescale; + segmentList.presentationTimeOffset = segmentTemplate.presentationTimeOffset; + segmentList.firstSegmentNumber = segmentTemplate.firstSegmentNumber; + segmentList.initialization = this.generateInitialization_(representation); + segmentList.segmentUrls = []; + + // Generate SegmentUrls. + var timePoints = segmentTemplate.timeline.timePoints; + + // The current segment number. + var segmentNumber = 1; + var lastEndTime = -1; + + for (var i = 0; i < timePoints.length; ++i) { + var repeat = timePoints[i].repeat || 0; + for (var j = 0; j <= repeat; ++j) { + if (!timePoints[i].duration) { + shaka.log.warning( + 'SegmentTimeline "S" element does not have a duration.', + timePoints[i]); + return; + } + + // Compute the time-point's true unscaled start time. + var startTime; + if (timePoints[i].startTime && j == 0) { + startTime = timePoints[i].startTime; + } else { + if (i == 0 && j == 0) { + startTime = 0; + } else { + startTime = lastEndTime; + } + } + + shaka.asserts.assert(startTime >= 0); + + if (lastEndTime >= 0 && startTime > lastEndTime) { + // The start of the current segment may begin before the end of the + // last segment, but there should not be a gap between them. + shaka.log.warning( + 'SegmentTimeline "S" element does not have a valid start time. ' + + 'There is no segment information for the time range ' + + lastEndTime + ' to ' + startTime + '.', + timePoints[i]); + return; + } + + lastEndTime = startTime + timePoints[i].duration; + + // Generate the media URL. + shaka.asserts.assert(segmentTemplate.mediaUrlTemplate); + var filledUrlTemplate = this.fillUrlTemplate_( + segmentTemplate.mediaUrlTemplate, + representation.id, + segmentNumber - 1 + segmentTemplate.firstSegmentNumber, + representation.bandwidth, + startTime); + + if (!filledUrlTemplate) { + // An error has already been logged. + return; + } + + var mediaUrl = representation.baseUrl ? + representation.baseUrl.resolve(filledUrlTemplate) : + filledUrlTemplate; + + // Create the SegmentUrl. + var segmentUrl = new shaka.dash.mpd.SegmentUrl(); + segmentUrl.mediaUrl = mediaUrl; + segmentUrl.startTime = startTime; + segmentUrl.duration = timePoints[i].duration; + + segmentList.segmentUrls.push(segmentUrl); + + ++segmentNumber; + } // for j + } + + representation.segmentList = segmentList; +}; + + +/** + * Generates a SegmentList from a SegmentTemplate which has a segment duration. + * Sets |representation.segmentList| on success. + * + * @param {!shaka.dash.mpd.Representation} representation + * @param {number} periodDuration + * + * @private + */ +shaka.dash.MpdProcessor.prototype.generateSegmentListFromDuration_ = function( + representation, periodDuration) { + shaka.asserts.assert(representation.segmentBase == null); + shaka.asserts.assert(representation.segmentList == null); + shaka.asserts.assert(representation.segmentTemplate); + shaka.asserts.assert(representation.segmentTemplate.segmentDuration); + + var segmentTemplate = representation.segmentTemplate; + if (!segmentTemplate.mediaUrlTemplate) { + shaka.log.error('SegmentTemplate provided without a media URL template.'); + return; + } + + var segmentList = new shaka.dash.mpd.SegmentList(); + + // Note: do not copy |segmentDuration| since the segments may have different + // lengths. + segmentList.timescale = segmentTemplate.timescale; + segmentList.presentationTimeOffset = segmentTemplate.presentationTimeOffset; + segmentList.firstSegmentNumber = segmentTemplate.firstSegmentNumber; + segmentList.initialization = this.generateInitialization_(representation); + segmentList.segmentUrls = []; + + // The current segment number. + var segmentNumber = 1; + var startTime = 0; + + while ((startTime / segmentList.timescale) < periodDuration) { + // Generate the media URL. + shaka.asserts.assert(segmentTemplate.mediaUrlTemplate); + var filledUrlTemplate = this.fillUrlTemplate_( + segmentTemplate.mediaUrlTemplate, + representation.id, + segmentNumber - 1 + segmentTemplate.firstSegmentNumber, + representation.bandwidth, + startTime); + + if (!filledUrlTemplate) { + // An error has already been logged. + return; + } + + var mediaUrl = representation.baseUrl ? + representation.baseUrl.resolve(filledUrlTemplate) : + filledUrlTemplate; + + // Create the SegmentUrl. + var segmentUrl = new shaka.dash.mpd.SegmentUrl(); + segmentUrl.mediaUrl = mediaUrl; + segmentUrl.startTime = startTime; + segmentUrl.duration = segmentTemplate.segmentDuration; + + segmentList.segmentUrls.push(segmentUrl); + + ++segmentNumber; + startTime += segmentTemplate.segmentDuration; + } + + representation.segmentList = segmentList; +}; + + +/** + * Generates a RepresentationIndex from a SegmentTemplate. + * + * @param {!shaka.dash.mpd.Representation} representation + * + * @return {shaka.dash.mpd.RepresentationIndex} A RepresentationIndex on + * success, null if no index URL template exists or an error occurred. + * @private + */ +shaka.dash.MpdProcessor.prototype.generateRepresentationIndex_ = function( + representation) { + shaka.asserts.assert(representation.segmentTemplate); + + var segmentTemplate = representation.segmentTemplate; + if (!segmentTemplate.indexUrlTemplate) { + return null; + } + + var representationIndex = new shaka.dash.mpd.RepresentationIndex(); + + // $Number$ and $Time$ cannot be present in an index URL template. + var filledUrlTemplate = this.fillUrlTemplate_( + segmentTemplate.indexUrlTemplate, + representation.id, + null, + representation.bandwidth, + null); + + if (!filledUrlTemplate) { + // An error has already been logged. + return null; + } + + if (representation.baseUrl && filledUrlTemplate) { + representationIndex.url = + representation.baseUrl.resolve(filledUrlTemplate); + } else { + representationIndex.url = filledUrlTemplate; + } + + return representationIndex; +}; + + +/** + * Generates an Initialization from a SegmentTemplate. + * + * @param {!shaka.dash.mpd.Representation} representation + * + * @return {shaka.dash.mpd.Initialization} An Initialization on success, null + * if no initialization URL template exists or an error occurred. + * @private + */ +shaka.dash.MpdProcessor.prototype.generateInitialization_ = function( + representation) { + shaka.asserts.assert(representation.segmentTemplate); + + var segmentTemplate = representation.segmentTemplate; + if (!segmentTemplate.initializationUrlTemplate) { + // This is not an error: the segments may be self initializing. + return null; + } + + var initialization = new shaka.dash.mpd.Initialization(); + + // $Number$ and $Time$ cannot be present in an initialization URL template. + var filledUrlTemplate = this.fillUrlTemplate_( + segmentTemplate.initializationUrlTemplate, + representation.id, + null, + representation.bandwidth, + null); + + if (!filledUrlTemplate) { + // An error has already been logged. + return null; + } + + if (representation.baseUrl && filledUrlTemplate) { + initialization.url = + representation.baseUrl.resolve(filledUrlTemplate); + } else { + initialization.url = filledUrlTemplate; + } + + return initialization; +}; + + +/** + * Fills a SegmentTemplate URL template. + * + * @see ISO/IEC 23009-1:2014 section 5.3.9.4.4 + * + * @param {string} urlTemplate + * @param {?string} representationId + * @param {?number} number + * @param {?number} bandwidth + * @param {?number} time + * + * @return {goog.Uri} A URL on success; null if the resulting URL contains + * illegal characters. + * @private + */ +shaka.dash.MpdProcessor.prototype.fillUrlTemplate_ = function( + urlTemplate, representationId, number, bandwidth, time) { + /** @type {!Object.} */ + var valueTable = { + 'RepresentationID': representationId, + 'Number': number, + 'Bandwidth': bandwidth, + 'Time': time + }; + + var re = /\$(RepresentationID|Number|Bandwidth|Time)?(?:%0([0-9]+)d)?\$/g; + var url = urlTemplate.replace(re, function(match, name, widthString) { + if (match == '$$') { + return '$'; + } + + var value = valueTable[name]; + shaka.asserts.assert(value !== undefined); + + // Note that |value| may be 0 or ''. + if (value == null) { + shaka.log.warning( + 'URL template does not have an available substitution for ' + + 'identifier ' + '"' + name + '".'); + return match; + } + + if (name == 'RepresentationID' && widthString) { + shaka.log.warning( + 'URL template should not contain a width specifier for identifier ' + + '"RepresentationID".'); + widthString = undefined; + } + + var valueString = value.toString(); + + // Create padding string. + var width = window.parseInt(widthString, 10) || 1; + var paddingSize = Math.max(0, width - valueString.length); + var padding = (new Array(paddingSize + 1)).join('0'); + + return padding + valueString; + }); + + // The URL might contain illegal characters (e.g., '%'). + try { + return new goog.Uri(url); + } catch (exception) { + if (exception instanceof URIError) { + shaka.log.warning('URL template contains an illegal character.'); + return null; + } + throw exception; + } +}; + + +/** + * Builds a SegmentIndex for each SegmentList. + * Clears each SegmentList's SegmentUrls. + * + * @param {!shaka.dash.mpd.Mpd} mpd + * + * @private + */ +shaka.dash.MpdProcessor.prototype.buildSegmentIndexes_ = function(mpd) { + for (var i = 0; i < mpd.periods.length; ++i) { + var period = mpd.periods[i]; + for (var j = 0; j < period.adaptationSets.length; ++j) { + var adaptationSet = period.adaptationSets[j]; + for (var k = 0; k < adaptationSet.representations.length; ++k) { + var representation = adaptationSet.representations[k]; + + if (!representation.segmentList) { + continue; + } + + var segmentList = representation.segmentList; + + var segmentIndex = this.createSegmentIndex_(segmentList); + if (!segmentIndex) { + // An error has already been logged. + adaptationSet.representations.splice(k, 1); + --k; + } + + // There could be hundreds of SegmentUrls; no need to keep them around. + segmentList.segmentUrls = []; + + segmentList.userData = segmentIndex; + } // for k + } + } +}; + + +/** + * Creates a SegmentIndex from a SegmentList. + * + * @param {!shaka.dash.mpd.SegmentList} segmentList + * + * @return {shaka.dash.SegmentIndex} A SegmentIndex on success; otherwise, + * return null. + * @private + */ +shaka.dash.MpdProcessor.prototype.createSegmentIndex_ = function(segmentList) { + var timescale = segmentList.timescale; + var presentationTimeOffset = segmentList.presentationTimeOffset; + var firstSegmentNumber = segmentList.firstSegmentNumber; + var segmentDuration = segmentList.segmentDuration; + + /** @type {!Array.} */ + var references = []; + + for (var i = 0; i < segmentList.segmentUrls.length; ++i) { + var segmentUrl = segmentList.segmentUrls[i]; + + /** @type {number} */ + var startTime = 0; + + /** @type {?number} */ + var endTime = null; + + /** @type {number} */ + var startByte = 0; + + /** @type {?number} */ + var endByte = null; + + // Note that |startTime| may be 0. + if (segmentUrl.startTime != null) { + shaka.asserts.assert(segmentUrl.mediaRange == null); + shaka.asserts.assert(segmentUrl.duration); + + if (i > 0 && segmentList.segmentUrls[i - 1].startTime != null) { + // Sanity check: there should not be a gap between the end of the last + // segment and the start of the current segment. + var lastTime = segmentList.segmentUrls[i - 1].startTime; + var lastDuration = segmentList.segmentUrls[i - 1].duration; + shaka.asserts.assert(lastTime + lastDuration >= segmentUrl.startTime); + } + + startTime = (presentationTimeOffset + segmentUrl.startTime) / timescale; + endTime = startTime + (segmentUrl.duration / timescale); + } else { + shaka.asserts.assert(segmentUrl.duration == null); + + if (!segmentDuration) { + shaka.log.warning( + 'SegmentList does not contain an explicit segment duration.', + segmentList); + return null; + } + + if (i == 0) { + startTime = presentationTimeOffset / timescale; + } else { + var lastTime = references[i - 1].startTime; + startTime = lastTime + (segmentDuration / timescale); + } + + endTime = startTime + (segmentDuration / timescale); + + if (segmentUrl.mediaRange) { + startByte = segmentUrl.mediaRange.begin; + endByte = segmentUrl.mediaRange.end; + } + } + + shaka.asserts.assert(segmentUrl.mediaUrl); + references.push( + new shaka.dash.SegmentReference( + i, + startTime, + endTime, + startByte, + endByte, + /** @type {!goog.Uri} */ (segmentUrl.mediaUrl))); + } + + return new shaka.dash.SegmentIndex(references); +}; + + +/** + * Remove the Representations from the given MPD that have inconsistent mime + * types, that specify unsupported types, or that specify unsupported DRM + * schemes. + * + * @param {!shaka.dash.mpd.Mpd} mpd + * @private + */ +shaka.dash.MpdProcessor.prototype.filterRepresentations_ = + function(mpd) { + for (var i = 0; i < mpd.periods.length; ++i) { + var period = mpd.periods[i]; + for (var j = 0; j < period.adaptationSets.length; ++j) { + var adaptationSet = period.adaptationSets[j]; + this.removeUnsupportedRepresentations_(adaptationSet); + this.removeInconsistentRepresentations_(adaptationSet); + if (adaptationSet.representations.length == 0) { + // Drop any AdaptationSet in which all Representations have been + // filtered out. An error has already been logged. + period.adaptationSets.splice(j, 1); + --j; + } + } + } +}; + + +/** + * Remove the Representations from the given AdaptationSet that have a + * different mime type than the mime type of the first Representation of the + * given AdaptationSet. + * + * @param {!shaka.dash.mpd.AdaptationSet} adaptationSet + * @private + */ +shaka.dash.MpdProcessor.prototype.removeInconsistentRepresentations_ = + function(adaptationSet) { + var desiredMimeType = null; + for (var i = 0; i < adaptationSet.representations.length; ++i) { + var representation = adaptationSet.representations[i]; + var mimeType = representation.mimeType || ''; + if (!desiredMimeType) { + desiredMimeType = mimeType; + } else if (mimeType != desiredMimeType) { + shaka.log.warning( + 'Representation has an inconsistent mime type.', + adaptationSet.representations[i]); + adaptationSet.representations.splice(i, 1); + --i; + } + } +}; + + +/** + * Remove the Representations from the given AdaptationSet that have + * unsupported types or that only use unsupported DRM schemes. + * + * @param {!shaka.dash.mpd.AdaptationSet} adaptationSet + * @private + */ +shaka.dash.MpdProcessor.prototype.removeUnsupportedRepresentations_ = + function(adaptationSet) { + var Player = shaka.player.Player; + + for (var i = 0; i < adaptationSet.representations.length; ++i) { + var representation = adaptationSet.representations[i]; + var type = shaka.dash.MpdProcessor.representationMimeType(representation); + + // Check which schemes the application understands. + var approvedSchemes = this.getApprovedSchemes_(representation); + // Filter through those now to find only the ones which use key systems + // and MIME types the browser supports. + var supportedSchemes = []; + var numSupported = 0; + for (var j = 0; j < approvedSchemes.length; ++j) { + var scheme = approvedSchemes[j]; + if (Player.isTypeSupported(scheme.keySystem, type)) { + supportedSchemes.push(scheme); + ++numSupported; + } + } + + // Drop any encrypted Representation whose MIME types and DRM schemes + // can't be supported by the browser. + if (numSupported == 0) { + shaka.log.warning( + 'Representation has an unsupported mime type and DRM ' + + 'scheme combination.', + adaptationSet.representations[i]); + adaptationSet.representations.splice(i, 1); + --i; + continue; + } + + // Store the list of schemes for this Representation. + representation.userData = supportedSchemes; + } +}; + + +/** + * Get all application-approved DRM schemes for a representation. + * + * @param {!shaka.dash.mpd.Representation} representation + * @return {!Array.} A list of application-approved + * schemes. A dummy scheme structure will be used for unencrypted content. + * This dummy scheme will have an empty string for |keySystem| and is used + * to simplify calculations later. + * @private + */ +shaka.dash.MpdProcessor.prototype.getApprovedSchemes_ = + function(representation) { + var approvedSchemes = []; + if (representation.contentProtections.length == 0) { + // Return a single item which indicates that the content is unencrypted. + approvedSchemes.push(shaka.player.DrmSchemeInfo.createUnencrypted()); + } else if (this.interpretContentProtection_) { + for (var i = 0; i < representation.contentProtections.length; ++i) { + var contentProtection = representation.contentProtections[i]; + var schemeInfo = this.interpretContentProtection_(contentProtection); + if (schemeInfo) { + approvedSchemes.push(schemeInfo); + } + } + } + return approvedSchemes; +}; + + +/** + * Populate each AdaptationSet with the DRM schemes common to all of its + * Representations. This is because we cannot change DRM schemes during + * playback, so we can only consider the schemes common to all of the + * Representations within an AdaptationSet. + * + * @param {!shaka.dash.mpd.Mpd} mpd + * @private + */ +shaka.dash.MpdProcessor.prototype.bubbleUpDrmSchemes_ = function(mpd) { + for (var i = 0; i < mpd.periods.length; ++i) { + var period = mpd.periods[i]; + for (var j = 0; j < period.adaptationSets.length; ++j) { + var adaptationSet = period.adaptationSets[j]; + this.bubbleUpDrmSchemesInAdaptationSet_(adaptationSet); + } + } +}; + + +/** + * Populate the given AdaptationSet with the DRM schemes common to all of its + * Representations. + * + * @param {!shaka.dash.mpd.AdaptationSet} adaptationSet + * @private + */ +shaka.dash.MpdProcessor.prototype.bubbleUpDrmSchemesInAdaptationSet_ = + function(adaptationSet) { + // Alias. + var DrmSchemeInfo = shaka.player.DrmSchemeInfo; + + // Start by building a map of all DRM schemes from the representations. + /** @type {!Object.} */ + var schemeMap = {}; + + for (var i = 0; i < adaptationSet.representations.length; ++i) { + var representation = adaptationSet.representations[i]; + var drmSchemes = /** @type {!Array.} */ ( + representation.userData); + + // Collect all unique keys. The same key may appear more than once in + // drmSchemes, in which case it should only be counted once. + var keyMap = {}; + for (var j = 0; j < drmSchemes.length; ++j) { + var drmScheme = drmSchemes[j]; + var key = drmScheme.key(); + keyMap[key] = drmScheme; + } + + for (var key in keyMap) { + if (!schemeMap.hasOwnProperty(key)) { + schemeMap[key] = {drmScheme: keyMap[key], count: 1}; + } else { + schemeMap[key].count++; + } + } + } + + // Find the key systems which appear in all Representations. + var numRepresentations = adaptationSet.representations.length; + var commonDrmSchemes = []; + for (var key in schemeMap) { + var entry = schemeMap[key]; + if (entry.count == numRepresentations) { + // This scheme is common to all representations. + commonDrmSchemes.push(entry.drmScheme); + } + } + + // Store the list of schemes for this AdaptationSet. + adaptationSet.userData = commonDrmSchemes; +}; + + +/** + * Sort Representations by bandwidth within each AdaptationSet in the MPD. + * + * @param {!shaka.dash.mpd.Mpd} mpd + * @private + */ +shaka.dash.MpdProcessor.prototype.sortRepresentations_ = function(mpd) { + for (var i = 0; i < mpd.periods.length; ++i) { + var period = mpd.periods[i]; + for (var j = 0; j < period.adaptationSets.length; ++j) { + var adaptationSet = period.adaptationSets[j]; + adaptationSet.representations.sort( + shaka.dash.MpdProcessor.compareByBandwidth_); + } + } +}; + + +/** + * @param {!shaka.dash.mpd.Representation} rep1 + * @param {!shaka.dash.mpd.Representation} rep2 + * @return {number} + * @private + */ +shaka.dash.MpdProcessor.compareByBandwidth_ = function(rep1, rep2) { + var b1 = rep1.bandwidth || Number.MAX_VALUE; + var b2 = rep2.bandwidth || Number.MAX_VALUE; + + if (b1 < b2) { + return -1; + } else if (b1 > b2) { + return 1; + } + + return 0; +}; + + +/** + * Choose AdaptationSets for each period. + * + * @param {!shaka.dash.mpd.Mpd} mpd + * @private + */ +shaka.dash.MpdProcessor.prototype.chooseAdaptationSets_ = function(mpd) { + this.adaptationSetMapAndDrmSchemeByPeriod_ = []; + for (var i = 0; i < mpd.periods.length; ++i) { + var period = mpd.periods[i]; + this.adaptationSetMapAndDrmSchemeByPeriod_.push( + this.chooseAdaptationSetsForPeriod_(period)); + } +}; + + +/** + * Choose AdaptationSets for a given period. + * + * @param {!shaka.dash.mpd.Period} period + * @return {?shaka.dash.MpdProcessor.AdaptationSetMapAndDrmScheme} + * @private + */ +shaka.dash.MpdProcessor.prototype.chooseAdaptationSetsForPeriod_ = + function(period) { + /** @type {!shaka.dash.MpdProcessor.AdaptationSetMap} */ + var byType = new shaka.util.MultiMap(); + + /** @type {!shaka.util.MultiMap.} */ + var byKeySystem = new shaka.util.MultiMap(); + + // Build multi-maps by both type and key system. + for (var i = 0; i < period.adaptationSets.length; ++i) { + var adaptationSet = period.adaptationSets[i]; + var type = adaptationSet.contentType || ''; + byType.push(type, adaptationSet); + + var drmSchemes = /** @type {!Array.} */ ( + adaptationSet.userData); + for (var j = 0; j < drmSchemes.length; ++j) { + var drmScheme = drmSchemes[j]; + byKeySystem.push(drmScheme.keySystem, adaptationSet); + } + } + + // For each desired type, make a list of key systems which can supply it. + // Keep track of the intersection of all of these lists. + var desiredTypes = ['audio', 'video', 'text']; + var intersection = null; + var allKeySystems = byKeySystem.keys(); + for (var i = 0; i < desiredTypes.length; ++i) { + var type = desiredTypes[i]; + var adaptationSets = byType.get(type); + if (!adaptationSets) { + // There is no such type available, so ignore it and move on. + shaka.log.warning('No AdaptationSets available for ' + type); + continue; + } + + var keySystems = this.buildKeySystemList_(adaptationSets, allKeySystems); + if (!intersection) { + intersection = keySystems; + } else { + intersection = shaka.util.ArrayUtils.intersect(intersection, keySystems); + } + } + + if (!intersection) { + // There are no key systems which can provide all desired types. + return null; + } + + // Any of the key systems in |intersection| is suitable. + var keySystem = intersection[0]; + + // But if unencrypted for everything is an option, prefer that. + if (intersection.indexOf('') >= 0) { + keySystem = ''; + } + + var tuple = this.chooseAdaptationSetsByKeySystem_(byType.getAll(), keySystem); + + tuple.adaptationSetMap = + this.chooseAdaptationSetsByMimeType_(tuple.adaptationSetMap); + + return tuple; +}; + + +/** + * Build a list of key systems which appear in the list of adaptation sets. + * If there is an unencrypted adaptation set, all key systems will appear in + * the output. This allows an unencrypted source to mix in with all other key + * systems. + * + * @param {!Array.} adaptationSets + * @param {!Array.} allKeySystems + * @return {!Array.} + * @private + */ +shaka.dash.MpdProcessor.prototype.buildKeySystemList_ = + function(adaptationSets, allKeySystems) { + /** @type {!Object.} */ + var keySystemMap = {}; + + for (var i = 0; i < adaptationSets.length; ++i) { + var adaptationSet = adaptationSets[i]; + var drmSchemes = /** @type {!Array.} */ ( + adaptationSet.userData); + for (var j = 0; j < drmSchemes.length; ++j) { + var drmScheme = drmSchemes[j]; + keySystemMap[drmScheme.keySystem] = null; + } + } + + if (keySystemMap.hasOwnProperty('')) { + // There is an unencrypted set in the list, so this list can match with + // any key system. + return allKeySystems; + } + + return shaka.util.ArrayUtils.fromObjectKeys(keySystemMap); +}; + + +/** + * Get the AdaptationSets that support the given key system, and get those + * AdaptationSets' common DRM scheme. + * + * @param {!Array.} adaptationSets + * @param {string} keySystem + * @return {shaka.dash.MpdProcessor.AdaptationSetMapAndDrmScheme} + * @private + */ +shaka.dash.MpdProcessor.prototype.chooseAdaptationSetsByKeySystem_ = + function(adaptationSets, keySystem) { + /** + * The AdaptationSets that support |keySystem|. + * @type {!shaka.util.MultiMap.} + */ + var allowableAdaptationSetMap = new shaka.util.MultiMap(); + + /** + * The DRM scheme shared by |allowableAdaptationSetMap|. + * @type {shaka.player.DrmSchemeInfo} + */ + var commonDrmScheme = null; + + for (var i = 0; i < adaptationSets.length; ++i) { + var adaptationSet = adaptationSets[i]; + var drmSchemes = /** @type {!Array.} */ ( + adaptationSet.userData); + for (var j = 0; j < drmSchemes.length; ++j) { + var drmScheme = drmSchemes[j]; + + // Unencrypted mixes with everything, so the empty keySystem is okay. + if (drmScheme.keySystem != keySystem && drmScheme.keySystem != '') + continue; + + shaka.asserts.assert(adaptationSet.contentType != null); + var type = /** @type {string} */ (adaptationSet.contentType); + allowableAdaptationSetMap.push(type, adaptationSet); + + if (!commonDrmScheme || !commonDrmScheme.keySystem) { + commonDrmScheme = drmScheme; + } else if (drmScheme.keySystem) { + commonDrmScheme = + shaka.player.DrmSchemeInfo.combine(commonDrmScheme, drmScheme); + } + } + } + + return { + adaptationSetMap: allowableAdaptationSetMap, + drmScheme: commonDrmScheme + }; +}; + + +/** + * Choose a single video AdaptationSet and a collection of audio AdaptationSets + * that each have the same mime type. It's assumed that within an + * AdaptationSet, each Representation has the same mime type as the first + * Representation within that AdaptationSet. + * + * @param {!shaka.dash.MpdProcessor.AdaptationSetMap} byType + * @return {!shaka.dash.MpdProcessor.AdaptationSetMap} + * @private + */ +shaka.dash.MpdProcessor.prototype.chooseAdaptationSetsByMimeType_ = + function(byType) { + var allowableAdaptationSetMap = new shaka.util.MultiMap(); + + // Add one video AdaptationSet. + var videoSets = byType.get('video'); + if (videoSets) { + allowableAdaptationSetMap.push('video', videoSets[0]); + } + + // Add audio AdaptationSets. + var audioSets = byType.get('audio'); + if (audioSets) { + for (var i = 0; i < audioSets.length; ++i) { + if (audioSets[i].mimeType == audioSets[0].mimeType) { + allowableAdaptationSetMap.push('audio', audioSets[i]); + } + } + } + + // Add text AdaptationSets. + var textSets = byType.get('text'); + if (textSets) { + for (var i = 0; i < textSets.length; ++i) { + allowableAdaptationSetMap.push('text', textSets[i]); + } + } + + return allowableAdaptationSetMap; +}; + diff --git a/lib/dash/mpd_request.js b/lib/dash/mpd_request.js new file mode 100644 index 0000000000..fd15d87fc7 --- /dev/null +++ b/lib/dash/mpd_request.js @@ -0,0 +1,62 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements an MPD request. + */ + +goog.provide('shaka.dash.MpdRequest'); + +goog.require('shaka.dash.mpd'); +goog.require('shaka.util.AjaxRequest'); + + + +/** + * Creates an MpdRequest. + * + * @param {string} url The URL. + * + * @struct + * @constructor + * @extends {shaka.util.AjaxRequest} + */ +shaka.dash.MpdRequest = function(url) { + shaka.util.AjaxRequest.call(this, url); + this.parameters.responseType = 'text'; +}; +goog.inherits(shaka.dash.MpdRequest, shaka.util.AjaxRequest); + + +/** + * Sends the MPD request. + * @return {!Promise.} + */ +shaka.dash.MpdRequest.prototype.send = function() { + var url = this.url; + return this.sendInternal().then( + /** @param {!XMLHttpRequest} xhr */ + function(xhr) { + var mpd = shaka.dash.mpd.parseMpd(xhr.responseText, url); + if (mpd) { + return Promise.resolve(mpd); + } + + var error = new Error('MPD parse failure.'); + error.type = 'mpd'; + return Promise.reject(error); + } + ); +}; + diff --git a/lib/dash/segment_index.js b/lib/dash/segment_index.js new file mode 100644 index 0000000000..929d85ff21 --- /dev/null +++ b/lib/dash/segment_index.js @@ -0,0 +1,118 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a segment index. + */ + +goog.provide('shaka.dash.SegmentIndex'); + +goog.require('shaka.asserts'); +goog.require('shaka.dash.SegmentRange'); +goog.require('shaka.dash.SegmentReference'); + + + +/** + * Creates a SegmentIndex. + * + * @param {!Array.} references Sorted by time in + * ascending order. + * @constructor + */ +shaka.dash.SegmentIndex = function(references) { + /** @private {!Array.} */ + this.references_ = references; +}; + + +/** + * Gets the number of SegmentReferences. + * + * @return {number} + */ +shaka.dash.SegmentIndex.prototype.getNumReferences = function() { + return this.references_.length; +}; + + +/** + * Gets the SegmentReference at the given index. + * + * @param {number} index + * @return {shaka.dash.SegmentReference} The SegmentReference or null if |index| + * is out of range. + */ +shaka.dash.SegmentIndex.prototype.getReference = function(index) { + if (index < 0 || index >= this.references_.length) { + return null; + } + + return this.references_[index]; +}; + + +/** + * Gets the SegmentRange that contains the timestamps |startTime| and + * |startTime| + |duration|. + * + * @param {number} startTime The starting time in seconds. + * @param {number} duration The interval's duration in seconds. + * @return {shaka.dash.SegmentRange} The SegmentRange or null if there are no + * segments. + */ +shaka.dash.SegmentIndex.prototype.getRangeForInterval = + function(startTime, duration) { + var beginIndex = this.findReferenceIndex(startTime); + if (beginIndex < 0) { + return null; + } + + /** @type {!Array.} */ + var references = []; + + for (var i = beginIndex; i < this.references_.length; i++) { + references.push(this.references_[i]); + var endTime = this.references_[i].endTime; + // Note: the end time is exclusive! + if (!endTime || (endTime > startTime + duration)) { + break; + } + } + + return new shaka.dash.SegmentRange(references); +}; + + +/** + * Gets the index of the SegmentReference for the specified time. + * + * @param {number} time The time in seconds. + * @return {number} The index of the SegmentReference for the specified time. + * 0 is returned if |time| is less than the first segment's time. The + * index of the last SegmentReference is returned if |time| is greater than + * the last segment's time. -1 is returned if there are no segments. + */ +shaka.dash.SegmentIndex.prototype.findReferenceIndex = function(time) { + for (var i = 0; i < this.references_.length; i++) { + if (this.references_[i].startTime > time) { + return i ? i - 1 : 0; + } + } + + // |time| is greater than the |startTime| field of all references, or there + // are no references. + return this.references_.length - 1; +}; + diff --git a/lib/dash/segment_range.js b/lib/dash/segment_range.js new file mode 100644 index 0000000000..5614bd772b --- /dev/null +++ b/lib/dash/segment_range.js @@ -0,0 +1,56 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a SegmentRange, which represents a set of one or + * more contiguous segments. + */ + +goog.provide('shaka.dash.SegmentRange'); + +goog.require('shaka.asserts'); +goog.require('shaka.dash.SegmentReference'); + + + +/** + * Creates a SegmentRange, which represents a set of one or more contiguous + * segments. + * + * @param {!Array.} references A set of + * references to contiguous segments. There must be at least one reference. + * + * @constructor + * @struct + */ +shaka.dash.SegmentRange = function(references) { + shaka.asserts.assert(references.length > 0); + + /** @type {!Array.} */ + this.references = references; +}; + + +/** + * Gets the time range. + * + * @return {{begin: number, end: ?number}} + */ +shaka.dash.SegmentRange.prototype.getTimeRange = function() { + return { + begin: this.references[0].startTime, + end: this.references[this.references.length - 1].endTime + }; +}; + diff --git a/lib/dash/segment_reference.js b/lib/dash/segment_reference.js new file mode 100644 index 0000000000..2a0480ffab --- /dev/null +++ b/lib/dash/segment_reference.js @@ -0,0 +1,100 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a segment reference structure. + */ + +goog.provide('shaka.dash.SegmentReference'); + +goog.require('goog.Uri'); + + + +/** + * Creates a SegmentReference, which is a reference to some media segment. + * + * @param {number} index The segment's number, starting at 0, within the stream. + * @param {number} startTime The time, in seconds, that the segment begins. + * @param {?number} endTime The time, in seconds, that the segment ends. The + * segment ends immediately before this time. A null value indicates that + * the segment continues to the end of the stream. + * @param {number} startByte The position of the segment's first byte. + * @param {?number} endByte The position of the segment's last byte, inclusive. + * A null value indicates that the segment continues to the end of the + * file located at |url|. + * @param {!goog.Uri} url The segment's location. + * @constructor + * @struct + */ +shaka.dash.SegmentReference = function( + index, startTime, endTime, startByte, endByte, url) { + /** + * The segment's number, starting at 0, within the stream. + * @const {number} + */ + this.index = index; + + /** + * The time, in seconds, that the segment begins. + * @const {number} + */ + this.startTime = startTime; + + /** + * The time, in seconds, that the segment ends. The segment ends immediately + * before this time. A null value indicates that the segment continues to the + * end of the stream. + * @const {?number} + */ + this.endTime = endTime; + + /** + * The position of the segment's first byte. + * @const {number} + */ + this.startByte = startByte; + + /** + * The position of the segment's last byte, inclusive. A null value indicates + * that the segment continues to the end of the file located at |url|. + * @const {?number} + */ + this.endByte = endByte; + + /** + * The segment's location. + * @const {!goog.Uri} + */ + this.url = url; +}; + + +/** + * Compares two SegmentReference objects by their start time. + * @param {!shaka.dash.SegmentReference} ref1 + * @param {!shaka.dash.SegmentReference} ref2 + * @return {number} + * @export + */ +shaka.dash.SegmentReference.compare = function(ref1, ref2) { + if (ref1.startTime < ref2.startTime) { + return -1; + } else if (ref1.startTime > ref2.startTime) { + return 1; + } + + return 0; +}; + diff --git a/lib/dash/source_buffer_manager.js b/lib/dash/source_buffer_manager.js new file mode 100644 index 0000000000..1e99f4490f --- /dev/null +++ b/lib/dash/source_buffer_manager.js @@ -0,0 +1,546 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Manages a SourceBuffer an provides an enhanced interface + * based on Promises. + */ + +goog.provide('shaka.dash.SourceBufferManager'); + +goog.require('shaka.asserts'); +goog.require('shaka.dash.SegmentRange'); +goog.require('shaka.util.EventManager'); +goog.require('shaka.util.IBandwidthEstimator'); +goog.require('shaka.util.PublicPromise'); +goog.require('shaka.util.RangeRequest'); + + + +/** + * Creates a SourceBufferManager (SBM). + * + * The SBM manages access to a SourceBuffer object through a fetch operation + * and a clear operation. It also maintains a "virtual source buffer" to keep + * track of which segments have been appended to the actual underlying source + * buffer. The SBM uses this virtual source buffer because it cannot rely on + * the browser to tell it what is in the underlying SourceBuffer because the + * segment index may use PTS (presentation timestamps) and the browser may use + * DTS (decoding timestamps) or vice-versa. + * + * @param {!MediaSource} mediaSource The SourceBuffer's parent MediaSource. + * @param {!SourceBuffer} sourceBuffer + * @param {shaka.util.IBandwidthEstimator} estimator A bandwidth estimator to + * attach to all requests. + * @struct + * @constructor + */ +shaka.dash.SourceBufferManager = function( + mediaSource, sourceBuffer, estimator) { + /** @private {!MediaSource} */ + this.mediaSource_ = mediaSource; + + /** @private {!SourceBuffer} */ + this.sourceBuffer_ = sourceBuffer; + + /** @private {shaka.util.IBandwidthEstimator} */ + this.estimator_ = estimator; + + /** @private {!shaka.util.EventManager} */ + this.eventManager_ = new shaka.util.EventManager(); + + /** + * An array that indicates which segments are buffered. + * @private {!Array.} + */ + this.buffered_ = []; + + /** @private {shaka.dash.SourceBufferManager.State_} */ + this.state_ = shaka.dash.SourceBufferManager.State_.IDLE; + + /** @private {Promise} */ + this.promise_ = null; + + /** @private {Promise} */ + this.abortPromise_ = null; + + /** + * The current SegmentReferences being fetched or appended. + * @private {!Array.} + */ + this.references_ = []; + + /** + * The current request while fetching. + * @private {shaka.util.RangeRequest} + */ + this.request_ = null; + + /** + * The current segment data being fetched or appended. + * @private {!Array.} + */ + this.segments_ = []; + + this.eventManager_.listen( + this.sourceBuffer_, + 'updateend', + this.onSourceBufferUpdateEnd_.bind(this)); +}; + + +/** + * SBM states. + * @enum + * @private + */ +shaka.dash.SourceBufferManager.State_ = { + IDLE: 0, + REQUESTING: 1, + APPENDING: 2, + CLEARING: 3, + ABORTING: 4 +}; + + +/** + * Destroys the SourceBufferManager. + * @suppress {checkTypes} to set otherwise non-nullable types to null. + */ +shaka.dash.SourceBufferManager.prototype.destroy = function() { + this.abort(); + + this.state_ = null; + this.segments_ = null; + this.request_ = null; + this.references_ = null; + this.abortPromise_ = null; + this.promise_ = null; + + this.eventManager_.destroy(); + this.eventManager_ = null; + + this.buffered_ = null; + + this.sourceBuffer_ = null; + this.mediaSource_ = null; +}; + + +/** + * Checks if the given segment is buffered. + * + * @param {number} index The segment's index. + * @return {boolean} True if the segment is buffered. + */ +shaka.dash.SourceBufferManager.prototype.isBuffered = function(index) { + return this.buffered_[index] == true; +}; + + +/** + * Fetches the segments specified by the given SegmentRange and appends the + * retrieved segment data to the underlying SourceBuffer. This cannot be called + * if another operation is in progress. + * + * @param {!shaka.dash.SegmentRange} segmentRange + * @param {!ArrayBuffer=} opt_initSegment Optional initialization segment that + * will be appended to the underlying SourceBuffer before the retrieved + * segment data. + * + * @return {!Promise} + */ +shaka.dash.SourceBufferManager.prototype.fetch = function( + segmentRange, opt_initSegment) { + shaka.log.v1('fetch'); + + // Alias. + var SBM = shaka.dash.SourceBufferManager; + + // Check state. + shaka.asserts.assert(this.state_ == SBM.State_.IDLE); + if (this.state_ != SBM.State_.IDLE) { + var error = new Error('Cannot fetch: previous operation not complete.'); + error.type = 'dash'; + return Promise.reject(error); + } + + shaka.asserts.assert(this.promise_ == null); + shaka.asserts.assert(this.references_.length == 0); + shaka.asserts.assert(this.request_ == null); + shaka.asserts.assert(this.segments_.length == 0); + + this.state_ = SBM.State_.REQUESTING; + this.promise_ = new shaka.util.PublicPromise(); + this.references_ = segmentRange.references; + + if (opt_initSegment) { + this.segments_.push(opt_initSegment); + } + + // If the segments are all located at the same URL then only a single request + // is required. + var singleLocation = true; + + var firstUrl = this.references_[0].url.toString(); + for (var i = 1; i < this.references_.length; ++i) { + if (this.references_[i].url.toString() != firstUrl) { + singleLocation = false; + break; + } + } + + // Send the request. If this.abort() is called before |this.request_|'s + // promise is resolved then |this.request_|'s promise will be rejected via a + // call to this.request_.abort(). + var p = singleLocation ? + this.fetchFromSingleUrl_() : + this.fetchFromMultipleUrls_(); + + p.then(shaka.util.TypedBind(this, + function() { + shaka.log.debug('Estimated bandwidth:', + (this.estimator_.getBandwidth() / 1e6).toFixed(2), 'Mbps'); + + this.sourceBuffer_.appendBuffer(this.segments_.shift()); + this.state_ = SBM.State_.APPENDING; + this.request_ = null; + }) + ).catch(shaka.util.TypedBind(this, + /** @param {!Error} error */ + function(error) { + if (error.type != 'aborted') { + this.rejectPromise_(error); + } + }) + ); + + return this.promise_; +}; + + +/** + * Returns a promise to fetch one or more segments from the same location. The + * promise will resolve once the request completes. This synchronously sets + * |request_| to the request in progress. + * + * @return {!Promise} + * @private + */ +shaka.dash.SourceBufferManager.prototype.fetchFromSingleUrl_ = function() { + shaka.log.v1('fetchFromSingleUrl_'); + shaka.asserts.assert(this.references_.length > 0); + shaka.asserts.assert(this.request_ == null); + + this.request_ = new shaka.util.RangeRequest( + this.references_[0].url.toString(), + this.references_[0].startByte, + this.references_[this.references_.length - 1].endByte); + + this.request_.estimator = this.estimator_; + + return this.request_.send().then(this.appendSegment_.bind(this)); +}; + + +/** + * Returns a promise to fetch multiple segments from different locations. The + * promise will resolve once the last request completes. This synchronously + * sets |request_| to the first request and then asynchronously sets |request_| + * to the request in progress. + * + * @return {!Promise} + * @private + */ +shaka.dash.SourceBufferManager.prototype.fetchFromMultipleUrls_ = function() { + shaka.log.v1('fetchFromMultipleUrls_'); + shaka.asserts.assert(this.references_.length > 0); + shaka.asserts.assert(this.request_ == null); + + /** + * Requests the segment specified by |reference|. + * @param {!shaka.dash.SegmentReference} reference + * @this {shaka.dash.SourceBufferManager} + * @return {!Promise.} + */ + var requestSegment = function(reference) { + this.request_ = new shaka.util.RangeRequest( + reference.url.toString(), + reference.startByte, + reference.endByte); + + this.request_.estimator = this.estimator_; + + return this.request_.send(); + }; + + // Request the first segment. + var p = shaka.util.TypedBind(this, requestSegment)(this.references_[0]); + + // Request the subsequent segments. + var appendSegment = this.appendSegment_.bind(this); + for (var i = 1; i < this.references_.length; ++i) { + var requestNextSegment = requestSegment.bind(this, this.references_[i]); + p = p.then(appendSegment).then(requestNextSegment); + } + + p = p.then(shaka.util.TypedBind(this, this.appendSegment_)); + + return p; +}; + + +/** + * Appends |data| to |segments_|. + * + * @param {!ArrayBuffer} data + * @return {!Promise} + * @private + */ +shaka.dash.SourceBufferManager.prototype.appendSegment_ = function(data) { + this.segments_.push(data); + return Promise.resolve(); +}; + + +/** + * Resets the virtual source buffer and clears all media from the underlying + * SourceBuffer. The returned promise will resolve immediately if there is no + * media within the underlying SourceBuffer. This cannot be called if another + * operation is in progress. + * + * @return {!Promise} + */ +shaka.dash.SourceBufferManager.prototype.clear = function() { + shaka.log.v1('clear'); + + // Alias. + var SBM = shaka.dash.SourceBufferManager; + + // Check state. + shaka.asserts.assert(this.state_ == SBM.State_.IDLE); + if (this.state_ != SBM.State_.IDLE) { + var error = new Error('Cannot clear: previous operation not complete.'); + error.type = 'dash'; + return Promise.reject(error); + } + + shaka.asserts.assert(this.promise_ == null); + shaka.asserts.assert(this.references_.length == 0); + shaka.asserts.assert(this.request_ == null); + shaka.asserts.assert(this.segments_.length == 0); + + if (this.sourceBuffer_.buffered.length == 0) { + shaka.log.v1('Nothing to clear.'); + shaka.asserts.assert(this.buffered_.length == 0); + return Promise.resolve(); + } + + try { + // This will trigger an 'updateend' event. + this.sourceBuffer_.remove(0, Number.POSITIVE_INFINITY); + } catch (exception) { + shaka.log.debug('Failed to clear buffer:', exception); + return Promise.reject(exception); + } + + // Clear |buffered_| immediately since any buffered segments will be + // gone soon. + this.buffered_ = []; + + this.state_ = SBM.State_.CLEARING; + this.promise_ = new shaka.util.PublicPromise(); + + return this.promise_; +}; + + +/** + * Resets the virtual source buffer without removing any media from the + * underlying SourceBuffer. This can be called at any time. + */ +shaka.dash.SourceBufferManager.prototype.reset = function() { + this.buffered_ = []; +}; + + +/** + * Aborts the current operation if one exists. This should not be called + * if the current operation is an abort operation. The returned promise + * will never be rejected. + * + * @return {!Promise} + */ +shaka.dash.SourceBufferManager.prototype.abort = function() { + shaka.log.v1('abort'); + + // Alias. + var SBM = shaka.dash.SourceBufferManager; + + shaka.asserts.assert(this.abortPromise_ == null); + shaka.asserts.assert(this.state_ != SBM.State_.ABORTING); + + switch (this.state_) { + case SBM.State_.IDLE: + return Promise.resolve(); + case SBM.State_.REQUESTING: + shaka.log.info('Aborting request...'); + shaka.asserts.assert(this.request_); + this.state_ = SBM.State_.ABORTING; + + // We do not need to wait for |request_| to completely stop. It is + // enough to know that no SourceBuffer operations are in progress when + // the abort promise is resolved. + + // Create a new promise where resolveAbortPromise_() will look for it. + this.abortPromise_ = new shaka.util.PublicPromise(); + // Keep a local reference since resolveAbortPromise_() will nullify it. + var p = this.abortPromise_; + // Abort the request. + this.request_.abort(); + // Reject the original promise and resolve the abort promise. + this.resolveAbortPromise_(); + // Return the local reference to the abort promise. + return p; + case SBM.State_.APPENDING: + case SBM.State_.CLEARING: + shaka.log.info('Aborting append/clear...'); + this.state_ = SBM.State_.ABORTING; + this.abortPromise_ = new shaka.util.PublicPromise(); + // If |mediaSource_| is open and aborting will not cause an exception, + // call abort() on |sourceBuffer_|. This will trigger an 'updateend' + // event if updating (e.g., appending or removing). + if (this.mediaSource_.readyState == 'open') { + this.sourceBuffer_.abort(); + } + shaka.asserts.assert(this.sourceBuffer_.updating == false); + return this.abortPromise_; + case SBM.State_.ABORTING: + // This case should not happen, but handle it just in case it occurs in + // production. + shaka.log.error('Already aborting!'); + shaka.asserts.assert(this.abortPromise_); + return /** @type {!Promise} */ (this.abortPromise_); + } + + shaka.asserts.unreachable(); +}; + + +/** + * |sourceBuffer_|'s 'updateend' callback. + * + * @param {!Event} event + * + * @private + */ +shaka.dash.SourceBufferManager.prototype.onSourceBufferUpdateEnd_ = + function(event) { + shaka.log.v1('onSourceBufferUpdateEnd_'); + + // Alias. + var SBM = shaka.dash.SourceBufferManager; + + shaka.asserts.assert(this.sourceBuffer_.updating == false); + shaka.asserts.assert(this.state_ == SBM.State_.APPENDING || + this.state_ == SBM.State_.CLEARING || + this.state_ == SBM.State_.ABORTING); + shaka.asserts.assert(this.promise_); + shaka.asserts.assert(this.request_ == null); + + switch (this.state_) { + case SBM.State_.APPENDING: + // A segment has been appended so update |buffered_|. + shaka.asserts.assert(this.references_.length > 0); + + if (this.segments_.length > 0) { + // Append the next segment. + try { + this.sourceBuffer_.appendBuffer(this.segments_.shift()); + } catch (exception) { + shaka.log.debug('Failed to append buffer:', exception); + this.rejectPromise_(exception); + } + return; + } + + // Update |buffered_|. Note that if we abort an append then there may be + // segments in the underlying source buffer that are not indicated in + // |buffered_|. However, this should not cause any harm. + for (var i = 0; i < this.references_.length; ++i) { + var r = this.references_[i]; + this.buffered_[r.index] = true; + // To solve bug #18597156, where buffered ranges manifest a gap after + // seeking. All data after the gap is unusable, so always treat the + // next segment as one you don't have. If you don't seek, or if you + // only seek forward, this has no effect. + this.buffered_[r.index + 1] = false; + } + this.references_ = []; + + // Fall-through. + case SBM.State_.CLEARING: + this.state_ = SBM.State_.IDLE; + this.promise_.resolve(); + this.promise_ = null; + break; + case SBM.State_.ABORTING: + this.resolveAbortPromise_(); + break; + default: + shaka.asserts.unreachable(); + } +}; + + +/** + * Resolves |abortPromise_|, and then calls rejectPromise_(). + * + * @private + */ +shaka.dash.SourceBufferManager.prototype.resolveAbortPromise_ = function() { + shaka.log.v1('resolveAbortPromise_'); + shaka.asserts.assert(this.abortPromise_); + + this.abortPromise_.resolve(); + this.abortPromise_ = null; + + var error = new Error('Current operation aborted.'); + error.type = 'aborted'; + + this.rejectPromise_(error); +}; + + +/** + * Rejects |promise_| and puts the SBM into the IDLE state. + * + * @param {!Error} error + * + * @private + */ +shaka.dash.SourceBufferManager.prototype.rejectPromise_ = function(error) { + shaka.log.v1('rejectPromise_'); + shaka.asserts.assert(this.promise_); + shaka.asserts.assert(this.abortPromise_ == null); + + this.promise_.reject(error); + + this.state_ = shaka.dash.SourceBufferManager.State_.IDLE; + this.promise_ = null; + this.references_ = []; + this.request_ = null; + this.segments_ = []; +}; + diff --git a/lib/dash/webm_segment_index_parser.js b/lib/dash/webm_segment_index_parser.js new file mode 100644 index 0000000000..37479342d2 --- /dev/null +++ b/lib/dash/webm_segment_index_parser.js @@ -0,0 +1,346 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a WebM segment index parser. + */ + +goog.provide('shaka.dash.WebmSegmentIndexParser'); + +goog.require('shaka.asserts'); +goog.require('shaka.dash.ISegmentIndexParser'); +goog.require('shaka.dash.SegmentReference'); +goog.require('shaka.log'); +goog.require('shaka.util.EbmlElement'); +goog.require('shaka.util.EbmlParser'); + + + +/** + * A parser for WebM index data. + * + * @param {!goog.Uri} mediaUrl The location of the segments, i.e., all parsed + * SegmentReferences are assumed to be retrievable from |mediaUrl|. + * + * @constructor + * @implements {shaka.dash.ISegmentIndexParser} + */ +shaka.dash.WebmSegmentIndexParser = function(mediaUrl) { + /** @private {!goog.Uri} */ + this.mediaUrl_ = mediaUrl; +}; + + +/** @override */ +shaka.dash.WebmSegmentIndexParser.prototype.parse = + function(initSegmentData, indexData, indexOffset) { + var references = null; + + shaka.asserts.assert(initSegmentData); + try { + references = this.parseInternal_( + /** @type {!DataView} */ (initSegmentData), indexData); + } catch (exception) { + if (!(exception instanceof RangeError)) { + throw exception; + } + } + + return references; +}; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.EBML_ID = 0x1a45dfa3; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.SEGMENT_ID = 0x18538067; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.INFO_ID = 0x1549a966; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.TIMECODE_SCALE_ID = 0x2ad7b1; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.CUES_ID = 0x1c53bb6b; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.CUE_POINT_ID = 0xbb; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.CUE_TIME_ID = 0xb3; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.CUE_TRACK_POSITIONS_ID = 0xb7; + + +/** @const {number} */ +shaka.dash.WebmSegmentIndexParser.CUE_CLUSTER_POSITION = 0xf1; + + +/** + * Parses a segment index from a WebM container. + * @param {!DataView} webmData The WebM container data. + * @param {!DataView} cuesData The WebM container's "Cueing Data" section. + * @return {Array.} The segment references, or + * null if an error occurred + * @throws {RangeError} + * @see http://www.matroska.org/technical/specs/index.html + * @see http://www.webmproject.org/docs/container/ + * @private + */ +shaka.dash.WebmSegmentIndexParser.prototype.parseInternal_ = function( + webmData, cuesData) { + var tuple = this.parseWebmContainer_(webmData); + if (!tuple) { + return null; + } + + var parser = new shaka.util.EbmlParser(cuesData); + var cuesElement = parser.parseElement(); + if (cuesElement.id != shaka.dash.WebmSegmentIndexParser.CUES_ID) { + shaka.log.error('CuesElement does not exist.'); + return null; + } + + return this.parseCues_(cuesElement, tuple.segmentOffset, tuple.timecodeScale); +}; + + +/** + * Parses a WebM container to get the segment's offset and timecode scale. + * @param {!DataView} webmData + * @return {?{segmentOffset: number, timecodeScale: number}} The segment's + * offset in bytes, and the segment's timecode scale in seconds. + * @private + */ +shaka.dash.WebmSegmentIndexParser.prototype.parseWebmContainer_ = function( + webmData) { + var parser = new shaka.util.EbmlParser(webmData); + + // Check that the WebM container data starts with the EBML header, but + // skip its contents. + var ebmlElement = parser.parseElement(); + if (ebmlElement.id != shaka.dash.WebmSegmentIndexParser.EBML_ID) { + shaka.log.error('EBML element does not exist.'); + return null; + } + + var segmentElement = parser.parseElement(); + if (segmentElement.id != shaka.dash.WebmSegmentIndexParser.SEGMENT_ID) { + shaka.log.error('Segment element does not exist.'); + return null; + } + + // This value is used as the initial offset to the first referenced segment. + var segmentOffset = segmentElement.getOffset(); + + // Parse the Segment element to get the segment's timecode scale. + var timecodeScale = this.parseSegment_(segmentElement); + if (!timecodeScale) { + return null; + } + + return { segmentOffset: segmentOffset, timecodeScale: timecodeScale }; +}; + + +/** + * Parses a WebM Info element to get the segment's timecode scale. + * @param {!shaka.util.EbmlElement} segmentElement + * @return {?number} The segment's timecode scale in seconds, or null if an + * error occurred. + * @private + */ +shaka.dash.WebmSegmentIndexParser.prototype.parseSegment_ = function( + segmentElement) { + var parser = segmentElement.createParser(); + + // Find the Info element. + var infoElement = null; + while (parser.hasMoreData()) { + var elem = parser.parseElement(); + if (elem.id != shaka.dash.WebmSegmentIndexParser.INFO_ID) { + continue; + } + + infoElement = elem; + + break; + } + + if (!infoElement) { + shaka.log.error('Info element does not exist.'); + return null; + } + + return this.parseInfo_(infoElement); +}; + + +/** + * Parses a WebM Info element to get the segment's timecode scale. + * @param {!shaka.util.EbmlElement} infoElement + * @return {number} The segment's timecode scale in seconds. + * @private + */ +shaka.dash.WebmSegmentIndexParser.prototype.parseInfo_ = function(infoElement) { + var parser = infoElement.createParser(); + + // The timecode scale factor in units of [nanoseconds / T], where [T] are the + // units used to express all other time values in the WebM container. By + // default it's assumed that [T] == [milliseconds]. + var timecodeScaleNanoseconds = 1000000; + + while (parser.hasMoreData()) { + var elem = parser.parseElement(); + if (elem.id != shaka.dash.WebmSegmentIndexParser.TIMECODE_SCALE_ID) { + continue; + } + + timecodeScaleNanoseconds = elem.getUint(); + + break; + } + + // The timecode scale factor in units of [seconds / T]. + var timecodeScale = timecodeScaleNanoseconds / 1000000000; + + return timecodeScale; +}; + + +/** + * Parses a WebM CuesElement. + * @param {!shaka.util.EbmlElement} cuesElement + * @param {number} segmentOffset + * @param {number} timecodeScale + * @return {Array.} The segment references. + * @private + */ +shaka.dash.WebmSegmentIndexParser.prototype.parseCues_ = function( + cuesElement, segmentOffset, timecodeScale) { + var parser = cuesElement.createParser(); + + /** @type {Array.} */ + var references = []; + + var lastTime = -1; + var lastOffset = -1; + var index = 0; + + while (parser.hasMoreData()) { + var elem = parser.parseElement(); + if (elem.id != shaka.dash.WebmSegmentIndexParser.CUE_POINT_ID) { + continue; + } + + var tuple = this.parseCuePoint_(elem); + if (!tuple) { + continue; + } + + var currentTime = timecodeScale * tuple.unscaledTime; + var currentOffset = segmentOffset + tuple.relativeOffset; + + if (lastTime >= 0) { + shaka.asserts.assert(lastOffset >= 0); + + references.push( + new shaka.dash.SegmentReference( + index, + lastTime, + currentTime, + lastOffset, + currentOffset - 1, + this.mediaUrl_)); + + ++index; + } + + lastTime = currentTime; + lastOffset = currentOffset; + } + + if (lastTime >= 0) { + shaka.asserts.assert(lastOffset >= 0); + + references.push( + new shaka.dash.SegmentReference( + index, + lastTime, + null, + lastOffset, + null, + this.mediaUrl_)); + } + + return references; +}; + + +/** + * Parses a WebM CuePointElement to get an "unadjusted" segment reference. + * @param {shaka.util.EbmlElement} cuePointElement + * @return {?{unscaledTime: number, relativeOffset: number}} The referenced + * segment's start time in units of [T] (see parseInfo_()), and the + * referenced segment's offset in bytes, relative to a WebM Segment + * element. + * @private + */ +shaka.dash.WebmSegmentIndexParser.prototype.parseCuePoint_ = function( + cuePointElement) { + var parser = cuePointElement.createParser(); + + // Parse CueTime element. + var cueTimeElement = parser.parseElement(); + if (cueTimeElement.id != shaka.dash.WebmSegmentIndexParser.CUE_TIME_ID) { + shaka.log.warning('CueTime element does not exist.'); + return null; + } + var unscaledTime = cueTimeElement.getUint(); + + // Parse CueTrackPositions element. + var cueTrackPositionsElement = parser.parseElement(); + if (cueTrackPositionsElement.id != + shaka.dash.WebmSegmentIndexParser.CUE_TRACK_POSITIONS_ID) { + shaka.log.warning('CueTrackPositions element does not exist.'); + return null; + } + + var cueTrackParser = cueTrackPositionsElement.createParser(); + var relativeOffset = 0; + + while (cueTrackParser.hasMoreData()) { + var elem = cueTrackParser.parseElement(); + if (elem.id != shaka.dash.WebmSegmentIndexParser.CUE_CLUSTER_POSITION) { + continue; + } + + relativeOffset = elem.getUint(); + + break; + } + + return { unscaledTime: unscaledTime, relativeOffset: relativeOffset }; +}; + diff --git a/lib/debug/asserts.js b/lib/debug/asserts.js new file mode 100644 index 0000000000..b0cc401022 --- /dev/null +++ b/lib/debug/asserts.js @@ -0,0 +1,57 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements assert functions which can be compiled out. + */ + +goog.provide('shaka.asserts'); + + +/** + * @namespace shaka.asserts + * @summary An assertion framework which is compiled out for deployment. + */ + + +/** + * @define {boolean} true to enable asserts, false otherwise. + */ +goog.define('shaka.asserts.ENABLE_ASSERTS', goog.DEBUG); + + +/** @type {function()|function(*, string=)} */ +shaka.asserts.assert = function() {}; + + +/** @type {function()} */ +shaka.asserts.notImplemented = function() {}; + + +/** @type {function()} */ +shaka.asserts.unreachable = function() {}; + + +// Install assert functions. +if (shaka.asserts.ENABLE_ASSERTS) { + shaka.asserts.assert = + console.assert.bind(console); + + shaka.asserts.notImplemented = + console.assert.bind(console, 0 == 1, 'Not implemented.'); + + shaka.asserts.unreachable = + console.assert.bind(console, 0 == 1, 'Unreachable reached.'); +} + diff --git a/lib/debug/log.js b/lib/debug/log.js new file mode 100644 index 0000000000..7751813cc7 --- /dev/null +++ b/lib/debug/log.js @@ -0,0 +1,121 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements log functions which can be compiled out. + */ + +goog.provide('shaka.log'); + + +/** + * @namespace shaka.log + * @summary A console logging framework which is compiled out for deployment. + */ + + +/** + * Log levels. + * @enum {number} + */ +shaka.log.Level = { + NONE: 0, + ERROR: 1, + WARNING: 2, + INFO: 3, + DEBUG: 4, + V1: 5, + V2: 6 +}; + + +/** + * @define {number} the maximum log level. + */ +goog.define('shaka.log.MAX_LOG_LEVEL', 3); + + +/** @type {function(*, ...[*])} */ +shaka.log.error = function() {}; + + +/** @type {function(*, ...[*])} */ +shaka.log.warning = function() {}; + + +/** @type {function(*, ...[*])} */ +shaka.log.info = function() {}; + + +/** @type {function(*, ...[*])} */ +shaka.log.debug = function() {}; + + +/** @type {function(*, ...[*])} */ +shaka.log.v1 = function() {}; + + +/** @type {function(*, ...[*])} */ +shaka.log.v2 = function() {}; + + +if (!COMPILED) { + /** + * Change the log level. Useful for debugging in uncompiled mode. + * + * @param {number} level + */ + shaka.log.setLevel = function(level) { + var nop = function() {}; + var log = shaka.log; + var Level = shaka.log.Level; + + log.error = (level >= Level.ERROR) ? console.error.bind(console) : nop; + log.warning = (level >= Level.WARNING) ? console.warn.bind(console) : nop; + log.info = (level >= Level.INFO) ? console.info.bind(console) : nop; + log.debug = (level >= Level.DEBUG) ? console.log.bind(console) : nop; + log.v1 = (level >= Level.V1) ? console.debug.bind(console) : nop; + log.v2 = (level >= Level.V2) ? console.debug.bind(console) : nop; + }; +} + + +// Although these bindings are redundant with setLevel() above, refactoring to +// call a method here makes it so that the log messages themselves cannot be +// compiled out. + +if (shaka.log.MAX_LOG_LEVEL >= shaka.log.Level.ERROR) { + shaka.log.error = console.error.bind(console); +} + +if (shaka.log.MAX_LOG_LEVEL >= shaka.log.Level.WARNING) { + shaka.log.warning = console.warn.bind(console); +} + +if (shaka.log.MAX_LOG_LEVEL >= shaka.log.Level.INFO) { + shaka.log.info = console.info.bind(console); +} + +if (shaka.log.MAX_LOG_LEVEL >= shaka.log.Level.DEBUG) { + shaka.log.debug = console.log.bind(console); +} + +if (shaka.log.MAX_LOG_LEVEL >= shaka.log.Level.V1) { + shaka.log.v1 = console.debug.bind(console); +} + +if (shaka.log.MAX_LOG_LEVEL >= shaka.log.Level.V2) { + shaka.log.v2 = console.debug.bind(console); +} + diff --git a/lib/debug/timer.js b/lib/debug/timer.js new file mode 100644 index 0000000000..6c222efe1f --- /dev/null +++ b/lib/debug/timer.js @@ -0,0 +1,109 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements performance timers. + */ + +goog.provide('shaka.timer'); + +goog.require('shaka.log'); + + +/** + * @namespace shaka.timer + * @summary A performance timing framework. + * Used in both debugging and production builds. + */ + + +/** + * Begins a timer. + * + * @param {string} name + */ +shaka.timer.begin = function(name) { + shaka.timer.timers_[name] = { + begin: shaka.timer.now_(), + end: NaN + }; +}; + + +/** + * End a timer and log (debug) the elapsed time. + * Does nothing if the timer has not begun. + * + * @param {string} name + */ +shaka.timer.end = function(name) { + var record = shaka.timer.timers_[name]; + if (!record) { + return; + } + + record.end = shaka.timer.now_(); + var diff = record.end - record.begin; + shaka.log.debug(name + ': ' + diff.toFixed(3) + 'ms'); +}; + + +/** + * Log (debug) the diff between two completed timers and return it. + * Does nothing if either timer has not begun. + * + * @param {string} name1 + * @param {string} name2 + * @return {number} The diff between the two, or NaN if they are not both + * completed. + */ +shaka.timer.diff = function(name1, name2) { + var t1 = shaka.timer.get(name1); + var t2 = shaka.timer.get(name2); + if (!t1 || !t2) { + return NaN; + } + var diff = t1 - t2; + var name = name1 + ' - ' + name2; + shaka.log.debug(name + ': ' + diff.toFixed(3) + 'ms'); + return diff; +}; + + +/** + * Query a timer. + * + * @param {string} name + * @return {number} The elapsed time in milliseconds, if the timer is complete. + * Returns NaN if the timer doesn't exist or hasn't ended yet. + */ +shaka.timer.get = function(name) { + var record = shaka.timer.timers_[name]; + if (!record || !record.end) { + return NaN; + } + + return record.end - record.begin; +}; + + +/** @private {function():number} */ +shaka.timer.now_ = window.performance ? + window.performance.now.bind(window.performance) : + Date.now; + + +/** @private {!Object.} */ +shaka.timer.timers_ = {}; + diff --git a/lib/player/audio_track.js b/lib/player/audio_track.js new file mode 100644 index 0000000000..f9d577914a --- /dev/null +++ b/lib/player/audio_track.js @@ -0,0 +1,87 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview AudioTrack class. + */ + +goog.provide('shaka.player.AudioTrack'); + + + +/** + * Creates a new AudioTrack. + * @param {number} id + * @param {?number} bandwidth + * @param {?string} lang + * @constructor + */ +shaka.player.AudioTrack = function(id, bandwidth, lang) { + /** + * A unique ID for the track. + * + * @type {number} + * @expose + */ + this.id = id; + + /** + * The bandwidth required in bits per second. + * + * @type {number} + * @expose + */ + this.bandwidth = bandwidth || 0; + + /** + * The track's language, a BCP 47 language tag. + * + * @type {string} + * @expose + */ + this.lang = lang || 'unknown'; + + /** + * True if this is currently the active track. + * + * @type {boolean} + * @expose + */ + this.active = false; +}; + + +/** + * Compares two AudioTrack objects: first by language, and then by bandwidth. + * @param {!shaka.player.AudioTrack} audioTrack1 + * @param {!shaka.player.AudioTrack} audioTrack2 + * @return {number} + * @export + */ +shaka.player.AudioTrack.compare = function(audioTrack1, audioTrack2) { + if (audioTrack1.lang < audioTrack2.lang) { + return -1; + } else if (audioTrack1.lang > audioTrack2.lang) { + return 1; + } + + if (audioTrack1.bandwidth < audioTrack2.bandwidth) { + return -1; + } else if (audioTrack1.bandwidth > audioTrack2.bandwidth) { + return 1; + } + + return 0; +}; + diff --git a/lib/player/dash_video_source.js b/lib/player/dash_video_source.js new file mode 100644 index 0000000000..a7b60dc8de --- /dev/null +++ b/lib/player/dash_video_source.js @@ -0,0 +1,650 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a DASH video source. + */ + +goog.provide('shaka.player.DashVideoSource'); + +goog.require('shaka.asserts'); +goog.require('shaka.dash.AbrManager'); +goog.require('shaka.dash.DashStream'); +goog.require('shaka.dash.DashTextStream'); +goog.require('shaka.dash.IDashStream'); +goog.require('shaka.dash.MpdProcessor'); +goog.require('shaka.dash.MpdRequest'); +goog.require('shaka.dash.mpd'); +goog.require('shaka.log'); +goog.require('shaka.player.AudioTrack'); +goog.require('shaka.player.DrmSchemeInfo'); +goog.require('shaka.player.IVideoSource'); +goog.require('shaka.player.VideoTrack'); +goog.require('shaka.util.ArrayUtils'); +goog.require('shaka.util.EWMABandwidthEstimator'); +goog.require('shaka.util.EventManager'); +goog.require('shaka.util.FakeEventTarget'); +goog.require('shaka.util.IBandwidthEstimator'); +goog.require('shaka.util.LanguageUtils'); +goog.require('shaka.util.PublicPromise'); +goog.require('shaka.util.TypedBind'); + + + +/** + * Creates a DashVideoSource. + * @param {string} mpdUrl The MPD URL. + * @param {shaka.player.DashVideoSource.ContentProtectionCallback} + * interpretContentProtection A callback to interpret the ContentProtection + * elements in the DASH MPD. + * + * @listens shaka.dash.DashStream.EndedEvent + * @listens shaka.util.IBandwidthEstimator.BandwidthEvent + * + * @struct + * @constructor + * @implements {shaka.player.IVideoSource} + * @extends {shaka.util.FakeEventTarget} + * @export + */ +shaka.player.DashVideoSource = function(mpdUrl, interpretContentProtection) { + shaka.util.FakeEventTarget.call(this, null); + + /** @private {shaka.dash.mpd.Mpd}. */ + this.mpd_ = null; + + /** @private {string} */ + this.mpdUrl_ = mpdUrl; + + /** @private {!shaka.dash.MpdProcessor} */ + this.processor_ = new shaka.dash.MpdProcessor(interpretContentProtection); + + /** @private {!MediaSource} */ + this.mediaSource_ = new MediaSource(); + + /** @private {HTMLVideoElement} */ + this.video_ = null; + + /** + * The active DASH streams. + * @private {!Object.} + */ + this.streamsByType_ = {}; + + /** @private {!shaka.util.EventManager} */ + this.eventManager_ = new shaka.util.EventManager(); + + /** @private {!shaka.util.PublicPromise} */ + this.attachPromise_ = new shaka.util.PublicPromise(); + + /** @private {string} */ + this.lang_ = ''; + + /** @private {!shaka.util.IBandwidthEstimator} */ + this.estimator_ = new shaka.util.EWMABandwidthEstimator(); + // TODO(story 1925894): Seed the estimator with data from the previous + // playback in the same browser session, unless that data is more than 1 + // hour old. + + /** @private {shaka.player.Stats} */ + this.stats_ = null; + + /** @private {!shaka.dash.AbrManager} */ + this.abrManager_ = new shaka.dash.AbrManager(this.estimator_, this); +}; +goog.inherits(shaka.player.DashVideoSource, shaka.util.FakeEventTarget); + + +/** + * A callback to the application to interpret DASH ContentProtection elements. + * These elements can contain almost anything and can be highly application- + * specific, so they cannot (in general) be interpreted by the library. + * + * The first parameter is the ContentProtection element. + * The callback should return a DrmSchemeInfo object if the ContentProtection + * element is understood by the application, or null otherwise. + * + * @typedef {function(!shaka.dash.mpd.ContentProtection): + * shaka.player.DrmSchemeInfo} + * @expose + */ +shaka.player.DashVideoSource.ContentProtectionCallback; + + +/** + * Destroys the DashVideoSource. + * @suppress {checkTypes} to set otherwise non-nullable types to null. + */ +shaka.player.DashVideoSource.prototype.destroy = function() { + this.eventManager_.destroy(); + this.eventManager_ = null; + + this.destroyStreams_(); + this.streamsByType_ = null; + + this.video_ = null; + this.mediaSource_ = null; + this.processor_ = null; + this.mpdUrl_ = null; + this.mpd_ = null; + this.parent = null; + this.attachPromise_ = null; + this.estimator_ = null; +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.attach = function(player, video) { + this.parent = player; + this.video_ = video; + this.stats_ = player.getStats(); + + // The "sourceopen" event fires after setting the video element's "src" + // attribute. + this.eventManager_.listen( + this.mediaSource_, + 'sourceopen', + this.onMediaSourceOpen_.bind(this)); + + this.eventManager_.listen( + this.video_, + 'seeking', + this.onSeeking_.bind(this)); + + this.eventManager_.listen( + this.estimator_, + 'bandwidth', + this.onBandwidth_.bind(this)); + + // When re-using a video tag in Chrome, mediaKeys can get cleared by Chrome + // when src is set for the second (or subsequent) time. This feels like a + // bug in Chrome. + + // To work around this, back up the old value and ensure that it is set again + // before the attach promise is resolved. This fixes bug #18614098. + var backupMediaKeys = this.video_.mediaKeys; + this.video_.src = window.URL.createObjectURL(this.mediaSource_); + var restorePromise = this.video_.setMediaKeys(backupMediaKeys); + + // Return a promise which encompasses both attach and the restoration of + // mediaKeys. + return Promise.all([this.attachPromise_, restorePromise]); +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.getDrmSchemeInfo = function() { + if (this.processor_.getNumPeriods() == 0) { + return null; + } + + // TODO(story 1890046): Support multiple periods. + var drmScheme = this.processor_.getDrmScheme(0); + + // Externally unencrypted is signalled by null. + return (drmScheme && drmScheme.keySystem) ? drmScheme : null; +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.load = function(preferredLanguage) { + this.lang_ = preferredLanguage; + + var mpdRequest = new shaka.dash.MpdRequest(this.mpdUrl_); + return mpdRequest.send().then(shaka.util.TypedBind(this, + /** @param {!shaka.dash.mpd.Mpd} mpd */ + function(mpd) { + if (mpd.periods.length == 0) { + var error = new Error('Unplayable MPD: no periods.'); + error.type = 'mpd'; + return Promise.reject(error); + } + + this.processor_.process(mpd); + this.mpd_ = mpd; + + // TODO(story 1890046): Support multiple periods. + if ((this.processor_.getNumPeriods() == 0) || + (this.processor_.getAdaptationSets(0).length == 0)) { + var error = new Error( + 'This content cannot be displayed on this browser/platform.'); + error.type = 'mpd'; + return Promise.reject(error); + } + + return Promise.resolve(); + }) + ); +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.getVideoTracks = function() { + if (this.processor_.getNumPeriods() == 0) { + return []; + } + + var stream = this.streamsByType_['video']; + var activeRepresentation = stream ? stream.getRepresentation() : null; + var activeId = activeRepresentation ? activeRepresentation.uniqueId : 0; + + /** @type {!Array.} */ + var tracks = []; + + // TODO(story 1890046): Support multiple periods. + var adaptationSets = this.processor_.getAdaptationSets(0, 'video'); + + for (var i = 0; i < adaptationSets.length; ++i) { + var adaptationSet = adaptationSets[i]; + + for (var j = 0; j < adaptationSet.representations.length; ++j) { + var representation = adaptationSet.representations[j]; + + var id = representation.uniqueId; + var bandwidth = representation.bandwidth; + var width = representation.width; + var height = representation.height; + + var videoTrack = + new shaka.player.VideoTrack(id, bandwidth, width, height); + if (id == activeId) { + videoTrack.active = true; + } + tracks.push(videoTrack); + } + } + + return tracks; +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.getAudioTracks = function() { + if (this.processor_.getNumPeriods() == 0) { + return []; + } + + var stream = this.streamsByType_['audio']; + var activeRepresentation = stream ? stream.getRepresentation() : null; + var activeId = activeRepresentation ? activeRepresentation.uniqueId : 0; + + /** @type {!Array.} */ + var tracks = []; + + // TODO(story 1890046): Support multiple periods. + var adaptationSets = this.processor_.getAdaptationSets(0, 'audio'); + + for (var i = 0; i < adaptationSets.length; ++i) { + var adaptationSet = adaptationSets[i]; + var lang = adaptationSet.lang; + + for (var j = 0; j < adaptationSet.representations.length; ++j) { + var representation = adaptationSet.representations[j]; + + var id = representation.uniqueId; + var bandwidth = representation.bandwidth; + + var audioTrack = new shaka.player.AudioTrack(id, bandwidth, lang); + if (id == activeId) { + audioTrack.active = true; + } + tracks.push(audioTrack); + } + } + + return tracks; +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.getTextTracks = function() { + if (this.processor_.getNumPeriods() == 0) { + return []; + } + + var stream = this.streamsByType_['text']; + var activeRepresentation = stream ? stream.getRepresentation() : null; + var activeId = activeRepresentation ? activeRepresentation.uniqueId : 0; + + /** @type {!Array.} */ + var tracks = []; + + // TODO(story 1890046): Support multiple periods. + var adaptationSets = this.processor_.getAdaptationSets(0, 'text'); + + for (var i = 0; i < adaptationSets.length; ++i) { + var adaptationSet = adaptationSets[i]; + var lang = adaptationSet.lang; + + for (var j = 0; j < adaptationSet.representations.length; ++j) { + var representation = adaptationSet.representations[j]; + + var id = representation.uniqueId; + var textTrack = new shaka.player.TextTrack(id, lang); + if (id == activeId) { + textTrack.active = true; + shaka.asserts.assert(stream != null); + textTrack.enabled = stream.getEnabled(); + } + tracks.push(textTrack); + } + } + + return tracks; +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.getResumeThreshold = function() { + return this.mpd_.minBufferTime; +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.selectVideoTrack = + function(id, immediate) { + return this.selectTrack_('video', id, immediate); +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.selectAudioTrack = + function(id, immediate) { + return this.selectTrack_('audio', id, immediate); +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.selectTextTrack = + function(id, immediate) { + return this.selectTrack_('text', id, immediate); +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.enableTextTrack = function(enabled) { + var textStream = this.streamsByType_['text']; + if (textStream) { + textStream.setEnabled(enabled); + } +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.enableAdaptation = function(enabled) { + this.abrManager_.enable(enabled); +}; + + +/** @override */ +shaka.player.DashVideoSource.prototype.setRestrictions = + function(restrictions) { + shaka.asserts.assert(this.mpd_); + if (this.mpd_) { + this.processor_.enforceRestrictions(this.mpd_, restrictions); + } +}; + + +/** + * Select a track by ID. + * + * @param {string} type The type of track to change, such as 'video', 'audio', + * or 'text'. + * @param {number} id The |uniqueId| field of the desired representation. + * @param {boolean} immediate If true, switch immediately. + * + * @return {boolean} True if the specified track was found. + * @private + */ +shaka.player.DashVideoSource.prototype.selectTrack_ = + function(type, id, immediate) { + if (this.processor_.getNumPeriods() == 0) { + return false; + } + if (!this.streamsByType_[type]) { + return false; + } + + // TODO(story 1890046): Support multiple periods. + var adaptationSets = this.processor_.getAdaptationSets(0, type); + + for (var i = 0; i < adaptationSets.length; ++i) { + var adaptationSet = adaptationSets[i]; + for (var j = 0; j < adaptationSet.representations.length; ++j) { + var representation = adaptationSet.representations[j]; + if (representation.uniqueId == id) { + this.stats_.logRepresentationChange(representation); + this.streamsByType_[type].switch(representation, immediate); + return true; + } + } + } + + return false; +}; + + +/** + * MediaSource callback. + * + * @param {!Event} event The MediaSource event. + * @private + */ +shaka.player.DashVideoSource.prototype.onMediaSourceOpen_ = + function(event) { + shaka.asserts.assert(this.mpd_ != null); + shaka.asserts.assert(this.mediaSource_.sourceBuffers.length == 0); + shaka.asserts.assert(this.mpd_.periods.length != 0); + + this.eventManager_.unlisten(this.mediaSource_, 'sourceopen'); + + // TODO(story 1890046): Support multiple periods. + var duration = this.mpd_.periods[0].duration || this.mpd_.duration; + shaka.asserts.assert(duration != null); + this.mediaSource_.duration = /** @type {number} */ (duration); + + shaka.asserts.assert(this.processor_.getNumPeriods() > 0); + var adaptationSets = this.processor_.selectAdaptationSets(0, this.lang_); + + /** @type {!Object.} */ + var representationsByType = {}; + + // Create DASH streams. + for (var i = 0; i < adaptationSets.length; ++i) { + var adaptationSet = adaptationSets[i]; + var contentType = adaptationSet.contentType || ''; + + // Start by assuming we will use the first Representation. + var representation = adaptationSet.representations[0]; + if (contentType == 'video') { + // Ask AbrManager which video Representation to start with. + var trackId = this.abrManager_.getInitialVideoTrackId(); + shaka.asserts.assert(trackId != null); + var found = false; + for (var j = 0; j < adaptationSet.representations.length; ++j) { + representation = adaptationSet.representations[j]; + if (representation.uniqueId == trackId) { + found = true; + break; + } + } + shaka.asserts.assert(found); + } else if (contentType == 'audio') { + // In lieu of audio adaptation, choose the middle representation from + // the audio adaptation set. If we have high, medium, and low quality + // audio, this is medium. If we only have high and low, this is high. + var length = adaptationSet.representations.length; + var index = Math.floor(length / 2); + representation = adaptationSet.representations[index]; + } + + // Log the initial representation choice. + this.stats_.logRepresentationChange(representation); + + var mimeType = + shaka.dash.MpdProcessor.representationMimeType(representation); + var stream = (contentType == 'text') ? this.createTextStream_() : + this.createStream_(mimeType); + if (!stream) { + // An error has already been dispatched and the promise rejected. + return; + } + this.streamsByType_[contentType] = stream; + representationsByType[contentType] = representation; + } + + // Start DASH streams. + for (var type in this.streamsByType_) { + this.eventManager_.listen( + this.streamsByType_[type], + 'ended', + this.onStreamEnded_.bind(this)); + var representation = representationsByType[type]; + this.streamsByType_[type].start(representation); + } + + // Assume subs will be needed. + var subsNeeded = true; + + // If there is an audio track, and the language matches the user's + // preference, then subtitles are not needed. + var audioRepresentation = representationsByType['audio']; + if (audioRepresentation) { + // If the MPD did not specify a language, assume it is the right one. + // This means that content creators who omit language because they serve a + // monolingual demographic will not have annoyed users who have to disable + // subtitles every single time they play a video. + var lang = audioRepresentation.lang || this.lang_; + + // Alias. + var LanguageUtils = shaka.util.LanguageUtils; + if (LanguageUtils.match(LanguageUtils.MatchType.MAX, this.lang_, lang)) { + // It's a match, so subs are not needed. + subsNeeded = false; + } + } + + // Enable the subtitle display by default iff the subs are needed. + this.enableTextTrack(subsNeeded); + + this.attachPromise_.resolve(); +}; + + +/** + * Creates a DashStream object. + * + * @param {string} mimeType + * @return {shaka.dash.DashStream} or null on failure. + * @private + */ +shaka.player.DashVideoSource.prototype.createStream_ = function(mimeType) { + // Create source buffer. + var buf; + try { + buf = this.mediaSource_.addSourceBuffer(mimeType); + shaka.asserts.assert(buf != null); + } catch (exception) { + this.destroyStreams_(); + var error = new Error('Failed to create DASH stream for ' + mimeType + '.'); + error.type = 'dash'; + error.exception = exception; + this.attachPromise_.reject(error); + return null; + } + + // Create stream. + return new shaka.dash.DashStream( + this, + /** @type {!HTMLVideoElement} */ (this.video_), + this.mediaSource_, + /** @type {!SourceBuffer} */ (buf), + this.estimator_); +}; + + +/** + * Creates a DashTextStream object. + * + * @return {!shaka.dash.DashTextStream} + * @private + */ +shaka.player.DashVideoSource.prototype.createTextStream_ = function() { + var video = /** @type {!HTMLVideoElement} */ (this.video_); + return new shaka.dash.DashTextStream(this, video); +}; + + +/** + * Destroy all streams. + * + * @private + */ +shaka.player.DashVideoSource.prototype.destroyStreams_ = function() { + for (var type in this.streamsByType_) { + this.streamsByType_[type].destroy(); + } + this.streamsByType_ = {}; +}; + + +/** + * DashStream EOF callback. + * + * @param {!Event} event + * @private + */ +shaka.player.DashVideoSource.prototype.onStreamEnded_ = function(event) { + shaka.log.v1('onStreamEnded_', event); + + // Check the state, otherwise this throws an exception. + if (this.mediaSource_.readyState == 'open') { + for (var type in this.streamsByType_) { + if (!this.streamsByType_[type].hasEnded()) { + // Not all streams have ended, so ignore. + return; + } + } + + // All streams have ended, so signal EOF to the |mediaSource_|. + this.mediaSource_.endOfStream(); + } +}; + + +/** + * Video seeking callback. + * + * @param {!Event} event + * @private + */ +shaka.player.DashVideoSource.prototype.onSeeking_ = function(event) { + // Resync each stream to the new timestamp. + for (var type in this.streamsByType_) { + this.streamsByType_[type].resync(); + } +}; + + +/** + * Bandwidth statistics update callback. + * + * @param {!Event} event + * @private + */ +shaka.player.DashVideoSource.prototype.onBandwidth_ = function(event) { + this.stats_.logBandwidth(this.estimator_.getBandwidth()); +}; + diff --git a/lib/player/drm_scheme_info.js b/lib/player/drm_scheme_info.js new file mode 100644 index 0000000000..8ee2f789c4 --- /dev/null +++ b/lib/player/drm_scheme_info.js @@ -0,0 +1,171 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Defines DRM scheme information. + */ + +goog.provide('shaka.player.DrmSchemeInfo'); + +goog.require('shaka.asserts'); +goog.require('shaka.util.StringUtils'); + + + +/** + * An object which is an interpreted form of a ContentProtection object. + * + * @param {string} keySystem The key system, e.g., "com.widevine.alpha". + * @param {boolean} suppressMultipleEncryptedEvents If true, only the first + * 'encrypted' event will be used. This is desired for some applications. + * @param {string} licenseServerUrl The license server URL. + * @param {boolean} withCredentials True if the request should include cookies + * when sent cross-domain. See http://goo.gl/pzY9F7 for more information. + * @param {?{initData: !Uint8Array, initDataType: string}} initData If non-null, + * this overrides the initData from EME 'encrypted' events in the Player. + * @param {?shaka.player.DrmSchemeInfo.LicensePostProcessor} + * licensePostProcessor An optional post-processor for license responses. + * @constructor + * @struct + * @export + */ +shaka.player.DrmSchemeInfo = + function(keySystem, suppressMultipleEncryptedEvents, licenseServerUrl, + withCredentials, initData, licensePostProcessor) { + /** @type {string} */ + this.keySystem = keySystem; + + /** @type {boolean} */ + this.suppressMultipleEncryptedEvents = suppressMultipleEncryptedEvents; + + /** @type {string} */ + this.licenseServerUrl = licenseServerUrl; + + /** @type {boolean} */ + this.withCredentials = withCredentials; + + /** @type {!Array.<{initData: !Uint8Array, initDataType: string}>} */ + this.initDatas = []; + + /** @type {?shaka.player.DrmSchemeInfo.LicensePostProcessor} */ + this.licensePostProcessor = licensePostProcessor; + + if (initData) { + this.initDatas.push(initData); + } +}; + + +/** + * A callback which does application-specific post-processing on license + * responses before they are passed to the CDM. + * + * Any restrictions on playback can be set by the callback on the Restrictions + * object passed to it. + * + * Returns the raw license after application-specific headers have been removed. + * + * @typedef {function(!Uint8Array, + !shaka.player.DrmSchemeInfo.Restrictions):!Uint8Array} + */ +shaka.player.DrmSchemeInfo.LicensePostProcessor; + + + +/** + * A set of basic restrictions on playback. + * + * The video source will not adapt to a video track which exceeds any + * limitations set here. + * + * @constructor + * @struct + */ +shaka.player.DrmSchemeInfo.Restrictions = function() { + /** + * If set, specifies a maximum height for video tracks. + * + * @type {?number} + * @expose + */ + this.maxHeight = null; + + /** + * If set, specifies a maximum width for video tracks. + * + * @type {?number} + * @expose + */ + this.maxWidth = null; +}; + + +/** + * Return a DrmSchemeInfo object for unencrypted contents. + * @return {!shaka.player.DrmSchemeInfo} + * @export + */ +shaka.player.DrmSchemeInfo.createUnencrypted = function() { + return new shaka.player.DrmSchemeInfo('', false, '', false, null, null); +}; + + +/** + * Combine two DrmSchemeInfos. Their |keySystem|, + * |suppressMultipleEncryptedEvents|, and |withCredentials| members must match. + * + * The |licenseServerUrl| and |licensePostProcessor| of the combined + * DrmSchemeInfo will be taken from |a|. + * + * @param {!shaka.player.DrmSchemeInfo} a + * @param {!shaka.player.DrmSchemeInfo} b + * @return {!shaka.player.DrmSchemeInfo} + * @export + */ +shaka.player.DrmSchemeInfo.combine = function(a, b) { + shaka.asserts.assert(a.keySystem == b.keySystem, 'key system mismatch'); + shaka.asserts.assert(a.suppressMultipleEncryptedEvents == + b.suppressMultipleEncryptedEvents, + 'suppress mismatch'); + shaka.asserts.assert(a.withCredentials == b.withCredentials, + 'credentials mismatch'); + + var c = new shaka.player.DrmSchemeInfo( + a.keySystem, a.suppressMultipleEncryptedEvents, a.licenseServerUrl, + a.withCredentials, null, a.licensePostProcessor); + + var initDatas = a.initDatas.concat(b.initDatas); + + /** + * @param {{initData: !Uint8Array, initDataType: string}} o + * @return {string} + */ + var initDataKey = function(o) { + return shaka.util.StringUtils.uint8ArrayKey(o.initData); + }; + c.initDatas = shaka.util.ArrayUtils.removeDuplicates(initDatas, initDataKey); + + return c; +}; + + +/** + * Generate a key for this DrmSchemeInfo. + * If two DrmSchemeInfos are equal, they should generate the same key. + * @return {string} + */ +shaka.player.DrmSchemeInfo.prototype.key = function() { + return JSON.stringify(this); +}; + diff --git a/lib/player/http_video_source.js b/lib/player/http_video_source.js new file mode 100644 index 0000000000..35f94aa45d --- /dev/null +++ b/lib/player/http_video_source.js @@ -0,0 +1,170 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements an HTTP video source. + */ + +goog.provide('shaka.player.HttpVideoSource'); + +goog.require('shaka.player.DrmSchemeInfo'); +goog.require('shaka.player.IVideoSource'); +goog.require('shaka.util.FakeEventTarget'); + + + +/** + * Creates an HttpVideoSource. + * @param {string} mediaUrl The media URL. + * @param {string} textUrl The text URL, or empty string if no subtitles. + * @param {shaka.player.DrmSchemeInfo} drmSchemeInfo Description of the DRM + * scheme, or null for non-encrypted sources. + * @struct + * @constructor + * @implements {shaka.player.IVideoSource} + * @extends {shaka.util.FakeEventTarget} + * @export + */ +shaka.player.HttpVideoSource = function(mediaUrl, textUrl, drmSchemeInfo) { + shaka.util.FakeEventTarget.call(this, null); + + /** @private {string} */ + this.mediaUrl_ = mediaUrl; + + /** @private {string} */ + this.textUrl_ = textUrl; + + /** @private {shaka.player.DrmSchemeInfo} */ + this.drmSchemeInfo_ = drmSchemeInfo; + + /** @private {HTMLTrackElement} */ + this.textTrack_ = null; +}; +goog.inherits(shaka.player.HttpVideoSource, shaka.util.FakeEventTarget); + + +/** @override */ +shaka.player.HttpVideoSource.prototype.destroy = function() { + if (this.textTrack_) { + this.textTrack_.parentElement.removeChild(this.textTrack_); + this.textTrack_ = null; + } + + this.drmSchemeInfo_ = null; + this.parent = null; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.attach = function(player, video) { + this.parent = player; + + // This fixes bug #18614098. See comments in DashVideoSource.attach for more + // details. + var backupMediaKeys = video.mediaKeys; + video.src = this.mediaUrl_; + var restorePromise = video.setMediaKeys(backupMediaKeys); + + if (this.textUrl_) { + this.textTrack_ = /** @type {HTMLTrackElement} */ + (document.createElement('track')); + this.textTrack_.src = this.textUrl_; + video.appendChild(this.textTrack_); + // NOTE: mode must be set after appending to the DOM. + this.textTrack_.track.mode = 'showing'; + } + + return restorePromise; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.getDrmSchemeInfo = function() { + return this.drmSchemeInfo_; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.load = function(preferredLanguage) { + return Promise.resolve(); +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.getVideoTracks = function() { + return []; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.getAudioTracks = function() { + return []; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.getTextTracks = function() { + return []; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.getResumeThreshold = function() { + return 5.0; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.selectVideoTrack = + function(id, immediate) { + return false; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.selectAudioTrack = + function(id, immediate) { + return false; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.selectTextTrack = + function(id, immediate) { + return false; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.enableTextTrack = function(enabled) { + if (!this.textTrack_) { + return; + } + + this.textTrack_.track.mode = enabled ? 'showing' : 'disabled'; +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.enableAdaptation = function(enabled) { + // nop +}; + + +/** @override */ +shaka.player.HttpVideoSource.prototype.setRestrictions = + function(restrictions) { + // nop +}; + diff --git a/lib/player/i_video_source.js b/lib/player/i_video_source.js new file mode 100644 index 0000000000..e3fa7b5bd7 --- /dev/null +++ b/lib/player/i_video_source.js @@ -0,0 +1,169 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Defines the IVideoSource interface. + */ + +goog.provide('shaka.player.IVideoSource'); + +goog.require('shaka.player.AudioTrack'); +goog.require('shaka.player.DrmSchemeInfo'); +goog.require('shaka.player.Player'); +goog.require('shaka.player.TextTrack'); +goog.require('shaka.player.VideoTrack'); + + + +/** + * @interface + * @extends {EventTarget} + */ +shaka.player.IVideoSource = function() {}; + + +/** + * Destroys the video source. + */ +shaka.player.IVideoSource.prototype.destroy = function() {}; + + +/** + * Attaches the video source to the specified video element. + * This allows the Player to avoid setting the video's src attribute until it + * is ready. Should not be called until after the load() Promise is resolved. + * + * @param {shaka.player.Player} player The associated Player, used for event + * bubbling and stats. + * @param {!HTMLVideoElement} video The video element. + * @return {!Promise} + */ +shaka.player.IVideoSource.prototype.attach = function(player, video) {}; + + +/** + * Returns an object containing everything you need to know about the DRM + * scheme. If null, indicates that the source is not encrypted. + * Should not be called until after the load() Promise is resolved. + * @return {shaka.player.DrmSchemeInfo} + */ +shaka.player.IVideoSource.prototype.getDrmSchemeInfo = function() {}; + + +/** + * Load any intermediate source material (manifest, etc.) + * + * @param {string} preferredLanguage The user's preferred language tag. + * @see IETF RFC 5646 + * @see ISO 639 + * @return {!Promise} + */ +shaka.player.IVideoSource.prototype.load = function(preferredLanguage) {}; + + +/** + * Gets the available video tracks. + * + * @return {!Array.} + */ +shaka.player.IVideoSource.prototype.getVideoTracks = function() {}; + + +/** + * Gets the available audio tracks. + * + * @return {!Array.} + */ +shaka.player.IVideoSource.prototype.getAudioTracks = function() {}; + + +/** + * Gets the available text tracks. + * + * @return {!Array.} + */ +shaka.player.IVideoSource.prototype.getTextTracks = function() {}; + + +/** + * Gets the number of seconds of data needed to resume after buffering. + * + * @return {number} + */ +shaka.player.IVideoSource.prototype.getResumeThreshold = function() {}; + + +/** + * Select a video track by ID. + * + * @param {number} id The |id| field of the desired VideoTrack object. + * @param {boolean} immediate If true, switch immediately. Otherwise, switch + * when convenient. + * + * @return {boolean} True if the specified VideoTrack was found. + */ +shaka.player.IVideoSource.prototype.selectVideoTrack = + function(id, immediate) {}; + + +/** + * Select an audio track by ID. + * + * @param {number} id The |id| field of the desired AudioTrack object. + * @param {boolean} immediate If true, switch immediately. Otherwise, switch + * when convenient. + * + * @return {boolean} True if the specified AudioTrack was found. + */ +shaka.player.IVideoSource.prototype.selectAudioTrack = + function(id, immediate) {}; + + +/** + * Select a text track by ID. + * + * @param {number} id The |id| field of the desired TextTrack object. + * @param {boolean} immediate If true, switch immediately. Otherwise, switch + * when convenient. + * + * @return {boolean} True if the specified TextTrack was found. + */ +shaka.player.IVideoSource.prototype.selectTextTrack = + function(id, immediate) {}; + + +/** + * Enable or disable the text track. + * + * @param {boolean} enabled + */ +shaka.player.IVideoSource.prototype.enableTextTrack = function(enabled) {}; + + +/** + * Enable or disable bitrate adaptation. + * + * @param {boolean} enabled + */ +shaka.player.IVideoSource.prototype.enableAdaptation = function(enabled) {}; + + +/** + * Sets restrictions on the video tracks which can be selected. Tracks which + * exceed any of these restrictions will be ignored. + * + * @param {!shaka.player.DrmSchemeInfo.Restrictions} restrictions + */ +shaka.player.IVideoSource.prototype.setRestrictions = function(restrictions) {}; + diff --git a/lib/player/player.js b/lib/player/player.js new file mode 100644 index 0000000000..0df0120e40 --- /dev/null +++ b/lib/player/player.js @@ -0,0 +1,968 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements the player. + */ + +goog.provide('shaka.player.Player'); + +goog.require('shaka.asserts'); +goog.require('shaka.log'); +goog.require('shaka.player.AudioTrack'); +goog.require('shaka.player.Stats'); +goog.require('shaka.player.TextTrack'); +goog.require('shaka.player.VideoTrack'); +goog.require('shaka.timer'); +goog.require('shaka.util.EventManager'); +goog.require('shaka.util.FakeEvent'); +goog.require('shaka.util.FakeEventTarget'); +goog.require('shaka.util.LanguageUtils'); +goog.require('shaka.util.LicenseRequest'); +goog.require('shaka.util.StringUtils'); + + +/** + * @event shaka.player.Player.ErrorEvent + * @description Fired when a playback error occurs. + * Bubbles up through the Player. + * @property {string} type 'error' + * @property {boolean} bubbles true + * @property {!Error} detail An object which contains details on the error. + * @export + */ + + + +/** + * Creates a Player. + * + * @param {!HTMLVideoElement} video The video element. + * + * @fires shaka.player.Player.ErrorEvent + * @fires shaka.dash.DashStream.AdaptationEvent + * + * @constructor + * @extends {shaka.util.FakeEventTarget} + * @export + */ +shaka.player.Player = function(video) { + shaka.util.FakeEventTarget.call(this, null); + + /** + * The video element. + * @private {!HTMLVideoElement} + */ + this.video_ = video; + + /** + * The video source object. + * @private {shaka.player.IVideoSource} + */ + this.videoSource_ = null; + + /** + * The MediaKeys object, non-null if using the OO EME API, null otherwise. + * @private {MediaKeys} + */ + this.mediaKeys_ = null; + + /** @private {!shaka.util.EventManager} */ + this.eventManager_ = new shaka.util.EventManager(); + + /** @private {!Object.} */ + this.requestGenerated_ = {}; + + /** @private {!Array.} */ + this.fakeEncryptedEvents_ = []; + + /** @private {!Array.} */ + this.sessions_ = []; + + /** @private {string} */ + this.lang_ = 'en'; + + /** @private {?number} */ + this.rewindTimer_ = null; + + /** @private {?number} */ + this.watchdogTimer_ = null; + + /** @private {boolean} */ + this.buffering_ = false; + + /** @private {!shaka.player.Stats} */ + this.stats_ = new shaka.player.Stats; + + /** @private {boolean} */ + this.adaptationEnabled_ = true; +}; +goog.inherits(shaka.player.Player, shaka.util.FakeEventTarget); + + +/** + * @const {string} + * @export + */ +shaka.player.Player.version = 'v1.0'; + + +/** + * Determines if the browser has all of the necessary APIs to support the Shaka + * Player. This check may not pass if polyfills have not been installed. + * + * @return {boolean} + * @export + */ +shaka.player.Player.isBrowserSupported = function() { + return true && + // MSE is needed for adaptive streaming. + !!window.MediaSource && + // EME is needed for protected content. + !!window.MediaKeys && + // Indicates recent EME APIs. + !!window.navigator && + !!window.navigator.requestMediaKeySystemAccess && + // Promises are used frequently for asynchronous operations. + !!window.Promise && + // Playback quality metrics used by Player.getStats(). + !!HTMLVideoElement.prototype.getVideoPlaybackQuality && + // Fullscreen API. + !!HTMLMediaElement.prototype.requestFullscreen && + // Node.children is used by mpd_parser.js, and body is a Node instance. + !!document.body.children; +}; + + +/** + * Determines if the specified codec is supported with the given key system. + * + * @param {string} keySystem The key system. Use the empty string for + * unencrypted content. + * @param {string} mimeType A media MIME type, possibly including codec info. + * + * @return {boolean} true if the codec is supported by the key system, + * false otherwise. + * @export + */ +shaka.player.Player.isTypeSupported = function(keySystem, mimeType) { + var supported; + + // TODO(story 1922598): Although Chrome reports support for mp4a.40.5, it + // fails to decode some such content. These are low-quality streams anyway, + // so disable support for them until a solution can be found. + if (mimeType.indexOf('mp4a.40.5') >= 0) { + return false; + } + + if (mimeType == 'text/vtt') { + supported = !!window.VTTCue; + } else { + supported = MediaSource.isTypeSupported(mimeType); + + if (supported && keySystem) { + // Strip off the codec info, if any, leaving just a basic MIME type. + var basicType = mimeType.split(';')[0]; + // TODO: isTypeSupported deprecated + supported = MediaKeys.isTypeSupported(keySystem, basicType); + } + } + + shaka.log.info(keySystem, '+', mimeType, + supported ? 'is' : 'is not', 'supported'); + return supported; +}; + + +/** + * Destroys the player. + * @suppress {checkTypes} to set otherwise non-nullable types to null. + * @export + */ +shaka.player.Player.prototype.destroy = function() { + this.unload().catch(function() {}); + + this.eventManager_.destroy(); + this.eventManager_ = null; + + this.video_ = null; +}; + + +/** + * Stop playback and unload the current video source. Makes the player ready + * for reuse. Also resets any statistics gathered. + * + * MediaKeys must be unloaded asynchronously, but all other resources are + * removed synchronously. + * + * @return {!Promise} A promise, resolved when MediaKeys is removed. + * @export + */ +shaka.player.Player.prototype.unload = function() { + // Stop playback. + this.video_.pause(); + + // Stop listening for events and timers. + this.eventManager_.removeAll(); + this.cancelWatchdogTimer_(); + this.cancelRewindTimer_(); + + // Release all EME resources. + for (var i = 0; i < this.sessions_.length; ++i) { + this.sessions_[i].close(); + } + this.sessions_ = []; + this.fakeEncryptedEvents_ = []; + this.mediaKeys_ = null; + + // Remove the video source. + this.video_.src = ''; + this.video_.load(); + var p = this.video_.setMediaKeys(null); + if (this.videoSource_) { + this.videoSource_.destroy(); + this.videoSource_ = null; + } + + // Reset state. + this.buffering_ = false; + this.requestGenerated_ = {}; + this.stats_ = new shaka.player.Stats; + + return p; +}; + + +/** + * Loads the specified video source and starts playback. If a video source has + * already been loaded, this calls unload() for you before loading the new + * source. + * + * @param {!shaka.player.IVideoSource} videoSource The IVideoSource object. The + * Player takes ownership of |videoSource|. + * @return {!Promise} + * @export + */ +shaka.player.Player.prototype.load = function(videoSource) { + var p = this.videoSource_ ? this.unload() : Promise.resolve(); + shaka.asserts.assert(this.videoSource_ == null); + + if (this.video_.autoplay) { + shaka.timer.begin('load'); + this.eventManager_.listen(this.video_, 'timeupdate', + this.onFirstTimestamp_.bind(this)); + } + + // Sync adaptation setting, which could have been set before this source was + // loaded. + videoSource.enableAdaptation(this.adaptationEnabled_); + + return p.then(shaka.util.TypedBind(this, + function() { + return videoSource.load(this.lang_); + }) + ).then(shaka.util.TypedBind(this, + function() { + this.videoSource_ = videoSource; + return this.initializeDrmScheme_(); + }) + ).then(shaka.util.TypedBind(this, + function() { + this.setVideoEventListeners_(); + return this.videoSource_.attach(this, this.video_); + }) + ).then(shaka.util.TypedBind(this, + function() { + // Dispatch any fake 'encrypted' events we might have created. + for (var i = 0; i < this.fakeEncryptedEvents_.length; ++i) { + this.onEncrypted_(this.fakeEncryptedEvents_[i]); + } + return Promise.resolve(); + }) + ).catch(shaka.util.TypedBind(this, + /** @param {!Error} error */ + function(error) { + // We own the source now, so we must clean it up. + // We may not have set the source on this, so call destroy on the local + // var instead. + videoSource.destroy(); + + // Since we may have set the source on this, set it to null. + this.videoSource_ = null; + + // Even though we return a rejected promise, we still want to dispatch + // an error event to ensure that the application is aware of all errors + // from the player. + var event = shaka.util.FakeEvent.createErrorEvent(error); + this.dispatchEvent(event); + + return Promise.reject(error); + }) + ); +}; + + +/** + * Initializes the DRM scheme. This function sets |mediaKeys_|. + * @return {!Promise} + * @private + */ +shaka.player.Player.prototype.initializeDrmScheme_ = function() { + shaka.asserts.assert(this.mediaKeys_ == null); + shaka.asserts.assert(this.video_.mediaKeys == null); + + // TODO(story 2544736): Support multiple DASH periods with different schemes? + var drmScheme = this.videoSource_.getDrmSchemeInfo(); + if (!drmScheme) { + shaka.log.info('No encryption.'); + return Promise.resolve(); + } + + var p = navigator.requestMediaKeySystemAccess(drmScheme.keySystem); + return p.then(shaka.util.TypedBind(this, + /** @param {!MediaKeySystemAccess} mediaKeySystemAccess */ + function(mediaKeySystemAccess) { + return mediaKeySystemAccess.createMediaKeys(); + }) + ).then(shaka.util.TypedBind(this, + /** @param {!MediaKeys} mediaKeys */ + function(mediaKeys) { + this.mediaKeys_ = mediaKeys; + return this.video_.setMediaKeys(this.mediaKeys_); + }) + ).then(shaka.util.TypedBind(this, + function() { + shaka.asserts.assert(this.video_.mediaKeys); + shaka.asserts.assert(this.video_.mediaKeys == this.mediaKeys_); + this.generateFakeEncryptedEvents_(drmScheme); + + // Explicit init data for any one stream is sufficient to suppress + // 'encrypted' events for all streams. + if (this.fakeEncryptedEvents_.length == 0) { + this.eventManager_.listen( + this.video_, + 'encrypted', + /** @type {shaka.util.EventManager.ListenerType} */( + this.onEncrypted_.bind(this))); + } + }) + ); +}; + + +/** + * Generate any fake 'encrypted' events for the given DRM scheme and store them + * in |fakeEncryptedEvents_|. + * + * @param {shaka.player.DrmSchemeInfo} drmScheme + * @private + */ +shaka.player.Player.prototype.generateFakeEncryptedEvents_ = + function(drmScheme) { + this.fakeEncryptedEvents_ = []; + + for (var i = 0; i < drmScheme.initDatas.length; ++i) { + var initData = drmScheme.initDatas[i]; + + // This DRM scheme has init data information which should override that + // found in the actual stream. Therefore, we fake an 'encrypted' event + // and ignore the actual 'encrypted' events from the browser. + var event = /** @type {!MediaEncryptedEvent} */ ({ + type: 'encrypted', + initDataType: initData.initDataType, + initData: initData.initData + }); + + // The video hasn't been attached yet, so we can't fire these until later. + this.fakeEncryptedEvents_.push(event); + } +}; + + +/** + * Sets the video's event listeners. + * + * @private + */ +shaka.player.Player.prototype.setVideoEventListeners_ = function() { + // TODO(story 1891509): Connect these events to the UI. + this.eventManager_.listen(this.video_, 'play', this.onPlay_.bind(this)); + this.eventManager_.listen(this.video_, 'playing', this.onPlaying_.bind(this)); + this.eventManager_.listen(this.video_, 'seeking', this.onSeeking_.bind(this)); + this.eventManager_.listen(this.video_, 'pause', this.onPause_.bind(this)); + this.eventManager_.listen(this.video_, 'ended', this.onEnded_.bind(this)); +}; + + +/** + * EME 'encrypted' event handler. + * + * @param {!MediaEncryptedEvent} event The EME 'encrypted' event. + * @private + */ +shaka.player.Player.prototype.onEncrypted_ = function(event) { + // Suppress duplicate init data. + shaka.asserts.assert(event.initData); + var initData = new Uint8Array(event.initData); + var initDataKey = shaka.util.StringUtils.uint8ArrayKey(initData); + + var drmScheme = this.videoSource_.getDrmSchemeInfo(); + if (drmScheme.suppressMultipleEncryptedEvents) { + // In this scheme, all 'encrypted' events are equivalent. + // Never create more than one session. + initDataKey = 'first'; + } + + if (this.requestGenerated_[initDataKey]) { + return; + } + + shaka.log.info('onEncrypted_', initData, event); + + var session = this.mediaKeys_.createSession(); + this.sessions_.push(session); + + this.eventManager_.listen( + session, 'message', /** @type {shaka.util.EventManager.ListenerType} */( + this.onSessionMessage_.bind(this))); + + var p = session.generateRequest(event.initDataType, event.initData); + p.then(shaka.util.TypedBind(this, + function() { + this.requestGenerated_[initDataKey] = true; + }) + ).catch(shaka.util.TypedBind(this, + /** @param {!Error} error */ + function(error) { + var event = shaka.util.FakeEvent.createErrorEvent(error); + this.dispatchEvent(event); + }) + ); +}; + + +/** + * EME key-message handler. + * + * @param {!MediaKeyMessageEvent} event The EME message event. + * @private + */ +shaka.player.Player.prototype.onSessionMessage_ = function(event) { + shaka.log.info('onSessionMessage_', event); + var drmScheme = this.videoSource_.getDrmSchemeInfo(); + this.requestLicense_(event.target, drmScheme.licenseServerUrl, event.message, + drmScheme.withCredentials, + drmScheme.licensePostProcessor); +}; + + +/** + * Requests a license. + * + * @param {!MediaKeySession} session An EME session object. + * @param {string} licenseServerUrl The license server URL. + * @param {!ArrayBuffer} licenseRequestBody The license request's body. + * @param {boolean} withCredentials True if the request should include cookies + * when sent cross-domain. See http://goo.gl/pzY9F7 for more information. + * @param {?shaka.player.DrmSchemeInfo.LicensePostProcessor} postProcessor The + * post-processor for the license, if any. + * + * @private + */ +shaka.player.Player.prototype.requestLicense_ = + function(session, licenseServerUrl, licenseRequestBody, withCredentials, + postProcessor) { + shaka.log.info( + 'requestLicense_', session, licenseServerUrl, licenseRequestBody); + + var licenseRequest = new shaka.util.LicenseRequest( + licenseServerUrl, licenseRequestBody, withCredentials); + + licenseRequest.send().then(shaka.util.TypedBind(this, + /** @param {!Uint8Array} response */ + function(response) { + shaka.log.info('onLicenseSuccess_', session); + if (postProcessor) { + var restrictions = new shaka.player.DrmSchemeInfo.Restrictions(); + response = postProcessor(response, restrictions); + this.videoSource_.setRestrictions(restrictions); + } + + return session.update(response); + }) + ).then( + function() { + shaka.log.info('onSessionReady_', session); + } + ).catch(shaka.util.TypedBind(this, + /** @param {!Error} error */ + function(error) { + error.session = session; + var event = shaka.util.FakeEvent.createErrorEvent(error); + this.dispatchEvent(event); + }) + ); +}; + + +/** + * Time update event handler. Will be removed once the first update is seen. + * + * @param {!Event} event + * @private + */ +shaka.player.Player.prototype.onFirstTimestamp_ = function(event) { + shaka.timer.end('load'); + this.stats_.logPlaybackLatency(shaka.timer.get('load')); + this.eventManager_.unlisten(this.video_, 'timeupdate'); +}; + + +/** + * Video play event handler. + * + * @param {!Event} event + * @private + */ +shaka.player.Player.prototype.onPlay_ = function(event) { + shaka.log.debug('onPlay_', event); +}; + + +/** + * Video playing event handler. Fires any time the video starts playing. + * + * @param {!Event} event + * @private + */ +shaka.player.Player.prototype.onPlaying_ = function(event) { + shaka.log.debug('onPlaying_', event); + shaka.timer.begin('playing'); + + this.cancelWatchdogTimer_(); + + this.watchdogTimer_ = + window.setTimeout(this.onWatchdogTimer_.bind(this), 100); +}; + + +/** + * Video seeking event handler. + * + * @param {!Event} event + * @private + */ +shaka.player.Player.prototype.onSeeking_ = function(event) { + shaka.log.debug('onSeeking_', event); + + this.cancelWatchdogTimer_(); + this.buffering_ = false; +}; + + +/** + * Video pause event handler. Fires any time the video stops for any reason, + * including before a 'seeking' or 'ended' event. + * + * @param {!Event} event + * @private + */ +shaka.player.Player.prototype.onPause_ = function(event) { + shaka.log.debug('onPause_', event); + shaka.timer.end('playing'); + this.stats_.logPlayTime(shaka.timer.get('playing')); +}; + + +/** + * Video end event handler. + * + * @param {!Event} event + * @private + */ +shaka.player.Player.prototype.onEnded_ = function(event) { + shaka.log.debug('onEnded_', event, this.getStats()); + this.cancelWatchdogTimer_(); +}; + + +/** + * Gets updated stats about the player. + * + * @return {!shaka.player.Stats} + * @export + */ +shaka.player.Player.prototype.getStats = function() { + if (!this.video_.paused) { + // Update play time, which is still progressing. + shaka.timer.end('playing'); + this.stats_.logPlayTime(shaka.timer.get('playing')); + shaka.timer.begin('playing'); + } + this.stats_.updateVideoStats(this.video_); + return this.stats_; +}; + + +/** + * Gets the current video resolution. Returns null if the current video + * resolution could not be determined. + * + * @return {?{width: number, height: number}} + * @export + */ +shaka.player.Player.prototype.getCurrentResolution = function() { + var width = this.video_.videoWidth; + var height = this.video_.videoHeight; + + if (width && height) { + return { width: width, height: height }; + } else { + return null; + } +}; + + +/** + * Gets the available video tracks. + * + * @return {!Array.} + * @export + */ +shaka.player.Player.prototype.getVideoTracks = function() { + if (!this.videoSource_) return []; + return this.videoSource_.getVideoTracks(); +}; + + +/** + * Gets the available audio tracks. + * + * @return {!Array.} + * @export + */ +shaka.player.Player.prototype.getAudioTracks = function() { + if (!this.videoSource_) return []; + return this.videoSource_.getAudioTracks(); +}; + + +/** + * Gets the available text tracks. + * + * @return {!Array.} + * @export + */ +shaka.player.Player.prototype.getTextTracks = function() { + if (!this.videoSource_) return []; + return this.videoSource_.getTextTracks(); +}; + + +/** + * Select a video track by ID. This can interfere with automatic adaptation, + * so you should call {@link shaka.player.Player#enableAdaptation}(false) if + * you intend to switch to manual video track selection. + * + * @param {number} id The |id| field of the desired VideoTrack object. + * + * @return {boolean} True if the specified VideoTrack was found. + * @export + */ +shaka.player.Player.prototype.selectVideoTrack = function(id) { + if (!this.videoSource_) return false; + return this.videoSource_.selectVideoTrack(id, true); +}; + + +/** + * Select an audio track by ID. + * + * @param {number} id The |id| field of the desired AudioTrack object. + * + * @return {boolean} True if the specified AudioTrack was found. + * @export + */ +shaka.player.Player.prototype.selectAudioTrack = function(id) { + if (!this.videoSource_) return false; + return this.videoSource_.selectAudioTrack(id, false); +}; + + +/** + * Select a text track by ID. + * + * @param {number} id The |id| field of the desired TextTrack object. + * + * @return {boolean} True if the specified TextTrack was found. + * @export + */ +shaka.player.Player.prototype.selectTextTrack = function(id) { + if (!this.videoSource_) return false; + return this.videoSource_.selectTextTrack(id, false); +}; + + +/** + * Enable or disable the text track. + * + * @param {boolean} enabled + * @export + */ +shaka.player.Player.prototype.enableTextTrack = function(enabled) { + if (!this.videoSource_) return; + this.videoSource_.enableTextTrack(enabled); +}; + + +/** + * Enable or disable automatic bitrate adaptation. + * + * @param {boolean} enabled + * @export + */ +shaka.player.Player.prototype.enableAdaptation = function(enabled) { + this.adaptationEnabled_ = enabled; + if (this.videoSource_) { + this.videoSource_.enableAdaptation(enabled); + } +}; + + +/** + * @return {number} Current playback time in seconds. + * @export + */ +shaka.player.Player.prototype.getCurrentTime = function() { + return this.video_.currentTime; +}; + + +/** + * @return {number} Video duration in seconds. + * @export + */ +shaka.player.Player.prototype.getDuration = function() { + return this.video_.duration; +}; + + +/** + * @return {boolean} True if the video is muted. + * @export + */ +shaka.player.Player.prototype.getMuted = function() { + return this.video_.muted; +}; + + +/** + * @return {number} The video volume, between 0 and 1. + * @export + */ +shaka.player.Player.prototype.getVolume = function() { + return this.video_.volume; +}; + + +/** + * Play the video. Will reset the playback rate to 1.0 as well. + * @export + */ +shaka.player.Player.prototype.play = function() { + this.setPlaybackRate(1.0); + this.video_.play(); +}; + + +/** + * Pause the video. + * @export + */ +shaka.player.Player.prototype.pause = function() { + this.video_.pause(); +}; + + +/** + * Make the video go full-screen. + * For security reasons, only works from an event handler for user input. + * @export + */ +shaka.player.Player.prototype.requestFullscreen = function() { + this.video_.requestFullscreen(); +}; + + +/** + * @param {number} seconds The desired playback position in seconds. + * @export + */ +shaka.player.Player.prototype.seek = function(seconds) { + this.video_.currentTime = seconds; +}; + + +/** + * @param {boolean} on True to mute the video, false to unmute the video. + * @export + */ +shaka.player.Player.prototype.setMuted = function(on) { + this.video_.muted = on; +}; + + +/** + * @param {number} level The video volume, between 0 and 1. + * @export + */ +shaka.player.Player.prototype.setVolume = function(level) { + this.video_.volume = level; +}; + + +/** + * @param {string} lang The user's preferred language tag. + * If not set, defaults to 'en'. + * @see IETF RFC 5646 + * @see ISO 639 + * @export + */ +shaka.player.Player.prototype.setPreferredLanguage = function(lang) { + // Normalize the language tag. + this.lang_ = shaka.util.LanguageUtils.normalize(lang); +}; + + +/** + * @param {number} rate The playback rate. + * Negative values will rewind the video. + * Positive values less than 1.0 will trigger slow-motion playback. + * Positive values greater than 1.0 will trigger fast-forward. + * 0.0 is invalid and will be ignored. + * Some UAs will not play audio at rates less than 0.25 or 0.5 or greater + * than 4.0 or 5.0, but this behavior is not specified. + * No audio will be played while rewinding. + * @export + */ +shaka.player.Player.prototype.setPlaybackRate = function(rate) { + shaka.asserts.assert(rate != 0); + if (rate == 0) { + return; + } + + // Cancel any rewind we might be in the middle of. + this.cancelRewindTimer_(); + + if (rate > 0) { + // Slow-mo or fast-forward are handled natively by the UA. + this.video_.playbackRate = rate; + } else { + // Rewind is not supported by any UA to date (2014), so we fake it. + this.video_.playbackRate = 0; + this.onRewindTimer_(rate); + } +}; + + +/** + * Cancels the rewind timer, if any. + * @private + */ +shaka.player.Player.prototype.cancelRewindTimer_ = function() { + if (this.rewindTimer_) { + window.clearTimeout(this.rewindTimer_); + this.rewindTimer_ = null; + } +}; + + +/** + * Cancels the watchdog timer, if any. + * @private + */ +shaka.player.Player.prototype.cancelWatchdogTimer_ = function() { + if (this.watchdogTimer_) { + window.clearTimeout(this.watchdogTimer_); + this.watchdogTimer_ = null; + } +}; + + +/** + * Called on a recurring timer to simulate rewind. + * @param {number} rate + * @private + */ +shaka.player.Player.prototype.onRewindTimer_ = function(rate) { + shaka.asserts.assert(rate < 0); + // For a rate of -1.0, we move the playhead back by 0.1s every 0.1s (100ms). + this.video_.currentTime += 0.1 * rate; + this.rewindTimer_ = + window.setTimeout(this.onRewindTimer_.bind(this, rate), 100); +}; + + +/** + * Called on a recurring timer to detect buffering events. + * @private + */ +shaka.player.Player.prototype.onWatchdogTimer_ = function() { + this.watchdogTimer_ = + window.setTimeout(this.onWatchdogTimer_.bind(this), 100); + + // Because we cancel this onSeeking_ and re-enable it onPlaying_. + shaka.asserts.assert(!this.video_.seeking, 'should not be seeking'); + + var buffered = this.video_.buffered; + // Counter-intuitively, the play head can advance audio-only while video is + // buffering. |buffered| will show the intersection of buffered ranges for + // both audio and video, so this is an accurate way to sense that we are + // buffering. The 'stalled', 'waiting', and 'suspended' events do not work + // for this purpose as of Chrome 38. + var bufferEnd = buffered.length ? buffered.end(buffered.length - 1) : 0; + var underflow = this.video_.currentTime - bufferEnd; + + if (!this.buffering_) { + if (underflow > shaka.player.Player.UNDERFLOW_THRESHOLD_) { + this.buffering_ = true; + this.video_.pause(); + this.stats_.logBufferingEvent(); + shaka.timer.begin('buffering'); + shaka.log.debug('Buffering...'); + } + } else { + var resumeThreshold = this.videoSource_.getResumeThreshold(); + shaka.asserts.assert(resumeThreshold > 0); + if (underflow < -resumeThreshold) { + shaka.log.debug('Buffering complete.'); + shaka.timer.end('buffering'); + this.stats_.logBufferingTime(shaka.timer.get('buffering')); + this.buffering_ = false; + this.video_.play(); + } + } +}; + + +/** + * The threshold for underflow, in seconds. If the play head is outside the + * buffered range by this much, we will consider the player to be out of data. + * + * @private {number} + * @const + */ +shaka.player.Player.UNDERFLOW_THRESHOLD_ = 0.050; + diff --git a/lib/player/stats.js b/lib/player/stats.js new file mode 100644 index 0000000000..5b1c57eda7 --- /dev/null +++ b/lib/player/stats.js @@ -0,0 +1,266 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a player stats object. + */ + +goog.provide('shaka.player.Stats'); + +goog.require('shaka.asserts'); +goog.require('shaka.dash.mpd'); + + + +/** + * Creates a Stats object. + * + * @constructor + * @struct + */ +shaka.player.Stats = function() { + /** + * @type {shaka.player.Stats.RepresentationStats} + * @expose + */ + this.representation = null; + + /** + * Number of frames decoded. NaN if not available. + * + * @type {number} + * @expose + */ + this.decodedFrames = NaN; + + /** + * Number of frames dropped. NaN if not available. + * + * @type {number} + * @expose + */ + this.droppedFrames = NaN; + + /** + * Estimated bandwidth in bits per second. + * + * @type {number} + * @expose + */ + this.estimatedBandwidth = 0; + + /** + * Time in playback state in seconds. + * + * @type {number} + * @expose + */ + this.playTime = 0; + + /** + * Time in buffering state in seconds. + * + * @type {number} + * @expose + */ + this.bufferingTime = 0; + + /** + * Playback latency in seconds. NaN if autoplay is not used. + * + * @type {number} + * @expose + */ + this.playbackLatency = NaN; + + /** + * Buffering history. Each number is a timestamp when the player entered a + * buffering state. + * + * @type {!Array.} + * @expose + */ + this.bufferingHistory = []; + + /** + * Bandwidth history. Each timestamped value is a bandwidth measurement, in + * bits per second. + * + * @type {!Array.>} + * @expose + */ + this.bandwidthHistory = []; + + /** + * Representation history. Each timestamped value is a representation chosen + * by the player. + * + * @type {!Array.>} + * @expose + */ + this.representationHistory = []; +}; + + +/** + * Updates video stats from the video tag. + * + * @param {HTMLVideoElement} video + */ +shaka.player.Stats.prototype.updateVideoStats = function(video) { + // Quality metrics may not be supported in all browsers yet. + var quality = video.getVideoPlaybackQuality(); + if (quality) { + this.decodedFrames = quality.totalVideoFrames; + this.droppedFrames = quality.droppedVideoFrames; + } +}; + + +/** + * Logs a buffering event. + */ +shaka.player.Stats.prototype.logBufferingEvent = function() { + this.bufferingHistory.push(Date.now() / 1000.0); +}; + + +/** + * Logs play time. + * + * @param {number} t Milliseconds the player has been in a playback state. + */ +shaka.player.Stats.prototype.logPlayTime = function(t) { + this.playTime += t / 1000.0; +}; + + +/** + * Logs buffering time. + * + * @param {number} t Milliseconds the player has been in a buffering state. + */ +shaka.player.Stats.prototype.logBufferingTime = function(t) { + this.bufferingTime += t / 1000.0; +}; + + +/** + * Logs a representation change. + * + * @param {!shaka.dash.mpd.Representation} representation + */ +shaka.player.Stats.prototype.logRepresentationChange = + function(representation) { + this.representation = + new shaka.player.Stats.RepresentationStats(representation); + this.representationHistory.push( + new shaka.player.Stats.TimedValue(this.representation)); +}; + + +/** + * Logs bandwidth stats. + * + * @param {number} bandwidth in bits per second. + */ +shaka.player.Stats.prototype.logBandwidth = function(bandwidth) { + this.estimatedBandwidth = bandwidth; + this.bandwidthHistory.push( + new shaka.player.Stats.TimedValue(bandwidth)); +}; + + +/** + * Logs playback latency. + * + * @param {number} latency in milliseconds. + */ +shaka.player.Stats.prototype.logPlaybackLatency = function(latency) { + this.playbackLatency = latency / 1000.0; +}; + + + +/** + * A collection of video representation stats. + * + * @param {!shaka.dash.mpd.Representation} representation + * + * @constructor + * @struct + */ +shaka.player.Stats.RepresentationStats = function(representation) { + /** + * Representation width in pixels. + * + * @type {?number} + * @expose + */ + this.videoWidth = representation.width; + + /** + * Representation height in pixels. + * + * @type {?number} + * @expose + */ + this.videoHeight = representation.height; + + /** + * Representation MIME type. + * + * @type {?string} + * @expose + */ + this.videoMimeType = representation.mimeType; + + /** + * Representation bandwidth requirement in bits per second. + * + * @type {?number} + * @expose + */ + this.videoBandwidth = representation.bandwidth; +}; + + + +/** + * A value associated with a timestamp. + * + * @param {T} value + * + * @template T + * @constructor + * @struct + */ +shaka.player.Stats.TimedValue = function(value) { + /** + * Seconds since 1970. + * + * @type {number} + * @const + * @expose + */ + this.timestamp = Date.now() / 1000.0; + + /** + * @const {T} + * @expose + */ + this.value = value; +}; + diff --git a/lib/player/text_track.js b/lib/player/text_track.js new file mode 100644 index 0000000000..2d826dc859 --- /dev/null +++ b/lib/player/text_track.js @@ -0,0 +1,80 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview TextTrack class. + */ + +goog.provide('shaka.player.TextTrack'); + + + +/** + * Creates a new TextTrack. + * @param {number} id + * @param {?string} lang + * @constructor + */ +shaka.player.TextTrack = function(id, lang) { + /** + * A unique ID for the track. + * + * @type {number} + * @expose + */ + this.id = id; + + /** + * The track's language, a BCP 47 language tag. + * + * @type {string} + * @expose + */ + this.lang = lang || 'unknown'; + + /** + * True if this is currently the active track. + * + * @type {boolean} + * @expose + */ + this.active = false; + + /** + * True if this track is currently being displayed. + * + * @type {boolean} + * @expose + */ + this.enabled = false; +}; + + +/** + * Compares two TextTrack objects by language. + * @param {!shaka.player.TextTrack} textTrack1 + * @param {!shaka.player.TextTrack} textTrack2 + * @return {number} + * @export + */ +shaka.player.TextTrack.compare = function(textTrack1, textTrack2) { + if (textTrack1.lang < textTrack2.lang) { + return -1; + } else if (textTrack1.lang > textTrack2.lang) { + return 1; + } + + return 0; +}; + diff --git a/lib/player/video_track.js b/lib/player/video_track.js new file mode 100644 index 0000000000..9fa48a70ac --- /dev/null +++ b/lib/player/video_track.js @@ -0,0 +1,99 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview VideoTrack class. + */ + +goog.provide('shaka.player.VideoTrack'); + + + +/** + * Creates a new VideoTrack. + * @param {number} id + * @param {?number} bandwidth + * @param {?number} width + * @param {?number} height + * @constructor + */ +shaka.player.VideoTrack = function(id, bandwidth, width, height) { + /** + * A unique ID for the track. + * + * @type {number} + * @expose + */ + this.id = id; + + /** + * The bandwidth required in bits per second. + * + * @type {number} + * @expose + */ + this.bandwidth = bandwidth || 0; + + /** + * The track's width in pixels. + * + * @type {number} + * @expose + */ + this.width = width || 0; + + /** + * The track's height in pixels. + * + * @type {number} + * @expose + */ + this.height = height || 0; + + /** + * True if this is currently the active track. + * + * @type {boolean} + * @expose + */ + this.active = false; +}; + + +/** + * Compares two VideoTrack objects: first by resolution, and then by bandwidth. + * @param {!shaka.player.VideoTrack} videoTrack1 + * @param {!shaka.player.VideoTrack} videoTrack2 + * @return {number} + * @export + */ +shaka.player.VideoTrack.compare = function(videoTrack1, videoTrack2) { + var resolution1 = videoTrack1.width * videoTrack1.height; + var resolution2 = videoTrack2.width * videoTrack2.height; + + if (resolution1 < resolution2) { + return -1; + } else if (resolution1 > resolution2) { + return 1; + } + + if (videoTrack1.bandwidth < videoTrack2.bandwidth) { + return -1; + } else if (videoTrack1.bandwidth > videoTrack2.bandwidth) { + return 1; + } + + return 0; +}; + diff --git a/lib/polyfill/fullscreen.js b/lib/polyfill/fullscreen.js new file mode 100644 index 0000000000..5f91e4df85 --- /dev/null +++ b/lib/polyfill/fullscreen.js @@ -0,0 +1,46 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A polyfill to unify fullscreen APIs. + * + * @see http://enwp.org/polyfill + */ + +goog.provide('shaka.polyfill.Fullscreen'); + + +/** + * @namespace shaka.polyfill.Fullscreen + * @export + * + * @summary A polyfill to unify fullscreen APIs across browsers. + * Many browsers have a prefixed fullscreen method on HTMLMediaElement. + * See {@link http://goo.gl/n7TYl0 Using fullscreen mode} on MDN for more + * information. + */ + + +/** + * Install the polyfill if needed. + * @export + */ +shaka.polyfill.Fullscreen.install = function() { + var proto = HTMLMediaElement.prototype; + proto.requestFullscreen = proto.requestFullscreen || + proto.mozRequestFullscreen || + proto.msRequestFullscreen || + proto.webkitRequestFullscreen; +}; + diff --git a/lib/polyfill/mediakeys.js b/lib/polyfill/mediakeys.js new file mode 100644 index 0000000000..1f6752a315 --- /dev/null +++ b/lib/polyfill/mediakeys.js @@ -0,0 +1,58 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A polyfill to unify EME APIs across browser versions. + * + * @see http://enwp.org/polyfill + */ + +goog.provide('shaka.polyfill.MediaKeys'); + +goog.require('shaka.log'); +goog.require('shaka.polyfill.PatchedMediaKeys.nop'); +goog.require('shaka.polyfill.PatchedMediaKeys.v01b'); + + +/** + * @namespace shaka.polyfill.MediaKeys + * @export + * + * @summary A polyfill to unify EME APIs across browser versions. + * + * The {@link https://w3c.github.io/encrypted-media/ EME spec} is still a + * work-in-progress. As such, we need to provide a consistent API to the Shaka + * Player. Until the spec is completely stable, the API provided by this + * polyfill may lag behind the latest spec developments. + */ + + +/** + * Install the polyfill if needed. + * @export + */ +shaka.polyfill.MediaKeys.install = function() { + shaka.log.debug('MediaKeys.install'); + + if (HTMLMediaElement.prototype.webkitGenerateKeyRequest) { + shaka.log.info('Using prefixed EME v0.1b.'); + shaka.polyfill.PatchedMediaKeys.v01b.install(); + } else if (Navigator.prototype.requestMediaKeySystemAccess) { + shaka.log.info('Using native EME as-is.'); + } else { + shaka.log.info('EME not available.'); + shaka.polyfill.PatchedMediaKeys.nop.install(); + } +}; + diff --git a/lib/polyfill/patchedmediakeys_nop.js b/lib/polyfill/patchedmediakeys_nop.js new file mode 100644 index 0000000000..f261828955 --- /dev/null +++ b/lib/polyfill/patchedmediakeys_nop.js @@ -0,0 +1,105 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A polyfill to stub out {@link http://goo.gl/sgJHNN EME draft + * 01 December 2014} on browsers without EME. All methods will fail. + * + * @see http://enwp.org/polyfill + */ + +goog.provide('shaka.polyfill.PatchedMediaKeys.nop'); + +goog.require('shaka.asserts'); +goog.require('shaka.log'); + + +/** + * Install the polyfill. + * @export + */ +shaka.polyfill.PatchedMediaKeys.nop.install = function() { + shaka.log.debug('PatchedMediaKeys.nop.install'); + + // Alias. + var nop = shaka.polyfill.PatchedMediaKeys.nop; + + // Install patches. + Navigator.prototype.requestMediaKeySystemAccess = + nop.requestMediaKeySystemAccess; + // Work around read-only declarations for these properties by using strings: + HTMLMediaElement.prototype['mediaKeys'] = null; + HTMLMediaElement.prototype['waitingFor'] = ''; + HTMLMediaElement.prototype.setMediaKeys = nop.setMediaKeys; + window.MediaKeys = nop.MediaKeys; + // TODO: isTypeSupported deprecated + window.MediaKeys.isTypeSupported = nop.MediaKeys.isTypeSupported; +}; + + +/** + * An implementation of Navigator.prototype.requestMediaKeySystemAccess. + * Retrieve a MediaKeySystemAccess object. + * + * @this {!Navigator} + * @param {string} keySystem + * @param {Array.=} opt_supportedConfigurations + * @return {!Promise.} + */ +shaka.polyfill.PatchedMediaKeys.nop.requestMediaKeySystemAccess = + function(keySystem, opt_supportedConfigurations) { + shaka.log.debug('PatchedMediaKeys.nop.requestMediaKeySystemAccess'); + shaka.asserts.assert(this instanceof Navigator); + + return Promise.reject(new Error( + 'The key system specified is not supported.')); +}; + + +/** + * An implementation of HTMLMediaElement.prototype.setMediaKeys. + * Attach a MediaKeys object to the media element. + * + * @this {!HTMLMediaElement} + * @param {MediaKeys} mediaKeys + * @return {!Promise} + */ +shaka.polyfill.PatchedMediaKeys.nop.setMediaKeys = function(mediaKeys) { + shaka.log.debug('PatchedMediaKeys.nop.setMediaKeys'); + shaka.asserts.assert(this instanceof HTMLMediaElement); + + if (mediaKeys == null) { + return Promise.resolve(); + } + + return Promise.reject(new Error('MediaKeys not supported.')); +}; + + +/** + * An unusable constructor for MediaKeys. Hosts isTypeSupported. + */ +shaka.polyfill.PatchedMediaKeys.nop.MediaKeys = function() { + throw new TypeError('Illegal constructor.'); +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.nop.MediaKeys.isTypeSupported = + function(keySystem, mimeType) { + // TODO: isTypeSupported deprecated + shaka.log.debug('PatchedMediaKeys.nop.isTypeSupported'); + return false; +}; + diff --git a/lib/polyfill/patchedmediakeys_v01b.js b/lib/polyfill/patchedmediakeys_v01b.js new file mode 100644 index 0000000000..473dc430f0 --- /dev/null +++ b/lib/polyfill/patchedmediakeys_v01b.js @@ -0,0 +1,724 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A polyfill to implement {@link http://goo.gl/sgJHNN EME draft + * 01 December 2014} on top of {@link http://goo.gl/FSpoAo EME v0.1b}. + * + * @see http://enwp.org/polyfill + */ + +goog.provide('shaka.polyfill.PatchedMediaKeys.v01b'); + +goog.require('shaka.asserts'); +goog.require('shaka.log'); +goog.require('shaka.util.EventManager'); +goog.require('shaka.util.FakeEvent'); +goog.require('shaka.util.FakeEventTarget'); +goog.require('shaka.util.PublicPromise'); +goog.require('shaka.util.StringUtils'); + + +/** + * Install the polyfill. + * @export + */ +shaka.polyfill.PatchedMediaKeys.v01b.install = function() { + shaka.log.debug('v01b.install'); + + shaka.asserts.assert(HTMLMediaElement.prototype.webkitGenerateKeyRequest); + + // Alias. + var v01b = shaka.polyfill.PatchedMediaKeys.v01b; + + // Install patches. + Navigator.prototype.requestMediaKeySystemAccess = + v01b.requestMediaKeySystemAccess; + // Work around read-only declarations for these properties by using strings: + HTMLMediaElement.prototype['mediaKeys'] = null; + HTMLMediaElement.prototype['waitingFor'] = ''; + HTMLMediaElement.prototype.setMediaKeys = v01b.setMediaKeys; + window.MediaKeys = v01b.MediaKeys; + // TODO: isTypeSupported deprecated + window.MediaKeys.isTypeSupported = v01b.MediaKeys.isTypeSupported; +}; + + +/** + * An implementation of Navigator.prototype.requestMediaKeySystemAccess. + * Retrieve a MediaKeySystemAccess object. + * + * @this {!Navigator} + * @param {string} keySystem + * @param {Array.=} opt_supportedConfigurations + * @return {!Promise.} + */ +shaka.polyfill.PatchedMediaKeys.v01b.requestMediaKeySystemAccess = + function(keySystem, opt_supportedConfigurations) { + shaka.log.debug('v01b.requestMediaKeySystemAccess'); + shaka.asserts.assert(this instanceof Navigator); + + // TODO(story 1954733): handle opt_supportedConfigurations. + + // Alias. + var v01b = shaka.polyfill.PatchedMediaKeys.v01b; + try { + var access = new v01b.MediaKeySystemAccess(keySystem); + return Promise.resolve(/** @type {!MediaKeySystemAccess} */ (access)); + } catch (exception) { + return Promise.reject(exception); + } +}; + + +/** + * An implementation of HTMLMediaElement.prototype.setMediaKeys. + * Attach a MediaKeys object to the media element. + * + * @this {!HTMLMediaElement} + * @param {MediaKeys} mediaKeys + * @return {!Promise} + */ +shaka.polyfill.PatchedMediaKeys.v01b.setMediaKeys = function(mediaKeys) { + shaka.log.debug('v01b.setMediaKeys'); + shaka.asserts.assert(this instanceof HTMLMediaElement); + + // Alias. + var v01b = shaka.polyfill.PatchedMediaKeys.v01b; + + var newMediaKeys = + /** @type {shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys} */ ( + mediaKeys); + var oldMediaKeys = + /** @type {shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys} */ ( + this.mediaKeys); + + if (oldMediaKeys && oldMediaKeys != newMediaKeys) { + shaka.asserts.assert(oldMediaKeys instanceof v01b.MediaKeys); + // Have the old MediaKeys stop listening to events on the video tag. + oldMediaKeys.setMedia(null); + } + + delete this['mediaKeys']; // in case there is an existing getter + this['mediaKeys'] = mediaKeys; // work around read-only declaration + + if (newMediaKeys) { + shaka.asserts.assert(newMediaKeys instanceof v01b.MediaKeys); + newMediaKeys.setMedia(this); + } + + return Promise.resolve(); +}; + + +/** + * For some of this polyfill's implementation, we need to query a video element. + * But for some embedded systems, it is memory-expensive to create multiple + * video elements. Therefore, we check the document to see if we can borrow one + * to query before we fall back to creating one temporarily. + * + * @return {!HTMLVideoElement} + * @protected + */ +shaka.polyfill.PatchedMediaKeys.v01b.getVideoElement = function() { + var videos = document.getElementsByTagName('video'); + /** @type {!HTMLVideoElement} */ + var tmpVideo = videos.length ? videos[0] : document.createElement('video'); + return tmpVideo; +}; + + + +/** + * An implementation of MediaKeySystemAccess. + * + * @constructor + * @param {string} keySystem + * @implements {MediaKeySystemAccess} + * @throws {Error} if the key system is not supported. + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySystemAccess = + function(keySystem) { + shaka.log.debug('v01b.MediaKeySystemAccess'); + + /** @type {string} */ + this.keySystem = keySystem; + + /** @private {string} */ + this.internalKeySystem_ = keySystem; + + if (keySystem == 'org.w3.clearkey') { + // Clearkey's string must be prefixed in v0.1b. + this.internalKeySystem_ = 'webkit-org.w3.clearkey'; + } + + var tmpVideo = shaka.polyfill.PatchedMediaKeys.v01b.getVideoElement(); + // v0.1b tests for key system availability with an extra argument on + // canPlayType. This, however, requires you to check video types in order to + // check for key systems. So we check all types we expect might succeed in + // Chrome. + var knownGoodTypes = ['video/mp4', 'video/webm']; + for (var i = 0; i < knownGoodTypes.length; ++i) { + if (tmpVideo.canPlayType(knownGoodTypes[i], this.internalKeySystem_)) { + return; + } + } + + // The key system did not report as playable with any known-good video types. + throw Error('The key system specified is not supported.'); +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySystemAccess.prototype. + createMediaKeys = function() { + shaka.log.debug('v01b.MediaKeySystemAccess.createMediaKeys'); + + // Alias. + var v01b = shaka.polyfill.PatchedMediaKeys.v01b; + var mediaKeys = new v01b.MediaKeys(this.internalKeySystem_); + return Promise.resolve(/** @type {!MediaKeys} */ (mediaKeys)); +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySystemAccess.prototype. + getConfiguration = function() { + shaka.log.debug('v01b.MediaKeySystemAccess.getConfiguration'); + // TODO: getConfiguration unsupported + return null; +}; + + + +/** + * An implementation of MediaKeys. + * + * @constructor + * @param {string} keySystem + * @implements {MediaKeys} + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys = function(keySystem) { + shaka.log.debug('v01b.MediaKeys'); + + /** @private {string} */ + this.keySystem_ = keySystem; + + /** @private {HTMLMediaElement} */ + this.media_ = null; + + /** @private {!shaka.util.EventManager} */ + this.eventManager_ = new shaka.util.EventManager(); + + /** + * @private {!Array.} + */ + this.newSessions_ = []; + + /** + * @private {!Object.} + */ + this.sessionMap_ = {}; +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.isTypeSupported = + function(keySystem, mimeType) { + // TODO: isTypeSupported deprecated + shaka.log.debug('v01b.MediaKeys.isTypeSupported'); + + var tmpVideo = shaka.polyfill.PatchedMediaKeys.v01b.getVideoElement(); + + if (keySystem == 'org.w3.clearkey') { + // Clearkey's string must be prefixed in v0.1b. + keySystem = 'webkit-org.w3.clearkey'; + } + + return !!tmpVideo.canPlayType(mimeType, keySystem); +}; + + +/** + * @param {HTMLMediaElement} media + * @protected + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.prototype.setMedia = + function(media) { + this.media_ = media; + + // Remove any old listeners. + this.eventManager_.removeAll(); + + if (media) { + // Intercept and translate these prefixed EME events. + this.eventManager_.listen(media, 'webkitneedkey', + /** @type {shaka.util.EventManager.ListenerType} */ ( + this.onWebkitNeedKey_.bind(this))); + + this.eventManager_.listen(media, 'webkitkeymessage', + /** @type {shaka.util.EventManager.ListenerType} */ ( + this.onWebkitKeyMessage_.bind(this))); + + this.eventManager_.listen(media, 'webkitkeyadded', + /** @type {shaka.util.EventManager.ListenerType} */ ( + this.onWebkitKeyAdded_.bind(this))); + + this.eventManager_.listen(media, 'webkitkeyerror', + /** @type {shaka.util.EventManager.ListenerType} */ ( + this.onWebkitKeyError_.bind(this))); + } +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.prototype.createSession = + function(opt_sessionType) { + shaka.log.debug('v01b.MediaKeys.createSession'); + + var sessionType = opt_sessionType || 'temporary'; + if (sessionType != 'temporary' && sessionType != 'persistent') { + throw new TypeError('Session type ' + opt_sessionType + + ' is unsupported on this platform.'); + } + + // Alias. + var v01b = shaka.polyfill.PatchedMediaKeys.v01b; + + shaka.asserts.assert(this.media_); + var media = /** @type {!HTMLMediaElement} */ (this.media_); + + var session = new v01b.MediaKeySession(media, this.keySystem_, sessionType); + this.newSessions_.push(session); + return session; +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.prototype.setServerCertificate = + function(serverCertificate) { + shaka.log.debug('v01b.MediaKeys.setServerCertificate'); + + // There is no equivalent in v0.1b, so return failure. + return Promise.reject(new Error( + 'setServerCertificate not supported on this platform.')); +}; + + +/** + * @param {!MediaKeyEvent} event + * @private + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.prototype.onWebkitNeedKey_ = + function(event) { + shaka.log.debug('v01b.onWebkitNeedKey_', event); + shaka.asserts.assert(this.media_); + + var event2 = shaka.util.FakeEvent.create({ + type: 'encrypted', + initDataType: 'cenc', // not used by v0.1b EME, but given a valid value + initData: event.initData + }); + + this.media_.dispatchEvent(event2); +}; + + +/** + * @param {!MediaKeyEvent} event + * @private + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.prototype.onWebkitKeyMessage_ = + function(event) { + shaka.log.debug('v01b.onWebkitKeyMessage_', event); + + var session = this.findSession_(event.sessionId); + shaka.asserts.assert(session); + if (!session) { + shaka.log.error('Session not found', event.sessionId); + return; + } + + var isNew = isNaN(session.expiration); + + var event2 = shaka.util.FakeEvent.create({ + type: 'message', + messageType: isNew ? 'licenserequest' : 'licenserenewal', + message: event.message + }); + + session.generated(); + session.dispatchEvent(event2); +}; + + +/** + * @param {!MediaKeyEvent} event + * @private + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.prototype.onWebkitKeyAdded_ = + function(event) { + shaka.log.debug('v01b.onWebkitKeyAdded_', event); + + var session = this.findSession_(event.sessionId); + shaka.asserts.assert(session); + if (session) { + session.ready(); + } +}; + + +/** + * @param {!MediaKeyEvent} event + * @private + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.prototype.onWebkitKeyError_ = + function(event) { + shaka.log.debug('v01b.onWebkitKeyError_', event); + + var session = this.findSession_(event.sessionId); + shaka.asserts.assert(session); + if (session) { + session.handleError(event); + } +}; + + +/** + * @param {string} sessionId + * @return {shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession} + * @private + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeys.prototype.findSession_ = + function(sessionId) { + var session = this.sessionMap_[sessionId]; + if (session) { + shaka.log.debug('v01b.MediaKeys.findSession_', session); + return session; + } + + session = this.newSessions_.shift(); + if (session) { + session.sessionId = sessionId; + this.sessionMap_[sessionId] = session; + shaka.log.debug('v01b.MediaKeys.findSession_', session); + return session; + } + + return null; +}; + + + +/** + * An implementation of MediaKeySession. + * + * @param {!HTMLMediaElement} media + * @param {string} keySystem + * @param {string} sessionType + * + * @constructor + * @implements {MediaKeySession} + * @extends {shaka.util.FakeEventTarget} + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession = + function(media, keySystem, sessionType) { + shaka.log.debug('v01b.MediaKeySession'); + shaka.util.FakeEventTarget.call(this, null); + + /** @private {!HTMLMediaElement} */ + this.media_ = media; + + /** @private {shaka.util.PublicPromise} */ + this.generatePromise_ = null; + + /** @private {shaka.util.PublicPromise} */ + this.updatePromise_ = null; + + /** @private {string} */ + this.keySystem_ = keySystem; + + /** @private {string} */ + this.type_ = sessionType; + + /** @type {string} */ + this.sessionId = ''; + + /** @type {number} */ + this.expiration = NaN; + + /** @type {!shaka.util.PublicPromise} */ + this.closed = new shaka.util.PublicPromise(); + + /** @type {!MediaKeyStatuses} */ + this.keyStatuses = {}; + // TODO: key status and 'keyschange' events unsupported +}; +goog.inherits(shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession, + shaka.util.FakeEventTarget); + + +/** + * Signals that the license request has been generated. This resolves the + * 'generateRequest' promise. + * + * @protected + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.generated = + function() { + shaka.log.debug('v01b.MediaKeySession.generated'); + + if (this.generatePromise_) { + this.generatePromise_.resolve(); + this.generatePromise_ = null; + } +}; + + +/** + * Signals that the session is 'ready', which is the terminology used in older + * versions of EME. The new signal is to resolve the 'update' promise. This + * translates between the two. + * + * @protected + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.ready = + function() { + shaka.log.debug('v01b.MediaKeySession.ready'); + + // There is no expiration info in v0.1b, but we want to signal, at least + // internally, that the session is no longer new. This allows us to set + // the messageType attribute of 'message' events. + this.expiration = Number.POSITIVE_INFINITY; + // TODO: key status and 'keyschange' events unsupported + + if (this.updatePromise_) { + this.updatePromise_.resolve(); + } + this.updatePromise_ = null; +}; + + +/** + * Either rejects a promise, or dispatches an error event, as appropriate. + * + * @param {!MediaKeyEvent} event + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.handleError = + function(event) { + shaka.log.debug('v01b.MediaKeySession.handleError', event); + + // This does not match the DOMException we get in current WD EME, but it will + // at least provide some information which can be used to look into the + // problem. + var error = new Error('EME v0.1b key error'); + error.errorCode = event.errorCode; + error.errorCode.systemCode = event.systemCode; + + // The presence or absence of sessionId indicates whether this corresponds to + // generateRequest() or update(). + if (!event.sessionId && this.generatePromise_) { + error.method = 'generateRequest'; + this.generatePromise_.reject(error); + this.generatePromise_ = null; + } else if (event.sessionId && this.updatePromise_) { + error.method = 'update'; + this.updatePromise_.reject(error); + this.updatePromise_ = null; + } +}; + + +/** + * An internal version of generateRequest which defers new calls while old ones + * are in progress. + * + * @param {!shaka.util.PublicPromise} promise The promise associated with this + * call. + * @param {BufferSource} initData + * @param {?string} offlineSessionId + * @private + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.generate_ = + function(promise, initData, offlineSessionId) { + if (this.generatePromise_) { + // We already have a generate in-progress, so defer this one until after + // the old one is resolved. Execute this whether the original one succeeds + // or fails. + this.generatePromise_.then( + this.generate_.bind(this, promise, initData, offlineSessionId) + ).catch( + this.generate_.bind(this, promise, initData, offlineSessionId) + ); + return; + } + + this.generatePromise_ = promise; + try { + /** @type {Uint8Array} */ + var mangledInitData; + + if (this.type_ == 'persistent') { + var StringUtils = shaka.util.StringUtils; + if (!offlineSessionId) { + // Persisting the initial license. + // Prefix the init data with a tag to indicate persistence. + var u8InitData = new Uint8Array(initData); + mangledInitData = StringUtils.toUint8Array( + 'PERSISTENT|' + StringUtils.fromUint8Array(u8InitData)); + } else { + // Loading a stored license. + // Prefix the init data (which is really a session ID) with a tag to + // indicate that we are loading a persisted session. + mangledInitData = StringUtils.toUint8Array( + 'LOAD_SESSION|' + offlineSessionId); + } + } else { + // Streaming. + shaka.asserts.assert(this.type_ == 'temporary'); + shaka.asserts.assert(!offlineSessionId); + mangledInitData = new Uint8Array(initData); + } + + shaka.asserts.assert(mangledInitData); + this.media_.webkitGenerateKeyRequest(this.keySystem_, mangledInitData); + } catch (exception) { + // Reject the promise. + this.generatePromise_.reject(exception); + this.generatePromise_ = null; + } +}; + + +/** + * An internal version of update which defers new calls while old ones are in + * progress. + * + * @param {!shaka.util.PublicPromise} promise The promise associated with this + * call. + * @param {BufferSource} response + * @private + */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.update_ = + function(promise, response) { + if (this.updatePromise_) { + // We already have an update in-progress, so defer this one until after the + // old one is resolved. Execute this whether the original one succeeds or + // fails. + this.updatePromise_.then( + this.update_.bind(this, promise, response) + ).catch( + this.update_.bind(this, promise, response) + ); + return; + } + + this.updatePromise_ = promise; + + var key; + var keyId; + + if (this.keySystem_ == 'webkit-org.w3.clearkey') { + // The current EME version of clearkey wants a structured JSON response. + // The v0.1b version wants just a raw key. Parse the JSON response and + // extract the key and key ID. + var StringUtils = shaka.util.StringUtils; + var licenseString = StringUtils.fromUint8Array(new Uint8Array(response)); + var jwkSet = /** @type {JWKSet} */ (JSON.parse(licenseString)); + key = StringUtils.toUint8Array(StringUtils.fromBase64(jwkSet.keys[0].k)); + keyId = StringUtils.toUint8Array( + StringUtils.fromBase64(jwkSet.keys[0].kid)); + } else { + // The key ID is not required. + key = new Uint8Array(response); + keyId = null; + } + + try { + this.media_.webkitAddKey(this.keySystem_, key, keyId, this.sessionId); + } catch (exception) { + // Reject the promise. + this.updatePromise_.reject(exception); + this.updatePromise_ = null; + } +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.generateRequest = + function(initDataType, initData) { + shaka.log.debug('v01b.MediaKeySession.generateRequest'); + var nextGeneratePromise = new shaka.util.PublicPromise(); + this.generate_(nextGeneratePromise, initData, null); + return nextGeneratePromise; +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.load = + function(sessionId) { + shaka.log.debug('v01b.MediaKeySession.load'); + if (this.type_ == 'persistent') { + var nextGeneratePromise = new shaka.util.PublicPromise(); + this.generate_(nextGeneratePromise, null, sessionId); + return nextGeneratePromise; + } else { + return Promise.reject(new Error('The session type is not "persistent".')); + } +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.update = + function(response) { + shaka.log.debug('v01b.MediaKeySession.update', response); + shaka.asserts.assert(this.sessionId); + + var nextUpdatePromise = new shaka.util.PublicPromise(); + this.update_(nextUpdatePromise, response); + return nextUpdatePromise; +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.close = + function() { + shaka.log.debug('v01b.MediaKeySession.close'); + shaka.asserts.assert(this.sessionId); + + if (this.type_ != 'persistent') { + // This will remove a persistent session, but it's also the only way to + // free CDM resources on v0.1b. + this.media_.webkitCancelKeyRequest(this.keySystem_, this.sessionId); + } + + // Resolve the 'closed' promise and return it. + this.closed.resolve(); + return this.closed; +}; + + +/** @override */ +shaka.polyfill.PatchedMediaKeys.v01b.MediaKeySession.prototype.remove = + function() { + shaka.log.debug('v01b.MediaKeySession.remove'); + + if (this.type_ != 'persistent') { + return Promise.reject(new Error('Not a persistent session.')); + } + + return this.close(); +}; + diff --git a/lib/polyfill/videoplaybackquality.js b/lib/polyfill/videoplaybackquality.js new file mode 100644 index 0000000000..b2c746b7ad --- /dev/null +++ b/lib/polyfill/videoplaybackquality.js @@ -0,0 +1,66 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A polyfill to provide MSE VideoPlaybackQuality metrics with a + * single API. + * + * @see http://enwp.org/polyfill + */ + +goog.provide('shaka.polyfill.VideoPlaybackQuality'); + + +/** + * @namespace shaka.polyfill.VideoPlaybackQuality + * @export + * + * @summary A polyfill to provide MSE VideoPlaybackQuality metrics. + * Many browsers do not yet provide this API, and Chrome currently provides + * similar data through individual prefixed attributes on HTMLVideoElement. + */ + + +/** + * Install the polyfill if needed. + * @export + */ +shaka.polyfill.VideoPlaybackQuality.install = function() { + var proto = HTMLVideoElement.prototype; + if (proto.getVideoPlaybackQuality) { + // No polyfill needed. + return; + } + + /** + * @this {HTMLVideoElement} + * @return {VideoPlaybackQuality} + */ + proto.getVideoPlaybackQuality = function() { + if (!('webkitDroppedFrameCount' in this)) { + // No stats available. + return null; + } + + return /** @type {VideoPlaybackQuality} */ ({ + 'corruptedVideoFrames': 0, + 'droppedVideoFrames': this.webkitDroppedFrameCount, + 'totalVideoFrames': this.webkitDecodedFrameCount, + // Not provided by this polyfill: + 'creationTime': null, + 'totalFrameDelay': null + }); + }; +}; + diff --git a/lib/util/ajax_request.js b/lib/util/ajax_request.js new file mode 100644 index 0000000000..44c5c8f43f --- /dev/null +++ b/lib/util/ajax_request.js @@ -0,0 +1,387 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements an asynchronous HTTP request. + */ + +goog.provide('shaka.util.AjaxRequest'); + +goog.require('goog.Uri'); +goog.require('shaka.asserts'); +goog.require('shaka.log'); +goog.require('shaka.util.IBandwidthEstimator'); +goog.require('shaka.util.PublicPromise'); +goog.require('shaka.util.StringUtils'); + + + +/** + * Creates an AjaxRequest. An AjaxRequest manages retries automatically. + * + * @param {string} url The URL to request. + * + * @struct + * @constructor + */ +shaka.util.AjaxRequest = function(url) { + /** + * The request URL. + * @protected {string} + */ + this.url = url; + + /** + * A collection of parameters which an instance of a subclass may wish to + * override. + * @protected {!shaka.util.AjaxRequest.Parameters} + */ + this.parameters = new shaka.util.AjaxRequest.Parameters(); + + /** + * The number of times the request has been attempted. + * @private {number} + */ + this.attempts_ = 0; + + /** + * A timestamp in milliseconds when the request began. + * @private {number} + */ + this.startTime_ = 0; + + /** + * The delay, in milliseconds, before the next retry. + * @private {number} + */ + this.retryDelayMs_ = 0; + + /** + * The last used delay. This is used in unit tests only. + * @private {number} + */ + this.lastDelayMs_ = 0; + + /** @private {XMLHttpRequest} */ + this.xhr_ = null; + + /** + * Resolved when the request is completed successfully. + * Rejected if it cannot be completed. + * @private {shaka.util.PublicPromise.} + */ + this.promise_ = new shaka.util.PublicPromise(); + + /** + * @type {shaka.util.IBandwidthEstimator} + */ + this.estimator = null; +}; + + + +/** + * A collection of parameters which an instance of a subclass may wish to + * override. + * + * @struct + * @constructor + */ +shaka.util.AjaxRequest.Parameters = function() { + /** + * The request body, if desired. + * @type {ArrayBuffer} + */ + this.body = null; + + /** + * The maximum number of times the request should be attempted. + * @type {number} + */ + this.maxAttempts = 1; + + /** + * The delay before the first retry, in milliseconds. + * @type {number} + */ + this.baseRetryDelayMs = 1000; + + /** + * The multiplier for successive retry delays. + * @type {number} + */ + this.retryBackoffFactor = 2.0; + + /** + * The maximum amount of fuzz to apply to each retry delay. + * For example, 0.5 means "between 50% below and 50% above the retry delay." + * @type {number} + */ + this.retryFuzzFactor = 0.5; + + /** + * The request timeout, in milliseconds. Zero means "unlimited". + * @type {number} + */ + this.requestTimeoutMs = 0; + + /** + * The HTTP request method, such as 'GET' or 'POST'. + * @type {string} + */ + this.method = 'GET'; + + /** + * The response type, corresponding to XMLHttpRequest.responseType. + * @type {string} + */ + this.responseType = 'arraybuffer'; + + /** + * A dictionary of request headers. + * @type {!Object.} + */ + this.requestHeaders = {}; + + /** + * Make requests with credentials. This will allow cookies in cross-site + * requests. + * @see http://goo.gl/YBRKPe + * @type {boolean} + */ + this.withCredentials = false; +}; + + +/** + * Destroys the AJAX request. + * This happens automatically after the internal promise is resolved or + * rejected. + * + * @private + */ +shaka.util.AjaxRequest.prototype.destroy_ = function() { + this.cleanupRequest_(); + this.parameters.body = null; + this.promise_ = null; + this.estimator = null; +}; + + +/** + * Remove |xhr_|'s references to bound functions, and set |xhr_| to null. + * + * @private + */ +shaka.util.AjaxRequest.prototype.cleanupRequest_ = function() { + if (this.xhr_) { + this.xhr_.onload = null; + this.xhr_.onerror = null; + } + this.xhr_ = null; +}; + + +/** + * Sends the request. Called by subclasses. + * + * @return {Promise.} + * + * @protected + */ +shaka.util.AjaxRequest.prototype.sendInternal = function() { + shaka.asserts.assert(this.xhr_ == null); + if (this.xhr_) { + // The request is already in-progress, so there's nothing to do. + return this.promise_; + } + + // We can't request from data URIs, so handle it separately. + if (this.url.lastIndexOf('data:', 0) == 0) { + return this.handleDataUri_(); + } + + this.attempts_++; + this.startTime_ = Date.now(); + + if (!this.retryDelayMs_) { + // First try. Lock in the retry delay. + this.retryDelayMs_ = this.parameters.baseRetryDelayMs; + } + + this.xhr_ = new XMLHttpRequest(); + + var url = this.url; + if (this.estimator) { + // NOTE: Cached responses ruin bandwidth estimation and can cause wildly + // inappropriate adaptation decisions. Since we cannot detect that a + // response was cached after the fact, we add a cache-busting parameter to + // the request to avoid caching. There are other methods, but they do not + // work cross-origin without control over both client and server. + var modifiedUri = new goog.Uri(url); + modifiedUri.getQueryData().add('_', Date.now()); + url = modifiedUri.toString(); + } + + this.xhr_.open(this.parameters.method, url, true); + this.xhr_.responseType = this.parameters.responseType; + this.xhr_.timeout = this.parameters.requestTimeoutMs; + this.xhr_.withCredentials = this.parameters.withCredentials; + + this.xhr_.onload = this.onLoad_.bind(this); + this.xhr_.onerror = this.onError_.bind(this); + + for (var k in this.parameters.requestHeaders) { + this.xhr_.setRequestHeader(k, this.parameters.requestHeaders[k]); + } + this.xhr_.send(this.parameters.body); + + return this.promise_; +}; + + +/** + * Handles a data URI. + * This method does not modify |this|'s state. + * + * @return {!Promise} + * + * @private + */ +shaka.util.AjaxRequest.prototype.handleDataUri_ = function() { + // Alias. + var StringUtils = shaka.util.StringUtils; + + // Fake the data URI request. + // https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs + var path = this.url.split(':')[1]; + var optionalTypeAndRest = path.split(';'); + var rest = optionalTypeAndRest.pop(); + var optionalEncodingAndData = rest.split(','); + var data = optionalEncodingAndData.pop(); + var optionalEncoding = optionalEncodingAndData.pop(); + + if (optionalEncoding == 'base64') { + data = StringUtils.fromBase64(data); + } else { + data = window.decodeURIComponent(data); + } + + if (this.parameters.responseType == 'arraybuffer') { + data = StringUtils.toUint8Array(data).buffer; + } + + // We can't set the response field of an XHR, although we can make a + // hacky object that will still look like an XHR. + var xhr = /** @type {!XMLHttpRequest} */ ( + JSON.parse(JSON.stringify(new XMLHttpRequest()))); + xhr.response = data; + xhr.responseText = data.toString(); + + var promise = this.promise_; + promise.resolve(xhr); + this.destroy_(); + return promise; +}; + + +/** + * Aborts an in-progress request. + * If a request is not in-progress then this function does nothing. + */ +shaka.util.AjaxRequest.prototype.abort = function() { + if (!this.xhr_ || this.xhr_.readyState == XMLHttpRequest.DONE) { + return; + } + shaka.asserts.assert(this.xhr_.readyState != 0); + + this.xhr_.abort(); + + var error = new Error('Request aborted.'); + error.type = 'aborted'; + error.status = null; + error.xhr = this.xhr_; + + this.promise_.reject(error); + this.destroy_(); +}; + + +/** + * Handles a "load" event. + * + * @param {!ProgressEvent} event The ProgressEvent from the request. + * + * @private + */ +shaka.util.AjaxRequest.prototype.onLoad_ = function(event) { + shaka.asserts.assert(event.target == this.xhr_); + + if (this.estimator) { + this.estimator.sample(Date.now() - this.startTime_, event.loaded); + } + + if (this.xhr_.status >= 200 && this.xhr_.status <= 299) { + // All 2xx HTTP codes are success cases. + this.promise_.resolve(this.xhr_); + this.destroy_(); + } else if (this.attempts_ < this.parameters.maxAttempts) { + this.cleanupRequest_(); + + var sendAgain = this.sendInternal.bind(this); + + // Fuzz the delay to avoid tons of clients hitting the server at once + // after it recovers from whatever is causing it to fail. + var negToPosOne = (Math.random() * 2.0) - 1.0; + var negToPosFuzzFactor = negToPosOne * this.parameters.retryFuzzFactor; + var fuzzedDelay = this.retryDelayMs_ * (1.0 + negToPosFuzzFactor); + window.setTimeout(sendAgain, fuzzedDelay); + + // Store the fuzzed delay to make testing retries feasible. + this.lastDelayMs_ = fuzzedDelay; + + // Back off the next delay. + this.retryDelayMs_ *= this.parameters.retryBackoffFactor; + } else { + var error = new Error('Network failure.'); + error.type = 'net'; + error.status = this.xhr_.status; + error.xhr = this.xhr_; + + this.promise_.reject(error); + this.destroy_(); + } +}; + + +/** + * Handles an "error" event. + * + * @param {!ProgressEvent} event The ProgressEvent from this.xhr_. + * + * @private + */ +shaka.util.AjaxRequest.prototype.onError_ = function(event) { + // Do not try again since an "error" event is usually unrecoverable. + shaka.asserts.assert(event.target == this.xhr_); + + var error = new Error('Network failure.'); + error.type = 'net'; + error.status = this.xhr_.status; + error.xhr = this.xhr_; + + this.promise_.reject(error); + this.destroy_(); +}; + diff --git a/lib/util/array_utils.js b/lib/util/array_utils.js new file mode 100644 index 0000000000..2ae650c0a3 --- /dev/null +++ b/lib/util/array_utils.js @@ -0,0 +1,93 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Array utility functions. + */ + +goog.provide('shaka.util.ArrayUtils'); + + +/** + * @namespace shaka.util.ArrayUtils + * @summary Array utility functions. + */ + + +/** + * Intersect two arrays. Assumes that the arrays are already sorted. + * @param {!Array} a + * @param {!Array} b + * @return {!Array} The intersection of a and b. + * @throws {TypeError} if the array contents cannot be sorted or compared. + */ +shaka.util.ArrayUtils.intersect = function(a, b) { + var ai = 0; + var bi = 0; + var result = []; + while (ai < a.length && bi < b.length) { + if (a[ai] < b[bi]) { + ++ai; + } else if (a[ai] > b[bi]) { + ++bi; + } else if (a[ai] == b[bi]) { + result.push(a[ai]); + ++ai; + ++bi; + } else { + throw new TypeError('Cannot intersect non-sortable values!'); + } + } + return result; +}; + + +/** + * Create an array from object keys. + * @param {!Object} object + * @return {!Array} A sorted list of the keys. + */ +shaka.util.ArrayUtils.fromObjectKeys = function(object) { + var result = []; + for (var k in object) { + result.push(k); + } + result.sort(); + return result; +}; + + +/** + * Remove duplicate entries from an array. + * @param {!Array.} array + * @param {function(T): string=} opt_keyFn An optional function which takes an + * array item and converts it into a key. Use this if your array items + * cannot be used as an index into an Object. + * @return {!Array.} A sorted list of the keys. + * @template T + */ +shaka.util.ArrayUtils.removeDuplicates = function(array, opt_keyFn) { + var set = {}; + for (var i = 0; i < array.length; ++i) { + var key = opt_keyFn ? opt_keyFn(array[i]) : array[i].toString(); + set[key] = array[i]; + } + + var result = []; + for (var k in set) { + result.push(set[k]); + } + return result; +}; + diff --git a/lib/util/data_view_reader.js b/lib/util/data_view_reader.js new file mode 100644 index 0000000000..3c568ca4ee --- /dev/null +++ b/lib/util/data_view_reader.js @@ -0,0 +1,167 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a data view reader, which abstracts a DataView + * object. + */ + +goog.provide('shaka.util.DataViewReader'); + +goog.require('shaka.asserts'); + + + +/** + * Creates a DataViewReader + * + * @param {!DataView} dataView The DataView. + * @param {shaka.util.DataViewReader.Endianness} endianness The endianness. + * @constructor + */ +shaka.util.DataViewReader = function(dataView, endianness) { + /** @private {!DataView} */ + this.dataView_ = dataView; + + /** @private {boolean} */ + this.littleEndian_ = + endianness == shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN; + + /** @private {number} */ + this.position_ = 0; +}; + + +/** + * Endianness. + * @enum {number} + */ +shaka.util.DataViewReader.Endianness = { + BIG_ENDIAN: 0, + LITTLE_ENDIAN: 1 +}; + + +/** + * @return {boolean} True if the reader has more data, false otherwise. + */ +shaka.util.DataViewReader.prototype.hasMoreData = function() { + return this.position_ < this.dataView_.byteLength; +}; + + +/** + * Gets the current byte position. + * @return {number} + */ +shaka.util.DataViewReader.prototype.getPosition = function() { + return this.position_; +}; + + +/** + * Reads an unsigned 8 bit integer, and advances the reader. + * @return {number} The integer. + * @throws {RangeError} when reading past the end of the data view. + */ +shaka.util.DataViewReader.prototype.readUint8 = function() { + var value = this.dataView_.getUint8(this.position_); + this.position_ += 1; + return value; +}; + + +/** + * Reads an unsigned 16 bit integer, and advances the reader. + * @return {number} The integer. + * @throws {RangeError} when reading past the end of the data view. + */ +shaka.util.DataViewReader.prototype.readUint16 = function() { + var value = this.dataView_.getUint16(this.position_, this.littleEndian_); + this.position_ += 2; + return value; +}; + + +/** + * Reads an unsigned 32 bit integer, and advances the reader. + * @return {number} The integer. + * @throws {RangeError} when reading past the end of the data view. + */ +shaka.util.DataViewReader.prototype.readUint32 = function() { + var value = this.dataView_.getUint32(this.position_, this.littleEndian_); + this.position_ += 4; + return value; +}; + + +/** + * Reads an unsigned 64 bit integer, and advances the reader. + * @return {number} The integer. + * @throws {RangeError} when reading past the end of the data view or when + * reading an integer too large to store accurately in JavaScript. + */ +shaka.util.DataViewReader.prototype.readUint64 = function() { + var low, high; + + if (this.littleEndian_) { + low = this.dataView_.getUint32(this.position_, true); + high = this.dataView_.getUint32(this.position_ + 4, true); + } else { + high = this.dataView_.getUint32(this.position_, false); + low = this.dataView_.getUint32(this.position_ + 4, false); + } + + if (high > 0x1FFFFF) { + throw new RangeError('DataViewReader: Overflow reading 64-bit value.'); + } + + this.position_ += 8; + + // NOTE: This is subtle, but in JavaScript you can't shift left by 32 and get + // the full range of 53-bit values possible. You must multiply by 2^32. + return (high * Math.pow(2, 32)) + low; +}; + + +/** + * Reads the specified number of raw bytes. + * @param {number} bytes The number of bytes to read. + * @return {!Uint8Array} + * @throws {RangeError} when reading past the end of the data view. + */ +shaka.util.DataViewReader.prototype.readBytes = function(bytes) { + shaka.asserts.assert(bytes > 0); + if (this.position_ + bytes > this.dataView_.byteLength) { + throw new RangeError('DataViewReader: Read past end of DataView.'); + } + var value = new Uint8Array(this.dataView_.buffer, this.position_, bytes); + this.position_ += bytes; + return value; +}; + + +/** + * Skips the specified number of bytes. + * @param {number} bytes The number of bytes to skip. + * @throws {RangeError} when skipping past the end of the data view. + */ +shaka.util.DataViewReader.prototype.skip = function(bytes) { + shaka.asserts.assert(bytes > 0); + if (this.position_ + bytes > this.dataView_.byteLength) { + throw new RangeError('DataViewReader: Skip past end of DataView.'); + } + this.position_ += bytes; +}; + diff --git a/lib/util/ebml_parser.js b/lib/util/ebml_parser.js new file mode 100644 index 0000000000..ba6f47acfc --- /dev/null +++ b/lib/util/ebml_parser.js @@ -0,0 +1,298 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements an Extensible Binary Markup Language (EBML) parser. + */ + +goog.provide('shaka.util.EbmlElement'); +goog.provide('shaka.util.EbmlParser'); + + + +/** + * Creates an EbmlParser. + * @param {!DataView} dataView The EBML data. + * @constructor + */ +shaka.util.EbmlParser = function(dataView) { + /** @private {!DataView} */ + this.dataView_ = dataView; + + /** @private {!shaka.util.DataViewReader} */ + this.reader_ = new shaka.util.DataViewReader( + dataView, + shaka.util.DataViewReader.Endianness.BIG_ENDIAN); +}; + + +/** @const {!Array.} */ +shaka.util.EbmlParser.DYNAMIC_SIZES = [ + new Uint8Array([0xff]), + new Uint8Array([0x7f, 0xff]), + new Uint8Array([0x3f, 0xff, 0xff]), + new Uint8Array([0x1f, 0xff, 0xff, 0xff]), + new Uint8Array([0x0f, 0xff, 0xff, 0xff, 0xff]), + new Uint8Array([0x07, 0xff, 0xff, 0xff, 0xff, 0xff]), + new Uint8Array([0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]), + new Uint8Array([0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff])]; + + +/** + * @return {boolean} True if the parser has more data, false otherwise. + */ +shaka.util.EbmlParser.prototype.hasMoreData = function() { + return this.reader_.hasMoreData(); +}; + + +/** + * Parses an EBML element from the parser's current position, and advances + * the parser. + * @return {!shaka.util.EbmlElement} The EBML element. + * @throws {RangeError} + * @see http://matroska.org/technical/specs/rfc/index.html + */ +shaka.util.EbmlParser.prototype.parseElement = function() { + var id = this.parseId_(); + + // Parse the element's size. + var vint = this.parseVint_(); + if (shaka.util.EbmlParser.isDynamicSizeValue_(vint)) { + throw new RangeError( + 'EbmlParser: Element cannot contain dynamically sized data.'); + } + var size = shaka.util.EbmlParser.getVintValue_(vint); + + // Note that if the element's size is larger than the buffer then we are + // parsing a "partial element". This may occur if for example we are + // parsing the beginning of some WebM container data, but our buffer does + // not contain the entire WebM container data. + var elementSize = + this.reader_.getPosition() + size <= this.dataView_.byteLength ? + size : + this.dataView_.byteLength - this.reader_.getPosition(); + + var dataView = new DataView( + this.dataView_.buffer, + this.dataView_.byteOffset + this.reader_.getPosition(), elementSize); + + this.reader_.skip(elementSize); + + return new shaka.util.EbmlElement(id, dataView); +}; + + +/** + * Parses an EBML ID from the parser's current position, and advances the + * parser. + * @throws {RangeError} + * @return {number} The EBML ID. + * @private + */ +shaka.util.EbmlParser.prototype.parseId_ = function() { + var vint = this.parseVint_(); + + if (vint.length > 7) { + throw new RangeError('EbmlParser: EBML ID must be at most 7 bytes.'); + } + + var id = 0; + for (var i = 0; i < vint.length; i++) { + // Note that we cannot use << since |value| may exceed 32 bits. + id = (256 * id) + vint[i]; + } + + return id; +}; + + +/** + * Parses a variable sized integer from the parser's current position, and + * advances the parser. + * For example: + * 1 byte wide: 1xxx xxxx + * 2 bytes wide: 01xx xxxx xxxx xxxx + * 3 bytes wide: 001x xxxx xxxx xxxx xxxx xxxx + * @throws {RangeError} + * @return {!Uint8Array} The variable sized integer. + * @private + */ +shaka.util.EbmlParser.prototype.parseVint_ = function() { + var firstByte = this.reader_.readUint8(); + var numBytes; + + // Determine the byte width of the variable sized integer. + for (numBytes = 1; numBytes <= 8; numBytes++) { + var mask = 0x1 << (8 - numBytes); + if (firstByte & mask) { + break; + } + } + + if (numBytes > 8) { + throw new RangeError( + 'EbmlParser: Variable sized integer must fit within 8 bytes.'); + } + + var vint = new Uint8Array(numBytes); + vint[0] = firstByte; + + // Include the remaining bytes. + for (var i = 1; i < numBytes; i++) { + vint[i] = this.reader_.readUint8(); + } + + return vint; +}; + + +/** + * Gets the value of a variable sized integer. + * For example, the x's below are part of the vint's value. + * 7-bit value: 1xxx xxxx + * 14-bit value: 01xx xxxx xxxx xxxx + * 21-bit value: 001x xxxx xxxx xxxx xxxx xxxx + * @param {!Uint8Array} vint The variable sized integer. + * @throws {RangeError} + * @return {number} The value of the variable sized integer. + * @private + */ +shaka.util.EbmlParser.getVintValue_ = function(vint) { + // If |vint| is 8 bytes wide then we must ensure that it does not have more + // than 53 meaningful bits. For example, assume |vint| is 8 bytes wide, + // so it has the following structure, + // 0000 0001 | xxxx xxxx ... + // Thus, the the first 3 bits following the first byte of |vint| must be 0. + if ((vint.length == 8) && (vint[1] & 0xe0)) { + throw new RangeError( + 'EbmlParser: Variable sized integer value must be at most 53 bits.'); + } + + // Mask out the first few bits of |vint|'s first byte to get the most + // significant bits of |vint|'s value. If |vint| is 8 bytes wide then |value| + // will be set to 0. + var mask = 0x1 << (8 - vint.length); + var value = vint[0] & (mask - 1); + + // Add the remaining bytes. + for (var i = 1; i < vint.length; i++) { + // Note that we cannot use << since |value| may exceed 32 bits. + value = (256 * value) + vint[i]; + } + + return value; +}; + + +/** + * Checks if the given variable sized integer represents a dynamic size value. + * @param {!Uint8Array} vint The variable sized integer. + * @return {boolean} true if |vint| represents a dynamic size value, + * false otherwise. + * @private + */ +shaka.util.EbmlParser.isDynamicSizeValue_ = function(vint) { + var EbmlParser = shaka.util.EbmlParser; + var uint8ArrayEqual = shaka.util.StringUtils.uint8ArrayEqual; + + for (var i = 0; i < EbmlParser.DYNAMIC_SIZES.length; i++) { + if (uint8ArrayEqual(vint, EbmlParser.DYNAMIC_SIZES[i])) { + return true; + } + } + + return false; +}; + + + +/** + * Creates an EbmlElement. + * @param {number} id The ID. + * @param {!DataView} dataView The DataView. + * @constructor + */ +shaka.util.EbmlElement = function(id, dataView) { + /** @type {number} */ + this.id = id; + + /** @private {!DataView} */ + this.dataView_ = dataView; +}; + + +/** + * Gets the element's offset from the beginning of the buffer. + * @return {number} + */ +shaka.util.EbmlElement.prototype.getOffset = function() { + return this.dataView_.byteOffset; +}; + + +/** + * Interpret the element's data as a list of sub-elements. + * @throws {RangeError} + * @return {shaka.util.EbmlParser} A parser over the sub-elements. + */ +shaka.util.EbmlElement.prototype.createParser = function() { + return new shaka.util.EbmlParser(this.dataView_); +}; + + +/** + * Interpret the element's data as an unsigned integer. + * @throws {RangeError} + * @return {number} + */ +shaka.util.EbmlElement.prototype.getUint = function() { + if (this.dataView_.byteLength > 8) { + throw new RangeError('EbmlElement: Unsigned integer has too many bytes.'); + } + + // Ensure we have at most 53 meaningful bits. + if ((this.dataView_.byteLength == 8) && (this.dataView_.getUint8(0) & 0xe0)) { + throw new RangeError( + 'EbmlParser: Unsigned integer must be at most 53 bits.'); + } + + var value = 0; + + for (var i = 0; i < this.dataView_.byteLength; i++) { + var chunk = this.dataView_.getUint8(i); + value = (256 * value) + chunk; + } + + return value; +}; + + +/** + * Interpret the element's data as a floating point number (32 bits or 64 bits). + * 80-bit floating point numbers are not supported. + * @throws {RangeError} + * @return {number} + */ +shaka.util.EbmlElement.prototype.getFloat = function() { + if (this.dataView_.byteLength == 4) { + return this.dataView_.getFloat32(0); + } else if (this.dataView_.byteLength == 8) { + return this.dataView_.getFloat64(0); + } else { + throw new RangeError( + 'EbmlElement: floating point numbers must be 4 or 8 bytes.'); + } +}; + diff --git a/lib/util/event_manager.js b/lib/util/event_manager.js new file mode 100644 index 0000000000..ac0c67b494 --- /dev/null +++ b/lib/util/event_manager.js @@ -0,0 +1,136 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview EventManager class. + */ + +goog.provide('shaka.util.EventManager'); + +goog.require('shaka.asserts'); +goog.require('shaka.util.MultiMap'); + + + +/** + * Creates a new EventManager. An EventManager maintains a collection of "event + * bindings" between event targets and event listeners. + * @constructor + */ +shaka.util.EventManager = function() { + /** + * Maps an event type to an array of event bindings. + * @private {shaka.util.MultiMap.} + */ + this.bindingMap_ = new shaka.util.MultiMap(); +}; + + +/** + * @typedef {function(!Event)} + */ +shaka.util.EventManager.ListenerType; + + +/** + * Destroys the shaka.util.EventManager. All event listeners are detached. + */ +shaka.util.EventManager.prototype.destroy = function() { + this.removeAll(); + this.bindingMap_ = null; +}; + + +/** + * Attaches an event listener to an event target. + * @param {!EventTarget} target The event target. + * @param {string} type The event type. + * @param {shaka.util.EventManager.ListenerType} listener The event listener. + */ +shaka.util.EventManager.prototype.listen = function(target, type, listener) { + var binding = new shaka.util.EventManager.Binding_(target, type, listener); + this.bindingMap_.push(type, binding); +}; + + +/** + * Detaches an event listener from an event target. + * @param {!EventTarget} target The event target. + * @param {string} type The event type. + */ +shaka.util.EventManager.prototype.unlisten = function(target, type) { + var list = this.bindingMap_.get(type) || []; + + for (var i = 0; i < list.length; ++i) { + var binding = list[i]; + + if (binding.target == target) { + binding.unlisten(); + this.bindingMap_.remove(type, binding); + } + } +}; + + +/** + * Detaches all event listeners from all targets. + */ +shaka.util.EventManager.prototype.removeAll = function() { + var list = this.bindingMap_.getAll(); + + for (var i = 0; i < list.length; ++i) { + list[i].unlisten(); + } + + this.bindingMap_.clear(); +}; + + + +/** + * Creates a new Binding_ and attaches the event listener to the event target. + * @param {!EventTarget} target The event target. + * @param {string} type The event type. + * @param {shaka.util.EventManager.ListenerType} listener The event listener. + * @constructor + * @private + */ +shaka.util.EventManager.Binding_ = function(target, type, listener) { + /** @type {EventTarget} */ + this.target = target; + + /** @type {string} */ + this.type = type; + + /** @type {?shaka.util.EventManager.ListenerType} */ + this.listener = listener; + + this.target.addEventListener(type, listener, false); +}; + + +/** + * Detaches the event listener from the event target. This does nothing if the + * event listener is already detached. + */ +shaka.util.EventManager.Binding_.prototype.unlisten = function() { + if (!this.target) + return; + + this.target.removeEventListener(this.type, this.listener, false); + + this.target = null; + this.listener = null; +}; + diff --git a/lib/util/ewma.js b/lib/util/ewma.js new file mode 100644 index 0000000000..2f8b2ba0e3 --- /dev/null +++ b/lib/util/ewma.js @@ -0,0 +1,78 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Computes an exponentially-weighted moving average. + */ + +goog.provide('shaka.util.EWMA'); + +goog.require('shaka.asserts'); + + + +/** + * Computes an exponentionally-weighted moving average. + * + * @param {number} halfLife About half of the estimated value will be from the + * last |halfLife| samples by weight. + * @struct + * @constructor + */ +shaka.util.EWMA = function(halfLife) { + shaka.asserts.assert(halfLife > 0); + + /** + * Larger values of alpha expire historical data more slowly. + * @private {number} + */ + this.alpha_ = Math.exp(Math.log(0.5) / halfLife); + + /** @private {number} */ + this.estimate_ = 0; + + /** @private {number} */ + this.totalWeight_ = 0; +}; + + +/** + * Takes a sample. + * + * @param {number} weight + * @param {number} value + */ +shaka.util.EWMA.prototype.sample = function(weight, value) { + var adjAlpha = Math.pow(this.alpha_, weight); + this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_; + this.totalWeight_ += weight; +}; + + +/** + * @return {number} + */ +shaka.util.EWMA.prototype.getTotalWeight = function() { + return this.totalWeight_; +}; + + +/** + * @return {number} + */ +shaka.util.EWMA.prototype.getEstimate = function() { + var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_); + return this.estimate_ / zeroFactor; +}; + diff --git a/lib/util/ewma_bandwidth_estimator.js b/lib/util/ewma_bandwidth_estimator.js new file mode 100644 index 0000000000..0305c897eb --- /dev/null +++ b/lib/util/ewma_bandwidth_estimator.js @@ -0,0 +1,116 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Tracks bandwidth samples and estimates available bandwidth. + * Based on the minimum of two exponentially-weighted moving averages with + * different half-lives. + */ + +goog.provide('shaka.util.EWMABandwidthEstimator'); + +goog.require('shaka.util.EWMA'); +goog.require('shaka.util.FakeEvent'); +goog.require('shaka.util.FakeEventTarget'); +goog.require('shaka.util.IBandwidthEstimator'); + + + +/** + * Tracks bandwidth samples and estimates available bandwidth. + * + * @struct + * @constructor + * @extends {shaka.util.FakeEventTarget} + * @implements {shaka.util.IBandwidthEstimator} + */ +shaka.util.EWMABandwidthEstimator = function() { + shaka.util.FakeEventTarget.call(this, null); + + /** + * A fast-moving average. + * Half of the estimate is based on the last 3 seconds of sample history. + * @private {!shaka.util.EWMA} + */ + this.fast_ = new shaka.util.EWMA(3); + + /** + * A slow-moving average. + * Half of the estimate is based on the last 10 seconds of sample history. + * @private {!shaka.util.EWMA} + */ + this.slow_ = new shaka.util.EWMA(10); + + /** + * Prevents ultra-fast internal connections from causing crazy results. + * @private {number} + * @const + */ + this.minDelayMs_ = 50; + + /** + * Initial estimate used when there is not enough data. + * @private {number} + * @const + */ + this.defaultEstimate_ = 5e5; // 500kbps + + /** + * Minimum weight required to trust the estimate. + * @private {number} + * @const + */ + this.minWeight_ = 0.5; + + /** + * Minimum number of bytes, under which samples are discarded. + * @private {number} + * @const + */ + this.minBytes_ = 65536; +}; +goog.inherits(shaka.util.EWMABandwidthEstimator, shaka.util.FakeEventTarget); + + +/** @override */ +shaka.util.EWMABandwidthEstimator.prototype.sample = function(delayMs, bytes) { + if (bytes < this.minBytes_) { + return; + } + + delayMs = Math.max(delayMs, this.minDelayMs_); + + var bandwidth = 8000 * bytes / delayMs; + var weight = delayMs / 1000; + + this.fast_.sample(weight, bandwidth); + this.slow_.sample(weight, bandwidth); + + this.dispatchEvent(shaka.util.FakeEvent.create({ + 'type': 'bandwidth' + })); +}; + + +/** @override */ +shaka.util.EWMABandwidthEstimator.prototype.getBandwidth = function() { + if (this.fast_.getTotalWeight() < this.minWeight_) { + return this.defaultEstimate_; + } + + // Take the minimum of these two estimates. This should have the effect of + // adapting down quickly, but up more slowly. + return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate()); +}; + diff --git a/lib/util/fake_event.js b/lib/util/fake_event.js new file mode 100644 index 0000000000..b3e5ac7f39 --- /dev/null +++ b/lib/util/fake_event.js @@ -0,0 +1,59 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A utility to simplify the creation of fake events. + */ + +goog.provide('shaka.util.FakeEvent'); + + +/** + * @namespace shaka.util.FakeEvent + * @summary A utility to simplify the creation of fake events. + */ + + +/** + * Return an Event object based on the dictionary. + * The event should contain all of the same properties from the dict. + * @param {!Object} dict + * @return {!Event} + */ +shaka.util.FakeEvent.create = function(dict) { + var event = new CustomEvent(dict.type, { + detail: dict.detail, + bubbles: !!dict.bubbles + }); + // NOTE: This trick will not work in strict mode. + for (var key in dict) { + event[key] = dict[key]; + } + return event; +}; + + +/** + * Return an 'error' Event object based on an Error object. + * @param {!Error} error + * @return {!Event} + */ +shaka.util.FakeEvent.createErrorEvent = function(error) { + var event = new CustomEvent('error', { + detail: error, + bubbles: true + }); + return event; +}; + diff --git a/lib/util/fake_event_target.js b/lib/util/fake_event_target.js new file mode 100644 index 0000000000..6ccd07799b --- /dev/null +++ b/lib/util/fake_event_target.js @@ -0,0 +1,152 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A utility base class which is a non-DOM work-alike for + * EventTarget. This simplifies the dispatch of events from custom classes. + */ + +goog.provide('shaka.util.FakeEventTarget'); + +goog.require('shaka.asserts'); +goog.require('shaka.util.MultiMap'); + + + +/** + * A work-alike for EventTarget. Only DOM elements may be true EventTargets, + * but this can be used as a base class to provide event dispatch to non-DOM + * classes. + * + * @param {shaka.util.FakeEventTarget} parent The parent for the purposes of + * event bubbling. Note that events on a FakeEventTarget can only bubble + * to other FakeEventTargets. + * @struct + * @constructor + * @implements {EventTarget} + */ +shaka.util.FakeEventTarget = function(parent) { + /** + * @private {!shaka.util.MultiMap.} + */ + this.listeners_ = new shaka.util.MultiMap(); + + /** @protected {shaka.util.FakeEventTarget} */ + this.parent = parent; +}; + + +/** + * These are the listener types defined in the closure extern for EventTarget. + * @typedef {EventListener|function(!Event):(boolean|undefined)} + */ +shaka.util.FakeEventTarget.ListenerType; + + +/** + * Add an event listener to this object. + * + * @param {string} type The event type to listen for. + * @param {shaka.util.FakeEventTarget.ListenerType} listener The callback or + * listener object to invoke. + * @param {boolean} capturing True to listen during the capturing phase, false + * to listen during the bubbling phase. Note that FakeEventTarget does not + * support the capturing phase from the standard event model. + * @override + */ +shaka.util.FakeEventTarget.prototype.addEventListener = + function(type, listener, capturing) { + // We don't support the capturing phase. + shaka.asserts.assert(!capturing); + if (!capturing) { + this.listeners_.push(type, listener); + } +}; + + +/** + * Remove an event listener from this object. + * + * @param {string} type The event type for which you wish to remove a listener. + * @param {shaka.util.FakeEventTarget.ListenerType} listener The callback or + * listener object to remove. + * @param {boolean} capturing True to remove a listener for the capturing phase, + * false to remove a listener for the bubbling phase. Note that + * FakeEventTarget does not support the capturing phase from the standard + * event model. + * @override + */ +shaka.util.FakeEventTarget.prototype.removeEventListener = + function(type, listener, capturing) { + // We don't support the capturing phase. + shaka.asserts.assert(!capturing); + if (!capturing) { + this.listeners_.remove(type, listener); + } +}; + + +/** + * Dispatch an event from this object. + * + * @param {!Event} event The event to be dispatched from this object. + * @return {boolean} True if the default action was prevented. + * @override + */ +shaka.util.FakeEventTarget.prototype.dispatchEvent = function(event) { + // NOTE: These tricks will not work in strict mode. + + // Because these are read-only properties, you must delete them first. + delete event.currentTarget; + delete event.srcElement; + delete event.target; + + // event.currentTarget will be set by recursiveDispatch_(). + event.srcElement = null; // Must be Element or null, so just use null. + event.target = this; + + return this.recursiveDispatch_(event); +}; + + +/** + * Dispatches an event recursively without changing its original target. + * + * @param {!Event} event + * @return {boolean} True if the default action was prevented. + * @private + */ +shaka.util.FakeEventTarget.prototype.recursiveDispatch_ = function(event) { + event.currentTarget = this; + + var list = this.listeners_.get(event.type) || []; + + for (var i = 0; i < list.length; ++i) { + var listener = list[i]; + if (listener.handleEvent) { + listener.handleEvent(event); + } else { + listener.call(this, event); + } + // NOTE: If needed, stopImmediatePropagation() would be checked here. + } + + // NOTE: If needed, stopPropagation() would be checked here. + if (this.parent && event.bubbles) { + this.parent.recursiveDispatch_(event); + } + + return event.defaultPrevented; +}; + diff --git a/lib/util/i_bandwidth_estimator.js b/lib/util/i_bandwidth_estimator.js new file mode 100644 index 0000000000..d3eb1c017a --- /dev/null +++ b/lib/util/i_bandwidth_estimator.js @@ -0,0 +1,58 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview An interface for tracking bandwidth samples and estimating + * available bandwidth. + */ + +goog.provide('shaka.util.IBandwidthEstimator'); + + +/** + * @event shaka.util.IBandwidthEstimator.BandwidthEvent + * @description Fired when a new bandwidth estimate is available. + * @property {string} type 'bandwidth' + * @property {boolean} bubbles false + */ + + + +/** + * Tracks bandwidth samples and estimates available bandwidth. + * + * @interface + * @extends {EventTarget} + */ +shaka.util.IBandwidthEstimator = function() {}; + + +/** + * Takes a bandwidth sample and dispatches a 'bandwidth' event. + * + * @fires shaka.util.IBandwidthEstimator.BandwidthEvent + * + * @param {number} delayMs The time it took to collect the sample, in ms. + * @param {number} bytes The number of bytes downloaded. + */ +shaka.util.IBandwidthEstimator.prototype.sample = function(delayMs, bytes) {}; + + +/** + * Get estimated bandwidth in bits per second. + * + * @return {number} + */ +shaka.util.IBandwidthEstimator.prototype.getBandwidth = function() {}; + diff --git a/lib/util/language_utils.js b/lib/util/language_utils.js new file mode 100644 index 0000000000..9a495d9a7b --- /dev/null +++ b/lib/util/language_utils.js @@ -0,0 +1,155 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Language utility functions. + */ + +goog.provide('shaka.util.LanguageUtils'); + +goog.require('shaka.asserts'); + + +/** + * @namespace shaka.util.LanguageUtils + * @summary A set of language utility functions. + */ + + +/** + * Compares two language tags as defined by RFC 5646 and ISO 639. The + * comparison takes sublanguages into account via the |fuzz| parameter. + * The caller is expected to normalize the inputs first. + * + * @see shaka.util.LanguageUtils.normalize() + * @see IETF RFC 5646 + * @see ISO 639 + * + * @param {shaka.util.LanguageUtils.MatchType} fuzz What kind of match is + * acceptable. + * @param {string} preference The user's preferred language tag. + * @param {string} candidate An available language tag. + * @return {boolean} + */ +shaka.util.LanguageUtils.match = function(fuzz, preference, candidate) { + // Alias. + var LanguageUtils = shaka.util.LanguageUtils; + + shaka.asserts.assert(preference == LanguageUtils.normalize(preference)); + shaka.asserts.assert(candidate == LanguageUtils.normalize(candidate)); + + if (candidate == preference) { + return true; + } + + if (fuzz >= shaka.util.LanguageUtils.MatchType.BASE_LANGUAGE_OKAY && + candidate == preference.split('-')[0]) { + return true; + } + + if (fuzz >= shaka.util.LanguageUtils.MatchType.OTHER_SUB_LANGUAGE_OKAY && + candidate.split('-')[0] == preference.split('-')[0]) { + return true; + } + + return false; +}; + + +/** + * A match type for fuzzy-matching logic. + * + * @enum {number} + */ +shaka.util.LanguageUtils.MatchType = { + /** Accepts an exact match. */ + EXACT: 0, + /** Accepts a less-specific version of the preferred sublanguage. */ + BASE_LANGUAGE_OKAY: 1, + /** Accepts a different sublanguage of the preferred base language. */ + OTHER_SUB_LANGUAGE_OKAY: 2, + + MIN: 0, MAX: 2 +}; + + +/** + * Normalize the language tag. + * + * RFC 5646 specifies that language tags are case insensitive and that the + * shortest representation of the base language should always be used. + * This will convert the tag to lower-case and map 3-letter codes (ISO 639-2) + * to 2-letter codes (ISO 639-1) whenever possible. + * + * @param {string} lang + * @return {string} + * + * @see IETF RFC 5646 + * @see ISO 639 + */ +shaka.util.LanguageUtils.normalize = function(lang) { + var fields = lang.toLowerCase().split('-'); + var base = fields[0]; + var replacement = shaka.util.LanguageUtils.isoMap_[base]; + if (replacement) { + fields[0] = replacement; + } + return fields.join('-'); +}; + + +/** + * A map from 3-letter language codes (ISO 639-2) to 2-letter language codes + * (ISO 639-1) for all languages which have both in the registry. + * + * @const {!Object.} + * @private + */ +shaka.util.LanguageUtils.isoMap_ = { + 'aar': 'aa', 'abk': 'ab', 'afr': 'af', 'aka': 'ak', 'alb': 'sq', 'amh': 'am', + 'ara': 'ar', 'arg': 'an', 'arm': 'hy', 'asm': 'as', 'ava': 'av', 'ave': 'ae', + 'aym': 'ay', 'aze': 'az', 'bak': 'ba', 'bam': 'bm', 'baq': 'eu', 'bel': 'be', + 'ben': 'bn', 'bih': 'bh', 'bis': 'bi', 'bod': 'bo', 'bos': 'bs', 'bre': 'br', + 'bul': 'bg', 'bur': 'my', 'cat': 'ca', 'ces': 'cs', 'cha': 'ch', 'che': 'ce', + 'chi': 'zh', 'chu': 'cu', 'chv': 'cv', 'cor': 'kw', 'cos': 'co', 'cre': 'cr', + 'cym': 'cy', 'cze': 'cs', 'dan': 'da', 'deu': 'de', 'div': 'dv', 'dut': 'nl', + 'dzo': 'dz', 'ell': 'el', 'eng': 'en', 'epo': 'eo', 'est': 'et', 'eus': 'eu', + 'ewe': 'ee', 'fao': 'fo', 'fas': 'fa', 'fij': 'fj', 'fin': 'fi', 'fra': 'fr', + 'fre': 'fr', 'fry': 'fy', 'ful': 'ff', 'geo': 'ka', 'ger': 'de', 'gla': 'gd', + 'gle': 'ga', 'glg': 'gl', 'glv': 'gv', 'gre': 'el', 'grn': 'gn', 'guj': 'gu', + 'hat': 'ht', 'hau': 'ha', 'heb': 'he', 'her': 'hz', 'hin': 'hi', 'hmo': 'ho', + 'hrv': 'hr', 'hun': 'hu', 'hye': 'hy', 'ibo': 'ig', 'ice': 'is', 'ido': 'io', + 'iii': 'ii', 'iku': 'iu', 'ile': 'ie', 'ina': 'ia', 'ind': 'id', 'ipk': 'ik', + 'isl': 'is', 'ita': 'it', 'jav': 'jv', 'jpn': 'ja', 'kal': 'kl', 'kan': 'kn', + 'kas': 'ks', 'kat': 'ka', 'kau': 'kr', 'kaz': 'kk', 'khm': 'km', 'kik': 'ki', + 'kin': 'rw', 'kir': 'ky', 'kom': 'kv', 'kon': 'kg', 'kor': 'ko', 'kua': 'kj', + 'kur': 'ku', 'lao': 'lo', 'lat': 'la', 'lav': 'lv', 'lim': 'li', 'lin': 'ln', + 'lit': 'lt', 'ltz': 'lb', 'lub': 'lu', 'lug': 'lg', 'mac': 'mk', 'mah': 'mh', + 'mal': 'ml', 'mao': 'mi', 'mar': 'mr', 'may': 'ms', 'mkd': 'mk', 'mlg': 'mg', + 'mlt': 'mt', 'mon': 'mn', 'mri': 'mi', 'msa': 'ms', 'mya': 'my', 'nau': 'na', + 'nav': 'nv', 'nbl': 'nr', 'nde': 'nd', 'ndo': 'ng', 'nep': 'ne', 'nld': 'nl', + 'nno': 'nn', 'nob': 'nb', 'nor': 'no', 'nya': 'ny', 'oci': 'oc', 'oji': 'oj', + 'ori': 'or', 'orm': 'om', 'oss': 'os', 'pan': 'pa', 'per': 'fa', 'pli': 'pi', + 'pol': 'pl', 'por': 'pt', 'pus': 'ps', 'que': 'qu', 'roh': 'rm', 'ron': 'ro', + 'rum': 'ro', 'run': 'rn', 'rus': 'ru', 'sag': 'sg', 'san': 'sa', 'sin': 'si', + 'slk': 'sk', 'slo': 'sk', 'slv': 'sl', 'sme': 'se', 'smo': 'sm', 'sna': 'sn', + 'snd': 'sd', 'som': 'so', 'sot': 'st', 'spa': 'es', 'sqi': 'sq', 'srd': 'sc', + 'srp': 'sr', 'ssw': 'ss', 'sun': 'su', 'swa': 'sw', 'swe': 'sv', 'tah': 'ty', + 'tam': 'ta', 'tat': 'tt', 'tel': 'te', 'tgk': 'tg', 'tgl': 'tl', 'tha': 'th', + 'tib': 'bo', 'tir': 'ti', 'ton': 'to', 'tsn': 'tn', 'tso': 'ts', 'tuk': 'tk', + 'tur': 'tr', 'twi': 'tw', 'uig': 'ug', 'ukr': 'uk', 'urd': 'ur', 'uzb': 'uz', + 'ven': 've', 'vie': 'vi', 'vol': 'vo', 'wel': 'cy', 'wln': 'wa', 'wol': 'wo', + 'xho': 'xh', 'yid': 'yi', 'yor': 'yo', 'zha': 'za', 'zho': 'zh', 'zul': 'zu' +}; + diff --git a/lib/util/license_request.js b/lib/util/license_request.js new file mode 100644 index 0000000000..edb17b5404 --- /dev/null +++ b/lib/util/license_request.js @@ -0,0 +1,62 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a license request. + */ + +goog.provide('shaka.util.LicenseRequest'); + +goog.require('shaka.util.AjaxRequest'); + + + +/** + * Creates a LicenseRequest. A LicenseRequest manages retries automatically. + * + * @param {string} serverUrl The URL of the license server. + * @param {!ArrayBuffer} requestBody The body of the license request. + * @param {boolean} withCredentials True if cookies should be sent in + * cross-domain license requests. If true, the browser will reject license + * responses which use the wildcard header "Access-Control-Allow-Origin: *". + * See http://goo.gl/pzY9F7 for more information. + * + * @struct + * @constructor + * @extends {shaka.util.AjaxRequest} + */ +shaka.util.LicenseRequest = function(serverUrl, requestBody, withCredentials) { + shaka.util.AjaxRequest.call(this, serverUrl); + this.parameters.body = requestBody; + this.parameters.method = 'POST'; + this.parameters.maxAttempts = 3; + this.parameters.withCredentials = withCredentials; +}; +goog.inherits(shaka.util.LicenseRequest, shaka.util.AjaxRequest); + + +/** + * Sends the license request. + * @return {!Promise.} + */ +shaka.util.LicenseRequest.prototype.send = function() { + return this.sendInternal().then( + /** @param {!XMLHttpRequest} xhr */ + function(xhr) { + var response = /** @type {ArrayBuffer} */ (xhr.response); + return Promise.resolve(new Uint8Array(response)); + } + ); +}; + diff --git a/lib/util/multi_map.js b/lib/util/multi_map.js new file mode 100644 index 0000000000..e11005bc14 --- /dev/null +++ b/lib/util/multi_map.js @@ -0,0 +1,109 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A simple multimap template. + */ + +goog.provide('shaka.util.MultiMap'); + + + +/** + * @constructor + * @template T + */ +shaka.util.MultiMap = function() { + /** @private {!Object.>} */ + this.map_ = {}; +}; + + +/** + * Add a key, value pair to the map. + * @param {string} key + * @param {T} value + */ +shaka.util.MultiMap.prototype.push = function(key, value) { + if (this.map_.hasOwnProperty(key)) { + this.map_[key].push(value); + } else { + this.map_[key] = [value]; + } +}; + + +/** + * Get a list of values by key. + * @param {string} key + * @return {Array.} or null if no such key exists. + */ +shaka.util.MultiMap.prototype.get = function(key) { + var list = this.map_[key]; + // slice() clones the list so that it and the map can each be modified + // without affecting the other. + return list ? list.slice() : null; +}; + + +/** + * Get a list of all values. + * @return {!Array.} + */ +shaka.util.MultiMap.prototype.getAll = function() { + var list = []; + for (var key in this.map_) { + list.push.apply(list, this.map_[key]); + } + return list; +}; + + +/** + * Remove a specific value, if it exists. + * @param {string} key + * @param {T} value + */ +shaka.util.MultiMap.prototype.remove = function(key, value) { + var list = this.map_[key]; + if (!list) return; + for (var i = 0; i < list.length; ++i) { + if (list[i] == value) { + list.splice(i, 1); + --i; + } + } +}; + + +/** + * Get all keys from the multimap. + * @return {!Array.} + */ +shaka.util.MultiMap.prototype.keys = function() { + var result = []; + for (var key in this.map_) { + result.push(key); + } + return result; +}; + + +/** + * Clear all keys and values from the multimap. + */ +shaka.util.MultiMap.prototype.clear = function() { + this.map_ = {}; +}; + diff --git a/lib/util/pssh.js b/lib/util/pssh.js new file mode 100644 index 0000000000..8fd473631e --- /dev/null +++ b/lib/util/pssh.js @@ -0,0 +1,73 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a PSSH parser. + */ + +goog.provide('shaka.util.Pssh'); + +goog.require('shaka.util.DataViewReader'); +goog.require('shaka.util.StringUtils'); + + + +/** + * Parse a PSSH box and extract the system IDs. + * + * @param {!Uint8Array} psshBox + * @constructor + * @throws {RangeError} in the unlikely event that a PSSH box contains a size + * field over 53 bits. + */ +shaka.util.Pssh = function(psshBox) { + /** + * @type {!Array.} + * @expose + */ + this.systemIds = []; + + // Parse the PSSH box. + var reader = new shaka.util.DataViewReader( + new DataView(psshBox.buffer), + shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + + // There could be multiple boxes concatenated together. + while (reader.hasMoreData()) { + var headerSize = 8; + var size = reader.readUint32(); + var type = reader.readUint32(); + if (size == 1) { + size = reader.readUint64(); + headerSize += 8; + } + + if (type != shaka.util.Pssh.BOX_TYPE) { + reader.skip(size - headerSize); + continue; + } + + var versionAndFlags = reader.readUint32(); + var systemId = shaka.util.StringUtils.fromUint8Array(reader.readBytes(16)); + var dataSize = reader.readUint32(); + reader.skip(dataSize); // Ignore the data section. + + this.systemIds.push(systemId); + } +}; + + +/** @const {number} */ +shaka.util.Pssh.BOX_TYPE = 0x70737368; + diff --git a/lib/util/public_promise.js b/lib/util/public_promise.js new file mode 100644 index 0000000000..bed13cf30c --- /dev/null +++ b/lib/util/public_promise.js @@ -0,0 +1,59 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A utility to create Promises with convenient public resolve + * and reject methods. + */ + +goog.provide('shaka.util.PublicPromise'); + + + +/** + * @constructor + * @extends {Promise.} + * @template T + */ +shaka.util.PublicPromise = function() { + var resolvePromise; + var rejectPromise; + + // Promise.call causes an error. It seems that inheriting from a native + // Promise is not permitted by JavaScript interpreters. + + // The work-around is to construct a Promise object, modify it to look like + // the compiler's picture of PublicPromise, then return it. The caller of + // new PublicPromise will receive |promise| instead of |this|, and the + // compiler will be aware of the additional properties |resolve| and + // |reject|. + + var promise = new Promise(function(resolve, reject) { + resolvePromise = resolve; + rejectPromise = reject; + }); + + promise.resolve = resolvePromise; + promise.reject = rejectPromise; + return promise; +}; + + +/** @type {function(T=)} */ +shaka.util.PublicPromise.prototype.resolve; + + +/** @type {function(*)} */ +shaka.util.PublicPromise.prototype.reject; + diff --git a/lib/util/range_request.js b/lib/util/range_request.js new file mode 100644 index 0000000000..417f46ca4f --- /dev/null +++ b/lib/util/range_request.js @@ -0,0 +1,63 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a range request. + */ + +goog.provide('shaka.util.RangeRequest'); + +goog.require('shaka.asserts'); +goog.require('shaka.util.AjaxRequest'); + + + +/** + * Creates a RangeRequest. + * + * @param {string} url The URL. + * @param {number} begin The start byte. + * @param {?number} end The end byte, null to request to the end. + * + * @struct + * @constructor + * @extends {shaka.util.AjaxRequest} + */ +shaka.util.RangeRequest = function(url, begin, end) { + shaka.util.AjaxRequest.call(this, url); + + shaka.asserts.assert(begin !== undefined && begin !== null); + // Avoid adding the Range header if the range is actually the whole file. + if (begin || end) { + var rangeString = begin + '-' + (end != null ? end : ''); + this.parameters.requestHeaders['Range'] = 'bytes=' + rangeString; + } +}; +goog.inherits(shaka.util.RangeRequest, shaka.util.AjaxRequest); + + +/** + * Sends the range request. + * @return {!Promise.} + */ +shaka.util.RangeRequest.prototype.send = function() { + return this.sendInternal().then( + /** @param {!XMLHttpRequest} xhr */ + function(xhr) { + var data = /** @type {!ArrayBuffer} */ (xhr.response); + return Promise.resolve(data); + } + ); +}; + diff --git a/lib/util/string_utils.js b/lib/util/string_utils.js new file mode 100644 index 0000000000..9dabaae5ca --- /dev/null +++ b/lib/util/string_utils.js @@ -0,0 +1,133 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview String utility functions. + */ + +goog.provide('shaka.util.StringUtils'); + + +/** + * @namespace shaka.util.StringUtils + * @export + * @summary A set of string utility functions. + */ + + +/** + * Convert a string to a Uint8Array. + * + * @param {string} str The input string. + * @return {!Uint8Array} The output array. + * @export + */ +shaka.util.StringUtils.toUint8Array = function(str) { + var result = new Uint8Array(str.length); + for (var i = 0; i < str.length; i++) { + result[i] = str.charCodeAt(i); + } + return result; +}; + + +/** + * Convert a Uint8Array to a string. + * + * @param {Uint8Array} array The input array. + * @return {string} The output string. + * @export + */ +shaka.util.StringUtils.fromUint8Array = function(array) { + return String.fromCharCode.apply(null, array); +}; + + +/** + * Convert a raw string to a base-64 string. + * + * @param {string} str The raw string. + * @param {boolean=} opt_padding If true, pad the output with equals signs. + * Defaults to true. + * @return {string} The base-64 string. + * @export + */ +shaka.util.StringUtils.toBase64 = function(str, opt_padding) { + var base64 = window.btoa(str); + var padding = (opt_padding == undefined) ? true : opt_padding; + return padding ? base64 : base64.replace(/=*$/, ''); +}; + + +/** + * Convert a base-64 string to a raw string. + * + * @param {string} str The base-64 string. + * @return {string} The raw string. + * @export + */ +shaka.util.StringUtils.fromBase64 = function(str) { + return window.atob(str); +}; + + +/** + * Convert a hex string to a raw string. + * + * @param {string} str The hex string. + * @return {string} The output string. + * @export + */ +shaka.util.StringUtils.fromHex = function(str) { + var ints = []; + for (var i = 0; i < str.length; i += 2) { + ints.push(window.parseInt(str.substr(i, 2), 16)); + } + return String.fromCharCode.apply(null, ints); +}; + + +/** + * Compare two Uint8Arrays for equality. + * + * @param {Uint8Array} array1 + * @param {Uint8Array} array2 + * @return {boolean} + * @export + */ +shaka.util.StringUtils.uint8ArrayEqual = function(array1, array2) { + if (!array1 && !array2) return true; + if (!array1 || !array2) return false; + if (array1.length != array2.length) return false; + for (var i = 0; i < array1.length; ++i) { + if (array1[i] != array2[i]) return false; + } + return true; +}; + + +/** + * Convert a Uint8Array to a string which can be used as a key in a dictionary. + * @param {!Uint8Array} array + * @return {string} + * @export + */ +shaka.util.StringUtils.uint8ArrayKey = function(array) { + var tmp = []; + for (var i = 0; i < array.length; ++i) { + tmp.push(array[i]); + } + return tmp.join(','); +}; + diff --git a/lib/util/typed_bind.js b/lib/util/typed_bind.js new file mode 100644 index 0000000000..962ed7d65b --- /dev/null +++ b/lib/util/typed_bind.js @@ -0,0 +1,39 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview A bind wrapper which infers and preserves type information. + */ + +goog.provide('shaka.util.TypedBind'); + + +/** + * @namespace + * + * @summary A bind wrapper which infers and preserves type information in + * the closure compiler. Function.prototype.bind, in contrast, destroys the + * compiler's type information. As a trade-off, this interface limits the + * number of arguments to the bound function and does not permit partial + * binding. + * + * @param {CLASS} context + * @param {function(this:CLASS, A)} fn + * @return {function(A)} + * @template CLASS, A + */ +shaka.util.TypedBind = function(context, fn) { + return fn.bind(context); +}; + diff --git a/load.js b/load.js new file mode 100644 index 0000000000..36e4bbd9f2 --- /dev/null +++ b/load.js @@ -0,0 +1,57 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Loads the library. Chooses compiled or debug version of the + * library based on the presence or absence of the URL parameter "compiled". + * This dynamic loading process is not necessary in a production environment, + * but greatly simplifies the process of switching between compiled and + * uncompiled mode during development. + * + * This is used in the provided test app, but can also be used to load the + * uncompiled version of the library into your own application environment. + */ + +(function() { // anonymous namespace + // The sources may be in a different folder from the test app. + // Compute the base URL for all library sources. + var loaderSrc = document.currentScript.src; + var baseUrl = loaderSrc.split('/').slice(0, -1).join('/') + '/'; + + function loadScript(src) { + // This does not seem like it would be the best way to do this, but the + // timing is different than creating a new script element and appending + // it to the head element. This way, all script loading happens before + // DOMContentLoaded. This is also compatible with goog.require's loading + // mechanism, whereas appending an element to head isn't. + document.write(''); + } + + var params = location.search.split('?').pop(); + params = params ? params.split(';') : []; + + var compiledMode = (params.indexOf('compiled') >= 0); + + if (compiledMode) { + // This contains the entire library, compiled in debug mode. + loadScript('shaka-player.compiled.debug.js'); + } else { + // In non-compiled mode, loading the closure library is enough to bootstrap + // the system. goog.require will load additional dependencies at runtime. + loadScript('third_party/closure/goog/base.js'); + // This file contains goog.require calls for all exported classes. + loadScript('shaka-player.uncompiled.js'); + } +})(); // anonymous namespace + diff --git a/shaka-player.uncompiled.js b/shaka-player.uncompiled.js new file mode 100644 index 0000000000..82ae2a3f4a --- /dev/null +++ b/shaka-player.uncompiled.js @@ -0,0 +1,26 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Requires all exported classes from the library. + */ + +goog.require('shaka.player.DashVideoSource'); +goog.require('shaka.player.DrmSchemeInfo'); +goog.require('shaka.player.HttpVideoSource'); +goog.require('shaka.player.Player'); +goog.require('shaka.polyfill.Fullscreen'); +goog.require('shaka.polyfill.MediaKeys'); +goog.require('shaka.polyfill.VideoPlaybackQuality'); +goog.require('shaka.util.StringUtils'); diff --git a/spec/dash_video_source_spec.js b/spec/dash_video_source_spec.js new file mode 100644 index 0000000000..c7d5fc7747 --- /dev/null +++ b/spec/dash_video_source_spec.js @@ -0,0 +1,160 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview dash_video_source.js unit tests. + */ + +goog.require('shaka.dash.mpd'); +goog.require('shaka.player.AudioTrack'); +goog.require('shaka.player.DashVideoSource'); +goog.require('shaka.player.VideoTrack'); +goog.require('shaka.util.MultiMap'); + +describe('DashVideoSource', function() { + // TODO(story 2544737): Add additional unit tests. + it('is able to get audio and video tracks.', function() { + // |videoRepresentation1| and |videoRepresentation2| are part of + // |videoSet1| + var videoRepresentation1 = new shaka.dash.mpd.Representation(); + videoRepresentation1.mimeType = 'video/mp4'; + videoRepresentation1.bandwidth = 1000; + videoRepresentation1.width = 640; + videoRepresentation1.height = 380; + + var videoRepresentation2 = new shaka.dash.mpd.Representation(); + videoRepresentation2.mimeType = 'video/mp4'; + videoRepresentation2.bandwidth = 2000; + videoRepresentation2.width = 720; + videoRepresentation2.height = 480; + + // |audioRepresentation1| and |audioRepresentation2| are part of + // |audioSet1| + var audioRepresentation1 = new shaka.dash.mpd.Representation(); + audioRepresentation1.mimeType = 'audio/mp4'; + audioRepresentation1.bandwidth = 500; + + var audioRepresentation2 = new shaka.dash.mpd.Representation(); + audioRepresentation2.mimeType = 'audio/mp4'; + audioRepresentation2.bandwidth = 900; + + // |audioRepresentation3| and |audioRepresentation4| are part of + // |audioSet2| + var audioRepresentation3 = new shaka.dash.mpd.Representation(); + audioRepresentation3.mimeType = 'audio/mp4'; + audioRepresentation3.bandwidth = 500; + + var audioRepresentation4 = new shaka.dash.mpd.Representation(); + audioRepresentation4.mimeType = 'audio/mp4'; + audioRepresentation4.bandwidth = 800; + + var videoSet1 = new shaka.dash.mpd.AdaptationSet(); + videoSet1.contentType = 'video'; + videoSet1.representations = [videoRepresentation1, videoRepresentation2]; + + var audioSet1 = new shaka.dash.mpd.AdaptationSet(); + audioSet1.lang = 'en'; + audioSet1.contentType = 'audio'; + audioSet1.representations = [audioRepresentation1, audioRepresentation2]; + + var audioSet2 = new shaka.dash.mpd.AdaptationSet(); + audioSet2.lang = 'fr'; + audioSet2.contentType = 'audio'; + audioSet2.representations = [audioRepresentation3, audioRepresentation4]; + + var adaptationSetMap = new shaka.util.MultiMap(); + adaptationSetMap.push('video', videoSet1); + adaptationSetMap.push('audio', audioSet1); + adaptationSetMap.push('audio', audioSet2); + + var videoSource = createFakeDashVideoSource(adaptationSetMap); + + // Aliases. + var AudioTrack = shaka.player.AudioTrack; + var VideoTrack = shaka.player.VideoTrack; + + // Check the audio tracks. + var expectedAudioTracks = [ + new AudioTrack(3, 500, 'en'), + new AudioTrack(4, 900, 'en'), + new AudioTrack(5, 500, 'fr'), + new AudioTrack(6, 800, 'fr')]; + + var audioTracks = videoSource.getAudioTracks(); + expect(audioTracks).not.toBeNull(); + expect(audioTracks.length).toBe(expectedAudioTracks.length); + + expectedAudioTracks.sort(AudioTrack.compare); + audioTracks.sort(AudioTrack.compare); + + for (var i = 0; i < expectedAudioTracks.length; ++i) { + expect(audioTracks[i].id).toBe(expectedAudioTracks[i].id); + expect(AudioTrack.compare(audioTracks[i], + expectedAudioTracks[i])).toBe(0); + } + + // Check the video tracks. + var expectedVideoTracks = [ + new VideoTrack(1, 1000, 640, 380), + new VideoTrack(2, 2000, 720, 480)]; + + var videoTracks = videoSource.getVideoTracks(); + expect(videoTracks).not.toBeNull(); + expect(videoTracks.length).toBe(expectedVideoTracks.length); + + expectedVideoTracks.sort(VideoTrack.compare); + videoTracks.sort(VideoTrack.compare); + + for (var i = 0; i < expectedVideoTracks.length; ++i) { + expect(videoTracks[i].id).toBe(expectedVideoTracks[i].id); + expect(VideoTrack.compare(videoTracks[i], + expectedVideoTracks[i])).toBe(0); + } + }); + + // Creates a fake DashVideoSource object. This is a hack to test + // getAudioTracks() and getVideoTracks() without actually creating a real + // DashVideoSource, which would require setting up a bunch of mock objects. + // TODO(story 2544737): Use a real DashVideoSource object. + createFakeDashVideoSource = function(adaptationSetMap) { + var fakeMpdProcessor = { + getNumPeriods : function() { + return 1; + }, + getAdaptationSets : function(periodIdx, opt_type) { + console.assert(periodIdx == 0); + return opt_type ? + adaptationSetMap.get(opt_type) : + adaptationSetMap.getAll(); + } + }; + + fakeDashVideoSource = {}; + + fakeDashVideoSource.streamsByType_ = {}; + + fakeDashVideoSource.processor_ = fakeMpdProcessor; + + fakeDashVideoSource.getAudioTracks = + shaka.player.DashVideoSource.prototype.getAudioTracks.bind( + fakeDashVideoSource); + + fakeDashVideoSource.getVideoTracks = + shaka.player.DashVideoSource.prototype.getVideoTracks.bind( + fakeDashVideoSource); + + return fakeDashVideoSource; + }; +}); + diff --git a/spec/data_view_reader_spec.js b/spec/data_view_reader_spec.js new file mode 100644 index 0000000000..6aa3dcd3cf --- /dev/null +++ b/spec/data_view_reader_spec.js @@ -0,0 +1,253 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview data_view_reader.js unit tests. + */ + +goog.require('shaka.util.DataViewReader'); + +// TODO(story 2544737): Add tests that use a data view that views only a slice +// of an array. +describe('DataViewReader', function() { + // |data| as interpreted as a 64 bit integer must not be larger than 2^53-1. + // decimal digits. + var data = new Uint8Array([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07]); + // |data2| is small enough in little-endian to be read as a 64-bit number, + // and has the sign bit set on the first 6 bytes to prove that we don't + // return negative values. + var data2 = new Uint8Array([0xde, 0xad, 0xbe, 0xef, 0xff, 0xff, 0x01, 0x00]); + + var bigEndianReader; + var littleEndianReader; + + beforeEach(function() { + bigEndianReader = new shaka.util.DataViewReader( + new DataView(data.buffer), + shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + bigEndianReader2 = new shaka.util.DataViewReader( + new DataView(data2.buffer), + shaka.util.DataViewReader.Endianness.BIG_ENDIAN); + littleEndianReader = new shaka.util.DataViewReader( + new DataView(data.buffer), + shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN); + littleEndianReader2 = new shaka.util.DataViewReader( + new DataView(data2.buffer), + shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN); + }); + + it('is able to read a uint8 in big endian.', function() { + var value1 = bigEndianReader.readUint8(); + expect(value1).toBe(0x00); + + var value2 = bigEndianReader.readUint8(); + expect(value2).toBe(0x01); + + var value3 = bigEndianReader2.readUint8(); + expect(value3).toBe(0xde); + + var value4 = bigEndianReader2.readUint8(); + expect(value4).toBe(0xad); + }); + + it('is able to read a uint16 in big endian.', function() { + var value1 = bigEndianReader.readUint16(); + expect(value1).toBe(0x0001); + + var value2 = bigEndianReader.readUint16(); + expect(value2).toBe(0x0203); + + var value3 = bigEndianReader2.readUint16(); + expect(value3).toBe(0xdead); + + var value4 = bigEndianReader2.readUint16(); + expect(value4).toBe(0xbeef); + }); + + it('is able to read a uint32 in big endian.', function() { + var value1 = bigEndianReader.readUint32(); + expect(value1).toBe(0x00010203); + + var value2 = bigEndianReader.readUint32(); + expect(value2).toBe(0x04050607); + + var value3 = bigEndianReader2.readUint32(); + expect(value3).toBe(0xdeadbeef); + + var value4 = bigEndianReader2.readUint32(); + expect(value4).toBe(0xffff0100); + }); + + it('is able to read a uint64 in big endian.', function() { + var value = bigEndianReader.readUint64(); + expect(value).toBe(0x0001020304050607); + }); + + it('is able to read a uint8 in little endian.', function() { + var value1 = littleEndianReader.readUint8(); + expect(value1).toBe(0x00); + + var value2 = littleEndianReader.readUint8(); + expect(value2).toBe(0x01); + + var value3 = littleEndianReader2.readUint8(); + expect(value3).toBe(0xde); + + var value4 = littleEndianReader2.readUint8(); + expect(value4).toBe(0xad); + }); + + it('is able to read a uint16 in little endian.', function() { + var value1 = littleEndianReader.readUint16(); + expect(value1).toBe(0x0100); + + var value2 = littleEndianReader.readUint16(); + expect(value2).toBe(0x0302); + + var value3 = littleEndianReader2.readUint16(); + expect(value3).toBe(0xadde); + + var value4 = littleEndianReader2.readUint16(); + expect(value4).toBe(0xefbe); + }); + + it('is able to read a uint32 in little endian.', function() { + var value1 = littleEndianReader.readUint32(); + expect(value1).toBe(0x03020100); + + var value2 = littleEndianReader.readUint32(); + expect(value2).toBe(0x07060504); + + var value3 = littleEndianReader2.readUint32(); + expect(value3).toBe(0xefbeadde); + + var value4 = littleEndianReader2.readUint32(); + expect(value4).toBe(0x0001ffff); + }); + + it('is able to read a uint64 in little endian.', function() { + var value = littleEndianReader2.readUint64(); + expect(value).toBe(0x0001ffffefbeadde); + }); + + it('is able to skip bytes.', function() { + bigEndianReader.skip(1); + var value = bigEndianReader.readUint8(); + expect(value).toBe(0x01); + }); + + it('is able to determine the end of the data view.', function() { + bigEndianReader.skip(7); + expect(bigEndianReader.hasMoreData()).toBe(true); + + bigEndianReader.skip(1); + expect(bigEndianReader.hasMoreData()).toBe(false); + }); + + it('is able to get the byte position.', function() { + expect(bigEndianReader.getPosition()).toBe(0); + + bigEndianReader.skip(1); + expect(bigEndianReader.getPosition()).toBe(1); + + bigEndianReader.skip(7); + expect(bigEndianReader.getPosition()).toBe(8); + }); + + it('is able to detect an error when reading a uint8.', function() { + bigEndianReader.skip(7); + bigEndianReader.readUint8(); + + var exception = null; + + try { + bigEndianReader.readUint8(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to detect an error when reading a uint16.', function() { + bigEndianReader.skip(7); + + var exception = null; + + try { + bigEndianReader.readUint16(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to detect an error when reading a uint32.', function() { + bigEndianReader.skip(5); + + var exception = null; + + try { + bigEndianReader.readUint32(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to detect an error when skipping bytes.', function() { + bigEndianReader.skip(8); + + var exception = null; + + try { + bigEndianReader.skip(1); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to detect an error when reading a large uint64.', function() { + var exception = null; + + try { + littleEndianReader.readUint64(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBe(null); + expect(exception instanceof RangeError).toBe(true); + + exception = null; + + try { + bigEndianReader2.readUint64(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBe(null); + expect(exception instanceof RangeError).toBe(true); + }); +}); + diff --git a/spec/ebml_parser_spec.js b/spec/ebml_parser_spec.js new file mode 100644 index 0000000000..3e78fae6fd --- /dev/null +++ b/spec/ebml_parser_spec.js @@ -0,0 +1,347 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview ebml_parser.js unit tests. + */ + +goog.require('shaka.util.EbmlParser'); + +describe('EbmlParser', function() { + beforeEach(function() { + jasmine.addMatchers(customMatchers); + }); + + it('is able to parse one element.', function() { + // Set ID to 0x1. + // Set size to 4 bytes. + // Set the data to [0x01, 0x02, 0x03, 0x04]. + var data = new Uint8Array([0x81, 0x84, 0x01, 0x02, 0x03, 0x04]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + + var elem = parser.parseElement(); + expect(elem.id).toBe(0x81); + expect(elem.dataView_.byteLength).toBe(4); + expect(elem.dataView_.getUint8(0)).toBe(0x01); + expect(elem.dataView_.getUint8(1)).toBe(0x02); + expect(elem.dataView_.getUint8(2)).toBe(0x03); + expect(elem.dataView_.getUint8(3)).toBe(0x04); + }); + + it('is able to parse two elements at the same level.', function() { + // For the first element: + // Set ID to 0x1. + // Set size to 4 bytes. + // Set the data to [0x01, 0x02, 0x03, 0x04]. + // For the second element: + // Set ID to 0x2. + // Set size to 4 bytes. + // Set the data to [0x09, 0x08, 0x07, 0x06]. + var data = new Uint8Array( + [0x81, 0x84, 0x01, 0x02, 0x03, 0x04, 0x82, 0x84, 0x09, 0x08, 0x07, 0x06]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + + var elem1 = parser.parseElement(); + expect(elem1.id).toBe(0x81); + expect(elem1.dataView_.byteLength).toBe(4); + expect(elem1.dataView_.getUint8(0)).toBe(0x01); + expect(elem1.dataView_.getUint8(1)).toBe(0x02); + expect(elem1.dataView_.getUint8(2)).toBe(0x03); + expect(elem1.dataView_.getUint8(3)).toBe(0x04); + + var elem2 = parser.parseElement(); + expect(elem2.id).toBe(0x82); + expect(elem2.dataView_.byteLength).toBe(4); + expect(elem2.dataView_.getUint8(0)).toBe(0x09); + expect(elem2.dataView_.getUint8(1)).toBe(0x08); + expect(elem2.dataView_.getUint8(2)).toBe(0x07); + expect(elem2.dataView_.getUint8(3)).toBe(0x06); + }); + + it('is able to detect a dynamic size value within an element.', function() { + var exception; + + try { + // Set ID to 0x1. + // Set size to a dynamic size value. + var data = new Uint8Array([0x81, 0xff]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + parser.parseElement(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBe(undefined); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to parse a 1 byte vint.', function() { + // 7-bit value: 1|100 0001 + var data = new Uint8Array([0xc1]); + + // Extract the variable sized integer from |data|. Note that since + // |data| contains exactly one variable sized integer, |vint| should be + // identical to |data|. + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + var vint = parser.parseVint_(); + + expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x41); + expect(shaka.util.EbmlParser.getVintValue_(vint)).toBe(0x41); + }); + + it('is able to parse a 2 byte vint.', function() { + // 14-bit: 01|10 0001, 0001 1001 + var data = new Uint8Array([0x61, 0x19]); + + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + var vint = parser.parseVint_(); + + expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x2119); + expect(shaka.util.EbmlParser.getVintValue_(vint)).toBe(0x2119); + }); + + it('is able to parse a 3 byte vint.', function() { + // 21-bit: 001|1 0001, 0010 0001, 0001 0011 + var data = new Uint8Array([0x31, 0x21, 0x13]); + + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + var vint = parser.parseVint_(); + + expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x112113); + expect(shaka.util.EbmlParser.getVintValue_(vint)).toBe(0x112113); + }); + + it('is able to parse a 4 byte vint.', function() { + // 28-bit: 0001 | 1000, 0001 0001, 0001 0001, 0001 0101 + var data = new Uint8Array([0x18, 0x11, 0x11, 0x15]); + + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + var vint = parser.parseVint_(); + + expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x8111115); + expect(shaka.util.EbmlParser.getVintValue_(vint)).toBe(0x8111115); + }); + + it('is able to parse a 5 byte vint.', function() { + // 35-bit: 0000 1|100, 0001 0001, 0001 0001, 0001 0001, 0001 1001 + var data = new Uint8Array([0x0c, 0x11, 0x11, 0x11, 0x19]); + + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + var vint = parser.parseVint_(); + + expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x411111119); + expect(shaka.util.EbmlParser.getVintValue_(vint)).toBe(0x411111119); + }); + + it('is able to parse a 6 byte vint.', function() { + // 42-bit: 0000 01|10, 0001 0010, 0001 0001, 0001 0001, 0001 0001, + // 0001 1000 + var data = new Uint8Array([0x06, 0x12, 0x11, 0x11, 0x11, 0x18]); + + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + var vint = parser.parseVint_(); + + expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x21211111118); + expect(shaka.util.EbmlParser.getVintValue_(vint)).toBe(0x21211111118); + }); + + it('is able to parse a 7 byte vint.', function() { + // 49-bit: 0000 001|1, 0001 0010, 0001 0001, 0001 0001, 0001 0001, + // 0001 0001, 1001 0001 + var data = new Uint8Array([0x03, 0x12, 0x11, 0x11, 0x11, 0x11, 0x91]); + + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + var vint = parser.parseVint_(); + + expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x1121111111191); + expect(shaka.util.EbmlParser.getVintValue_(vint)).toBe(0x1121111111191); + }); + + it('is able to parse a 8 byte vint.', function() { + // 56-bit: 0000 0001 | 0001 0010, 0001 0100, 0001 1000, 0001 0001, + // 0001 0001, 0001 1001, 0011 0001 + var data = new Uint8Array([0x01, 0x12, 0x14, 0x18, 0x11, 0x11, 0x19, 0x31]); + + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + var vint = parser.parseVint_(); + + expect(shaka.util.EbmlParser.getVintValue_(data)).toBe(0x12141811111931); + expect(shaka.util.EbmlParser.getVintValue_(vint)).toBe(0x12141811111931); + }); + + it('is able to detect vints with too many bytes.', function() { + var exception = null; + + try { + // 63-bit: 0000 0000, 1|000 0001, 0001 0001, 0001 0001, 0001 0001, + // 0001 0001, 0001 0001, 0001 0001, + // 0001 0001 + var data = new Uint8Array( + [0x00, 0x81, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + parser.parseVint_(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to detect vint values with too many bits.', function() { + var exception = null; + + try { + // 56-bit: 0000 0001 | 1000 0001, 0001 0001, 0001 0001, 0001 0001, + // 0001 0001, 0001 0001, 0001 0001 + var data = new Uint8Array([0x01, 0x81, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11]); + shaka.util.EbmlParser.getVintValue_(data); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + + exception = null; + + try { + // 56-bit: 0000 0001 | 0100 0001, 0001 0001, 0001 0001, 0001 0001, + // 0001 0001, 0001 0001, 0001 0001 + var data = new Uint8Array([0x01, 0x41, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11]); + shaka.util.EbmlParser.getVintValue_(data); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + + exception = null; + + try { + // 56-bit: 0000 0001 | 0010 0001, 0001 0001, 0001 0001, 0001 0001, + // 0001 0001, 0001 0001, 0001 0001 + var data = new Uint8Array([0x01, 0x21, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11]); + shaka.util.EbmlParser.getVintValue_(data); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to detect the end of input while reading a vint.', function() { + // 14-bit: 01|10 0001, 0001 0001 + var data = new Uint8Array([0x61]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + + var exception = null; + + try { + var data = new Uint8Array( + [0x00, 0xc1, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + parser.parseVint_(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to parse a uint.', function() { + // Set ID to 0x1. + // Set size to 4 bytes. + // Set the data to [0x01, 0x02, 0x03, 0x04]. + var data = new Uint8Array([0x81, 0x84, 0x01, 0x02, 0x03, 0x04]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + + var elem = parser.parseElement(); + expect(elem.id).toBe(0x81); + expect(elem.getUint()).toBe(0x01020304); + }); + + it('is able to detect uints with too many bytes.', function() { + // Set ID to 0x1. + // Set size to 9 bytes. + // Set the data to [0x01, 0x02, 0x03, ..., 0x09]. + var data = new Uint8Array( + [0x81, 0x89, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + + var elem = parser.parseElement(); + expect(elem.id).toBe(0x81); + + var exception = null; + + try { + elem.getUint(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to detect uints with too many bits.', function() { + // Set ID to 0x1. + // Set size to 8 bytes. + // Set the data to [0x2f, 0xff, 0xff, ..., 0xff]. + var data = new Uint8Array( + [0x81, 0x88, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]); + var parser = new shaka.util.EbmlParser(new DataView(data.buffer)); + + var elem = parser.parseElement(); + expect(elem.id).toBe(0x81); + + var exception = null; + + try { + elem.getUint(); + } catch (e) { + exception = e; + } + + expect(exception).not.toBeNull(); + expect(exception instanceof RangeError).toBe(true); + }); + + it('is able to determine a dynamic size value', function() { + var dynamicSizes = [ + new Uint8Array([0xff]), + new Uint8Array([0x7f, 0xff]), + new Uint8Array([0x3f, 0xff, 0xff]), + new Uint8Array([0x1f, 0xff, 0xff, 0xff]), + new Uint8Array([0x0f, 0xff, 0xff, 0xff, 0xff]), + new Uint8Array([0x07, 0xff, 0xff, 0xff, 0xff, 0xff]), + new Uint8Array([0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]), + new Uint8Array([0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]) ]; + + var isDynamicSizeValue_ = shaka.util.EbmlParser.isDynamicSizeValue_; + + expect(isDynamicSizeValue_(dynamicSizes[0])).toBe(true); + expect(isDynamicSizeValue_(dynamicSizes[1])).toBe(true); + expect(isDynamicSizeValue_(dynamicSizes[2])).toBe(true); + expect(isDynamicSizeValue_(dynamicSizes[3])).toBe(true); + expect(isDynamicSizeValue_(dynamicSizes[4])).toBe(true); + expect(isDynamicSizeValue_(dynamicSizes[5])).toBe(true); + expect(isDynamicSizeValue_(dynamicSizes[6])).toBe(true); + expect(isDynamicSizeValue_(dynamicSizes[7])).toBe(true); + }); +}); + diff --git a/spec/event_manager_spec.js b/spec/event_manager_spec.js new file mode 100644 index 0000000000..29110d6b06 --- /dev/null +++ b/spec/event_manager_spec.js @@ -0,0 +1,156 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview event_manager.js unit tests. + */ + +goog.require('shaka.util.EventManager'); + +describe('EventManager', function() { + var eventManager; + + beforeEach(function() { + eventManager = new shaka.util.EventManager(); + }); + + afterEach(function() { + eventManager.destroy(); + }); + + it('can listen for an event.', function() { + var target = new FakeEventTarget(); + var listener = jasmine.createSpy('listener'); + + eventManager.listen(target, 'event', listener); + target.dispatchEvent('event'); + + expect(listener).toHaveBeenCalled(); + }); + + it('can listen for an event from mutiple targets.', function() { + var target1 = new FakeEventTarget(); + var target2 = new FakeEventTarget(); + + var listener1 = jasmine.createSpy('listener1'); + var listener2 = jasmine.createSpy('listener2'); + + eventManager.listen(target1, 'event', listener1); + eventManager.listen(target2, 'event', listener2); + + target1.dispatchEvent('event'); + target2.dispatchEvent('event'); + + expect(listener1).toHaveBeenCalled(); + expect(listener2).toHaveBeenCalled(); + }); + + it('can listen for multiple events.', function() { + var target = new FakeEventTarget(); + + var listener1 = jasmine.createSpy('listener1'); + var listener2 = jasmine.createSpy('listener2'); + + eventManager.listen(target, 'event1', listener1); + eventManager.listen(target, 'event2', listener2); + + target.dispatchEvent('event1'); + target.dispatchEvent('event2'); + + expect(listener1).toHaveBeenCalled(); + expect(listener2).toHaveBeenCalled(); + }); + + it('can listen for multiple events from mutiple targets.', function() { + var target1 = new FakeEventTarget(); + var target2 = new FakeEventTarget(); + + var listener1 = jasmine.createSpy('listener1'); + var listener2 = jasmine.createSpy('listener2'); + + eventManager.listen(target1, 'event1', listener1); + eventManager.listen(target2, 'event2', listener2); + + target1.dispatchEvent('event1'); + target2.dispatchEvent('event2'); + + expect(listener1).toHaveBeenCalled(); + expect(listener2).toHaveBeenCalled(); + }); + + it('can listen for an event with multiple listeners.', function() { + var target = new FakeEventTarget(); + + var listener1 = jasmine.createSpy('listener1'); + var listener2 = jasmine.createSpy('listener2'); + + eventManager.listen(target, 'event', listener1); + eventManager.listen(target, 'event', listener2); + + target.dispatchEvent('event'); + target.dispatchEvent('event'); + + expect(listener1).toHaveBeenCalled(); + expect(listener2).toHaveBeenCalled(); + }); + + it('can stop listening to an event.', function() { + var target = new FakeEventTarget(); + var listener = jasmine.createSpy('listener'); + + eventManager.listen(target, 'event', listener); + eventManager.unlisten(target, 'event'); + + target.dispatchEvent('event'); + + expect(listener).not.toHaveBeenCalled(); + }); + + it('can stop listening to multiple events.', function() { + var target = new FakeEventTarget(); + + var listener1 = jasmine.createSpy('listener1'); + var listener2 = jasmine.createSpy('listener2'); + + eventManager.listen(target, 'event1', listener1); + eventManager.listen(target, 'event2', listener2); + + eventManager.removeAll(target); + + target.dispatchEvent('event1'); + target.dispatchEvent('event2'); + + expect(listener1).not.toHaveBeenCalled(); + expect(listener2).not.toHaveBeenCalled(); + }); + + it('can stop listening for an event with multiple listeners.', function() { + var target = new FakeEventTarget(); + + var listener1 = jasmine.createSpy('listener1'); + var listener2 = jasmine.createSpy('listener2'); + + eventManager.listen(target, 'event', listener1); + eventManager.listen(target, 'event', listener2); + + eventManager.removeAll(target); + + target.dispatchEvent('event'); + target.dispatchEvent('event'); + + expect(listener1).not.toHaveBeenCalled(); + expect(listener2).not.toHaveBeenCalled(); + }); +}); + diff --git a/spec/fake_event_target.js b/spec/fake_event_target.js new file mode 100644 index 0000000000..1c488ee1f7 --- /dev/null +++ b/spec/fake_event_target.js @@ -0,0 +1,87 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Implements a concrete EventTarget class. + */ + + + +/** + * Creates a new FakeEventTarget. + * @constructor + */ +FakeEventTarget = function() { + /** @private {!Object.>} */ + this.listenerMap_ = {}; +}; + + +/** + * Adds an event listener. + * @param {string} type The event type. + * @param {function(!Object)} listener The event listener. + */ +FakeEventTarget.prototype.addEventListener = function(type, listener) { + var listeners = this.listenerMap_[type]; + if (listeners) { + if (listeners.indexOf(listener) == -1) { + listeners.push(listener); + } + } else { + this.listenerMap_[type] = [listener]; + } +}; + + +/** + * Removes an event listener. + * @param {string} type The event type. + * @param {function(!Object)} listener The event listener. + */ +FakeEventTarget.prototype.removeEventListener = function(type, listener) { + var listeners = this.listenerMap_[type]; + + if (!listeners) { + return; + } + + for (var i = 0; i < listeners.length; i++) { + if (listener == listeners[i]) { + listeners.splice(i, 1); + break; + } + } +}; + + +/** + * Dispatches an event. + * @param {string} type The event type. + * @param {Object=} opt_event Optional event object. + */ +FakeEventTarget.prototype.dispatchEvent = function(type, opt_event) { + var event = opt_event || {}; + + var listeners = this.listenerMap_[type]; + + if (!listeners) { + return; + } + + for (var i = 0; i < listeners.length; i++) { + listeners[i](event); + } +}; + diff --git a/spec/language_utils_spec.js b/spec/language_utils_spec.js new file mode 100644 index 0000000000..4ca079279a --- /dev/null +++ b/spec/language_utils_spec.js @@ -0,0 +1,64 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview language_utils.js unit tests. + */ + +goog.require('shaka.util.LanguageUtils'); + +describe('LanguageUtils', function() { + var LanguageUtils = shaka.util.LanguageUtils; + + describe('match with sublanguage preference', function() { + it('matches exactly at fuzz level 0', function() { + expect(LanguageUtils.match(0, 'en-us', 'en-us')).toBeTruthy(); + expect(LanguageUtils.match(0, 'en-us', 'en-gb')).toBeFalsy(); + expect(LanguageUtils.match(0, 'en-us', 'en')).toBeFalsy(); + }); + + it('accepts base languages at fuzz level 1', function() { + expect(LanguageUtils.match(1, 'en-us', 'en-us')).toBeTruthy(); + expect(LanguageUtils.match(1, 'en-us', 'en-gb')).toBeFalsy(); + expect(LanguageUtils.match(1, 'en-us', 'en')).toBeTruthy(); + }); + + it('accepts all related languages at fuzz level 2', function() { + expect(LanguageUtils.match(2, 'en-us', 'en-us')).toBeTruthy(); + expect(LanguageUtils.match(2, 'en-us', 'en-gb')).toBeTruthy(); + expect(LanguageUtils.match(2, 'en-us', 'en')).toBeTruthy(); + }); + }); + + describe('match with base language preference', function() { + it('matches exactly at fuzz level 0', function() { + expect(LanguageUtils.match(0, 'en', 'en-us')).toBeFalsy(); + expect(LanguageUtils.match(0, 'en', 'en-gb')).toBeFalsy(); + expect(LanguageUtils.match(0, 'en', 'en')).toBeTruthy(); + }); + + it('does not accept anything additional at fuzz level 1', function() { + expect(LanguageUtils.match(1, 'en', 'en-us')).toBeFalsy(); + expect(LanguageUtils.match(1, 'en', 'en-gb')).toBeFalsy(); + expect(LanguageUtils.match(1, 'en', 'en')).toBeTruthy(); + }); + + it('accepts all related languages at fuzz level 2', function() { + expect(LanguageUtils.match(2, 'en', 'en-us')).toBeTruthy(); + expect(LanguageUtils.match(2, 'en', 'en-gb')).toBeTruthy(); + expect(LanguageUtils.match(2, 'en', 'en')).toBeTruthy(); + }); + }); +}); + diff --git a/spec/license_request_spec.js b/spec/license_request_spec.js new file mode 100644 index 0000000000..4326609a99 --- /dev/null +++ b/spec/license_request_spec.js @@ -0,0 +1,165 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview license_request.js unit tests. + */ + +goog.require('shaka.util.LicenseRequest'); + +describe('LicenseRequest', function() { + const SERVER_URL = 'http://localhost/test_drm_url'; + const REQUEST_BODY = 'test_request_body'; + const FAKE_RESPONSE = new Uint8Array(['0', '1', '2', '3']); + var LicenseRequest = shaka.util.LicenseRequest; + + beforeEach(function() { + jasmine.addMatchers(customMatchers); + jasmine.clock().install(); + jasmine.Ajax.install(); + }); + + afterEach(function() { + jasmine.Ajax.uninstall(); + jasmine.clock().uninstall(); + }); + + it('is able to send successfully.', function(done) { + var license_request = new LicenseRequest(SERVER_URL, REQUEST_BODY); + + license_request.send().then(function(response) { + expect(response).toMatchUint8Array(FAKE_RESPONSE); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + + var xhr = jasmine.Ajax.requests.mostRecent(); + mockXMLHttpRequestEventHandling(xhr); + + expect(xhr.url).toBe(SERVER_URL); + expect(xhr.responseType).toBe('arraybuffer'); + expect(xhr.method).toMatch(new RegExp('post', 'i')); + + xhr.fakeResponse({ + 'status': 200, + 'contentType': 'arraybuffer', + 'response': FAKE_RESPONSE.buffer + }); + }); + + it('is able to retry sending.', function(done) { + var license_request = new LicenseRequest(SERVER_URL, REQUEST_BODY); + + license_request.send().then(function(response) { + expect(response).toMatchUint8Array(FAKE_RESPONSE); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + + // Make the first request fail. + var xhr = jasmine.Ajax.requests.mostRecent(); + mockXMLHttpRequestEventHandling(xhr); + + expect(xhr.url).toBe(SERVER_URL); + expect(xhr.responseType).toBe('arraybuffer'); + expect(xhr.method).toMatch(new RegExp('post', 'i')); + + xhr.fakeResponse({'status': 500}); + + jasmine.clock().tick(license_request.lastDelayMs_); + + // Make the second request succeed. + xhr = jasmine.Ajax.requests.mostRecent(); + mockXMLHttpRequestEventHandling(xhr); + + // Ensure it is a new request. + expect(xhr.status).toBe(null); + + expect(xhr.url).toBe(SERVER_URL); + expect(xhr.responseType).toBe('arraybuffer'); + expect(xhr.method).toMatch(new RegExp('post', 'i')); + + xhr.fakeResponse({ + 'status': 200, + 'contentType': 'arraybuffer', + 'response': FAKE_RESPONSE.buffer + }); + }); + + it('is able to handle repeated failures.', function(done) { + var license_request = new LicenseRequest(SERVER_URL, REQUEST_BODY); + + license_request.send().then(function(response) { + fail(new Error('Should not receive a response.')); + done(); + }).catch(function(error) { + expect(error.status).toBe(500); + done(); + }); + + for (var i = 0; i < license_request.parameters.maxAttempts; ++i) { + var xhr = jasmine.Ajax.requests.mostRecent(); + mockXMLHttpRequestEventHandling(xhr); + + // Ensure it is a new request. + expect(xhr.status).toBe(null); + + expect(xhr.url).toBe(SERVER_URL); + expect(xhr.responseType).toBe('arraybuffer'); + expect(xhr.method).toMatch(new RegExp('post', 'i')); + + xhr.fakeResponse({'status': 500}); + jasmine.clock().tick(license_request.lastDelayMs_); + } + }); + + it('parses data URIs with mime type and base64', function(done) { + checkDataUri('data:text/plain;base64,SGVsbG8sIGRhdGEh', + 'Hello, data!', done); + }); + + it('parses data URIs with no mime type and base64', function(done) { + checkDataUri('data:base64,SGVsbG8sIGRhdGEh', + 'Hello, data!', done); + }); + + it('parses data URIs with no mime type and no encoding', function(done) { + checkDataUri('data:Hello%2C%20data!', + 'Hello, data!', done); + }); + + it('parses data URIs with mime type and no encoding', function(done) { + checkDataUri('data:text/plain;Hello%2C%20data!', + 'Hello, data!', done); + }); + + function checkDataUri(uri, expectedData, done) { + var license_request = new LicenseRequest(uri, null); + + license_request.send().then(function(response) { + // Convert the Uint8Array back to string. + var data = String.fromCharCode.apply(null, response); + expect(data).toBe(expectedData); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + } +}); + diff --git a/spec/mpd_processor_spec.js b/spec/mpd_processor_spec.js new file mode 100644 index 0000000000..96e0307fb5 --- /dev/null +++ b/spec/mpd_processor_spec.js @@ -0,0 +1,486 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview mpd_processor.js unit tests. + */ + +goog.require('shaka.dash.mpd'); +goog.require('shaka.dash.MpdProcessor'); + +describe('MpdProcessor', function() { + var parser; + + beforeEach(function() { + parser = new shaka.dash.MpdProcessor(null); + }); + + describe('validateSegmentInfo_()', function() { + var mpd = shaka.dash.mpd; + var m; + var p; + var as; + var r; + var sb; + var sl; + var st; + + beforeEach(function() { + m = new mpd.Mpd(); + p = new mpd.Period(); + as = new mpd.AdaptationSet(); + r = new mpd.Representation(); + sb = new mpd.SegmentBase(); + sl = new mpd.SegmentList(); + st = new mpd.SegmentTemplate(); + }); + + it('can handle a single SegmentBase.', function() { + r.segmentBase = sb; + as.representations.push(r); + p.adaptationSets.push(as); + m.periods.push(p); + + parser.validateSegmentInfo_(m); + expect(r.segmentBase).not.toBeNull(); + expect(r.segmentList).toBeNull(); + expect(r.segmentTemplate).toBeNull(); + }); + + it('can handle a single SegmentList.', function() { + r.segmentList = sl; + as.representations.push(r); + p.adaptationSets.push(as); + m.periods.push(p); + + parser.validateSegmentInfo_(m); + expect(r.segmentBase).toBeNull(); + expect(r.segmentList).not.toBeNull(); + expect(r.segmentTemplate).toBeNull(); + }); + + it('can handle a single SegmentTemplate.', function() { + r.segmentTemplate = st; + as.representations.push(r); + p.adaptationSets.push(as); + m.periods.push(p); + + parser.validateSegmentInfo_(m); + expect(r.segmentBase).toBeNull(); + expect(r.segmentList).toBeNull(); + expect(r.segmentTemplate).not.toBeNull(); + }); + + it('can handle a SegmentBase and a SegmentList.', function() { + r.segmentBase = sb; + r.segmentList = sl; + as.representations.push(r); + p.adaptationSets.push(as); + m.periods.push(p); + + // SegmentList should be removed. + parser.validateSegmentInfo_(m); + expect(r.segmentBase).not.toBeNull(); + expect(r.segmentList).toBeNull(); + expect(r.segmentTemplate).toBeNull(); + }); + + it('can handle a SegmentBase and a SegmentTemplate.', function() { + r.segmentBase = sb; + r.segmentTemplate = st; + as.representations.push(r); + p.adaptationSets.push(as); + m.periods.push(p); + + // SegmentTemplate should be removed. + parser.validateSegmentInfo_(m); + expect(r.segmentBase).not.toBeNull(); + expect(r.segmentList).toBeNull(); + expect(r.segmentTemplate).toBeNull(); + }); + + it('can handle a SegmentList and a SegmentTemplate.', function() { + r.segmentList = sl; + r.segmentTemplate = st; + as.representations.push(r); + p.adaptationSets.push(as); + m.periods.push(p); + + // SegmentTemplate should be removed. + parser.validateSegmentInfo_(m); + expect(r.segmentBase).toBeNull(); + expect(r.segmentList).not.toBeNull(); + expect(r.segmentTemplate).toBeNull(); + }); + + it('can handle a SegmentBase, a SegmentList, and a SegmentTemplate.', + function() { + r.segmentBase = sb; + r.segmentList = sl; + r.segmentTemplate = st; + as.representations.push(r); + p.adaptationSets.push(as); + m.periods.push(p); + + // SegmentList and SegmentTemplate should be removed. + parser.validateSegmentInfo_(m); + expect(r.segmentBase).not.toBeNull(); + expect(r.segmentList).toBeNull(); + expect(r.segmentTemplate).toBeNull(); + }); + + it('can handle no SegmentBase, SegmentList, or SegmentTemplate.', + function() { + as.representations.push(r); + p.adaptationSets.push(as); + m.periods.push(p); + + // The Representation should be removed. + parser.validateSegmentInfo_(m); + expect(as.representations.length).toBe(0); + }); + }); + + describe('processSegmentTemplates_()', function() { + var mpd = shaka.dash.mpd; + var m; + var p; + var as; + var r1; + var r2; + var st; + + beforeEach(function() { + m = new mpd.Mpd(); + p = new mpd.Period(); + as = new mpd.AdaptationSet(); + r1 = new mpd.Representation(); + r2 = new mpd.Representation(); + st = new mpd.SegmentTemplate(); + + r1.segmentTemplate = st; + r2.segmentTemplate = st; + + as.segmentTemplate = st; + as.representations.push(r1); + as.representations.push(r2); + + p.adaptationSets.push(as); + + m.periods.push(p); + }); + + it('can generate a SegmentBase from a SegmentTemplate.', function() { + st.mediaUrlTemplate = 'http://example.com/$Bandwidth$-media.mp4'; + st.indexUrlTemplate = 'http://example.com/$Bandwidth$-index.sidx'; + st.initializationUrlTemplate = 'http://example.com/$Bandwidth$-init.mp4'; + + r1.bandwidth = 250000; + r1.baseUrl = new mpd.BaseUrl(); + r1.baseUrl = new goog.Uri('http://example.com/'); + + r2.bandwidth = 500000; + r2.baseUrl = new mpd.BaseUrl(); + r2.baseUrl = new goog.Uri('http://example.com/'); + + parser.processSegmentTemplates_(m); + + // Check |r1|. + expect(r1.segmentBase).toBeTruthy(); + expect(r1.segmentList).toBeNull(); + + expect(r1.segmentBase.mediaUrl).toBeTruthy(); + expect(r1.segmentBase.mediaUrl.toString()) + .toBe('http://example.com/250000-media.mp4'); + + var ri1 = r1.segmentBase.representationIndex; + expect(ri1).toBeTruthy(); + + expect(ri1.url).toBeTruthy(); + expect(ri1.url.toString()).toBe('http://example.com/250000-index.sidx'); + expect(ri1.range).toBeNull(); + + var i1 = r1.segmentBase.initialization; + expect(i1.url).toBeTruthy(); + expect(i1.url.toString()).toBe('http://example.com/250000-init.mp4'); + expect(i1.range).toBeNull(); + + // Check |r2|. + expect(r2.segmentBase).toBeTruthy(); + expect(r2.segmentList).toBeNull(); + + expect(r2.segmentBase.mediaUrl).toBeTruthy(); + expect(r2.segmentBase.mediaUrl.toString()) + .toBe('http://example.com/500000-media.mp4'); + + var ri2 = r2.segmentBase.representationIndex; + expect(ri2).toBeTruthy(); + + expect(ri2.url).toBeTruthy(); + expect(ri2.url.toString()).toBe('http://example.com/500000-index.sidx'); + expect(ri2.range).toBeNull(); + + var i2 = r2.segmentBase.initialization; + expect(i2.url).toBeTruthy(); + expect(i2.url.toString()).toBe('http://example.com/500000-init.mp4'); + expect(i2.range).toBeNull(); + }); + + it('can generate a SegmentList from a SegmentTemplate.', function() { + var tp1 = new mpd.SegmentTimePoint(); + tp1.duration = 10; + tp1.repeat = 1; + + var tp2 = new mpd.SegmentTimePoint(); + tp2.duration = 20; + tp2.repeat = 0; + + var timeline = new mpd.SegmentTimeline(); + timeline.timePoints.push(tp1); + timeline.timePoints.push(tp2); + + st.timescale = 9000; + st.presentationTimeOffset = 0; + st.segmentDuration = null; + st.firstSegmentNumber = 1; + st.mediaUrlTemplate = '$Number$-$Time$-$Bandwidth$-media.mp4'; + st.initializationUrlTemplate = '$Bandwidth$-init.mp4'; + + st.timeline = timeline; + + r1.bandwidth = 250000; + r1.baseUrl = new mpd.BaseUrl(); + r1.baseUrl = new goog.Uri('http://example.com/'); + + r2.bandwidth = 500000; + r2.baseUrl = new mpd.BaseUrl(); + r2.baseUrl = new goog.Uri('http://example.com/'); + + parser.processSegmentTemplates_(m); + + // Check |r1|. + expect(r1.segmentBase).toBeNull(); + expect(r1.segmentList).toBeTruthy(); + + var sl1 = r1.segmentList; + expect(sl1.timescale).toBe(9000); + expect(sl1.presentationTimeOffset).toBe(0); + expect(sl1.segmentDuration).toBe(null); + expect(sl1.firstSegmentNumber).toBe(1); + + expect(sl1.initialization).toBeTruthy(); + expect(sl1.initialization.url).toBeTruthy(); + expect(sl1.initialization.url.toString()) + .toBe('http://example.com/250000-init.mp4'); + + expect(sl1.segmentUrls.length).toBe(3); + + expect(sl1.segmentUrls[0].mediaUrl).toBeTruthy(); + expect(sl1.segmentUrls[0].mediaUrl.toString()) + .toBe('http://example.com/1-0-250000-media.mp4'); + expect(sl1.segmentUrls[0].mediaRange).toBeNull(); + expect(sl1.segmentUrls[0].startTime).toBe(0); + expect(sl1.segmentUrls[0].duration).toBe(10); + + expect(sl1.segmentUrls[1].mediaUrl).toBeTruthy(); + expect(sl1.segmentUrls[1].mediaUrl.toString()) + .toBe('http://example.com/2-10-250000-media.mp4'); + expect(sl1.segmentUrls[1].mediaRange).toBeNull(); + expect(sl1.segmentUrls[1].startTime).toBe(10); + expect(sl1.segmentUrls[1].duration).toBe(10); + + expect(sl1.segmentUrls[2].mediaUrl).toBeTruthy(); + expect(sl1.segmentUrls[2].mediaUrl.toString()) + .toBe('http://example.com/3-20-250000-media.mp4'); + expect(sl1.segmentUrls[2].mediaRange).toBeNull(); + expect(sl1.segmentUrls[2].startTime).toBe(20); + expect(sl1.segmentUrls[2].duration).toBe(20); + + // Check |r2|. + expect(r2.segmentBase).toBeNull(); + expect(r2.segmentList).toBeTruthy(); + + var sl2 = r2.segmentList; + expect(sl2.timescale).toBe(9000); + expect(sl2.presentationTimeOffset).toBe(0); + expect(sl2.segmentDuration).toBe(null); + expect(sl2.firstSegmentNumber).toBe(1); + + expect(sl2.initialization).toBeTruthy(); + expect(sl2.initialization.url).toBeTruthy(); + expect(sl2.initialization.url.toString()) + .toBe('http://example.com/500000-init.mp4'); + + expect(sl2.segmentUrls.length).toBe(3); + + expect(sl2.segmentUrls[0].mediaUrl).toBeTruthy(); + expect(sl2.segmentUrls[0].mediaUrl.toString()) + .toBe('http://example.com/1-0-500000-media.mp4'); + expect(sl2.segmentUrls[0].mediaRange).toBeNull(); + expect(sl2.segmentUrls[0].startTime).toBe(0); + expect(sl2.segmentUrls[0].duration).toBe(10); + + expect(sl2.segmentUrls[1].mediaUrl).toBeTruthy(); + expect(sl2.segmentUrls[1].mediaUrl.toString()) + .toBe('http://example.com/2-10-500000-media.mp4'); + expect(sl2.segmentUrls[1].mediaRange).toBeNull(); + expect(sl2.segmentUrls[1].startTime).toBe(10); + expect(sl2.segmentUrls[1].duration).toBe(10); + + expect(sl2.segmentUrls[2].mediaUrl).toBeTruthy(); + expect(sl2.segmentUrls[2].mediaUrl.toString()) + .toBe('http://example.com/3-20-500000-media.mp4'); + expect(sl2.segmentUrls[2].mediaRange).toBeNull(); + expect(sl2.segmentUrls[2].startTime).toBe(20); + expect(sl2.segmentUrls[2].duration).toBe(20); + }); + }); + + describe('fillUrlTemplate_()', function() { + it('can handle a single RepresentationID identifier.', function() { + expect( + parser.fillUrlTemplate_( + '/example/$RepresentationID$.mp4', + 100, null, null, null).toString()).toBe('/example/100.mp4') + + // RepresentationID cannot use a width specifier. + expect( + parser.fillUrlTemplate_( + '/example/$RepresentationID%01d$.mp4', + 100, null, null, null).toString()).toBe('/example/100.mp4'); + + expect( + parser.fillUrlTemplate_( + '/example/$RepresentationID$.mp4', + null, null, null, null).toString()) + .toBe('/example/$RepresentationID$.mp4'); + }); + + it('can handle a single Number identifier.', function() { + expect( + parser.fillUrlTemplate_( + '/example/$Number$.mp4', + null, 100, null, null).toString()).toBe('/example/100.mp4') + + expect( + parser.fillUrlTemplate_( + '/example/$Number%05d$.mp4', + null, 100, null, null).toString()).toBe('/example/00100.mp4'); + + expect( + parser.fillUrlTemplate_( + '/example/$Number$.mp4', + null, null, null, null).toString()) + .toBe('/example/$Number$.mp4'); + }); + + it('can handle a single Bandwidth identifier.', function() { + expect( + parser.fillUrlTemplate_( + '/example/$Bandwidth$.mp4', + null, null, 100, null).toString()).toBe('/example/100.mp4') + + expect( + parser.fillUrlTemplate_( + '/example/$Bandwidth%05d$.mp4', + null, null, 100, null).toString()).toBe('/example/00100.mp4'); + + expect( + parser.fillUrlTemplate_( + '/example/$Bandwidth$.mp4', + null, null, null, null).toString()) + .toBe('/example/$Bandwidth$.mp4'); + }); + + it('can handle a single Time identifier.', function() { + expect( + parser.fillUrlTemplate_( + '/example/$Time$.mp4', + null, null, null, 100).toString()).toBe('/example/100.mp4') + + expect( + parser.fillUrlTemplate_( + '/example/$Time%05d$.mp4', + null, null, null, 100).toString()).toBe('/example/00100.mp4'); + + expect( + parser.fillUrlTemplate_( + '/example/$Time$.mp4', + null, null, null, null).toString()) + .toBe('/example/$Time$.mp4'); + }); + + it('can handle multiple identifiers.', function() { + expect( + parser.fillUrlTemplate_( + '/example/$RepresentationID$_$Number$_$Bandwidth$_$Time$.mp4', + 1, 2, 3, 4).toString()).toBe('/example/1_2_3_4.mp4') + + // No spaces. + expect( + parser.fillUrlTemplate_( + '/example/$RepresentationID$$Number$$Bandwidth$$Time$.mp4', + 1, 2, 3, 4).toString()).toBe('/example/1234.mp4') + + // Different order. + expect( + parser.fillUrlTemplate_( + '/example/$Bandwidth$_$Time$_$RepresentationID$_$Number$.mp4', + 1, 2, 3, 4).toString()).toBe('/example/3_4_1_2.mp4') + + // Single width. + expect( + parser.fillUrlTemplate_( + '$RepresentationID$_$Number%01d$_$Bandwidth%01d$_$Time%01d$', + 1, 2, 3, 400).toString()).toBe('1_2_3_400') + + // Different widths. + expect( + parser.fillUrlTemplate_( + '$RepresentationID$_$Number%02d$_$Bandwidth%02d$_$Time%02d$', + 1, 2, 3, 4).toString()).toBe('1_02_03_04') + + // Double $$. + expect( + parser.fillUrlTemplate_( + '$$/$RepresentationID$$$$Number$$$$Bandwidth$$$$Time$$$.$$', + 1, 2, 3, 4).toString()).toBe('$/1$2$3$4$.$') + }); + + it('can handle invalid identifiers.', function() { + expect( + parser.fillUrlTemplate_( + '/example/$Garbage$.mp4', + 1, 2, 3, 4).toString()).toBe('/example/$Garbage$.mp4'); + + expect( + parser.fillUrlTemplate_( + '/example/$RepresentationID%$', + 1, 2, 3, 4)).toBeNull(); + }); + + it('can handle partial identifiers.', function() { + expect( + parser.fillUrlTemplate_( + '/example/$Time.mp4', + 1, 2, 3, 4).toString()).toBe('/example/$Time.mp4'); + + expect( + parser.fillUrlTemplate_( + '/example/$Time%.mp4', + 1, 2, 3, 4)).toBeNull(); + }); + }); +}); + diff --git a/spec/mpd_spec.js b/spec/mpd_spec.js new file mode 100644 index 0000000000..225eb889ed --- /dev/null +++ b/spec/mpd_spec.js @@ -0,0 +1,789 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview mpd.js unit tests. + */ + +goog.require('shaka.dash.mpd'); + +describe('mpd', function() { + beforeEach(function() { + jasmine.addMatchers(customMatchers); + }); + + it('is able to parse an MPD time string.', function() { + var parseDuration = shaka.dash.mpd.parseDuration_; + + // Days only. + expect(parseDuration('P7D')).toBe(604800); + + // Hours only. + expect(parseDuration('PT1H')).toBe(3600); + + // Minutes only. + expect(parseDuration('PT1M')).toBe(60); + + // Seconds only (with no fractional part). + expect(parseDuration('PT1S')).toBe(1); + + // Seconds only (with no whole part). + expect(parseDuration('PT0.1S')).toBe(0.1); + expect(parseDuration('PT.1S')).toBe(0.1); + + // Seconds only (with whole part and fractional part). + expect(parseDuration('PT1.1S')).toBe(1.1); + + // Hours, and minutes. + expect(parseDuration('PT1H2M')).toBe(3720); + + // Hours, and seconds. + expect(parseDuration('PT1H2S')).toBe(3602); + expect(parseDuration('PT1H2.2S')).toBe(3602.2); + + // Minutes, and seconds. + expect(parseDuration('PT1M2S')).toBe(62); + expect(parseDuration('PT1M2.2S')).toBe(62.2); + + // Hours, minutes, and seconds. + expect(parseDuration('PT1H2M3S')).toBe(3723); + expect(parseDuration('PT1H2M3.3S')).toBe(3723.3); + + // Days, hours, minutes, and seconds. + expect(parseDuration('P1DT1H2M3S')).toBe(90123); + expect(parseDuration('P1DT1H2M3.3S')).toBe(90123.3); + + // Error cases. + expect(parseDuration('P1Sasdf')).toBeNull(); + expect(parseDuration('P1Y')).toBeNull(); + expect(parseDuration('P1YT1S')).toBeNull(); + expect(parseDuration('P1M')).toBeNull(); + expect(parseDuration('P1MT1S')).toBeNull(); + expect(parseDuration('P1M1D')).toBeNull(); + expect(parseDuration('P1M1DT1S')).toBeNull(); + expect(parseDuration('1H2M3S')).toBeNull(); + expect(parseDuration('123')).toBeNull(); + expect(parseDuration('abc')).toBeNull(); + expect(parseDuration('')).toBeNull(); + }); + + it('is able to parse an MPD range string.', function() { + var parseRange = shaka.dash.mpd.parseRange_; + var Range = shaka.dash.mpd.Range; + + expect(parseRange('0-0')).toMatchRange(new Range(0, 0)); + expect(parseRange('1-1')).toMatchRange(new Range(1, 1)); + expect(parseRange('1-50')).toMatchRange(new Range(1, 50)); + expect(parseRange('50-1')).toMatchRange(new Range(50, 1)); + + expect(parseRange('-1')).toBeNull(); + expect(parseRange('1-')).toBeNull(); + expect(parseRange('1')).toBeNull(); + expect(parseRange('-')).toBeNull(); + expect(parseRange('')).toBeNull(); + }); + + it('is able to parse basic MPD XML which has a SegmentBase.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' http://example.com', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.id).toBe('1'); + expect(period.duration).toBe(181.63); + expect(period.start).toBe(0); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.id).toBe('1'); + expect(adaptationSet.lang).toBe('en'); + expect(adaptationSet.contentType).toBe('video'); + expect(adaptationSet.representations.length).toBe(1); + + var representation = adaptationSet.representations[0]; + expect(representation).toBeTruthy(); + expect(representation.id).toBe('r1'); + expect(representation.codecs).toBe('mp4a.40.2'); + + var baseUrl = representation.baseUrl; + expect(baseUrl).toBeTruthy(); + expect(baseUrl.toString()).toBe('http://example.com'); + + var segmentBase = representation.segmentBase; + expect(segmentBase).toBeTruthy(); + expect(segmentBase.indexRange.begin).toBe(1000); + expect(segmentBase.indexRange.end).toBe(3540); + + var initialization = segmentBase.initialization; + expect(initialization).toBeTruthy(); + expect(initialization.range.begin).toBe(0); + expect(initialization.range.end).toBe(999); + }); + + it('is able to parse basic MPD XML which has a SegmentTemplate.', + function() { + var source = [ + '', + ' ', + ' ', + ' http://example.com', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.id).toBe('1'); + expect(period.duration).toBe(181.63); + expect(period.start).toBe(0); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.id).toBe('1'); + expect(adaptationSet.lang).toBe('en'); + expect(adaptationSet.contentType).toBe('video'); + expect(adaptationSet.representations.length).toBe(2); + + var baseUrl = adaptationSet.baseUrl; + expect(baseUrl).toBeTruthy(); + expect(baseUrl.toString()).toBe('http://example.com'); + + var segmentTemplate = adaptationSet.segmentTemplate; + expect(segmentTemplate).toBeTruthy(); + expect(segmentTemplate.timescale).toBe(9000); + expect(segmentTemplate.initializationUrlTemplate).toBe('$Bandwidth$/init.mp4'); + expect(segmentTemplate.mediaUrlTemplate).toBe('$Bandwidth$/frames.mp4'); + + var timeline = segmentTemplate.timeline; + expect(timeline).toBeTruthy(); + + var timePoints = timeline.timePoints; + expect(timePoints).toBeTruthy(); + expect(timePoints.length).toBe(1); + + var tp = timePoints[0]; + expect(tp.startTime).toBe(0); + expect(tp.duration).toBe(1000); + expect(tp.repeat).toBe(400); + + var representation = adaptationSet.representations[0]; + expect(representation).toBeTruthy(); + expect(representation.id).toBe('r1'); + expect(representation.bandwidth).toBe(250000); + expect(representation.codecs).toBe('mp4a.40.2'); + + representation = adaptationSet.representations[1]; + expect(representation).toBeTruthy(); + expect(representation.id).toBe('r2'); + expect(representation.bandwidth).toBe(500000); + expect(representation.codecs).toBe('mp4a.40.2'); + }); + + it('can inherit ContentComponent attributes in AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.lang).toBe('en'); + expect(adaptationSet.contentType).toBe('video'); + }); + + it('can override ContentComponent attributes in AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.lang).toBe('fr'); + expect(adaptationSet.contentType).toBe('audio'); + }); + + it('can inherit a SegmentBase from a Period.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkSegmentBase(source, 100, 200); + }); + + it('can inherit a SegmentBase from an AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkSegmentBase(source, 100, 200); + + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkSegmentBase(source, 1000, 2000); + }); + + it('can override a SegmentBase from a Period.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkSegmentBase(source, 1000, 2000); + }); + + it('can override a SegmentBase from an AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkSegmentBase(source, 1000, 2000); + + source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkSegmentBase(source, 10000, 20000); + }); + + /** + * Checks that a SegmentBase exists with the given index range. + * @param {string} source The XML source. + * @param {number} indexBegin + * @param {number} indexEnd + */ + var checkSegmentBase = function(source, indexBegin, indexEnd) { + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.representations.length).toBe(1); + + var representation = adaptationSet.representations[0]; + expect(representation).toBeTruthy(); + + var segmentBase = representation.segmentBase; + expect(segmentBase).toBeTruthy(); + expect(segmentBase.indexRange.begin).toBe(indexBegin); + expect(segmentBase.indexRange.end).toBe(indexEnd); + }; + + it('can inherit a ContentProtection from an AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkContentProtection(source, 'http://example.com'); + + source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkContentProtection(source, 'http://google.com'); + }); + + it('can override a ContentProtection from a Period.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkContentProtection(source, 'http://google.com'); + }); + + it('can override a ContentProtection from an AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkContentProtection(source, 'http://google.com'); + + source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkContentProtection(source, 'http://youtube.com'); + }); + + /** + * Checks that a ContentProtection exists with the given schemeIdUri. + * @param {string} source The XML source. + * @param {string} schemeIdUri + */ + var checkContentProtection = function(source, schemeIdUri) { + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.representations.length).toBe(1); + + var representation = adaptationSet.representations[0]; + expect(representation).toBeTruthy(); + expect(representation.contentProtections.length).toBeTruthy(); + + var foundMatch = false; + for (var i = 0; i < representation.contentProtections.length; ++i) { + var contentProtection = representation.contentProtections[i]; + expect(contentProtection).toBeTruthy(); + if (contentProtection.schemeIdUri == schemeIdUri) { + foundMatch = true; + } + } + expect(foundMatch).toBeTruthy(); + }; + + it('can inherit a "mimeType" attribute from an AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkRepresentationMimeType(source, 'video/mp4'); + }); + + it('can override a "mimeType" attribute from an AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkRepresentationMimeType(source, 'video/webm'); + }); + + /** + * @param {string} source The XML source. + * @param {string} mimeType + */ + var checkRepresentationMimeType = function(source, mimeType) { + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.representations.length).toBe(1); + + var representation = adaptationSet.representations[0]; + expect(representation).toBeTruthy(); + expect(representation.mimeType).toBe(mimeType); + }; + + it('can infer a "contentType" attribute from "mimeType".', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.contentType).toBe('video'); + }); + + it('can infer a "mimeType" attribute from Representations.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.mimeType).toBe('video/mp4'); + expect(adaptationSet.contentType).toBe('video'); + }); + + it('can inherit a "codecs" attribute from an AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkCodecs(source, 'vp8'); + }); + + it('can override a "codecs" attribute from an AdaptationSet.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + checkCodecs(source, 'vp9'); + }); + + /** + * @param {string} source The XML source. + * @param {string} codecs + */ + var checkCodecs = function(source, codecs) { + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.periods.length).toBe(1); + + var period = mpd.periods[0]; + expect(period).toBeTruthy(); + expect(period.adaptationSets.length).toBe(1); + + var adaptationSet = period.adaptationSets[0]; + expect(adaptationSet).toBeTruthy(); + expect(adaptationSet.representations.length).toBe(1); + + var representation = adaptationSet.representations[0]; + expect(representation).toBeTruthy(); + expect(representation.codecs).toBe(codecs); + }; + + it('can resolve relative and absolute URLs at every level.', function() { + var source = [ + '', + ' http://example.com/', + ' ', + ' Period1/', + ' ', + ' AdaptationSet1/', + ' ', + ' Representation1', + ' ', + ' ', + ' ', + ' ', + ' Period2', + ' ', + ' AdaptationSet2', + ' ', + ' Representation2', + ' ', + ' ', + ' ', + ' ', + ' /Period3/', + ' ', + ' /AdaptationSet3', + ' ', + ' ?Representation3', + ' ', + ' ', + ' #Representation4', + ' ', + ' ', + ' http://foo.bar/', + ' ', + ' ', + ' ', + ' http://foo.bar/multi/level', + ' ', + ' ?Representation5', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.baseUrl.toString()).toBe('http://example.com/'); + expect(mpd.periods.length).toBe(3); + + var p = mpd.periods; + expect(p[0].baseUrl.toString()). + toBe('http://example.com/Period1/'); + expect(p[0].adaptationSets[0].baseUrl.toString()). + toBe('http://example.com/Period1/AdaptationSet1/'); + expect(p[0].adaptationSets[0].representations[0].baseUrl.toString()). + toBe('http://example.com/Period1/AdaptationSet1/Representation1'); + + expect(p[1].baseUrl.toString()). + toBe('http://example.com/Period2'); + expect(p[1].adaptationSets[0].baseUrl.toString()). + toBe('http://example.com/AdaptationSet2'); + expect(p[1].adaptationSets[0].representations[0].baseUrl.toString()). + toBe('http://example.com/Representation2'); + + expect(p[2].baseUrl.toString()). + toBe('http://example.com/Period3/'); + expect(p[2].adaptationSets[0].baseUrl.toString()). + toBe('http://example.com/AdaptationSet3'); + expect(p[2].adaptationSets[0].representations[0].baseUrl.toString()). + toBe('http://example.com/AdaptationSet3?Representation3'); + expect(p[2].adaptationSets[0].representations[1].baseUrl.toString()). + toBe('http://example.com/AdaptationSet3#Representation4'); + expect(p[2].adaptationSets[0].representations[2].baseUrl.toString()). + toBe('http://foo.bar/'); + + expect(p[2].adaptationSets[1].baseUrl.toString()). + toBe('http://foo.bar/multi/level'); + expect(p[2].adaptationSets[1].representations[0].baseUrl.toString()). + toBe('http://foo.bar/multi/level?Representation5'); + }); + + it('can resolve relative URLs across levels.', function() { + var source = [ + '', + ' sub/', + ' ', + ' ', + ' ', + ' 1.webm', + ' ', + ' ', + ' 2.webm', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + expect(mpd.baseUrl.toString()).toBe('sub/'); + expect(mpd.periods.length).toBe(1); + + var p = mpd.periods[0]; + expect(p.baseUrl.toString()).toBe('sub/'); + expect(p.adaptationSets.length).toBe(1); + + var as = p.adaptationSets[0]; + expect(as.baseUrl.toString()).toBe('sub/'); + expect(as.representations.length).toBe(2); + + var r = as.representations; + expect(r[0].baseUrl.toString()).toBe('sub/1.webm'); + expect(r[1].baseUrl.toString()).toBe('sub/2.webm'); + }); + + it('can resolve relative URLs with respect to the MPD URL.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' 1.webm', + ' ', + ' ', + ' ', + ''].join('\n'); + var mpdUrl = 'http://example.com/dash/test.mpd'; + + var mpd = shaka.dash.mpd.parseMpd(source, mpdUrl); + expect(mpd).toBeTruthy(); + expect(mpd.baseUrl.toString()).toBe(mpdUrl); + expect(mpd.periods.length).toBe(1); + + var p = mpd.periods[0]; + expect(p.baseUrl.toString()).toBe(mpdUrl); + expect(p.adaptationSets.length).toBe(1); + + var as = p.adaptationSets[0]; + expect(as.baseUrl.toString()).toBe(mpdUrl); + expect(as.representations.length).toBe(1); + + var r = as.representations[0]; + expect(r.baseUrl.toString()).toBe('http://example.com/dash/1.webm'); + }); + + it('can parse namespaced elements.', function() { + var source = [ + '', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + + var mpd = shaka.dash.mpd.parseMpd(source, ''); + expect(mpd).toBeTruthy(); + }); +}); + diff --git a/spec/player_integration.js b/spec/player_integration.js new file mode 100644 index 0000000000..d34e1fe942 --- /dev/null +++ b/spec/player_integration.js @@ -0,0 +1,345 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Player integration tests. + */ + +goog.require('shaka.player.Player'); +goog.require('shaka.player.DashVideoSource'); +goog.require('shaka.polyfill.MediaKeys'); +goog.require('shaka.polyfill.VideoPlaybackQuality'); + +describe('Player', function() { + var originalAsserts; + var originalTimeout; + var video; + var player; + + function newSource(encrypted) { + var url = encrypted ? + 'assets/car_cenc-20120827-manifest.mpd' : + 'assets/car-20120827-manifest.mpd'; + return new shaka.player.DashVideoSource(url, interpretContentProtection); + } + + beforeAll(function() { + // Hijack assertions and convert failed assertions into failed tests. + assertsToFailures.install(); + + // Change the timeout. + originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; + jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000; // ms + + // Install polyfills. + shaka.polyfill.MediaKeys.install(); + shaka.polyfill.VideoPlaybackQuality.install(); + + // Create a video tag. This will be visible so that long tests do not + // create the illusion of the test-runner being hung. + video = document.createElement('video'); + video.width = 600; + video.height = 400; + // Add it to the DOM. + document.body.appendChild(video); + }); + + beforeEach(function() { + // Create a new player. + player = new shaka.player.Player(video); + player.addEventListener('error', function(event) { + // Treat all player errors as test failures. + var error = event.detail; + fail(error); + }, false); + + // Create a new source. + source = newSource(false); + + // Disable automatic adaptation unless it is needed for a test. + // This makes test results more reproducible. + player.enableAdaptation(false); + }); + + afterEach(function() { + player.destroy(); + player = null; + }); + + afterAll(function() { + // Remove the video tag from the DOM. + document.body.removeChild(video); + + // Restore the timeout. + jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; + + // Restore normal assertion behavior. + assertsToFailures.uninstall(); + }); + + // Returns the Id of the track for the intended track height. + // -1 if the target height is not found. + function getTrackIdForTargetHeight(tracks, targetHeight) { + for (var i = 0; i < tracks.length; i++) { + if (tracks[i].height == targetHeight) { + return tracks[i].id; + } + } + + return -1; + }; + + describe('load', function() { + // This covers basic player re-use. + it('can be used multiple times without EME', function(done) { + player.load(source).then(function() { + player.play(); + return delay(5.0); + }).then(function() { + source = newSource(false); + return player.load(source); + }).then(function() { + player.play(); + return delay(5.0); + }).then(function() { + expect(video.currentTime).toBeGreaterThan(0.0); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + + // This covers bug #18614098. A presumed bug in Chrome can cause mediaKeys + // to be unset on the second use of a video tag. + it('can be used multiple times with EME', function(done) { + source = newSource(true); + player.load(source).then(function() { + player.play(); + return delay(5.0); + }).then(function() { + source = newSource(true); + return player.load(source); + }).then(function() { + player.play(); + return delay(5.0); + }).then(function() { + expect(video.currentTime).toBeGreaterThan(0.0); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + }); + + describe('resize', function() { + // Tests video resizing at the time of initializing player. + it('can set resolution at time of initialization', function(done) { + player.load(source).then(function() { + var tracks = player.getVideoTracks(); + var trackId = getTrackIdForTargetHeight(tracks, 720); + player.selectVideoTrack(trackId); + player.play(); + return delay(10.0); + }).then(function() { + var currentResolution = player.getCurrentResolution(); + expect(currentResolution).not.toBe(null); + expect(currentResolution.height).toEqual(720); + expect(currentResolution.width).toEqual(1280); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + + // Tests player at different resolutions. + it('can be resized multiple times', function(done) { + player.load(source).then(function() { + var tracks = player.getVideoTracks(); + var trackId = getTrackIdForTargetHeight(tracks, 720); + player.selectVideoTrack(trackId); + player.play(); + return delay(10.0); + }).then(function() { + var currentResolution = player.getCurrentResolution(); + expect(currentResolution).not.toBe(null); + expect(currentResolution.height).toEqual(720); + expect(currentResolution.width).toEqual(1280); + return delay(2.0); + }).then(function() { + var tracks = player.getVideoTracks(); + var trackId = getTrackIdForTargetHeight(tracks, 360); + player.selectVideoTrack(trackId); + return delay(10.0); + }).then(function() { + var currentResolution = player.getCurrentResolution(); + expect(currentResolution).not.toBe(null); + expect(currentResolution.height).toEqual(360); + expect(currentResolution.width).toEqual(640); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + }); + + describe('player-controls', function() { + // Tests various player controls. + it('test play and pause video controls', function(done) { + var timeStamp; + player.load(source).then(function() { + player.play(); + return delay(8.0); + }).then(function() { + expect(video.currentTime).toBeGreaterThan(3.0); + player.pause(); + timeStamp = player.getCurrentTime(); + return delay(5.0); + }).then(function() { + expect(video.paused).toBe(true); + expect(video.currentTime).toEqual(timeStamp); + expect(video.currentTime).toEqual(player.getCurrentTime()); + timeStamp = player.getCurrentTime(); + player.play(); + return delay(5.0); + }).then(function() { + expect(video.paused).toBe(false); + expect(video.currentTime).toBeGreaterThan(timeStamp); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + + it('test volume control', function(done) { + var volume; + player.load(source).then(function() { + player.play(); + volume = player.getVolume(); + player.setVolume(0); + expect(player.getVolume()).toEqual(0); + player.setVolume(0.5); + expect(player.getVolume()).toEqual(0.5); + expect(video.volume).toEqual(0.5); + player.setMuted(true); + expect(player.getMuted()).toBe(true); + expect(video.muted).toBe(true); + player.setMuted(false); + expect(player.getMuted()).toBe(false); + expect(video.muted).toBe(false); + expect(player.getVolume()).toEqual(0.5); + expect(video.volume).toEqual(0.5); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + }); + + describe('seek', function() { + // This covers bug #18597152. Completely clearing the buffers after a seek + // can cause the media pipeline in Chrome to get stuck. This seemed to + // happen when certain seek intervals were used. + it('does not lock up on segment boundaries', function(done) { + player.load(source).then(function() { + player.play(); + return delay(1.0); // gets the player out of INIT state + }).then(function() { + player.seek(40.0); // <0.1s before end of segment N (5). + return delay(2.0); + }).then(function() { + player.seek(30.0); // <0.1s before end of segment N-2 (3). + return delay(5.0); + }).then(function() { + // Typically this bug manifests with seeking == true. + expect(video.seeking).toBe(false); + // Typically this bug manifests with readyState == HAVE_METADATA. + expect(video.readyState).not.toBe(HTMLVideoElement.HAVE_METADATA); + expect(video.readyState).not.toBe(HTMLVideoElement.HAVE_NOTHING); + // We can't expect to get all the way to 35.0 unless the seek is + // instantaneous. We use 32.0 because it leaves plenty of wiggle room + // for various delays (including network delay), and because in this + // particular bug, the video gets stuck at exactly the seek time (30). + expect(video.currentTime).toBeGreaterThan(32.0); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + + // This covers bug #18597156. Seeking around without removing any data + // from the buffers can cause the media pipeline in Chrome to manifest gaps + // in the buffered data ranges. Such a gap will move forward as data is + // replaced in buffer, but the gap will never close until the entire range + // has been replaced. It is therefore SourceBufferManager's job to work + // around this peculiar behavior from Chrome's SourceBuffer. If this is + // not done, playback gets "stuck" when the playhead enters such a gap. + it('does not create unclosable gaps in the buffer', function(done) { + player.load(source).then(function() { + player.play(); + return delay(1.0); + }).then(function() { + player.seek(33.0); + return delay(2.0); + }).then(function() { + player.seek(28.0); + return delay(10.0); + }).then(function() { + // We don't expect 38.0 because of the uncertainty of network and other + // delays. This is a safe number which will not cause false failures. + // When this bug manifests, the playhead typically gets stuck around + // 32.9, so we expect that 35.0 is a safe indication that the bug is + // not manifesting. + expect(video.currentTime).toBeGreaterThan(35.0); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + + it('can be used during stream switching', function(done) { + var videoStream; + var DashStream = shaka.dash.DashStream; + + player.load(source).then(function() { + player.play(); + return delay(2.0); + }).then(function() { + videoStream = source.streamsByType_['video']; + expect(videoStream.state_).toBe(DashStream.State_.UPDATING); + + var ok = player.selectVideoTrack(3); // 480p stream + expect(ok).toBe(true); + expect(videoStream.state_).toBe(DashStream.State_.SWITCHING); + + player.seek(30.0); + return delay(10.0); + }).then(function() { + expect(video.currentTime).toBeGreaterThan(35.0); + done(); + }).catch(function(error) { + fail(error); + done(); + }); + }); + }); +}); + diff --git a/spec/segment_index_spec.js b/spec/segment_index_spec.js new file mode 100644 index 0000000000..b738af9b94 --- /dev/null +++ b/spec/segment_index_spec.js @@ -0,0 +1,275 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview segment_index.js unit tests. + */ + +goog.require('shaka.dash.IsobmffSegmentIndexParser'); +goog.require('shaka.dash.SegmentIndex'); +goog.require('shaka.dash.SegmentReference'); +goog.require('shaka.dash.WebmSegmentIndexParser'); +goog.require('shaka.util.PublicPromise'); + +// TODO: Move IsobmffSegmentIndexParser and WebmSegmentIndexParser tests into +// their own respective files. +describe('SegmentIndex', function() { + var sidxData; + var sidxDataWithNonZeroStart; + var webmData; + var cuesData; + + var fetchArrayBuffer = function(url) { + var p = new shaka.util.PublicPromise(); + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function(event) { p.resolve(xhr.response); }; + xhr.send(null); + return p; + }; + + var getSidxData = function() { + // Get the SIDX data if we haven't yet. + // This file contains just the SIDX, which was extracted from an actual MP4 + // file. + if (sidxData) return Promise.resolve(); + return fetchArrayBuffer('assets/car-20120827-87.sidx').then( + function(data) { sidxData = data; }); + }; + + var getSidxDataWithNonZeroStart = function() { + // Get the SIDX data with non-zero start if we haven't yet. + // This file contains just the SIDX, which was extracted from an actual MP4 + // file. It differs from the above SIDX in that it has a non-zero "earliest + // presentation time" field. + if (sidxDataWithNonZeroStart) return Promise.resolve(); + return fetchArrayBuffer('assets/angel_one.sidx').then( + function(data) { sidxDataWithNonZeroStart = data; }); + }; + + var getWebmData = function() { + // Get the WebM header data if we haven't yet. + if (webmData) return Promise.resolve(); + return fetchArrayBuffer('assets/feelings_vp9-20130806-171.webm.headers').then( + function(data) { webmData = data; }); + }; + + var getCuesData = function() { + // Get the WebM cues data if we haven't yet. + if (cuesData) return Promise.resolve(); + return fetchArrayBuffer('assets/feelings_vp9-20130806-171.webm.cues').then( + function(data) { cuesData = data; }); + }; + + beforeEach(function(done) { + var async = [ + getSidxData(), + getSidxDataWithNonZeroStart(), + getWebmData(), + getCuesData() + ]; + + Promise.all(async).then(function() { + done(); + }); + }); + + it('is able to parse an ISO BMFF segment index.', function() { + // The SIDX data was obtained from an MP4 file where the SIDX offset was + // 708. We use this value here since the expected offsets for parsing this + // SIDX are known. + var parser = new shaka.dash.IsobmffSegmentIndexParser(); + var references = parser.parse(null, new DataView(sidxData), 708); + expect(references).not.toBeNull(); + + // These values are rounded. + var expectedStartTimes = [ + 0.000, 5.005, 10.010, 15.015, 20.020, 25.025, 30.030, + 35.035, 40.040, 45.045, 50.050, 55.055, 60.060, 65.065, + 70.070, 75.075, 80.080, 85.085, 90.090, 95.095, 100.100, + 105.105, 110.110, 115.115, 120.120, 125.125, 130.130, 135.135, + 140.140, 145.145, 150.150, 155.155, 160.160, 165.165, 170.170, + 175.175, 180.180 ]; + + var expectedStartBytes = [ + 1184, 727647, 1450907, 2164185, 2605829, 3151190, 3854669, + 4574758, 5224472, 5931518, 6320466, 6801107, 7307570, 7697596, + 8336571, 8820074, 9268630, 9706572, 10137561, 10676341, 11384276, + 12089373, 12708006, 13111442, 13805201, 14361322, 14996946, 15676293, + 16273342, 16812658, 17465320, 18038404, 18634288, 18855907, 19386647, + 19580549, 19700059 ]; + + checkReferences(references, 0, expectedStartTimes, expectedStartBytes); + }); + + it('correctly handles a non-zero start time.', function() { + // The SIDX data was obtained from an MP4 file where the SIDX offset was + // 1322. We use this value here since the expected offsets for parsing this + // SIDX are known. + var parser = new shaka.dash.IsobmffSegmentIndexParser(); + var references = + parser.parse(null, new DataView(sidxDataWithNonZeroStart), 1322); + expect(references).not.toBeNull(); + + // These values are rounded. + var expectedStartTimes = [ + 0.040, 3.040, 6.040, 9.040, 11.780, 14.780, 17.460, + 20.460, 23.460, 26.460, 29.460, 32.460, 35.460, 38.460, + 41.460, 44.460, 47.460, 50.460, 52.860, 55.860 ]; + + var expectedStartBytes = [ + 1594, 1175673, 1417937, 1665835, 1973789, 2294769, 2490199, + 2671008, 2954930, 3371950, 3778589, 4073258, 4527374, 5033136, + 5532306, 5788871, 6025088, 6313961, 6642589, 6993868 ]; + + checkReferences(references, 0, expectedStartTimes, expectedStartBytes); + }); + + it('is able to parse a WebM segment index.', function() { + var parser = new shaka.dash.WebmSegmentIndexParser(); + var references = + parser.parse(new DataView(webmData), new DataView(cuesData), 0); + expect(references).not.toBeNull(); + + // These values are rounded. + var expectedStartTimes = [ + 0.000, 10.012, 20.026, 30.048, 40.067, 50.081, 60.100, + 70.111, 80.116, 90.133, 100.136, 110.137, 120.156, 130.159 ]; + + var expectedStartBytes = [ + 4687, 144903, 297659, 459957, 618640, 773028, 924089, + 1069119, 1226240, 1387394, 1545708, 1699983, 1859342, 2009816 ]; + + checkReferences(references, 0, expectedStartTimes, expectedStartBytes); + }); + + describe('getRangeForInterval()', function() { + var index; + + beforeEach(function() { + var parser = new shaka.dash.WebmSegmentIndexParser(); + var references = + parser.parse(new DataView(webmData), new DataView(cuesData), 0); + expect(references).not.toBeNull(); + + index = new shaka.dash.SegmentIndex(references); + }); + + it('can handle a regular interval.', function() { + var range = index.getRangeForInterval(31, 40); + + // These values are rounded. + var expectedStartTimes = [30.048, 40.067, 50.081, 60.100, 70.111]; + var expectedStartBytes = [459957, 618640, 773028, 924089, 1069119]; + + checkReferences( + range.references, 3, expectedStartTimes, expectedStartBytes); + }); + + it('can handle an interval starting at the first segment.', function() { + var range = index.getRangeForInterval(0, 40); + + // These values are rounded. + var expectedStartTimes = [0.000, 10.012, 20.026, 30.048]; + var expectedStartBytes = [4687, 144903, 297659, 459957]; + + checkReferences( + range.references, 0, expectedStartTimes, expectedStartBytes); + }); + + it('can handle an interval starting before the first segment', function() { + var range = index.getRangeForInterval(-10, 21); + + // These values are rounded. + var expectedStartTimes = [0.000, 10.012]; + var expectedStartBytes = [4687, 144903]; + + checkReferences( + range.references, 0, expectedStartTimes, expectedStartBytes); + }); + + it('can handle an interval starting at the last segment.', function() { + var range = index.getRangeForInterval(130.159, 10); + + // These values are rounded. + var expectedStartTimes = [130.159]; + var expectedStartBytes = [2009816]; + + checkReferences( + range.references, 13, expectedStartTimes, expectedStartBytes); + }); + + it('can handle an interval starting after the last segment.', function() { + var range = index.getRangeForInterval(150, 10); + + // These values are rounded. + var expectedStartTimes = [130.159]; + var expectedStartBytes = [2009816]; + + checkReferences( + range.references, 13, expectedStartTimes, expectedStartBytes); + }); + + it('can handle an interval ending with a null time.', function() { + var url = new goog.Uri('http://example.com'); + + var references = [ + new shaka.dash.SegmentReference(0, 0, 1, 0, 5, url), + new shaka.dash.SegmentReference(1, 1, 2, 6, 9, url), + new shaka.dash.SegmentReference(2, 2, null, 10, null, url) ]; + + var index2 = new shaka.dash.SegmentIndex(references); + var range = index2.getRangeForInterval(0, 2); + + var expectedStartTimes = [0, 1, 2]; + var expectedStartBytes = [0, 6, 10]; + + checkReferences( + range.references, 0, expectedStartTimes, expectedStartBytes); + + range = index2.getRangeForInterval(0, 3); + + expectedStartTimes = [0, 1, 2]; + expectedStartBytes = [0, 6, 10]; + + checkReferences( + range.references, 0, expectedStartTimes, expectedStartBytes); + }); + + it('can handle no segments.', function() { + index = new shaka.dash.SegmentIndex([]); + var range = index.getRangeForInterval(31, 40); + expect(range).toBeNull(); + }); + }); + + checkReferences = function( + references, expectedFirstIndex, expectedStartTimes, expectedStartBytes) { + console.assert(expectedStartTimes.length == expectedStartBytes.length); + expect(references.length).toBe(expectedStartTimes.length); + for (var i = 0; i < expectedStartTimes.length; i++) { + var ref = references[i]; + expect(ref.index).toBe(expectedFirstIndex + i); + expect(ref.startTime.toFixed(3)).toBe(expectedStartTimes[i].toFixed(3)); + expect(ref.startByte).toBe(expectedStartBytes[i]); + + if (i < expectedStartTimes.length - 1) { + expect(ref.endTime.toFixed(3)).toBe(expectedStartTimes[i + 1].toFixed(3)); + expect(ref.endByte).toBe(expectedStartBytes[i + 1] - 1); + } + } + } +}); + diff --git a/spec/util.js b/spec/util.js new file mode 100644 index 0000000000..f622be6b70 --- /dev/null +++ b/spec/util.js @@ -0,0 +1,234 @@ +/** + * Copyright 2014 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @fileoverview Utility function for unit tests. + */ + +goog.require('shaka.asserts'); +goog.require('shaka.util.PublicPromise'); + + +var customMatchers = {}; + + +/** + * Creates a new Jasmine matcher object for comparing two Uint8Array objects. + * + * @param {Object} util + * @param {Object} customEqualityTesters + * + * @return {Object} A Jasmine matcher object. + */ +customMatchers.toMatchUint8Array = function(util, customEqualityTesters) { + var matcher = {}; + + matcher.compare = function(actual, opt_expected) { + var expected = opt_expected || new Uint8Array(); + + var result = {}; + + if (actual.length != expected.length) { + result.pass = false; + return result; + } + + for (var i = 0; i < expected.length; i++) { + if (actual[i] == expected[i]) + continue; + result.pass = false; + return result; + } + + result.pass = true; + return result; + }; + + return matcher; +}; + + +/** + * Creates a new Jasmine matcher object for comparing two range object. A range + * object is an object of type {{ start: number, end: number }}. + * + * @param {Object} util + * @param {Object} customEqualityTesters + * + * @return {Object} A Jasmine matcher object. + */ +customMatchers.toMatchRange = function(util, customEqualityTesters) { + var matcher = {}; + + matcher.compare = function(actual, opt_expected) { + var expected = opt_expected || { begin: 0, end: 0 }; + + var result = {}; + + if ((actual == null && expected != null) || + (actual != null && expected == null) || + (actual.begin != expected.begin) || (actual.end != expected.end)) { + result.pass = false; + return result; + } + + result.pass = true; + return result; + }; + + return matcher; +}; + + +/** + * Adds fake event handling support to a Jasmine FakeXMLHttpRequest object. + * + * @param {FakeXMLHttpRequest} xhr The FakeXMLHttpRequest object. + */ +function mockXMLHttpRequestEventHandling(xhr) { + // Jasmine's FakeXMLHttpRequest class uses the attribute "response" as a + // method to set the fake response. Our library uses it (correctly) to get + // the response itself. We "fix" Jasmine's overloaded abuse of this by + // renaming this method to "fakeResponse" and adding a shim to handle + // the "response" field. + // + // Since Jasmine ignores the setting of "response", we will map it to + // "responseText" here, and map it back again in the "onload" spy below. + // + // Note that in a real request, with "responseType" set to "arraybuffer", + // "responseText" throws DOMException. So our library does the right thing, + // and Jasmine's fake is deficient. + if (!xhr.fakeResponse) { + var originalResponseMethod = xhr.response; + console.assert(originalResponseMethod && originalResponseMethod.bind); + xhr.response = null; + xhr.fakeResponse = function(fields) { + if (fields.hasOwnProperty('response')) { + fields['responseText'] = fields['response']; + } + return originalResponseMethod.call(xhr, fields); + }; + } + + // Mock out onload(). + var onload = xhr.onload; + spyOn(xhr, 'onload').and.callFake(function() { + var fakeXMLHttpProgressEvent = { + 'target': xhr + }; + // After each load, overwrite "response" with "responseText". + xhr.response = xhr.responseText; + onload(fakeXMLHttpProgressEvent); + }); + + // Mock out onerror(). + var onerror = xhr.onerror; + spyOn(xhr, 'onerror').and.callFake(function() { + var fakeXMLHttpProgressEvent = { + 'target': xhr + }; + onerror(fakeXMLHttpProgressEvent); + }); +} + + +/** + * Returns a Promise which is resolved after the given delay. + * + * @param {number} seconds The delay in seconds. + */ +function delay(seconds) { + var p = new shaka.util.PublicPromise; + setTimeout(p.resolve, seconds * 1000.0); + return p; +} + + +/** + * Replace shaka.asserts and console.assert with a version which hooks into + * jasmine. This converts all failed assertions into failed tests. + */ +var assertsToFailures = { + uninstall: function() { + shaka.asserts = assertsToFailures.originalShakaAsserts_; + console.assert = assertsToFailures.originalConsoleAssert_; + }, + + install: function() { + assertsToFailures.originalShakaAsserts_ = shaka.asserts; + assertsToFailures.originalConsoleAssert_ = console.assert; + + var realAssert = console.assert.bind(console); + + var jasmineAssert = function(condition, opt_message) { + realAssert(condition, opt_message); + if (!condition) { + var message = opt_message || 'Assertion failed.'; + try { + throw new Error(message); + } catch (exception) { + fail(message); + } + } + }; + + shaka.asserts = { + assert: function(condition, opt_message) { + jasmineAssert(condition, opt_message); + }, + notImplemented: function() { + jasmineAssert(false, 'Not implemented.'); + }, + unreachable: function() { + jasmineAssert(false, 'Unreachable reached.'); + } + }; + + console.assert = jasmineAssert; + } +}; + + +/** + * Called to interpret ContentProtection elements from an MPD. + * @param {!shaka.dash.mpd.ContentProtection} contentProtection + * @return {shaka.player.DrmSchemeInfo} or null if the element is not supported. + */ +function interpretContentProtection(contentProtection) { + var StringUtils = shaka.util.StringUtils; + + // This is the only scheme used in integration tests at the moment. + if (contentProtection.schemeIdUri == 'com.youtube.clearkey') { + var child = contentProtection.children[0]; + var keyid = StringUtils.fromHex(child.getAttribute('keyid')); + var key = StringUtils.fromHex(child.getAttribute('key')); + var keyObj = { + kty: 'oct', + kid: StringUtils.toBase64(keyid, false), + k: StringUtils.toBase64(key, false) + }; + var jwkSet = {keys: [keyObj]}; + var license = JSON.stringify(jwkSet); + var initData = { + initData: StringUtils.toUint8Array(keyid), + initDataType: 'cenc' + }; + var licenseServerUrl = 'data:application/json;base64,' + + StringUtils.toBase64(license); + return new shaka.player.DrmSchemeInfo( + 'org.w3.clearkey', false, licenseServerUrl, false, initData, null); + } + + return null; +} diff --git a/spec_runner.html b/spec_runner.html new file mode 100644 index 0000000000..d76baa6869 --- /dev/null +++ b/spec_runner.html @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/support.html b/support.html new file mode 100644 index 0000000000..16647faa10 --- /dev/null +++ b/support.html @@ -0,0 +1,110 @@ + + + + + + + + Testing support... found: + + diff --git a/third_party/SUMMARY.txt b/third_party/SUMMARY.txt new file mode 100644 index 0000000000..92c768e7b3 --- /dev/null +++ b/third_party/SUMMARY.txt @@ -0,0 +1,44 @@ +closure/compiler.jar + The closure compiler, by Google. + Apache v2.0 license. + https://github.com/google/closure-compiler + +closure/goog + The closure library (modified), by Google. + Apache v2.0 license. + https://github.com/google/closure-library + +closure/deps + The closure dependency generator, part of the closure library, by Google. + Apache v2.0 license. + https://github.com/google/closure-library + +gjslint/closure_linter-2.3.13 + The closure JavaScript linter, by Google. + Apache v2.0 license. + https://code.google.com/p/closure-linter/ + +gjslint/python-gflags-2.0 + A python command-line parser, needed by the closure linter, by Google. + BSD-style license (3-clause). + https://code.google.com/p/python-gflags/ + +jasmine + The Jasmine JS testing framework, v2.1.3, by Pivotal Labs. + MIT license. + https://github.com/pivotal/jasmine + +jasmine/lib/jasmine-ajax-trunk + The Jasmine fake AJAX library, by Pivotal Labs. + MIT license. + https://github.com/pivotal/jasmine-ajax + +blanket_jasmine + Blanket JS coverage library (+ Jasmine adapter), v1.1.5, by Alex Seville. + MIT license. + https://github.com/alex-seville/blanket + +jsdoc + JSDoc 3 documentation generator (modified), by Michael Matthews. + Apache v2.0 license. + https://github.com/jsdoc3/jsdoc diff --git a/third_party/blanket_jasmine/LICENSE.txt b/third_party/blanket_jasmine/LICENSE.txt new file mode 100644 index 0000000000..52a244555e --- /dev/null +++ b/third_party/blanket_jasmine/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2013 Alex Seville + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/third_party/blanket_jasmine/blanket_jasmine.js b/third_party/blanket_jasmine/blanket_jasmine.js new file mode 100644 index 0000000000..72fcb7f267 --- /dev/null +++ b/third_party/blanket_jasmine/blanket_jasmine.js @@ -0,0 +1,5309 @@ +/*! blanket - v1.1.5 */ + +(function(define){ +/* + Copyright (C) 2013 Ariya Hidayat + Copyright (C) 2013 Thaddee Tyl + Copyright (C) 2013 Mathias Bynens + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2012 Mathias Bynens + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Kris Kowal + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Arpad Borsos + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint bitwise:true plusplus:true */ +/*global esprima:true, define:true, exports:true, window: true, +throwErrorTolerant: true, +throwError: true, generateStatement: true, peek: true, +parseAssignmentExpression: true, parseBlock: true, parseExpression: true, +parseFunctionDeclaration: true, parseFunctionExpression: true, +parseFunctionSourceElements: true, parseVariableIdentifier: true, +parseLeftHandSideExpression: true, +parseUnaryExpression: true, +parseStatement: true, parseSourceElement: true */ + +(function (root, factory) { + 'use strict'; + + // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, + // Rhino, and plain browser loading. + + /* istanbul ignore next */ + if (typeof define === 'function' && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== 'undefined') { + factory(exports); + } else { + factory((root.esprima = {})); + } +}(this, function (exports) { + 'use strict'; + + var Token, + TokenName, + FnExprTokens, + Syntax, + PropertyKind, + Messages, + Regex, + SyntaxTreeDelegate, + source, + strict, + index, + lineNumber, + lineStart, + length, + delegate, + lookahead, + state, + extra; + + Token = { + BooleanLiteral: 1, + EOF: 2, + Identifier: 3, + Keyword: 4, + NullLiteral: 5, + NumericLiteral: 6, + Punctuator: 7, + StringLiteral: 8, + RegularExpression: 9 + }; + + TokenName = {}; + TokenName[Token.BooleanLiteral] = 'Boolean'; + TokenName[Token.EOF] = ''; + TokenName[Token.Identifier] = 'Identifier'; + TokenName[Token.Keyword] = 'Keyword'; + TokenName[Token.NullLiteral] = 'Null'; + TokenName[Token.NumericLiteral] = 'Numeric'; + TokenName[Token.Punctuator] = 'Punctuator'; + TokenName[Token.StringLiteral] = 'String'; + TokenName[Token.RegularExpression] = 'RegularExpression'; + + // A function following one of those tokens is an expression. + FnExprTokens = ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new', + 'return', 'case', 'delete', 'throw', 'void', + // assignment operators + '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '>>>=', + '&=', '|=', '^=', ',', + // binary/unary operators + '+', '-', '*', '/', '%', '++', '--', '<<', '>>', '>>>', '&', + '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=', + '<=', '<', '>', '!=', '!==']; + + Syntax = { + AssignmentExpression: 'AssignmentExpression', + ArrayExpression: 'ArrayExpression', + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DoWhileStatement: 'DoWhileStatement', + DebuggerStatement: 'DebuggerStatement', + EmptyStatement: 'EmptyStatement', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForInStatement: 'ForInStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + Program: 'Program', + Property: 'Property', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SwitchStatement: 'SwitchStatement', + SwitchCase: 'SwitchCase', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement' + }; + + PropertyKind = { + Data: 1, + Get: 2, + Set: 4 + }; + + // Error messages should be identical to V8. + Messages = { + UnexpectedToken: 'Unexpected token %0', + UnexpectedNumber: 'Unexpected number', + UnexpectedString: 'Unexpected string', + UnexpectedIdentifier: 'Unexpected identifier', + UnexpectedReserved: 'Unexpected reserved word', + UnexpectedEOS: 'Unexpected end of input', + NewlineAfterThrow: 'Illegal newline after throw', + InvalidRegExp: 'Invalid regular expression', + UnterminatedRegExp: 'Invalid regular expression: missing /', + InvalidLHSInAssignment: 'Invalid left-hand side in assignment', + InvalidLHSInForIn: 'Invalid left-hand side in for-in', + MultipleDefaultsInSwitch: 'More than one default clause in switch statement', + NoCatchOrFinally: 'Missing catch or finally after try', + UnknownLabel: 'Undefined label \'%0\'', + Redeclaration: '%0 \'%1\' has already been declared', + IllegalContinue: 'Illegal continue statement', + IllegalBreak: 'Illegal break statement', + IllegalReturn: 'Illegal return statement', + StrictModeWith: 'Strict mode code may not include a with statement', + StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', + StrictVarName: 'Variable name may not be eval or arguments in strict mode', + StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', + StrictParamDupe: 'Strict mode function may not have duplicate parameter names', + StrictFunctionName: 'Function name may not be eval or arguments in strict mode', + StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', + StrictDelete: 'Delete of an unqualified identifier in strict mode.', + StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', + AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', + AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', + StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', + StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', + StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', + StrictReservedWord: 'Use of future reserved word in strict mode' + }; + + // See also tools/generate-unicode-regex.py. + Regex = { + NonAsciiIdentifierStart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'), + NonAsciiIdentifierPart: new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]') + }; + + // Ensure the condition is true, otherwise throw an error. + // This is only to have a better contract semantic, i.e. another safety net + // to catch a logic error. The condition shall be fulfilled in normal case. + // Do NOT use this to enforce a certain condition on any user input. + + function assert(condition, message) { + /* istanbul ignore if */ + if (!condition) { + throw new Error('ASSERT: ' + message); + } + } + + function isDecimalDigit(ch) { + return (ch >= 48 && ch <= 57); // 0..9 + } + + function isHexDigit(ch) { + return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; + } + + function isOctalDigit(ch) { + return '01234567'.indexOf(ch) >= 0; + } + + + // 7.2 White Space + + function isWhiteSpace(ch) { + return (ch === 0x20) || (ch === 0x09) || (ch === 0x0B) || (ch === 0x0C) || (ch === 0xA0) || + (ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0); + } + + // 7.3 Line Terminators + + function isLineTerminator(ch) { + return (ch === 0x0A) || (ch === 0x0D) || (ch === 0x2028) || (ch === 0x2029); + } + + // 7.6 Identifier Names and Identifiers + + function isIdentifierStart(ch) { + return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) + (ch >= 0x41 && ch <= 0x5A) || // A..Z + (ch >= 0x61 && ch <= 0x7A) || // a..z + (ch === 0x5C) || // \ (backslash) + ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); + } + + function isIdentifierPart(ch) { + return (ch === 0x24) || (ch === 0x5F) || // $ (dollar) and _ (underscore) + (ch >= 0x41 && ch <= 0x5A) || // A..Z + (ch >= 0x61 && ch <= 0x7A) || // a..z + (ch >= 0x30 && ch <= 0x39) || // 0..9 + (ch === 0x5C) || // \ (backslash) + ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); + } + + // 7.6.1.2 Future Reserved Words + + function isFutureReservedWord(id) { + switch (id) { + case 'class': + case 'enum': + case 'export': + case 'extends': + case 'import': + case 'super': + return true; + default: + return false; + } + } + + function isStrictModeReservedWord(id) { + switch (id) { + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'yield': + case 'let': + return true; + default: + return false; + } + } + + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } + + // 7.6.1.1 Keywords + + function isKeyword(id) { + if (strict && isStrictModeReservedWord(id)) { + return true; + } + + // 'const' is specialized as Keyword in V8. + // 'yield' and 'let' are for compatiblity with SpiderMonkey and ES.next. + // Some others are from future reserved words. + + switch (id.length) { + case 2: + return (id === 'if') || (id === 'in') || (id === 'do'); + case 3: + return (id === 'var') || (id === 'for') || (id === 'new') || + (id === 'try') || (id === 'let'); + case 4: + return (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum'); + case 5: + return (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || (id === 'yield') || + (id === 'class') || (id === 'super'); + case 6: + return (id === 'return') || (id === 'typeof') || (id === 'delete') || + (id === 'switch') || (id === 'export') || (id === 'import'); + case 7: + return (id === 'default') || (id === 'finally') || (id === 'extends'); + case 8: + return (id === 'function') || (id === 'continue') || (id === 'debugger'); + case 10: + return (id === 'instanceof'); + default: + return false; + } + } + + // 7.4 Comments + + function addComment(type, value, start, end, loc) { + var comment, attacher; + + assert(typeof start === 'number', 'Comment must have valid position'); + + // Because the way the actual token is scanned, often the comments + // (if any) are skipped twice during the lexical analysis. + // Thus, we need to skip adding a comment if the comment array already + // handled it. + if (state.lastCommentStart >= start) { + return; + } + state.lastCommentStart = start; + + comment = { + type: type, + value: value + }; + if (extra.range) { + comment.range = [start, end]; + } + if (extra.loc) { + comment.loc = loc; + } + extra.comments.push(comment); + if (extra.attachComment) { + extra.leadingComments.push(comment); + extra.trailingComments.push(comment); + } + } + + function skipSingleLineComment(offset) { + var start, loc, ch, comment; + + start = index - offset; + loc = { + start: { + line: lineNumber, + column: index - lineStart - offset + } + }; + + while (index < length) { + ch = source.charCodeAt(index); + ++index; + if (isLineTerminator(ch)) { + if (extra.comments) { + comment = source.slice(start + offset, index - 1); + loc.end = { + line: lineNumber, + column: index - lineStart - 1 + }; + addComment('Line', comment, start, index - 1, loc); + } + if (ch === 13 && source.charCodeAt(index) === 10) { + ++index; + } + ++lineNumber; + lineStart = index; + return; + } + } + + if (extra.comments) { + comment = source.slice(start + offset, index); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Line', comment, start, index, loc); + } + } + + function skipMultiLineComment() { + var start, loc, ch, comment; + + if (extra.comments) { + start = index - 2; + loc = { + start: { + line: lineNumber, + column: index - lineStart - 2 + } + }; + } + + while (index < length) { + ch = source.charCodeAt(index); + if (isLineTerminator(ch)) { + if (ch === 0x0D && source.charCodeAt(index + 1) === 0x0A) { + ++index; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else if (ch === 0x2A) { + // Block comment ends with '*/'. + if (source.charCodeAt(index + 1) === 0x2F) { + ++index; + ++index; + if (extra.comments) { + comment = source.slice(start + 2, index - 2); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Block', comment, start, index, loc); + } + return; + } + ++index; + } else { + ++index; + } + } + + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + function skipComment() { + var ch, start; + + start = (index === 0); + while (index < length) { + ch = source.charCodeAt(index); + + if (isWhiteSpace(ch)) { + ++index; + } else if (isLineTerminator(ch)) { + ++index; + if (ch === 0x0D && source.charCodeAt(index) === 0x0A) { + ++index; + } + ++lineNumber; + lineStart = index; + start = true; + } else if (ch === 0x2F) { // U+002F is '/' + ch = source.charCodeAt(index + 1); + if (ch === 0x2F) { + ++index; + ++index; + skipSingleLineComment(2); + start = true; + } else if (ch === 0x2A) { // U+002A is '*' + ++index; + ++index; + skipMultiLineComment(); + } else { + break; + } + } else if (start && ch === 0x2D) { // U+002D is '-' + // U+003E is '>' + if ((source.charCodeAt(index + 1) === 0x2D) && (source.charCodeAt(index + 2) === 0x3E)) { + // '-->' is a single-line comment + index += 3; + skipSingleLineComment(3); + } else { + break; + } + } else if (ch === 0x3C) { // U+003C is '<' + if (source.slice(index + 1, index + 4) === '!--') { + ++index; // `<` + ++index; // `!` + ++index; // `-` + ++index; // `-` + skipSingleLineComment(4); + } else { + break; + } + } else { + break; + } + } + } + + function scanHexEscape(prefix) { + var i, len, ch, code = 0; + + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && isHexDigit(source[index])) { + ch = source[index++]; + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); + } + + function getEscapedIdentifier() { + var ch, id; + + ch = source.charCodeAt(index++); + id = String.fromCharCode(ch); + + // '\u' (U+005C, U+0075) denotes an escaped character. + if (ch === 0x5C) { + if (source.charCodeAt(index) !== 0x75) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + ++index; + ch = scanHexEscape('u'); + if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + id = ch; + } + + while (index < length) { + ch = source.charCodeAt(index); + if (!isIdentifierPart(ch)) { + break; + } + ++index; + id += String.fromCharCode(ch); + + // '\u' (U+005C, U+0075) denotes an escaped character. + if (ch === 0x5C) { + id = id.substr(0, id.length - 1); + if (source.charCodeAt(index) !== 0x75) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + ++index; + ch = scanHexEscape('u'); + if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + id += ch; + } + } + + return id; + } + + function getIdentifier() { + var start, ch; + + start = index++; + while (index < length) { + ch = source.charCodeAt(index); + if (ch === 0x5C) { + // Blackslash (U+005C) marks Unicode escape sequence. + index = start; + return getEscapedIdentifier(); + } + if (isIdentifierPart(ch)) { + ++index; + } else { + break; + } + } + + return source.slice(start, index); + } + + function scanIdentifier() { + var start, id, type; + + start = index; + + // Backslash (U+005C) starts an escaped character. + id = (source.charCodeAt(index) === 0x5C) ? getEscapedIdentifier() : getIdentifier(); + + // There is no keyword or literal with only one character. + // Thus, it must be an identifier. + if (id.length === 1) { + type = Token.Identifier; + } else if (isKeyword(id)) { + type = Token.Keyword; + } else if (id === 'null') { + type = Token.NullLiteral; + } else if (id === 'true' || id === 'false') { + type = Token.BooleanLiteral; + } else { + type = Token.Identifier; + } + + return { + type: type, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + + // 7.7 Punctuators + + function scanPunctuator() { + var start = index, + code = source.charCodeAt(index), + code2, + ch1 = source[index], + ch2, + ch3, + ch4; + + switch (code) { + + // Check for most common single-character punctuators. + case 0x2E: // . dot + case 0x28: // ( open bracket + case 0x29: // ) close bracket + case 0x3B: // ; semicolon + case 0x2C: // , comma + case 0x7B: // { open curly brace + case 0x7D: // } close curly brace + case 0x5B: // [ + case 0x5D: // ] + case 0x3A: // : + case 0x3F: // ? + case 0x7E: // ~ + ++index; + if (extra.tokenize) { + if (code === 0x28) { + extra.openParenToken = extra.tokens.length; + } else if (code === 0x7B) { + extra.openCurlyToken = extra.tokens.length; + } + } + return { + type: Token.Punctuator, + value: String.fromCharCode(code), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + + default: + code2 = source.charCodeAt(index + 1); + + // '=' (U+003D) marks an assignment or comparison operator. + if (code2 === 0x3D) { + switch (code) { + case 0x2B: // + + case 0x2D: // - + case 0x2F: // / + case 0x3C: // < + case 0x3E: // > + case 0x5E: // ^ + case 0x7C: // | + case 0x25: // % + case 0x26: // & + case 0x2A: // * + index += 2; + return { + type: Token.Punctuator, + value: String.fromCharCode(code) + String.fromCharCode(code2), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + + case 0x21: // ! + case 0x3D: // = + index += 2; + + // !== and === + if (source.charCodeAt(index) === 0x3D) { + ++index; + } + return { + type: Token.Punctuator, + value: source.slice(start, index), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + } + } + + // 4-character punctuator: >>>= + + ch4 = source.substr(index, 4); + + if (ch4 === '>>>=') { + index += 4; + return { + type: Token.Punctuator, + value: ch4, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + // 3-character punctuators: === !== >>> <<= >>= + + ch3 = ch4.substr(0, 3); + + if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') { + index += 3; + return { + type: Token.Punctuator, + value: ch3, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + // Other 2-character punctuators: ++ -- << >> && || + ch2 = ch3.substr(0, 2); + + if ((ch1 === ch2[1] && ('+-<>&|'.indexOf(ch1) >= 0)) || ch2 === '=>') { + index += 2; + return { + type: Token.Punctuator, + value: ch2, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + // 1-character punctuators: < > = ! + - * % & | ^ / + if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + // 7.8.3 Numeric Literals + + function scanHexLiteral(start) { + var number = ''; + + while (index < length) { + if (!isHexDigit(source[index])) { + break; + } + number += source[index++]; + } + + if (number.length === 0) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + if (isIdentifierStart(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.NumericLiteral, + value: parseInt('0x' + number, 16), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + function scanOctalLiteral(start) { + var number = '0' + source[index++]; + while (index < length) { + if (!isOctalDigit(source[index])) { + break; + } + number += source[index++]; + } + + if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.NumericLiteral, + value: parseInt(number, 8), + octal: true, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + function scanNumericLiteral() { + var number, start, ch; + + ch = source[index]; + assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), + 'Numeric literal must start with a decimal digit or a decimal point'); + + start = index; + number = ''; + if (ch !== '.') { + number = source[index++]; + ch = source[index]; + + // Hex number starts with '0x'. + // Octal number starts with '0'. + if (number === '0') { + if (ch === 'x' || ch === 'X') { + ++index; + return scanHexLiteral(start); + } + if (isOctalDigit(ch)) { + return scanOctalLiteral(start); + } + + // decimal number starts with '0' such as '09' is illegal. + if (ch && isDecimalDigit(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; + } + ch = source[index]; + } + + if (ch === '.') { + number += source[index++]; + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; + } + ch = source[index]; + } + + if (ch === 'e' || ch === 'E') { + number += source[index++]; + + ch = source[index]; + if (ch === '+' || ch === '-') { + number += source[index++]; + } + if (isDecimalDigit(source.charCodeAt(index))) { + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; + } + } else { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + if (isIdentifierStart(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.NumericLiteral, + value: parseFloat(number), + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + // 7.8.4 String Literals + + function scanStringLiteral() { + var str = '', quote, start, ch, code, unescaped, restore, octal = false, startLineNumber, startLineStart; + startLineNumber = lineNumber; + startLineStart = lineStart; + + quote = source[index]; + assert((quote === '\'' || quote === '"'), + 'String literal must starts with a quote'); + + start = index; + ++index; + + while (index < length) { + ch = source[index++]; + + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = source[index++]; + if (!ch || !isLineTerminator(ch.charCodeAt(0))) { + switch (ch) { + case 'u': + case 'x': + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + break; + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\x0B'; + break; + + default: + if (isOctalDigit(ch)) { + code = '01234567'.indexOf(ch); + + // \0 is not octal escape sequence + if (code !== 0) { + octal = true; + } + + if (index < length && isOctalDigit(source[index])) { + octal = true; + code = code * 8 + '01234567'.indexOf(source[index++]); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + isOctalDigit(source[index])) { + code = code * 8 + '01234567'.indexOf(source[index++]); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } + } else { + ++lineNumber; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + lineStart = index; + } + } else if (isLineTerminator(ch.charCodeAt(0))) { + break; + } else { + str += ch; + } + } + + if (quote !== '') { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.StringLiteral, + value: str, + octal: octal, + startLineNumber: startLineNumber, + startLineStart: startLineStart, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + function testRegExp(pattern, flags) { + var value; + try { + value = new RegExp(pattern, flags); + } catch (e) { + throwError({}, Messages.InvalidRegExp); + } + return value; + } + + function scanRegExpBody() { + var ch, str, classMarker, terminated, body; + + ch = source[index]; + assert(ch === '/', 'Regular expression literal must start with a slash'); + str = source[index++]; + + classMarker = false; + terminated = false; + while (index < length) { + ch = source[index++]; + str += ch; + if (ch === '\\') { + ch = source[index++]; + // ECMA-262 7.8.5 + if (isLineTerminator(ch.charCodeAt(0))) { + throwError({}, Messages.UnterminatedRegExp); + } + str += ch; + } else if (isLineTerminator(ch.charCodeAt(0))) { + throwError({}, Messages.UnterminatedRegExp); + } else if (classMarker) { + if (ch === ']') { + classMarker = false; + } + } else { + if (ch === '/') { + terminated = true; + break; + } else if (ch === '[') { + classMarker = true; + } + } + } + + if (!terminated) { + throwError({}, Messages.UnterminatedRegExp); + } + + // Exclude leading and trailing slash. + body = str.substr(1, str.length - 2); + return { + value: body, + literal: str + }; + } + + function scanRegExpFlags() { + var ch, str, flags, restore; + + str = ''; + flags = ''; + while (index < length) { + ch = source[index]; + if (!isIdentifierPart(ch.charCodeAt(0))) { + break; + } + + ++index; + if (ch === '\\' && index < length) { + ch = source[index]; + if (ch === 'u') { + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + flags += ch; + for (str += '\\u'; restore < index; ++restore) { + str += source[restore]; + } + } else { + index = restore; + flags += 'u'; + str += '\\u'; + } + throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); + } else { + str += '\\'; + throwErrorTolerant({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + flags += ch; + str += ch; + } + } + + return { + value: flags, + literal: str + }; + } + + function scanRegExp() { + var start, body, flags, pattern, value; + + lookahead = null; + skipComment(); + start = index; + + body = scanRegExpBody(); + flags = scanRegExpFlags(); + value = testRegExp(body.value, flags.value); + + if (extra.tokenize) { + return { + type: Token.RegularExpression, + value: value, + lineNumber: lineNumber, + lineStart: lineStart, + start: start, + end: index + }; + } + + return { + literal: body.literal + flags.literal, + value: value, + start: start, + end: index + }; + } + + function collectRegex() { + var pos, loc, regex, token; + + skipComment(); + + pos = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + + regex = scanRegExp(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + /* istanbul ignore next */ + if (!extra.tokenize) { + // Pop the previous token, which is likely '/' or '/=' + if (extra.tokens.length > 0) { + token = extra.tokens[extra.tokens.length - 1]; + if (token.range[0] === pos && token.type === 'Punctuator') { + if (token.value === '/' || token.value === '/=') { + extra.tokens.pop(); + } + } + } + + extra.tokens.push({ + type: 'RegularExpression', + value: regex.literal, + range: [pos, index], + loc: loc + }); + } + + return regex; + } + + function isIdentifierName(token) { + return token.type === Token.Identifier || + token.type === Token.Keyword || + token.type === Token.BooleanLiteral || + token.type === Token.NullLiteral; + } + + function advanceSlash() { + var prevToken, + checkToken; + // Using the following algorithm: + // https://github.com/mozilla/sweet.js/wiki/design + prevToken = extra.tokens[extra.tokens.length - 1]; + if (!prevToken) { + // Nothing before that: it cannot be a division. + return collectRegex(); + } + if (prevToken.type === 'Punctuator') { + if (prevToken.value === ']') { + return scanPunctuator(); + } + if (prevToken.value === ')') { + checkToken = extra.tokens[extra.openParenToken - 1]; + if (checkToken && + checkToken.type === 'Keyword' && + (checkToken.value === 'if' || + checkToken.value === 'while' || + checkToken.value === 'for' || + checkToken.value === 'with')) { + return collectRegex(); + } + return scanPunctuator(); + } + if (prevToken.value === '}') { + // Dividing a function by anything makes little sense, + // but we have to check for that. + if (extra.tokens[extra.openCurlyToken - 3] && + extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') { + // Anonymous function. + checkToken = extra.tokens[extra.openCurlyToken - 4]; + if (!checkToken) { + return scanPunctuator(); + } + } else if (extra.tokens[extra.openCurlyToken - 4] && + extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') { + // Named function. + checkToken = extra.tokens[extra.openCurlyToken - 5]; + if (!checkToken) { + return collectRegex(); + } + } else { + return scanPunctuator(); + } + // checkToken determines whether the function is + // a declaration or an expression. + if (FnExprTokens.indexOf(checkToken.value) >= 0) { + // It is an expression. + return scanPunctuator(); + } + // It is a declaration. + return collectRegex(); + } + return collectRegex(); + } + if (prevToken.type === 'Keyword') { + return collectRegex(); + } + return scanPunctuator(); + } + + function advance() { + var ch; + + skipComment(); + + if (index >= length) { + return { + type: Token.EOF, + lineNumber: lineNumber, + lineStart: lineStart, + start: index, + end: index + }; + } + + ch = source.charCodeAt(index); + + if (isIdentifierStart(ch)) { + return scanIdentifier(); + } + + // Very common: ( and ) and ; + if (ch === 0x28 || ch === 0x29 || ch === 0x3B) { + return scanPunctuator(); + } + + // String literal starts with single quote (U+0027) or double quote (U+0022). + if (ch === 0x27 || ch === 0x22) { + return scanStringLiteral(); + } + + + // Dot (.) U+002E can also start a floating-point number, hence the need + // to check the next character. + if (ch === 0x2E) { + if (isDecimalDigit(source.charCodeAt(index + 1))) { + return scanNumericLiteral(); + } + return scanPunctuator(); + } + + if (isDecimalDigit(ch)) { + return scanNumericLiteral(); + } + + // Slash (/) U+002F can also start a regex. + if (extra.tokenize && ch === 0x2F) { + return advanceSlash(); + } + + return scanPunctuator(); + } + + function collectToken() { + var loc, token, range, value; + + skipComment(); + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + + token = advance(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + if (token.type !== Token.EOF) { + value = source.slice(token.start, token.end); + extra.tokens.push({ + type: TokenName[token.type], + value: value, + range: [token.start, token.end], + loc: loc + }); + } + + return token; + } + + function lex() { + var token; + + token = lookahead; + index = token.end; + lineNumber = token.lineNumber; + lineStart = token.lineStart; + + lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); + + index = token.end; + lineNumber = token.lineNumber; + lineStart = token.lineStart; + + return token; + } + + function peek() { + var pos, line, start; + + pos = index; + line = lineNumber; + start = lineStart; + lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance(); + index = pos; + lineNumber = line; + lineStart = start; + } + + function Position(line, column) { + this.line = line; + this.column = column; + } + + function SourceLocation(startLine, startColumn, line, column) { + this.start = new Position(startLine, startColumn); + this.end = new Position(line, column); + } + + SyntaxTreeDelegate = { + + name: 'SyntaxTree', + + processComment: function (node) { + var lastChild, trailingComments; + + if (node.type === Syntax.Program) { + if (node.body.length > 0) { + return; + } + } + + if (extra.trailingComments.length > 0) { + if (extra.trailingComments[0].range[0] >= node.range[1]) { + trailingComments = extra.trailingComments; + extra.trailingComments = []; + } else { + extra.trailingComments.length = 0; + } + } else { + if (extra.bottomRightStack.length > 0 && + extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments && + extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments[0].range[0] >= node.range[1]) { + trailingComments = extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; + delete extra.bottomRightStack[extra.bottomRightStack.length - 1].trailingComments; + } + } + + // Eating the stack. + while (extra.bottomRightStack.length > 0 && extra.bottomRightStack[extra.bottomRightStack.length - 1].range[0] >= node.range[0]) { + lastChild = extra.bottomRightStack.pop(); + } + + if (lastChild) { + if (lastChild.leadingComments && lastChild.leadingComments[lastChild.leadingComments.length - 1].range[1] <= node.range[0]) { + node.leadingComments = lastChild.leadingComments; + delete lastChild.leadingComments; + } + } else if (extra.leadingComments.length > 0 && extra.leadingComments[extra.leadingComments.length - 1].range[1] <= node.range[0]) { + node.leadingComments = extra.leadingComments; + extra.leadingComments = []; + } + + + if (trailingComments) { + node.trailingComments = trailingComments; + } + + extra.bottomRightStack.push(node); + }, + + markEnd: function (node, startToken) { + if (extra.range) { + node.range = [startToken.start, index]; + } + if (extra.loc) { + node.loc = new SourceLocation( + startToken.startLineNumber === undefined ? startToken.lineNumber : startToken.startLineNumber, + startToken.start - (startToken.startLineStart === undefined ? startToken.lineStart : startToken.startLineStart), + lineNumber, + index - lineStart + ); + this.postProcess(node); + } + + if (extra.attachComment) { + this.processComment(node); + } + return node; + }, + + postProcess: function (node) { + if (extra.source) { + node.loc.source = extra.source; + } + return node; + }, + + createArrayExpression: function (elements) { + return { + type: Syntax.ArrayExpression, + elements: elements + }; + }, + + createAssignmentExpression: function (operator, left, right) { + return { + type: Syntax.AssignmentExpression, + operator: operator, + left: left, + right: right + }; + }, + + createBinaryExpression: function (operator, left, right) { + var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : + Syntax.BinaryExpression; + return { + type: type, + operator: operator, + left: left, + right: right + }; + }, + + createBlockStatement: function (body) { + return { + type: Syntax.BlockStatement, + body: body + }; + }, + + createBreakStatement: function (label) { + return { + type: Syntax.BreakStatement, + label: label + }; + }, + + createCallExpression: function (callee, args) { + return { + type: Syntax.CallExpression, + callee: callee, + 'arguments': args + }; + }, + + createCatchClause: function (param, body) { + return { + type: Syntax.CatchClause, + param: param, + body: body + }; + }, + + createConditionalExpression: function (test, consequent, alternate) { + return { + type: Syntax.ConditionalExpression, + test: test, + consequent: consequent, + alternate: alternate + }; + }, + + createContinueStatement: function (label) { + return { + type: Syntax.ContinueStatement, + label: label + }; + }, + + createDebuggerStatement: function () { + return { + type: Syntax.DebuggerStatement + }; + }, + + createDoWhileStatement: function (body, test) { + return { + type: Syntax.DoWhileStatement, + body: body, + test: test + }; + }, + + createEmptyStatement: function () { + return { + type: Syntax.EmptyStatement + }; + }, + + createExpressionStatement: function (expression) { + return { + type: Syntax.ExpressionStatement, + expression: expression + }; + }, + + createForStatement: function (init, test, update, body) { + return { + type: Syntax.ForStatement, + init: init, + test: test, + update: update, + body: body + }; + }, + + createForInStatement: function (left, right, body) { + return { + type: Syntax.ForInStatement, + left: left, + right: right, + body: body, + each: false + }; + }, + + createFunctionDeclaration: function (id, params, defaults, body) { + return { + type: Syntax.FunctionDeclaration, + id: id, + params: params, + defaults: defaults, + body: body, + rest: null, + generator: false, + expression: false + }; + }, + + createFunctionExpression: function (id, params, defaults, body) { + return { + type: Syntax.FunctionExpression, + id: id, + params: params, + defaults: defaults, + body: body, + rest: null, + generator: false, + expression: false + }; + }, + + createIdentifier: function (name) { + return { + type: Syntax.Identifier, + name: name + }; + }, + + createIfStatement: function (test, consequent, alternate) { + return { + type: Syntax.IfStatement, + test: test, + consequent: consequent, + alternate: alternate + }; + }, + + createLabeledStatement: function (label, body) { + return { + type: Syntax.LabeledStatement, + label: label, + body: body + }; + }, + + createLiteral: function (token) { + return { + type: Syntax.Literal, + value: token.value, + raw: source.slice(token.start, token.end) + }; + }, + + createMemberExpression: function (accessor, object, property) { + return { + type: Syntax.MemberExpression, + computed: accessor === '[', + object: object, + property: property + }; + }, + + createNewExpression: function (callee, args) { + return { + type: Syntax.NewExpression, + callee: callee, + 'arguments': args + }; + }, + + createObjectExpression: function (properties) { + return { + type: Syntax.ObjectExpression, + properties: properties + }; + }, + + createPostfixExpression: function (operator, argument) { + return { + type: Syntax.UpdateExpression, + operator: operator, + argument: argument, + prefix: false + }; + }, + + createProgram: function (body) { + return { + type: Syntax.Program, + body: body + }; + }, + + createProperty: function (kind, key, value) { + return { + type: Syntax.Property, + key: key, + value: value, + kind: kind + }; + }, + + createReturnStatement: function (argument) { + return { + type: Syntax.ReturnStatement, + argument: argument + }; + }, + + createSequenceExpression: function (expressions) { + return { + type: Syntax.SequenceExpression, + expressions: expressions + }; + }, + + createSwitchCase: function (test, consequent) { + return { + type: Syntax.SwitchCase, + test: test, + consequent: consequent + }; + }, + + createSwitchStatement: function (discriminant, cases) { + return { + type: Syntax.SwitchStatement, + discriminant: discriminant, + cases: cases + }; + }, + + createThisExpression: function () { + return { + type: Syntax.ThisExpression + }; + }, + + createThrowStatement: function (argument) { + return { + type: Syntax.ThrowStatement, + argument: argument + }; + }, + + createTryStatement: function (block, guardedHandlers, handlers, finalizer) { + return { + type: Syntax.TryStatement, + block: block, + guardedHandlers: guardedHandlers, + handlers: handlers, + finalizer: finalizer + }; + }, + + createUnaryExpression: function (operator, argument) { + if (operator === '++' || operator === '--') { + return { + type: Syntax.UpdateExpression, + operator: operator, + argument: argument, + prefix: true + }; + } + return { + type: Syntax.UnaryExpression, + operator: operator, + argument: argument, + prefix: true + }; + }, + + createVariableDeclaration: function (declarations, kind) { + return { + type: Syntax.VariableDeclaration, + declarations: declarations, + kind: kind + }; + }, + + createVariableDeclarator: function (id, init) { + return { + type: Syntax.VariableDeclarator, + id: id, + init: init + }; + }, + + createWhileStatement: function (test, body) { + return { + type: Syntax.WhileStatement, + test: test, + body: body + }; + }, + + createWithStatement: function (object, body) { + return { + type: Syntax.WithStatement, + object: object, + body: body + }; + } + }; + + // Return true if there is a line terminator before the next token. + + function peekLineTerminator() { + var pos, line, start, found; + + pos = index; + line = lineNumber; + start = lineStart; + skipComment(); + found = lineNumber !== line; + index = pos; + lineNumber = line; + lineStart = start; + + return found; + } + + // Throw an exception + + function throwError(token, messageFormat) { + var error, + args = Array.prototype.slice.call(arguments, 2), + msg = messageFormat.replace( + /%(\d)/g, + function (whole, index) { + assert(index < args.length, 'Message reference must be in range'); + return args[index]; + } + ); + + if (typeof token.lineNumber === 'number') { + error = new Error('Line ' + token.lineNumber + ': ' + msg); + error.index = token.start; + error.lineNumber = token.lineNumber; + error.column = token.start - lineStart + 1; + } else { + error = new Error('Line ' + lineNumber + ': ' + msg); + error.index = index; + error.lineNumber = lineNumber; + error.column = index - lineStart + 1; + } + + error.description = msg; + throw error; + } + + function throwErrorTolerant() { + try { + throwError.apply(null, arguments); + } catch (e) { + if (extra.errors) { + extra.errors.push(e); + } else { + throw e; + } + } + } + + + // Throw an exception because of the token. + + function throwUnexpected(token) { + if (token.type === Token.EOF) { + throwError(token, Messages.UnexpectedEOS); + } + + if (token.type === Token.NumericLiteral) { + throwError(token, Messages.UnexpectedNumber); + } + + if (token.type === Token.StringLiteral) { + throwError(token, Messages.UnexpectedString); + } + + if (token.type === Token.Identifier) { + throwError(token, Messages.UnexpectedIdentifier); + } + + if (token.type === Token.Keyword) { + if (isFutureReservedWord(token.value)) { + throwError(token, Messages.UnexpectedReserved); + } else if (strict && isStrictModeReservedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictReservedWord); + return; + } + throwError(token, Messages.UnexpectedToken, token.value); + } + + // BooleanLiteral, NullLiteral, or Punctuator. + throwError(token, Messages.UnexpectedToken, token.value); + } + + // Expect the next token to match the specified punctuator. + // If not, an exception will be thrown. + + function expect(value) { + var token = lex(); + if (token.type !== Token.Punctuator || token.value !== value) { + throwUnexpected(token); + } + } + + // Expect the next token to match the specified keyword. + // If not, an exception will be thrown. + + function expectKeyword(keyword) { + var token = lex(); + if (token.type !== Token.Keyword || token.value !== keyword) { + throwUnexpected(token); + } + } + + // Return true if the next token matches the specified punctuator. + + function match(value) { + return lookahead.type === Token.Punctuator && lookahead.value === value; + } + + // Return true if the next token matches the specified keyword + + function matchKeyword(keyword) { + return lookahead.type === Token.Keyword && lookahead.value === keyword; + } + + // Return true if the next token is an assignment operator + + function matchAssign() { + var op; + + if (lookahead.type !== Token.Punctuator) { + return false; + } + op = lookahead.value; + return op === '=' || + op === '*=' || + op === '/=' || + op === '%=' || + op === '+=' || + op === '-=' || + op === '<<=' || + op === '>>=' || + op === '>>>=' || + op === '&=' || + op === '^=' || + op === '|='; + } + + function consumeSemicolon() { + var line; + + // Catch the very common case first: immediately a semicolon (U+003B). + if (source.charCodeAt(index) === 0x3B || match(';')) { + lex(); + return; + } + + line = lineNumber; + skipComment(); + if (lineNumber !== line) { + return; + } + + if (lookahead.type !== Token.EOF && !match('}')) { + throwUnexpected(lookahead); + } + } + + // Return true if provided expression is LeftHandSideExpression + + function isLeftHandSide(expr) { + return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; + } + + // 11.1.4 Array Initialiser + + function parseArrayInitialiser() { + var elements = [], startToken; + + startToken = lookahead; + expect('['); + + while (!match(']')) { + if (match(',')) { + lex(); + elements.push(null); + } else { + elements.push(parseAssignmentExpression()); + + if (!match(']')) { + expect(','); + } + } + } + + lex(); + + return delegate.markEnd(delegate.createArrayExpression(elements), startToken); + } + + // 11.1.5 Object Initialiser + + function parsePropertyFunction(param, first) { + var previousStrict, body, startToken; + + previousStrict = strict; + startToken = lookahead; + body = parseFunctionSourceElements(); + if (first && strict && isRestrictedWord(param[0].name)) { + throwErrorTolerant(first, Messages.StrictParamName); + } + strict = previousStrict; + return delegate.markEnd(delegate.createFunctionExpression(null, param, [], body), startToken); + } + + function parseObjectPropertyKey() { + var token, startToken; + + startToken = lookahead; + token = lex(); + + // Note: This function is called only from parseObjectProperty(), where + // EOF and Punctuator tokens are already filtered out. + + if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { + if (strict && token.octal) { + throwErrorTolerant(token, Messages.StrictOctalLiteral); + } + return delegate.markEnd(delegate.createLiteral(token), startToken); + } + + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); + } + + function parseObjectProperty() { + var token, key, id, value, param, startToken; + + token = lookahead; + startToken = lookahead; + + if (token.type === Token.Identifier) { + + id = parseObjectPropertyKey(); + + // Property Assignment: Getter and Setter. + + if (token.value === 'get' && !match(':')) { + key = parseObjectPropertyKey(); + expect('('); + expect(')'); + value = parsePropertyFunction([]); + return delegate.markEnd(delegate.createProperty('get', key, value), startToken); + } + if (token.value === 'set' && !match(':')) { + key = parseObjectPropertyKey(); + expect('('); + token = lookahead; + if (token.type !== Token.Identifier) { + expect(')'); + throwErrorTolerant(token, Messages.UnexpectedToken, token.value); + value = parsePropertyFunction([]); + } else { + param = [ parseVariableIdentifier() ]; + expect(')'); + value = parsePropertyFunction(param, token); + } + return delegate.markEnd(delegate.createProperty('set', key, value), startToken); + } + expect(':'); + value = parseAssignmentExpression(); + return delegate.markEnd(delegate.createProperty('init', id, value), startToken); + } + if (token.type === Token.EOF || token.type === Token.Punctuator) { + throwUnexpected(token); + } else { + key = parseObjectPropertyKey(); + expect(':'); + value = parseAssignmentExpression(); + return delegate.markEnd(delegate.createProperty('init', key, value), startToken); + } + } + + function parseObjectInitialiser() { + var properties = [], property, name, key, kind, map = {}, toString = String, startToken; + + startToken = lookahead; + + expect('{'); + + while (!match('}')) { + property = parseObjectProperty(); + + if (property.key.type === Syntax.Identifier) { + name = property.key.name; + } else { + name = toString(property.key.value); + } + kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; + + key = '$' + name; + if (Object.prototype.hasOwnProperty.call(map, key)) { + if (map[key] === PropertyKind.Data) { + if (strict && kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.StrictDuplicateProperty); + } else if (kind !== PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } + } else { + if (kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } else if (map[key] & kind) { + throwErrorTolerant({}, Messages.AccessorGetSet); + } + } + map[key] |= kind; + } else { + map[key] = kind; + } + + properties.push(property); + + if (!match('}')) { + expect(','); + } + } + + expect('}'); + + return delegate.markEnd(delegate.createObjectExpression(properties), startToken); + } + + // 11.1.6 The Grouping Operator + + function parseGroupExpression() { + var expr; + + expect('('); + + expr = parseExpression(); + + expect(')'); + + return expr; + } + + + // 11.1 Primary Expressions + + function parsePrimaryExpression() { + var type, token, expr, startToken; + + if (match('(')) { + return parseGroupExpression(); + } + + if (match('[')) { + return parseArrayInitialiser(); + } + + if (match('{')) { + return parseObjectInitialiser(); + } + + type = lookahead.type; + startToken = lookahead; + + if (type === Token.Identifier) { + expr = delegate.createIdentifier(lex().value); + } else if (type === Token.StringLiteral || type === Token.NumericLiteral) { + if (strict && lookahead.octal) { + throwErrorTolerant(lookahead, Messages.StrictOctalLiteral); + } + expr = delegate.createLiteral(lex()); + } else if (type === Token.Keyword) { + if (matchKeyword('function')) { + return parseFunctionExpression(); + } + if (matchKeyword('this')) { + lex(); + expr = delegate.createThisExpression(); + } else { + throwUnexpected(lex()); + } + } else if (type === Token.BooleanLiteral) { + token = lex(); + token.value = (token.value === 'true'); + expr = delegate.createLiteral(token); + } else if (type === Token.NullLiteral) { + token = lex(); + token.value = null; + expr = delegate.createLiteral(token); + } else if (match('/') || match('/=')) { + if (typeof extra.tokens !== 'undefined') { + expr = delegate.createLiteral(collectRegex()); + } else { + expr = delegate.createLiteral(scanRegExp()); + } + peek(); + } else { + throwUnexpected(lex()); + } + + return delegate.markEnd(expr, startToken); + } + + // 11.2 Left-Hand-Side Expressions + + function parseArguments() { + var args = []; + + expect('('); + + if (!match(')')) { + while (index < length) { + args.push(parseAssignmentExpression()); + if (match(')')) { + break; + } + expect(','); + } + } + + expect(')'); + + return args; + } + + function parseNonComputedProperty() { + var token, startToken; + + startToken = lookahead; + token = lex(); + + if (!isIdentifierName(token)) { + throwUnexpected(token); + } + + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); + } + + function parseNonComputedMember() { + expect('.'); + + return parseNonComputedProperty(); + } + + function parseComputedMember() { + var expr; + + expect('['); + + expr = parseExpression(); + + expect(']'); + + return expr; + } + + function parseNewExpression() { + var callee, args, startToken; + + startToken = lookahead; + expectKeyword('new'); + callee = parseLeftHandSideExpression(); + args = match('(') ? parseArguments() : []; + + return delegate.markEnd(delegate.createNewExpression(callee, args), startToken); + } + + function parseLeftHandSideExpressionAllowCall() { + var previousAllowIn, expr, args, property, startToken; + + startToken = lookahead; + + previousAllowIn = state.allowIn; + state.allowIn = true; + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + state.allowIn = previousAllowIn; + + for (;;) { + if (match('.')) { + property = parseNonComputedMember(); + expr = delegate.createMemberExpression('.', expr, property); + } else if (match('(')) { + args = parseArguments(); + expr = delegate.createCallExpression(expr, args); + } else if (match('[')) { + property = parseComputedMember(); + expr = delegate.createMemberExpression('[', expr, property); + } else { + break; + } + delegate.markEnd(expr, startToken); + } + + return expr; + } + + function parseLeftHandSideExpression() { + var previousAllowIn, expr, property, startToken; + + startToken = lookahead; + + previousAllowIn = state.allowIn; + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + state.allowIn = previousAllowIn; + + while (match('.') || match('[')) { + if (match('[')) { + property = parseComputedMember(); + expr = delegate.createMemberExpression('[', expr, property); + } else { + property = parseNonComputedMember(); + expr = delegate.createMemberExpression('.', expr, property); + } + delegate.markEnd(expr, startToken); + } + + return expr; + } + + // 11.3 Postfix Expressions + + function parsePostfixExpression() { + var expr, token, startToken = lookahead; + + expr = parseLeftHandSideExpressionAllowCall(); + + if (lookahead.type === Token.Punctuator) { + if ((match('++') || match('--')) && !peekLineTerminator()) { + // 11.3.1, 11.3.2 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPostfix); + } + + if (!isLeftHandSide(expr)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); + } + + token = lex(); + expr = delegate.markEnd(delegate.createPostfixExpression(token.value, expr), startToken); + } + } + + return expr; + } + + // 11.4 Unary Operators + + function parseUnaryExpression() { + var token, expr, startToken; + + if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { + expr = parsePostfixExpression(); + } else if (match('++') || match('--')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + // 11.4.4, 11.4.5 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPrefix); + } + + if (!isLeftHandSide(expr)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); + } + + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + } else if (match('+') || match('-') || match('~') || match('!')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { + startToken = lookahead; + token = lex(); + expr = parseUnaryExpression(); + expr = delegate.createUnaryExpression(token.value, expr); + expr = delegate.markEnd(expr, startToken); + if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { + throwErrorTolerant({}, Messages.StrictDelete); + } + } else { + expr = parsePostfixExpression(); + } + + return expr; + } + + function binaryPrecedence(token, allowIn) { + var prec = 0; + + if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { + return 0; + } + + switch (token.value) { + case '||': + prec = 1; + break; + + case '&&': + prec = 2; + break; + + case '|': + prec = 3; + break; + + case '^': + prec = 4; + break; + + case '&': + prec = 5; + break; + + case '==': + case '!=': + case '===': + case '!==': + prec = 6; + break; + + case '<': + case '>': + case '<=': + case '>=': + case 'instanceof': + prec = 7; + break; + + case 'in': + prec = allowIn ? 7 : 0; + break; + + case '<<': + case '>>': + case '>>>': + prec = 8; + break; + + case '+': + case '-': + prec = 9; + break; + + case '*': + case '/': + case '%': + prec = 11; + break; + + default: + break; + } + + return prec; + } + + // 11.5 Multiplicative Operators + // 11.6 Additive Operators + // 11.7 Bitwise Shift Operators + // 11.8 Relational Operators + // 11.9 Equality Operators + // 11.10 Binary Bitwise Operators + // 11.11 Binary Logical Operators + + function parseBinaryExpression() { + var marker, markers, expr, token, prec, stack, right, operator, left, i; + + marker = lookahead; + left = parseUnaryExpression(); + + token = lookahead; + prec = binaryPrecedence(token, state.allowIn); + if (prec === 0) { + return left; + } + token.prec = prec; + lex(); + + markers = [marker, lookahead]; + right = parseUnaryExpression(); + + stack = [left, token, right]; + + while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) { + + // Reduce: make a binary expression from the three topmost entries. + while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { + right = stack.pop(); + operator = stack.pop().value; + left = stack.pop(); + expr = delegate.createBinaryExpression(operator, left, right); + markers.pop(); + marker = markers[markers.length - 1]; + delegate.markEnd(expr, marker); + stack.push(expr); + } + + // Shift. + token = lex(); + token.prec = prec; + stack.push(token); + markers.push(lookahead); + expr = parseUnaryExpression(); + stack.push(expr); + } + + // Final reduce to clean-up the stack. + i = stack.length - 1; + expr = stack[i]; + markers.pop(); + while (i > 1) { + expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr); + i -= 2; + marker = markers.pop(); + delegate.markEnd(expr, marker); + } + + return expr; + } + + + // 11.12 Conditional Operator + + function parseConditionalExpression() { + var expr, previousAllowIn, consequent, alternate, startToken; + + startToken = lookahead; + + expr = parseBinaryExpression(); + + if (match('?')) { + lex(); + previousAllowIn = state.allowIn; + state.allowIn = true; + consequent = parseAssignmentExpression(); + state.allowIn = previousAllowIn; + expect(':'); + alternate = parseAssignmentExpression(); + + expr = delegate.createConditionalExpression(expr, consequent, alternate); + delegate.markEnd(expr, startToken); + } + + return expr; + } + + // 11.13 Assignment Operators + + function parseAssignmentExpression() { + var token, left, right, node, startToken; + + token = lookahead; + startToken = lookahead; + + node = left = parseConditionalExpression(); + + if (matchAssign()) { + // LeftHandSideExpression + if (!isLeftHandSide(left)) { + throwErrorTolerant({}, Messages.InvalidLHSInAssignment); + } + + // 11.13.1 + if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) { + throwErrorTolerant(token, Messages.StrictLHSAssignment); + } + + token = lex(); + right = parseAssignmentExpression(); + node = delegate.markEnd(delegate.createAssignmentExpression(token.value, left, right), startToken); + } + + return node; + } + + // 11.14 Comma Operator + + function parseExpression() { + var expr, startToken = lookahead; + + expr = parseAssignmentExpression(); + + if (match(',')) { + expr = delegate.createSequenceExpression([ expr ]); + + while (index < length) { + if (!match(',')) { + break; + } + lex(); + expr.expressions.push(parseAssignmentExpression()); + } + + delegate.markEnd(expr, startToken); + } + + return expr; + } + + // 12.1 Block + + function parseStatementList() { + var list = [], + statement; + + while (index < length) { + if (match('}')) { + break; + } + statement = parseSourceElement(); + if (typeof statement === 'undefined') { + break; + } + list.push(statement); + } + + return list; + } + + function parseBlock() { + var block, startToken; + + startToken = lookahead; + expect('{'); + + block = parseStatementList(); + + expect('}'); + + return delegate.markEnd(delegate.createBlockStatement(block), startToken); + } + + // 12.2 Variable Statement + + function parseVariableIdentifier() { + var token, startToken; + + startToken = lookahead; + token = lex(); + + if (token.type !== Token.Identifier) { + throwUnexpected(token); + } + + return delegate.markEnd(delegate.createIdentifier(token.value), startToken); + } + + function parseVariableDeclaration(kind) { + var init = null, id, startToken; + + startToken = lookahead; + id = parseVariableIdentifier(); + + // 12.2.1 + if (strict && isRestrictedWord(id.name)) { + throwErrorTolerant({}, Messages.StrictVarName); + } + + if (kind === 'const') { + expect('='); + init = parseAssignmentExpression(); + } else if (match('=')) { + lex(); + init = parseAssignmentExpression(); + } + + return delegate.markEnd(delegate.createVariableDeclarator(id, init), startToken); + } + + function parseVariableDeclarationList(kind) { + var list = []; + + do { + list.push(parseVariableDeclaration(kind)); + if (!match(',')) { + break; + } + lex(); + } while (index < length); + + return list; + } + + function parseVariableStatement() { + var declarations; + + expectKeyword('var'); + + declarations = parseVariableDeclarationList(); + + consumeSemicolon(); + + return delegate.createVariableDeclaration(declarations, 'var'); + } + + // kind may be `const` or `let` + // Both are experimental and not in the specification yet. + // see http://wiki.ecmascript.org/doku.php?id=harmony:const + // and http://wiki.ecmascript.org/doku.php?id=harmony:let + function parseConstLetDeclaration(kind) { + var declarations, startToken; + + startToken = lookahead; + + expectKeyword(kind); + + declarations = parseVariableDeclarationList(kind); + + consumeSemicolon(); + + return delegate.markEnd(delegate.createVariableDeclaration(declarations, kind), startToken); + } + + // 12.3 Empty Statement + + function parseEmptyStatement() { + expect(';'); + return delegate.createEmptyStatement(); + } + + // 12.4 Expression Statement + + function parseExpressionStatement() { + var expr = parseExpression(); + consumeSemicolon(); + return delegate.createExpressionStatement(expr); + } + + // 12.5 If statement + + function parseIfStatement() { + var test, consequent, alternate; + + expectKeyword('if'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + consequent = parseStatement(); + + if (matchKeyword('else')) { + lex(); + alternate = parseStatement(); + } else { + alternate = null; + } + + return delegate.createIfStatement(test, consequent, alternate); + } + + // 12.6 Iteration Statements + + function parseDoWhileStatement() { + var body, test, oldInIteration; + + expectKeyword('do'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + if (match(';')) { + lex(); + } + + return delegate.createDoWhileStatement(body, test); + } + + function parseWhileStatement() { + var test, body, oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + return delegate.createWhileStatement(test, body); + } + + function parseForVariableDeclaration() { + var token, declarations, startToken; + + startToken = lookahead; + token = lex(); + declarations = parseVariableDeclarationList(); + + return delegate.markEnd(delegate.createVariableDeclaration(declarations, token.value), startToken); + } + + function parseForStatement() { + var init, test, update, left, right, body, oldInIteration; + + init = test = update = null; + + expectKeyword('for'); + + expect('('); + + if (match(';')) { + lex(); + } else { + if (matchKeyword('var') || matchKeyword('let')) { + state.allowIn = false; + init = parseForVariableDeclaration(); + state.allowIn = true; + + if (init.declarations.length === 1 && matchKeyword('in')) { + lex(); + left = init; + right = parseExpression(); + init = null; + } + } else { + state.allowIn = false; + init = parseExpression(); + state.allowIn = true; + + if (matchKeyword('in')) { + // LeftHandSideExpression + if (!isLeftHandSide(init)) { + throwErrorTolerant({}, Messages.InvalidLHSInForIn); + } + + lex(); + left = init; + right = parseExpression(); + init = null; + } + } + + if (typeof left === 'undefined') { + expect(';'); + } + } + + if (typeof left === 'undefined') { + + if (!match(';')) { + test = parseExpression(); + } + expect(';'); + + if (!match(')')) { + update = parseExpression(); + } + } + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + return (typeof left === 'undefined') ? + delegate.createForStatement(init, test, update, body) : + delegate.createForInStatement(left, right, body); + } + + // 12.7 The continue statement + + function parseContinueStatement() { + var label = null, key; + + expectKeyword('continue'); + + // Optimize the most common form: 'continue;'. + if (source.charCodeAt(index) === 0x3B) { + lex(); + + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return delegate.createContinueStatement(null); + } + + if (peekLineTerminator()) { + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return delegate.createContinueStatement(null); + } + + if (lookahead.type === Token.Identifier) { + label = parseVariableIdentifier(); + + key = '$' + label.name; + if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.UnknownLabel, label.name); + } + } + + consumeSemicolon(); + + if (label === null && !state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return delegate.createContinueStatement(label); + } + + // 12.8 The break statement + + function parseBreakStatement() { + var label = null, key; + + expectKeyword('break'); + + // Catch the very common case first: immediately a semicolon (U+003B). + if (source.charCodeAt(index) === 0x3B) { + lex(); + + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return delegate.createBreakStatement(null); + } + + if (peekLineTerminator()) { + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return delegate.createBreakStatement(null); + } + + if (lookahead.type === Token.Identifier) { + label = parseVariableIdentifier(); + + key = '$' + label.name; + if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.UnknownLabel, label.name); + } + } + + consumeSemicolon(); + + if (label === null && !(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return delegate.createBreakStatement(label); + } + + // 12.9 The return statement + + function parseReturnStatement() { + var argument = null; + + expectKeyword('return'); + + if (!state.inFunctionBody) { + throwErrorTolerant({}, Messages.IllegalReturn); + } + + // 'return' followed by a space and an identifier is very common. + if (source.charCodeAt(index) === 0x20) { + if (isIdentifierStart(source.charCodeAt(index + 1))) { + argument = parseExpression(); + consumeSemicolon(); + return delegate.createReturnStatement(argument); + } + } + + if (peekLineTerminator()) { + return delegate.createReturnStatement(null); + } + + if (!match(';')) { + if (!match('}') && lookahead.type !== Token.EOF) { + argument = parseExpression(); + } + } + + consumeSemicolon(); + + return delegate.createReturnStatement(argument); + } + + // 12.10 The with statement + + function parseWithStatement() { + var object, body; + + if (strict) { + // TODO(ikarienator): Should we update the test cases instead? + skipComment(); + throwErrorTolerant({}, Messages.StrictModeWith); + } + + expectKeyword('with'); + + expect('('); + + object = parseExpression(); + + expect(')'); + + body = parseStatement(); + + return delegate.createWithStatement(object, body); + } + + // 12.10 The swith statement + + function parseSwitchCase() { + var test, consequent = [], statement, startToken; + + startToken = lookahead; + if (matchKeyword('default')) { + lex(); + test = null; + } else { + expectKeyword('case'); + test = parseExpression(); + } + expect(':'); + + while (index < length) { + if (match('}') || matchKeyword('default') || matchKeyword('case')) { + break; + } + statement = parseStatement(); + consequent.push(statement); + } + + return delegate.markEnd(delegate.createSwitchCase(test, consequent), startToken); + } + + function parseSwitchStatement() { + var discriminant, cases, clause, oldInSwitch, defaultFound; + + expectKeyword('switch'); + + expect('('); + + discriminant = parseExpression(); + + expect(')'); + + expect('{'); + + cases = []; + + if (match('}')) { + lex(); + return delegate.createSwitchStatement(discriminant, cases); + } + + oldInSwitch = state.inSwitch; + state.inSwitch = true; + defaultFound = false; + + while (index < length) { + if (match('}')) { + break; + } + clause = parseSwitchCase(); + if (clause.test === null) { + if (defaultFound) { + throwError({}, Messages.MultipleDefaultsInSwitch); + } + defaultFound = true; + } + cases.push(clause); + } + + state.inSwitch = oldInSwitch; + + expect('}'); + + return delegate.createSwitchStatement(discriminant, cases); + } + + // 12.13 The throw statement + + function parseThrowStatement() { + var argument; + + expectKeyword('throw'); + + if (peekLineTerminator()) { + throwError({}, Messages.NewlineAfterThrow); + } + + argument = parseExpression(); + + consumeSemicolon(); + + return delegate.createThrowStatement(argument); + } + + // 12.14 The try statement + + function parseCatchClause() { + var param, body, startToken; + + startToken = lookahead; + expectKeyword('catch'); + + expect('('); + if (match(')')) { + throwUnexpected(lookahead); + } + + param = parseVariableIdentifier(); + // 12.14.1 + if (strict && isRestrictedWord(param.name)) { + throwErrorTolerant({}, Messages.StrictCatchVariable); + } + + expect(')'); + body = parseBlock(); + return delegate.markEnd(delegate.createCatchClause(param, body), startToken); + } + + function parseTryStatement() { + var block, handlers = [], finalizer = null; + + expectKeyword('try'); + + block = parseBlock(); + + if (matchKeyword('catch')) { + handlers.push(parseCatchClause()); + } + + if (matchKeyword('finally')) { + lex(); + finalizer = parseBlock(); + } + + if (handlers.length === 0 && !finalizer) { + throwError({}, Messages.NoCatchOrFinally); + } + + return delegate.createTryStatement(block, [], handlers, finalizer); + } + + // 12.15 The debugger statement + + function parseDebuggerStatement() { + expectKeyword('debugger'); + + consumeSemicolon(); + + return delegate.createDebuggerStatement(); + } + + // 12 Statements + + function parseStatement() { + var type = lookahead.type, + expr, + labeledBody, + key, + startToken; + + if (type === Token.EOF) { + throwUnexpected(lookahead); + } + + if (type === Token.Punctuator && lookahead.value === '{') { + return parseBlock(); + } + + startToken = lookahead; + + if (type === Token.Punctuator) { + switch (lookahead.value) { + case ';': + return delegate.markEnd(parseEmptyStatement(), startToken); + case '(': + return delegate.markEnd(parseExpressionStatement(), startToken); + default: + break; + } + } + + if (type === Token.Keyword) { + switch (lookahead.value) { + case 'break': + return delegate.markEnd(parseBreakStatement(), startToken); + case 'continue': + return delegate.markEnd(parseContinueStatement(), startToken); + case 'debugger': + return delegate.markEnd(parseDebuggerStatement(), startToken); + case 'do': + return delegate.markEnd(parseDoWhileStatement(), startToken); + case 'for': + return delegate.markEnd(parseForStatement(), startToken); + case 'function': + return delegate.markEnd(parseFunctionDeclaration(), startToken); + case 'if': + return delegate.markEnd(parseIfStatement(), startToken); + case 'return': + return delegate.markEnd(parseReturnStatement(), startToken); + case 'switch': + return delegate.markEnd(parseSwitchStatement(), startToken); + case 'throw': + return delegate.markEnd(parseThrowStatement(), startToken); + case 'try': + return delegate.markEnd(parseTryStatement(), startToken); + case 'var': + return delegate.markEnd(parseVariableStatement(), startToken); + case 'while': + return delegate.markEnd(parseWhileStatement(), startToken); + case 'with': + return delegate.markEnd(parseWithStatement(), startToken); + default: + break; + } + } + + expr = parseExpression(); + + // 12.12 Labelled Statements + if ((expr.type === Syntax.Identifier) && match(':')) { + lex(); + + key = '$' + expr.name; + if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.Redeclaration, 'Label', expr.name); + } + + state.labelSet[key] = true; + labeledBody = parseStatement(); + delete state.labelSet[key]; + return delegate.markEnd(delegate.createLabeledStatement(expr, labeledBody), startToken); + } + + consumeSemicolon(); + + return delegate.markEnd(delegate.createExpressionStatement(expr), startToken); + } + + // 13 Function Definition + + function parseFunctionSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted, + oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, startToken; + + startToken = lookahead; + expect('{'); + + while (index < length) { + if (lookahead.type !== Token.StringLiteral) { + break; + } + token = lookahead; + + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = source.slice(token.start + 1, token.end - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + + oldLabelSet = state.labelSet; + oldInIteration = state.inIteration; + oldInSwitch = state.inSwitch; + oldInFunctionBody = state.inFunctionBody; + + state.labelSet = {}; + state.inIteration = false; + state.inSwitch = false; + state.inFunctionBody = true; + + while (index < length) { + if (match('}')) { + break; + } + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + + expect('}'); + + state.labelSet = oldLabelSet; + state.inIteration = oldInIteration; + state.inSwitch = oldInSwitch; + state.inFunctionBody = oldInFunctionBody; + + return delegate.markEnd(delegate.createBlockStatement(sourceElements), startToken); + } + + function parseParams(firstRestricted) { + var param, params = [], token, stricted, paramSet, key, message; + expect('('); + + if (!match(')')) { + paramSet = {}; + while (index < length) { + token = lookahead; + param = parseVariableIdentifier(); + key = '$' + token.value; + if (strict) { + if (isRestrictedWord(token.value)) { + stricted = token; + message = Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(paramSet, key)) { + stricted = token; + message = Messages.StrictParamDupe; + } + } else if (!firstRestricted) { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictParamName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } else if (Object.prototype.hasOwnProperty.call(paramSet, key)) { + firstRestricted = token; + message = Messages.StrictParamDupe; + } + } + params.push(param); + paramSet[key] = true; + if (match(')')) { + break; + } + expect(','); + } + } + + expect(')'); + + return { + params: params, + stricted: stricted, + firstRestricted: firstRestricted, + message: message + }; + } + + function parseFunctionDeclaration() { + var id, params = [], body, token, stricted, tmp, firstRestricted, message, previousStrict, startToken; + + startToken = lookahead; + + expectKeyword('function'); + token = lookahead; + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + + tmp = parseParams(firstRestricted); + params = tmp.params; + stricted = tmp.stricted; + firstRestricted = tmp.firstRestricted; + if (tmp.message) { + message = tmp.message; + } + + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); + } + strict = previousStrict; + + return delegate.markEnd(delegate.createFunctionDeclaration(id, params, [], body), startToken); + } + + function parseFunctionExpression() { + var token, id = null, stricted, firstRestricted, message, tmp, params = [], body, previousStrict, startToken; + + startToken = lookahead; + expectKeyword('function'); + + if (!match('(')) { + token = lookahead; + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + } + + tmp = parseParams(firstRestricted); + params = tmp.params; + stricted = tmp.stricted; + firstRestricted = tmp.firstRestricted; + if (tmp.message) { + message = tmp.message; + } + + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); + } + strict = previousStrict; + + return delegate.markEnd(delegate.createFunctionExpression(id, params, [], body), startToken); + } + + // 14 Program + + function parseSourceElement() { + if (lookahead.type === Token.Keyword) { + switch (lookahead.value) { + case 'const': + case 'let': + return parseConstLetDeclaration(lookahead.value); + case 'function': + return parseFunctionDeclaration(); + default: + return parseStatement(); + } + } + + if (lookahead.type !== Token.EOF) { + return parseStatement(); + } + } + + function parseSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted; + + while (index < length) { + token = lookahead; + if (token.type !== Token.StringLiteral) { + break; + } + + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = source.slice(token.start + 1, token.end - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + + while (index < length) { + sourceElement = parseSourceElement(); + /* istanbul ignore if */ + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + return sourceElements; + } + + function parseProgram() { + var body, startToken; + + skipComment(); + peek(); + startToken = lookahead; + strict = false; + + body = parseSourceElements(); + return delegate.markEnd(delegate.createProgram(body), startToken); + } + + function filterTokenLocation() { + var i, entry, token, tokens = []; + + for (i = 0; i < extra.tokens.length; ++i) { + entry = extra.tokens[i]; + token = { + type: entry.type, + value: entry.value + }; + if (extra.range) { + token.range = entry.range; + } + if (extra.loc) { + token.loc = entry.loc; + } + tokens.push(token); + } + + extra.tokens = tokens; + } + + function tokenize(code, options) { + var toString, + token, + tokens; + + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); + } + + delegate = SyntaxTreeDelegate; + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + lookahead = null; + state = { + allowIn: true, + labelSet: {}, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + lastCommentStart: -1 + }; + + extra = {}; + + // Options matching. + options = options || {}; + + // Of course we collect tokens here. + options.tokens = true; + extra.tokens = []; + extra.tokenize = true; + // The following two fields are necessary to compute the Regex tokens. + extra.openParenToken = -1; + extra.openCurlyToken = -1; + + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; + + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } + + try { + peek(); + if (lookahead.type === Token.EOF) { + return extra.tokens; + } + + token = lex(); + while (lookahead.type !== Token.EOF) { + try { + token = lex(); + } catch (lexError) { + token = lookahead; + if (extra.errors) { + extra.errors.push(lexError); + // We have to break on the first error + // to avoid infinite loops. + break; + } else { + throw lexError; + } + } + } + + filterTokenLocation(); + tokens = extra.tokens; + if (typeof extra.comments !== 'undefined') { + tokens.comments = extra.comments; + } + if (typeof extra.errors !== 'undefined') { + tokens.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + extra = {}; + } + return tokens; + } + + function parse(code, options) { + var program, toString; + + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); + } + + delegate = SyntaxTreeDelegate; + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + lookahead = null; + state = { + allowIn: true, + labelSet: {}, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + lastCommentStart: -1 + }; + + extra = {}; + if (typeof options !== 'undefined') { + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; + extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment; + + if (extra.loc && options.source !== null && options.source !== undefined) { + extra.source = toString(options.source); + } + + if (typeof options.tokens === 'boolean' && options.tokens) { + extra.tokens = []; + } + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } + if (extra.attachComment) { + extra.range = true; + extra.comments = []; + extra.bottomRightStack = []; + extra.trailingComments = []; + extra.leadingComments = []; + } + } + + try { + program = parseProgram(); + if (typeof extra.comments !== 'undefined') { + program.comments = extra.comments; + } + if (typeof extra.tokens !== 'undefined') { + filterTokenLocation(); + program.tokens = extra.tokens; + } + if (typeof extra.errors !== 'undefined') { + program.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + extra = {}; + } + + return program; + } + + // Sync with *.json manifests. + exports.version = '1.2.2'; + + exports.tokenize = tokenize; + + exports.parse = parse; + + // Deep copy. + /* istanbul ignore next */ + exports.Syntax = (function () { + var name, types = {}; + + if (typeof Object.create === 'function') { + types = Object.create(null); + } + + for (name in Syntax) { + if (Syntax.hasOwnProperty(name)) { + types[name] = Syntax[name]; + } + } + + if (typeof Object.freeze === 'function') { + Object.freeze(types); + } + + return types; + }()); + +})); +/* vim: set sw=4 ts=4 et tw=80 : */ + +})(null); +/*! + * falafel (c) James Halliday / MIT License + * https://github.com/substack/node-falafel + */ + +(function(require,module){ +var parse = require('esprima').parse; +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +}; +var forEach = function (xs, fn) { + if (xs.forEach) return xs.forEach(fn); + for (var i = 0; i < xs.length; i++) { + fn.call(xs, xs[i], i, xs); + } +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +module.exports = function (src, opts, fn) { + if (typeof opts === 'function') { + fn = opts; + opts = {}; + } + if (typeof src === 'object') { + opts = src; + src = opts.source; + delete opts.source; + } + src = src === undefined ? opts.source : src; + opts.range = true; + if (typeof src !== 'string') src = String(src); + + var ast = parse(src, opts); + + var result = { + chunks : src.split(''), + toString : function () { return result.chunks.join('') }, + inspect : function () { return result.toString() } + }; + var index = 0; + + (function walk (node, parent) { + insertHelpers(node, parent, result.chunks); + + forEach(objectKeys(node), function (key) { + if (key === 'parent') return; + + var child = node[key]; + if (isArray(child)) { + forEach(child, function (c) { + if (c && typeof c.type === 'string') { + walk(c, node); + } + }); + } + else if (child && typeof child.type === 'string') { + insertHelpers(child, node, result.chunks); + walk(child, node); + } + }); + fn(node); + })(ast, undefined); + + return result; +}; + +function insertHelpers (node, parent, chunks) { + if (!node.range) return; + + node.parent = parent; + + node.source = function () { + return chunks.slice( + node.range[0], node.range[1] + ).join(''); + }; + + if (node.update && typeof node.update === 'object') { + var prev = node.update; + forEach(objectKeys(prev), function (key) { + update[key] = prev[key]; + }); + node.update = update; + } + else { + node.update = update; + } + + function update (s) { + chunks[node.range[0]] = s; + for (var i = node.range[0] + 1; i < node.range[1]; i++) { + chunks[i] = ''; + } + }; +} + +window.falafel = module.exports;})(function(){return {parse: esprima.parse};},{exports: {}}); +var inBrowser = typeof window !== 'undefined' && this === window; +var parseAndModify = (inBrowser ? window.falafel : require("falafel")); + +(inBrowser ? window : exports).blanket = (function(){ + var linesToAddTracking = [ + "ExpressionStatement", + "BreakStatement" , + "ContinueStatement" , + "VariableDeclaration", + "ReturnStatement" , + "ThrowStatement" , + "TryStatement" , + "FunctionDeclaration" , + "IfStatement" , + "WhileStatement" , + "DoWhileStatement" , + "ForStatement" , + "ForInStatement" , + "SwitchStatement" , + "WithStatement" + ], + linesToAddBrackets = [ + "IfStatement" , + "WhileStatement" , + "DoWhileStatement" , + "ForStatement" , + "ForInStatement" , + "WithStatement" + ], + __blanket, + copynumber = Math.floor(Math.random()*1000), + coverageInfo = {},options = { + reporter: null, + adapter:null, + filter: null, + customVariable: null, + loader: null, + ignoreScriptError: false, + existingRequireJS:false, + autoStart: false, + timeout: 3000, + ignoreCors: false, + branchTracking: false, + sourceURL: false, + debug:false, + engineOnly:false, + testReadyCallback:null, + commonJS:false, + instrumentCache:false, + modulePattern: null + }; + + if (inBrowser && typeof window.blanket !== 'undefined'){ + __blanket = window.blanket.noConflict(); + } + + _blanket = { + noConflict: function(){ + if (__blanket){ + return __blanket; + } + return _blanket; + }, + _getCopyNumber: function(){ + //internal method + //for differentiating between instances + return copynumber; + }, + extend: function(obj) { + //borrowed from underscore + _blanket._extend(_blanket,obj); + }, + _extend: function(dest,source){ + if (source) { + for (var prop in source) { + if ( dest[prop] instanceof Object && typeof dest[prop] !== "function"){ + _blanket._extend(dest[prop],source[prop]); + }else{ + dest[prop] = source[prop]; + } + } + } + }, + getCovVar: function(){ + var opt = _blanket.options("customVariable"); + if (opt){ + if (_blanket.options("debug")) {console.log("BLANKET-Using custom tracking variable:",opt);} + return inBrowser ? "window."+opt : opt; + } + return inBrowser ? "window._$blanket" : "_$jscoverage"; + }, + options: function(key,value){ + if (typeof key !== "string"){ + _blanket._extend(options,key); + }else if (typeof value === 'undefined'){ + return options[key]; + }else{ + options[key]=value; + } + }, + instrument: function(config, next){ + //check instrumented hash table, + //return instrumented code if available. + var inFile = config.inputFile, + inFileName = config.inputFileName; + //check instrument cache + if (_blanket.options("instrumentCache") && sessionStorage && sessionStorage.getItem("blanket_instrument_store-"+inFileName)){ + if (_blanket.options("debug")) {console.log("BLANKET-Reading instrumentation from cache: ",inFileName);} + next(sessionStorage.getItem("blanket_instrument_store-"+inFileName)); + }else{ + var sourceArray = _blanket._prepareSource(inFile); + _blanket._trackingArraySetup=[]; + //remove shebang + inFile = inFile.replace(/^\#\!.*/, ""); + var instrumented = parseAndModify(inFile,{loc:true,comment:true}, _blanket._addTracking(inFileName)); + instrumented = _blanket._trackingSetup(inFileName,sourceArray)+instrumented; + if (_blanket.options("sourceURL")){ + instrumented += "\n//@ sourceURL="+inFileName.replace("http://",""); + } + if (_blanket.options("debug")) {console.log("BLANKET-Instrumented file: ",inFileName);} + if (_blanket.options("instrumentCache") && sessionStorage){ + if (_blanket.options("debug")) {console.log("BLANKET-Saving instrumentation to cache: ",inFileName);} + sessionStorage.setItem("blanket_instrument_store-"+inFileName,instrumented); + } + next(instrumented); + } + }, + _trackingArraySetup: [], + _branchingArraySetup: [], + _prepareSource: function(source){ + return source.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/(\r\n|\n|\r)/gm,"\n").split('\n'); + }, + _trackingSetup: function(filename,sourceArray){ + var branches = _blanket.options("branchTracking"); + var sourceString = sourceArray.join("',\n'"); + var intro = ""; + var covVar = _blanket.getCovVar(); + + intro += "if (typeof "+covVar+" === 'undefined') "+covVar+" = {};\n"; + if (branches){ + intro += "var _$branchFcn=function(f,l,c,r){ "; + intro += "if (!!r) { "; + intro += covVar+"[f].branchData[l][c][0] = "+covVar+"[f].branchData[l][c][0] || [];"; + intro += covVar+"[f].branchData[l][c][0].push(r); }"; + intro += "else { "; + intro += covVar+"[f].branchData[l][c][1] = "+covVar+"[f].branchData[l][c][1] || [];"; + intro += covVar+"[f].branchData[l][c][1].push(r); }"; + intro += "return r;};\n"; + } + intro += "if (typeof "+covVar+"['"+filename+"'] === 'undefined'){"; + + intro += covVar+"['"+filename+"']=[];\n"; + if (branches){ + intro += covVar+"['"+filename+"'].branchData=[];\n"; + } + intro += covVar+"['"+filename+"'].source=['"+sourceString+"'];\n"; + //initialize array values + _blanket._trackingArraySetup.sort(function(a,b){ + return parseInt(a,10) > parseInt(b,10); + }).forEach(function(item){ + intro += covVar+"['"+filename+"']["+item+"]=0;\n"; + }); + if (branches){ + _blanket._branchingArraySetup.sort(function(a,b){ + return a.line > b.line; + }).sort(function(a,b){ + return a.column > b.column; + }).forEach(function(item){ + if (item.file === filename){ + intro += "if (typeof "+ covVar+"['"+filename+"'].branchData["+item.line+"] === 'undefined'){\n"; + intro += covVar+"['"+filename+"'].branchData["+item.line+"]=[];\n"; + intro += "}"; + intro += covVar+"['"+filename+"'].branchData["+item.line+"]["+item.column+"] = [];\n"; + intro += covVar+"['"+filename+"'].branchData["+item.line+"]["+item.column+"].consequent = "+JSON.stringify(item.consequent)+";\n"; + intro += covVar+"['"+filename+"'].branchData["+item.line+"]["+item.column+"].alternate = "+JSON.stringify(item.alternate)+";\n"; + } + }); + } + intro += "}"; + + return intro; + }, + _blockifyIf: function(node){ + if (linesToAddBrackets.indexOf(node.type) > -1){ + var bracketsExistObject = node.consequent || node.body; + var bracketsExistAlt = node.alternate; + if( bracketsExistAlt && bracketsExistAlt.type !== "BlockStatement") { + bracketsExistAlt.update("{\n"+bracketsExistAlt.source()+"}\n"); + } + if( bracketsExistObject && bracketsExistObject.type !== "BlockStatement") { + bracketsExistObject.update("{\n"+bracketsExistObject.source()+"}\n"); + } + } + }, + _trackBranch: function(node,filename){ + //recursive on consequent and alternative + var line = node.loc.start.line; + var col = node.loc.start.column; + + _blanket._branchingArraySetup.push({ + line: line, + column: col, + file:filename, + consequent: node.consequent.loc, + alternate: node.alternate.loc + }); + + var updated = "_$branchFcn"+ + "('"+filename+"',"+line+","+col+","+node.test.source()+ + ")?"+node.consequent.source()+":"+node.alternate.source(); + node.update(updated); + }, + _addTracking: function (filename) { + //falafel doesn't take a file name + //so we include the filename in a closure + //and return the function to falafel + var covVar = _blanket.getCovVar(); + + return function(node){ + _blanket._blockifyIf(node); + + if (linesToAddTracking.indexOf(node.type) > -1 && node.parent.type !== "LabeledStatement") { + _blanket._checkDefs(node,filename); + if (node.type === "VariableDeclaration" && + (node.parent.type === "ForStatement" || node.parent.type === "ForInStatement")){ + return; + } + if (node.loc && node.loc.start){ + node.update(covVar+"['"+filename+"']["+node.loc.start.line+"]++;\n"+node.source()); + _blanket._trackingArraySetup.push(node.loc.start.line); + }else{ + //I don't think we can handle a node with no location + throw new Error("The instrumenter encountered a node with no location: "+Object.keys(node)); + } + }else if (_blanket.options("branchTracking") && node.type === "ConditionalExpression"){ + _blanket._trackBranch(node,filename); + } + }; + }, + _checkDefs: function(node,filename){ + // Make sure developers don't redefine window. if they do, inform them it is wrong. + if (inBrowser){ + if (node.type === "VariableDeclaration" && node.declarations) { + node.declarations.forEach(function(declaration) { + if (declaration.id.name === "window") { + throw new Error("Instrumentation error, you cannot redefine the 'window' variable in " + filename + ":" + node.loc.start.line); + } + }); + } + if (node.type === "FunctionDeclaration" && node.params) { + node.params.forEach(function(param) { + if (param.name === "window") { + throw new Error("Instrumentation error, you cannot redefine the 'window' variable in " + filename + ":" + node.loc.start.line); + } + }); + } + //Make sure developers don't redefine the coverage variable + if (node.type === "ExpressionStatement" && + node.expression && node.expression.left && + node.expression.left.object && node.expression.left.property && + node.expression.left.object.name + + "." + node.expression.left.property.name === _blanket.getCovVar()) { + throw new Error("Instrumentation error, you cannot redefine the coverage variable in " + filename + ":" + node.loc.start.line); + } + }else{ + //Make sure developers don't redefine the coverage variable in node + if (node.type === "ExpressionStatement" && + node.expression && node.expression.left && + !node.expression.left.object && !node.expression.left.property && + node.expression.left.name === _blanket.getCovVar()) { + throw new Error("Instrumentation error, you cannot redefine the coverage variable in " + filename + ":" + node.loc.start.line); + } + } + }, + setupCoverage: function(){ + coverageInfo.instrumentation = "blanket"; + coverageInfo.stats = { + "suites": 0, + "tests": 0, + "passes": 0, + "pending": 0, + "failures": 0, + "start": new Date() + }; + }, + _checkIfSetup: function(){ + if (!coverageInfo.stats){ + throw new Error("You must call blanket.setupCoverage() first."); + } + }, + onTestStart: function(){ + if (_blanket.options("debug")) {console.log("BLANKET-Test event started");} + this._checkIfSetup(); + coverageInfo.stats.tests++; + coverageInfo.stats.pending++; + }, + onTestDone: function(total,passed){ + this._checkIfSetup(); + if(passed === total){ + coverageInfo.stats.passes++; + }else{ + coverageInfo.stats.failures++; + } + coverageInfo.stats.pending--; + }, + onModuleStart: function(){ + this._checkIfSetup(); + coverageInfo.stats.suites++; + }, + onTestsDone: function(){ + if (_blanket.options("debug")) {console.log("BLANKET-Test event done");} + this._checkIfSetup(); + coverageInfo.stats.end = new Date(); + + if (inBrowser){ + this.report(coverageInfo); + }else{ + if (!_blanket.options("branchTracking")){ + delete (inBrowser ? window : global)[_blanket.getCovVar()].branchFcn; + } + this.options("reporter").call(this,coverageInfo); + } + } + }; + return _blanket; +})(); + +(function(_blanket){ + var oldOptions = _blanket.options; +_blanket.extend({ + outstandingRequireFiles:[], + options: function(key,value){ + var newVal={}; + + if (typeof key !== "string"){ + //key is key/value map + oldOptions(key); + newVal = key; + }else if (typeof value === 'undefined'){ + //accessor + return oldOptions(key); + }else{ + //setter + oldOptions(key,value); + newVal[key] = value; + } + + if (newVal.adapter){ + _blanket._loadFile(newVal.adapter); + } + if (newVal.loader){ + _blanket._loadFile(newVal.loader); + } + }, + requiringFile: function(filename,done){ + if (typeof filename === "undefined"){ + _blanket.outstandingRequireFiles=[]; + }else if (typeof done === "undefined"){ + _blanket.outstandingRequireFiles.push(filename); + }else{ + _blanket.outstandingRequireFiles.splice(_blanket.outstandingRequireFiles.indexOf(filename),1); + } + }, + requireFilesLoaded: function(){ + return _blanket.outstandingRequireFiles.length === 0; + }, + showManualLoader: function(){ + if (document.getElementById("blanketLoaderDialog")){ + return; + } + //copied from http://blog.avtex.com/2012/01/26/cross-browser-css-only-modal-box/ + var loader = "
"; + loader += " 
"; + loader += "
"; + loader += "
"; + loader += "Error: Blanket.js encountered a cross origin request error while instrumenting the source files. "; + loader += "

This is likely caused by the source files being referenced locally (using the file:// protocol). "; + loader += "

Some solutions include starting Chrome with special flags, running a server locally, or using a browser without these CORS restrictions (Safari)."; + loader += "
"; + if (typeof FileReader !== "undefined"){ + loader += "
Or, try the experimental loader. When prompted, simply click on the directory containing all the source files you want covered."; + loader += "Start Loader"; + loader += ""; + } + loader += "
Close"; + loader += "
"; + loader += "
"; + + var css = ".blanketDialogWrapper {"; + css += "display:block;"; + css += "position:fixed;"; + css += "z-index:40001; }"; + + css += ".blanketDialogOverlay {"; + css += "position:fixed;"; + css += "width:100%;"; + css += "height:100%;"; + css += "background-color:black;"; + css += "opacity:.5; "; + css += "-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=50)'; "; + css += "filter:alpha(opacity=50); "; + css += "z-index:40001; }"; + + css += ".blanketDialogVerticalOffset { "; + css += "position:fixed;"; + css += "top:30%;"; + css += "width:100%;"; + css += "z-index:40002; }"; + + css += ".blanketDialogBox { "; + css += "width:405px; "; + css += "position:relative;"; + css += "margin:0 auto;"; + css += "background-color:white;"; + css += "padding:10px;"; + css += "border:1px solid black; }"; + + var dom = document.createElement("style"); + dom.innerHTML = css; + document.head.appendChild(dom); + + var div = document.createElement("div"); + div.id = "blanketLoaderDialog"; + div.className = "blanketDialogWrapper"; + div.innerHTML = loader; + document.body.insertBefore(div,document.body.firstChild); + + }, + manualFileLoader: function(files){ + var toArray =Array.prototype.slice; + files = toArray.call(files).filter(function(item){ + return item.type !== ""; + }); + var sessionLength = files.length-1; + var sessionIndx=0; + var sessionArray = {}; + if (sessionStorage["blanketSessionLoader"]){ + sessionArray = JSON.parse(sessionStorage["blanketSessionLoader"]); + } + + + var fileLoader = function(event){ + var fileContent = event.currentTarget.result; + var file = files[sessionIndx]; + var filename = file.webkitRelativePath && file.webkitRelativePath !== '' ? file.webkitRelativePath : file.name; + sessionArray[filename] = fileContent; + sessionIndx++; + if (sessionIndx === sessionLength){ + sessionStorage.setItem("blanketSessionLoader", JSON.stringify(sessionArray)); + document.location.reload(); + }else{ + readFile(files[sessionIndx]); + } + }; + function readFile(file){ + var reader = new FileReader(); + reader.onload = fileLoader; + reader.readAsText(file); + } + readFile(files[sessionIndx]); + }, + _loadFile: function(path){ + if (typeof path !== "undefined"){ + var request = new XMLHttpRequest(); + request.open('GET', path, false); + request.send(); + _blanket._addScript(request.responseText); + } + }, + _addScript: function(data){ + var script = document.createElement("script"); + script.type = "text/javascript"; + script.text = data; + (document.body || document.getElementsByTagName('head')[0]).appendChild(script); + }, + hasAdapter: function(callback){ + return _blanket.options("adapter") !== null; + }, + report: function(coverage_data){ + if (!document.getElementById("blanketLoaderDialog")){ + //all found, clear it + _blanket.blanketSession = null; + } + coverage_data.files = window._$blanket; + var require = blanket.options("commonJS") ? blanket._commonjs.require : window.require; + + // Check if we have any covered files that requires reporting + // otherwise just exit gracefully. + if (!coverage_data.files || !Object.keys(coverage_data.files).length) { + if (_blanket.options("debug")) {console.log("BLANKET-Reporting No files were instrumented.");} + return; + } + + if (typeof coverage_data.files.branchFcn !== "undefined"){ + delete coverage_data.files.branchFcn; + } + if (typeof _blanket.options("reporter") === "string"){ + _blanket._loadFile(_blanket.options("reporter")); + _blanket.customReporter(coverage_data,_blanket.options("reporter_options")); + }else if (typeof _blanket.options("reporter") === "function"){ + _blanket.options("reporter")(coverage_data,_blanket.options("reporter_options")); + }else if (typeof _blanket.defaultReporter === 'function'){ + _blanket.defaultReporter(coverage_data,_blanket.options("reporter_options")); + }else{ + throw new Error("no reporter defined."); + } + }, + _bindStartTestRunner: function(bindEvent,startEvent){ + if (bindEvent){ + bindEvent(startEvent); + }else{ + window.addEventListener("load",startEvent,false); + } + }, + _loadSourceFiles: function(callback){ + var require = blanket.options("commonJS") ? blanket._commonjs.require : window.require; + function copy(o){ + var _copy = Object.create( Object.getPrototypeOf(o) ); + var propNames = Object.getOwnPropertyNames(o); + + propNames.forEach(function(name){ + var desc = Object.getOwnPropertyDescriptor(o, name); + Object.defineProperty(_copy, name, desc); + }); + + return _copy; + } + if (_blanket.options("debug")) {console.log("BLANKET-Collecting page scripts");} + if (window.goog) { + // Fix goog loader issues. The required files have already executed, + // so neither re-require nor re-provide anything using closure. + window.goog.require = function() {}; + window.goog.provide = function() {}; + } + var scripts = _blanket.utils.collectPageScripts(); + //_blanket.options("filter",scripts); + if (scripts.length === 0){ + callback(); + }else{ + + //check session state + if (sessionStorage["blanketSessionLoader"]){ + _blanket.blanketSession = JSON.parse(sessionStorage["blanketSessionLoader"]); + } + + scripts.forEach(function(file,indx){ + _blanket.utils.cache[file]={ + loaded:false + }; + }); + + var currScript=-1; + _blanket.utils.loadAll(function(test){ + if (test){ + return typeof scripts[currScript+1] !== 'undefined'; + } + currScript++; + if (currScript >= scripts.length){ + return null; + } + return scripts[currScript]; + },callback); + } + }, + beforeStartTestRunner: function(opts){ + opts = opts || {}; + opts.checkRequirejs = typeof opts.checkRequirejs === "undefined" ? true : opts.checkRequirejs; + opts.callback = opts.callback || function() { }; + opts.coverage = typeof opts.coverage === "undefined" ? true : opts.coverage; + if (opts.coverage) { + _blanket._bindStartTestRunner(opts.bindEvent, + function(){ + _blanket._loadSourceFiles(function() { + + var allLoaded = function(){ + return opts.condition ? opts.condition() : _blanket.requireFilesLoaded(); + }; + var check = function() { + if (allLoaded()) { + if (_blanket.options("debug")) {console.log("BLANKET-All files loaded, init start test runner callback.");} + var cb = _blanket.options("testReadyCallback"); + + if (cb){ + if (typeof cb === "function"){ + cb(opts.callback); + }else if (typeof cb === "string"){ + _blanket._addScript(cb); + opts.callback(); + } + }else{ + opts.callback(); + } + } else { + setTimeout(check, 13); + } + }; + check(); + }); + }); + }else{ + opts.callback(); + } + }, + utils: { + qualifyURL: function (url) { + //http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue + var a = document.createElement('a'); + a.href = url; + return a.href; + } + } +}); + +})(blanket); + +blanket.defaultReporter = function(coverage){ + var cssSytle = "#blanket-main {margin:2px;background:#EEE;color:#333;clear:both;font-family:'Helvetica Neue Light', 'HelveticaNeue-Light', 'Helvetica Neue', Calibri, Helvetica, Arial, sans-serif; font-size:17px;} #blanket-main a {color:#333;text-decoration:none;} #blanket-main a:hover {text-decoration:underline;} .blanket {margin:0;padding:5px;clear:both;border-bottom: 1px solid #FFFFFF;} .bl-error {color:red;}.bl-success {color:#5E7D00;} .bl-file{width:auto;} .bl-cl{float:left;} .blanket div.rs {margin-left:50px; width:150px; float:right} .bl-nb {padding-right:10px;} #blanket-main a.bl-logo {color: #EB1764;cursor: pointer;font-weight: bold;text-decoration: none} .bl-source{ overflow-x:scroll; background-color: #FFFFFF; border: 1px solid #CBCBCB; color: #363636; margin: 25px 20px; width: 80%;} .bl-source div{white-space: pre;font-family: monospace;} .bl-source > div > span:first-child{background-color: #EAEAEA;color: #949494;display: inline-block;padding: 0 10px;text-align: center;width: 30px;} .bl-source .miss{background-color:#e6c3c7} .bl-source span.branchWarning{color:#000;background-color:yellow;} .bl-source span.branchOkay{color:#000;background-color:transparent;}", + successRate = 60, + head = document.head, + fileNumber = 0, + body = document.body, + headerContent, + hasBranchTracking = Object.keys(coverage.files).some(function(elem){ + return typeof coverage.files[elem].branchData !== 'undefined'; + }), + bodyContent = "
results
Coverage (%)
Covered/Total Smts.
"+(hasBranchTracking ? "
Covered/Total Branches
":"")+"
", + fileTemplate = "
{{fileNumber}}.{{file}}
{{percentage}} %
{{numberCovered}}/{{totalSmts}}
"+( hasBranchTracking ? "
{{passedBranches}}/{{totalBranches}}
" : "" )+"
"; + grandTotalTemplate = "
{{rowTitle}}
{{percentage}} %
{{numberCovered}}/{{totalSmts}}
"+( hasBranchTracking ? "
{{passedBranches}}/{{totalBranches}}
" : "" ) + "
"; + + function blanket_toggleSource(id) { + var element = document.getElementById(id); + if(element.style.display === 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + + + var script = document.createElement("script"); + script.type = "text/javascript"; + script.text = blanket_toggleSource.toString().replace('function ' + blanket_toggleSource.name, 'function blanket_toggleSource'); + body.appendChild(script); + + var percentage = function(number, total) { + return (Math.round(((number/total) * 100)*100)/100); + }; + + var appendTag = function (type, el, str) { + var dom = document.createElement(type); + dom.innerHTML = str; + el.appendChild(dom); + }; + + function escapeInvalidXmlChars(str) { + return str.replace(/\&/g, "&") + .replace(//g, ">") + .replace(/\"/g, """) + .replace(/\'/g, "'"); + } + + function isBranchFollowed(data,bool){ + var mode = bool ? 0 : 1; + if (typeof data === 'undefined' || + typeof data === null || + typeof data[mode] === 'undefined'){ + return false; + } + return data[mode].length > 0; + } + + var branchStack = []; + + function branchReport(colsIndex,src,cols,offset,lineNum){ + var newsrc=""; + var postfix=""; + if (branchStack.length > 0){ + newsrc += ""; + if (branchStack[0][0].end.line === lineNum){ + newsrc += escapeInvalidXmlChars(src.slice(0,branchStack[0][0].end.column)) + ""; + src = src.slice(branchStack[0][0].end.column); + branchStack.shift(); + if (branchStack.length > 0){ + newsrc += ""; + if (branchStack[0][0].end.line === lineNum){ + newsrc += escapeInvalidXmlChars(src.slice(0,branchStack[0][0].end.column)) + ""; + src = src.slice(branchStack[0][0].end.column); + branchStack.shift(); + if (!cols){ + return {src: newsrc + escapeInvalidXmlChars(src) ,cols:cols}; + } + } + else if (!cols){ + return {src: newsrc + escapeInvalidXmlChars(src) + "",cols:cols}; + } + else{ + postfix = ""; + } + }else if (!cols){ + return {src: newsrc + escapeInvalidXmlChars(src) ,cols:cols}; + } + }else if(!cols){ + return {src: newsrc + escapeInvalidXmlChars(src) + "",cols:cols}; + }else{ + postfix = ""; + } + } + var thisline = cols[colsIndex]; + //consequent + + var cons = thisline.consequent; + if (cons.start.line > lineNum){ + branchStack.unshift([thisline.alternate,thisline]); + branchStack.unshift([cons,thisline]); + src = escapeInvalidXmlChars(src); + }else{ + var style = ""; + newsrc += escapeInvalidXmlChars(src.slice(0,cons.start.column-offset)) + style; + + if (cols.length > colsIndex+1 && + cols[colsIndex+1].consequent.start.line === lineNum && + cols[colsIndex+1].consequent.start.column-offset < cols[colsIndex].consequent.end.column-offset) + { + var res = branchReport(colsIndex+1,src.slice(cons.start.column-offset,cons.end.column-offset),cols,cons.start.column-offset,lineNum); + newsrc += res.src; + cols = res.cols; + cols[colsIndex+1] = cols[colsIndex+2]; + cols.length--; + }else{ + newsrc += escapeInvalidXmlChars(src.slice(cons.start.column-offset,cons.end.column-offset)); + } + newsrc += ""; + + var alt = thisline.alternate; + if (alt.start.line > lineNum){ + newsrc += escapeInvalidXmlChars(src.slice(cons.end.column-offset)); + branchStack.unshift([alt,thisline]); + }else{ + newsrc += escapeInvalidXmlChars(src.slice(cons.end.column-offset,alt.start.column-offset)); + style = ""; + newsrc += style; + if (cols.length > colsIndex+1 && + cols[colsIndex+1].consequent.start.line === lineNum && + cols[colsIndex+1].consequent.start.column-offset < cols[colsIndex].alternate.end.column-offset) + { + var res2 = branchReport(colsIndex+1,src.slice(alt.start.column-offset,alt.end.column-offset),cols,alt.start.column-offset,lineNum); + newsrc += res2.src; + cols = res2.cols; + cols[colsIndex+1] = cols[colsIndex+2]; + cols.length--; + }else{ + newsrc += escapeInvalidXmlChars(src.slice(alt.start.column-offset,alt.end.column-offset)); + } + newsrc += ""; + newsrc += escapeInvalidXmlChars(src.slice(alt.end.column-offset)); + src = newsrc; + } + } + return {src:src+postfix, cols:cols}; + } + + var isUndefined = function(item){ + return typeof item !== 'undefined'; + }; + + var files = coverage.files; + var totals = { + totalSmts: 0, + numberOfFilesCovered: 0, + passedBranches: 0, + totalBranches: 0, + moduleTotalStatements : {}, + moduleTotalCoveredStatements : {}, + moduleTotalBranches : {}, + moduleTotalCoveredBranches : {} + }; + + // check if a data-cover-modulepattern was provided for per-module coverage reporting + var modulePattern = _blanket.options("modulePattern"); + var modulePatternRegex = ( modulePattern ? new RegExp(modulePattern) : null ); + + for(var file in files) + { + if (!files.hasOwnProperty(file)) { + continue; + } + + fileNumber++; + + var statsForFile = files[file], + totalSmts = 0, + numberOfFilesCovered = 0, + code = [], + i; + + + var end = []; + for(i = 0; i < statsForFile.source.length; i +=1){ + var src = statsForFile.source[i]; + + if (branchStack.length > 0 || + typeof statsForFile.branchData !== 'undefined') + { + if (typeof statsForFile.branchData[i+1] !== 'undefined') + { + var cols = statsForFile.branchData[i+1].filter(isUndefined); + var colsIndex=0; + + + src = branchReport(colsIndex,src,cols,0,i+1).src; + + }else if (branchStack.length){ + src = branchReport(0,src,null,0,i+1).src; + }else{ + src = escapeInvalidXmlChars(src); + } + }else{ + src = escapeInvalidXmlChars(src); + } + var lineClass=""; + if(statsForFile[i+1]) { + numberOfFilesCovered += 1; + totalSmts += 1; + lineClass = 'hit'; + }else{ + if(statsForFile[i+1] === 0){ + totalSmts++; + lineClass = 'miss'; + } + } + code[i + 1] = "
"+(i + 1)+""+src+"
"; + } + totals.totalSmts += totalSmts; + totals.numberOfFilesCovered += numberOfFilesCovered; + var totalBranches=0; + var passedBranches=0; + if (typeof statsForFile.branchData !== 'undefined'){ + for(var j=0;j 0 && + typeof statsForFile.branchData[j][k][1] !== 'undefined' && + statsForFile.branchData[j][k][1].length > 0){ + passedBranches++; + } + } + } + } + } + } + totals.passedBranches += passedBranches; + totals.totalBranches += totalBranches; + + // if "data-cover-modulepattern" was provided, + // track totals per module name as well as globally + if (modulePatternRegex) { + var moduleName = file.match(modulePatternRegex)[1]; + + if(!totals.moduleTotalStatements.hasOwnProperty(moduleName)) { + totals.moduleTotalStatements[moduleName] = 0; + totals.moduleTotalCoveredStatements[moduleName] = 0; + } + + totals.moduleTotalStatements[moduleName] += totalSmts; + totals.moduleTotalCoveredStatements[moduleName] += numberOfFilesCovered; + + if(!totals.moduleTotalBranches.hasOwnProperty(moduleName)) { + totals.moduleTotalBranches[moduleName] = 0; + totals.moduleTotalCoveredBranches[moduleName] = 0; + } + + totals.moduleTotalBranches[moduleName] += totalBranches; + totals.moduleTotalCoveredBranches[moduleName] += passedBranches; + } + + var result = percentage(numberOfFilesCovered, totalSmts); + + var output = fileTemplate.replace("{{file}}", file) + .replace("{{percentage}}",result) + .replace("{{numberCovered}}", numberOfFilesCovered) + .replace(/\{\{fileNumber\}\}/g, fileNumber) + .replace("{{totalSmts}}", totalSmts) + .replace("{{totalBranches}}", totalBranches) + .replace("{{passedBranches}}", passedBranches) + .replace("{{source}}", code.join(" ")); + if(result < successRate) + { + output = output.replace("{{statusclass}}", "bl-error"); + } else { + output = output.replace("{{statusclass}}", "bl-success"); + } + bodyContent += output; + } + + // create temporary function for use by the global totals reporter, + // as well as the per-module totals reporter + var createAggregateTotal = function(numSt, numCov, numBranch, numCovBr, moduleName) { + + var totalPercent = percentage(numCov, numSt); + var statusClass = totalPercent < successRate ? "bl-error" : "bl-success"; + var rowTitle = ( moduleName ? "Total for module: " + moduleName : "Global total" ); + var totalsOutput = grandTotalTemplate.replace("{{rowTitle}}", rowTitle) + .replace("{{percentage}}", totalPercent) + .replace("{{numberCovered}}", numCov) + .replace("{{totalSmts}}", numSt) + .replace("{{passedBranches}}", numCovBr) + .replace("{{totalBranches}}", numBranch) + .replace("{{statusclass}}", statusClass); + + bodyContent += totalsOutput; + }; + + // if "data-cover-modulepattern" was provided, + // output the per-module totals alongside the global totals + if (modulePatternRegex) { + for (var thisModuleName in totals.moduleTotalStatements) { + if (totals.moduleTotalStatements.hasOwnProperty(thisModuleName)) { + + var moduleTotalSt = totals.moduleTotalStatements[thisModuleName]; + var moduleTotalCovSt = totals.moduleTotalCoveredStatements[thisModuleName]; + + var moduleTotalBr = totals.moduleTotalBranches[thisModuleName]; + var moduleTotalCovBr = totals.moduleTotalCoveredBranches[thisModuleName]; + + createAggregateTotal(moduleTotalSt, moduleTotalCovSt, moduleTotalBr, moduleTotalCovBr, thisModuleName); + } + } + } + + createAggregateTotal(totals.totalSmts, totals.numberOfFilesCovered, totals.totalBranches, totals.passedBranches, null); + bodyContent += "
"; //closing main + + + appendTag('style', head, cssSytle); + //appendStyle(body, headerContent); + if (document.getElementById("blanket-main")){ + document.getElementById("blanket-main").innerHTML= + bodyContent.slice(23,-6); + }else{ + appendTag('div', body, bodyContent); + } + //appendHtml(body, ''); +}; + +(function(){ + var newOptions={}; + //http://stackoverflow.com/a/2954896 + var toArray =Array.prototype.slice; + var scripts = toArray.call(document.scripts); + toArray.call(scripts[scripts.length - 1].attributes) + .forEach(function(es){ + if(es.nodeName === "data-cover-only"){ + newOptions.filter = es.nodeValue; + } + if(es.nodeName === "data-cover-never"){ + newOptions.antifilter = es.nodeValue; + } + if(es.nodeName === "data-cover-reporter"){ + newOptions.reporter = es.nodeValue; + } + if (es.nodeName === "data-cover-adapter"){ + newOptions.adapter = es.nodeValue; + } + if (es.nodeName === "data-cover-loader"){ + newOptions.loader = es.nodeValue; + } + if (es.nodeName === "data-cover-timeout"){ + newOptions.timeout = es.nodeValue; + } + if (es.nodeName === "data-cover-modulepattern") { + newOptions.modulePattern = es.nodeValue; + } + if (es.nodeName === "data-cover-reporter-options"){ + try{ + newOptions.reporter_options = JSON.parse(es.nodeValue); + }catch(e){ + if (blanket.options("debug")){ + throw new Error("Invalid reporter options. Must be a valid stringified JSON object."); + } + } + } + if (es.nodeName === "data-cover-testReadyCallback"){ + newOptions.testReadyCallback = es.nodeValue; + } + if (es.nodeName === "data-cover-customVariable"){ + newOptions.customVariable = es.nodeValue; + } + if (es.nodeName === "data-cover-flags"){ + var flags = " "+es.nodeValue+" "; + if (flags.indexOf(" ignoreError ") > -1){ + newOptions.ignoreScriptError = true; + } + if (flags.indexOf(" autoStart ") > -1){ + newOptions.autoStart = true; + } + if (flags.indexOf(" ignoreCors ") > -1){ + newOptions.ignoreCors = true; + } + if (flags.indexOf(" branchTracking ") > -1){ + newOptions.branchTracking = true; + } + if (flags.indexOf(" sourceURL ") > -1){ + newOptions.sourceURL = true; + } + if (flags.indexOf(" debug ") > -1){ + newOptions.debug = true; + } + if (flags.indexOf(" engineOnly ") > -1){ + newOptions.engineOnly = true; + } + if (flags.indexOf(" commonJS ") > -1){ + newOptions.commonJS = true; + } + if (flags.indexOf(" instrumentCache ") > -1){ + newOptions.instrumentCache = true; + } + } + }); + blanket.options(newOptions); + + if (typeof requirejs !== 'undefined'){ + blanket.options("existingRequireJS",true); + } + /* setup requirejs loader, if needed */ + + if (blanket.options("commonJS")){ + blanket._commonjs = {}; + } +})(); +(function(_blanket){ +_blanket.extend({ + utils: { + normalizeBackslashes: function(str) { + return str.replace(/\\/g, '/'); + }, + matchPatternAttribute: function(filename,pattern){ + if (typeof pattern === 'string'){ + if (pattern.indexOf("[") === 0){ + //treat as array + var pattenArr = pattern.slice(1,pattern.length-1).split(","); + return pattenArr.some(function(elem){ + return _blanket.utils.matchPatternAttribute(filename,_blanket.utils.normalizeBackslashes(elem.slice(1,-1))); + //return filename.indexOf(_blanket.utils.normalizeBackslashes(elem.slice(1,-1))) > -1; + }); + }else if ( pattern.indexOf("//") === 0){ + var ex = pattern.slice(2,pattern.lastIndexOf('/')); + var mods = pattern.slice(pattern.lastIndexOf('/')+1); + var regex = new RegExp(ex,mods); + return regex.test(filename); + }else if (pattern.indexOf("#") === 0){ + return window[pattern.slice(1)].call(window,filename); + }else{ + return filename.indexOf(_blanket.utils.normalizeBackslashes(pattern)) > -1; + } + }else if ( pattern instanceof Array ){ + return pattern.some(function(elem){ + return _blanket.utils.matchPatternAttribute(filename,elem); + }); + }else if (pattern instanceof RegExp){ + return pattern.test(filename); + }else if (typeof pattern === "function"){ + return pattern.call(window,filename); + } + }, + blanketEval: function(data){ + _blanket._addScript(data); + }, + collectPageScripts: function(){ + var toArray = Array.prototype.slice; + var scripts = toArray.call(document.scripts); + var selectedScripts=[],scriptNames=[]; + var filter = _blanket.options("filter"); + if(filter != null){ + //global filter in place, data-cover-only + var antimatch = _blanket.options("antifilter"); + selectedScripts = toArray.call(document.scripts) + .filter(function(s){ + return toArray.call(s.attributes).filter(function(sn){ + return sn.nodeName === "src" && _blanket.utils.matchPatternAttribute(sn.nodeValue,filter) && + (typeof antimatch === "undefined" || !_blanket.utils.matchPatternAttribute(sn.nodeValue,antimatch)); + }).length === 1; + }); + }else{ + selectedScripts = toArray.call(document.querySelectorAll("script[data-cover]")); + } + scriptNames = selectedScripts.map(function(s){ + return _blanket.utils.qualifyURL( + toArray.call(s.attributes).filter( + function(sn){ + return sn.nodeName === "src"; + })[0].nodeValue); + }); + if (!filter){ + _blanket.options("filter","['"+scriptNames.join("','")+"']"); + } + return scriptNames; + }, + loadAll: function(nextScript,cb,preprocessor){ + /** + * load dependencies + * @param {nextScript} factory for priority level + * @param {cb} the done callback + */ + var currScript=nextScript(); + var isLoaded = _blanket.utils.scriptIsLoaded( + currScript, + _blanket.utils.ifOrdered, + nextScript, + cb + ); + + if (!(_blanket.utils.cache[currScript] && _blanket.utils.cache[currScript].loaded)){ + var attach = function(){ + if (_blanket.options("debug")) {console.log("BLANKET-Mark script:"+currScript+", as loaded and move to next script.");} + isLoaded(); + }; + var whenDone = function(result){ + if (_blanket.options("debug")) {console.log("BLANKET-File loading finished");} + if (typeof result !== 'undefined'){ + if (_blanket.options("debug")) {console.log("BLANKET-Add file to DOM.");} + _blanket._addScript(result); + } + attach(); + }; + + _blanket.utils.attachScript( + { + url: currScript + }, + function (content){ + _blanket.utils.processFile( + content, + currScript, + whenDone, + whenDone + ); + } + ); + }else{ + isLoaded(); + } + }, + attachScript: function(options,cb){ + var timeout = _blanket.options("timeout") || 3000; + setTimeout(function(){ + if (!_blanket.utils.cache[options.url].loaded){ + throw new Error("error loading source script: " + options.url); + } + },timeout); + _blanket.utils.getFile( + options.url, + cb, + function(){ throw new Error("error loading source script");} + ); + }, + ifOrdered: function(nextScript,cb){ + /** + * ordered loading callback + * @param {nextScript} factory for priority level + * @param {cb} the done callback + */ + var currScript = nextScript(true); + if (currScript){ + _blanket.utils.loadAll(nextScript,cb); + }else{ + cb(new Error("Error in loading chain.")); + } + }, + scriptIsLoaded: function(url,orderedCb,nextScript,cb){ + /** + * returns a callback that checks a loading list to see if a script is loaded. + * @param {orderedCb} callback if ordered loading is being done + * @param {nextScript} factory for next priority level + * @param {cb} the done callback + */ + if (_blanket.options("debug")) {console.log("BLANKET-Returning function");} + return function(){ + if (_blanket.options("debug")) {console.log("BLANKET-Marking file as loaded: "+url);} + + _blanket.utils.cache[url].loaded=true; + + if (_blanket.utils.allLoaded()){ + if (_blanket.options("debug")) {console.log("BLANKET-All files loaded");} + cb(); + }else if (orderedCb){ + //if it's ordered we need to + //traverse down to the next + //priority level + if (_blanket.options("debug")) {console.log("BLANKET-Load next file.");} + orderedCb(nextScript,cb); + } + }; + }, + cache: {}, + allLoaded: function (){ + /** + * check if depdencies are loaded in cache + */ + var cached = Object.keys(_blanket.utils.cache); + for (var i=0;i -1){ + callback(_blanket.blanketSession[key]); + foundInSession=true; + return; + } + } + } + if (!foundInSession){ + var xhr = _blanket.utils.createXhr(); + xhr.open('GET', url, true); + + //Allow overrides specified in config + if (onXhr) { + onXhr(xhr, url); + } + + xhr.onreadystatechange = function (evt) { + var status, err; + + //Do not explicitly handle errors, those should be + //visible via console output in the browser. + if (xhr.readyState === 4) { + status = xhr.status; + if ((status > 399 && status < 600) /*|| + (status === 0 && + navigator.userAgent.toLowerCase().indexOf('firefox') > -1) + */ ) { + //An http 4xx or 5xx error. Signal an error. + err = new Error(url + ' HTTP status: ' + status); + err.xhr = xhr; + errback(err); + } else { + callback(xhr.responseText); + } + } + }; + try{ + xhr.send(null); + }catch(e){ + if (e.code && (e.code === 101 || e.code === 1012) && _blanket.options("ignoreCors") === false){ + //running locally and getting error from browser + _blanket.showManualLoader(); + } else { + throw e; + } + } + } + } + } +}); + +(function(){ + var require = blanket.options("commonJS") ? blanket._commonjs.require : window.require; + var requirejs = blanket.options("commonJS") ? blanket._commonjs.requirejs : window.requirejs; + if (!_blanket.options("engineOnly") && _blanket.options("existingRequireJS")){ + + _blanket.utils.oldloader = requirejs.load; + + requirejs.load = function (context, moduleName, url) { + _blanket.requiringFile(url); + _blanket.utils.getFile(url, + function(content){ + _blanket.utils.processFile( + content, + url, + function newLoader(){ + context.completeLoad(moduleName); + }, + function oldLoader(){ + _blanket.utils.oldloader(context, moduleName, url); + } + ); + }, function (err) { + _blanket.requiringFile(); + throw err; + }); + }; + } + // Save the XHR constructor, just in case frameworks like Sinon would sandbox it. + _blanket.utils.cacheXhrConstructor(); +})(); + +})(blanket); + +(function() { + + if (! jasmine) { + throw new Exception("jasmine library does not exist in global namespace!"); + } + + function elapsed(startTime, endTime) { + return (endTime - startTime)/1000; + } + + function ISODateString(d) { + function pad(n) { return n < 10 ? '0'+n : n; } + + return d.getFullYear() + '-' + + pad(d.getMonth()+1) + '-' + + pad(d.getDate()) + 'T' + + pad(d.getHours()) + ':' + + pad(d.getMinutes()) + ':' + + pad(d.getSeconds()); + } + + function trim(str) { + return str.replace(/^\s+/, "" ).replace(/\s+$/, "" ); + } + + function escapeInvalidXmlChars(str) { + return str.replace(/\&/g, "&") + .replace(//g, ">") + .replace(/\"/g, """) + .replace(/\'/g, "'"); + } + + /** + * based on https://raw.github.com/larrymyers/jasmine-reporters/master/src/jasmine.junit_reporter.js + */ + var BlanketReporter = function(savePath, consolidate, useDotNotation) { + + blanket.setupCoverage(); + }; + BlanketReporter.finished_at = null; // will be updated after all files have been written + + BlanketReporter.prototype = { + specStarted: function(spec) { + blanket.onTestStart(); + }, + + specDone: function(result) { + var passed = result.status === "passed" ? 1 : 0; + blanket.onTestDone(1, passed); + }, + + jasmineDone: function() { + blanket.onTestsDone(); + }, + + log: function(str) { + var console = jasmine.getGlobal().console; + + if (console && console.log) { + console.log(str); + } + } + }; + + + // export public + jasmine.BlanketReporter = BlanketReporter; + + //override existing jasmine execute + var originalJasmineExecute = jasmine.getEnv().execute; + jasmine.getEnv().execute = function(){ console.log("waiting for blanket..."); }; + + blanket.beforeStartTestRunner({ + checkRequirejs:true, + callback:function(){ + jasmine.getEnv().addReporter(new jasmine.BlanketReporter()); + jasmine.getEnv().execute = originalJasmineExecute; + jasmine.getEnv().execute(); + } + }); +})(); diff --git a/third_party/closure/LICENSE.txt b/third_party/closure/LICENSE.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/third_party/closure/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/third_party/closure/compiler.jar b/third_party/closure/compiler.jar new file mode 100644 index 0000000000000000000000000000000000000000..c7006a8803546c236e103c083f3abf5326f7c583 GIT binary patch literal 5899263 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

+Ejj5=u$D!rDCkcQ2R%i6r_fQl*V; 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�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

P8K{wJsafPP+)v6eID$mrO# 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

S;qCOf01(8yc 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 )f)H1^!xdQhu#Da{qtoAmVQS zpSAh_plzpBXXUWPP`*cYo(&uS5(W*O{}IdwG#ZTyA_+zT0s|VB4})y7Sa8+&V>;GQ z(g`h`?0H#z(VXBUQ>48hRD>oE$5W#CQ>?188)XxLg1|bFpYU~ZJ(X#<^RbiJ`fkDp=ijA1nKWcy!h}dLE5uo)-5?~Mo;lLH35Cs{J=6Y!8B1j_*bsdACBq$AiUtX7q zs3{tz0qcZyf+_fo^}_jqQDZzcAWEf2ab!c?Y-^33bN(R1*L*YoX=-_JZ`%KiPCJ{s z%PAlNx#Y zP(+kv!tMvMfwMoCzlFI|vjf==^&zsl)}lRI7aCLV zvf8E;SE8a0QSr3gz~?j)LL#14Vm&xs+R!tZ{W)iVEnzh}J_hsbv1;#_8DhnOf?eoW zkaA}pDHJTfz8m)p`#4`!uOYjxaif4VO1nrFs2!{rQgg`8jq~gy*-lIxE>1qpVtdNG zwH#*x0L&+{ysV4(mGIqn$V>Q+S(6PGAUKBBqP>`L6p&IV`P$I8-~e~(k|mNkheoN6 z`%+hA@GEN*zjy_DVeu|M1jM^|h0?ne4?DNx*HR1mT@rA$Wr3^s$ana5G7FhZP0YnpPEDVDk{XCZ{@w2qo%ynfT^ zNi`SGmX=>-ms@I9>dGb|7Mgf2PrOvC*eW=m zC+z`2P}04B-|m@LuVB|&m%*_?dbgfGo6f*svbTAbn>ez)j!L;MJh_;M9oL}{p&|d5k2WtWWG*i;l;mSB!aU+9LQq1I@KNR!bM0;j zzfY7kL`U?5tsJCbE+0+F@Eq5z*^*n7-xG$&xau~42LkM@TDbO%b)QBwdre`$0$UNz zDB2VhpTsLHVl9BVsWU!7U(X=;9joANVQ3jZlpzd$LlABe;T^&|&6qYovp%~|cv7DE zXHSd9Fx2x0UVT7LePnj&Cs%P3otuY0jb0P-P-p;;w1;zEWCNxC&x!KJyz0uY>*hXQ zoAlqr6x20R2kGYQoKPiT`LG0Zf!YZ{kuDSokYD^N;C%$8*@G8WAhYY!O~D)F(q7~a zQhj6isyT_FX2e|5seHg6ICb-Qvs$6TRyho8^AO@f^FM^RuS@=u&b)=srbR_^1Bsp> zgMNiFLc2C-ps35s4b+Fm1OS5fJ3MuT&=t@CK@|&Ty_UOSbyTa zFo~XcGR{j8=Q#`Bm}n^W|I@N#tCKTt_RH=DLH(Z{;{E5h?SCEOO{;xrp{%0%hJK}) z;5di`(uG6T=S|YJL98%GvIqnjYpFwY8Y)o1O@fN1rcY1N2sTS(G|5DNNiQ~)SS;KY zRkyH&L(5pcXZwC~d{y%`$<1~*(ojIt@J>HIA>QV+JKcEgIL-VHhi{{PJ3jdQ;NQB@ zHe(cPv5>se zsCZVqh}N@ZVMvsW#%sQF>icV)JIp93376btGnWlL#AZimScgvx12YckC(n`)#?qKL zcqVBe>v=utB<2tsF6+0cgNtz)Vw#U`_ER~?BsoN-9E)MgrsZAkYILXWgec2?z1 z8rR>*A2d~Sm)3`_9qvw`c^aXC~#_E&cuySGYs&D&9kSD-IW)Dc*yGDB}!hVE(Cm zW$h^>3SmVBpRZZq5xamhp|UB&)#n)^_A1=d?IhN9 zkHfL8)53maUVYKR%D6J2cJDdTfe+0q-fL|s-t&%r>iVvmTsJSD>^56?Bc%G(y-nhb7QT|Nyyus2Hft_ zJFpj7(HU(u*jO-4H?cYr=yNdH$nYy9*L4{^ABng3Slk}lUI}p=!b%N;h}C2p79N1> zkSjmU&sed+YIHsht31?i^Y8(4qs#ANu@Qd*aY?LTYsZ*q3=$nsR)``A?4Ibgxl>9 zhz!38-EoymwCfTm*xsttY9W3qQ?720wG-NrnFLF%cvJK{1ADU4p$Hx} zj7&C^J4uhH6tNh7@O4u#!#w&X?IL2_CU?AlOtjQqhwc6sYBj3!yKtB@d%=5efE$eT z+<^lqJGe&rT6u_(_;d~1wS4!3z$d*PBsrFtmFmqO1M;31d6g3_U?UXMv?W5Y=nlWY z2D%``y4)|Vk6zk@ECOZ$X$<`9iaa-ZCNl&&Fc=0bcmP5|=m4c6ctFC9quKhJ4f8qqt6xIOo$hY3wj0f7I9f%7@wvw z#N*&+HMXnBpZ(#AZgz=iO+19&Ca#@R(8L{0#w{e_kSRyL4^Nh3}M}ee3m2XjiqAUiz!96 z@zFW42_2mQgE9{R=L5v929gWy$nV7vv{7zG0!05w7*3TBO%3m-J{qVL{$Y`PyJVN) zVRiFeI#zb{O=8wQ6`R*{_Eiq*CoVc1c(W`Lj`I%MjwF%rZK#VCoR{tAmd$jGdjd*= zc#ooZ=c8!>t)qSibnOZ5o(JMpn*|haE_DgS z%{D>QE=I>MZhHkpmk=k5YJ{FAu5<4Aa(~%Gc~1#$F&qfXn-h4`9|ATorPh( zr_54CQc1PfyfF!2z}$-Vqj+3c9YR7$m8`LS17B)|h42eITN=16__k?~s12@T-)#<> z69PRHhK26j??3FfJJ<)pVZSAi|Fy9E-!(|?_Wx%Y{@;pN{MRJ^U!qr&|E)|+n3dh+ zM;PgKSilg3A}rvSgf6=PWZxrFhC~_4|BR0#^2|HvvoRtwARfiOrc=?4R4T@E2f%}3 zuo@_Tnk!4WO8;{8J+y23xO@G;>!Vw#pvcz{!JNjRX5d9I&FVQxv`tmIg>V*8KZHrrB-fe%S=Wg|UjSBfecC8`IZM?L_#4DDp4#Jg

?git`g&5Bc0jmOkM%{vxXfms`ix4-%B^S5ilpT1WH3knjRa1tAwz zE*L(L=ZMGDAW5S5|8VwB;h{yrwq|VGwr$(CZQDDxZQHhO+qRP(?j)V=bNhCmb02P> zeprv|Y1LP2&Z;r~QNHmJa$dV$JJE(DqBW{LVLb<$KEk6A)(>s$p>MF|Gl zZWUYkO$8J`Ius}k!2r&^msz&?naJ555Mzs=Z(gZ zxlhHZ*&3S!i&UBdlC$II>@%J@&h4$dzTR(u`e<}V2?`R1Fi%WmCOq=^;Xno}mKUyqxhk`5@0KmTgS$L`{do*d{K_69%M+_$ zzE#$e)@B z!;`}wB%QWJ)iHAgNlV`ZJLg0`(8Z5r1=#qxXJ56q2FnH}#Q=_4W29!i$lFA8`9km) z%mU_Me#K!1SvIU=v|AOVRmE06>bq?JodGx@(vVGwq%RcbZ5 z%a!w+MzqDMRtZ87hl{JNt*bSwood=^tyV3Yb#|cd-)Ft-(n8Dgi+l8(cfFstPO}|n z|K>Q^J@1dYZb=I_Hi_Wz$3%t9AReG8(UgdaRmNrD(;glcGf9s@2%AEt5t-D-c?k26 zne@kj2v3C2pfrz5>K-HP^sWo6-$>Z$6U;->s5_*zq(fAoHOY=m;C08QdMs8TI7ddx zIy+XSuR3O>MRn+l1;?S#|LEn$=w%WeW7#FLW|g!oPE~odG|M43ij~&=eZ24qO`AKW zAHU-AC~BTf$jB;g(H!r1Jm5Jv_p#I^@I{}Dr=PqMwd>W$O&j-@4$&d2(?@dZ zh^IEmqMr(*KKV;Us6O>vCvlYt^G)?fRjUC+l_m)cfT4Gx$1b&F{dpFY3{MI-K!@j#Z0TcPBxE0WUf@>oB1G;LtnW3GA8O{+2C$dl4B1Q?ayBt9goxC?Pgp zv6Zi$5y3hJtn0}1%9yFNx{wqt4ovGvbu~C-odV5*{SsJLOjcW2-rb#oVoF9%A8e*p zqP?0Ffq4>1m|dG>^I=dRn8p|>} zqa&=cSzv-{fI^%haAb49Nc+MH?T02J>t;|^emya#!DK8}L#_gkZ?>}{15Px(S!ee- z1^fwf3crNpP=eh>dym}O(EnIUj3?k(s7DNq{NYJC5>*i68VD|X6 zync_DGP_9J02*>=MfA`XRV9k6LBs-ZTG))1_O@d+D|4|c%#eR*)j)S`|0x_isr1@NcE|_7O!_O+LYk*w|8z?qAq0l~fs5#ESboeq^ zOo9Xsu5LmMu$YJPYGmEOy;qUyyoo3Y#^}8wFt-{=VW^9FS*ondNpOsFCAh8IBZCSf zkLiZ6n77WgLV%9g@;Mx+Rt#N>vz@oRMgxaHwcSV>WaMtF1;O^}CML{41n%n6hOOf* zEVh_-(ISvbHyT&$-{#`F6ztew!y#KJGho8^VU|*61Z_0P5Tdhwo6JC4F;{PH7E%Y= z$qLM332_;NEX$3BE`@`H`#uE3Y)c)1R(p$toXUB*SZH^KjYujc z+aVT(>6S25k!V}^(5*{w3j)W}oUv1%FyqhJa#w+)O{7Rh&^lP5R)KRBV`h~o^JNHMT(wn2elgaV~4rrm>Pvd&zdj2025MPBhWdm6?0mFzon)I?2Nynu`^YgG{!2??F@lr!RLbHi z!lg^*O&Pit1HxG{+W{=c5D$^ST4qB>FP8NMO#5>-5TFLJ!{}vBB0z{yD{f=h8`Sk8 z;_Z1_2P$#(oZghEyO9Ht80SI!t+NHMWrx|N*k>Y=c>Cd`m#hHv4HCmG z3A4mK7f@873kYf*(uPqihTaBp9C)GuID44U z!0>(40|$`73=9VA@NBYpEQQv|>?Rr{TQ(y{>aA;r4Tdiz&b{(NOyQFf;sJ*v#0pD0 z@j`ankcQPl;6#I`B;IPg4kT1C@D9_V2$~_zVVaXv=4c14$HGY|T&4mz z7Q_I{4~Kqrf+@7iXv&!4b*osc(aCz16q()^!p4$ISwTqX-BJnp<`oSzl$G~TB%&i%Z_1s*r@7#NI^$nLeuT$qLVluc?Qd&b{1RKP-!;!XB*%t?aS)y=y3r6N5Ia{kI?cS~;V;#%$uI6{yuvoi87n}S=q|C(p#?wh!L zlkDa%#5yI*>=)WxKj3`T&(7ZBxIR6y<-jf2mHj3at%V4Sh!K=D)O#vc&e`V5DJp`K z^`JKITbla&DT-z+s0HLZeqZ9$K0|+#=laReUw$X`!+c}FfD~zl$r*dJ$k9Jg4~hHK z{g*lW=b+4GHih)@cuW7?p3YDAjQ!jay|3bl;=60se&LI&Z{}zI9k=;h(@XBm{XI`c zIu3LY+WM#Lsqfq{XRnBttB>9&n(+Jy_&aMBlt=Rn{^T!l_hQs@;OtK-yz)c9w}3p; z`%HCxzBFkUD9}3NyaS*@bN&d0#Hqe5v*^DdE++cb3s22U1m23JsprU9d}DYo`QRxe zUz|`gmO(KrVdiJJo+@iBtxVZi24hnU00W8o>qi-&~R*J~~?MHK%4BUF?XP7R5(edF-3T(eq7>nJ|KC>!V`lZnl7m{ibZC zH8Lpb9})`}lHz$X%Xfu(wS4QO5SfCVPBztGs$|hJNo%fI4Q{#P)n+2yEJ9yD!V#i! zHI4H{DVG|R7kuXRS}Ia^=HHMKW$LAtBTj5X`y8q-SKCwx*FYO)?X0WC(}4+PDe7_y zD>?zky(KDi369hU9>Fy}aQ=nUpn2uO7*H+F!y`rP4S-K}*&xf8g{@1P(n@21k#J*i zGi#Y7{u`PsVr-ax|E9u&%6g?t%jq z0Y}jeVxPi~X4IG~tg0-v)j;YRGfWT*E!`!Z7Mz&T%hQyY z_~F*dLdB0NENeA`l6>!6$o+Zsx(!D4A;}Dp5DUR&E>(!(NNUN zdC^eSH^??Y3FpKR>cXVmP0MDx^0?tEZ<2zn+}yg1(*}pp1l`Dp%Fs?!SXtDRmi3+w zj1f~_JjNVxAkyGX3QslRPjlu}nagZK;%&q`6|3?A>R?;gVQ|{`>ab9a{wkJ5lU=#> zsMSa&>9|WWxg8HT@j}NArRvM!OO1&j7^VbDbTnA%i>#N5uF3oq2kh(6eJ7rg#Z)d#Mi>8LTA|dG!;cFF=1Y1NJkldpnJ77E zLAe7Pl3=6f7xb|u+@^xPszX_$R^bk?s#G?qqDko<#XyWFpbM2x(9A@#5aFBMDnW|^ z%VW`&JhB@ss3QrR=9%e<8j&vTV`-wqf{&tS1!!3RR{osuE-h?Mj;~6*o@O$rY?oY$ zIBbuw*oEs+;-Jo(kR4Z9#6Z!^sOz&a86mGO=9GBG6yg-to&PZ zv(T-oV+|O3CcS3fuNC=nq{e{<0UiI%92jr8T%Q>f1xXlO$T^R{m;lD%%@BX3;Ng8j8@g_;y*EOmKQ!1`ka)eHJX?xOxFB*E-y>cGGzi{E zd2GoJR`8G>Px-<8^C`%2&5(@i?vCwrqsmq7U{O-x6Y7Gxg6EakFLgY)PWXN>#v9_0N!+ETf_-E@27!wWVXu z6eL}^MdupZ$#7qYi&T;ZHd;lLXIkw5653Xh9&TKWS;V#W?m)1Ti0woxmQuL|>`Hbu zBtpEQxFx)+wj#SL_x82NLAlNQc*^z496@f_?(zTo0L*M8bEoQr`n254*9CcynCvL*H>t->#r<9Zu^qxdE0Wr0>^T zOo~&cuBCoQ?YQnSY5S`j(O2w&pYriK|HhY@fn?CU*aNsJ$GI$MT#hURx`Z(&&y;J= zc-wEe8OJS^w7QQF7v+$uke@9!ukfn-65|j+-QmV}{>toIiW!d|4!- zb5BX_^0iCYIeJ2|KSSix*ot`S=9A~A-4)8BCabJ(!Ar@1!3(+m-Xv7vonQC*k$JWSe}P`ehMtzAC0z<(ag4Uog>d+hYIf zMGa=rD%;Rhj#2~RtrJ_U|Dt6UsNHw8D*N%%PVsi+rG91; z)XHf-!et`^vS;6a+Zc>k5C{U+A9Cc6$oTKm2<+ns>m~j1>kOnI^PX(-j(SC5d0C1TLOM2|A6h0hhH-Mz~w%NoGm2xB;lPw zzQCj_Icv{$yEnQ#k@^5!TcqBWse97$3JQ8A8#|{p4dXtrMjz_+1Js`EuVubS0|3Ic z-e{P@(|A4Fe*paJ%Go2`H>yrQbNI0C4R7NC7gqwl;It$(3ux{=9>nWYc`_)c=LLb& zIYNfq8oRnPxmxl!{85iQ>_XA>YGYe0&M-7b>Ru{+RSc5Z2{1DU&6wc$=y(2w(4pj2h&S7J`!53tnqoXy&_7imZScJ=Qs zBnZ{6oHA&@zLjPPA9uAQH=y&SkDIl`-NBi(8!4RbM<2#4f&n-izp`;t7 zatpcbBXVcN8TKn1t}7ueaiFx!A*rbpJf97zkF_*-=fD~fLpTI4Y_Cu&UfYvD{WC>!>SEqq(I{+Ey=hydw(>>y}=Rqo-e@ zE(O_~(jdkDR4oTE5iho)a1X}=ts3y^fTmA5v71NLfm8YB(TX|Q6(I(G9^OI$=D-2U zm7qx(x9n{@cs0pGzQ6t3LH2?3wY)4pyp4f-jXE8IZ>~`w9 zh}k4*<3#fwSs%^Fi9QA$pR*-zHueV&EFg|y!k6~Gqu1d8F| zA{pKwV-hfPmX>2$Efap6Gl=_~=C;^QPafSdobDw2-zUw^wBqI{uM4()ahC`3&d}Kc z@UM3)nZEGs9my+(zNqi%hb5PZf7o_n`94C4YA1L8d?F{GQdF zZm%S^1Pp)3utdalC~>01>NIu zjt}*wU$jIkH}h}aIenIZ7qXx1<5s><6bnW^k6|FmJ$~DR(-LOY2b^%&WdqHDMsjET z0U|Nc=Kb>m`kPOyZ7Ppz5RobPV0K%Y)5lwjjzcLzzLHd^$*QN8sf>>m|3D&%zd}QG zWMtKE$-vUw7SMr^J#$$;pk^Icm-e$lRk)iC(6~$}gQWZ^$C6uK+UujaxJ+I-B(9VS zkaxqmX(TGi<~>|gjrN}YUvC-&_-2X*vMbbC_@1=ZW^0HT@Ka1pIEcf~p~xib-0Vp# z&nKFerp>8n`h0Jm!e1z%>oPgbKLO2wFvwc=W>na%izt0_pqk{jMe}OQ%6#gO@o?`k zM}SU*8;;L-z4#VOq*ePUDCzCfzWL=f$EIKF5Zj$6%&13py)JBMP-xwP@g$>3zh)a<-#&McHoQ>8y-u>6{3@2>NcJg-InYf3 z9(IoRy)B`BvP&O=Bn14VWBwrw|H0to%^MV)yX?zeNWjN?{G27?ccc0EMZJ= zN_|oe{3VYiUU>SC@Md9_6&IECqr;$M!K-*IirLDEJ$2cpW7~D@$un&SH^%*H5uye; zk_Yn-Y3XSPO*{I8Oz#9K4H6Yjkn$CTJYgk(U$XGGm3~`(RlO!e~`18}15vphchkQpn{2XegQtN58{LXS8;;#B}Z%!FHaVUwj9XZi8B^ z;e)zx3QL}SR8hm|9ebSEU1d3+X4z_-}8d+qn3Y?Bdu}DkW1{yi(!sRRF4``WLJuHgNs>VTi~!| zmR*=FL%JDk9`-6#t>92l$x4ZYD`sh64kOcAr>sp9-5jf|X8zNd&=Mz!W@D>1pmr>O zGNBCi`&63;_?ArqEIJ|FNcSgDTXwp+ZaSh>2na-E7AvT*vK3J2`FlFmw|!U}66s$S zOg(ZBgh({0p5167YlH_n_9T+7Vl` z<_1jUFQna!OF}(WiL9^&dgdrj3X(Qf$*AFE^YHx&#q5JQ{Z$uVjG7FT|51 zW=^fgWyBbq`lG7}j^22SC{B8d*mL=PKh^b{CPCRXnWDKVTwfJ7QN$~>v1x2cxm8X= z7Om7h&Z@1pIZ}}IMqrx7=)faiuhax71y`768zr5HZb^!CJbffH)%5~D-4)+_lHdGr zUHVVY>9(}W?Oms`eeN$O$#_9$-*|6(+N>~Js=2&Qj_U+Db&0S?b1GdzYD+UXWQwq^ zSj@{O4->Lz^%mb;>RkFZ8Kv{i>X4HEsd_}(*nB<^0}8bpYIx5 zMz496&|Vv=Qk^Z`j$xKKe;aK+xb4YvxGf^DT~#r;t?F~MttQi;9;mQ~ zopm8vvsREfww_Ei%D+gmY7i3l7!`%nZUw$&`Zz8?aLkVS3A@Znn<>D(r2$Euf7@z^ z({5-MZ2>cltxG)Ff>O7*%6D1`BZ|0cL~Gi_9TzfG^vxUnFH|a-dJIWA;1_WeWzZs1 zADkq~2(7J@w)0OCkI3>}lDMo2HKlz`%^Ob0gXWjez_+p}$J_)nm1CtF8R;fQIp|~> z4b>cYWNrC!dJ9M#0n}>=C*78ScU1>5L6XwGRUnwxk;-`% z60D#qpb`yGplZ4NT-D`_)v>R~O|~x|&buE37Ci)fm=-5A%YjG<<|Ao!bN6vOo%V1u z`}6hv4cw2VS8BLl5rIjQkuEkMf=CK%nzU~UJO@*aQIDzQI2HAX8Y;DvP}WLaas}Nr z!~ZxA*&}DuMm)&v)`K3!Q2xrr6kX(tC(7Em^9V%0YoKVKC0tBXI31 zA1CTD9_K4$mbG~BjR?>Cmlwbll>!)}S_~oFVT>G4aQrg8_em9MN5PwiWLM=+)WJ|Y zf5P2V3*<~BESRhcCL1}4!f6$ZbVw;vqc2|j%jZ$614S_+$-`<@`El%Z1#Tp-QJAL>{~;2kXK0wuuT)g02E$H(u9nXyQuh$k@puJdWPz?tWkL!&Dwd zg$9L@N>F5V8V!x6`dC=tUxC&k=+LMLqGtLS>}8;%bp#=MHf3nXPf4VqDUVa-q8tTo zLGfA|s`>gOkma2sxvp9mI*ZDhEb4N$tLU~nsoaa_c40d72(-B$LRj*{CjXzcv2r=E z9%l;7Q|KbG5iqoi)Qkc(*`O1r%lvb>%tAv#;d9l*)q(}+^pZ#Q`bBmN{c~yI)Ke6d zygb4*4Th3mig1vXA6E(B5cZ-R$JAN6R;eT0*Av26S+KF=e%D+wz3y`=VqxztHsx?ZVc>@vf{2I%3m{vpimp`K9ofNvtpxktPP-JxM4-=MLU>+u7~ znq(&Fw7^dWnTz1s_kR)Rl(nfW+ra<;%=|94x&QlB`yUnjKh!uHkQzEGsNeK3(+oVT z0x+6_5+wZsYS9Ra!6bSXCJ^ z&2&3P*0wv9YBxsOw${3pJI##JKTo?10ziWeq3Ub3MYIUDzbD?5_| zHg>x)_QeO;?Ss;D+`%{64BxGoyL~y&o~f8F$GGXY>-|cKFw>`l%QSw=TpX zybNA~MSPTwJ#sold*XbWbl)NM~@%Q zn7Q!>=uH2VLdi`%CPT_h&zPBbsFU?4?z55Spie-_{cgl??GO*6n7T=ZrW#+cG5x5A z?t)*uIX_ce{sI0;UgMv*ucWxoME>J;NDp;;pSnBiU#EJDc9r!^m3MnrYZVtP z^T)kLXp(GaZEQq2t0!Q$@>U>!%UlIge;u1CD4|jz?gCz=1*{W>sZ7jk+F=4Ggwxoe z4n7I5TC0)MDEOZ=8#r)*M7u0}nCYF-lD*g^N~d(3`%{7!zV^n3H3|-FHl+z`mS0gz zUE30b>v;|zbcDb9Yt4diY4=zJ9Am84CONf*tY06Z)$e9B=y@ql`3lKfZmOvh7HW|= zbVgWnqNEV-0x@gi+-ixK7s|7wN&G3H6g()jZ)#UgR!SZv-o-JX;&Ylh8X<^yTzE@p zl*^epj%^6GdB|KOy4BF6MU9ZTdjKYuAk!x^Tw{KbYY3_!Rsg7-umeb^wZ>L|_*s=T z%TUndP~u-32)M6;6UN;kF>TG!cl1m6?aq85c#W;xzZB7ci=lG$bb{M+Y`YK&MJ6b- zrZ^QERtqe>19@xqt}m}*dXW;e7~?yP$kUBnWL>O^$b9^KaOR*eL?*VE1?sD55dsfk zF(QN1m-imFt;Gf<^Y*;4q;V|*6SpisUOmjl7!M3M+!VBBVXwOMQ7prmidM&TzW1RO zosEv&d$CN}jr|)&UtK89Ag8bz(oY(=r9D%IWS!{%RyR;5cUWK&a=>tlb*mG{Q3$LS zyv_O2Fc|)k&MjbH!n%g#WP?l(5jiy|JS@Gii{U+%Zb0RsET(SKA*yEU^L|n+tp+7w z?Aav;O1h41R59~i{_i(!DSiZ4; z9}RnB?T-Cny&eL`;v-UeJpv|&v)~99#%evJBKIvymRfWG<;tPbREA3_tWY^|p-L-V zOwOuMzfieo%;!`MEoD+oEp1edEp-xo`Lqfwef033R7YlYjU3M|t^i`yR90SADa$Oa zxUdQ>g;Gr@l`BE2)JUAdHG{5+<|=o>q!LL5zq6`TQnj>-l~T%2bT+lk z&8({cwJIpBT)BV>8H3`LrByPgnC8LSdwd!7Z=2|&%dfyvt*RJt`p$R`szeT&RWi4( z)MMcjw}7o&s7Rg1w5ljgU7)?xQLL7vRoCzkLiG-ozv(wUkCSl+JD*gQoyyd@%F@2l zPSx3LwKB~TT3DFAgs@@2Sg-hdb0a&Yl>u&jsm}PFR%>T_ZlNU^NIczWvja<0GcgT) zs&2V-4?Un3dU0hW3z=sxRWgoW!_i=&j+b{6t+g{XIkx2sclY{n)LRsWKI|r(JdGik zzqsqqUzp|e6QjUomqKyFHY7X}B2b+|P0ds7kqomGxwPxwSE&q-txEHpylc7w)G)GT z?7@DY7(U*k*Qs{fdm-*Dhpd}m^bAIC6cyxP;rH906eRYHr1?u++LMQY zL}jss7ft}(6q+r*%h?YU*%hrG)}h!IygCLeOd{v5QPI=j`HdZV+(ht5%3W@~atjr> zE=v`&DolE!*q4$U5Y6T}XYP@>F>w5@Dl7O>4~#`6AIW%G%zC28lj>_rsWIAIP`Zdd zJG=IWH@hD!SkteZN!R`&kN+*QE5Cyg7wTju`XZq>f&`p%v^78;dmKB>A!7&mm*vr- zjcRzCo`H$(@`iTN4{_ls{(>~h7|kcN2>G!$aRiAgD@E#bO^NC?x-gt$!as-1@1D)V zAICwQ^uA1RqbI(P!*&Am^1xC-GyeYkV9;Wp1eTPCM`+p8)9b%?4uQG&2pNY7C609+ z%CrKr)svS5ZCfA^e{D$2wC)+>g<0Fsp}o=FIO*~MR9I}SdzjntUHtYdz@~}Gq_a<> zCnB3+q$~VuXvtV*^P+_vG0>AD&Te(A7C=F3u+ymK+*|!znDjTtuma`o3`Gq`w+iI! zEx3ub-nV;j-H4bS1Kjd}(5rIq<1ww>21kFg(Hs78DbSZdG?)D`%b20)^yfzxiC7waq^9rmF5T?#}rT3erMVP zWKX&#qNpA}(adi#pe^GcG$H&RKG6obWgTDfh(gOm0i0XBq4UDd0RSO z_ZTyKXLu|Z)v+gPR-)jV4nt$?iEcE5#~n9Y>p`m+kFQSVhyPeGPn1nbD6jzkN-tKFra zsAdhfg03FokY%>Vbv#Xs5u5sy6%JdK+J1OJ_7x^5oRivk)Xc?$h$3d((Iam;5!oh2uJ4dm%3JkPICGR zxfwLXOBg3IhBp$!3&~;mSmY>)R4&dQp@M9fapV<%S$||KOGKiGOEB#+Utrat=#lL$ z;_znpKsLo`D?*58O>PfGNz2ox;_(ET5H!gUE@*6z#1jffp~m>g zV>TfSOid<*6*LYvyznXH<_8JWJqoQK)=2cY63Cz~Vc;g=6TnO3s1;dusI>&8tq zVPhC+3>=}FTE}aSXPuGwFH;!HeO0S}ShQX_7r!{XXR@Lr+UZelm{)hpsjcYHSELJN zA(Pse&mLk!Z}6&ATW{u8%~pAGr!~eIn?7^mcLFJk+C$}Tc^>+ooT#(WMh`oiCi>74 zTGTi~(VJ#qFU+d`4yAGQHZK|`+-;XK*Gr};B#m&?C&qW0!=?y%(2dk312lNK!zUhj z80rs9%Ev<$?iINKQhNcW$P^!eVR-oXlkOjqOkFC-OewKasS%h=g=(Gj3a0t$#(F7J zrlsG(AL_bzYK~_{kR^YXAAsf|^h<#1b^tw3Uc3QxFHXkau{S}%Ir=(c} zDBn@2T!hCX?m)E|>8&`K(P=*!lJq8>3oPr}{mdaT|w z(M+Xa6)|553y3Y%r_!luH#BI*zOyrbn8n=tej806dlV%1#$>-?V@4)|I*!{9-TV$t2 zYJv?~E2KJ9owZ5q?BYwfP-1c$dij1N-ytW$q-b#h?GFM&@ZWtCurFto^vVHOL~(Bd z^(PqR8SGkzYHM??)k^J(h`U4Fsy0r!#~M-jCH2ylN_w&*FjmqK?PlxP*)o`diYhvO zV4;-2wE3!i5Id^#0Y}U>l12u(<#3%L%Cd>DNg~X?y_~u(=6Liaz)9?Z)q`X&TiF@Gl0ZG(c z=+)Ox&*%v}bFmAHqb1%f07J5v==m#+ntM2j^0tQHFR~T6gf;0KEWxt`4ig`oLv2n1 zDuggP7RTuz{TsZ7*tLa>c+bc++`>$Tj8Hu5ii4ZrgWHSMxa`VsVb2fA`}wia9!`mn z?N?B=Uv-Y&m>~=LrTv&8>o}QoeD=#LH>Hq&r_0ZpDU6#r!0C#ex(2Il$a;(38Mu3X z0oT5_W|T4Qj+Rd-?UqjdvY)?G&qwYf3IbF_Mcb-Yp@tS7Ay7SX?WA-8OJ;|_CX!+= zE;~N=Di{_2HL%#uC$1t7T0N*DZBCzaNFbC>?_h!N*^ z#3=aR?{dnXwnp|g|L-1GqM|L2EQsjG)Le%g@M^G z4WK!NrP*Iaa2lr;7Zg_%kBEg$t z^w1Wkoo8?J<<*3=PkNqB zlQ>!hSKh8I%N3Ic-8GH2NOceGwiW`X5zt&DRY$sKJxJ4c4e0lkJVC*vDeaF^)D8D^ zOUqKMF^e9FFBoD}@eecNk(}htN_i9BBvQX$>VjHHvfE=0JgL3^ie)icQz&whVPcSi z);LftzJxWpzOTO?CK84YuwnEySee=u2RWK)GFP(IGTrEkMvLs@E^$BQ6RcT90Sc&r2ksI zIGSwVpTGZSZ5#jqmj8D3{?8es0gfu>w_f9hB-;|3}g=@XP@=%Pw$V<&()Xxwj;W~m1;`J+@Z5j?c^XN2f^`^P%YXcD4{+~0oq#d zJ*f`$5PjG^st;>$-9aZp?bw>|8<-u0?mzJEB4-~d$GGV*#|RY z{(%9+lS5a$AgsFu2g)Fj4}0)?J2STXfw$1@>?rSBZ#=%mn<0egTSDlkkVYsz^m|17 z=Se(x@oRp39#ncBp!yd2AxYrCMn0SYs}n)|bD{ z;zJQD28F<&GtVFYD9o?yjO!E;oogIM)TSKSDNI_lbP1AK;xbBZ}7V?AJwlnYm_k)rOsFEKIT%su-w4*va2S zzwR?)z8P#pI;pgDw<29^IR+ox+E63ZSj4zx?}}vrjYDL$3yggFTW(^lv2pEmeSq1` zvvLvSq*;C0>@FC+yk}<3hHgrw;xaTM6`2FQVi8+qi6TQZIE3lEr$ zaR{!Ve6c^}>PgWq5JuRscn`5gil({9qTczUg7abwkhUpSw~G~2nM6s`?9?Ha72Sz) zP#Lj}d2dR0%$mbEliFA}4TIaTTS<@JO!{wHJxoqecH)?hp(OrTWnH+5b5D@MWXc&JDdq-Fl-IHpp2sjH;OPy-j z6w_0BgK;2<;pk)rCxRh(cwrn~9&WYrE0%`-VqdpjcaeqtL$+r}yokvbR`z3>c+)ilxAu978Jf00c%Z1Gsac`G9gr(7 zZg)}MoYq?B6n=$uU?mfDrBW9(9H8oCu(jp3U;jz$DE3!dJ>^dV8AdH?Xu+z*^esc1 z2GZPnQEOf543^&V1JZZlQJs)hgY1|ZVOgQ5IC7?IcIXY)tUy?3n(IH<1*23Jxv=Wf z&aVg!yR=B))>MrwY7-HpK~XAoWKylJFtzBYQ=60qgAI(B1j9qMDQ&2Ps=Kx*jZ>vm z)f+}8mi%V&r62>kwrQ!O4qm@eGGXU>1S9wO{9R6`$mZ~TrIb4kIW0e8+fZ@IL4<32 zVl&QQoz=Pkd3j2ThBqIrcNrt$`v5a<;d>lZ(BM(@Q`BJECAVGRCA*6gFurN^(j$eH z`6ORyV{Kz$rN+r=OxVe_2$toTCb?6Mc^nN-H(%LoT_86O2~1qpN!BqC)A|h?lF>Xy zAu3CPE!*3j_2`Y%a5Pq9DgYRrTAzJ&8%OFz)& z`87&{GE_R*-Q%7@XA)t83CrV2eg!KHStwAkbtQcmC5qTcgz=$i4F8-%dF}_OG*}2J z3q4f@tTf$OdIdAv=a1>=^4z zo3eVhom}b+X;Ke^g>t7~lWnJ69{b2tq#l2ck`@N*$o6hJ^&Hq((21+|G#yve4te!h z+~`j1)E%{)rR)wF5En5g?tBekCtZQ%X*<7;BOUq&u zl|ztaAwy=S1o9Au&oTgsA#P5ylWZJzr|FN3FCNO$o>o@Vo*3iQ)rp6$H*VgLJ-BZ- zIP5E%x&AKBC%hNB6CJFrqe(cTrfWBozr-r7jrf8uO`nJcMX$s~*K8&rU<^S+8DI1N zMqF+)T&u=jdWuaU0Ikr0Dxo(ju{nQ@gPSp;R`97+43nzxzqa|+D!uGqq3&1E10RO} z8nWQKLQ)|=++8L|HyOTG?A|ewoP$5SK`SRU_<)utf-?orSO?CWEautq34F~7>f0CL zytE}C1$d?tqw-%u{T$i)GlLv1_^g$83l;QYf7{5Q8S-_xbdZXAXkEv8dO~2qR@yKI z`!IoGKPYwB{c_>-z9R&*>wS*{K^iNXGb0NGab(GN0yOGn5GddvjY0=hsNy!213Q!z z6BIL;{I?JGJk)ML_&XwtVQ<6~Z%B5%$dpSamh!2HC#dYo+UI&ZqDU~Ki%?Om8Q!jj zu+IpZifgpscV)f0us#+VF;t@GViyt4D(9KJi<9Y3PG)4wx+1NhngPz}5FK~KC}}^i zKEy8++(D)Uo+E(jZ%5n6$f!dEbi@z6>nD}% zu%@q|WgWcaft4?nt4eHM$v4>U9O*ah{yitl4m~=p9{2$5De(Fa0H+NV9D#7z6V>P9 zt$x$WKeAjk4E~kC|CD@0p7nFYq)k#&@Q1Y=3l5aW!dVx25mybt1a-xww*~4t5?0$G ztCnZVRomu?zBpuIe^JdMWu3sOoyg`DT@JOKW618bpqg^Nc|p#+Ti5cNX8b?7XB%ex zv#&P9J<#h^!u7| z((6);iF4FEWD2-E0ME+u!`eZZl31a3IN6RaY zmQfx#YZT;)M|c6IT#8mJ(l6E4krdfb5KGV#+S@Aa#%%f10A}4@rZneJJL~GPV8h=U( z_1*;YdPuWbhW2!CLm&;xC~rAX{R8~}n9)}hHbn?hG5q^~57F$uU=8vA4~J)ajS9U}NZH_@C&QC9;B6K!OO>v6(BX<9q`_`!j+*{t`w6;1T=K zqYawwm}O}h5hVIk1K`JshctZs!krgXm6Vm=wSDLS(9ujLm`*~yN%Zz_J&iKywS7fv zWOh9w5&W?BZ_VaEqoY=J#-w!9R=%sjX)VlZLMM~3V?{VjFp$*5WPq+*=x?tSm=?t9MZbDz6^zJJ%V=9u#xYs@h=R_w`5pJocpvTbvn z@|5%_mn2!7ac1CPPHzqhw6Na(gJoou6jrDDsGb>AVr4Qh1QT zoC%!B9aP6xFp2be9gnEm4Vr2x;>f}WG#zTrMs}m3=%w{`JMqCreMWbGA5sID-mX_z z`oK;=>Jjp|NwOP9YrHrZ?6z!l=J1|g54F*NjU;ChIy{c_L$g|R_w=-DHe#m+QgzRS zC}m1USsg2tc~I^W;S`6%q-D8$jh!+l*JXw-m!%$o6u)KX7OD7QP(}kM%Ox(lu%%79 zr~S-*?-U-#=uzda0$~yAQL`o9w3n8vVK8ftI$M}pXHSKdy+9I|MsNQT5yx@GALf|j z#c`&YIk&nyZlL^W$AGCBV`)rv8CyL7WTNDXIB9Of+)&kIrPs=DSBB)naZ-~3l!qD8 z=^*6$6%WYRVja4iYn)@Ax3m_ZZXG6#P8wAacjmOZB{WynpPH9(m{@N4q{`B}jR~vA z-&{pN(l`KcanYFtYVbG`RrCWkjYam7X2I^JsMHEzwS1 zLztTpWi_it#zpe|um^lCoP;?iwOuE$9VqV!W4W%i3g_~fmy%`SH=-35GK1Tn{`gIK zq0#g5j-$t{Dk+MYxf5@62JD`9tIexBjfHwk+&(+Y&lL*EOZh8? zu*Q{eE#2dnnC=&u!DIN|{xtZl5lgr@EE}DYVXgdNmsbWTylOhu4xKSBIS(j;AN0Q@ z(!dc~g9v-Ayqw;b*+bsCsH$}F+=1?!vlXLt1_sY;(aCVrvu;|@3q9%{wNFr>#`bGS z^op!jNkwk?0JSG71-DA3{j7cci~?bNhQCNoPtDG2vhwPuUFeE$0+_)x@&+i%-TA7+N2L|H#&kG_{9|SYK}N$JR45AI{k?_>^h+yFg^v zJC#Go9JG0Q)PgWMrqh=0S@2!fx|T&80O&VMjeTjA7djXuz)c|cS1_u`cU%z(Cloco zdKhfS?N1X<1iFs6SrN11KA^lAhSwVh@n}5COLPI5y$Hm+#rF3~E`pktS1zW;t(2aJiMLNfL zYiOJ#?pz36bTNQf#ztfelD6X45{++Pux6C~`^xH%e&CRa+1{~xD>-n!#(r|wh{)+|74cQ$X^|G8_R(Fgz> zKgq*q)GuH3{sn+2ZR%!Y>GB_8(aQ1PiJB?xb#)AF+>f04Rjx^B@*s3Q2AxVWwP39p zB-=ysNGT1m0-Y-2#1uy6uG0(X`qm|*^O1Kj_vb|%W505a@aCM;yNaCCyn|npo~fiN zGIP*Y&-KUeZ@rUG%+}vNZpZS#x`XP(%g1C>GSv%ZBTfNWs&^Hr7c5;?uu!$% z!JKJR8pbe+T7_(X!!;aQ5mH=IjT-39&_sq?6RkJ(*m=J-3kw$tZ2F8IAmc=D933jG z$Hkk_qd7I{^9W7%``}ryShr6(AQBxmQo23Go8oPufi84bZJ2@))zWgP%r(mp9u#xEq>o7Zirj zgu(>^%slJz+3qeN%NOaqy%1Ja_kfCFM5GdTlXjI>EV;`BCT?71K|d2AgY*J&byA|X zIv}BoV`uWRbq5AH8OFHx#R>KtXn}afKxpc=_ZwZiTtuMOX0{<~ljN>Uz7E16Y7!V? z+l1#!V@>OrXH>sNmd!n@TMZcbAyRIEf%HE2AQ7|vREl}U;VXDiPmn6G2bXE)m+cxe zFJ8|WYKFz}@BS{RAP}@**)A%woz18`e(Sy@8@{#)pguwSDi#_hHz)`Mr(kO%f#ID9 zqWkKq$a%Tf33|8^7XMh2j*dTqK;m&y9|*%29vnkFUSWZ(Yk#V)D7xfd#_ z-96A)y{~$lG)Sl3elhvjcbhDCiYa;Dk1Xv^u@2`HU+yeqht4@2b`5q_H~+8^uKbz6 zvq~-C)0$wFuUzlWh6%~$kst4PY^kp;$%FcUX}L6pe4V+hv99UX^N@YCXU58CVW>$m zj^`Uf$G9y#SwL z$lnlbb!>y3AE58I0wHr920Lm^Ch{d}tc+|*EMo)&1H1V!;Gw23$@pCwc9)I(5rQof z04arPGr$~-wHn~TqgJHInOV-FddCgU;slL2`fX3oM`&xmk|;p z$MGvM`QrWWrvEm%*ck+D5-*rW1H1+Y9+JXW3n@Nlghg#Y1)v5_ z6fuH#9u!G-1I2LKsK-2oBt`}epGDo$z{{O4hB3G-+~T`fzb!^ELy{A~9_yg7sV1|^ z5M#8rk?&+%d<`NKCBGQBwj6c~-L6ymByL_?aadGX6pSTfyHd1%SH!6si~EDq$EvWT zOC}7ZV~S-SUCcfIN2jWP%)Ls*13AT?ZhI!5zR8OJ0+?4Zb^C{0{ht)P=D9k7CF+ME z^KPtDDWwB#@;pz2q8e32q#gukGISTw@R16o=?WYf5&Oh)@U;x>Bx9&Y z>4GZGs*-%M-i+m5<%NZNs@c^drfHRts#sC$hfXFMGOgUsbpMaC~vwnofHNDI+i&cMWB@ zUq34BXfpLdQ5aelGSsQvj|=-D2`7szpkKAJe4J+IIwjXbO*YrKiL_aJnYoo(;V2hR zk3R3PfRF&UCy`csTLepEJ@GhU@7}Qye`Qk>)^UIS+aruXWy-=gf*{A0M=?`$$>pbB z7*f_VNRdVkwfwb{h$f-C&{M1cCwJ6fg> znDi%1Ze(E=?T$JFaJD%#)qNrHu6aS1^-dY0C>C1jnD7a_4^@t_F zo7^`v>5C^{zbNenU45|vUYIzAvvN!}jn zMUxKeq)9-+_^x*zwhf+Cc!H2F*P*{I z!<`rek$IO>wgZUa!Td-8FCIop~` zmQKLtV~)dx1#eRYt&+m+MU13`_EHfcpY$8_Y)4F z;65SYUjYaIOCI6h5u!!&R1M=R>O1v8yk$Qs7?z;Q*C8pxtNxdRD|p&bj21WDQ46Ql zn69YM4?pC*0TLZ58$b%mj=1jqPbo;u0=WuGjs+p1&Fz(ig{S+sTkS8>s_e5NL$>vZ z7IXT_Rl*R`P8v0_6}#=|FG$(_vQ)Y3PWaZz7uEAQlRH8D0c^qYh@;Kvxu^r>LQJ?W zBXln*4jrx9t#YcQJvVru;$!9ct*yd+Wqr$SmaaiHs{)K4wiZxWr%%hYtMLvOhtcN~ z$7%}5?H;(JMt?Tse#8qi2;t>ewMm4r+tM(fg(dYj^}EwMJg9e|ZGr)$i? zq3~$&umhd*k|TCK`}*RcH*s<IWGCR_MmBzO=n>g@gj1= z)Mm@eUSA=NaaD=|!ql(0NE*cg~*H+!vja2bAsRgE8U7}(8-!%PjIhHYWC9xq7?p7#npN-S|s$q`odF?c}$Lgcx!X6axmm&qA*M3k4|tVZMm^nF7;7 z^yQ1>|NpZ7XYK03`F%dHfAm>+T6+q}E^rF92DT=1YA1nO2{T@5?)XxMQL4{>3>*u!C|7RCa52(X&_5#pn|EY42!+?@^k^_k8G3P zJH2m@rXG4PKXNX!PLuM4uUNlZ7A}SbJHw%*J);g=22>9p8W{}mXx})c1XaCV?fnTb z2zIrzU5<0y=Bs2rO+Fx&{0nIbG~3PNoUFsVB+0QYx2p!B_uxk;>c zy8`@BwzZwYP@dY=2T&e;a2$Kq<9wZ1Zo6mVNX)u$1RgW*7HW-B=f@x)I8Gr1&nys8 zZq~$&7H|HV5(f+qQ7BxQW4j~F5FhT+MDLafzTi#zDGbbHeC!7hhSGR>%}13zK68o$ zfZ)FEjpqFUr#i_=c-?I2jO6L(|!Tt!i+lAVy&b?_YpHuDzaQF?cu9k`D5tN z*`gLF!6n~>#6caeziFB2*u?3O?8RGSgZ*k+N$| zBtCw`c+Gmg!#sVVUUgC7YHPI4mLz-5d6Bnd7{Ei~FFduP1S17d+g^rM zQBqT1Ob(%xd)A677aJSj-x2=ghYvNpT6;v*u?>aQuQB*+!|u3nY9xtqTQKcedm44+ z8V)m`_AFWb=GO9Q4^9d_w-zfrzdSv+)g0*6cH2VKVofHFLYi>>a~bG*{+LfWHuZOk zQ^D|{6xBOot!OW1Twe%)c}A%sSuqM6Yv2+_>y=ZWJosl61yf^#QIx!^8dd=%fX6cl zt{RU5_gNq~EgDHUue%ODkdwY#dsM!^o1u1woJ7^zcu$ykw|1WAostI~#C(RXXRC%D`> zv_JEfvl0SyeFkhnlgi}TL#Ddo8Vl_F(dpPolh(lq&f)~pTQ2-0(D#^x0l!Sa)0A*u zZxUr0C-8(q#<%S~^wD}ocOtbp@83rlHAWn-1+e;#3*e^c^{yI4cS4TbR)Iu5DiyFr zUnMD&3Y!H`>1IBYRIe%{SFSoEMRt*}&ht@Unj-slEU~^>COhsiL48xd=6ik6I&~%H^txRVEuS_38xmmq9-Z9W59BzZ*7}fP{WoPJ&vFQR< znAM{G{FY096eSM3Z>GtJ8dmv;F3yaK0668<#Ec}@#5B+8cgAQg6P?aoWmI9OUvS&u zvGx0*t+-eqU#^;7EK#=B{GiJzAwIUIk!hD%S*0JW>F#bZ8{gjyDphfyHPFPVt*iq& z*xT9^2kHFex*3eXX@py8plZ}hi=6;bbdAh&pK6H}as03oa5Y4ua>FSOu29@B`dujd zTW;)P7X+ad51q*WEgQoeE)N%`T3nAorB|6=eR%fTUXQzNc0ehT09dTerQNo?%vD`p zY3EQ;TlSc~RIpxc5CdQ%(-hitQM$kwQ#lMd@@eW3sEqR(Mmn{^i3MzFVqRKIr3X;A z{GHD5m%HAolixpS84I>n8jg0fTF^6`zu-z;mE^W*a7)zZh|T?GpytwYe{VvgDJdV< zl1>@yn;g2oD@SE$fT;7kr__&M*mnCYAVz^7}mk&S1$c)#kuEpOXk?v!m>%8oO zK<#)le-})^6i|n&)?E*2XUTp7S9Z$Yfj1b9ZmjscgB+?uSWk zN2V{Mph0pRYjv-Z)Soakyx#sQm_w=hjOsrd?NF$sVKtk$$JW^=)K*W#1DFH$nD&U8 zUT>u`;9cAX(wL2sXZDQ6f;|qM$w)7=$5!V;+!AvTHyx@r<|W^gbWO{?{23K(PFuY% zlRGOb6PjKhrG@Ko+=d#ZXsY)rRu=Hph(2@c&@E6mrI1(J_c6u-!nQ3}!^7x{A(;jS zp%uA=s~Bf*tfx%y1aP>SJ@3h?`X(ZpM??IqNTQr1xhzflrWDNELx>Y5W`C9KvAIm1 zT9E zmPcY;p)FM0?m~3lmCJ2*hE#V*^Y9dI)2O1&-4l@?M;ZXQpW64e6aQUV!2(OSz_=bq zjChMSEC;JWfr0nB1y7o0Y&^q~kP&4z-7MSvBA(4vQ zqzCD(kxzVJ5+ECnC+2u4wB>3aTwz2zAq>G8zGm7J*91u@IJ-fV%$kus_^8axP;N(a zct~=kFz2e44y)%XRK87|j^Q#m@4eI@tfJ(wN5z{hf)Nx?NA@$}2MgJCni)TH(aR(o zigtdy4tum(*!h=eazElSSzJk*5?$!W{fE=paASfRA2N>ul?3ekm2=E)oYUB+Y?&L5 zOYwWHpPvyI5fy(qufv58lBw9347743E((Pe`bfON|5`qnLu=ao%pX?>lxAi4Y5Q|) z`Qr$Pg&nW5;{)yjQQ<_Pdtt>mT%!}Xt`fEG4BjfI8B3*EmNc|1|Lb=Ao``djlAnj) zbhaA&>DTv|yX1W2azFCI;@tS(6+aBx5rm-(Ns=nqAE!1|+4lV&VZkKM3(sLG*^bc; zR?-~CzV3ph=zHw#a5Z!CM0i)bksJwJ@P-IBlRnH+!pq!-Lh$(0o{6inMCJ%B&>Oz; z?zjNuTgguAnKvT^Uh2!|Q}mDOEvEfxQQDvD+vka#x`@dKGR((qFT^EFXm-YRf6MLF zf7O8?9#pA-Ova2&qKaNLj3~NDlymIQa#D>53{|Bn~?i z7;~1S(uAQL6|ua07(p)>_8PNACaxlfWT7j%@Y5dHn0}_SbqFVAJ03`-UpxjFC|sBu zgkg^P(dgFTm?bG&855Ct3v=1e!ky?5vsraT`{a0pMA*3=&W2U(48T0m^Z0~zb{lZ= z4%a6(4mq#XEYYPoq^-5dBo93Z#j{Vxz9yzQ2ZS4Pe*c#hG@k-*&-T$7O2IJQS zQCnG^jiY^be`j{Xb_K8du6Z+Rr(wKBsoyJ^`i(%yD@?;Tt@~cMb_Av!jzo@yd;DOV zJ-%AMnC7IJypm-?VrFpZRX5zCdCx1G=B)!QY=81hV6O+(n5@<)QH9cfFG-j#=%mcD zkJD|26vbZYfSBwZXJEi|U5O0VOMPv%L(XRuJu~M{ zr@B0=JEU-XiVyyQVjT~!1HFr&Mm8ZzWcVj8FGges|8;Kv<-d45oR|F^^!|KMmi`>O zRsOq?TMA%lZy|1PX$o|A`ZtRQRd-W+fEB>fLdn#@Qr*(j#oR{2#ni*n#nsgQpWK?3 zgEoOAW&rhSy+zldqD_>RBqTxNEUc!6O#>$Xa>|vL;RYnKB^zakP zJc;8DGgN(=J6o<6(<@cI;Jh^|)f{R8aYg-O_i;s;P}fxD=7N87MYox-clH;ftK%x| zI(ncT{(a=Gu31lwMo{G;M|RIDtG(UO-XCy>2!dQ)!~1Baizkp`N4hKF#i7H{1D`Gq z$`}1xS>qWjMqu5s1CTf78NCCM$b;9Ctike0tAB?iIpo|Ghqm6ZPaK0*Ltb%>xZ;m*MxDs|;dawS%MlH~iXatFFTaJ&J^7Fv zU$AReZuDU6NiHBX`qTT_IMFR;rIF!x%?3HniYrlU5ryO7-S|QHvlVQ;aR)DI7M-91 zf8SF#Bd?Q_F$W@l-jaRJ>Dj;h7bc2h(vLc0+K+l;Jnixo^Uf#_?gv)|$PkuTrLpd) zTS!D$8tyvfs%q|n-)qd&!yvTNSKI|L%e>68ctt)wRE?likL27&5vP(Xwvjk!HIddm z`lc3isFhf=g`LXm9QE*|$eS`vcghFZhSh^uWGDMZA-;-N=u-5`p?d|y*XiB!52@Hv z!Y?Hqw7R~WpfUUEtDtNc%CSdFx_;n9xqH7=+fDNkFdzO7r_d`s;3pi9FIYbwh`#J9 zwS*i-$Qa(GWfB7r3uy`7J!=mZhPRP*M`T|A1;weQ1Nm*+NQR~_6wlY&9A3%hax+UV zmnOvw)Po4j$KHRiWdnF~4V)Zl3MFZxZ*GLyh=O^^8~k5NESV0(=WG&m>Rrp?kjqEF zSir>jeag(g2Wb18qR@bduUiuqDROx-u~>a>wu-Nr^ft+&c&BnstxZmUst?bvmW7KX z)LNHhiS5J3RLSgd^Zz(>m`4l&dcjQKIa zm9}W?BW0_IudRV|XP?XSip6+~pk6Z;^-fGx>$^deZJf1{SE!D_05>!!eEH4_<_WhX z1pgpR#t{#SK;)%9(d`YPuPvlTQ^p7~8swBX!JNM{Pk+S#*JOwUpC+R!qBRLoij<`j zS0mI-?8<))ZT_ULkFQ~xksI?_20fBR;!}QT(TmIc4V^p2mHCL~h4O8Th#fmA&}7U4 z6sqI8)m)4^%k5pknTnp^hge0$`_VX;4RPq>s)zV0m?@0wm>qD1Ut^DY)QdPPmE`Fw z`VF@>#4IrStt}|J@yy+-R}DI-ee`t8qc~WcnSB$B%~NTC!Z71hwOqyQzI@^M{|a;ej$}C+f0X{QSyGw|?85GVrHzCSpHH21!GgkUfFmc< zq$9gNcEek*nFMllNqU2Ak4cav48vR%L|c0xaD_8bWdUb?=3e?8zyEoN%lmS4r8dS@ zj6R#NoG{Q1f+I>wpGONVFx3kK;r-2AVl6W@8Ui2M>7s9|K}r2JdF`KoV~|-wG>#H- z*FF{Rcg`zj<#6FWXda$*5irsiYQfqn!yQ?x-yEuX1hc_WqIn(DSmqYp5_BvNd|t&j z$slVr<4gU>HsxL-=kA$Ao$B-rDsY{2k*Mu7Ms*3pvF|)xbx{Ofx&SI%&)I*cG1gTi z{YkBVXl&h4YPm@jqofg#tIhiuW_S`!*j@VYOQD){jv?f0*)R}?$`4yvua&ow&NQce zs%?%;9XdxX@}Ad_R3l>uH+3zuIq(PYNzTWnLm|agNa+ICp@0DvIyQv8g?v?iPw1i* z09dD)gGG?Gdrd6G;%XYuN+;fJ^ok9@3dV;V<(*`5*+POSS+_#@p(M&&vk23s68>mz zTREgj+3KB)!UC%a17V3!9mPGUWn5}~m+*qB+-siDMpink1tdlL5P!F|p@NhShQ;6l zrjlpta@{djH=I!8I^|ysJr#G7oAbQyw-_?6(xslr3}*V6OwS%NQ<5Np4vl-ic^>ZD zZ$shUMb{FBh%Y>lDT!uPQ3rCj`RRKBUdnL(UJ)_zTO+KC{H0{2#&P)2YjX~io(mDX z&^gO!1u(N5VX1Emy-J;;k=&m6aC%4nZog4lPCuwoWhUs0j5g(uolavj(&Mgs#3V=;2t# z1nwg@&;jC$Vg0{-?`oGOen?7r!6lQAzEJYlLn4RK$zjCC)j@;>4aQkRA{KFhPq>Ss z4itUilLDy5N`;F`!|a7Du@cI^{)e^Ge>}8}J!Qp`f6fD-&qCqS|LohTo`2;g$3Q>%ZV5`ps`X5--^;oH$G7*F zG3hTnSL8v$8}LOq#*eeI;XVd3Dz{tC z>B-~?Nr=+)ingcbn-yJ>%vI*N{GWc%aD$?V4A9f2{h}h!HYQ5QVS!EI?18OoCCAOswHbA zszw)~bPNTFR=wOR)rQ?bF4g9?Zjz}PiGb6N3%C#;-F6N5%bPhE?<6cvEDW_Ko`yrz zWg%M#XJYLfg=0M3Whp5l{%ue9o$~rO{nY{?h0=;1iJ@P>8lYR|cglX*y{j$CEDPw? z1eX#J#rW2or`!W0A9FE~hQA&x@)vAv;Q{uH>@iizAGff@_{pe5-wD^$FObkMi(1VI5aY92C`Hz%*l@vHlbM| z?=KWZaie$sZov1-hLyZ`{7vZnwHC-%c)Dw9pd7?N1WwGoGp5@ zo~GDEU*k5_7UsaAJKtt9KYK>)rk>bKb(jLg!xMi;F@drPiqDCY7RMSj64=S)pm&T( zU$_jxyrv#Xn>Y{NXp(o2JF3m<__RN~Ssuur8ZtB-iFc&mM!4@*Ir(sA$9sSr&wLq{ zEx{pZ>`Y`6iNwSABryj^0km}q0y7#WQhxUl217^Rf7_SpKiALQRD~&+ArNC=QlK?h za6>Ltb%_U^lR}J*%7aio#CgS)%s2a!3_ZIxkA+K&w&fAU3ky*^-)e0zPpOJeymfxq zMPMGb$lbs_m$E^0GGLyohfe=oo*uAeu&%eQvX*(}oXrlT8YfN?8o*S7d&EMaQzsm- z@h4_Y01hb>6X;?x?aZ~u$Q#v_*!G#cJ&NaYk2`{9@vx%d@UT_WzbL&Ty$gfc?>00j zU-i@0+uTrDY~#p`pdZC|K>t5az{{VFikq};Mf!81+x)yP|E8#jErRD>4C!|$|Y4gYIMoSFXj z(s(oH;ej#=#fsD8r{2@9xvoB!Gsec>zWkCRg9Y;xZx3q@4+*!2Md$A5An8{NPekD* z#}SS8)s@H{F!p|HY}htKHPQ*g57yvPoZ8|_-c=!B7p$$&GQQB$TA4k_bty*F)F!#)1;+qGq!c~iXa+CY-<6vXf&KV&K%ur z$zSf)2DPW9S|oo3GB@{d=TGK&w%7%gS9nY8X|1$@{H;KbsEkm8QM=SiT!)cmZ`*kV z)|B2+*Kb^feDa+Y0s@F>$0y}hYZ~X>3jmaX(k(75YYU7do+*sLL|cW(D)kmD*F_d4 z-hN~{c&?g+8e3ofwA^fnDQ7V_=YRur^wuktVQz8Lf>iWGFUno~TIHYUh3IDC>=IVi zW>*y;%f#{&H!IsMsj{*PWVo4+x-avBJ#G)kn8!IFU9u6ETws!f_N>0qp%2&%+eML` zA5$_K>M%TW;5&n4+mBlsPUsiJ8NTj3TC;Ys<;$a3xV+)tkjCG~-td(~e*^?x5`wc_ z{lu(JNMSZ<^gH& ztHE6^nNwswK?o!d>`Slu0nq}O5b7u_kMe-hy8@20q+dRhe{t*>rlDI$O!A*glZ?yI zS#b97~gT-7vMWK7^ClwvC@cgB~o}p`P1(9IpFxNV-*Icut($^vhd5#kza~@_~ z{`U{d%yss2U2f60-`6NYLPA>tO#{h(cAKt8y)Romms>9vE50xHzS`Sg>aqG5M$l*x zpYe+EEO5&aW7&T|&wda5!ikt#NGy)%20a9Z%L?&h*F0Jm@$3uX0abLe8A2?SO5lFC z;Ka^8q7tju_W@bxJd-QZU}bi%@HU~Jzbd{6hbnX2!$$cfV+m95a)4!z?t=*i&fH8S z1!Q0EyMp-MH54S2v->1ibuYOcOp@wNve)p;`} zcf6CVP%a147&h#vmpJdGjSp`rp1AFi@CfmVhRd*K=3*mg?|_LvL5N_RJ1(C=iaXnl zaq0*6jDu2^l|^B#Pl>VT8=x+4pleFtM^F})Ay3@M&*nmD8Yb)>@Lq?^0zLuARxOsB zvmP!X%o1!Kxych!TS1YHIz75p$^1dhr6L{t8HA{j>F-iLmj-tYCts*2GHX;zf8G8X zf2EVhQ)SYhvv$qr%Ev36?EHc(TsEUxT`l+9F)zgv@~gg|QDnVxDO5T- zt&lE+1BpU2T`grbkj~x-Q!H3Jou&U4N9@o(5*z3+(uZIeTyL zEqiYi0z30wcgW@Vqp%UC%^PVf-9AN z)4vG1&lOvbneapg<1Al803stZ78{``>QTLH%;>e_k9+}SyJ_rOqo0A~GvSU;wHET* zcOF~43srIPfRiFJs!zd-hOSK;JubND#nRP1(b;oA18RGO@*x%N- zyb!{^KP$le&5&VVol{CG%!M5>wv8+8?8GoMaILtA_43`mI04I?b)jF|T)}rRpGY2e zP}e}`x5wu^>CE&PT%`VSdkFG5^REfs!dVO|C9DRm{S*_(GHxmgg;uHwtW}7xxLz2{ z@oYzw^}MZ)%|XBISzI~kr9^Y^rZ`ve7)dcjU*cVF;r>gWdHR0k9l`AMu-9c;=4nWz z_x<8Sjkj%Hjo)5-*H%{~ZXW@s{Ooz-x7K<0h1XmZUF!mS{wdzdE*kw$#*$? zNAAx1r6U@X>JjH6Z47jMq2AZvl8vPDJr*pJm$VE)uZ>+igKqPX&9fKhwBigCXe02= zyGD9Q-ss_L@a?$zqz2LM%w&Rc-L<1s-^gT3zI#;x3FWgQgGW||Q%tUTf%q6Kk)`N! z2NZ*i2#hjrXz?fd@{jEJz9#}=c}HvD(X$UQ&$-k-6frZHqfLU#aYcR#$;*m6N2Q4? zD$e;ASQ+sw*-|;WU z?Z-OX^GdI(>TEvdX->zG^YG*j^9Ob93;{LBrBp8^P~jpMi7n=0OevkwU!37#XvJWh z!NQ#39v0T?QTk|VJ@a>zPsX<6M@3k_dlp2tr+HFfU6Aq_+Pe9*o?<&_3mqtqe@gO0vA%4G-x-_n|zi^1*RHzyCnU zBH)2!NYi>tf=71SF+v{*#ilMWK&K)MNvmB+nKAU6XwkjLg>Ut8_l>U>k$AtUbVpbh z@591c!s5ax_s1e&;MQF1_{EPL?i31b&zxX=njol{aQnzVAeM4bv(T^ z?1^v8$o$6hp9kO2!8m?|PwnI7|A}Rel)a;;x+T!{GiTi6ld7=?04=plT>$_1Y5Knn zx=S?H{~>M^5=T!RmPAFvaxBje{2t|bSc?0#0(>}9B~@6FJITT+L-t&$+YkQzJ4^Rt zVKPdpvfd%eBTPVuWrYxeju9%O|BtiN+}`Yq)4LazIwJ_)s0hT&geeo4&m}qW>B4|0 zXhwcZ6qewx+0*?acnrDjPSXS4FgSz;7B++la+z!(iB``*vWyj~fmwE@l=K=FEJ?30 z9Eka5MY}v01i@r2BW-F$O({eZr?O;pQ{f#|N*NCR^FLH|h3-_STjbw

3XR?K4Rg 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­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 sn4}wqJ9){Cc(y#Du z>wSv4Hal=6zxXwQivzdeb>?PD@_{BAenW}$iP zlno;1#Uk%xC4u<-r1FNOfkCU+=x{gt(LuUfslk4e$5Q)PK%Q#Hy3T|Cd7zH61mPzHeajS~GM|9xg@@aXZwzlrP{FGwD)QD=c zX$-rRp;g!VK~|+V<7^<7`N7(B85YTC)+Ka=eVET7Wh0Yp2SJ~%4E=qV&pBnY@kT+5 z;fdYw`)6tkQVAvEgMYyz(kvRu=oO2~Ce{QjB4Mcy0H44=%qqbdmKBXApUecz*}l^V zOcsa-ylUqQ0yAx?`PB^d<3l||(#rX`#^%8iTGiO_RZnGG^5VoT^1%gPT+ zKuR=83X#Y+3?r8EFdsyj;}@%OnV)+hAYAjG)&BaCpt=WYqVBo9q_C_pT�ZjTI9P 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�Ir8}J2j2*S58hl)Km2NWvCRwX*H6~Q^N#Sz zRbm*S6t>zt6*j`uF7N`4L~YtG|ypQ-tba-x1-JBRaC;G z3h6`*(H=WkXNf3Y7f16QW}957wa-B%6S>7tmd~c4pbI%qt4%qrn55FDo79VkK$rX+ zlI%%Y_W|{CXLhqcZ^o7#i<~C1{>6#;`%xkAWwwNrc5u&nV3`gu-P<#Y%JTlHy zGv17<5PMUmoGENPSXkQS(UtqBc{fwfJ9KprV(Pcxl5E|=RxdC0hw5aH2x2Xsun=2z zJiYYJ%YTQmEAXW_kCtqo&Ae%_bn`Fn^hI)P%vv$YgTpmi?)BeyqW2p&ce3{yE++$e z7lv3Luu7OT@&D2a7=<>2@d+-v7iLPP6IoD`9e+jSh-94s^~BJgNS=3jHE)Zr&J}&t za8Iw!hkp^hnZcV!^8~&;!de~W)o1-iCV3>K-CuWQusJI22#h|2ssO*>Mtox@e5V-q{t>@dBmpeLqfRgjR1eq+pdMJQPo8I*YKg;1%d-@2rkCHA0laRAeslaJ&(b7x;9%ewYWp)B0s+xxCXbUobTKIL$zLCCgvfIg+!BVLyPh2kGV> zKP=iJeSk$hQm=MZOTu-F$zGcuV7kTWZm(l7xAR`OQ65*=Lo-T*^&R%^RY3 zAg~Z(St*ZGM9<~wy+Fd5<GW#MI`~Ta;JJhJ70W;A zUU5c4S#d?gavik2ty5-7gWJyH5fkU7>K>zT)2*TQzRR(Kpo9_VnrRJ2;= zfxav|lxjCu@72N0vM(p$CaTadVq-5**%ed*LC30A9yq1JL5UUpx|riA(Y8rEP&PVj zj%Pf#E-BqnbNb>gFhx4m0EeaF_(KFM(A})1y{k3D4>!EYT^94*!)hzG=k>>y71nPc zl(Ik~b5X2ON8z!V->?;ZBoTN{47XAy(-`z>=2>7p!-osr@g7}s%=|oRo#c6P;~ws6 zq+r|%ExHla!7fxoYTwR$dp{QM(0N99y9hcItj#wa`qV(J0-^hyU_t6b2Z-#A^}><$ z&1L^tXY7mjzrdh>=HacnXvkTA07lTC5z&7;4=-V3W-V(=EMR7>Z}0Z6n}0zNsEy18waEO6{pmAhYMJVNGHRGCshiTpCHoKgUm#8y z`XVN8gYYkfsJv{S7x1^L3ug}X;s+%A$i@uMSsqtzQ?1AB$Ch87x9@lWq_=M9zoZ)T zkxuEY@repu4(t^N9nrO0NRly1-Bcy&71At*JzRBZ)lr(2J#z?)4Sr@jtX7kfe?biG zxqv35&IM7-B-UFxI4huR@>*!1yPi}e?C{-d)drP|QvAvH{etMuueyh96AA)O3K|JBbwl3C!ce@3Y=BSUb?A$DN?YGIiEi8)c;Hkeg&VTLb;J_m-5JTpL{q0t8QXAjZ^sJJ+go zhCDrq?efHssYCb2wNT0K?kI!Aq+qkVothuh{U$6(n7UML>4rdsNo$}ih;ye!m;F|d zIYLjMUs=lh1p;q;zZ{dN7c*V7zqqA%mysIM5%&tyH#B~VhVzS@1Sp?wH!zW%2Og;G zaLPKlGxMz2T3YYoFICt&iKZ^AmZGlxgy-m14OjUehYOCobmOnD2E~$*2czYRQFs!s z8W%s%_%a?Ag?b&i&9Sy@PaA4YR(7^-E0ukx&sx{}>0pC&_;TE|;1#9~P)zdUm%?bi zob>NsG#lzpRh?YY4rmJLFR**6Q2Y;eR+W^Zv(w7=u(n`=8^Q2qc^iQh3_x?4FL5KN zXU_5O5D=d5%5E?uFUb6q$i7(eMrfI%J3Jadu0czkrsK4Eq2I{jg|ythZD^4~-hHnp ziVa4HOqi>p48$ zg=uDC-#&WtE<{0q1F4dJ3W)nH0qj-mCu&0=mRf?K%eN3V`RI=QwX5 zPyZ$tq5X=qMoCtR5VcGFDU1VlP-bV@)j85|e=4`0OCW8dVJLJ9gBP-AS+L!1o!noN zMNU1+e9>BI2?9{&9E#ISyQ9l_G~^S5GqIU2Fr={5avXV&J0e^n?Gus^Ep{qL+LvbBZ;e#g zrd6^u#+7bl$5ltVSQ6zKginqB=_q%WZTmyLPg-;qn|yCi1+w3G?WY87$hhza+XVT5PrTv zE~%$2lk3Liu8dTl@AseFZMgE|d2MYn>(8nFuoo37Tla#Dq%O5*9dtxdxiud>EwjtR zv#h|6CzbB1XD~ES5lUB=(%%tECrxd7O9dPbmITs9h(S558LwXe^u4>$@HYkRgc`&f znbW)D$Tieb^pXt3y-Z&&QNN>|GT)W-b~8mkwkI{v>bTaBtoH6AFMZP#ScsA!X6=k+w6QG7OTwM(nhpF_3~903F8Ve zg-Pwv@bo-R>{#S$(KlFtNzjnYu}ry@Krfp<%_z}`>l~D1Sd-F9k`?u23Le)wk*_)| zDH`3sCvl%VSaS^iLfF~Hz&0~ezn;rivikW*Y3`4-gMKV=86-qXe3fdpToXERE|p1w z^{0oZi<1)B@0-RzLKPYs>Fcnj4(1<{MxUm=Duk zvJcDNULxqvmYyri>J#F8;uH3A{Lr+^1jHWoYtTiQj!`adpm1AF41lHtLLu*)v=Yw=w zbu0Ke%{ckli?2LgZml3JS6uDORtb{OM=Y{ID@Yd5J|cweDf^raRbu1WaGQjONI*AE zkC$FR4Le*fS2UpGl14es>TA+Rc!f{Fvrq5`xG^-l(CP7pjXdd_ZR|CF*Qg}2(q({b z^)LTgu+D0^I&<%qu;_Df1iK7cih>R;{_I!+)oum&OMK>g^Y zhT4)&ONkcm`G5;ySoR@!Kkn- z_7<0S7QwObin*#-d(h5yHUqd4{WSZB31kspt&!|qfLqhmnd?R;-jUEnHQk+Qms2@2 zIpfdQ`d5qT?OQiEJx;u#&c!v3pbdV zEI(p|)4u=!$p3BHaNu`v{7+_|8ng$tGKM!SQ%v=#a1QEn+l>Xy^tz%`+-1vJU z$|;K%!Y*PKJd}Pz%&v&)kVVzNsp`^~wxHo#SlI1><^b+(m0KK?ZRMP!4a=pwDe@H_ z9vd#x0VvH3QrBRvTAn*AF zN31%hf34>gu7YHMw90_O{=0+Lq_Se=p!(1{JyFqP>&A1cnK_aOC)71bcLbEOt2pO8 z1tB2`3+ka@UrmS05*D z{bU6jotSIZ`QWCX;G;wwXw@Dh%C-rW+$}H*7}#D+Dpg^<3S=NDqeVAD)jmEVl(Q8+ zVM678u&YE3SLOa^i}J8li}o;}C*LsmEdkDcirg&`4(|{nN0zX_utQ7Eo*NEtudG>C z6xt0V3f);tNV4OH7Q{QKx44JX2UPdcE!OW3)MQ7kArurk=vY-JYRFw-t@+vrRbZ^kl>X}OSQS|{mD6kLQNB)5X(DNJ4eeo? zMg+m1t-&N(`GPiBp3hY!%{Y-7$t}#3?&CY|!ktZx5VOnUq$sQt>=vXy>XKHOH0bQz zV_EbSM1sXDHBko~{w z2r=I=8|x+P{g@hlz)>faC-A4;Kj^_XS!Xq$1Fb!G*lt483j^GWp^lXO1(sEGRguh- zO2devBGJ*ZfwaM+Saakf%&U&&0jxb1g?a*{X>*dmLlx@&gM__enr_R`XNGvjW0>|5 zZH=cA$~V_PkxbWdgNc8v3N?ZiP zRLfl+F)Pb@Icb&H2)E&ZJeKT%GpVS7!erKEr__+@tZgdRw;+^>HweIB z89E+r=I@wBZ~ER%bG(NnQ1#`TT{V;sEB*YxHM_=-TA)fj1t?B5uN4DaYsyrY-YvAT z&wYmU$htkB{LnxNS7>Q%y(=t->8*FSc&apO@Qw%PgU;{woQR%ZdSV&3*)llAJP`1X zUVeSm%?u&wnLJ=7oLHE$vug>RGdIxWa&vS9h$(&O__?cxq3^l^54g-BVC0_^-SL!d z^FIb3q#_6Xn2dhJtx-ho0K*5{sj3@=7o0`w2oGzXM8W9_7OUO+c>GFJ)7f(?Uua5n z=L=Snn4>69o~kfEqq8_0Cg+iWwHqycuxAev5Oq{?6wP9!NMQxIA%6J3r4Cblf5 z&KwZv!evM}pknijP7D|<;Kk=@cvess6S5wnN?9MDa3NCnXIGf?bdf&FKh(paB3KqQ zRvsvX@Jf{lWmEQG>}4N(ky6Q7R1_%($4j;|`(?8w*A`cZ0(1_Y;JHb)GSRMtj*-`B z#FkO*1C^;-^GHajI-@NFZ`Mq+AEe~Ct^9zvj;K!M^MrDn6@DTMtJ~|bt|R(Ax-_S5 zjB!o1C-UoDv$4Wq$s_6oZreg0L;1BZ_eT{!C)Sx=YG~c`e)EESQ~;0a(nz zC2Z6?4R?F|9$d^0@3R|EJ%t(^E7}lH7JpjxQ$2JHFwgTZMk1jN6~%i@E{N||AcF#$ zgj?aRIQB3kAt{3;$QkE~zY0pWl3g?*Dw%S|-W!fWLi76AI;G4#^ubowWhN!nO_#kf z+=w3IY+G%4$mTe@D~1Q{cuV!spv+i@?$9#~4}nEq;1bV-CxVaR=>BN?+ZXhIbv*yn zUVB>`!it}od+~G8{`=Z1ZRFsfZ}NZSeYo!BYf7alnkZl^5u|Z_htFaAg6o4k+f3F$g$=G!0!b`z!@>x@)@%dUE zyE1hPn&Vmh`rQ8N=&{TF+9r+zRVPyB=ZlQ{>p*OKx9{z(Jw#roHpI6fjJf+jnwjQPcc-HR;oGD8W(i(T5zoH)bXq^e08AE|IzW2Ar zOZGyL*az1;^s-IFI#`gtmA6!(+Bhp0qr zu7r=!fnp~DqrC3tYCL8HMyme`)sD=G1UD%IH)Q98^lInHHFIIAZ5#<) zz;NfK2`7Cu)_juBunBP}fK5}=LqTfrp^gzXP9*v}Q*pX_!bJWXT~0j#GnUF=NyV24 zi_QDW09_V|<@#njR*iSgrbx+a=`0F%78K%!9VyY*NQK8pLR(_;5DklfF$VYgb26SO zD(q3cCzs`LLq}N#W|R$5hFF3T4n4`|w{2M1KmO&_nzyr2OO7KA;GOg&NJ-C3yI@;v z83^~`y^Y62`QtDUNhvZ!@T`f3xQ(i$R1tz5%_U@iKxWRJ2a7rLK&#w-UV24_TTxq% zrCO#+D6Po(t1LfQ1zA#JdMUeHf1#{v4e;cWwGR_|ei6&%O-g<$@j3 zyCqBwo7pC3Zdv9I77nFp$C{}Xn4&bS8Z}9`Yycy~V;$}c%-STW>FIgCNMO-g)i(v5 zgD)|$J0lYo420BlFd~zllTVFrR4m3g@T`<{5&Ygo{txbvOet7|t{DBez-be+u*HCd zrcO*+5d@P05hTAAUCKc(Q$f4U71Pp5IpJ_hGl)~EXdW;0034AVHaFzD?fqLdIq`t)ltV`zVv8r%ZeQL+Ytxna>Uu*W>BxvQ$ zd#;!M3RW?LhA_U>yX-I3KPO;mi`<>dsamRb+^~G(_$gk9a~NpTG%>9$_k)_B;uX#< z8{%o;s7cYOjTb_Hu)Iq|5=7`=ZAD9AHW(Ky-I%?L2;o4(sqI?A`3-HeyyNObJN`Yh z7x@jZgQYvnpWb6ST+{hXA8=+dDK*e@i;oo@N}SmHwMRi)*_vYR4xVQDf*)IN;EgJX zQrtgavb!jpaX`gT{0?Os6^zA_50%&3zl=sw3bj)ZfGfI^dyvnN0MmKf3<-&>b&?J8 z!!-1dU5WH@Cl%+F&i2+^TZV5!aT_(AQF>2@&HdA7OHItBNST`ygNCWhT|Eg$P8b_b zX{7x%bFzEk*o(N}(ercxypJZl8xH&kt!q6-@%bPmk+S;mA&s*u7E)U;Vp^I9nH!Yr z*@OOM1=9wy)G+lliA3AaD<*|A7zK!j1KeJFt_V3&JDu7B z#g~P}_Qm=37K#!X>7%GsVniOKa|b>pN0F4xAR$vYOxblBpp+dCE8z}v`nr@F2bb0# zsLWMmyaz=eva(|a>f~iuGFin+>A6ZpEtvvbiotq7AaA8zxg8BI=au}4YFq$d%0NaT zIqi!-S$xdNJmait*sT7G$brm^~j?Z&~1yt=ff)*k{UyXH3`B9(xLY z3o;*Y=5+9$) zM1EpLC}?tk&8?Zm==4&+yNk}ZM#XdR&niAKs2mS6MDjLdq}%hheI@e5RmbPwr62a} ze{v|vKcJ`pSgV)o6ECa#wj$6S(sIF#V+|2fAaD$t%&qSL&^b;tUs2iik$VMJj)<(C zByyMCp}L11UJwLL)O-;&jZO%t8q%G14;Nh>=K>w;VS(oYEbF<#UOni#aU^aVrjv#O z-xQOWAvfnqgtqI#aGG;8e8(T~Gz;@WQRY zpj(q0g6osx7Ofr!=?K+Xl>#T#3k1RqIQFS_G{A@hq~#MW!Zyq5G-Y!$JOdgKscYgV613B2%U{h^)>sgreLl*wSF3sc)6qMP8gBkaO@mYMw>dn=># zeC0UH>|)(A+kI|Ya?j!|y&#?(DDzEq2;HQ3>{XiDnsvHabQe>=thg-+@i3*#p{nzTdcU#2Xd{lIt_}hEc`Wtj+X}X%|yy)(@kPHf(lwkt0B~;`#zQ80?8?ux}MaPG4Xq zketzs{wNqtT0g%RBaziYCD zsrqpTOIwPseRS;29@lLdQxxqF7pY1Jyi66z5mv7=P|Ef_7 z0{t)DWc{tLe^CVZM{K^)Rw`r(0R*G~3k1aYpU0@;22SSxRUk`I)saS3L*;v(oSyy! z?s$ilM@6rLifRpnQdI^M4k2p#S(nn{;17(Rs?*M0hT(_hw+4AB^`>|kSG5-3#AqR- zGzXc~f*>Qay|yyQ_oti1$6`CP#Da?V`3e@^PoiUNV*kO2@}L$VrR@jnS1co{H)XlS6ZVpoz4S z8F`_jgbdrmNbsxrg_BBvw*dNG>OZik~?e< zWp~cqo24Rbq^VHTkpd}$rQb+mUM`e75%R%U5qojj>0Fd+45{E<+yju~?Zr_sBs$O~ zN`#DUQ&q%sP_mgc&O$6msxMDM6BpJD zZqjN+g>^U<|HCDu6_=-uxcq!Tc|=zT8;k#!Oy(*#HH0QuEGR9Ewf+u~h*yU^=RPs9 z#O5#bSy@5lxEL&D!jd^=@fk$Qkw=U9q{Vu7!`AMaRdFwC^m2Gv?9R|T;e%FpDF7~R ze{Cr{Ukb+jv*-&j6S`$<1pWqOTl{g*H!2`a5?s@#4sxwk{wfHo>`?&MT1B5esN(C^ z65}N=x!B8I8lMTRd_JXsN7SW|)W=#( zt!;y!a#>wJmIUI>p?P8AG$fKh26-k18 zwaS1()(Eu0t@9;;j>p)k}$)P zk32rWDVM6p^9wj{%)u!0iF(fK5K$Lp0{LlMRr;N6E8AuEYPnouwd_L#h1nvud3|EB zokFt04Uv1Io@x(Dy#f4xsoylFWLBwcEmb*V-2nXED(}X%dt!&a(_VhOGccz3eg*Bz z+P@qXOg<>xf0Fn?G>DKc4rtN6{FW&dUL(oW+H}uSUeI|hU*osG67*S~VIL1gZbfA#;`FrH zIc{W+TR6rvlQ62VZ|17W{?WxO4&&y+DM69g1mOVrn3OtPc0mNy0Sw!~MvPGER!mz1 zIPak58)n;pp1N3Yd+N$T&!uR%3lSQ#pw=9bx&)a$cvo1rhUNN*u859R*p@mCYZJHn z7@q*I)#ui{kMPS2H}BMsfSi+ly2*Z9njyTZLEWkmKI8uAi4bs zcVN9fw;Kjs5jeYD#4W-HEu6k|~f5m2#LQMOv(RJRT~S z9mZ4A>{N)`VB;N$Q?T4bx?RjuT5p;50JGw_n`~#uZA9j#Fgj2yuO(PgIxrRQVdUQl z9H=;XmB^#>yk%sv5Wk(#*^o;8<=SPQRe?6*Nqt1w^#JZe@71CG9_?T{hJUzD#OS_E zc}+t0&|zT;j!@AK7UHC8UXx|E866t=@IEgS_!!pZ01n7cbsS~vfJ*rKo84_xl6+3}NqoMCEETc( ztsQyXz6UCZZleU1zsQyEhpH1XnRfyvqljFY!sl33c`Pw5q6tg@>37(k1ZeWsk zI^^T7`}n-^;rAdJV%2s@rh7@H1z>9D{7$*NBiMH!-{t=>QP4ey6@>k??+lawzD^3r zzIYTtQ6uC)U&(?u9~PBw=>NUA;x>y>diw3KGQZpC9RIoFk}wuCu{HS@YDkQn!avXr zK1x=G^O{~zNFNRYeR<*h;8H~e@hDa62AhcNE^hm~?>9hrk{jx?k%92A%-6R^Q7dQRqBQv==EN&S0NM5J>dZO}G3prjk%f84f~uG{CMP&3 zwqIa=8|+d z8(|8b67(WwzLk_Y^?KI1`cJU2(%7CFMLlP789uo7k7`T-P>^3*iHK034+28{XrV}U zVk|$AnLkck8Dd$*YNr?^8{GbV`EII;F|NNM7`xvLmhS`dKt^^p^k#N;X4WS3mIkf{ zPDYLv_RjQ{PT%+K=_Q^1S(B5uHZU?Vx3e}jaa1%hHF5k0b>Y7oWl7s|3-YKVJ#L#P zY%riWP#`ey_Wa3|;gO(&@rY(XG0Y@q3&q+khRcRp(Gj-@y9f;3FTWxR80StZ{o-Hs zqmNy`btVwVN=`4^p0nTDj=g6tm-X=ZfYXN@k*TIh<9nTvMY7Wdz&R%e87ub+SdNvo zQ@5!d)72bO2rX~h^-r|c592)M4pf`fZ*c}HQZcyDU?*-;F(H&Im=D;X(PwKGaQW4M=j zC5g1As~HAit+aRy^bgLRpMO*B&G{0?C0Ms*TT!`%uzlVlvmbeG5XKT!*+4W?b;9ZO zI1=MMcCJnCkZW5JdqZr+Xs5zk#;>{W`Z?+z)6pFIFc#T$ zePXy6f4-SdwUAgq7?K!D=Uk~i%MeZoN6t{SOCqa4C`V4VX$H$%4QZ)9m>6jVTl{4n z5Go;UF=`ZU@T)7+*N!dD7}2uXh}%V$Y36sE2g2Iuvg}*ApA`Q7!%W#PY;n81xM5TWkHu&{@4iS_FZ}5AEoB!~yFHuG|pn{Ip|HGeY zE8yQQKuY23fz0X{zEX*%8a9JvCCr+_dem6NDytfNu`mku$538hT2U)ttmMqlzy)RZ z2)SBP&rVP5f%uPCWU%rU@fM6EYk;Q^;$|065hRld%->@SI&XnJpde(`m+0VH?>ivN z2k-)4$Ye6-c8OkTb!P~(cv8RVI3>{(6Ae?oi}P%H(Aia|in-NkO)Im|EXOO@UL@4_ zTN+%7N8>-`QYT`2?Eh{}AX{@?>)+PY@@-B3cc9b%u_h&FkAKpPQx$D^*pX$b%aBH+#PQGGau9E4~+t=VS0om&YV)S-F(^f%PW!qK7wW`4;It`<xg(Y8$GWbQDgPO;`x zp?10bQRuMkSc=kg8MxECg_|p+Qb^loo-}g_NOo)08pF=F>qyDaZggpPo;jGtdbR=H zF3WH2w1nQ)d-=0ib-A`{6gtUyi0)*SjO$xhejaR~rj57cEf{GWQdn&m@}pbLXUs>p zIQ;hF)pH>@skxVmOP9c5l}jj-JN8-PH`T_51sIBJ7Lw!rKJs=V?OdN>_)Mm3kk>Bi zW1?2&G~38t{f>b<>vj{GHDlc$iNUhbC3^v!qv%i#9z_9gv2PiU*)Vdfn%(wLmUb5B zA9HkImkP~|2d5jEvB$_USJqd`MibasshG%%eP7hm3?8pZ<5nzATS(kmz9kHz&rBlA z8k7%EsX(XBLT*1c=cpkBkrYVmk}%ZwR{WX>q{YsQ~s>`QNms=DS0 z#HzvyHN_GqW~wpLs1hsRw`Pj`-OG4`FWyLr#wmCNg0?V^WKp(g5-CQC`yike6pn5X z9E^5M4#$Mle~Me*>j5_JDaIE7NZ zFH65?w-!NX zD({z0caH^{cHI%9Zp{(ncJF}`^$>5| z5%mVsz}_14<)EGbzP>#4S!Px<%miz6YTkw1?yff^+r~5S*wVn-##5*|gpq;PNgnROaWLC6a4# z48!GH)Yq{|6MOD15Y%l#m4n$l>Z>r&xf`9)FznR7VuRZRqsnG-`ce;}H_w+@&(ehO zM4H6A{`z!%g}t?zc7eUN&{*oXJo{PQ;fnBdF*nP^V8CZg#$@VBlhE|z^g=x?)ZUIx zt7)pLYk5*y!?&|2e>dJmIf$Hhyzt(%kIvHERk`%SnT#=>ZcQ1MWWh*dA(!grNPX&Q z7?b@mHY=pa#a(jpa!pu-*lz#{kJl{Jc0MsFP1T8QnoTSAHdb>eIdu5;;iN2O@z0KcL+GSLCb}fLS3}#y+}H*xJ#0yokC=63JS(&EcKUS5r3_ZA+hn&X zo7r}Emc%BMObkC=*raLoid2}VQ(@{LaZYn+37J?`Kc18DR8bR{Pb&5djETcxCRM>$+7g)4&YX0L#5}nR3V6+-0!~v#{e&~4*rU=o7;+nC7xURk z>dc6${pi>aay%a({Zhh^rFjsYirp==8F#=6^spH&!;aG)>cslh{_9{> zDE1xx++Z7&`d$7VCszrqmBms^K5!_rV|&#W<+CN@TU2w*b>Lkfx^oWGy_N1$y_zJj z@V&vYd06ha$8c2xmk_?8?66fMIuPx``ovdkbrN+`AnhR+eVbTE+a%~Kkg%N*$oGA{ z;3RO`gQQQ$&rQrXKv%5xn0A=%*xq+q=lAJwBfS_LkJDJA;f78&@b!y}*t~F7=cqZ1 zo~(oC%4;==t|~e6ha8qC6-s?JlZ``v%5^?bZ+JVcJ#G`e$+f>@O3pkDCaS0~maZ>S z^I=jmdaOeM!sJe?gW(!Y$OGWiDHE|Jmn{5b=^f<`)GpylL#YCb^>WHucG+uL6UHwE zvDWv>u1xHid}X1DMze{rYniU6ZBC|VlpW}9f092h=+5QTa3YmiH!!;t%#^SiVsC!h zsnRYI7tPOMO?hvPJDOKHTj(@~O*`8a8xD`huI|5J@H3&`SF#Se0Fd7~v}MMFSj`hG z$+n2Vt5uhnp0DNK+!9Si)K1`vI>sHV?3!(<7P2O++%mQcmrO0|gAlg{?B=0s2p#dG zb%IOpshqFB7mF^R@GMJUkW1=jxS$)^yWV`ClqL1oNWm-VixkvgL2#eC)vsWA8Z4T= z@F6Lvku@pv$YxKebf;W&_c^gvV3}Z}qIni$kV~2u(sW_S24~)p51uLB=xPdmAhxR^ z)Tcc{*VLJK$SW$NdboAq5F6D#6zTpWg>;UMUknbbl?>1&at6rLq9GClE+G<7A23M- z5U6AZumySUMc!9jp?;c9psa3)dcfB%7*MAx_$CwAQO$ooS`=>sR4auYAvrVoLvMJ1$y%_oIe=`}oYMZ0T4{J7sw{Nj67? z^1PY7XSd*jWa8tXdW0`c2&6eoyZw|fkLWr;5>}T)Ow#aU-MssY=m!*Exs=`N;_4j0UM#0LW=**qJ?3&I+&e7d7(`9`XV4svViqq88 zsqllPv@vp8RKsGd*@3mYIJA$sm5ldPUQ=GJfF8rzwone=>PcGgPmTX>Q_qei3P?B$De zZ~`qSZs=p%K_&J*!&LB*G6@kNKTqd}oe0G|U6A?a^$S0SO<3Pa`Guuk@Vhw^*3C;6 zHxyL)Bk>Fz4m;W%A7spfGzo0&*AA~V6#jbNceAbj`fs^+Vz}U1Z^g{Qz)+XX?=`>1 zHmcL?ZM4N!7fo%mzZ{u^cwYnuMN`>?t|q||Fu9o&hO5FFsmQ6APoIwhuvUp?khUl5 zdJsZa#ju{0mphyvl;E#n&VP(yTv#*mryIE7Ua1)R>I8LwWC-ETVJ1B}gG?_ce`(d4 zGSERS*GakrX$QbFZYOA^)%pB!@TbaGEg8XD0$v=$DdFM__`ZT_O3G%EY`93R#@d5j zeNj~8_2o3OFb(>+tq(?8^5b7kl*j0 z{XedG@%E!hqapv<_}X^oLlPK*3_LfE=nEV2X;2 zS{mM1zXOC*VJWKPs-pF|^t*fe)cK9eg zwTlzG-x{|nZXSHuk#A5ggwnudU!emd$BcJyu;eP)h5pcY-cKV6037Uz4N}T(C#()N zbyLv=EqndMyDmNZ1;$Pf{^q}pl_Kh3#FNT9tTcDbq%tVx4vq z6rDDo^n!YjMZe^?^7I^JkKpp%=MLnH0^N+Xkw_;ijmN0;k@gec@np6{xA(^bW-rv$ zAfix7OsF;N00z=P8^)RgU+9lk3e+^i)@bU>Q3K^Z74T&Y&C1Z@+sIwU!5`=EjLU33 z3-d4~$Hy3Jk)}gOpCwid+N&jav?sDEl^n9)f=T&z&dVD&%`R~V*lXGBdP37W#J|wK z@=r;bU{@i!N^)Q6mVHJ5(}g8Auc%dg7;A6W@cX24SVtBHnxR=zH4MV{vKe=mROv1C zbsDsoS4{L8B&T#7T)$OYts-3rq9Z3UJVD0^fb51Ir1#9^&1}}~@6n!l6b>@#FiCt7 zq)jXqgUT?Q;w|P)?OJ1H<6Q(p-(pms@kOfFWv~zihcjYn&nuLBm|3L<5vi92FhU1V zn4M95YWOpcvHL=s)uKHaG2vm!erKO|8fk>$amc<40QPpMTc?3S(K~$Yh43q@Hj+jc zqA?l_F-$R5fnhHd=2o3ujMh*OH@_<9Gy;kWuz9KWRtoi{hd9Voqzy#F%>a|-tr3AR z09=?O6&ihozQjna)+vS$Kh4lxX``PmZ`LQ4^3mKahrQ-|?k;vY(snGp83pB0vS;LTLRpS?pHw}P&V8@6?XNF6;y1E$$Qv@J{{=_(?J zx*&%>SU12)Xei`BLrgKJ4fmYCo_$5mDQB0T$Dc#%s~|8>1k0H>2Ebe)uV#W>*S0P8 zdCiJ3k!{EBgZ1Sme^zA$LuV5O>@1j*MrVT0ReHkEDyk=rT22xCtXZ@mpqrP55THk{ z5!a9?4%-Uq+JayvHc(_u^7Mz1coOdlbe4w%7vd1oN6JpYz=EIm4&)g^*ac3^F2TH2 zm7bl^_q`w}vFM(gfBF}N-hX`Et|l>CD!zNifyh8Wtp9tf{;!vd;ntwigMO&}2wTO#&b-+{M}JLo(y&8C^4 z?GL~w?8mQ{X|k?4t%8%V$?S}r`&_3jPAAj5b3J}NNPGHj1bxm|6C;Y1+5!xRlps*5 zD?x49EGh_l`Ds#A5|uK?J|IOZnxexSjnx$x900)nkbpQ#$kAQB4~ZW_MR~t0@K~8< z_};`Fc;sL*3MO{qGdQxCgDNdg*h7%-R4crFiG zril-yz6gKyucYp#VJ9_8=}Vp5t{SvgN8>WD$w=szzT-@_ng*Uk1S2JV!y=}Xx%QE1 zv-#8g*IY?VjdPUjWeH|&hLzg0>c_nI^g0%^$auL;aaXngt69PACXGL8M@!L?zE@{b?TD|npEZO*X-GWmoRRrivFDPh6=Kz z5C$BUYC&viOZ;nTJ`%b~qwWBeFrc$w7g=|)4mb<^YV3#PfR(#WA2!z3pcdBFFgMoL zkQd11Z?c|ZuWPH;XapAT@Mjk9;5dmPSjfDzrPwQlGzjm3uYj%HlQ`Q-81n_1gTam@ok5}(fdspvbdryoj5kP|g_Iq`FKzZ;x zt$vs|HV0lGNrq(IY3s}ELXWQ=T{xD`c)$iC6CVWW;-G4bY;FK-uTl3+w?qt!6~!#a<06k2(* zOVCpVH}g*Z_Go!Vz^LVABFLn4bF;-|G}#W@Zn>crd&VcAq^*S*-E32t-QD)V`CH=U z-e30kkcOV7$I7JiMH@!uhmNS~NZw+U5Hla1+R^XzZ%9No|ILhLapx6<%6P}jxko@f z{o(eAXq9P4XyGQsuBN_kD<4zf-j=~jsKOnnS>y{k#`|y0!6)BIA(SOW&0L+Bw>tP6 zk_b8;i8boG+2!L|6r8sewU96ctePGeq*!ech1OlFWC!dYr=WEa)a=Cmszf$@Al8o; zA&sv_PZh%#Du)*m5~8ZnD4i+SX7sfDz4Uil1loRZpM+pF(HYc_e-J!xel$i6?|{NO z5%;hwJ=OaG(dKTEjd$KrB58Zeg-vkyd4N%2Qm0pB3tb|hpv4eO$u_?O_gUr_oq?+GqDF@|QcxO$LVFesMY5)Xd(BM#<>-^s z5QFls&AJ15PuCM87O!0rR^r+PXcw4o94>wtrC6yJtXS+KaNs=C|Il zIqqJQqmeRCgs1H^8^y^!T2p?`3dGg0t0eGV)4qUne7$1>pPop-e|xctPq4{akr+G-&=HIE_W$w=i!*#SiL(Ws(ra z)bs3N1Iv1$#?TJn5k+na{NTj{HA7s(A*nS(r2Ia=`R^euh6RAA;oIo}e~0$}x%2z) z$n}2$`#wt$M#Rvs@|HQ5e6QQ9zDkH&q$0r|djdCj`-qK$#;Y1{_ITd@e99K7Tb}2z z_XuA%GtZAcen9Gl%JMMa`5Z-BRvzb|C?)s}Mo9ZFCqr)KI!i|jh`QSaa1!3m+*fp` zRSbmYSv70L2O#HsWG#;}rB-9lqFBhELW@AwG$I|T{1$5mI!^YeMSFL8MF_$9$i!rod{w>g;JL5z)+cL+Li0?pbgG|&_ z#~Qw9-XV&?3RdX4DDjGSV11}$WDrx$qH{l5`E>0POv(mpd2}R(y%@P#*Gw**-kZK~ z+*pa6BrC~%9CE0DJ3iHOo#(AWM(m;%pS<9F6ho+~JeeUTT8kR${x@^{u4Nn1kQ5E@v;(-_r! zN_g^Bf6{t_7S*N|IHm;lAMo$1cVLTma13tXP?Relcin?W{-RX>iX<04QuFmM^@}tE zeN8X8PB}B9$bKh$YDat@g)ZdN|Eb>l@bd$8DBcrTH}PqA``;~OZt`1q=({Oe^4$~_ z`rmJk|2hREZD(ZgKUI)sWhuLbpNOAJuKUBRGEmoU6u`)(J0&<1`|{Ax$t{rbB(bse z^D#IbckSUQJmLbGDOdZ^Byr!;dZ;$I82tZfAw1#kM9Mv5u zw4LMyCWhg#*}*R)ij)~5!PY()a$X8qaEB83;dQ~NCJ$t<;sA$k?<1B*k=iKg6yjN@ zPDFIL0+TH!iLcRwl7}_Y#=d&`g-tVgCfuOFRyybk=MyAr8#%Cr7ZwcBlnW=N28alO z(s%9RntxlAgXwrM5+_)Y?D0t@lB-7o6p?`Ol4%?XQYIIwTz=Y3iE06X)P5TLW={RH zFk;lHy*s;KM>U(JA>0eyAKy^D1tT%m0Eg?slyf(85q3+39riWx^81_jFX7h6;7Ref zKAWq|Bg=xW!d`nN-K`!dO=u*P-2S@u45f^DEH23Szz%LiA^pb-^H!?=>XB9tD++?l zD;m{<8iu*O9*dQI5{qVXA=xP@e&HgsW(Lbrr;oa>8$#&sPRLtPC3My)kjc2ZNx8Dj zyn1tAftb4~N;sEnpoeIi;N1EI1<2KGI_nlF8Lqmnt2@3)y*ofj`gL;=d&qlolS4^- zlS3-$;|0$2K-J7X2p!rUUrco7{Z_xbPgxT;cszjw%3owUd_gqQ(I!8U5i(pj{5S#b zWryrDZVBQDKgfUIVxe}6-)claKn+?zK+ON!E%x6%MJ;G=<;8EAhwd?Jj{swFe_)Ux zut_FDe}4=_s4+x{h74%^pD{@Xq?qES{gc5WgYEj&OU-n&;fw7ow#|sF{(p)W3!0lX zwX`}cp4*+bMHsd@pS##If`200_-)6H`8;pA{dW4+4tAREic917Ji`RykScfHNm`j0 z6Oe^>a7<4s<>2feTjuasgXSML%YLEZJN9S4JBB2uQMXbWBb{$Gsu!KIpaE zoyhjiI`7^eRJ-|BlcDNPjocnsR=RzA0hQgV+eJ_^VEP;lwY$3?VS9&mdnrfp3*~p) z(|Tz^DcPmx_)ALOvv;tZ{T`aMy>{#N{?03R121<|gS+iC4|VPIh|lpXhIb>ku`{!= zL*Lom{T_Dw*&A`Z$LM=Y80VUumAi95jQzxE5CViH zN^lI;j2ww_77~ILjw)NF-QJNvEdvo6YV1SvuI(1Xn<1N z5T{zj*ik1{Ci=J^?20wPYNH8@F(PS9mQlnQrEyRh&lHOsPj}pTI;U?8R@U*tkW6i6 z?{wyXBrSm>Ds}H%8Fhj~!xo*C=Lx2i0${SyE7nh-x+cQOujUZ5O{eOV#mb`| zqNBVf0x+w*EEuMnZj93GfU*zbvh7-;Te@}X(#f7ld33Gsqhnhe0`J`T!Pz!ShxOu7 zuLIU*K};?)Ic9p5?@$xsRP8!93@4=BI7Z19O6t-uO-K7EczLMwV$ZRowV$r0DXOy7@VAb(4SHTnl-0!^ zv#Ue3jl~TwUW9E+l-9+b6PrV&&W0($jD=_tbJ>OY3{`jx6k7BIs?2@HXiOeE=%RYN61p+*{5Up>fcZz6#y*mSr z9=i4QJR;dxEGYm$Eh)JSi)Wx%Opi!G`OI2H1eGc`M!ZJo! zbG?};mvRXe&Sf}?ZK$lfv5W@Q8cxjcR$gf{RyM{IkKMeEYx}PY)c(|3yJlW(enXL= ziHl8fEi9pv{Jje)z{)~G!_;MUEfdDiLL#TuAf^`2pg==UMd!%s1`?~n%1Sjw`BuE` zqxKBzUFDO@Pa?!GsJ6<$rdLm8Oa4%68?mgmf|@gLskNY}Di7PVnp#0gQEO|bvbwtF zFy{Ltn5tU!y$T~g2vnokc>JAtQDqWG!BUl_I<9$H`D67%ULFO+Qcbc5xtxAC_DD#x zN++!e94o1dOSk44$nWj}om+V?1!b$n7W751eFs{sl0Ih1avKo~iQeVyt>$q()uYP9 zw{#3HmDEWM@?h5LHaf+%5>^|!^D}FNQ$w-DaBM_H!&}_TOqmU#RUoslVo#Sz#2uW~ zT(ndyOS)z8!Ju35KV;p)fX`2u;J?JU^yTO=mdC&IU1LNkxIUmrW9r>mR#53#xo$+A zPmEN-xr?Sr>zkQIxeuX&H3$0K)smrXab8@<#x&UkVU|J+2{pZ^3E=cPlgV(_0q_fk znK5pRS*_>-8t5cw>%DNY5JH zOiJ$RW++iAAuTFaVx!z2fs!aP<%KR16gZLeBCWh`$ypr+&U=3yg6ZvW1B;W(Ovj)@ znk#BzMQJtBt&Jb;Z(CYWzJ#>dsAz9n;G!Q*RiD=E?8~)>@e2kPHV#(c=`+;cOQR>h<5C zI5?Q_xZ&P43X!~&1R2YZTU2RvQDU5tTjp9^&%6klE}^JJe=v}9!opfOB*B7Rn}?Td zLQgcSa|bEVN=r*I3l|Mjm<1cEtg)5L4@*KR2-Y`46b)%cv<}zEdodR_+k|9fF)JQ2 zd)BGDfN^tMVA~XACD(FcS;B<`U8Z=F_Rk+6Wi=1isCsT|qDDE3WU-uS3P;C?MMghy z2E8u4oRYM_l0y@a*%=mbNO}|9SkJF2l{7O1O6b{aL5ZDQH>L|xXSv6NP{TNetHS6| z{30m1+hZe7b^Y)Ya+fPG8hoOaC}XcvUSCJyJ8zIPM;?2!G0DLQ?e#ShyOPWv8ZeF# zW=!N;oA(u9(KC%NS!5(nI$IMRnMiVHiFP?RqZf%e=#m^bv14@GvhQp%4Q_PepN3%g zBFF5vf^BEQI%UX5HJA}UlbQAdl0^!TVWGD#>oJE5xX zQu@tQqz2*UqN?`0irK0JmQ%3ceC-Pu^p360BO%gq-zJHH@AOYHK{TVYw+e$Q+3pfD z%x_`DX`V~tO3**6a&Qt~c!KGs)=f2fJngynHrFif_4Z)!-`^BqH%TRIB)L@XrF5v3 zM9uW7`Up}~Z_J4u@TvuQEchr(hPAcD1bG@W9* z)5NkNlcMbparphCw)!-Vp_vlog0zIL^30GO@Sew2gj`PBnEC1=##v~z#j2OZed#TH zsCI=r@=>9gAUd?P`IlAVl==2%=wm))0iM-p)~N}y#*Ju8kad(_!H!((ckt21N3vYs3s*~ro(cvg27sk|${O9S}P?aKFTj^^GxH|do-5w6A3dAX>C)(L&fBlYI? zhH5$g#{Am#9g%wLau)+!BV)EA(aS3gpamc1vDm5%d9e_^=c0e`&D=rWimALuP*#n= zQK{+|Q+-N{yx_9`{lWg1n)C+yg%&)$FocEd+K%dKh#P78Ll_A*?!isvT}b}riC*Ph z>s<_he?x|Yf}fZeV{NU1gWhCv&18We!KVUDBqMNJA%j#=K!KK8o>$%qt);vXxvoqa z!Ujw~q(fyZpgF+W`oqAo+}V|P9?`Q%=U!No2ZF;>J=Q|G(ohM&ZBxG28}?vBwz&R_ zN_Gv1R7FAM;wM`)T%|XFwIY#BHoi-H3(b3(7 zg$B=$$0m^}zzJoDn`EH$CQ5mzTDpNUNyQ{GQHCY*n(zSZ%<@C!FjxGKlA`L-?f_I= zOPA60Hl?{h%RYXdqJE+s0 z^pS_@W8@;>vpt}wT#~LQtC%^U)(fKh8O#W;aNE=-EE0hs{%{F)O&ejto8rO(UtcCe zPiZN1RSw5;|D|~)qmar&l5fHZ7;{EP`)=Md(F`gii%4NlzSAcxj4`U#AhSI6cU^q5 zd5dCEKfbt=18$AlZd~?ym|Mc;K^Cq`h7b&>Uzp!Ya$5zH9Op#Iq*@AiwDDK4Um1ph zie_21jS^b5VZKREFJkao_`orK|*k8RtwZQD*Jwrv~V*tTuk zwrx9^V3Nts*1fx1dw;oGwN+hR)%^!N-RF7FIUh+~I29EbnXGL7>CQ3I5Eezg4IW)} znN${?`GTO=f4cZA68inHP?UL|0%Ox~qu9-L%mWLBb^AD(+$6x5AX+tZG8V-~YG^Fm z1+Gst$6le>dhb0wzzmvh#}wAJG_MtWnxy2Zv-CPD)A~hrwqt&m3$IQnI$mJX?`(e;id znw%|6So)#~3!cnM+De)VhY1J-NJYQoOccszMK$3kGVyP1Llb3ylNro4wAraMtx1r_ ztvx3pQ~|8}WN2zD5Nc{)ANk7>@Y`O=Th*QM-H+?!nyFj(eEL%ic(<-E6uqHXlsIR@ zCX(Y?fCp*lRYh`kVgSHw*W+%#m3C5I9zpdf_qUQdtC!lw&FB~v&CQ5eIX`TL$BhXR z4fo%xCSXK|0SyH5-GsKBmT7R?22gvCxy`8&8sv_G!Xe`EJtK(RntZ$ryh0MN}2?zK0lm z-S3EX=;w~WU98PIWNuACRyC}?r=;ay7+Fzn{3l`o!3)r-u>a@pypC%pogJ*iFxclM zbf*+ndKYo{;~&VHqvM^C_|nW7oo_m3dJZLu>2N+!{8vhFxx5cz(CQMW+5v`IugE+S zL4BbP%aL>zPytMw4@j^%r5VcpY$H+IVvup+&n7@O14%O|@r%L7mW3%NO1j??Zs;Q6 zJ0+grw^+VeTrZ=>tWgH_HZtivR$r=pONnT^=}S_|*J;qw6vsNY?NLlZPN&ORj(Ld0 zC-4YWC`Bu^2(lU#UNQui4b{umLVu4}Pfyv;>JvmpE&xoc0pwcdnrR?xkgPbM@UNqu zjaftEIB6OD%+xEQ71%N~X^UgCeqACa76*2|W;-0>UX*gptxgB~o&>frp|TlO|BJ_% z)Cg&+L80=1RJA^L(ewdw!$_4KvFJ2|HK1PK*w=U7!~0h(bBML>%*w0U)Q3s+Ng?Er zb|`lQ$g&vd$vcHO=n|^{H_k$@$&;chaBKFKm^Z$yeVXZY`dXJf zj%PQYw1Jz7S*_R8G@-z_D|F2PBYb5EKjm}G!*8WZDI!NT*5QVkD(gdTqpX9wG#m8 zSuX{jElA8K0kKj7{5Wfv;KkB7VeJXbMlco?C z|MU+Fn)U}wor}F|F8#q;{fBw%0oU^#SMb6#Xr4ZojC_$hhxKH5?&TxW>Ez$4uvMff zSJ9TIDOdJ_i%We5Ei-}WbyB``C=i0-mwiSICjCL;$`4ihF1(6w`3j~qlKY!NX=Lkv zn4FMz-^K@x{Sn50@X5mEZK%hod+@Ukad6~04&Z@<0prjX06XM{DK38$~z1LZ^xU*SL z&V`lZK=VQAnav@tqX1w2K_KRnBaQ-PoqXu2C&XOB${J;dN<250s&grUg|fmyW{PH| z#C@jC0~z{=6OqVs+#pL43n8qlj+Hxa0$610o_@w-BpxckfqZd)<_l(dzxGSIXu$P_ zgZiN|mca%rw~ry6Tc);cBc0qO#56F?3{9JNjNLAh8b;Yf(XQQn80*`T?%W9m?+(J| z=rnlmEr|Wa)OFYwf5NEkZ;Tg_L8AwnhCbY;lWmcYwM2sheyCp?Gg9YILd+-Lir5v=y40!VbKilKnB7mIuK!*~Nz57KD{5AqvvVdai7sq;J z@s(o5qm=rA+9SSsC)GLNDl16+YgU}hCOIk&7MPk5)Os-#!Y^XA%< zr?VHS`bc{*IPM5RKtb;V{`>$>H(+pR>x*~}6%-Q+I*;7!7^M|GEe>9XqeU~NgPeQP2l4wrj3USd;zKaAp*ri5!T#l$noz{ z@)sfu>NXp|otP`o8OlD`E=-D(^x+ zY&oXFf5$n^p>yc*e{;<=9pc{Bb)xyctKwdNT7BvdTFUmn0%5%LLzp9AxfII zwff&~{j0no?pO^FDi3@tZLLi3ppFo0L73}9 zdU}wujrvp4^sO$)kLp_TyyvBD>?4b7&4g3 zsCXToLaR)pmZZsocumrhX-AXMg3?hM^4$LZFl$L2muia~^WHIBcqg(WLAfn8qo{Cw9Kb5AjUF@w z4Abl|R8EzDPAXAV9^F1rT0Y9cD4mr_qt2owVE!hqDH@XK2@Ee&KPFe3$FV_wfZ(h(bU}A(22Y9DoNxcIxK8?UWPya+r^N$WYO4xNU0n7 z?3lg*%pok*6Ia;-GAF_y@YxB`c7&HW@=pQ$eekR&=T7(=#qT^QxrZ}%XkjXsf5pub zoiSt`PIbc3E$H?nj(Jv*u0XcqMgmq|=3`nC*wrI}>J$)Cbd4KEtlv`oc33y0gLqYm z#vCwZ2^lQ$iJ>)7&Q=(^$RtkIX?acI^eIi2;_&-i$sE*rw$cyD8#~TIZMW%3pd-Zu zN{>!h5sGBot(nlDtf(&*N$wXf7RK2n`!Wf*#-D#MC5s)3Ql*@Nt}Ec{S<3_2w6{g$ z5IfB;!NXb_CWtRiqCxb@PLqMGQ0{>Q6w404mzL5e;=egM8|sJPeCdhD+02c@xTDa| z4$Mu$xHsl#*?`9q1tR?_Wl)}TzFLcj53f(nL2l@{V76gPP&>m2nrSwZYiMTHM;BU8 zQ<^qll~qhD2{FRUB{WbqYcP*|46Xa}c2{73Ejes<3G6SyZc8EOeALM4uIm!06UaLn z6X5E6VQ2Q{tA4#;m>zC}jrRw#e391-8YBk&Wp6ohC_oK>+z(L`C$X(da4Qzge zq16>EgW&as4qUchInFBpCd1Gs3&pCRK&22h`XWr03=DCtL&2B*vpoB+ZbR&LF2kL5AVpI{8jGZnI1lZK{@)J~5PO%c zgTRr_)OSnRmfZPR7X^=m++doTUh;hno)Ic$^7oi_dV7lMaJ7xTv61v^2w^@hc{bhsbDw!ihWsfqtI!MZcs zx`!fX&ot}Y(WLibSFaKkoe^Csh8dk3$vL2O3)Yi<{rbrdyz#bow9@~WfQ$`C6FkOAiP0eK^VKI-`}b0czjB-EmzoIt(;p+ z_K{3Iw~X?)0dBCSCItQ9_D5&z#+eb?M;MNm6M{YJ{U&U`5jKewRsizpi`GQ&?#elh z3di$~X#Hj_DTF@!9V*jWxMp$^UIcjw#1U7CN+IG@?1Z?awmlK67sOE#f?t~dH;?Pq zTJ$DQhKSJ`Gg48!FYC6_uM+P*iT=NZii--&+u*7%;>lTr=NS>~Ki<`M{ zwWTUqVof~=m(g;=z7CK%bWN3>UR(w=P0`|aHp?R%OVstD*`si<6c?-#(GP1FR97lW z5!AFhjNK(^Dg%hPot2g29`TmpWU_1dWrd<8iGF|gY(}(aamRuHPkE5peu*77l=OI{ zB+T0|=A`#|uS@~=f-0EP%IuG$H4*6IrOHz%$C{en*zc`43)qeIuH5esN9Hh0P1L3` zyf8{Ev-=Gjw(p)eX`Uw(5`wU8tl56UzWrj*)}RNtFduot9v3Z74_!$+a$&-R5O@Yh1RAzC^gK_`CH+BXqO(hhC3D5KsV**_BO z(d~_g9L>L{yvu@oJA}A{ejhtR`iCzP#vIUTp9^uSNp-fPVr07+HOGyz1YJp@RQQhw zy+V5m>eIGbF#Ky@-dL!am;#g6x7|C!Lb@c?RFVB%L`tiJ~?BCAyY|q|n#DAxe zbDRWyaDGyx<_G@ZF~+w5qRros6guYOmPko3&kFH-!NpNhw64vl4LLcV$8tZ>yySdJ zd|k7(9Lo)4=DGSk$USDXG5KA0*A5+Xxh}Zqh>zAB0(?CFabsVix+~YOEMMw@HD$b$ z(17KEeeTkZ63(gN{mbKZ2s7RMz8GkJ+Wb)HH>QzXpXTIUSa;`*+pg#)BYlgh_HXQq z0EfSqb3A09KFwY`@|YILd%M4KNKD4F*DbX5-W+d5Y|>IGwp|%ZyqYI;Z>mnV}#KTC);m>GI4nWNCY&DvQssItPsnCwC zN8#Bi)Q-(8@>iQQB<)bao}_zXHyd&UOJ*z^J!mYC=2gu}^Ub&pg?PBLx~RWTHAs_W zf^Z*Qd;=-yXT=Q#=P(WXj?pS&FGE;68>YB;#M4GT+y!))J?sW_M}2WiI!p-GAFb+= zER*oUmwelg?7VlPFdHL89quUGb}f4UWjBp)zLyROkL4GeeT;&=S|0-aZ%OL8O=Shf zNQ#}1`f9SvDx1uV5M8g+k-nCCFcTr@$omJdG~Jt?!V)C=m8GR$j(*9zPQN|TOEdCq zIDDi(wPvuumeF`IX--CX$q>`2n2T1bfK{h(FI3EgP?!OSri3;8(gy2JaWRZp#MRtRsI}sc98!Y^8Wk2Sgmyoc{^d}kb?`nm#?er~0|Z@otp=Kp~PMDgd? zdiJI(f6B;{`=MY{T__pJPqH%d?X2#?zRwl7!62cs-D&-H{q7fIYHlXqPy&{5?|>=U zwU>6^awm5_2(Xqx`S~BX(DODNOj9ROzVe6w)8)47)QxpNCw&K!ynF zVWEJ9oAr30Cwu+Qe6SDT2~`3zG*77DsbXo7oeZQS2~Y>__IxPxvqQ_hO-jPKOGy_x zbjXJBgsOh23Lwvw*OcoC;`gm%rCaZ&eW`AK`1*A! zK?TB!uD79lLEb|nosz@9O+%2kE}|{m%0G=Fd_d&;J<&pSzvBnX9vviOYZ3`D(Rb zeN$Fb1u383`!aorjfjGXgAneSh{e!^hk1#GL z>rE+Gcl``f5KO5hocyd&_@OwCcl(S22)-`$F9)D4&tK#y2(DjZ>VJ}d%apIPf3^w* z9GC7d;fnm_&GlzQ3rLtJbo*2s{9?@Ads*W7bO8Pvukb?~)9%Vszr4-UTf7XO%Mcyu z5n~l8Z2>`oIXP6=jLLgMW6o(aTGK2kpdT9(bIHSTqFVF}25?1yajf*6I$>2d$p<8d zZkpy!v)2V0<`q4w9iF{CvDKlSsq-kVdxp>5)0W9IC4ypkmCZGq=F~poG1?t=^2{eY z_06raFf4FaxWvxEy49_ECC<6=7?7i2PM=#3W|HOGoHUP!UyVaQ*R`IRg?^~88;G(P zls&uQ7|gRdU2lck)!MY**xy**TJHCD7AHq#XUgCtN4Zj@OxPlhddovbRsr8wI&Ae; zcD9;$h_0_u5VdVIw3Wfz*k$NASkBe$(iTNonxiKddk?x(SeQ7+PpWO<$YxMNjWYuivL{qTjW~N|AGqwjdDv_u_O0gkp z*QEex$^A?`#7jl_H(Vxx`s}fJS>;kOoE<1|niJb899U5od1uio@Fw*SQZQG7q-B4b z7CmsPJ_56@=E`N;$pG(7p4>`jX3h}9Dy2ZAC(X%G`ReLcNOD6@MqHS%AVg1U`(Wx< z_VRi}k7m(hLTEoZibWgAvL&B#*D@)_gs>t<#~2L3n^O&{<&shp$b^!Z@5q^6;W+6p zYDv}Dbt^Na+vv@+iBDbyq7-V?%mOG?Bic%ZhgaOSd7V4Xl`xvrR$O0od@X+Eg`CFp zF7hI&$@I@on)W$Q{y?7YWq;-ou)1c`?^@({Aeqfuim+UZT@#rb$fWr}MCLg<(13T$ zZsFfIR-79|>wK7Gh$_1xe5E9V&0jgM$TU~Ep$mh4eVG~i5#b-(TKPpLrHw49;|CHt#k*@IF_n5tK*S?c^dT&W5- zGm)N9 zA&?_ska->Q><)T_Tv$Tx?qVCS?>dK`#4vX zlO9@7u=E~$y!Wjf0$?RlXsb$y{hs(a(K?TgD$oZ%LU4$QPJN80ieIT%QX#;bAUrhJ zF9W4TsOwkQ1eZ1g1nD+jqGRo#l>~To1^%Ii&7>;vOm7mqs*8tLC&WapP41ag_~OyUokb1Ux~U zwMk@F)d8h=_y3`80Cud5!B!Cx2eJIt)elQ*i&p%xvyIdY-oWGz=1 zUlkD=IJ>X}ccde;Q2=b_RN&c8IXkWng%FOg``{Kgkl5nwg(xo}+L~NLMDU%$e?uu~ zprW@(!Kq|@nRQa3n{h?OT#*h9V%e=z4(BaQC6@}yoFwNBY$^ovMc0X9GmFo%tmdh> zvQCAi*6=CXq&TW2Gq`ZMIvaOfGYcf8K<0Hm#VVzQz_<&)nncDZw@l8x7xH>9#|`Wn zl>7Qy4S-BfO%%aYJv@Q+YcP34kt&7v(T(gP`5uo*lTdx)qR!*vmw;X1i-0q?X58-6hHmvuEqW)Z zQYiC6&(P+r2cnV_Ve0fn-FmQpt@S4n_P1#L8)7c>r_72Bz=_JF%ZjE?m`WFv6(bR% zn%@;Yb$OL7x2}-81#H0vxHGS=*jq<_x-wH^fkH<#wGbklY+~T|C`#b z0Me3_AF8H!r3|k%z30GeVfTf2LOVCt4@rRskO{%?d`SQ3=ekY%0tK8RI6&o&ax&?j-@3XDDsBNA;@bY%&2vr;7lw9V9uz_}e zvk6}K>@y7!flD02Ey)$cW^f@w3c1n(phR2w*`Oo%!ipS!{IjIn2Uoy|+G$la51FQg z-k{*nib=JLNvG5_nj`+5JlrR{!fmKpHp@GSeTS@g1yNY7cm&~bEgsl*06V~M!#fPY z4}Cnm2$=Jhqp?BPb>&n4U zk3$UZGu*R(8W`X+M!C*kF-_?<8C=#eN>>d7aeG61}KR8*F3x`}`%?{&fHfUk_tRqtb}(ENz@ zJhGmnC#2Ia0*fO~Ju8pQYaA|$a@!QA`9_jpo{mbqu>jVr?$5*BU z9AKd5cOrV^85^_Vdp>d5%+CwpOnMXVpt|HCzv#O0HeHI>49kR8whLW`YxE>_+HMF- z^b^E|D}NUEoHBM^kNlF>BZ2wD{}O#ezBmIzl9cx%UukL zVbw$I&t&YYKDDJ3{Y?zvnXAJ4-n3<6zabXAi_vZT>-#r2Y=d>)DWcaDE3S1(j*zor z?kO92!dbo1%3rXeFUpbe^9wh*u5ogXP(F3_BmyFAD)QZzjwed{%dz}0G=I*8e!M#-pRk#71XPvG~Kdz-Pp7*19jl9$y=xH%#uFfN*sKP zO8)tnz?#gTP0c~at?(#j6XN@O)w5uz;Jxv8(Ur_!Bfu~zj8K^J9)CXR39WhZ% zP^6Gs7V~0!M@aBA_Jws%?7Sn_e{TB{GpEqtY4?TJKSBRIeyRS0_!ItZ(c$Cy1tK8I ze|*1G@Im{NG{2lPhGt=3`jT6sG@&&&uW*?P_-U?DW(tT*Cgvo3#pL&$GFkgpSV<+! z*{QDOzgokAPJLz1f@RK2Z8Q{0wm&@l5t+E3y+ZTF30FyI!>6FE-M)tAoL1t=7qTi- zYQ%{a3E*CX_R8K99a78TF_QS5&q*KC#ZzM!zq$=`%57p85+Dw?T}ddXgDzZ~a!)mT zMdckTH7>-xC+#89MPQ}fNH4lKJ*I(f2?}%-0p0_@CcFl)r$|+B`jSo`kslJwje}0W z^aBeu`1T+we9Y9fU!AhFRMj!C3LfHoVmbmY-YlKmb0*x`mrpK1`UqCCSr|lk?+UQ7 z&KqQ*;k5vl)iM>3*8xTKK?Q&>u1JCkFEMIW*TgBdPYA`KFF1s0l^d%|E2g__=FH!C zekl}xe(N*}4#(}HZbTZIR54mR05Rt^cN*A@HDxE>lriRk-_3(O6SChB=k}hQ8)rrN z*ixr2(Bui_>ZKho_(`S0jgelt-8^Wj1Aj4If&G2``7fdAu69FQzjKkxt9ekAcPGHvAQYUWHPXJv1u;AUrR=KK$D{l8!T=N?33R}oJg?Pu4_ z-P{8UtnKDVN2fhCt#qNT$PhMFLt|jIG(|=D3bVO;n90?{d+nvMzkW3f&#W1qG0k?Ic^sxiNZJ1i7!jv=cM>fQgc0zQJc$=WXCGeMoMqOKYpJ0-=+del_k4KMa)Y)QL1VS!$D-X@CsHRZ}Q zCj6G-3~y;Ws-jYczfJ;=DZ`KOcYjp+nn4$evw$))p z`OIscSPee;nRXCME4ofO&Pi?=e%h1^Y5$ABth=wuNqk(Rxd+3zaj5OOZG!5!W*vL< z1x41T>~4-lD$|QJ|2Rs5GZdFf^yJz@uk}JDo}G1EiSw>%GnusN)=haRg%g3&vg6|J zc+Ho&8Xmi+w^5#_DPB_55wk6+I=K9S4Vl^#VxGnmVHpK#hNzk-!YceMU?LXP62`oM zHe<8}B%~WF!{lMq7)F6akv>wIii&A*3LQh3(K}(5RB7WJTjJ+@(AZLI){~93-0T;0 ziM%~dxnB3+vUaUyw`9y3bx7TYPU5<=rgAMK(lCEJGv-N!&E5VH3)^UQT%IXc2>3St zG5;$nobH6n!VGeTKI?tx;s|HmXStl_GB=82t!`!5@v1>;Mm?ZZ2m+O_By(9Ier^G5 zOqE&zudo0#rOT==2G{kBRUu4ZD7N~ky6rahVUGsUuXy|lbfd2<&6Q5eoTQjXXSD7M z&rZJds8y|di$+I-UvQFooxCg8g;5dts;SP8?kXV56z=-iiajxmvn_^dg2&Z48sP&8$Z}3)FNU(Hz**zBJ%P5&B6$% zXgA1{O6C`dLx0yD1?c+X@N@AhZ{fv22{zX%lu*%SltT5O-C{z+M^WyG^q^ML7nnNf z=~9nRyn{<@;2;@EM}jJl(quM7d@7=*b9$L+9QVSd4dMfUyB(yJ3xyeoiGVMv?5E{b~ z8o>~X{=+m@FjzQ(Gyanpqv|>1m?ID542QH$e{p2r!xL;;{38e-`TfV-zM=^qaHac? zDeJX4tfLr@TB(F=y-!^+jxP$#!M$uWbi6=wH)Lb0hZ#2{-36web+gL2b}M3zc4Pir zaO|cSU|xQue2{-`qm*yMtD5(Gpb$KqF%mHp>x;a}KS4{aaPmo^Bsb(Uh8b2*9`wWasPO6!43co69gsL`g6QQH~z`mxjdnGhipmf0fYU|0&&z3`>4WoUVW zgo4TtWvG?%&Xi?Tn3M>jvZt&-!Kb)yxxXh41rJCK-X|_6iDz!6o@CopyD1lMdR;91 zJY z&n$gGm>IsRV=?b(xcg_V_Z^Q(q4!gkLBxkXAh^fg`m!m`(zONWti2M%M`QAR76(isyaq9DGz?Y`vuB0|E$~DOVM?I{`zc4aJ*VOO7NUr z2_4i8Cd>p>YZlp@vW`TRX3Evzxo4PVtGElaw2i5@k=L0>?m}k%D)bm@iEM`f&{~^^ zl4LtK^jh+uUK?Sgj)t<_^?)hcZU+%gNk9^}mXlF{&9-;&1;35FHw<`)Gih72Nj#iR zaIT$`evJ95F9naK^A)OEuX)H#2P>TO=$?-h{RwnXw5hTCNs}fR&;3HdVHQRd+IQDw z`Eq@{|1e0C-*0Gki&JxWdTw2Lqb4$T5ee*)Y&0kaWI?^9W_N{-WC@PhNydc?&L_#$ zMrL}y8LF!?`;*CbJZ353q4)}^Pgrk>`RdJL4%LGLU(RKnrj){0xqkp+wPF+SVYVXl zk2CR4yy>H%ydzw;)fH}?c9^)V%1~)&!L$d|t8CNI(0mxS4Wqo~rcyU6p-=1ZwO+y0 z+LeCWa^w2BFnk^2U3ccV;NAS`v5i7;|BH`XE$K$6h@NgGtL(n_`nz8rHgmWWBidZuio3fy&9xs=Oak@aoK5W#Z7I|9 z?9z~rVEWqIxQ13*0!imu@)jk9bwOeVN09?G7X0bazOip`a4(2TX--rb76z%18jl_X z67nWJR3H7E3neFl;dyZX$C2C(|Pp7_V%~>movY%P|4Y4Pf;q=313hg z&02lO@G5s6f4P>;t@UwuGwiTa&Sfh6TJ&DL9xX)PU5PfK!AwYYCp0Iu-iddSxcOqj zj<0>;l*0Y~r6&1vVPCSy?>oP+E{fN6AQUFsEXs!Z@)|Y@C+3Oc<}lzitKu7I35qAC ztE^}UGqfSeI;t^Hj$B-SAlm`5Ccfm>Bi@l4Xnv3bnp7JGwXs2h>_W{1Qk}6=7uE&H^ zeMNdA3;2TJX`ojfA-6Aq#vr`zi601-54jFF#iDPXlZ@nw_Ts)?xYA)aQ~~E|Vv1RW zox=iFCBYDQX2lbJDPx!*sOm

?-hR;M^Y)z54ot%hIvNMS&a@ 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

K^ERRAz3f{)q4b-V5qtCrcQ7;Z8tVMzWxX+sgC# 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%0DV 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

W#J#v-`+3T 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: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 HG+n(m`OnO~lO9%Xt|~VS!@7 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�>x{znLSfNbJw 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

L|9qyDFd;gG+jc}|9nwj)|!0u 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

    qANWApjaBCBhR{5x8+K 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

    he!as) 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

    Uq<7isSog(c|~ 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�x1XtYMvClh_9+-wt`0f&x?WH&98 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


    0w}9~OO$~KD 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≥qaS!CY%u;H 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%0DpM`5C1X?*o&rO5{=*WThP&Ml{8nDBt90&3h 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%0ADTx1wGhQTk+aVo8 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

    aF!aO@F8tGicLpo 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 z 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

    H(Z@qTF-{l+>E&ne<|K{K!i$Q{VJ1uIudke3 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

    gVnIe!S5VUH8cL znBjRT{P{lm{Ts{{i|ttuwlEE3#S=Xivf%UffNW19tFY3ZpCYpIu1VnfNQ=2$xAKk) zJk9Wi@~#Vd)zD;BiHl;C2Uk>PGqwAsNiWNF+MByz|EcZW)+%{t-cB2NXVDHc7{_c> zo;Ftws^EpdFs*%$?C(hRBpazTw;Iwg@(qRGNr!58dIO}bkU{jS9N8MR=S1>^%j2sk zn6pT#ENoem$r_&BNOs5YU=_0iaRqHe!lX-^N1bzHOR@TEYjO0HyYMn`ip zwicUE_ZECL#>#01!;Eexff|DwmrGd9W$yEnk4l z-%C<^F_W<|6YBUs;#3wIHP)-c;#_}>fz32@baKAI4ROg6jWXTnEs$d5yGuFWwd**{ zBpJ4~a$=`>O|7=1&5imGhsK$TeVX9s9@<3!G$UyfN8`lb&1PrWq;MH>KTq9x$3qc=iNgg-vvtLBk)mk zVnxA?iDxKfCk_^kGutDNZCq9K&RA^{I|Yvl?en<_T_XDSqra-+K}tlFlQ|Fz>5T%a zk`s!DmHO2oam+n7-9$}Pg|Coid=nZl1rLJEt2dx)b|9cdn~cwU=55O~xVUs%xVigs zP3ggr&Pv0071xFA5OVspG$`IYWK@Gu&+tqcl4Rk^J+A%<_KWB7~b z6zHDsAR+dl-fm>|@wMp<$pl=W$uYPig_$^`aErfm^0?bEeo<~TOdjww#ZNUs*;_>z zUO|``a;&8~+J^hCWh&%I7QsOzQ1m9Cxa#9!erF~wpze$seOL^_y{jp+)wrU_Jd0N_ zDEmV+DKhECvk5BrrbSo;JpPOx;NSDVcO@Joxr|_V1s)<}nbFdGUyv5qlUkL^5|rck zY5AFkx3MtZTe?P0lH#iS{Clg!G6xXQj+?cV6?oI>2^|z}*Hy#VUTa9l-P!`r6VBNq zvD8>ocW88=Eg~&haEJ`BSZm}hiaR7-YD{GCqg<>V#dmk@aoWe`tFCq@E6>nRxa1WM z>Tx8zo3W@xeb!sq=#aLo?<4njU`){1Mc`m=9#@uMQum=@c2uR2a*1f=&xWd-7Jiaj zhb9MjSB+p8wk6k21psjy;5GOXye^5?DK0U?Zu;H`JK>}4d55#OeB*yxd;>!h@;et9 zA0mZQG#E|>!Xfxp#zOlEelE)8X7a?GCI{OIea|JZus5g;&&9!s&=Psj63bK>;?~?2 z3NVvlh`O=$0-Uo(QOBM2LPU#qSyOGzNU-1z^65F+-XpRKyg_yadw99bJRa)TQ{XgB z+9mEi1pBOt>`<#65EkWy!oGMxQB6CenjH|YJU??3hjJUbv2N2zDx_TSMSM!f_oDaF zMZs|LGf(d58lZ(j=t(Ql;Xt5`ZX6E9CxcRnTyXDNHGY&%-<0-h5Ve$Da`xCDCVR(&$Rblw*IY<` z&^FMR7lmGW=Im@w7OTK8^yB#(mlJHotux%Gx+bt^2_%EkK*Y8IdL2EBS{6rt3*F`D z;}c`=nL6k0b~GZ-&bG7%aAymISI6Y(6So=F3IpfdK)dETD3yO*x?6eYng@br&OXw|CiY7z_?rn z@6gZ9Efj@lFl+m9I!V-HC^whh1ob0;8AVa?eXzsuvR1%Kv1MIesZc7&Tsm@<3kb;D z>SwW)q>^)T*z@ii7+&+A&u~MrujV!Om^g&{%E66Zlbg0VA(z{C=V|JK`_9!RTU2cG z$7*}6xXX6`SBiFyWnlBUg2$n4Px8m}(&_@{04ha-@39{u9+`ya9zc`sNKX*}(9g#R z?K)0z;L9|$cZOD^HC`5ubx0UtM9;2=02#m97iH^az)_ur+TN9$?^bphpHqDrnQk zDTd4M7rqUxSg*>8)%DQbGae~X^&X8@&AP6P_Xk3lExO0PxHpDqTJ8|ZTs%mS8GdhI zDuDEMP6B`|4L5S+HO7gccYUJhBYtP#(%;+q{}PNrb~X&peRT;6d|6Nai``j&b4O29 zFqfX=Me0~*Ii;q7@4xpQ%4_>6=ph6F!N>T+58hLJl7Yzy@>ju-(!@~(|% z#HCOZDsW(nn8W^XqT?}x&AG74%lnm2pzf|(LNM((7kE9X*CO^JflQb|uvISst&?bwWClJy;$TGw=ka%v^rijZ?GiNQg4!S){vG>5-cYbe! z*gQ=G!AZ@>=%5rjc;Qb;R;u;Na!m4F~))eO_vJfN{MI2(!W0q8Go@(<+ zEOnBu?bne4zmV*@N3bl_cI*-S%#R89eL=Xq61e4fIQdT?IwxSg4C1XsxGFkh+T>38 zi*dYt?=0R_2wCvF6qOaZqP&K_jYO9!j*G@HvslF1L6tqc2MTN(kBZu521Gjnu{|9ys zU&Yrf7&z)D>PBF7l1>_}X{mqLFjVGrnAQ`>n{1TvEZ9nr?vcX`*YX+n;rjaH*`{~b z=eLypGHTKknW;!oFmwsBDO##rbog<7H|u zzmqj}4S#b~seQQ+$J1U%2Ff}6JiXaTnO(_HY;P)#y(qS7=kM+YJD z3Bn;>K5^)uKuOP`Q!H+$yj?tT)M)f8-`>l-%76M2HYBIJRsP_v)DxlK6e&!5hH(mr zy2j|yRx1wYW>Uo^DZy_II=y>OsLHw;o{Q^}sCYs_e8a%6INJyBukqPgf`|?Cy@A>Z zA|%e=!C?2s8?gykT10Wl0m}OE2NA(5Jqzw)>dV}_;0!F45NRpm9^8oZ4`4p^I)l`3 zctli*P@Z48tZx7@9MlG$jE+(;YCCJQFy_IX0d4TNcddfnN68k?KW~tKotjn1J`s^G zK??m>-!J38R%`gjsiFUehjF5ksyree+y{6Zr78-s334LufiO8 zGHp;lmrb4QlQg#u^3Nxo=d18$10%@jIFsliN$AnXL{bv35^}sWB|R3# z_A+`c=W8s23YU^z6eIJoC8PK9Wx+pdlNc3AEbYNBBaWBa03#WucJ6A*@?=?hXf*yA zq%l;*tMAlydWPJs2+>kAy<7Io4GN#d0mc9wv@dxEL0o-#{sciiBV|0X<{<#0IdV&Y(nkDaL=T4^5$e`Jzy)U>GL z0oBQZD(7M`!Cr@78j-`(&Vs`qGyHD(J);0DNyVAz=^lKp>kS$Fe2-@6nz0gdj4-ow z0nic(1esfuWu!eK6>_RyZ4(}%7i0EjT^MS8U*|A!)zL{MAcx{0&IuuNwQX9))IU*d zWb@lm4kiz87q;S$u$w~l#%WJ;2v7m#sTKZB7!6`ck_zs)%CLj1t1TdvCz8^hZO>{? z1>A1?AD46|!6iRP2^t~^>{Eq~q&sd6BW(Vu z<`Aac5nH7VGg50nEQ$y=xe4U~NtO0Adik5J(O)N%W`(&=;47bDeDU7Dna}9|>uD$9 z)qGY4X|Suw6ce$o!m6@!Q*qUb+5G-{jv=kk_g<-(1wS66re*_rpP&Z_w>iF@yTpXtx07*n@{v1eYnnT*p1t8xR(w=ju5GUHbY;#6vRT@C9?fLBnsW z_B0u-~&EqyY4%5 zw%W5{ZfF-66*={X8a&~%Xxl|AtR1;kaH$v&qRdC^r1%bphwsAr+OOE6N3ZC&Wr~KV zQ5pCb+W3%G-u}eK*S9bt(qmDjHCnfI_gx1IYee|@hNS@^a)3K%Fzfu5Ld-BKNH~$3 zr?mlLF-6ReB@Sm~P(hwVXa0~?SJNB@VJKh0YXarzCDuycqe!+_wd!$8vlPb^GgCT{ z8}wvXRbY2g$@y6(-9gC(u5^^3TCf2`?*QWFcuJvi&q1GkEZ&XLak~cskVzpo&>loC zmv5spZh>^Q%oQOVUd!XT(XM;}JDUZzV)P%S+P0&+z~DmHAi(SwqkF`?p)$uEZ4R^5LR__0POm1d(0dWo_MFFggV+XLIG1=pq%eJ$EUNJ@h_8_|9c(91?I(IdM<9j4ypQRKW}yYshu#~=|3nz*0yoEiFX>zd%>U1L>wgFT{|b}J zn$BNp+V%MQRKm;|nvr1M3K{b>V6q>@^$O+?GU|{s2nAuRk~F$UV}wS;Q#&Ly+|PS? z-haM(l8OhCo40s82$#H0NX&XfloOioZ=||Ut{-N2K60@SkLHup zBc=z(hTQ1)QLb5&B(OXsxf`p}ra-9@=;s^w`U1iw zZwt*pfT}$&9uJ8iF4VoSE|!WCoJLicbV!nHA3s}vHj~LVTH5?lD!K|)0@qv<=rKKl z6xQ!YM(_E`>iFD}|h*WbE?e2678J~d}i>)?fB6Ff?ar4S#@O{rKdA|KXkZ*$0N}F+W zqgUqeu)OC+%*cSz%@12AXJG2?D+H|C6s1a$&a>GaZ7?*C52|->tY0%&rYQI3NGT#A z13G9$2lDqv{p`|F)5UufW271q*euai3k~(XQHOl^ukBam_3e>NI!)SIbvYcQLi5v_ zOe_K$Pwg7JT;;l_F_Bl9C}SD0{Jknq4c8GWNhg=SMnP%jnQ(9f8xZ6ve`g3so=xx- z1wt`c$kXlY<-CApAWVjQc;a+}yidt6&&)tAU7Ky$re#ZRATSOI#_=`~a#vy2u;ovX z;F6YmEd0eUb@JS9lMx#l3IWDY;#ALqqUMW_3EGNQc+FfbEaiF2=QTBa0IQ!oDcB0^n-*;LGoH@21d|@$7em%aJa{#LB z?|`(wo_|FRr_`TcxWI@t2mu{zlVYsai|HcI50Pz3+AF(lR=nj4d7}4IKm>!?Mzy!l zLd>O)V1s>i=K2t$lUJ!f8Kbjjv0UriA_??Ks8^k}YTL4XcH?BWyd$1QhYuOr%MaR9SCkTsV~Rjp_)*$ZhX9)jBeo5a=Ps+X(YRR<^jS@ac^A70epHGRFxoUxM_X z#5;KbZ@{047it=>K>*97djt4p`}7^*z(TY%L%ku5BkYL_zs!EXa8*LFN; zw8^FE>BSS!wo*d#!9!h3;UQu27lOHO>Z@F@KZQ?#w{lB^xK}c$mcBL z9XWS*Sxuk!KO_2Ix(FA-x6ZP!%joOZ@83XQc|(VPTuCD%xFCCY;Q}{J7%{+Rm(*24 zn~#tM@B&p_{3Nk*Yk6WMIWq#kU&-u%a!?qjxZZA!Kf3W`ePc!&4ACbH*xO4l-Fly= z)lE}fonvQdw~yqq?Pxu2BbIQgq~+GoblrN{nWPg6Fx;*n@1TLEV5@M(AFz=v(;oAX z{HB}1HaNd<1jh(lN2xRmgI5!Um+M_7M-`u~-%A&f4H+wrfgV(0gX&+ zv$nXf4urBZG7B=()x9y;Ho>qJJ`ClJ(G~Ke0FYI>bbJR6PF9^E$FrPjzc0dyTn;;t zz5Oj@=$h@`xbM(%xGL9f&V;r^5!By`)KF}QKfP-K4J zhc$V%ajS~IX|RK!>`=y_;ES&e;BlYxbjY7{UK7IM6(}A^xLFgjMs?}~wzSr3JhJ7- z!=1ES55DlKS5mE2F2)vX19mLwG|2ZCmSZhfxNt8@A;*&o{Y9=V+fhwQKU-QK8_}5G zU`4n3h4^6t>7v+v^HNRUl*cRwF}0tIswMX;NhPmdz>0+979AJqUf7%7HbYsqEojeZ(ND$WAXwN@Fko1Lx3}1KGPvAQ zV>I-WiCg+Dg;Sz>v;4pH=-(%1u3CK2mj1s-TVEUWAN>ZJ@`%c4Ud#~BdSHUXq))!{ zdH}P&1vMf$QootpVp1v-_2lZH`S(8t1P#d@CytjZuTnHCP#Gm7bEzLbAB9pylgnJH zNs`r~Ms}SWkDQmcUKwAg^`%b&wgJLaCA6gpe^nXF#nm>rCQ9lvV+;JQ=arJvqx@_8 zl(Ms%pk}788b7EOO(`&pS}D3;MpTz7oZB}oAhstSDT~|(*m0rp{v@Gf-poysZ?j&r z3FWRdCw0L23`}i1)3=!z*4-<~_2M1y83x1E(9Rk8YT$aYIIZU3@(zXATjy&LPQN#{=$qS= z_i6@<*B45u#SNyXSkOk_jtz+yZSG4C*cHK0Z!YaVIxX4C2J~t6>TX~xwN9So{4H|_ z%Akp$H<+5Qd-9FE)U_JT6d5R1%}d%zw@vt|Go6L`fkdn| z5`2(#&qtEW+bL_aG}PkEL#~Z8MRCF8cxad_24T<549ixj=xt`9_7?luXKE_Z)}7{^ zUYQ!AX1Fz!PonLRJqlZ9A`+|II-fS0tGtxIuN9*sNv|~Sn&IO{ye^{r02A(K&kBXcmC1P*fhbQ4 z1Nw4r?!QNJksGu}#@&t!qd=3V^Svb}?tdVS3iV|!vWcW>@(*DAr2gTKiUep%hI*)w znyJ#!mcOrw$`}Mpa9|4VDR1|2FbY=4$1b0j99^_qemxR8iZ_{(;#y%t_tzxB7SENA z)=S4|nqPmK-iXE>__~Et4>`wK-}`Y`b+b-(fxlDEqj@3S_wjrW?pTNSpdk-F#mT1& z*yVJOZo`Eug0ZQ&!l>EY^1RuA{v@!1dY(erNe`qVY@BL%Mj0;X!6Z#bBDC?-$2GQL z3V8gQ`eYM?>={Q=3Og~&H_^)>6=lQSZ;iUcf1R+GdYB9=UaP)MnPOl{rHJMlcqe|b zlQoPJLgE@4#3KZr%w^A}jY&ZG&3b=O$0hj8;wJ|}-yzl@eqND_(;ypETFuj?Z%4kf z9Apb}yi<^KM#eq%M2u4cN9kv{U5LLKgT&XUg!z=o zUZuDBB-=O&V=(Yx1X^&4?2>3mf|^DM7)#HsWHRS5pbHpFvd3VOz4_rB3rbHRnK)gUtWrQ`MQDCo|fR=(m|X?uh0sON09 zWIHwG-YRoLtL6S#;atP!F~SVj$PHJUC3J?1rNH?rul1(ZXRBTBh1-BEEE~yya2;g9 zaiV@l1u@66gey4DUu=e0dXjgMiPV*X;3#){h1Jy^8`{)O%71b5{tw@wobW zsp;c5u59+JeTrFQU^ra+DkZ;v?4GiGi=KAY*{uv`zi3hEeJ5s@sU!@f+^u===fpiWNx7CuctH;Z{{`96TRoqtiVWJJ5ALo^l%dOw6xW5Z z&##4r0p6=uyhF+n1*yBRE4hj^_zj#UCJwbtRUs+EiP^Z}+(N#k0jd=j3b15kBF)j^ z&S0C)cAO+?R-nN^>FBTJg3}TCMj2Pq#luO$oVgGv@dV~?|5FbASeEY@vyW>nueX~g zA`4brQ=kSWB8y~zda6C7o*bNT1FyyXw~*kNc1Wr9Y+|ZhafdtogaVntOWY|#BIET` zFL)~shKXAW|0F*q%h9y46+v(OCwZE#z7VY2o`u-c+}*?F4nb;}Kt@=o7e3?qWtwR( zd!$EZVRnPs!A^kL-FSD7uN_3@AAInwdlnwwdu64r-w(bED3w!PKn$)VS3jy|ajtEU zseb>0QYo)>Z5A5pxreNyGY`$RRFlBkt(Tsz&ioLr-k+@A_|&~^tu@t-^IB$Y79C!; z9?rDAQJ*)oiXSFY8xTWQwk@jF%8NUMXvwcF(|CgTCz=1Xhn`FBad*DTMQmT$pXpyK z7yZW``X9~M4N04Js{%*^U5anGiNuya@Tfpda-t-6S!3kPSh{V`l@uiTck2^C*~2Oz zPKM-!lQ;r=!|kA9zrpfa>kcsjdau55BK4|@$DWH^EQwwBPhTvrZ#EsCO^@j6!)?t;wd zLgI9bl~k40s1m_%?A9#~oFwg)mF?#&(!jYKG%HrwN|r5Fu?WnmUfabl0J6@A5=65K53C7qE{MJtg z=+TdXHixS^3p@KU??eT`)TM2>(GA+O`|tj1K>d zNq*#RqPgVD%i#~ZxZ>t#=3?|yq5|-&!iV{5jjC@`G@r3D&K`;8Ufl!xW3}1%K z$~`D0CaqjmwvJb`2uJ(DimN?u*De(xwXy+Z{d})CJb-E(O;`Izka?`1n_Ji^7v_SN z8&Av>Pdy4>z6Oeyg*6AO!WUh&hOpQw_JMiyse^5(!C#{v2(ArUU}c9d^)NdZJqLuZ zwG-(|!W`4tFmx|BK*Fpwv@KGW5 z`nJtt7P*aFOLoKmgd)4mAt9^nV6?3`HgzkJeP|IZ{^j4WXj(C)o5l8LN%jCy&uddx zimgtA*t)}4RqyFIVi9@#;Lb8RYsdf=t|j^T{>SI{z5rbJCy40mKdY>VH*NaH9W}R% z4=@d2?c!9W$3OdvwXaF!-duflu;@XM4`c3;HhU32fWgQH-omXKuRjjBBCL@@8`0P%DATI zZI5uHlAi?k7k;13>pY-qv5$Ci{{E^&tU4bwH-xseXf9G{{DWewHb={ShmHEu1gO0OM7DPkM~#HZ$`3VIzQ5N0Xwrl znAAO5$J4R7J$r=P;Lo-hxZg9Rvu_TdIvs;Fss8^h(8D|(Nmr)!GP50Iv3KdG5-6j~DkK6sOm?_j+)olS_^6M{D zXXO(#arQR8s$-f8HWbrLhIY!n-pkZ*+TKa318xNg3>ny+Ra;^U6Q>827qr~T;a-nE ziO2vebQ(aB1!Fha6n&B*>u8}CHKswsQbkOtl#N5-Mn)Eoo>EN^jwQ<7iL2(^jrsK) z25I_B(% zlt(|$1&Hl)PU|n1h*Ht#8}>~e@Ja7^ACRDvaeX*B1js~A4Md)4>a35yaY5KpDiyl4 zM2ID!)AW<~yUR>L#e|KH)z6)9WF3qH5)(uz(8FpjR$#zbrj4{V37e+-*wXP1as<-P zFf5c%lr9@^OHRYpqooa2D_LE4@epB!!MR&;B3dR2xH*%DpX&wD{FU;Q?CoY9Q8=o zuO8mj#%?$OTFt?TtNL_4{tV&HU$z%>e*Bcnk$HeH;ytTM6B@48P)z~SLRVmMMmStJ zL@YBvUE(gIFc&#kYoY05i>lM)aFaqSlHP*zR6+I_ycK&-XS~$~eV>cQ7uu!6*e`yR z#TCuu6_xye+?-@Q?N*=D%EjU4dF%Yv)A@6!9;HHcm%I{4&q4FIG~@aD)q@b{f%B2@ zyny{g8=h-#3Ax)_pvtyzG_wftRUqb34~{09Xg*=)zdq!`}EkXG4$P}_wXcXI>3GV<-T`k)4lF{Vr($WUvWJlFpNJ`B_zDQfZYRJZVRo@o8AO zdt28_XjQqJa63EAg*N0ulE|^-ZqgLLiO<eQA=@@$_Kk`s#dc4GCY>63fdAo}KxS)fu2zKA) z>5dhyKw7A#et~YMf)t0}jI$N^0Q#R8#>Oy0-~EO1G+!vj`ENwj|5E|>YdoXXSJxZY zE}`R28nY+x{yZupv>cVAZ%kM#L>Q8RngAZA5~6XM6jN4-MG?Y#DZVUn%@)WLXdgxx%{Ds|+?lI!@N4cawR^h{I@RL#nuT)*pn+IulG)iVZ4 z7UCyMXY>)OSyVt>&D@So%7egz?;{f3ZH*{ts60-^pg{|3tisw@ECs(-h}WtC8UNC> zngLb+t;W=2vaQ~XiOv{rXo!v(V@E>nRB?P^Z%=DKJq@!p#xzV3L-*^Ypw%4PJ{5B# zNdq1$eJ>@v4VUkMR7UP>3X_q06;5k?iCrmCuM>0^>C9c`-*p(D~5< zmA?slDBG)t%UCs!EqjyY4vx|>t>Rhpc8*n(WUn?KG?49V09Sy6e=EJXM5avoLJ~yU zqR#lC@>M76dWL-Bj{#D5YuQ^ETIsbLkw~y#HbaH9znpEY&sxN-M-|eww>|lfZ>n|^ z_B)&>$goTYq;M|U4k42=D6r{XNKj&2zh)|^ z+kX-I#{$c|kmNd}2Oo+*zvC3y~n>?N^+jm~BDSh$z;uoLW5JbnjbofBDch97^ zQzBPKG^sT8%&bysQcd+MCMmhP1}8ItTw%*_1E(@si$i9Z zktu6kKCaAk4Wj_ZQ&s76G+Ah0vnd&|vI6PXZ5jc9X6-bOtJs|2L|RjDlRcS*elHaT zhjzBMNjI`mFWrpa7bFe<=@H9l$9uP`<@FS{Y3$T}4OeZ|_ts^>UOi{FuD^tXOf^bu zBf5mxV^Lge=YwScm2r>*b(90cY{Vre zkB!qlDd&bynUP`7@hZ+R8cT0w864$g8o-N07Tbj3(*CW0O}E)a*knIHsF5WDF>)8P z?jyO|tcuLs(YYDBn1IuO7Z1*mlG2BcDBoO(u7}OaDJNzUT@ksR+C8p=XvWV7N2c+`lgPe#z)CTqEw^ z))A*ht;KN~UEvGTfFBv@wW_|zxr90}9@Cv4DqvUg7brxzM1ri?NqFthKGO(%obtj` zK)8Y_N>0d0Cg1*y7?DA9RHNBRY)+xDrIRN}eDnMrR}w2$h(ESNUf@7B&?@Q2R1-Hcl;)^M|1&(361)dfR%z_ZdHa18|RlC)Ccv8TH6m<~79xu*nM>hy$XZ6ih z*P!y@YHs?^CxbGmGkO&ckTEwrma71jJ9M~PmtPzXSkC4t+us{F|AOmxU{JAN2;aUD zetAz&{p+dVKRJ3`4cbF~(UC_v?w;^@_y;YxE+*iBKMBY;6i-JVt`C&tfPh&8Uj#GY z?GI$_o*2Eh`7D#RdaKoWYo%%$wWbPl9FwNV3`UcdXlteTYJ+;6#d>YU=z^nqla=JE zr-L|Rt^H*iyIWj#sDUvqHjm5WNr(IAq4&p^X!_DKnnwG54EfuUPLrE1$6Gx3=NZU% z4`qL4kEd66?kDcIKi@xrKTEs2p0_r)gLfXh=X$(*%5onFptWv&akWr+D#J!GU36uj za9r||=nmj`GII|Q8ZaVTJgZ|&cXr@WtD2t}l}`29Z_RBs22Yl-a2acSj%bzNGJ=T( zlFuzVo9E0ed`U4qs>7)6Y6K}ssl)p_ga}8|1S(WDl1wa0VDT+-2Gl&NeN8dc5B$Gu z36G{uKv30lY7%i8N4}>on?(kCRL?W65mW2Zs97&AVMJEUFR_EKOw<^d4Gqyxz0Q~t zv{4{W?nhwxxAGCBM|?@CB6HSL&wlv70PWVtj-z`L5a>TYT_;RukL|zl5%|r=N??R5jEL+J5WTmdxqOc&nZ15fSrkS2fFhS&{RUGu-uxyD;(iTKGP#g?iUw#;Wnj2I+-Mrh zUUpj=-jV^sndlq-{(+g9QL&niwx*W4%5eR5{V6+XT-I*{E=;kYM{FnYK{HCH?ptYm z^-y9uJ1hqqpjsS8 zhu{Q>RPFslj4awE(*GhA59x;qf)FJk)R|W7eQ2P}0y-rwn)qQn0l4%*T!_=ptjK7zAE=T= z4A0F&s%TR}5O&N6Md`7g`Xvc!B4+Zo`7+f<-J$W(B!VpJyTUPAl~+dgmc>=2vFBW| z;}LhM7^cq=rH%^za#N(gMX2QWf-y zz(g32ZdgXc#h!#ark@TkADB^&I?(RP4|>j(PAjCicE_MP<^nQcLY~Dtdyl97T)!I# z3yevTY#I0x=JWnI{?OnGR0bCo1Uz{o$=8t~-7g$y|G0d=<9C=kFqLqabP>+K=yG%{ zl|PqeJFt->wpJrSbu5wELB{fZ=Qw9fgfW)Zjt#z}drXB{_e?4b_3>6rK#hbwC)h0Q zp+I_7Vy=N1E4+mcwdGpEOWDW($vYKYZn8w0yC)3sTguY!=!k;8w*_6;Eg4Ooj#d9* z#*J~~86pWsmk>eP=tPR*-ry~N4E3ry=yHC2Oh+f|)4ty;M8uJnGs{L!9Wc&4o*1jS zy}eh^*Snra28y;*+fdcY#_Foc6Rpe4*xZyNcSjZ+8@^uG7T? zCTojfvh_F|8=)R{q`ce`fOZMP(y4%Ex7sJHe3BU#%Ien7gmN}CeVdll|?_%%%iu^p8oXVDfN+2hNXiER+<@PyIsV_F;YYV)?+tav=DXSI=& zF)jCkC-0*Jysl6aZ`gqw6n%U}s4=sw%Nkv&9Mb!{(&0v5uP*y()40 zu#$QSdhy6}K(!{V$Z(n?y{b9s{(4|JGnPt($*y34K6WHO(%j7ICXqdag^Ip7a2yYe z#lT&zKC!&Jkqm}HGiq>+`rfa2{OfiU-a@T#4YP{XBVJ@pt(KG5aN;w~LLc@~0Z6n) zIfKQvr~D39S46htD%GfJhorX2#+;rklk^bZ9Jd--KAhvbvMn=KdgS)9s^ zE|1pw&4t$dq0gCZ_{lVs)bkt%M3l-CJ*yx~QGq%D{HioPQU?x3&$W0DW^g8en=;2* zacb~SAd?U8xN$eKeb9IP%7<=5rbQ&;RC1s1CXJC zza9OKi5;4!MJ8Qd0GCh!uMR6l~L_8E_4VDrK=3NOY{aHa%Mb z-4OnW;KG2}n)sO--Tft&>cAjF^*>fmNZ8?EYkWo>KI846& z&oD3vR0gF@?LQaOeq^)73CGxCg-&Oey|0=;+KKf2z#G38rOG!G^fGC6Ma!uX%EJ3j z@M~H{{<%z0$xZ4{Qyx*O?;l1XQO~fjt^NB#SiR7PjZ8-iVkumt!G#B-I5XC##)syp zF5dRn2&NUQNdRlM)hTrp$<9&!W*1m}Qkl)A8D~|P$Kg7=)hV=lI z=6D2oAw&x|5qL1pgW=+D0y%IwDlaFx?d1jtPXRy~~$sWSjGpR5bu ziS82J4JNTmS%c68d3p0b1K{&ZLiI2wvbDxJY* zw>R+rzd6ku8I5>sui4DJv2JvZ#DnV1C*}fJ+r2sNxyO5{y~_NxEi}`g9i$$lAb?75 zKZ^EBwB9YOyxm|~udzeA%dNX<9M0*Y=f?Uq-!oeyB8V;t`793kOb*!{F$r>j(QxJS zJ1HO==$mcfu{pXQi^yL{7w||MSmm9#fKg_qlzc9gH1G{R%@rGLT1j;ZtARBe=zh2O zU>0aLc1niw@1V)^eEl;;nM2PjMg!h5_RF;r85W|qu)KG6-UnKey%e9oJ$lu~8t?*? zGZfkb>Xq9XY0mB(5mkg%kkE+`9T#l)aBl60S1mZ%eDC<_Cu zOu()HpE7)uK$uvQt%y@+b#c<_1~T`ukpv@GKWd8P_3OXN{md*f-+l zv~L8SxW8?j>gNQhv*2C%$KhUWcCLEAGn|1NT%x(0NpAUz%QPySErFi6ft&x9l{z!! zXAqTXS%NzCerUJVuh%AopK{>41$q>5xe1G=+4GFL{sUseD@hI3V9de?oC(#~+NAYx zHdSrOMY8sTNK-zEl+Ih9`o!82fj`riSt?SHd(ytGD#%P;v&9Z;DU1u-+7ct!>97?Y zRl=F{=*UGdq!VnZrad=))52|gR%)YtmzMyW%e>X?FrjkVZwC}u z@adh$_=CyynXVDmFR_q;7|s0|BUK$9(QO+y^aD}~@4P(~#W3Ix;{HeU6sYXDQmGWA zYGvR!69kr>w8dM?)JCyzW;nI`5^{X=WV=u&)g;pBI%6IW+O71MZpriPplPxTF{NWG3?~T(L@H4={^T!2De*kUevf&;<=PuSROyjk56z1`%xyDs9%V@^m^`?5nuQvboG33i6ob`1Z$6s` zt{QL|Xt*)6*1sP*exxDyakG$IA|b7^gffVQ^Y(#8>U&>LPB(N<6g0)q(^w$HR5qEc zVNM@y_WV^z9Zoc;0~#dY{rQskCQs!vZ9+*`o_R>iwW|oKtn5ca2C`;VR26PU5O)@? z(hN@D0pc-wD$TOq>Gj2}r+`dgNi49z>2i;DD~=WIvv$e*RaYJvCEv{$;b-HOVfj#4 zQP!HWP5hbpU};#Ky6j7WQCbNIoh4Vv1#NrHVoLz{hWNs{pp~xrl#`-*;ZKb_En(;? zA>F{3ogu><3b{bwWFOB`eMc)D=d}Gvb-UMWmU5#a6t6e3FOLX`o?{!?qRVKOLw7Q} z#Kf~W$cA1BO<|wbI}DDAgR6E62qs?Q8BT%MfxP~_Di<0HYx{D+es$AWQ2`jpKJX!7 z-zs!Q$tiPq`dIjJK|b29$PN(A#e)nkCgv9TgI zY$IdB_WKLm>2>r@MBSQ6c^fDPHftqvU85C}FcZIh1T}V)=Hyx-EW@~AxLas_KvxtB z{d%cQcP~GicWjJaU2dN7c#h~^SiatZ32&lruQH~o zE5?mH0F6n1*7*3za|=QIG0azc(r7jf^;R7(@_hzKO&(^?pxL50 zqPp1gr{9if?YK-_)c&?g2qNHgc|31;bYEvUT(`1*d|kuw0-+5{le*vH_lrQ|G9I8W zp%;vk{1ps}Dc1<9a?LBpXtf@nZO``N0~oWlW}Fmc=SiXLfTNw13KOBg+<1w$+xZ0oK0StJNDrJGrRj`&q2Q z)F)7-8PCqdEl{T#nL`V%*TmodK=q8%D!MFam7z6gOV|Bz6vT6`OLpQffo3K13r-UQ z7sP3pg${Br!>Dg`$=VBfl;eZcX-KY-nnLiEEYPh9LS_grA&#qp6m#}#%@xTqe!C5( z5Ju3P57wEhP}NPtwO+AMT?d!vNZQvMtrO@Zb)-->Sreg}H5u4YjKEG7@{k&#pvA1t zL)g>qT8Z$VDJ~`)#q*J7K5-e$#HvJZKe=htr&N_@1Y~X&BAg`BLp?}LoccRf+%JL2 zm>{{(!8} z%UK9-yG=e>w4(7wIYF3?#I`%JI{FXM`T!7Z?s)SRYg|BQigrqc(YTnULL`}D=Ju3P zy}p&H1IKs3MRL}Y97^Oa)|-Ay2y)ONTGb9tKSF;dT9pBPkXn$NVJVfgs$9nf3gU)t z8Kxx1=nYFhngj`&Hhjz4kHK_L0cM_`A$iVnrHH*VFal{#e)iA-Pb4#~?v!XyB5kYY$H*iG0 z$CO<%+-+rCgX!9p!X?W2-8uKNv((EzWn;|p3RPejH1~a{(A$~J%{@5MpV?30?$!W# z`R^kZ1S#$ zyeAu8%|kwS`1oebSM6~%ei~lqa(IQh2FnR>VHGal!h4B)|F=cNf1=-1%gU_$?_a-~ z8UL?ZZ~rU${i`HDsSf2C|5K75PI?f#6QLVmL4#&XD8>yb?q#7JPRY?t2gXDM=SO%7 zh98L|7(I%eVUn1uTwS6%onujpw^UxLG_h33-a@K0A++0fJ zTKV3%zHc-H7G-&0{h0r(y5fH3`uZ8ky!sqS-u~V=|I-i$_j+RS;NpEZyZt^Y^^G^l zi}B#()}y8l~UcstjJGQat>-RR-^0e9}Bn17ox-|WH5 z|7%>v;k3K(H7MdEIvb||cVziHaSJYRS%|lBRtVSq8hqIW#$5({D>+sIPd6^;Q&V7@ zxn)5H>V%rNedW>w4%7RoP6ng9*9bJ-yR5jmg9}8aODwH)F5$g2su*I`k#^hC7KF&Q zuvf|3d=H(0eSUb6Yka!CRoLC3fK>%}I=)CbO`{;y<^~K}yT@>Y11l0nm7IhTEn1`W zNtGzGX)YyXNTfn>O<#R>H5&~Qngqe0p3?V9mLN)m%J|U)us1h%SMq>w;w++wQLDdJ z(vd9A(&+B-57>U}ge~NGdbn11S95ivi^sX}4Y`a)sVUJCm{eZqOVthvNmr(sxCcSj z)Stc7E>X)B`}q54v!|(DHdoc&7f~i`knJW{uGmn+8Z;J=J5vO7Lhub|Cd3E>uFz{$ zsMjla_#UQW&e+mOjU``ZS0cBo9{RtqikyY_ zm7i~B04NtJ6(yJ6E~ztv2?=BQs1R_WFW79+EY;udBCM#iZ`^-Dr-1BlO3)m;zK;Bn zOy5d93BD(=#V5h87muolNgW5)H3nuJ@|*Rg;;=?xtA$opYK@B~6)8;avo?F5X_8Xp zLva-evyJOCXQ*nc##7lOb4kKdBbOF%u$fhs*?KyzO21@<%~tvgmzIw>U~)(1bt@7! z7b$4ph!=WvP!N;Bm9_oh6MP)m?-{8Zb(DMV`+5*-L)}$kgzTG(sm67`03hQ-;O05Z zuOwAHA=S?f5B3@z5#ilmiXS9a^!If{Z79q{e)#sHCOeS@r9ah_Y6c{Kp$1q0>9{Yf zVpMlXT!;a}Z;`WrSyeV96O`6aT{|RBi~Y)>FrQSmlASGgKmTd0PGGsp1*Kvin1Ic9B zu&KkuiwS4a($KsmZN}14-CyGUH+8C@9M-jjk|s(=!s!*D7-^7aiL4Y!pZ2O2hbcao z<%mLF*eFz?NX33j<=7`k7*dD5%F#6cg)ngid2#0a4`Y9|fQ-AonUg%VHNEOL@C zE<)J*Fwcw><3n_9-ZaQ|qPr?dStfBK5rx?ZBaI=ZX?oT)+lWp23^7;}cLs7wh6M`D z(RgLAqO@|kzHIE_x5|RQ>pO#V;w8yKh~qTHp!7IE`5Y72)q-?c<$$e@5!p3B)`R3JN zoiwYga3~tZcfcySU*ifs34+n6Y2wxGmj0B`940pi{^iix=C;@@dR6Q7J%*4-N!@i* zPM3(2PzJ-l*&DGnyeC!I2dysbE>!5Os8YPT>JeHN4w)Yz2hK_GCdGuIs_=*LJt}S# zWa)VpnGY$#t84-9o=Z@}H1hAN%$2vw>Ln8l%sZaiC!Q`?Q;R-HnB4_l6352nFWzUL zQ$Ux~H+mvTF7q2k$Juo6?9cSnIeX(w=S18Bdnu)~2g{|_$U6Xq?ik!)s)v&Nqn_0xLdalU^?JM)Z$tBf7u+d7>;p0ZXReDl@aJfq%uuhlGyCB(6{y%1iMmR z9IfYYa~sd?KLm)$+_4l5f|S8Zu$#(*SuvlopV7ZMZ&}-tqD2TTRJppdrAm&h8j8r% zD9`*UHurCryh1r~PVofW4(%|wlh)R=hqDnvMxWg4WfK=#D5Y^{o{yks7Zsg-$?@*w z-Bgng*VI|39qn2=(B2}J${uZhrMX?jiI=AA5H3{`vOlpa!|0|5?(1X&(ryP&^<@2X z!_zgq^GOo?>f8HC0#{>n$IpY;$osWZp#)NY$gmjYSLU5~Ds9-*2M45PudI`*GAzsBz;)f#*9GVN z{Ltjo>_W$^MJ%F~8n}U>8`rkK5wa|&W&^l!_WWx^gP^$Jb-62iOh(15uuVPSBm+Te zUpX#zJ2r1gt|$>C=|q#8!0a&5Orj1d)GIn8juFpINnR#ebIN{{K0%_&v_lSCT8aHY zjaEBCFxIiz33{Qb#a%H%{wNEovjyR4wOg%`dQ?a4#~{*w(-}(iNsCwHcn=a4cV0|DNJ_S z)T-G{Ms7K~7G_p^hI7o9|VLvmY4S2^q z3Amc&a+2sG_ZI)U#<*;Pv_?j{+|62g5I6w0ciX6NK9>K2B)cQcJQ{kOb`NG1!2_-k zL8KloZ(lf96duH~cc}y!lTW>8NybKkEs=Cv*G**|JGZhoYKl5HD{5=&2dn#JJWF5M z8dk~<5KoPGR+ZMnaIxP|P&XJ@2oYM8wX+pv_oi~FhON0K(i{`L7ILagk&7EYkNnoW z3$7usZi)hO>ip1Dex11xX@Y*_vg066Fh8@Y{uXN{wV=S1DqS83NRJyh}W6JB0 zkPd4MjJDyc3z?*%uZW~+RX+nc<&2cD^~;^O%p{kzuPkAXrto29EJhoBiBizrNVWRM zr`l?S-)JPqV5FH}Z>Loj`c}~cOOPuHKg(RDasBErMX?a61}ysWuWf>z8?ADUQ(@T64@1%F>2Fnue+al$o{OBsHLQ(`#_ztBB>j z8;QOTn6b3c^>mgx`xnO4B3XeGFdcE=}{#_Q~bJow1JDZkwuVPGh zkuH)AwhcEeWJBa!o6!H1oM9^Nxv-5k=9)ZB`5E+;W0(GW{-Da|lq%6F$@*93=mUmS z>=8-P)zGqO8P!IJH2XXzlT_V?1(VhrYj$B6O7lz0omp8`@-2mC%Z=C26^7dcv<;in z=?DAWrC-Kb8Y7d$gEM(2>zrc4wtv@l@URab@`GSmk&EtWI}Q8n7;iL)PAR@r0Q=O{iVLs@OVbazYZ%AIJ<~kG(%+VYoE61?{`ZlPvjLo%- z=SUZZ7;i~^O;Bf2)lqXH&C1~X#d8=+53~Tz;?r;K9z4UcP&UyAc#HRbXua^#e@j!? zfW()bm%7Ci&d;W1s6BWk8fRL)JEj2a@9higBPXCmOjymYixp!orc*usOj|ihNGurA!;p@ z)uGID+`PL*tXh}$M|9qyCit_k8?Qf1TfA9C`CI43J&!P*pu&%!!XM}VuIT{iqwveY zBqVlbQTMfMxaoj3NQ`uqNP_C%uW%JW=jLSO99pKO5`qEw8^IZVrKW;rOrC14cgqtTYLOZm+=d_Y&SMgQ5>T05YyvR7&Q!B>ziRaoAR zjFIHexdt5>Rci${CJwFaiSOSxv<+&k9h5&PVNB0InA;S}usv{H>?&MIV< z2cXbO6mA)PtieRg_C;8vzEWT+A0+%ZL~2EWK5V^$DdYTxWL_2)c$6u z@Is+?2}}F=?|!eQqAmW+xUv5waQcO;?~Cz*2lDd!Ng{#ePH(MGglvSqj*XvQdJcSB z0&eFOy!g~^YKD~moeH-Y^@S*N5AlIuTcr9P=z+v1q-zY0f;ZEb72#${tw0^ud{G-& z2uCqqTX873)gLu>bw8gLpI-FLn$J-T zgkq5Y-0cl;NVBFP)*Dl7EfYB#HAA)Lv^#`8{mg}r*rPGA;~Mbq^C)Rz@OFM8=qC-% z%bSO1ECnq-M0@No^a=@5NeZZ!*x~lJ3c!&cL-kzpaPSIlLNh+tH-49B#JH0T!F;4) zv);vsF)r5UDA3lY61tc7M?)?&|vw>!}oO6)S(qdIymmc4k^ z<%B0X8mGW!w>`SN6sC1yynfYRljHusZ-M?(q!3tB$l3YX-kAaW>AX5Lg%B+Ti z!cS$^*}7Otnw-245X8)Kkf{?`E+I}8Vpo4Hh5(}Xuei*-AiJ$SJ*s6V<<@mFDX!;F z&tAt?*tGm_#1vZ;BgflSeMxtZ9-8B2rl9>CXi;Iod}8Oa_PfTmy2qu2ch}RS&`*m~ zj1YnCWWb#$bH!H>K^U{tAtjtp8pC5Fl=P+m7_OQ9Yyb@jRh@oHDD0d>Q`RmbTnsfz z&|w!?+CEo8)WIJ*JHe?h$c{$7BR&2m0r5O0SvE%2FlIrLzPc17s3;&!#sXbvTPn>A zls#^=3DT3zl_+hj=rexxqM+)nG) zj>hW=YeLhWT_j+Fa}tx6z$BxkHc=;y0jQl>IY`!&7T9*vA1VjW zEpWJ^)Zij=chymH@=8(4dVxtKvRI|S@H>S|=D~3BGa@|5GqYR5TD?%WLdkG8nf zhv^20bts`7w}1Pq#ZqWzs|1XmxaPs ze`_$?jjCg}z*6MJR51n|v9~7v zrdCH4EQcVKSG*UeryL`%Ja}2Ebn2^VQZ@(^7YN0_>fC*?S9ZxLNAuho{5w-X9nQky z1_>J6OuHd4%F)*A&N+!bopeX;6g|Y+v3`-Cts&v6K7@3YR11;b+9CpoeAz>7LxAqm zN0=Wj$m4H9%tgBI)`2%a*`(GN&Y;~l&Y<0EhF)!7iwq~~8Y$zdHS_~S>eFD@8scnl zX4o3^VAvWq3sQ1AOO}BhefdSG={YjvVz30ZFdA2NFnQqCfJ^^CTM3G$JT=XbX$J+R z+&2uZf$E3-V}N5>bf!O9wdo-MmLHlQt4ah9Aru`X_%66Bs-KW+0zoOLxmcPJmnutI zmh8KU8R|Gc*>XC>cUU9v+QA^ToLvzj%$A;x!#*@~$z4}7MX>3V!1}01V!_1%++nX_ zlmGS{Xdq7wd*5D~$YO}S2E&v^r6ViF>_nOcpU@7<&ssG%*Iq3MjwugfP6Ck*I!OlU z4!e+&F3oz{A|Fz!Ahf$jw|R>`TWd&8TDzWxXxAx}bZ@#J9i4vB$WaIb$IZz)^S&hT z?a1f5OEY^;BxV947V7Bu5%VB#0~bmE=KNBCuG&?QguF?V38;tSJkcvc-D(+#^Dyh; z6FCI;mFqCslabTv=^SnYs;u)4vNF|sRiEXbAGR%Ut+%5QhYEg5u<;`OVn#X5^l`J) zIgpmh)r5va{ZYWkB@GXoeQfsZ1@b;PT{|_5nK#b^WrhNiJR?fQ29SS$j)wk+=>-m z#adjVcY84|s*zymJIGVF2Wy>aEJKd(qnQC)9Lh39Y``lxg|ZD~ck91fW(8#&N7WI5 zl!-0j>g__CcFnx-ETlYm_QKNX=zsQ(YU1QBThX5$r*Z>#6&mCWko$=nhCIEFYu{#4 zziGlHlT;ca=iojQ6$Q}vfCYuYu?fmy z`8Ui}Un!OQ4F@TEK*p6CBto?DN9-NnP051b3EQSesHazd!(BnqXO|UraK4&wf8O6l zsWoICD(P?9umevQ8(xm!j4?`3Tm;qKe^ zA0$!#4_I67KbtWB=Z*36RW>tnkug@*vve|Y;CE0kvo^6baHO}$gUrv-Z?GwBVi5tm_1AC14dJ=Rs_TF|vawq9PH2^N|=WsRj* z|H^bwc@lbDZ`Gkm=xd5z8i_fIPjjmR;|0odxOd_V3!G;07?92oBItqqNg@cWRF8UBfmDvh&fBgWPJxKr`G^RhNn(OiCm1^+&_dX2Wi~yOnKbVm;1bx1w( z;3SGeP{}3LVLW;? z`;e>UT3Kdwk_C(aAg-Ch`qHyJ_)jnpL2$z<-JB`na0;O*%Y($W{+^0x@a;&o^Hxm* zH^@IW54_kfj&MAif!&GZVFVFONsiwAk5VjtcCTdqCzbMFI#IHc`QiC` zUu}(v+jZoFzp&V0wy=A;AZD^n^!dW|6TgjGC&->t{=^)Ddn1fE zPO@f51&*Upo4#Z(p8lbEO?N)8U(4wHn!v*i3L)|-_~W=Q%sQ8{8=Vel4b?&@(4!UG z_YAy&dc((;q^B>pMNvL>e%M%7!Hh&{lBn2OMBbE}jI^#F1KC!U;*e&k7Dl{-4}=EV zWJIkVTb`bvQG=||1QV}U(}Hg^UK&(sURuQ3|GREki89TY45?h0TZs|6?*~d@ePYNY zRk~Ix(79D}7*-_9J-craR>W?qyr|@n^s{!)xFCHvJPz&0ZlI(Wf~2ISX1+if*4jsp z{uVB*v@}*%dgro?zH`Yy<*Jl4e`U)#KcyT$$(Tk|48LS#A?9Yl_+oIIybylX0es(P zbww93uorw3lFtF~CTl;qLjwCrYSj_X+g=x=Ms8wEjzd$*tkr}`;-q{cIaDt*$LN&k zB+GuKizpHQsBYd`$6tD|#SVJXs?Dmr$ZXP;Za(6!_?uRY3LU1tY@*x~`5l&4DK0){ zu*h-ZT=V)&lcC3K zyGH7S)3)ew#TrlmGU#_%H;i2OC2&DBjZRooF(=Z?3PYsJW~%f{~zmAuTiXcoe|V|qg5zDO2i@VrTtm=nCE3_*BM z)v)Y9ZWpf=hr~H0JwX80++jnA%Is^{kKEyynjzy) zMPN`IA$x`O&a(hn4zh(x7TD$e_wkY%wPVn;AAM0l{G4C@=k)cz)O9ZZvj_Wy;+~7o z*QyGD3{RPqM~!-2sVih#Cgg*}xgWtR*$+6&)JwFe=SiL^XX`iwc7u%eed58E1yd_q zA!!>YS!d!h{o3X5bdmM>bbhb$i?Ib&5IUJiw1p}c5gkHJQY>Xi5~&`6poJh7(5Xt; zjymidns9u~SZLn{r&4F1CTEe{QPdKMw@O38)jN&hJK5V z{G__`CX*Pig#IK`$*fZq$Etp%vP(kQ6a=pulSmZaeOfNN12mjGfS$A>ngG-hg~5xTmzb(HLo| zmjR-9RW%J(q+;t>%4tu`BNd#ZkCHf(*FbLoteUCy7Iew3UobFg?aTa`FDW+_NI7P}QTUpjL`~ z6nh5u-^sJ#9TDp(;riM`*s?T`48pcaO>TT5p{61jV*gOUc%WTX^uk3qM>1=dMYeBa;$ zR;}TPMB@S^1;EnsoGVNWz_-x*Nca#FfRiDuwr@Zy?Si)3a6N(Ff1x~Vi%%{3(J}H3 zPI}J{+H9Rle>OY#og+E!V^#Quma~;pG~8oKRsn|Ui2!LL3q(y)S5e_ z8F%!=)$*G*25f&z{}QYzGOFM2@(q&e06^!@m=);{fRmFxlqPOSlU+i&KcTggbg$8% z#qU0L#pd5dHLP!-Z2L2_6$<_9m&E^+sQyb*%Kx=S>|8M-S5;_jhEGk5Gz`%w2-FZt z-(sdd$A)^QYuZXNwj@U=F&HP&&)BcC8yHLnRH$H#=IT53;0NZqc7yMRbskrYNRIA2Qiitrv4oPYhaRpe92Aof1-6LAEw2 zuX%a!DP6yXA}H)HOwcXzr}E-KcEx7NnR0wPakKs!bGS#8)^65#4)rRF4V7x!xxG8E z;5SOMtJE`_V38%;qvoXD2!Y6Wo58%H+QyB&#H0KCJS(*{^gXosV8v?NvSo}KPoA2d zftz*)EzRTLZcIgcTmQ=^%Oai)sYGEtpVXYO+AFedT3GuI{~ zcKQN04fXZGgDqq8S_9QCHvfRdh5^~bUK9dur~n>$u~>yXy+DC3Iw)n9^@Z#U0|4Zf zJl}5e7nltGZ|@mLa@pwuE`_{;q=LDa*&RnA6szi54S0Mb##kWP8(6_?CL>$Ib>t7# zv@Em3Kc}L0rhezBR$eJ?9T6y$D~@K91sJBg@Y)~aj_N3NT|iUx<9)4a$ARWv@Rf$wAryZB_A(gX1whup*PS^ zt{e?bmF~9j3IQ{fqQ zU0)5op~Ak)EYxjv?@4S^m+|!xo^cuY8at7!_Q^G z&sD~k(H3qFiWe#+7p!7lbIp*Y^8k%u{F1X2OL_Vnwtc+mMV+Vx{bt)cnmMoVT%6nkP_%!g9 zX~jhUdGzu&Dj;f;-7#h#(PWU&hjrZhT8V2iEYU(Z=A27q-9t7x zY^viJ1Fv3s!}~L|*pZ?54f^kajaz)tj_fC}x%^}c|Dk>KKj+r}BO~L#ctcY}bYdxd zn0VAFOMh$mOvMT-2kqs?h31PC#l&(SSpw*xC5=@_1BiLvp*-&wQFYGM#Z{bE59?{a zz`uo($KNs;0mcvYC@cFyiq@Hr)j5uMf8i|{ndb&(3c+e#3H8}*#%<1 z*8>FExaz@1I6qV{C z*__th++?QoA?EjlJ#VJ2$+K8<)^wUs>E8deaoCsP+d>_a@wgFW)8?&qWg&PT9i`A@ z@y-aC-#-|pGOqH|(o=OSW1cRw#lnf9T`-s0)^w<7KYBV4P1QB-bdty^H*H_iuWvG5 zydF35Q=BcoagE0_Z6;Z#TCTp9p8}gBYpGJocA5|t)W3p3WA<7fz4xtH6OvEML_Tpd ztKHFXntwji41dF9(c+W{tNLtg?Alqh0Av-Y8^Lil91xw{KmpGLIa)lb#*5*RbaU~@ zcHS22D6(%w=g@(4leX}vJ4jEYUZZHB2t~#&2fU5ba+2y+J9c}m*-?^xMdv(AYV9&) z<}wNX;_fFTT}VyVVhtP{mU;(|G{gU{RSC-M>iK5fPjhruMkfc(=iAS%jRN3k!Br`i2?~tb%#&3HH@A%i>Y41K~BF z=8gjLF6G=LJ@I*rjktIcff4W24%PBoiA4iJ0(wTicNSc&@TZu~pO zyzf%0ShKTBj~P^2ULnaH&Iq|ssE??DNz*IRKa5_p#V5bXW=$1>`1diTK5q7=anZTL zmf4S9S_CBU%bfBh&iT8S!XuJ~0-Qnb*VL%Yyi}LoYV$gU1$vkP)A42i4AJo=-la4Z zZ&c_5;2&+P7|zH>jaGn@ZBq+|*wTxjx$YmJowatWn*TPUGUPW}A2hs#Ncle79#ic-x z=^BS&7|w%c|Jp{#H)KXiof@&^dB^$8r>NYg$lmv0d*ma&r^WGkyX6;9h|6H{g|&(a z#p=mPQlg`w%NU{;1qZ?{us8wF(KRkhOk->4&J8_=#xdO2`r1-hdv_H~ln=;2rC*`> zj!zq;LnkJ;A^4*G_W%@^>$)2C(`Ip@|2eY!$C=f?Qm08Z2v@~rr?2SK2hGl}-nSO);<7xp)5}@&;l1O;y3gK^I^VDCr+mIVu3C?^J8w2g zvq5JBhx=YgKk8jS!h?JkZ?5$gc6s}5_IdkXXg^%gkYAF5z99$$RG2(9`pflBT!}-j zL!MpyUvRo1_z7;G0_B9fBPp2548@RUL=mrbk*^A6LnL-7$_TXjOG>J$`rOOlqmA|) z*v|`*^BNc;K+BM$V@`Y&kQe1TT`T5F@FgP~I3n;t|48XM?jX|}M!HrYM?2}YrKSbe zX$%}!<~gR5HJUnlplOsSEo|h75GT50-)}Lpm%(vr9{*&5< zo%Prn6V)(@%G7NPA5?)QEd*oHw*xZh6b0Y)B0S3=L(?qjAmMeJlIp0Jk?j|D49pu% z`xkt@i+CpX_Rla((FE!>{GXfsg*+?Gy29uUItd##OczL&msm{#Oo^j|(QgH5Yc`v7 zV4IJTPMWQxi7kom>y`FhXd4vh`~6(Zo|`zgB|`*TUze0KJI44BVwiC;x(G~+iNcvA z0%QU-2gn}s$c<@;*J}+~n*7bl-dlmb#eKJB3%fWb9PhpNno^X3c3GP6EQb8s*o7;_ zy8`5J`>lrh%NmJcRhoV`L!H%%8q32sh$*DHAu;1DSVZ&us2y%&mbB19p)ZAwX$}lF zfOzSC535Z;_L5D%=bWMQgX~2Ec0!C}brYYi;c|BSkH0W|6?{yINz$E_l`Y%)%BDu1 zX;3)v1|Fhhi4DdXkNYwqz2o8!oRl;qb1E`shPU=w9-9^JINP6>8w*zr)W&YqWX2Hq zMN3%`y@ou!FwewR$>lURcKRnTG-ff z8`ZhMUEu*muRutOJjLb<5^M^RKPOaNZZ5k=_Y%m5;keojSm!L3Rt|?^{R`4B$1Ih1 z<>=cMNo`5HFDb-6j|s=22n_an;M}s`f<^)xY-uugz5N*>Mh4Ipc&UI< z?4oglPDyxxmM6Z0_3idsbw(^pn!}W>tqkU=pu@J*N!XGF z4vcYsqAZlKmhFY9Qa4GT(%S6DT9+#apKzHNg!>GqDGB`vusGz(ogOkH4h zLfB$=F`toIs$JCdL2y|bLWvkmuQ$8{SIL3py3FotTGWr;#^fG2rZUgT3*Tg<8@4;A zvI}CFTA@6nYLQ}T|H--GvIs2IVVvX`NK|+oFUk++IHpzi=<$@;s!^4}BVNX+j#EuS zRiPOYaWwP1Nr>e(+E%%7$KDIm9NT(#!!*^W#Sdi2ZUZA=x6qpPXXw*b~ zdNU_0qijQmd=jB1eHrSoNq`D8e743LttmGst?IkXL1gMPDD@;UzlscnHVsU_hSC4? zI!@ngu<1q8%$X>9pG++~-G=l65YuuhaX<}U&%9Q(KiMG2b)~-wC39TDJ}Agw&4+P$ z5MVwE(Hw=_7k$#g2ZV7sXU2L7kLv-BiIR+PPv#j1^n`UUxZyTd1InQA3Ty)J4<{@| z>Y=4{#(ieqC`QxUV8p_Cs(PQQdZp-)lv(VEvO%O!^Pa1yiJJ+gdKBQ0`Lf_H#%eZrxw-*qDO@Jp{= z1ZMDC{C5CD^0Ghkf=zqO#U%aJ zPGox;S%{_1A5FrIMdt&j4UZ7ZM~0Gvwa6KA z<5WB&Af)5gRM4~z?eG!gwAHk0uUaPJk@wN?_xwSMu?f{7!J$gUOB96V6cFp1qzQd? zj`ZKnqj&NqD}nyN?S;qVV0zay)1AR#b9mCYmK*^wPEg@Hu@U5!$Bu%bOzpZ7r(%^K zx8k%!PERH4M>^vZ_i14ovcdQ-wzN;V2<3xAV0~!COgs_$B7;2nUDwCgf>qaIUq_#U zUbu%gTbK*a^bG_=&N4K($7#$P1YZ3{R>!fdg)~b6* zhhDS{VE2f4&o6OO`pC(-ebJJ^i^JFU$|mJs5ad}FSZLL$d|=Qi3~ z*5&0ZbkGvYhUv-^gski%{bhy)loPibC6zFvc_l7u{jyu!mjB!@>mK~HDzJ$aWrUqO zMmO`_t^_p8fu0*38wwj51ECWkKEiGS4s2D@vsOycz@ErUIFt{hI&4uSzf6gTS7D$c zCaf}46&KbVtx*lK($HRGxmpwMD`^f{rH!hPvdU3STt)M=PBnRQTcb59nlFk~NG_l_*M1^RddXW5fe@jdHpzp)N21LFTC+;4X zpM9z^_efdaB6Q1-gnfCg8@=9dF?%;>WrbK|j6IfpCQEx!@Ek$1L=Gua=VstLXgegu4F8{mxmn zXFO$GotJ70(yWPO;cxP|6dvY}bHZf|VqSvN*bwH#qzh9iOv#*^xunlo*^h5NB-a)> zeL^j&P`+216#4ecL8Jp3^Oiq26a53r0m4#*cWR9K&Qb2$q3nCQ{0mq9bGTK>Rwc3r zLuax4WTs|G=e*`c&$%xeNp%3{ilPFB!3IXfR%7(7P#Qw9`JF9C8g&u8(IJkvjHr9W zJ^<4)Td3dgfI)qrV#7O8%rEBwR$qBQ#moFlyhumZ=mB zzb#(Kvd?%eqOw8gc4h2*AGJVaanJdKfQQ6wH7Z(S1mCicb{7#gdU9j@>bu4ffA+lN z>~S2{gZah_tP#UosK2`FFUqj!E)D99*cD*}mhDNoA<#N5gq52DSZ%c4|JCsfeX)~KYQBbwX0YAqDY0q8KxM9+bFXSj&juwWh$DF2x&Y& z_Nnza!-!Ey5(x7~S-_a{A@PXR0cH!xBO57IWqisv$e5uT=kdhqCb#S&=ef%>Z#{tO zfx&J4#p~X?<%$L0r3jxg_XBU4PP_GTv^n37vu$LV>-rj-9N^P6?dwyFS8Os)2M8<~ zf&UL@ZxtNZf-H+#Xp3brGc#G(VrFJ$W@d|8%nTMYGfS4mve05?W@fm(XU}gC_Z>VG-ab^hHXmikRc;p55V5d&U zDd9Ms`8Q9;70gzZ1@)yH(pDC9Ii9dkAEZ>)* zb2vJEJzUBw6>gE{vj(}^cFV5hu8ZOd*PPo=R5q7KJ<%UP#?#%LpbIF(Abk^wkg69b z27DSg$Hc(abYeT2&sSf8kH5$TvpNy`8Lw_eVW)E!U7;Qt7D248ciCLcJ7M?-((_%^w@Pa2Ose5i|Mfz*9Mev3 zH+xB<{hAMP;@*1ZeuZw{)P2$a6_oBQf%TLUGY%O3&!L!&XA zm~-AxbMC1TQ670-Pv0L)dI7;U&PPX;8*oAx?pXesVmc2>1NbzN=h@`pJC;wh$uZyh zy02iKb9$dA^N*O(@PjOHUqa48{iA=zU;IqAw&QAf$M=7GGkk@3R|MP(7bYh!MsnXz z6S-Y`Lsq13bFZ%mX~cS84GM(qz2W*{A$gJQzu){9)Qh1zWrV5|4`BWOa9W;psiIZnkxi#1%X~vbc}+kvREvJE0HmuA<=-; zop!`s2GP-A!Xth7bD9$6FBfyFogYi}N+&@pe5-9;539}-J|_O}&+ibQvW3Z!ussTU zckpcXa%G6LcLGPb1AaKIAox@eLi)yPracGr4BVvARux}}C)@+>W3mapU?ZMI2oueG z;bR4dvt`hry!NI$rGXDH;&CWDn2M|TC@>Q9+kybU(ZzVyQINkureX^*FzhP`0_$u3 zF*vY~l`3m6j}UAkMDk}wWrbJ)=K%odx?M|KSFBp8?}*VAe_mswQ{Uf@@z7Vm4msRa zEvJ=|m{qk+UKzTL(jq|jJ@LK3qC6dm5XzvmDYbLRmo(Uq^7{JB6t5{N{zN;(V%4~4 zUf(xis@%AEX}g=vB-ulwuC(4i>Vm3{XniJ3M)r{2_Zjc2eef5uWB~Fb!TcR)y(I&! zN^aLP0){db^(1C_r|3z(Y5sjzlJlcMJ93rG?AJUd=%_pNmcJ7MdM z52W{?vZryyJ21fP3B^RIGU>BX&9CEs8|kGGFjE$Q015yB6x4hAWNdHCXl`#0QeQEG zUTy8|Ko1)mQ)3s#|Ib?=)cO7wNG7ZNLy`4fOpo?kZC6dOGdHjqO+)2UO(;J)qqqsj z@_Bc(R_1rFTgvGK$(v?(>D4d7%~+P~r4&&M$;Gv?v2^FR2`<)~gNvGtPuZKA(0x=U zwNXaU!Ww^OtZ=L?(=01lO>ldyR}y&ai>|rh#YCmHlJU=9dd;!c>x-(Iu?hC9Kfk7B zBBs*c?3@SGs+8p@Td)-VKF>D5s##K+4Z5$s#PL}mo-i42YMt55u6p1#lR8^LGjB3$ zvu)UGrx#BXY1WmD+=)|en6~>YW$nKyPW&51_*%iGaflBRUU+B~X4v`Mr*-0wMgB?!rwS${z~S6x!sti1JI46jw-D?{pg& zRZPlql8XEridw`FBc_{>G*@4O$?c!VW4?%m^(*<7FYK0`DbuPtOVx#)`+a;r(f~#o zcRh}cl=WFLxg4$sa=-kS%Day*?43W^ztF@nZjYa~2AGGtH}j#ib&t)vpb4#ymXpMO z-Ze%1;*(Nf-~Aya`Sm00eobcxyj?Hl()ZjI-h?S-&^W02C@r95k*PKu0caG3$h2FN z0q7gWios+Az+0!Tq;#B6%1F`3C=1WTB83_g!!nCgB!h(8+P{vxegyCCY|Hj!4SBb)HQ;UFz^Q@mWAfHQ%5k z@2$B3c%lLEH&GSvnS(|%k}91-*PuqTa5)185$A?bV4`Z^{HfCwPXe1#@DaQm1saA# z6PD13YceU7<{0XL&?ocybP0Chdb>q!m5`NI)L*UA-vupMR^ez}K3K3}I#xfcV01Ak zY6=YGQT`ZAiUo)Xm%>|?KYcO#_!mR;zs@FR$ulqNfDoSoQnvr+L+pPb{_oR?px6w0 z`G3uRs#L813eUXCTCmcBA|hafrC~)>k&m)p!naI|q=f1=N=%hPPbb(rW^i6rGae;g zH<2#Iu_x^aBW{Id7fl`}x|}a~%_jkVf5qk=?swR#UarrlAX zK(`8Yb3on|K()c{&qJn~8t?AURGAxaBY?HmnL=*-9kBu8mqLPjZi6# ztq{gZwyYU_bgLNe12P-LQvYo23A~cOHVEFG%=L4}gh*xMl~G-4nSA@9&+y}SiVLsh z@wwq$Qj?8uqvz$TQRg&evn%s#%wf+NORQyWnKELAq3qd_M$D4mM<=@y<=(%p1 zjFcEQWj!oZ4a>H!RyDhvpDF$*t8Wj@7FhOE_7LV;R~Wk~QSHIoV|Wx-WTA9o^%~>9 z2DC8bq1+fv(>>_k=R%AgP=TM>32R2D4O+oT%Y&#CHjfb$26f77pZ)oPP@;I z$=VnHh(2jeU;Qfg+4g>QRmXnfh&lb>0mE)4N2>k$I1iuNN9>pu$ak+0n)o;hNxv|0 zlslds*^hN3cfr$|xd^pdfNwnE+l@p*w=E_V+yb8>Ira1}*6n|R*lwcowFYF}ZVZwS zvi)~q`~Nzxs4a@+mxAXc#JRW(PQU$G4P-vX3H91TF-Q`^j$%PBV|KcR;MRISgYe zQ^UNh0m{;}RvuUgTCdCW^C~k(Bx|o$yKO%VO#qYPx2v|E-3&sv>^W5pb$s#mi54q+ z-a`*?wYdjX^SR`;>SNf#(U^;1^Z*rx4P+*@AYO8Zvi(OZ+G{sebMf=`Tb(i}*&}wc zU!3PW(U-KLSS{A$Jq_A|Q%=d_)tHZL)fE|ex_6yavwt${eMQPdyh^sRn_`Jl8N*c9 zm#EIzq|l9u0ZSNEyVnpx4kHq4mQO5E++&@bm%XT5(G1Da0~N3)83BY+LnUOWZOf=_ zjJE2}^eJ8ifB2JvPZ2zvKs0+AoZTJA1i<;hi# zJAuel?;rPS@^%abox{m_%hFe}$QTSes&L94<09j|xE?e8#XWP7UKq`_23y1gnvdXc z01vp8v^pjvZG$tT1snD!u0Jlv;5V2MsI6RSr{JlR1WN|i9Cy-8Zc=D^nJKUwXpFk$ z=*|-D`I37Xh8_j(_%p|rWV#qfI(Ady6dO!tkAbm*{?j%9flH%?79m=TP&h_nKLg5; z3dcCN?jXl^t*%cp1_}4e)RV54^4}Styo!%-drwa5$eu4Bo-fmTiGhgmUXB#P?;^ml zHu!Ws==+Uc__}Y~gpD%cMQs}f0CC52b*xOBxA|Bs3{DZRibtNoNW2WMG*85tM?|q> z(X7?5MEL}OMlgjZ~bG`*{;mn@U&z21Fx$K z{Go%GotmM{*@%*Npl!Z^(RuY_WVW_Vv04e1@U1R7btwGW*I$KHa zl-uaiQoseX`1l{j>twhiHYH7<p=? zTY2CKVYg%;#MJ>NVc*Wc%q3jmBY)x}d9QLIKfo`=tSyWQk2ClC>tmrVF@Z>dCWd=P zF*}Z9!mLn8T8*+_o9E}m#Pmc54b=ejIj%d?qA41;m?mY}Z{MWVH|}Cag6+ura4uuv zD+l5ZaoUU8j6?ATBtLRxVVA%-+N#?+xm=AGF@(F2OD7K~ARE!=%`#sv*ueKYc~ERK z)5$vS7msc@fTc^v^b0^LL8iUhexEeMgaOS16kmSEaOY3l9eFpmV4 zG9PHQ@+@MdXW*f^JhQBM7Fqx_iwg}wjt~Z|h_iEoYS>+&97^sdKY2DGHs$BQ;brxH zKf&i1&b|`3sT#oHs>)I*#wtSPpSQNesEgg=Vc3?#&S;+Q2Hk07ZWJzKO#IGwO1Gn* zi$z?EuKhme4CkJ=eAgnz9^XSXC>W$!uxE0DVau=j|Hb$1FW_>~f8=X|fNKr{uK0hP zx&8^Q(f2W&BU-1qsHl@Kst+%>!*ZI4QSD6*Z#t%2JEM)zQ6pX>ES9X1YJN z|Fi#h{@)&E+Du=NzS-1!AFQ`IPo}dvKP+4j@`F_xuL(jw0OJSqgIsf7{8=zz7s9{B`=>&4$ZH4hV|ydw3zWRLp&s>VI!)@IXoS} zn31f(N$)|=%6kn-(k(!8F~qat-N--9Ch`F$TOfdPc8Fx(>4Wy8fqd-7KE94V3=KUW zfQQsTt?a-Q`E~a&mf{^tpXq?*3{u=x3m3$@h+#+drxAXpwNYgItU)Y`?=s4)IG3PjNT|5!YJX}*HeNz`-|+IU2xRZ*~@~p zgam_ht-=?z1%)SerIB>3t?$7u7)pjxccYKR!1P zDwqF;?cXh&WHsBrtP1_?B!=On%jom88ts*cBn_$O)Feen>5*Zkz-6KC`p9)0d0u)? z?F3$B{id)(uz6-cMY9vY{h^+WY=$9ysjKF|bHa0?&Hd)W|DzL%DKf_it5*m^{gN%z zTw_epo;uWYcK4F!Nh@AEWxDhrZU9tDbHN+v+Eo@^0irSC`)Id4lpiyDzqMMvQru(U zFBnZ(HPf#`C3&lpA|J>eXm^S%zTSut+DVPo0 z;k>XvXjdDggj$E@D*_mLA$c4Qg_R4#1v@l zS~4;YUBYQuNs;)@2pz(KpGZ6#k%fB%$-~D9;p0PH*z7L@XIGXc(XjW7_`MY6rx_ve+P$>; z!C?;ok=^aGyI_;SpX&&kmlJbni*Ov4Ns}*1hVDo4ed(&Y)KgX4Z^yU3P0Nf04VpES zQdWy+oHC96#F^iSJ%DAUz{4wF#5(5j_D0oeQJ}Br5w7*i^dZ<-w#IC+=~=Z#dgI`v zN$n&9<(Z4Oyk#sFp~+32Sz7uQg~MMVgzuEpx)@wwZi)MXMn5q}4WaTx6Jl3CP#x!j zh8YfOdkaN56*D|v8(y)YC#ngYv?#=`p(ikR@bfSEHp0DM${7VtX@!9Ni^K?Khc`TA zC(sKfAZL>jMR3w#1!>Rxck$VkB6dOBY7ba7y0_^59Jb>=Sug#7%FY)Fqpa>zRIH*u z60Nv|JE%m5A%`v8^LFCaq+f6Fj}_;pwXgY#Qo0|9(LRK>A$@;}SHAu7p*EQ5<&8K~ z8yY(!;->LMAK}`DNuZQ?a|Cmwz%V*I@y)<32@~FREmBl_*5VfY5H;twPo%(=OdKGC zmCA@CtB{DeEi7s>4ETp{59GOd)zwNWO((x#JkN!;~%={_!~pj(z;kMx_(3vmP_j z)HB;{OyMrNb1OS8`QFzqe$tP=!ZBJH)RD-q^DF(*F5#(RO7B?mDpaE;j0=q%Sc@rJ zSwbCY37EE}TA1a<3O~QRnms0Db0O_jsQ&g6ZPQU@D4{wD!o0d@-YRLoREFg*YkZ8@ zP6e5N?{M6zxL?xq<%VZM@(P%5)9ik%UUCE>08S_0|K&2~IVkc_U1+LVfb!=V19{b!@`Z^6R_G|Y39{Tv2h>K3wx!N z6)8X(H1|((oM=YC@LaU5H!pTJ>u$^0@b`O#tc}669M(V;=L$lj!B$aBymCN9QNfnQ zrUyQuj?+1gI?HtcPncEOA-oHZo2xQ)$lXk|MPw3@08OkoPucSvZ3=595?-M|Z7UYG zUaT|AA>Q%ZHd?wC_|eN|Y`&y|bYM*Nw6R3v8L|1W8$#sIJ8|E0yfAN|&;o&lnY=Un zl|PA0mt_xixkFBz^u3UmyA+j|6?;6gN&0CLSG8{Ewg8^4LUrjo9nl;ih5oOu& z={ff|QkFdJky_v@DZ~j=;RC|jG+={RTymQKFkZ-TShm`lz&>^jt9f9GCiM8G4F=3s zq-lxdV&L(qw z-ggXXrj}mC?FW}^*5ZMvn4d(h@DqM@&P^*|m5k_--aS$Q=Zgf#2*)rdlSYP<>LL>W zd(F0pvgm$>s@toPcn!S8mjudV=B|LbI937zK!lHO21NK?`$uHs(e3_t;?km;^Ar-h zkU0%9aC^MTpHBPNNwd~gNXWGEwBk;AQ+<`)SUj)=1shYx545Z2_09LP@^oi{z z|KNIuAg(9A{WsTh>oA}Jo#ISf<9V3);XT32+VIow15~-dX=AW>#0leAV-V!WiBd;8 zVVr;)XP?5N;n?mh;Tv;T*K^%Q6+7zAA)d7#+zBl?%}Fn8MfT zv$s^}08ptm;_Z~50*r4JeZ>V%VPxi_5QWP6ie0>Ef_A@R)o?DuRDkcrV`F53A7yY+ zbkQP+SAdk%MX!ApS_aLA%YRWlewgAucR3;^Uu0)zzVaR29dGcb_W9p6Z7g5V4sv3K ziOz{N@T&*c4?^qsUF5HF^ot$H72TXw0us8yOfqhh0qg1kjxUAG>QwA0oMk6F8zb#~k{FgT6QC@Q*s;dMO; zvRChj`HWUU+B#a;9obB98`qCr$gbuSZk9G4 z>y@Bvvfq)jQFlmnOW=BVTt}*n2ub_$fl8H-d-wT&tLwiY%b61!;02<2f}lkwmj4p6 z|D4pR*{b7;qWQ6t*=VFFG_IEy zLAsTZU=-)KN3J0hdNjMmJ#vMSt?U3P0uG;QUA3UN>Hsie2v$k;9BYitZ*xVuc}68S zl|GUulEPW{oaTFA0L6-GTp8P`nc+~gyNq70?4DV}US0bLVf|WuU|xBh zF>}qH160G;aVcEdfoLtqn6b~&KvNHA*z0(%hHp?;qTZQb#A$&8>e}Pn?(F@|fprmU z24>NUS+@+BJL@eVriU7zH#mmjKGGI0S9{PQ{=MZ{$O`U3Y?ewGmtQMYNvv(eWE3_5 zIE25y6cc!oehT9dTUFd;3%K)Tl*V=1a@!CiKk}(J)Fxo1OJMm?1~B%nG+?nVsa5kA zD;_w-D4MxHAVJc7ffXw!u=WxEBZL&*=yJ@_5&7>w4%ipA2L#GGnC( z{pNe{Cmt2XTO!|NuoegZ4O;ESZs`j_3KZ}BMQYM&8{O=hA)*gn<9 zcqOVf$F1KZxtlLTA{bqDdXpk*TmZioXuAI}BNP|JXj+NB-Nu$#2Nve#E~cuQH((;$ z)3i<_L0ZnFUeYw9M?I8UeCR2WX2uLMuwj^~%BeG9o`Fv-8L@#A-mRV>B|xA(h3QZ1 z)h^7-AFuLipM4yTr^-3#XOk?{r|V%Je?v$gA!tRvOBH{A7Pa#ssUgMZ8lv-!iHaBv zV0L7-keShjN0peCaFw`eu}~{v7Ar{M2~HUOh*_+;W&hrAD@PQ%vwkgQuoTDF+>C$^J~mz|fBbZNr1 zGV7tB;Dw&lljy55n9=K}a7?V%J*;yZT)T2O4su6`SjL%UwgLQ2{$#158-GJO_fOwG zz()x42K|Lr-TBwWoEu~-U8vM>uuY0Izznre_7C|379Rm`O4BOnc{*3N)kb1c?355u z1F?~=CG@2l>I!vC#89yOUj~WneK&;afHaJGw)@wiSbjz6`-IO}eQ6h8r59k!53hgh5DF_PBNlNdbtZrjijzI!!9PM1N^ zgvS;d!70@RODs6P!r4BCGrR`($4Y-3NI)@9ghqkCCeqVwBWQ6-PjM$tQis*NZ(cxK zdH6dV{!6>%F9E`cWw5ayDEZQX=DQ%T>HlcH`#%=@|Mc8Q22HhQL05lgbhX^+TLS~P z;m}P8>2xnc0+3My9e45x1#UB`rFA2GZghtcIyE>KF} zfZr)S0yxi&MCH)^>}~L#4=ToNUdwIT8t!sf=*bU%@i6G^0bMHuuw4%K8_T4%2E({{ zl-n7~7lt1U!qdS-{ix>(kb%ub9v7f$;+LHQUlr}dg|TXG-f+jIkJx?Ga~Or zJVKv2qnJ9)VnbC$7^3Id#E`ZQd%ERrUa8&@jOwV~(a$>ILP`b7-oT%euWO4$?lWVbKd0_F%}9`piyC`9a>QYl5kxPkS6T0P&E9E2vH@}aA-VP z6PHQD+ldZK%}bCDaoU0^p*zM<<7DJ3(q{n7?Q2%!Ee3Yarpt~7nKyBc92B!&b_mEb z*k!N$-Nva-jG@ey9+bf|3M00XS9tc!SK&NQy)QyblBTsxtRm5Zo)pJi{(Lyl|F~i* zicWuX=dR_?t@FToWLCEndaaj6G_p<~IxP>*ODqYy2mEZ1Ewe?CD0ZQmF(F%rY$s11 zXusn-TGSgVP>>5++`v2*iLnK^UxHT$k)z=)md@Dzc4e9U09 zB(1qve^}0kawhC-a(0kma?#@=01JFlc^9D8#@EHFC(ew5^cqEDGm}T#--6+vZFLF` zl*n#VUNanzqiYQApkJVO;KpT>Ea()_qOen3g9q8THHfvldn<+fty?9vwC>UX#d_8! zH~LyRELG8M4?5BX+O0pzuuG9ySl;**D^eBR84Av)JsA5=RJQPVd-}%sdX4Kbr~$ta zgiZ=gjNUEpyG?W1bKd`L3$!>Eagq|W0h)mQ=@Zv~87u$I^v=>pMIHTPV?;*pdOsxY z6EzQ*5KsCD87xB8Qj!Rj1WIk5poErBI-s|Q&JhC^)~X8be7>tn8ayhbU-Th+e{Dbacj5U?O8?Q&}RaTTVhRUM@ z7BeP^G|auc74G7C+pcpZvd9Ao=|c5r(-$^|+T$lIV@%Q(1i)WmAoS8u&sQWQB9>)g zs8a*z-TBDL_p6VxtF*5~#Rn(HkT}OQ!Mm#!>B0MoYqenW2DUqQJJLhoSE|NGswd|J zn!cf0{$qJyO&MpvXH`IOs45_^=H?QCalSUc<4P7?{E8lm5*SZlOIv@Udhd-O&3@^yWXQq5Kg!6E zc-a(Mu1xuD+x_TP)-Svw-<2A)&JX~Ly+w?V69wGQwEi*AP)};Ftng$XRDw}jJsWlM zK#KqUmT$kqEK>)ER|H$>uxt+(rwcY(%Y%pTo1|?yGc`e(LxcppW%6`^o|^Pme#Bre zdNpcVjw>$ppRrM;qvb;1?234+AixD8rSj7V{T*vAV>qcg=wRJ#(d`si zpt@N^rRN3)*6t<^-K|wTq01+q&1KVRz-LVr7ig1po9zk&ouK|aE2hX}y;J<(`S-L= z&RYNnx2hwu<~m3A8cDZlQFG@q>$ISCk3jZjoY2G{Ds)~x6O-z7M2MWD4SHP_Ox?(4Rg9HqT10#CYas%O7ZGHRo8l&SX_=<@3#iN5>D9@yH ztv{z&VQxhZl}uyq(%qf;yDp71kBF`&;2gTxkeWozO}4h_dbrQ{_uN@hVau5EltP2W zOb=+^X3)N|L;^FfaG**cwIUrJRW3BrTMF`EYLpzb`miRDQE=Lsstv(oEjdSpG4&X0 zeSROWyO7oM62vGTt$R?JM6slRFUWqqjqflfbwg@q5`%A=4W0!WH(lS^mF-ozA#4mh zpaH74@F+YV`8KXT<7D?F;$-)Fdakw^w+6^-DN} z$?a6w>;mw!O@Axj;-4I_enndgj|jZ6a%Dw^_;$0k*`X_!D}ZvDPcUO6(fm-8){ppp zHJeB{?_ro|uabSDouymkonsUqntl40>H)5z9&sr2{7x+Dqnw8*XCsHN+e z#m$$C*-S!Liw3n9FAs1dOPaLpF>?w-P4F zBa~z5mux7|*>Se%DCR{Y;9cswQcX72jP=o@abiCtsdu|&{?xYHm@Lg;d0gymDlsi!BG6=f``kOV4?QoWFW8UCd6r1S@iPMauGmW^`v0zE`HmTT!f&9NkS1CozP z`B3)hcc4E|sxI0a8GHP^E8HU~yOqSNGz$5hA0^h2WAMvlLV;iNM|LZGaOvD)vwH5u zGRI_myYzoJIxJ_ysY_Ko0&x+9v+FnT+iwc_}~vZ zosNmzUAEO&sii8miFodqzUUW4NoQPNOA4grEA9-A-BXuoy2lU-+sZBc{z;U5D4fBq ztDHcdDW-sFl+)XsG39GyfCrYUhX_sCw1$>6YF48VET@Z(j>*%9dSFBdNtN`1OWN@CHrO zkASBvd?_04+6~`i#_XCt=r}J-Gl(w&j$_4g!($5CKW;hJuU$TF+m3Qw#DW<#Tr8nB zhO3g9kjr##7;hWhUzN>*Xw(i*Q2h{X3KWED`S|RL;o!c>0B#q%SCfV=Ql3+A*v?Eh z=04k?$y~5(R?)mfL+$S@H&)slUT#aGeB?F;FL@9`hs%JB88j_tr%6_dt2@?*@=Uv6 z@KjVS*lvmn!>5FN=h$iZL z1sPYab*u3JO()D5jHhw0wa)IF(ySO2nSblG>Io)`w63?WeZfByUYz)ns-m=o6lMHG zrj{jUs}@*(eR)B4K&XkWXsE4XsQLqe%lyZ^X2XxKFP5$b6iu`xWp9*aZ|Y!8C*}$r z*}rwgY=hMlBS=}lPA2#u&Lk$8(M}eGG>l&#(-5e^xqPOpVSv-nt2(hv>(5vxx{2C( zMond$E(d9=wM-j$q+tgJIqeQD4I&&L2NmS;&z_BqqUzvzQLg~xP0MYheh%dp}r4e5edN@3I=`_ zfr^Rb@=zE{mROe>FvNe`#v-S~fvH-dO4rp0oMYL9j4{lE7vfM#s`b4tJIpiiiiGdt zO*(|xHXV~UQ1oX&Ekjh}F0;Q--5DlS~^6O3idF zsY<3h__a(&oqTOp&j3prZz z++fkD8Mx8)5j+_kA}+ysEV}3T=qNy{gtH=1G+>nf*ZR4k4N{1`2_}>13DFBG!#3-0 zPu=Xu(N?MJ<*<^3pQG4gO0vM$U=q!-N5q{IFeBy%U#>tiJYiO##llU@L8(*jTFIQ0q^pnvb{p5cOwtq;0h5uH?TiVQWO>t-JyjJ6ic9jxl)wWXwBS27Z1g@#`1X!k^cAYvty8M1 zb>Ag}3|^Gin}1>4E}wJGw_5X)-w&KApy&&m&KKj)3}Q^-(!DY;i7-Z9pH+5)+vx17 zMTV^@!YTxJv4!T^k8o7qzV?k6EmarOHtRBbW;Cm=q!5t#BNg8b@)r0@_w#m|-u13$xj4e^YN+O|YBy{Inh` zIF6IDwT}fle`v&`XLNaR)*;gL(?a7_tgC(S2l`eYlS1QYzaS-r%RR%}xo?5kx^v12 zV3gx~I7yINE#3L9Y?s>3F4G!ZY(eH!DTMIZNDl8Z5mO8PW(tP<{cM?8?xDu8Lt8;d zb01SY*2m|ua@D2_oCgyaC`O>tXEIvg3h!t0NTk~#ul92sGcU`6P6`f1wb|0OX?*pt zp-p)#pYSUlwx*1$tWn{B!&KYRIfTgKMxH;P*jy_Ty4&u*Uz-K{f9JqDKTnCRFKxa> z$2kf!UtCBwWubne@9=seUh~?)%O`lfv$LF@Io(#F^e7wEwWAHP`P1X?jiuRqB9}gi zn_v)%As6m}Ae=UbEUJ&}jI+;NzQsAnM#eYDU!+x>lc-<8E#l^-h+Wv^3sRJ;q5+32 ziQHs^SnQ9$v_o!QueWteemA4<6G7LVkpwPN4);@jjA!!}sus~?8$smC7rC8ziAXQQ z_kUpT@%`>04DS=;L<(;Q!SGUIt@}sWSMTZ9Uoos%xP*9cN>klaL z%n8rncjSo0e8RdYhaivRVFC93+L%k)oZ-FHHfW0w6hVbNNm`t3shlxfO0wvEFK|lJ z5Alo!>|fM{+GaDC+-tWel@r5S8US`-byR{b?3zshC;a&F#HV>B+uVZX@1Z9*X3iJ~ zyIusLCJ3-cE-0TRacSx~%YpxHN3*dMEEXviq1lA#g!=@?!RbWHg?=}4DByShUTkU`qnWJI#Hg?H0 zizz(ANBOY+$@wt^;$g}(ZBdSFsgnjtlqR8wDyQq`Y4SDA2!&ih1&cO4iGI88Le+{uXM7|GBLTd3vbxGgnugLx>df38SFnR ze=A^ZV7vLG2(2xe!Yi1aJVH~bdSQ@Yl9FF+fo{AyfXwCO!X^-VNrXP0;D@^ZFRG5e z+VjZXD4v)g!h;O^AK!ueACf~R>GDtb{!r6aUQt7Sk1>gh-`hsn32t<>a6r*VfzNA9 z-<)nF%VPjGHtnou!jeV_qyU<;VEBukAbgL6xs@djg()YW6n~umRv#pQc4c#($mZ>M zIa?a#@_M=0`1sTslo0{+@Q;E+;h3!bMyLV2>wDogH$~ zx2!usol}I)Fpo(_|JI~hV$UMU1pl4AzRHrFD9M$cj{=XW+vOwxHH`o~vlUAuwS^j) zl!K9rEoVg0eAjmsFZyBf8U2;&Q$Wdk!a1#Fq+YbdB<3+VJyivEOL&IYQ_`r44_b z^+ZhD3A)5j(Pc@sNVy6{W`cCQk45Bd0EA^LkPD&V@q1Yg+H2(&CP4MF0vdk>mIlYo zz#>gdrqA0$|5r7T#(6u8dT}OhAW%$wIRRXGvp0;)a&agD2tlX#E>0dvOo!0okQun& zAPc$wCK_r7uWxw;n{l0Sl_#oN!olGwr`(kz{--0uE=xXPd0?{@1L0xy6PdT%r%9`+ zQ_+)&^iKsOG6K%#pIi$M&ERpH+PxR$$7U~G<%LRUBC4y)x9l#3QONSgkf71sAJn+s z2BFN36r-ktaC0#eVAGyINUF$misP-?TDpadeGERV$a?7oZ?URMg)JxrX+zae#yMuv zNhOZd<7SS265*3NMAaEb5eiC1l0weZFgrrt$)hAY{urco0#iamon~W@X4Xk&*oMCP z#v-$SDE%jkZ(yW$V-=0JWj{RM?u4^Jnssz=1ZoeGH~=$^OzZA&BNx(7T;RQrhwp`H zVtP6mZ1oY@t}{APR9>%}Y{MMh%1+39EY*bovBwMP0LrfE>RSNE7tHB&)K1bKK_aV! z^mx?HQM}|JbQ|l0TjpZD`>aUCLSo$@ig80RDFeCo7}KNT1Dhx!b1H2@qa|l2-=4Gg zb@8sQb1;*zJ-J=JnD5gbHK=VYjwXDD+&8fKIYn;4`2>eH+W8Ozv#{vFm!)`o#Bgt= z(e46!h|4s5cl$59IHijw&x$Y5se@1a=U@q7Fz&pWkN*~Fmdg2F)j*Mk0;F7J|1a|< zNWbd*ccuiXSN|bvpnzF2SxQPxP>D2>j;9Dl7O7e$YAVW&|J2lPp{Sk8R1A@+E5qLO zha3|Su;PooAwOMjUr`t?3{(?&gY2J|P?oQe^QqQ>3LURt!gMuZnzTy*Zgp+_s9qIhhPBzTjz$vsj1?%Nj=r4i2PDLB z#|b|CYT?|9B~!M&GRaRnOetL~UMY>A4WDqOE`dax8+d3Wkdf++hjmxCX>lvvf-9Gk zEmKc?n#JZRVlSOoquygs{d&*fKi2cb@w+$HRr9He=;(tMN5^gopD^NxcOIeAxRG(b z+{!8JvDmMl%BuDcGqZQbYq#_zinKSX#JF6J<=O{i-Vg`OW<)WJ-+W9r`516LzSn%4 z`i=M--gwQ5?eN-jriY<5z+S*xm-!M|s4qKedBK1=>molRfQD)@plYk9r=|3d?Vk%r zQ;7#+AT+GReLI}gg%Tll7+RmfO%^JzkV5nNxqz#q+{3=)FuG?R?ROK{dQ;ha9vrC3GX+av z=y$&Fe2MSqHv1fqet9iKdimyQKFAsaqih_zc-#!zsyLK#8hVM3Nk=Til4G)jtlT$f zbiToxllXC-Q0bRhJ`!A+{pec!(6P^($_eaibsoB=8H1|)GqG&Y%*)Iv!%n_Rso z4gP{~@4<(stk{$@p(^>Z|1>^dSNc)WhD45rE*bYF;q2pfu3F15c+*&rM z?GZ8UO-*)d+l79M~Bi)x-=r+J~(aniVj0OPTl zhZGhW=dl@$NgzNYb_;ejcCo2W1euk-#wll`>PYH&;I{uV@idW@{`z!LumP6!OA8uX zN3P(rI!i08vR`%45o_izy#2jnAxsQMUB7jiZD5vWg4!tda$|x>II(KkQh@4~DlojQ zUYnU+$Gr~&+Lg9iINCPS$sjFRihi@AIW2aq1Z!G)9@rO@L5VftTHjI&;Azsy$e@VQ z)Azt=k?y^rU(jS`WUjS_Ut_J_`Me4vwOSnxna>Y|fEuj}v;- zOgQxmRn^mUnp*ZvaU7(Ke3r|e;>?Kp>`s^SCHeC#$P(-8depeDKH{XC5I;tsLMKE= zS#$Y{O9*9;_4JjHxDy+@l%|sD0!-_kf`Mk)9;%1#08n+Gy-0n<1zKzAQ_b;!Vgpbu#2mD}3c=%5ADOx?Vw2SKBprd{4`^ zT`FHRw|^ZQ9H(#RsHJDrYv6>^g*_=coO1$qIOh)ACf}ZOLK|`06g3#>^kfR(;N2d9 z;&t}SZd&eBS*(v>-D)K8Dl!43a+5#M2v05rJ$*08>$gi*373D!z5b@OBL9ud|hjV zW2MhCE5*>n#8TlGlJ&?z+2oMKW&z`#RE8jHlQn;XuecDPz#_Ax+}|r_I--7!Z$O#a zqK16M&s3k>?fMt=qa*JlIEUQe1#iY!Re@Q4u6Fl;ltaDjj~!Wh4;R(u4CvU&0XdXj~g(M1v*~ zN3+61K|y7K^i@ZrA^8aeR|XX+>%25&0|ffDv*Cp;zn)CYL$zq=HEV3VmZf0Yl7y?G zH!o>kE(l%(3ob4TR#p26+0C@G`FMD^CrsK#5oJ2eY__{x{mpf`>i)gW2dC6^*Bkt; zE^R4v*XPC$^$SZ5A5N6;j1o>Hcaw-L?Wi7<3nYdXDjd%Z-Nom|9o+a4=cyU=Ta+0r z2Ds~`>PhG?1N*CB9uD=r1JoZaXzfO?;yoLjN%rOqd2v7v^_>LVWtXDjZy`97+)XJm zd)iY#$}STLcX-k#ZcyUX_^l3~aM7UQFa z7R&M}&`{x6$_$Fj>puyXm=~M;MOc?>3rd>!3sq!{7wXd88Y$7(n%WYKzlDv$!F3dl zdEN`N@*t~a)?+JC-t^yQ@*Uhp<^LI4r(S*x-W)3Qm#+sab1 z!}Hcl-6!&{wMiwxIyY4=uC!7Je<%noYp8dD(5y9AUW=DM0VXhezK{34GT%_NvRWF{ z%_gU7s)yB+t;I&Mbufkf2CM+S~5}S>!iT5ulT2sHv!zWN9;9$E4+vFK}k-AIf(lelQL{P+8 z*vp|68DnM$T%58pv~y+ZC7q5ck2nsAg|uq2%zZhq5& z`%Q@S{W!XEF%a8w0X3sOsjs}I^=CGmk5i(5)$mWVH1uox~pd$pr^ybc-!-3N+977WA0igb&)=_Rh_8(YLwD;p1v7qV#d z0km6wzINIQb6{tQ$y4mh=o%x>z*PK3-!M1#=%PM~T@8X>68Kwh~1@f55~1)1@^OQo69S zMq*2I1xiHSzVY>!{@luJ$9}>vKXI*l^(G}RkBMcydFjA)lcny^#jO203tGO*E9Ljd z?rDgMBFd;H$@^bJ+4WvyV#dkX*q@L=eIW*!tr+XPu?JxfVYTTcBXo_JnhDinzM$AL zlSq*x#hYniRBz4I?}Hh3!FgC-_U!ff{`i27))hEjqEHJ@n|OjK5;o@VSr7Cxfvxie zwgslCX|g%>&T|ApTD*|spf$`10;^`>Ao}VJVhL2>jVbIcG_RcZOR~b~vC%oN!3yh7dHf2=lGEz$#xOVb3k(zxAWjN**bRiy; zkOc0mih2+Fge#ddJ65jb2Q*!5Jap=tl?&#jQ3f+IwjJ>2Yw)NVvh{7JexZMx*bO0lJ9fe)RB#8T4B zYqKVBV=s|)Q)Hj94NuCx#;&ub(rTMHyM#uw(m~GL_yYk3mgvb20EZ%HoAmMJ#;$61yd8g@J;t|TZqp4UItIfl%`tZ% z*2M2ww?W?je0zz|S+FYDf88HK`MmE{Wn#$k=eS|dvK6A0u8QfS4{ct^rrOHL!AhXG z(rka1tVScu?83jW9Zmh!Qk!RY(MsUM6l{kn=snpjO+OTg6~n_+GQOZtyS>4WcjxOt zmB%t2)7_@s=F>=SJ4l%fp)(Rd3ciPL=*XC4Bs*+IFp=GMebZ;%HG)An@lXf3Z2ZA% z5I{oT$9bL)HGx-WjwqNP8-Tv*{~5e5nFM0cIo^ME#K5V;;C*{WmOWgea-)*j(8X!9 zYn;?v0%;3mz!&)DFpL^32b&Wz)EHLx#*lShjk%(+J0kQmVz@*ND_S%?+YZdahTRQZ zFJwrP0zyvE;A}t@rOGfb~O>mp+3=v;$gO-1pe1$kfVF6 zuloxp$SMT5LCT}t+31Mq*rf))ARK8M(Npl-bBexcll0UlT!D_Y0gP~@jHpML zln14vYQx@9AGY-e(UJZSOOU>~X@a(FU-2@xNHC>c*- zDn3n&RKGN!xH|M(@w1WS_JXy`VEQd`ss-K$Z=7!TGQ|j|OEu1%J!bZhA38bO1+o9n zn>dk{+Mzbz^O`es17g~=rlTD0q`4!7E@+qOu_~f6O9LBog9Z{t44b=(K~5EN7Y6o*ZB9~klxahEq7Ya5HpF#{PAu=a`DONCHK(*uY7n|tsn^)V#~k)*k7nR zFILm8p@tE<@=FS_M*B9nfjV4)hrjUN&BRY<3Vq3A8+4U5@6(RdH1(2_Y$p1&nxod% zI(HT6oG&#G$LD5F-HC{1;PkvyR>vh)uYx)mENlr>O!RWr7HW9=@y&DlI(&8w;COas zW%({tw163Pxe)6h{?kFx5$6-V6g&m?d|g z$&@WxUnP+Go=L~SK)s61+-{H;9VGvtUCc857J-V)3znFLGHS#2Miluq4SA_|2;vQX zF1hC)>e=-P-PIT4n-l8E|MMP~kHko6D-&6PG6u)?z6#m@|H2ta` z>1JV?yh7X6=AJt^Chvh6Qr#Lj?oXx-R7+vvo#60(`x9pNl;bDXi~L&dUXEl~4{So0 zpM1@W25Xnlt!3)xhkaVIbZB)M@aT3pM*5W1dhG3KY&%R2~CBRLzztt%*3eP^yx-# z-vkDeIDU$jxR>ygDpj;Ox0{E3advnMzL6n0(vEeUm*_-%N=O$hVjOK;8m7Y9gO{xfH0<{vED7b5VxEEZfbW~3wv zoxPr6engpsxZK=u5LBGFgB)MV(1%Ei9%(=Xlmn#!za=P(Cv(n+4ZoL4xI>H3Ps71D_*=!SSW!{K)yy!25mDoYc5+pvs{`RP&eL7nMg=*P0mBU2A#r1ZF z9TMCQl6h2OVqbB4)|x{Rvl)$bj7C@b-SacM8dFlLoKl?DO01IMUQ3<&SAzHSZ0El9 zQL5a!W@Ph`!f?{!&e`gbMwDqj$wKLFtJdzzu_BevrdNutsbVh;O|4FeQn;^my1PWc z-lcq{ZuN5xM(0)1O97)MrcgVHaftd%kOt=k?!z6b2iHXezzgT;R(M!v&12TvcnXm~*d_JxG z8yFB6`&!N<2%W>nmQHD^J18=EV1Vli`=a+bz|%FDE~8tQexP0A?v{9#cETcs-04SCP_ip0mAw5>3NY;Rw z?}Zg(&fdNbW6r_87s_vmuF+ksKUMkW(fnffc?A~xi5-IJng@$hCpy;iRvIk(W1{P` zcNKHf$k=m~jSVWJU_ z)+9+(qmQP|Eg}#%tU>639Rm6av|gCTOP0EI`rV3(#n`BOeG7LuJUJ0} z+7y^_Kg&v%;FofLcY`M3C)faMm^nDSsLjcR2jBkSM6aCH!F`BVzn{BF&>T8jYwpd` z_svd?Ed#Yo&r9nCyL%h=HL4yRJ>MTGwj8Lkv1^?Ji;o2DkGuK!{VT(tRQ7%5t$=~^ zRaEdCBh}V1y>b^Wjf;{O^?4j@RV^pz@Cj%)Krsojn-NO zDts_YbuLMn`kTCo6O!;c>5AiQ$1EaJjbW+Sl3UI;8=I;R5fXGWs?`!U&LA$Ncy2Ck ze8xA5Hx58gPZ?&@b`L8|iO|jpw(~|vb^$rgv2`?oShWP}y^CqDS=^Q^x)Z}Gi#WPX z;p&wzy7l^)&lcIP>Ghk4V)&SokgNj2+2`adrEU!fJ|oT&#N$_f?23$Z%F- z3LLK%W=am}JAvVC~^W*+f^GeRcLrosBd;pQ@C1<&VfJ{hG7rI+Y`R%3L{v zRx%W8D?XIQWhqTfMu_V;PAaXJ?>-d8C_Q|S^Im4&*+MU-vhlA%>^!FAF30^C!paYr z_kxUPpdjt|Y9glo6lCM`jmW=V&LtGDc9W^Z$vpir4f)zRbW)2#0JUgez!W%~s+Ow= zlQ6~Z95#&I{5h&oM~B=~=udD(iBp7ACq&#JR3F_#A&0bqlFzBji3;|24n&+2-z`Wt z&_ui@j}i3)B*$y>Xffym0_hD89wki>zA}0`vKjUj3d*H?Na6;cGa1Ky%%FjRX z`oJITkX;dlrUO7OJWx*bI&B$t9(VgV5n0V7S~^OzC&jnrdfP=N+;qmTN|SSLC5ihi zkx$>>uTwhB*8~cob_WR;Ut=d1HIqO2kF*jYx7Aqn9hj#2nDlQNyt{^N~JG+f#yge+G*y z6ujaW98H4B^7c{E-&SN<{89FE|g% zPpGttR+ZBaB4ZeP_KD)_7a@;iiAE{M+S_j&_`fzFqUi=`&2eAPjf{lUS0JLod9g2w zjhZ~NESZq`kfl0}Ak}E>j5Y<=%(W5b;VKBs)3+clKPS4b8C6(1aWtBeSA*XwkJJJOGru zBfLTXA3v{3v5+6ZKmQZq;Gc^KLAB=q`1Q9A66%Zn{4a=X|6D}>!NUFb0paXqyMH)> zBY#sv-G`=0oXRFg!pDPuPV#U`rNo6$kjta#JdSfg*mp1%yIl@NITVjA4r2L#6H2<( zr`|9e11G)|=oWbL`1~!H_4)F4&h?W+ot=7gIFGbcL`)EvN`NTwYB!ucj~VFxzVQV(X0v5qw{JD=sIj_7P5-`ca=1i zgg0ExqBHG~??^m2{QQmLCupw1IzWjewcQH3htIW9KQuq99nm#sX9yXz*_=QvU8PdJlU|LVvj>}E z!*OyxbeY9VE#M^S@ut*jU+V*S6zOF=l3_n%b1xuQ6L2?9id9U%p3PBe*V%KF_NI^D zPC#((S!e>%5hG!H;u)!cp~t&TQhb1@>RNHUkpsV0es89oOBDt?&c}ACuF`Jllhra$ zZT{6WC&@l)9~~7Fq!(|>2+>i*Mwpq|Rpf|4G$QtX`1`WQvLu@zDlED!1Hgbh4wKxjIc(qEN4nM4{rpODkm^Sld<;|1?QWDq&mR$sCIZvp zIjv7J3+$0=+ZGC}GMRPyW%4Jm7{pdBUg~%>M97~HMo zH_;qU$ZC_kaDhiI)kA{FPwEu*%u2=?K8daTS=sAy*Hps#bbv$aFCU>62!ao|D;0g> z2#yI?jjf`z6FJP4rJ2R3{EVZ?hh(>YY%BxlTU?j&7Pt6>ICBjJULG=nNz}g8pl**0 zcAZ?*lo7d_imgmFuCBB~cB;1(b&Kj0ka54v{i82Rt$H-DdvG7l_3>I>>-*N|1!N=u z1IU+c_Cty%={}+P{JzT489p7c7$;>TKF@VsNq&@~(%QyX6RUi4ryxL_xnvgsU&9d` zte{jzTO)3;4m73;&_) z)+Z6gs=pn}LQ#977E?8?>mG9Axz?Zlk;jJbFcY0bNFWiGI)`q2idb}Vtnz{CRxlMY z;Fw=X@8$0WePC*T1G|KF?Yo6ge)0nx0S$iSQ|Mb6bW%H?MkN=kn}s#6f$ALW=sZ|n zD&qwse!q=pHsh7p_K71YNkQf-Yc%z$)sX`3)O?xTWXb%mLb~SY-dc9pUF>F~u+)Cq z?SdZCS8~2El2<~9G@d;H6zcE3lUA=0&C+LFu687CYXI#Uv8X0uNndeF=NMZX@l8=n zxV;}4$k8pxO5XBO%9$iN)}w3yvPbb;Vcn7gsf>J~>fo3bVJW;k7j~(&%LV0|=$IAD zFhStt?Br0Y+s!TJ^D`rsh2wIlpKQbzyh`qG^eWlmd;kfj#~lkgkO&3V7S@hEip_Q} zd5o+%IhPnBK$5u*2N@Dv01WcP4CWDo{E@@%1=8o?VFJUVX&ldLE-^QVQH^-mb4s^NFAF0sE`(1HUZFo`pcY2S_idj9Tc zlhaaL#J4m*3vKa**B9NE>e_$P^a>hm5Z;pXX!Idk%BN*0lSSZ&ry^y1EA!f!MjkR& zV$=6)0O;GgZEU|)rps#&?VGH(_JEE(7a*LdMAiw-KA5DTDT-hziw{JOL$Ds88 z;}Q5j;kT;Q{|%s!S;Xz6peJkHlP?^|j)ARl79!3wTcTPdOriR4MP6CAv>tikR($93 zEu2o;R~rBI|3@hBg`>}dVdA^*TwP3dagoJ-#gI5b8sf#;((jr>P;53h;d#(k>9yH> zwQhK%i!fPM;A1<%Fg(eMB@=vH;nk&yDTpj<(ZItW-x7XdcXDCV3b4TXWs7GS@hREf z*KJv<1i>kwz-}3P>P|>>dkreDYl!WCzl!)uyb2PGMT|xou+~EG^*WU5-y9iE@MkcF zY$Z55X&P~hU1&sicyat80TR3bBSv^BD-^@?a(NWr=;W_jF_WF_{Ax~GdQWtxl+l)0 z>7kQkwQD^1u}4Qp=Or3Z(L8lkAMo{ZLz3DS`I}Zi<5jul&*|VWmB|{Zye(ctQVi~{ zL^1dC8cwZ+kLq_gj7weE8zOxYgDv+LEEj&}Z?_0MUBGw|@65uOa#ebY?GbVD*q(_l zkk{>+$#|?a&@H1MVs=EyW(ZwDJD-N3w*=xWM9ec@(NEN*{(PtJOz(%vvwSOQiscVd zaGy|ApIF$ppJom1>0D;r@I|HcK5oZ$cCY42>EG9DcWJi}t_exV=vRK_-5?Apsc9DC zT$qd>n+lq=oJE;2M2|ZE7GsM!9Bg4)t4DXK-qC75xt(y&%4bf{tL-#9shH_$7JHB%4S>22N9FG|P^ zo|HT{@R;nHn|9R~^(@{oJ|m|s{iZ3Ii4lWLxvzZ$w}1O>$GRl!d{q`)FS8~oGzr=e z)H8ELtfPcj3xr*o@<5Spdc?kozJ{3MKr=PzvpB*FbO}o#a1FZV00_*)g$13OPr$J9 zsp%aHd2hJwmDT}%SDa#GoG3`ew4~+b2;i%WL$h=-TVk*B(s5H5$(c}q4zmHR)){dZ z7~A=s;P~FizmRO;ZD>H8$%-@BwyV?UD+BX5lMIHRVuv#3FEk}4WH=a7VX@?_>g5cVZF?%ua)4sk8JSfs|Lhn zego${lPU8mNgnrVu=Z3;_91Z?Bj2tMBKq~xOs~MR6w$j1g6NzqJEg|%!GGCIY3ov4 zPciF}20m9{+L2?0WksTmYy|6ir7*dE=I#uMMDU?aDt7THmQ|Z;%it;LWVWvTAn-Ef zDmRcNEZ0ZB0o1CT_uFUY(DJOfn5$ry;iPB)!pt=p1#7>yAetSGJIQ=EgMMr+3&3?1F@oLLd9h_o5$t69 z*m`VP+l@I|9BR1*ct9JzB}(gfCq8(@b7z?@;gxNRa+XUWrS7)}7Pc7AQYWJ)e+Zt(n@!8oe66Cp&2WBXandUpzO(6pQ@h91U94#N+PLUJXIk3o@H~sC!`% z>||eP^*76SqwlVd)!ZOPx+h}%rns;nnn>WS_yrYU8AWl>Kzw-)ebUy!+ICV|%Mxu0 zbceXO2{Z5qG7bV&4ykVoT~~OSa9|>3KmpvOAbf<@7nStR z$ypM$|ar~3rl4_7TXj%M|b|~`SS_vUTH`C_U(%4Uo%vFy2&AkC>|8%5^r>BYLaNO8z*IZW7SN~t)U|F( zz;(cGdan{aUFkThY=LLX=SpDf*!M!-uJ1?)ZQB_oe>m*wwnRA-utZ@t=6wk-71~ z>iWji@y~pj{~Z+<`heW#Ya^TiP;2vsw(A)9tM|vt9T&{!6%h6r>c{74P(a_W?~Vvv z(+7Xa`taV5eldEYZ9Dh5f+s|r^n=p7iog{*6;6e?yGm2H8#3~~$e{etw|6b1H>!s_ zvm{>M;{c7M07s;1b0k&V_bL`grMiEn@ufMiI6~EIGsIC$uA7ITbHsh(hUUv5Gr|aJ z@>WK8q+tPH!$YL2f6Nmi)Y^xp5RjFBfLfYJ>S>PGmKFuo-~K9Z#7FAzKZ4*E4PYS1 z7X)}*4wn*T*RbNE2w?G}!pc^8=G3Sqddy|us0iE2mdtxQ1nQiKkZ9KWGVEmN4`pCR z0mjTF#7#%6t;Of4e+2`?W{C(bSDW5YaTmHG4tX%ZH0(I{y}@BScY|g#kCIYYhABXn zq0<@k_@J@K=)(Sxu`f=~%n7$VN)xS_i>Bggc0h@BCa-D|2G;cy7moEqw$se+#-G|q zMT}!uS!t2)BE7yJQZD8fCMD&e7I5rcq2P{o&i}@bqWq14$_$7ubS#?gvV7E@<@ec# z7&q==C$%LcaOjCkt|E?w3a2p5Wx4$=XB3cwJ{-KL3ciyreKc`C+jfhKRPtNpc|6Ff z$JF7kPy)e=>4>McDNYbs!fN3lb+bZCoOGXCC^TDVLnGeDMttoHexUT9UCQxql{O=R znQE~W;#EHA7hYs`Tue<|`GcOy)6fJg6pA~@CE7A%kR*Qeq6(N}N#^XwV&)kkk14#} z3yC4dCXP-@{Y0ysb3_<05fS2m9u;|^j_EGUB5@Z2hcwfW50UtxhC1yUx)khag=NX{ z$SrX5R!&S9r}iRejP-mxN9KG;y!GZ6Yw|2M5+7pL(GV!_@@h*615UXb410W$Mcjb^ z2<-ZdaOtY_^9=G$XPYK;{e5-%#McLQ?^aDGIZwv^f-2AFLJsfrZT`okC~vmYS_3(4 z2Df%uW1Vas(&J_h2hh7skp23K^k+G4u)Pizk7;g0!OGFpp5^wAEp|AP;fg2rx)*?+P=63m``9SnsTrHVJ^MFYrRcQk~ZhV>N zH5!?59?{W2$X~a0`993pi)dMVAyKzUlh2kc%y}8PkF@t6?*y`!iywSGpGLF_QDJNp_ ze(1lmnshI92dnFX_RP|zrR$W44&mwE5*0v1;Hi&Yg+a*XF(Y4)8mJ?kW%3vm=We>YN~T&ZKc>)4c`|AiLx|W)*BtyZgkJsA7<1 zKS82SPhmUzs4pA|L$(_4)f+yri{uevJ-H(vpFA^G)eUWln@$l{j$L%JVO|qvkw63? z4fQ=d3x^*D9oJ3XnMsNzZjA%c`SopbmFx2OJK4y?Qv`h_^0&BHuGf@!BLr7s`N>1t z0W)D0HyOf~)IG>H6`-CIrcE0-aD%=i!^&w~9VNF516a4^0z}E}iQvox zQ<3Xa9ysfh9K5WOi(%Oob#rv2F^qr15isv_k zkirKGicaKCB+#2X*?f7#_)PWTl;qkJfth=l0Izb49n6w8oan((0!|69&^SCdd}wMF z`_a{KgLK&o1XTC2Hk3{?PiR7OWdj_-5H(hNQascbHE21Pz7%*fcqcYdHAa_(AIXgX zI2ce)3yYjZObP95q{B(B2RN6?Z4_B4ND4svni&$WSJq{xsoLuIfMo|c`TmQ2^b~li zpqw&RZi2Ui@3bpuE>##M<~PhW4oln`AutV%N*a%mn+i)47i`z6s^)OdIvQ%zOuF)= zQ4oc(XQ~4}$vuj+bO{G94~e5Q&^FGRysG*x?$g4IZY2W))FWFon#qhB73#EZbWmY2 z4D|N;rY96dk>}BeN(hOPSprrKWz)|H`aCOGWJ;w?z&VkO3%rpX=y`23ot8OrTz;3s zQA>G*au~N@sI(n@DcrK-3xcbu9 z*TKC~|D=J~BP*ZIn>qcM%@kwb!mPVdLB@}xa%jyVD>KZsx*ukvgcByAE24R^5D~iD zcoFlH_l@2>7Ji@n9)HpWNS#N=27*c|n>Y()O}!Ivuc0N-)IF~!=VEw@?fZNU+#N{$ zTGDrcn8Yq(Ao2$VG3z$vt8_oz94V-54&ETsU?lXblshwX)K!rFu3dri4>P)sN=gz@!&e3gL1qW@5D$OvX-%W}xOg_|wNLe1_LAA{L>8+y?ZE>7p!JJ~9 z&wIrG0qsy~I-mEkbJN6afk8N0*FM3(ZEMcfrFJcT^_9$>sT)Adf3WLV1}jRA{31Rj zE*rdo(oJ;&j;-yw^1UKz()AolH3NI&aF5s|U!qh5af|c4LWLXEq+A&C>*xF`k^)Os zR2)JqYlRQzj@04u@Pk{kIRVx;;dh8Csqio8Pc}F3W<&1b{14yxD0(YCXkw%?x_6Fu#V(X_z z37W09C_`eH>J+CJoj_WEH{dJ%$qV5O@Gf2e!!l}JYUU9RH^gk{67|w6dQ_wh7~83naq^iZf4DDJ#^_bexOT(?l86k< zXIFcqNwiJfHA}ff#ZPG1k?1(lt{fZo8jK?-{Z;0MP3e&cq*4F2L2E~q2Y-6lmZf(D zjU+0O*gfwLT0%|O#uiZ{1Uk>GPQVAV z;A5qf#b<(Tjvsoq*uhZL1$ILqdW-GEjlglkt@8n62`J4Y$SLW%hqr6D2w!nI%n?F= z*PI*m9_Q2Q^(oT;bJ^`~O1@AQ6}S$r1n@l#EZz9~E%<*Elzt~T{1dt>=6$iByln2T z%`Fi7H>{2<_LchKPF4wYBU9Npan}S@f8!4?I{NAGTieZ+(g_@!u*c&T%m8y^Wz4eQ zvV_d_qGqYMZ3`CkTI4&?qkQSYH`u21j*eI66^8qa zQ<|R?P^`<;8Jh2MI)*)TmkMS#$qzf`ME~{SkB;nKl{xgWYc`<0JE!A-nMq=VLb6K~ z@lQp#Y&qkO%ttPzsyS_O2W9m&8)Wi~>N(|eR*g@o{Rk?O-TQi`a03B^-ku$>5nAzt z{gi&r&H4OZa({U>`Gofgt^~rFt{o=#*1i?DwN|)apO7Rp=+caWU>Vd z80wy*ylc7X;P4CS^GWtb?eM_HWYyeEqYo7W0eT)PmCQEs9;HU0ZK13w$8k!h%_@~G z2;SImVTHCYn!yfq_@(+G1sqxCUUtVYM!A{`B`#upc)LZTFT7b&R%t}U zSzohL2aZHrS6rO_sXZU~gb|qt>3j~sR=;`R`D0MY2$n5>-NtR7wgI ztjc-Vba|sKUy%82DV(6c(g;j1##D`|itVS+Qx|+Gb@$rwa68WkLtqGDFXUQwz@pLN z&sEdaz>PK$-8YRIltO9-6-l1-_7__is+o-b*v(erq-&MS2TAFk7QP*|S`8LL7JYy9 zst%H76quBl@{$q}gqiRb@Wf9kCAP})$l%tB+SNC5Muvfn;8W1G(}&?V7oS{k^~2Mb-S1ATvGF^k9{^U4Y^p>Dn!kw4J*ct^wB=7R^Na9Cbh^SP1rVHOT3I zAVj){D57Q#(ZZbxklW`iZ^5Cdp=5G8l-gk%5A-s|Q@!n_SYc+zQf-%LejqqqG;DV& z^MdSQx|)e#;EngrEp!lCRUBH5eQt=z;ha--!e~gCYz?}?ihF9F?^YOu<*K3#NQYbh z0f9c?Erqf)$aMew-*Zf-?}BcGzYs=eUkdL35{0X3WN%^il}Ge{@<56;w$#2*xPQNA zw6K@xst5~1G|B2MlKR6HgyqE-P{Z>Irk7aoD4?s(o zf-majt1+K;C%FTV$K5 zCvw~3ien}XF4sSU$cFzB*{D*v1lDMK&uqQyOAj^zAPaH=zUa%v18 z+>-zU4vRKsR}9kFz{doe^v8lz7@inP4KG+o<`dw7qr*I>U+#i@J%;_-fosil^z#hS z-}OR@G80tUhaouFsG~bqiF#Tj>;@jPox$qC5VgG-?D_jZD*@83FfnTbbpp0BAJgBN zKXLWaa0sZnnr?o}GaD!aZ8Bf!C%?LW{^hVq-X5-_Hsn*?G z4OzqKcuSb84`^#nxqpI+?FdPqGCO{MB`lhED3`>B%$$TDP=*_Y-+1?ad9u86xTf`{ zX6VuBaQD_-s}?a^_&vlEt5>6j66i?a&C6F!VK0!;;1$gmI9E2}In8X!VpC$~l>0i& ztTDc|j4P~GWcC_X$C&lgN00%93P|@iH310qS{_?c4pEsNMNj$Dm2zHPHNQlbESCF& zZ&t>xII>EDdQV=-$P%Ke&I3Z$Xb09f#NG|UdQV{A!HNSYK#qnE<}1M^Bhch?(i;2c z6M@YyPN9+rY>p7E=t#Hg25~%7!EtA~Z>Y6*Xl1voEW85Xqi_p*dTJ2<1QO2I%@mIa zWqpM4nAj&sOhaY-q&4@5L&LhHVL1_?t(zhP_tKOI*|VT^3e{nGk5U5ICO^E(hdEu4*3U*#5_U zAzyIllNJ|J;iti#XADhjQ8Sxp=QXuCg-e;no(hf>9$B}0&-i$94<#`nt&3U6-uXj$CmA0!Y~TW^UCdd-bsgvK`19D zpJ*WMciIG9KZy~S)($P9VPK{=PnlqP%Y17%rKiRF?p13mW(%WqLjDgF={4|ItZm$lAGa-Iww>V5fv>0s4j@ zJD&Znw8a8+c4K$>pi{qOrm88fqw2?e$ z2ET>8+#>FLv>;Uf|0Fs6v$H60Lt2Z!t~sXvy=(SAuDbu?nl0A0(!*Q9@Rx!kE6R^y zF>qX$?1M!?1*|(|rBu5!%fM(Wf&q<3WFT2E!N{UXqiv-(T*u}GtTp`Aq!6;QegIzp74~fVgoTX3Mawp)yaZ0M7#&#k5PiU!SU6ER~miR{}%n+ z6~zR7$rQ0CgQGO&xgIOPeK5dg{F#8=b1|Sb_^u)3eqhsowGy)B01Y`YMkKaSDGHaV+Go3t5u%FQH~WP-DXjo4~%O{^uc&iNNi6wU{Qd#FnB)O00-Skq*! z(*4Dz%ptfv?2so6S<@Q<>7vT{T^Nwfm78n69lLcNbdYilZlx|MfOJQWsE$yJ#YXE= zk&gT4L-?01yvudT_BI`QRQu{Pl^`uS9h`A*s4TBiH1X;AXhow1bG7N>P;&NUU;L(~ zDC_k8%#|9fX$uW93x|ykaq=cjxDsW*P&$cOwM=&qr)gANNqP=JIkZQ?@itNdOYFnF5N4edeMtG3@bGO${Z?ABWd&@*GA zA}{1oueR}TDD*s?b`60JDM06wICTPEMnnId{*JwgKpC(ZWPyF1!qJgQwh zLzPt=sSwAXV}h>tePGw;NDkhNZ^0ml`uuT()Njb%wfmHAA^?6Z_RQ%Mx_wDj5LC^1 zDe`*vmwjVd82qK?!L9Yln@yaU5JE!~IB>B3z+Ad#2!rHXIf!5Vwc*J@JG%{0E9mc- zzYg3Acip-Qc409oF3KEbG3djUTGiKNAhd2Pg3P)|^36E%L?X!552PvMA+ysu z_Z7M*l>PPkh;F1H{GJnogiKVFiBfN|a%L4YGlG8YJM8J4F@LCdb-&_9Jx-Qyqkb{EdVd;{@FNLzD++-cUSb)aI8dhsFs{>$; z5dQmz@XTYTFYX9K^p@J3T2u1Tcn^8Z@;7OOnGs$CO5KQKzW#HME;|C7W$A5}wM~ zxMk3j$2(MW>lrPx1%JY$?-;Rabn5Kj-(JpJa)kQ6zn4$Mz{7Z~Rw~x4B}JZt-Nc!L z{r1G-DIHDZz7C@oiO>%@huzHL*V^@qw&g-}vMoZrVIGk}?k&`>Y|F$SQW=t(n`$qO zTA0v5{fIz3k>-u%{RF9zs4cMX`VK!QF^WavgSqR(^~%4ZEcB)L>W2v3@or8)Bd?oL zGwK5*VmxpVP&4nL2I~|=t4wgXWZHf@p>9xgMGrG7HCo{Cfp0Ay**(tpO~Y|pqIKF@ z>|tEwX!qrWQ?PSgeIJ~9zv~-Dinn}>(;W;=b)3+H<6;a)J`wo;I6J2x&7v(^S7oJb z+qP}nwr$(CZKKk*ZQHhe^Ym@pbD|%*Z^VB1V@LdtYwk7Y7~`8K{Egso&JUOs=IzsQ`ay289!q17bMv6%clA$YErcnGds*Fr~eV6^u9WD7>ueUC9;WR@&+7MmZygGJ-wnTI0BP5D%>-^Tiqp)r_Wamw*% z^amDBvFohka#9;3Kxl(|3-1IuM7!m-1}Tta4P|zz*GHlVXaN9c*hGzUS`Q{$ghG1< zxO;?EXYbS_2tTto z0jM{Ha5qB1wuI|kn3?NX7&|AC>vwM$Kj-BD&aEVI_FxYEt;xq=Sc0o`=1WH)3Sh5J zmMfeO0t1bh>uMN&@2)pz=BR}aN{kO^xe8&&*??#5lS~Kku2bz@FoN}mL|=Cn>99|x zE5bKY0}Ytg7JN+e;5o7X(ImE&b(OoGKjZ)IU@02y~^7y)m2%tTRSk%u5Eq0)wz4SdNQm7 zJiWPlF>W1PT(_w;1f>lx{957#HO=ux=1`77p0%!mc$)E3Tjjx4U0B>Qu{vB%yV=@0 zf|bgx7UT%X=^RbBM`P&RBiL{lYAf&zC5(XibX$&bYHQ_mph{sCYfE*g<+vQ4y)CeY zer88j7z<9II^!7yx)hWLxujf@^?4c(RR6`TB|s)}^9)BM;Ch z;^%cPEkpIP;N3rf4rzgvYY6KbApm{8<+)<^Y+1(YUy>DX!nEvC$o$&$&sv@RBohqB zp8i2md@XhW#w;!X^*N@``GE z3z(CHiS_anUHVja(oX92-o_3X<~gglw5sNRwHBG(F9oG9px?hX*VCI@+cCwP(x(`P z6~kJ)77jA9=g3jUfP_EFs7T%eOb{)^m@zC{3jPo)>ta&Vc6r&-l%fF4*TZUUovz1KON@hUq;tz9Wa!gjwbh!rMd1reMT;kDGJeM{HBn`VyUua91X!%kdqv8&TGQyAS^0KUC$dh_g?y5y_R9))9^0(yhH7)ZDZntpK(d^e~K>_R2r zgj}6Wu2ZtYv@v!cA1!C_*icg$lkBV}7GSwV2o(nPWL@ zq(e&>2bx|qI;W5R%`PR94{~%RhC?XOK~{eR*AIeXL-SFwcrk6CUO z6M9R0+|b!wIP_qix3z3Wq#@`MdZ?Hff+RLA;gkfv%*z|D9gu~*^Uwmo(Bmk&yiWXi zsNJ8x4k%s9ngEntQ_{1_-5{6n)M5Fp+qqu(b!9Hn!ITb@;nu`zm$1r#`*~AJ1y9FV zU8Q?!NHDKL+PB4hv#-lx)$6Nyv>IB~Mg`jJLkE4snJnyn$tL_ErgRxjT7qG9Au6Ps zk^6lXY-Pmt<{4|vl@?_-RW{}Xijj6-D;H`FM#axd&V&$jOoN&AW!?ts$-zev=Nh2n zljBJfA%p1_<`f>C1h98uo;N}tn}HshV0heXMcizl^6!p^pm@?9nl31yNTp?z2p z?|}r*V|mmO?T@C=KP`pnw=%I%e}3U>rQv%i5ILUNq|4)~Z_i__Gi~HltPUSKYy{4* zyJl@%#gKNPlBC*HCd*l3nygMld1kks!;ol8Sk0fkQ9(UoG&43=R@&S$S7E=OTRH^B zNuD>V6yDC74b-(U0Fgoz;>@EL=-|)4g)4E2JKM@S3^)NlI4eE5P<&lV?WVq<_cKd| zy_WSUgS`gmJ>twwXfCn&AI9~-l4duKthBkpP=OieFTGqR7IO}2w{o70Gc<^}s*zBVS)&fYG#JzspKT66vKtCAC-7&EA7 zlMB#->>Ddk>Y|D8qIw9}`^c=J1r=k_p*R;S<>swO%pxPQaWc3t<+e=Yh4E3*{8-_V z^BeCOO!cX6mm69l=NQJUxU!NEOXf#qKwwgAE%^Kjn9v0< z48(SybW3E`->Av0erQH`uTp+_y1`_4e0K)LKasMR%%$j1<;KNxfo)x9BU z>Y$IL7!sN4m)wBpeQ21~CQk(2I1ItG^=-KO%qyibl}M1eJFMUtV-g^=7BqEk)G`y7 zAxXlVIVEdf(9#8;neHxiR^3o2T?OU4#^@+Dp}NhbWVDsCOx1%Ts+F4B-=x(NvZ4js zhBMd9Cp<$Ba7PW!^Re- z!WBkS&-j2#vf#lIxlj{$Lx=M^Bz^d-J!SrS$vwUwJ$7UPX|d&f#En@DqVlr}EM>q?os1r*}0oGRl{-d!U+5*i!7;v-ls}oM|JFE=dHsPK+SXUmc z-B2NUsmu1-dSPK4(^KlsbVbWN765{{8XDA3_PDgJt-uYVy_>&9RM zpnDbYb!VIgoo4-&&XTqT^i1C8LJ1Nt5M?Zok8d4vqzjCM!He&36Lx^)r=+V|=PUQa z9G@?R#!%$P<~lLHG1FZF=7zCP5-ocMDshZd)EB-cYs4HEag2s?cVFMs>@km(>j zxefS!M4S8nrHZQXUwD%uB@KmnS=cY>^d{zisHi;3QD@z$0-|MtA5@_W z!4d!kzr$>zr@40`bN2)G>v_iPWYE#93ocn9O`b1SKc`%rS=Mv9ySzYXBj3?ZP?N{q zS~X+Gg`m_l=WNkb7$Nt{H?$=T1O8AlK>+53sJ5`q+St=?#l^ldcz~ zn#WX7>FuvItfLqnlB{a9%iXjmcZuZBvnBfMTCkF{#Z%yd6)?0eel3&Js(|EImr7zI64o zwSaMDJyx1;DKo%qcElXO!+QU#BO*-=GE-cDgESe#6m! zRS6D!x~Lsy#bHA`)zLMpU5`^M9%w#svQn*S@=rQOzyjH{2F9-{*d-Qv{!CQsZyk1Y z?2{tD^dhy&Bm26vU-7M~@)APv>`|QY58Khu=oDFnle}S+o5J7dsdk1?;dYKtUe++gKrx!zJbBLLFjlTMs!L_VE zIw}`Pe};YT#faY=?{w5S9<0I74h*%T$ZV$zt<6S3sI4-nEwTrj{j6}e3c4R$a?}A^ zBK|pUux%it)EBT2>I>9=$*BKGrh82TrIr7j$fKWp(f@D@>%R?r{&6Dt9R8nknWb#? z6D&gXrjDhgOkpk#Z7B8ftJQbQ4wU^mISq-+|uv8nBEybN+cv#GAqfsPCgbWhE4GPC{U3G_D&`K++MtNCiscuku zDt6XZB|kbo8P^q6ai?28?Z^DtG*+nYl3$zYM=zkyT`o4*Gu}nhpHGo5Dh!#jW}D1a zlQ$4fVPIc}9pPm<3^eSrfZ3lkL3c5ng61CHOCGdqICy)=->(t38!t>>Na07dVFbtS zzL9=0i=p?c|8VMc$iC3kw0j){Lq-dye>c&2MP?-`I3D6oBK*wOxWf&a8n0eR9X^kl zaEDh4>^-7<#T1U1e&3NZk?>s-S>+0jK+JV`EkD%cYO5`1fJ=a}) zUbeF4y$M4wTBk<55xdg9BjlNFYR4$LzSLH+R#!J}|Bt8X4)HKfB#Fu9m^t z$QV{@gZSNxZ$paV;TD4(glL&twBh45WhN}{Aj}KxEg%iOl=QKLJO2E;ip(_NFS~@j?-+N$L+&yv1==d znIq6e@kKod(c9kVgFPzJop6llX$gb^d8LHc%?L;qqc~c89JTL&CoItqDk#h1{9u^{ zE{kODK+Xh35E<2Tc<4^MKTEKdOzP+PPyS4`K*pcp)Z^}e zPoSF|C#%Bx5MmY}L&)wvVOBIV_kmBnUHmxj=q4*Hs6}kjUn3AhH{gvZ&y$9wm$NCq z>CC2bMzm{`!pfdm>;rIUB|Z%|d_v_a*l5wP3v|X;e{c8pFiXcq=X`(7uMLe3i&`;X z8mO8x5YOHP$Ktwe``2I7PIL_`J;5%o#CRAg!;Dlm8A{L4@ZA|lDQ{>?C5gToQmEfA zn7jHTayGYO#1>{3`f?hGV(N-s0Oy~&g0Hq@2~%fd<@wOj$k9kS5IkHT3Y`_f`F#EU z=K`>Sk}5X%Qvig1d=&qG1>oP^6#rQOV3R2&G63*N8_8LrB8WOxz#MewzEWjlD)N_MLJ`$E5tqp%um1NEI6=`(EzFNJKO6_vrX4eb3GIKe0?6k z{Hli)gWRFQ3TR0kApNoH3>#tD>|-q&E?P?ux2wt)JiFTgMU=bg2xybM`$t!_6sNOg zL2}RBiu<0vAK~HSd%U$73wL%F+_|1fppoef&vO$fhK5< z-fc>5KA%UA%*;G;oneZo(mQAYO;;V%Lp;!$_Q6>PGTAHUjzs5aRIl#7L?lgDNKy3HXdQx73gQ(U{bT&^i-B?Xj)(>bOShXelBlFux1(qq$A;tDzgTz4EzR>ap@H@WUwWqnB0S4iFhN z>KPy;Is}_a?d9yUC3IMaO-yHkQ}3&Y^Y`#GK1KcJSb~~H2urMRMuhZ^JnMHv_Yk@RoT`R7kUK*aTMO>DTW^0pS$gS7|>9=^z7NZ&^R- zLdB$9@K5|nc3R2Hk*-&Xvcz)6IHHkrrZu-LVdhIG+3#SsRv_cAXy|#*pVE-Uak3_? zkFlvSGlBJBiT6rtk5llJ2;P51FzP*^_JlBGHkliX7@B>*Py$maDZ5=14&g_(@_tbB zGzOUL37NGEGBK|jF|=(kVJYp7mfa^C={(aMps>y=#p(TZOyhu2R>E4p`VccQWhsms zz6A>}c#VR3p#oVC(lX)QkMv}VGkJ%XeuzBDa+-nbey=Xk22ln;mtzjrB-%+Y0~_!) zsm0f}h!0j563ZGGyMmOD#u{*1nv=&PV(x_K;2I?S*}yFB6FoI&`fK)B=bvjsE(CO_ z<fws1g!H{>=t8oZHN$9z&QDQTlzdr?7gMeaL1iX7 zp4<>r9Ay>P=g1&daxpcqx=OfH&_S+>^TJy+*i2d~7cs{utL-0(AD(-66V!2l$9)6S z4f9Zt?O@_uC&s*PS@zlHa<$QV?6P&7oe{Ftv2XpW>P3Z(J4_~N{$ifflQ{DHc9k}H z$Km7cmDajvi}q=E2(-(W=I(|FNC$eK;)NVW2Lc}48H?MKHL_;EnAXoLAjF2eg)P#2 zBY#IjZ(#=+_>CE68_WQ88;ZdHIw-9F*{vxDZELI^=jKKLsQGs354f=FG@mwS&xJ73 zhITMVpK7Q8gFc`F(8iqhXGD`?7CW*Lpr9z=;B1Lqx^;-pvF3Ua8PsS!x8>E9$L zM_1Z-=NrJLS5~?#+2laxhKvMNH(M1jX42!+SClL z{{|dQTuDTQ05op>nq(EOBfC0jI#RvZ$u(e8m*=g-%UN}2PblosbS0dzyijyxQ{Rhk zRPSyG^3NfEN#jl1-K`If0N1smS5S_brJzbDm^TwbFgh$do1F*Syr7%tYN6@RghHFA zlXu_1q@4qnYfK|1yF^V+o64bGTL~^+43OR^eDroFQDa$=pY_-fZQTh?)%HaM%4E_o45_~L;9Qi+`^%oL0KTT?kWrRw zMWudbKYS*7Mz-n5>T~BmN8B$-$Y5sRD@ooY@0lPAa2-8YAR4Xa)K^WSY1JfEG+8T8 zKWCvqrZWld9T8)OXjhrp%uu8(QlmC78(CPRuGU9y=2y@{tTO(%?gBqiCuArYmy1Kk zO{b#4ZM)XkFi)2_^UgK~rlzXNNTN40OG3LXk!#K3HASFMR7$(Le`gv^h&?u%RqT{z zIOkBOpUU+%^R`7s7w%3I{_Hs_%K$?Ku=#ou4Hcn`ohXRoDm18bTOQ8zk`dm$PXvDAsU#5;`>39UVEXgZ#O~psjt~tXgA})xFTBRaORjslI&6L{9p&d%K7WMH0S; zgLNG;vZZAmVj{KEY^LV($HeN?r;Y&J6KVzYq$UE$m*;P2yC4hyGXCCDkf;Nteaasm*tS`!DB#~cnq$1u2CQJ z*;v|hkJt-#2CG34j=7$tv)#YNDGZ)&J|q0wm+Ms2mF1UD#xSFhIkmm$yY7tNSkx7o zgXj6l1}Hpk*`>EIEWJ8A?Lw^NQ05tthC3=SnTU{qBprI&;+B0qw!^KzP3i;PEBO+z zWLbh@H_i?(5!#I^m^RB5C$`~dB9$qB%Z8I*@$jm^x>NMZYmP>N$f}J}fmJEZ+W<}F z+gLF&oT`aWm#g;wP8<@3V-3}{y#1ZHK|ZT|#{&2(j!zbn7bzf>EOpf|>6|iE+OXJcIZ%K9s%>X7(+pb{+Q2(iIkCY~56y9oz`eNaBx^ z-@2SMou6=a5YUy7q1oRqYS9dF;k@Wv{pKZQ9*AKr9|C@s`S1Rifin>~w(v9!7}^8S z^58H&-f{$i)YL0{Cu))v3RpOmd^yb^hQY-X*mk?<7U1J>i(0jdIPzm@itQ&TK%o@dY>2?cq6w*}{! z$OLwkk)BXJM9!pCJ+$LSJ&Q{mHmh!Hmb;yh}OuV3AqZGES$ApQ%(fQ~N0M>9sc)wG>dT1$+3$Ud7e4mG*2 zifo5twDMUB2lKKkqT1ytckyr#u?J6vGp%|g&n7Xa&O4@gU1exwJfa_ zUltb+q$iG%oj4o}Bcs=!HD9+oWyg%TvF|Zqb9W|Bl@y?RYTMsgsxuDP;0kyjyqpYu zuaiL*VyxF?(uU9y7%Bn>8-quPT~g@{P(P4hI8;&?N|#o9=!yfT?2rDoDk|Y;?p15C zi<^L8b@ip~qr&Whlo+@~{$rNzmZgcp6O(C1s3~lOWeHN2rvraYc+OWLm+hi2sRTOr z*H+W$WvHnPI^!?g^Y1LpQbD;p!=UQ$Y8HO9bhVUP>PTY2={ko+wk~5o#La(Bl%%wi zDUjq00KcU)4n3a1&mNY)1y~A0sg>%0ld(J$D~C*>^SVOno+RxNAu|`LKz6h6HBQkA+J}3 zY1y+uW8@_4296YoZQoJ=lGjEH=%7SZ!D1D=tYF8!N}N_HmAJqe^On{sNq941dM z0%U@kJ#-ME_dDT_HWygO8c+>q1pSRUjAuoP-!5v%^adQG^gx5d9L+^LQRL7VDAk82J7YI;o)ZBUce|wiPvhmR zNE_B*DrbvRG5ZL2ZdhAlGSp#JEq<6vLP1lXDwkXsrk~h>-~Ym;GyIC)QT^dAGX6k- zh5mmou>T!Gr%2JtVqO-}+j=ggaeQfYsyu^6q2y^2=%Xch?1U6Dyx$4&L1Rt(3`^`v zbk5KFHo!-;mreEtot= zeY#F`rxjhhP)@ucQ#c6kQ0*%89rAFBm;Fd|EN)UNoqdkTVBHfo)gzh#y0UAMqYvf` zGOZf5RhjmQwST?EJBqF6k5IndN;%6Zp1i=RYM)W*#O*55SI_?MZK&DWD5WXtXix(|y zN4BihJp`PlqGMWAkLvNxWUJS%vt?<_p}cBDi~I0UMIXE5f#H3yxF@Lq8N@Gmjg^(0 zVW#%Vw!bHK7Op*BW;wEU6-D;PBkZ-38GY&Rp9J-?jt9fga@_6)WVN`KTS(N%?`^W32tlN=^{BrNGVy7W>|m8p@1 z?=+Rr0<`7Dm-fC%!Lu6_<%6H^H>kgu?dTngP;T%Bs|^CGn}KGE0HNH7$S0xN{xDI_ zraxp=tDFFhrjTgluA0=buWBAbR?2e)DVJsOe+z4{E1ONs8-YoQ@Jrwp5Y<)|*=9Vk z;Ikmw!GM~`sWT~nF;!0HE|ruPk%`BJnQoTc{>GjQ!*7()23L3q8fYJLF*Om5pY_3g zbP}g5!c`|GG!VRTptoS)IL{MFJc5Ihf1k#{|YTVD(ZC9xO z{aogsT=-QgW-16OsNPqEw0MxzrMZh^zJ5cv13)bNa*(w}Kn=n9qRnFVPz4ETj>i6T zQWnok-j`*cf4m!y6=U7oJWoo#;=Y2PT+O#R)If867ie7EuG=?`H?JmsMpqvcz5y@H zp~i&%tWhavGyW+7EB<(BH6yM}q3VPHsL1!BsKSG`#G&Y!Rl^pnB*BHKLua?_L+5tb zCv6PhNiy@{a5@NV8;PR@nQDh>*$M70h)}B-QwFJ^L87O zB8;ghEN)1t9FoNn^lln3xK#GS=@y6{E6ZAeG8itj0z|h}IhSPY8@<}f+CL$?Zno@z zeKy8ogQNP}Mnxc65u1k_68RE`^eC#(_S35(yuwagN*qJ@xRqw2Ae+$=@#YVlH)b$H z=6iRMsOb~Oku>v)Jqu*TAhgQOYHQOxS9P!55tH-Y8YF{v`CXZ=2bAx&#g~=mfYy(S z&#~wls?9_B<^&)$LTD`J)f;xsgdIl?n~v1^wW72Z=4;cl>3f0;D~f6&P2Hw7=pDzn zgBQwuBks=mwZsVSE`9ZAC9BP)4$j@VG|yWD=_6_eCm4E^65u_8O<&3uVhyL~#S)>e zt|OkGknekQ3rsi04w*D;pM>5FK9xvJ2$g#5Nu<61C5N+?QKGmlMs?(%S)4%MLQauzNM}HKj6y4 za&8@7}l49^`cO?f!AmlrJR~0`f5zT=lIa%7M3h-(@;ohGe$3r0C+yf$s4dB)N zinf1n7#b?!4S`sK{AF&)1e!(c7BZRlwFc9Vn(_`KSZdwU&*wP{nmEdh!^8CE<#onh zBzuov{Po`ZW`8x(Yqa3$ts~=E+Z9*($H|p6m{qqaG&wC2MxD*@@-NC8D*XD8=R?#9 z)9a3`LGldHfDBoR3tn(ZX$JlwL@P5H--jcYr!-75rOe^i=`$-s$nlT1CBX7MUOC)QBhf@oHV=4Yd7Pl;l#W4ruuZ(dWr2390>jAv;P zwZ7X8$1b}Q_RTQszuT&xLEnPDQ{i=(N_ty3qKBmM7Yc%k03E1S0a$Mc?L4E3EnzfC z)FH6$K9!32R5%5CY(r>1fs$^|+$%aEF0(Z~PP*Os_IMk!Q8s0h5O;8WphQYDGIrF9 z%w;JoaeWhS&6rUUd)d2Nk>V!i8%ham4ev_+1*>takeE&iPr>7G1TS#6+O0*`Fqfjm z;H4{17SSZ(fN@E9;g_?tkYsj&JEoRTm!33&sd~U&=yCHY>Vc!3Yxid|mj6cLvNVMq z7CBSM`(ltgy&YMujVofoN0h?Mq~ye7QKsRV!(_KRY7<75;r3S}fTEJ;QBIW`>O+J9S3-k7%j_EyC_cX68`03=_Vm zZNKg16~%jqbP`XkQ7|8qJMN}!w};_B7pbP6*3cYW5{8B;fg@UN8QTJDe(d~hICYM{ ztmgP0L_=t)A9vau5m|~1T8JL^ILMCNaQW%?1D}3*b-lw5gJJT+;1OpM)r2nUu^VOk zDDIKp;lO=8w6sxZiiDn%R%PHea|M#`uL#^4V?SpZ`WQ%Pky&>RAPMNq*0hM!-&hph z(?Of7+sYPNAW!FX-=EZw7e?{RhZhK;3$`cns6L0IO zD}+dlL}r4CHMDaI@54XhbDYB@+(LdE56ivc`R6*X#USWc^8@&^`zFr?i~v~{V3F|k0( zpPBr|{nu3M^Hq0_7ql*_GUz4h@{C^!V@D)dF|iUMBj62qPS%nwu!-9{xlID4ZFJc( zVem=HFyKcW!<6bxcyu;B0W6=nZpy*Z#%d5S-~~! zWB~D1^*kX$Apfa&rJvLUWT7Mn&h(lyGs(W-(Io&?YbIlsD}7E4t1vssaU{R;l!Qqj zqDYnhVI%~k&~xFc2pk0%hrri!Nu_^g^}&2yLk~TG71=tYJxWyk;5)j)E-X+V7>CZp zXa^;0HJ$$HC_i5^JX?Y0(dCOaK$s&~>~o&zcD9OZ^;Ns9=JZlxA!4NUZR$@%V_c9t9~xc%)$Q3d9JgTVJ6l+XPJ} z6^8^=x!RK^Rnx68WXKZveD#M*d|{ak`lhjZ;nCXC(&UcaBXOV`*t#?F>;QAb_oCenWIbb(L@u#g4Lls*axwvjetBN;JvLbj~005dm~!B}Eb7LZ-l6#Nvw>=LF-QslarKJaD$&TZiBPINHt&6jI<`jHK`eb) z#$$)DGY>*AK`i?znQ?m-p*6E7&$Paw^S3qK%a-$CfUy`lbYtyoWm9ES|LxQ>q?0K} zr--jVv$akBT1(kxk~%tQh?}V?POcA3HlP%Q98a$dk1q34H!$2gV3(>7lJ_@zA`Psn zh%Hq4cv=3SQQ%VUtv6N-XxIxwVS*1miFjcR z?6oq>dWHTrQO&QoD;U`Fy;&tkcmY|rwxmdvK8_Wh#_(wNckX!#)piT9QBTmS@S6v6 z_w)E{qs4A;p;mPji!5$tS)uhyVJDAS{%sx7OC7i&8`kLUxE>tUo}3o{?!W%so0P+3 z$9&=0S2SZraineYng=$E^d@JlO6l6NeM1QvcvLdc=l1^Qd#k9{D?iVUx?6fbloYp7 zqPF0;9~;v2+jU-2ay8VMc(CLQFgFs(0I-3=@k<)P72p1(gX3NS_pj{XGW5!QCRML7 zWy$Z=z%m<*Vs4tL8$ccuCJnMZ`(Yphz$t^~=9PCx1sPzBByf3Q&9e98fFEeS#cj0i zg4Qr>o)STtv-y0#>HEK6bT^(@o|At%HoBjVjrV_94*&aR?OPgw5BBScG?Qxz0I1yG zA3$6qR^TJZii|FbkWh)BN{ZK@j>>|o1Lx75sJGh-Z2QMTBaDF46GA_w?Wc;T%9ygg znwItYl##aid3%5E@(V(BDc68JQd@J`_RluS&w;(uHt8nb)o}Hn7q!G<3K{N7P7WnHG|;2b&v+pRhm2x zZSV&RF%dQyD80s!M{Vn#J99wS8EfCTT8DN@5L?tUToA6G|4qqSFKLSE`w~ZE|0T{B zh;@Y`x~V19`UzTk!K=it2WY0I);lA`e$q?E(#tG^+T|_5pl$It-|{(N|Y^TI6>xI#U3>4&(Z%oJef8L=8nRw@=xJOs8h>$ZdtF-X~j1&op$W*N`$(gSJhX`g`sKs>r@ZxZIhirY~ zV03kZ>RTM%fl0*; zV_6$owE6{cN$kjWq@L5TKO<0If&Tdl@av)T!5`+=FUS8mWAi^`w*M=z4XT4_Vjeqv z^Q;&p8^MBtnV!QNUsPCtyq@|$fK6_qIyLR1f zud$gq?tVT+`F&9oGPXO2GqN9X_aZ>^1?qD#=-#n+c$zbEB6E0aLjUOi>bvTHu_Ql*)u;XKR>_mfpqXop$ z0lEXVd+1?*=Hn*FsU|}h15YenB$=rxnYmG?Ol%R(k4=+arYYTpKd#NDwo8;mZq&w~ zM-HRpF)K{bsVGpv*`S`MPQzX%4eF(q*X%kQpn{~nFGSNtcvs(bRnmB;N-|#qKK6LG zf*a!=#7yppp*Q$9JJP)NWc^W82A_>j_I=NeYZYx?o{URKmYsf9RZxcffS}S`2I~Cu zm1JXxJg<#`jt*^}%zBESt|=eovZmuv#=3hdMnB*fD&btI59 z5<-qDmBlK;$29PqVjeB4V3S1wR$aWuTaoxyoGc~dOQxLZ)&v)-;j-S&E8d9$8^*^|(BgJ9CRVGk|YnDho)SWzMm z4uEF{CJyM_* z3p^^H54$#Lbh0Qr409Ax*e%RnYKKS2RLX=ymnNKdA8_Q*f8I1Kj+JCbw}2!LX4t*8 zo;PWm4tgAQWQ0p`N1`MBtHN;{tRXzyQ@r4bgD;o~p&96IRd!iTp3a_6H19diioQ5q zR}wTK0h-s^(z0T?sf~IZCWHaLZ*J@0S`S%ak}%uAT_`iuK$~I3WROw7h{`@GIw1R2 zfJQaMr?&prR)gMVv~_cC5t&szjw*8SKxXI!df1W5%+Q&vMz4N=4#EP3!q)TTCSx3p z4QqSpup)L**OiRRcZ@?E?bcPoy1<6 z5MVkr0W+YGHY!E{0VRDVCJ^$(7t|)GhC{T`3MlcWN?c5YQp}jtRu;0z8v<4}XqYoTYuYI@Xkf|SmeMHo9A^A(RwMqWLB6+)q%^?bq4kzCDY~u7uix(N! z<$Qb_P2z|x3EXYagX&)8Ut7t%ee$TeFqR-`2sEjkY<)&u&k1;BY|Xiyh-5&13A&Oy zp5ijs-!$bd)O`1d*l{ClM6&}^$1d64Ex(Y&xhlu&^#$FQqN zI0gtjkUKlk*e^y0`jsV)vp5FQY{AU4(u@MpBvE5=q4BA>4Y^CkdE z=!==ROL9!!OIRTsPxjZ+O#K6Li)ZwOJZv8h;_|L`uXaF(N8u$Yqq5a3oIR5Z2x7vL zfR;LXul5N@-a%rVU~V_J*>qlAQ>&<=qw7=x^X;hIyi+skX}2@FQqN5zy!uC7;)AYo zjw^(> z5zwT#aukoXgqxae%_pBx0FBeHOLq-gIz2u51{jxexwgC;`aItz1PEwt3V8MQOZaF` zhAl?pcflY#BDUgQP}hxflW+eG9}Q00S1;!wX)bdRj=NBuoo8X>w6E(l5d^613mx0) z>hGlY*p(U-jo$v?5ef|b;*Ew-POn=#wH>8-hH%S?H=d2t=xHVNho9Ll>N=M)J+5r1BfgH`N_+Qn9=&FV zkdg~b6sZNdJ67$3)l?;MVZiQ2;sx6px=(Ps&q;*Hf)-cJx8IiKt4V!xQ08WWxF)Sp)C?eZ)dJpfibOjJzpNU7*6FMaGukBqlr`5xIKc{DM#fbAm+e{k>fl*$4(DZx2QGC+$uH&?X zmrK}!NG9iqFzEqP+`l~45BeHRJlj?Fkeb{2yLrQAtnja|>bI|mOIel}H-(PK4SQbb zZ_x)=r4nTJs!8Oxc7}GkOvO(|&83$wCfgprjy{`9w7_-?vDSQ}n}7Hn^QyQioBwV0 z-_|A7Ys#EVGV;s2{WAd&8Fwlg*75Ual)9`lkk?@s$%reCSE`i?%eF79X}v|vTXbTG zCuo!eDie+>-F2`(-1n)Iyh($;kpm$Tkjh87_{@qU!Qr%tqYE5vms+mPg9{|9F$bCn z-)b|E${^W7myl=0x5;LeX}xO!7~rR&K7F1uKM4F--A+c)UY>YVO0y_GE6p3|u$hZ#yM5 zDwpx)H3zLwC*5x+2Hks1k-I+{vizVK?W` zF+@;N9xR>T(|S{qAagaLaR!^&8_XJ1Y#5~Co%8Ta7Uc9!vll)c;4g4bjGEAy;~X6% z6g|O-_BoQTA8O#P6AjmKc|jO@0N^y1W;JazY&k1XL#(#|Fh-7zF*fN0_;itI>&avu z-PW^N{~ylYvAY+b`w~oUY}>Y-{9^mYwr$(yjcwbuZ6`Ojb>mEWdU~dx>3Q+*S*up9 z^8u<(ojUvMy%l@=WX~UX9YRFEjk>T}Ca>K{mml5@N?I!TZ@H-W*=eZND(_LUj7uAU z@1b5C3n;YAz-p%aGez~29v)(Wdzb3)09#ZSp8>CAmsT?WF0x8`1E9T8nqSaU>+KE* z9~OgF+adi@VK#7F>2VK9Kb*3fL~9YW0z29-eYPmAA^>IaaA@`U#H#1F1&`p=sNMyp znZ+^k_cxN>6HDNDMmW;ko%-dw$Xx-}di7S+eY|3Y3B56G+56So81*|-`CgP;;(WXeo-D=Nux>?Up*JGSrRc_)n`H?4UJ!*Id=j zb?t(-RYlB8j@J(f5Lyz$@D(B$)glPXhW_Vyi`+jg3DR(9~cD?;$!2x2b7hlqAF&+_ACN5mB|rs2sB0@y?r`PSLi z#_0kO>0&s_9T1ggi05T^IOQO~=PljhN5_v$DKhT1O~p1-;|NZ_|FA0$g-%GR60tSU zlyR-EoTj>8q~6h_ytnN#PgpYQyA-{{&01t5&#z&@!`I1lGUPj=+Z3|>(;m#f=$dne za_L(4y<}Dejmd^zPZupEa$7}RTnqBi2JuPR^-9;66SiN}(ztDPD12dDNgRd3Z=4hSvSp6{yy*q0mor68$ghh?j5hw^+vY9;=W0PIkU= z_wcBSukHcg#$n-V2TNJwDI4-7+oSCC0a@Z;REIyt@?mj@&X=-@!Bwl2So+$<&g<}2 zt`g&fbxf*33W>iXW9oXEUSCuQ ztX!(0Q-3G1zpapk@_QT@hCPwHNk&t5qKsj8S}@A?Xh9)J47Gt2x9h)7W4Ca*5%@+^ z#Zhz$W8^Gj_9mT9e|emm!a3uA#M*45lQ?pTNxp-TvyU8%;6kOyT*WY*)v-nt%OtQ>%2!%Kh^B0P!bNE*#tY#N3ZJ;@o5= zuy=~W3CY}4$k^UJmV?b~o16~w9!BRNvu$Z#-#gaDBnY`<5~eK8>}VWdB%8ir1cg>r zG2*N~EoqrAOJ?gVN`br2QmKlxyew;(xzRD}d)2OG30A}DP*}DGS74W&rpL7Gu9+7R zD_3uR%s0Wq*31ZHn=FblFh`@HTeXA>GiqTqn*lS%Lhj}kN7&F@6*oST8oq=E21%Sk ziBevIuoQKR#Y~e~uUMuY%qZGY>;1hLYKdQRlXQbZ!^7`6WiUNwnQ?YY{d6Z0MQjjm zdlpu5&T2hjqCvb`CUg}Xxv;|$!M!ggdtnu=>W^l>0h2Q%Znl8*XUB^!Hg?TV9`t$0Q`M_gS zHBNQ8L-na;?#kg`5q$_Bt%VL=O*o!Zi_##I<`&0aty#iWcpH8-?dy|j8O=)9)!~+^ zP@VY|7vHy`&Q9xusK~WZ6Qo6V!6E4}Cnu$$Upspxg!?Fb?^KBfxZy9b)c=xRw}^k> zv11b?j$877bWF6d&-0-Q25nph70wm0D&CMypEsEUn9EXWnYVgpn)82ygR}1wD ztGx>^0aod97w+xM+Lp?W&5HBqPwg_HJbk|f8%ov%k=K- z6hF-J4Bx0CvE=V8l^n+9nYKzPhY*qFV3oU`QHMDI!xyXtG5sp6I>RFOMCE)Uk6uGb z#^*?K-eD3Ig?^DWh$TeOP*ad69flHZOyQ^pTJD_`p}{!9R<`R=L|){x94xI$Xthd` zYM17r?*HluAe_%4)%J4e$(XN_eGmT({`mtk?!kXwzBld!GR9GNp4k2?7lxc*uZh2{ znRBfb4wM%c57{>$2a9jc3Pif@*)Pd|rA4z)B9o}MCrqPbCXruGYaQ&?Pr=QB2(cK> z8RG_=_K_&l&woAJ{C{=Jvz2tLPy|tV8zno&U2PT-DpzV( zRuaYR^9lKseIh`K`vd2@9xWQ$OO#B_jNO##{7NHhp(FQ$`1=URcGg7{#)TaW+^(~D zvz$(Lc>el%fBq=U^8iz~X$oVl{?ZXEjiH(6f4r~Y|0EW)0K|7<1;VF$ejqjHeLXyHONkH=mZ1;ALK)Xp8 zY2BJiXin@O;NsaM0hWfXW+ooV=YvmF+7t1}KU$|~7G+AC!I-~IQ{#r!d%0AX1Ya=!RUf;=x7$16GauxnbF}@BI#Z+wCTy8TbgV_;Rm8%d8 zVE8kaQ(Q1@ad0_>kr%9hrS0_gn~O3ced`<}1ft&EL|SIWld@^AFwp5)#A%+~T^~w! zX|T#6Bd5>?_n-{-D3g&Da_cJlU}8u5z(VOZ!1C6?GSTv}xVzqO&u=YV5FR-Y5bb~Ybo>wE29!7IGS+wRB~xc6 z6ckZrhh(%rQsTA%sZbLlF_ZO#rGzSSVSs9yb*QmPTpiD(fmU@2dYtBk0ve1^JzDiz zfoiy>VsmrL%FaKZ&G#CcX6nzK%yk2fbp2R%{xpyG9k-9(8=sr^9*)`GuOUi*F?9O_ zOff*&;DIe5fP&0>0)!`48uMv)(LJ&jFikLfJ8A}aq0M>fiI@J?Xq z?o;a}-J8Tu+NWuG!_du3uidwrdC=RU{j#o!INuq9-rYF8`_Wp`F3P>ttY;2n-^stdG(%@E-4IVN zK@fgJxd8Q<_VZh_FTx?ee!bTNJLIn!v+yRU@7=;w(hsG9Ud$pG=J_@M48wTgh~Ny% zD5|rj4AZpb>XHH}TF+wcxg42c3qzX=6C5v1hEqt}OZaL8<~l@S1uf=;m7lrO${}Xz z!K~%}>$#5I^B6px>Pn85)|MydYLba%*qIh-&yI~vEa=2ctdC|FyaeMe1IBdR=yEvL zXbP0a$l;~%6~xFjxSj<;GuNg7S^>e6i|~62)1%Blk44%`-}n5`9Se@>X&AXwk)(}; ztU_px5m9tMOI1;lyB71{V$7rjK*Z)RVd8k`xJSa5O~1(Y_!8dZPDv`JD;OOd)fo}CSUIf;@_aQGn>qFba&0_VV%1jDB+P2BYE4JEcvPd% zSFr}x1>H0?f#iK21~XM?A|A(kV_`FLbQWar@}iH6NbJ(U{JSKMFlpqwLjmVT^ED^< zlXfN32~V+|9OCVZrM)!d{6{^pK-$R8rQGi7Y;4_{8>?s>{QBDLJv=HJYM2f{l%sXx zJ!L|8hTLkF&-40H^Ccoe2c@=cwIB0_6MV++oI(zY9>Dgv40S<^xJQ3(HjEEbY3mGP zd&mRbW^;?Ncbe~+0a0m;79)mH;UwTdRt12f#Ofk2&}-5at-=h>M7oED_1#|y3x|@q zC|k@~VmU5C&x+-Bi!D5^J}Tj^GXgc>Pq^{=qin_FP&|}21)U}v8tO%6nwk!xHqi$0 zPIjD>KBP?=-)?ej5Mq2gq`y)gWGrq8i%KqCC1KiVPbO+G^!TPtm!2iP6jU)3X`(t{ zDt(%&L3K^RTkZl=!2MFjiwhe)Qx+^wBw4Qow2fR+AzybZ2((waU~9KHS(nMcW#jWwuy zjiSEMxW%6?NrSG^NS$5s;hw+sHs;nT)#ouu%iIA_R&9dyC&+H7~(-V{Z|Sihm~t^Nc2si~DUc9u3b(z%~g17e+qLC?B5ZUmff zWUM~uchN&~Qf0oNEC5<#hSWnQ*~EO#9jf$cdKJXNmc~&InWr+AT_TLMO$#RJ`E*&? zDnnMd*?yL43l1uhCUB@Y$tre#agW|UROvj&2Dojt+Q~RI<3m~(Y{dTRnNc;(+@oXF z6*V8;OyeVVTgjQ96Egf36`t=W>hN|ZTY@P-C1g9mTdXZw4z-smmOcT>OFUXGQZP5&+5-bjHU+L54*gVZhh3Ca-*r8&89H?%(9RUqD+PM?x}4zFk+ zAD$|Ug{iO38*~%FRlF%Vpy^@WG<&L>Kr&C{33czzD*NNNG+xS4VN1c&WL&u;=VetL zRJhV1-fYS7`N!YnxhF(wBg?pqPZUeVW9I(!(}0ps#fv|Tk-j=Gj@;m@y6AzbB^30j8W_Dm=4)q`Z|#f*!(is_u}ap6U4A;X z=APfPxIWK7CUjMPsnXOlA*nk(DlP^VuHeGB+P3__&Ivy_gjwTJolY#g=L9#>O2MBU z9S;@*&x-;E^nz8a0yIu@&?#5W*uizP2e*IgAloFAn3crT%1IYPr|8r#Wnp46lsxU| z?5hJ!C6(PGWmjxV*QCu|`S;w}T$b;+PpTDc`JOd1`W4UE6|bj?*l3W56y*ctDr-g1 zD9P|A%)q6y{!TFc^^2Pnl196aTo@XH9hw677c%6exlrR~0{ewetPN216la6vK5In? znU4kqs|L1+jDIcrJ}~>8=Q=lz8vNHOUN2SE?GV*d&$Gx^EK#hQBbqn*CdBOu6Lj+U z#thme1R{2RTJgjL339+QIF^5d@^9Zcdc< z)7_mQ@Jn$Pcu2J_6$pb4V)OrdwFSnp&yNv_LBEZ6yK?U%ai1ff*$eSfQx1gI;>mz2{ZvY?-*gmlzZrcD?FY+UHhl*Ds1!u_Exrd^;B>Sn2+}z@e){0 zmwF7t<7$*K%&t?%`n}nCEkK+qmrtw^X=&GCRs2I&aF;(62^i63Rp8Ii1LQxGdLY=$sp7aBT3D3PEKJ>!q05sV@02@xzFF>fcN zWIUy+0_8oTR5&5GSd+I3@%pfYBIg~WC)8jQG}AtjSSqsA}UG^DFG>$XN<5T3)|ux{#XCO-B#p6Lr|KU0Rd*fYENOiqZ`&l ztMX-!6$2po@qI3$R~f&ClJ|;`l*gvIdWqxLo5vbpZF%4;73$k>jG$K0zBlxhGXUFk zP|=iwMv;l^UvRwd?+LD7&~;ObB%WyFQM+hS%T{Zm{d zh>PlsM+M`I5*xp~uNDcv?3co~f-+wSH3`hwp8AA5BMs4LvLQXqppa^gQgUi!^gp)Y-1hIhuU^XKbiW*y$UjjK5aqJ-ItuaFY`A-eO!T$b9a&X3WmUC)&W*2^0#8 zZm?!xv4+6yrh5uYIYY{VWqm1w)2eyl)go9{{b!fnhIZ2yR4GUm+mG~v0PgTtIxxM? z9qj`T=ghVKzydV|F+q#GUctQHc>%vIfxj}om7646C%rf(U!}iS1vx?729Y=&A&Xh{ zdLcqs<q(F643z7to8~QO^|9ye2ANy7trd?EWB=`u z?_HV(e)$>%24@bhPiGV>`ScZakWrvQn_`h~OHm!LZ`r0bZ9sxy3=0fG&fqJZuJbrP zZ;M)7#&-Ffu(%O#g6)XT@;3R&NZ7KG@|3k}-``@^tDS_q{MP8ElBdmm_2;DaDqlL^ z*MxNdYZ){$?&c9!?dQ}03#A?DHNz77Yk6s8)aOTl`#cC-pZ!2Nh5av&SYVS%jEvO* z{;INz0DjYe|7vGp@c26UA#uWWu)ii~sHRle73F+=nrm;>Tz{_+#PsFtM}$v#Gq~$l zIXJGh8^>im0<7t}v z1Hwy-r~4^5o0nB%_+5dx9vH{g$tVOI6Zt5)h~m_n*7*H{`=8-sk7P~vl%H>hp63X$ z_oGs`w9`@gcz9eKF4iun6*=F({`0Teux&4O`6EOGj0Xe+_%HueWnHYDEo^>#mj0uE zTCMKk{KE+P-k!QoOy`izfD^Kkwlb$+kyP4HWK17wK{C%MUJe$K$nTQTU9>QZXbcw9 zLQ(*Ba~Sp+)%l%K47mh{$e|1xImwlCaNmmmJzseGZ~Nc9DfvT5wjBA%VbA;Z=k?8I z?|Zk$@lj(O$XWou`|cn%&(leb;hS=NyxiyM&D7!+}*hG&UIeX#HFH1i_ z4aIwbCUx=Rh)d9(NR<4CMH0{Hd61l0lbDo!TRcC4)9!q*tpUqeQ!A8{z*7E*hHUvc+ih$dml-4UXr`)NN zb=xl);MFSh>3C*%9 zT-=g#&Vm277LKT__;btsM-P!Chq&GvF@09J6?6=oIGe0zTv|$nj%(~lt3%}DlTC=J zURnafKx6HT&>*V)L1Nd|dw3#xkZpDS?y1T%VG)^@5425*NrE~4?iSei~7Z&Ju1M{4$6cb)~ z(&#i49VWq4vlkl%pi@$)Tn-dOl4YsfQ6l^uG@`~IMOi{C=M1~4d;y+OOfA|Edr1f+ zsB}k`FFzf$QU=82Qo4%`%ipnp@t1-RjhrmKVvL}<__=D7@2hT=2o2((eh3XS+*JkY zmA|n07VdL>sP;cl>-I${i>v!TP?M*BkbTI7#1?wr)WNM=0SA@bP>5AR(rOx+6yr~D6 z7vYLR7>Xo0hsmdSFYQ9)bL*+23puDlGh_K6H!91@hWp zL-b&mktUa>zqBi|>`;!!7y01LZ!IWt-8**}G>5Y^UKlqiTaK zlyc-0J;BOnx`oW@7j4@(^MkU57y&`h(0(Zune$PKDK%}^sEB|B#$lUkrUZV{Af0u}WaDUfW=LQS~Rs4BgPFtK8n(`vBk ztE>;>yd2xyw79w|<`s_hVJ*B^N;=4WbY5(s<58v3LacXam`#PAI}+ru4MYDVFl zV>z|Boi(1X24dFa6RU}~d~peJ>U29#ivs4!xLh=_T{YNG{(!8E3vzRj9+aNm)(7Z^BYA$^%9W#v zQRTMe)a(ryD&PH@7JKYUom%Em*rZB4F*#F17`p;IVI?f)^pJPGC^P(yLR)5%hX<~7 z3`0ICxLs~T(07{_B^uTUnbwsc{b1Uv@yY|ht@g+ERV|#VPNS)#^&9(RUItMIsMBQ> ztelZ}!Lz{J(vr&`q_G)fHt|lh7i*&0d`mN^QReBRXi@6oJvt1GTLy0()kf>9Ix~bP z1Rj|Lp`EF>&=6+3P633=QlTZ^a8YY%Pv7WE@vOSsr3I=lb&^X3N=pa+=6yxx!SosS z+S=qUCx_hrlO{5pRO&oGd)bzpzNXj!xm1}^xCGDCagt6f`N5$>2G%15?OU1XtSe5U z$^0F&D@{06_@w#zGXuBT8k0h6>LsUCHv07R@k1k5b4H0~fi)^7M zTm0(hIWa6HTJw;+7{gLRBQ&06?Q!PxW)sEV3epA*y^w!&+6HID)RJurc}1<8U?^;c z|0>45tZqceQ$)Mx4&od=$gauFPA5TVIb=B2g2A;B@LpqEru9hPu!%TfyA3@2ztCr; zYGww+9}0!b4+1Un|GSF%A63BxhnZOxw3)6L9G&HTRJona4r8K;(t(Pxc%=?2K{XoO5J0>qoL#w_@O=$uGN?suY!&%sF6=bUn!mS2@`mlV_p?Rof(;&MWm`T4m1d9 zdZ`HbPk5-SI{!r9(=LlwFstr!9r0U9P#kA*?|1OyM9gHMf(U|2Hn;10kR%u0Usa-i_Yi&Y~k*+BAr{W9zLNy7h;-RcUEj>Zq z-2FpP%zEaz{jk+OHwbN!abu+p!|O} zq0?_+)7W)%C0Gm!#(G*KSIRZJVi`Dv*c^;7CmjD-x6j)RTw4F2kG?;(JMaJgi4(PT zcJ%lefcWo6En9Wd5k(x4w{SU|&D9$Q92s|XEm5XRpHQ1LYmCGGRVXk9|DHXCVj{k~ z&oV{&i`e4;rHmOBbYD4<8XDhyT)cRpQ4?xXl?)vrC+F&n&*x1hZo=>T;lv7vr7d9? zY05Z$_!X5NKOlhN$&o5*vaKMs(v!-RDlciE8PybPK~A6M?6wouOsz7!(dZ`%0V-%5h$5bM1xk(m3xsQ z+%tff`>!QJ;HJWP*mKt!%19N*R#a6A2;mPeVx{|;+8(Ysg`8zxhbIN2D?W=40 z!bOlmt>ch!N2EY5bd!d!W3x*0>-QWlGg_xgX>z5Clp3#^!cbXY67NID-NNy>!O;KLe|C>BFKU0{9-8sA93AQJ^ZANU2$%uc_&5O|p zg3$$V4 z9;}F<;igTd0>B<#`6P$O)#HOgI71+0ROY7tSy0Q3KD^#V<7P!PI@UoljPW1tM_}zI7UD>rjHk%?x`}hO0^X#hlpj(Rx@Mhpx>GhJ?Itf8lo`_lYJOd zA+$v^Os0MO0!yuAM4)icYY#-DMl~Y)r(H9EtleLoyro%eh*o3TVQE{fP!GOJ-4^@4 zQh7Q|^U@&Lui3LorCz%$hDPm>h{AFADb-_rEFA=mwstyHiE6Fr0OLClq4oO84%S*( zhwoM@0X_%N7;s8Q1DtAqBF+$Sv>wpue2U$HDI@8To8UEe-FInSM ze$=jsPH^B_fwbRv&|*eC`c>l?r*l{OU&3iU?IaR!XFK|({O1%@D*gJD$5BX3XKE=z z40?tF>m8p=cJVo3XB_j1-d+?i0%?*#k%1jM6|Ly6L86{s;(Zu}uB=N)7V{@0YeJn! z=+m8~PKS+^!qub(hSmIKt8Psk7YSnc!E>7J`CCAgyD%-uHr6}R+SD0}0Ih_2Z761; z#jbqVFg~mhgV*MK^bBqSS;D7uvGr%V!yKZI^3p$^Nv0&R%x+^`rl82B1IGOj0}gu{ z#%y|-ryZ6_A9Q0^)B1t16-+WpZkmg%a!MAPt>F~m^n1}Z_>D&hSuB&IaM{Dr@H*V$ z5i@B_Z!3Ceg${#viX#d1-9`frQ|4di-*_1Zp)bf{S@axPAVZ_kULGSCX=E1=BM$8{ z2_JZL`L_Wvox^Wj0G5a+O7hWl`lxZPvv7g5+>yEo!-o7d*8Ln<#>wb^m|cYN=y@p% z^%*oR;SA`J(cq>odS(Tdvm2#KpXZ1wdPy`;m8kup(4sX&1=?$yE`>XE5-OvP?yo0= zGA+)YMjiPS%U(iaLQnkzMUv3q3st8ViTgx6=Qkx8Vb5}fl-EbbS-Hpo6Kx=L(i;6R z9GDUIlqYTN$;IR+$FOv!*(@83_3=<}OnQ@i`^3;9LYn=q!KEW~)MCsYut*1Gj}V{r zXpohQ81xn#eHZ9*Y87jU^N($D485)|y^V?@0*Arsb*YZ}Ja zlxz!tued`T7mgh}b{9<6f2St;*fFpF;cLojJOiCU}A7f4gk8pi!p0c0ZL5`!OmO4kJ= zUWN@)f^<0!2Bpg8%{?C^97z_!WUHX2f zCFUSAV?PHp3bP7}ncon>BHRjOqs-1%Je7@+IPDgaRk*0LUZ+H6Y?=9FG2fE}^if6) zIxnq|Y(HT;dtA;9!ZZOlwgL6)3Zsi6-N2NAr-?>Ba_UMO6bnS=E*!a5A4OkvS+YaCc|$uiwpBoM}-VcBt0fYX^PQO#igW*p^ZVf zf()nMm9Z$cCZ@nChp4#o6G&J&K&o|ug&4qDw|M>;FQ)h^z8b_w?5 zuysKx^k=elf!P)F7KFAU`E}vlmLt3eTzLX3?<%4 zjd=wbCagVZ2m6o!T287)j^7g$NHSO+-b-l$!zbSut+zXg;eoD8q7_g6$p?pElnRb8 zn2G&?7)SX+1{b&g2}yPaiSpI}>J7A0lvK4BG<9`FL^-<30!J_)+%z?ss$mzu;@I2% zA?<}!LK>eBxJGEHj_nPZ;E;?oXQH>0aWZ6y>Mo}n;B(vue=qZ`Muqi_3 z4%O1UB!!ONwgt|b+oQ^xztG~JsP=|Zv^Pg>@1p`r`)O_~z#00TAcwJv@PgYdj&P(N z3SrJbgPeb@Df-M6!SUKhg;DYJi%m{-hE?}1L~$rYp^=%2dE@;ih^#JtwQC;J003&S zzvKwfkds)upWtFto|f4lrNty}1|4^uAebQyPTIN-nsM1ThP||qIpQXdxrAR?-wQm~ z$u~H|0;_$U)T)~==e3@ZG`;17+!1<9$WzxF`M;)OdPBpZwS(n0%}cN2Z0|)4KbQja z{^mY+z8$itbTUwz0@~9UV|&R-d3Vv|eYu#4${F+Mdz~i-Naa!<3{2t}G;7`FPcQS@ zWOGuHVZ}4?H~Yd?Fz=cZ)@tzo5vo9sirj-Bv4X>vxJIZs+rv~o4@>lY#zSPA)8(DZag9t*fRoVxM{}g zu~$b>q^4=!FiZlI^i5Kxx_yuK*h%Qfu8+Snwld90qn{v6*&JyodC$i@ZTw%jSr`Uiu8%PGx=spI`-Z@ECznt+Gp4B{dIcOy84y z@GVCBAf58_%S1VzvL#4@NNiM|L@@4?sXRa$E@V0TzGFLz3ka?yGssIP5nr-JAIYSi zEJLSi34$Pab5w^%1HP8?3lLqx0D-Q~KVnZ~3f+!Ng4ibJ&M|YRno5Oc;gP+FS#sFP zW}S_2*<0&m#Us3u?cRpq!R6V%GX*Z8A(d2b6@x;Q?K{c|TWbnaWSeSA(P3y%rOaT8 zQIdEQ8`Kn^B_?zwJ>n_hgl!Q+x6HBc30Q^l-?iC?_FU6KIc0=#udQ3R&B@Z0DN)yi z)%eq!Qe`$E8VL!fH0>CZOsA9o&&4*qzaqOdfnJ?iZc_R!I-nfJ$ktyi?s$>BIyDK(Jj^Qg;ONyuE;y{O}KxCwk5>VZW zLUBoRG-Ur%h)W6uZtey-$7d7hismqpe=>>1x?G)+S59tT0V*977NdK3OV9@X{m1#`iToQajS~mnsh8&UvNhi8tXG4Scx%#p&c@dMP3m9Pwj~+ z-vCycvaQ>ue82Izt9_wA0eT9}u&p6~$Y3Ku34Xvh*`ex^vt4?BtA$$aDUa7a>!CGS z`l125nhXF|!$(my zF6k*asaa{_E%LTAYzm8&)LTXB1>3y2Z>uj=&g$qHATYE~@LRV5xVIcsB%602Xw;Wu>Nl1rubeO4cL7C$F#RZw$u-$%) zJ($|Q%917jvzkH4?%Dke;bO-N$PeK}EAC<|ZrN2Ms-rKfE3@G1s}QJizQ^9y)@61;OuZcAy883CuK~(E^E_F-AhothDOL!-y{A8?OOn z5n!#Ej9~b`7!H>W=?+uic3}i*)IPuF#(oziS^-VG3FMPG^y`Q8*lAc$WI(%6@EWkm z>{+@9z3@{|AmMxDiQh6v%4ONj%*Tb0LGojDrN2{sdSmXeCR?yO*gNI;Af@1jYTIT9kbTxAeSkrb z+{3^S+bYFf7g6{?iIl`kcbO31vz#@96WR^(gu=Jj{Q;t0u8Rk1kN!%@4mfggX3%3g zpqv80p=rqrlZC7uz0$lH97X%8FC(Z>7(Br!rze@2(KVaVxu9~I0)B<1r&Yia>zvct z?;tc*4K0gk@5=nf;OvF6n$XdZUjEhG_X>H~sRKssWZot@+|ziI(l*Xy*=DQIew=;m z%KNR)JlZ^zFnQoYE>4|^hJU`JsLx=p+r8xbCkV6o&eYMfy%3=!nMP)YR2O^pAI*%w zFwCeyP*|&3^JxBzl0dTCr^DJQRep0u4zFx@w;*MYFbePpo z38UMr(1*N@(-Lu;VuRdeG#Qe+dA}>)@=HXEsG@~RUEe8coL@wvJxcpduN?ii0Up|0 zn5d+#IN9UuS^6KTYrI>S7qVo&Fsj^MxnAXo8}U80rHec!uv@#^8^dg>=uYNlUlA`2 z%~%Dr08^6A%iG+7G)$0l>7sBcSzL5k06KH7p%@P5B7p9B*ZXibk5%h^fpEa1*1t;r%^`6WF zQ2Q$TzI}m0pg#mfvVuTALBH(mr#_ilBZ;r%AA^i)CZf4`7*>NUz0^%27~bPw8gNXJ zI(2SOP%qhIQnsnwXN}dYN+=xS?M*Cw#jqX6SP%XGK~xvRkH4b5^c{8$13(o4!^)?2 za?=~?&}ieDOd3uX!tMH&$A8-5Qxz-!GP*ux?iD(5+0^!}--#cfQk*-aPo*k4@nLY1 zE-R&XECkOXH+D!{&Ki=!3zbsbsZ~^Zp;&1 zM~=C-`=1u+)!397!s|f(XebCUnGBLUETsq+r)Ii#a@EBkKaplZ(ZOQ?A{WovVcdjB zd_l6@*;aNJ8J`&bpHAe}52b0Dyn#0E2fo^e1p;FGF9Hg7j?N~=f=)6PPX8B>kgTeu zv?+%AwZakL07=FsJ18srXN4VuqNvEio-!D*Vk7_+Wg}i!Y%NNGSXwy+GW$&0PmF>; zkHN!SProGl?6JMKeDO>}64GE%#B;wPR0tW@@Bn+6^SmiJK`OrC^Ia3+e~J~ zbSi*nniaDKjW~qITdR>N4!1LlY?60b(Pq)GO@eTC$*1{pEkjoq+I7tK(yxVDi7&ng z3(mK$WiXz>J*C5vb<%2cR-#W^A^*HVrIJd~q0TFp=qkrd-`JzZROy;m`QJwumaZGD zmX*Ws+Uf>29UXS4MJ2JiGWHP*u9`gT1Pz1ru>E$^uttA#?K%9O?s@E_^X`aAuJdA{ zx5!sZ+jOGm;TU%pp_wn**iLaZWbc8SU{s z5brc$q+;BjAvNTj!@3ZyC6>Z4s^AwWTNqw>rx)zMzio!C*Oof>ci@GI&ZijxF-yt9 z8mJeOS4@(3I2^Knk3`y9E5(0K8G+S)~s){Zxiz~1Mj;< zKT<^C4QlfT-6=_z^a~UTl`M`JC#m~uo*|MmLW>2Y7T>P|J1_G*bqi1b>-thhn^=Mg zX9Q9sE~fz-rfLL)CcSE>(BoICMbXfs=oSf#!J-nk&^`mHADpuB)>A?* zLyRKi+A&fz=u_ICnI|x30OTnrIin-8lIrK^AoHGdO%Ke?TLu!h}s?bPMkxOSpR$W z?B>mVPjFH}8mYYD{#|YG%R9)|7yZ}QZ`1{eL-ZkHHj=-Ra#6%Zul(^oirDyELIm5g z*N`Xh^M5_=F7kQCAhJBB6b{pQDxJ3kzm%D`&Y}lC`U1^odk&&}cZx+_ogL#s66v>- zoh@=H&RFOW(_Xr980qJo>|iGUXVT_>%Wxa%fC2uW3|ICe@6G+cli_6lmqAC>ziK!t zh+p)t^^zSn<}gjmnwFxlIE1KHHkqihNS35?)J$uE)tPm0FqzwJ>sR$XXPtcSW~W@x zynOE7&vEyhZf@JA@<+I7;#H z${}hmXLnw2kPX>$EK@S5X-Lr{UUe5-R`aE)jU$eJsinWgy%&TUzA-X1_st-{iVZN5<#z^v;@ znqU3E`)A1@)c!(v#vV2~Y{P2Nndqntf&BCHnn1YcddVN07Z1px6h3uVM7z{Zy9fBx z*g=&&J*PfgGndfK0~^^kO%`F*weP4t_vO-qESD1%6Q@VPH=7x!Mua2vBzu$yv3F_u zR92`FY>|$HJ0sdOkc6mqqC+e$LSE6f!0=))&Iqjc1iPIx-3?k=hHdmxuaJ2@*?3g; zf0B;h<2Fmt()SI$DzIw*wkB^0Dwbn?)L4{<$mEjM_mnQdu|Qi6o;d1r6v3GclsGk2 z`^X~HA$otm?I|X=_<;_dM;NduYp-1i z`)Y0Yz!c^dWZuv+S4jBD^x+O(=T8pA;p|a88)tk!1D-ifVr8y8K3M`AiY4&GKrGP4 z8ON?5XowaQ(UE^568RE6fEDz{QwKy6&(1-%#FBCHWtg`KwLrW=@APT<6}Drm0(vHX z@1)K8CNp_3;(oRUNuP;HtgjOdwG`=kZy<;2qXL_7CaG$R<}!r4(h2Knd8RfYgnlKj z7Tq#mdv=TJ*q~#OMpdDW#Ha=ZC27hFM4V!!zWp(0s^%JT7Ru(xO7;TQ&9p+8poDVlQ`?zJko^MI+57sB(ae`VGx4uYqFZ`PU&LiJuv z<$>C|gHU^bw{K`leZWw?dZw_LG?Tfs!}x}%z$Jcbz4-nQc=iq%?FZ<847@nQ)VYyJg?kiShf8?GC)0>*|Z2@N`hRp9Rwj`|T1rIv>%!XaoE zT@+HST*q|8o@mPvkdlRveEoPQ+)7&cHbQBb*11#D9eZj|v$EemZ&&dED#_5rh%E8J zD1mU?aU?+#+Dzl>s|Hu<2lSMT592<$l6Zdk13x@_PDq?p8kc_{AyVt*o?KC0{d&*a zP3sRGTa}x&6kr9Is4Zl6T<|@E+uZwLF;6=;HjH(r&_u%LAOx=i+&3bG!7s7;W{dY( zc9HrdnuI1U+7lg=Rti`PMEe~{>pRv=1#zlc@+m%K7PN2r1g)cSR1=s8*p%!!ZWzoI z1HOeU^ioMi$zpZ|0xp~B(7T*}2F=>X=ibRII2UZ`(mHcUzX~P;`Q|U^$Oe4UIRNsFtIi-I%RK$~#~`16Fk+`8q^_xznegUo!Y>g<>?3 zn1nwXV_FbuU9Qpyk!UK(kdV}t@B4&6Eia7esrkHIZ{&ZIUWhyJ>nnG$=*#;jZYpadtBFX#nBDvctA zT=SE=fEC~3)4-+#^^CZgr4>3dN|z>y{3|lgTeN61Pj3rAh)UpIX&OEMbKNfFkkI6v zFu`bXEZbN0C2PhT_a>49Ohd^lZk8Ljz+))%89@FZ-AqU)-9EombAU;pMY>JA{;+lC z&?bJ%zD3v>oMvYK7JbBd$%#lRmW+HiXOFfl$Jta%*L$@~MKt7am3Tuvu znwjQGFX@m|gPeVnhEX<261u6B$#j#LJtCN3^k4m8{`1w9zu?-BL;(O$l>z`@_-`)n z|C>(wr z7QSrUsA%SiV7{NH*szGKg)i!{sI0Eh?(E#Y?znd8+*E1ZXtq?<-2K<%IGfeZ*dE9z zzNPJRwDs6_`uV;4<8_*Ko5e}%^EIRhP=~DhuvhMu0j6?zj!QO-31i8<&+1@n+#8LCgM`Lrhm%cVOK7xJG8ty2)<<1yszG4T(J9}V6 zNm`A&6|%`}H5sgKl8S?QGZmcf))8|3B_c}GvR9+Ug*7|B$56wbn)t}Zo=f1#e*UC~ z=HkdZ7`?vLqB)2QNA>q>Y3tHo`^@kj&2AGH?xQ|75dbYPsv$5E=SzndjrNFms9Il! zFw4rxP-*Z_NLT9QC)@h$xG-)PI`3$^B-=X|DHvOOQlf~A*oE;MNXdZ%&5OBPFqp>N zXfUPvx-zEDwZBSNh-J^%cypH4=y)pII|J#erCVSKE8$TqCPD7%ZRgmT4j%L~!CADw zAA-f5=b%1OR9u2>kv3OLI%N6|R?koIv6(22B0j@%>+>$Z4oENeZIQM~ zaHmf|?j;m`VUvm$>x%7_zrfOvPzRe)a%*VNR<>G^epuo@f^_gPZb0!YwY(N>eBXk0 zSl<8Q{|TIaFnC^|nM@=$60AuFD$N~1p-<2E$PhI}>++{9AYTz$=?I7!tDm1MRJc7M z?X2zMc~-9Z3{j3d^y^v40iAl z9~qXq+S~9Bu#<<`Y#Eo6+CL6`ra#^?NO1?Z9E=foJ*|ozBA2|2JI;sw$ufcS8!?Nm z*PT&==?##}hAsN5%f=x4LWuDJ(3z9*O5##M1w7L*Y~W5%O>QtON9t`1jiX*j=Vcf0 zHQ`g1>}=@5N!p1suxxw|WyVa{e9n;2PHU2Q8W$3!qA4PD*?ot$5)qf8@dsXCT_nOl zCLWb*MUFJxhXzS@3|rpBZsdwqy?+~Aa)JSOWd^zmkFhP=_}nHR<8XFEv05P7=zfVq zZaQP+!Zym) z?yf-RHpWU{6uqfcL1ApHB#5{H*#OF@Vr?%8G2xc`XgsA({vhr%g+!8~Dt{U!@!27N zWO$e`9a=0kle7}MiAO7GBL~0f_~ze%irJ%}(o9%m7J{nAidfCK`u^Y+gEKB8Rozml zrMhT?!1{P&BAcnIqs%HMP(l&1y=O&qyqNCbI4s@^#k;)?MtqCM!5yB$eg_CYobX1% zn$j*W<%OvFC{y;vy2PeC3^AOJS!w&Vo3ygUmpNb@2t@$QpLDuZQNH_n;=xHUhsvFw zVnNz+iaf#G+D$BaDmO)Z$@)H{uvbMo9M@xf09$OGXcJAsAp&=KGtwu%NGsj0C6H6fDN7>6pl>bK70YRLqD|BPYX zQx_{_OOW#ct>JbFu6c(SAiR7_+@^&$dAxwr&z=0$8@dMu=dPKALHNw`?-HDkPUSijD=O z{cX0!%4aEQLu^J~jS3taX%wx((yOY6!nwfNylJ9WpB$O0#|tFFc>Jd3kxR>~fq&GJk;3sLYb3 zW@4KYq6u%Z$*SRMmouxN z7GuARw?NTR0uB}W;tLqB;uy>9qOyV{%Y6qqK*A< zuQ78=jL{v=bnXK2sUD=ZqYQ>CZ&w@5T^BuE*;npT4g~;a?vfs@-RH-#4Q+M);@HVQ z#P5o(qiUY37J>7Jh(_fM(K*8BfZflII-`-f`9(NzdjIq;5EQGL z>#p4KWURAHCdY){X>xRd)1Kc^VK3ipa`1$)BUi40Fmq(V?Ev$ma-td^=x}_c?DvE? zGJA=Q-tM_NyJ7eg3{u`H;=J?=17pEmzR~Se?GthEM8uxIvB6%t0gJ+?#2y>vAIdub zx}kgvhvJr;Nxub#$e!5&_!J+~zeHc|zXC(*to}OJHpwag-u8KNcmd?%XIWiclA?&X zmPa8XZf2dhrJMm4iAO zg)Z?01Mm1G8S+V^`SW|^#}p62%$NjtxPdN5c{ArrPy1l-mq`d#JO}a)qv!hEN+3jc z-5$deWoK%{FhxTZ>hMOJ$X5)q;(($RL8QVvjR4R}+SgT{<@7PS@n2hw> zB&e~5CyT13@`cI8^Ym!g^NGJ6FEM$ELrIO8 z?j#>#Fv7keuGqd?=KZ7YWd5ROwqX?T?(titE#$u)%8nIFhv%T>2lEd@3F8*_rLsxxoWGMvj-K4oZ zB&jE@lPQm$JZ}wF4O*{BtpPK{AGWq92)*k{KldRg+Z5Xs6X=YU=29r?W>PG|-zTmL zi-W2uP~u8O)z~^Y194L7>MuNa4U<_}R~Q-@Y#iP4K*f7qWP{lgX7`bH3PxRo@#H+? zudoIJZW@SWVwWcTE(2-Qm=`&LJYW7`^9C47Td^g1&C}*L;VHBZ2eWs=mi+KfX%Pn2 z0*K8XxXuf`0XBdIFlKPHZ(YX+SSz%A90E-t0}h+r762|w{5=}JAi>6^xNSjlR!l%T zDF^6D^x%;srMoCSfK`!^CeUiGtjGK0dXEOr|7wsZk9koyda-^$`7Fa7E{U4LiMo2c zhH8Qb(k4iMY+e57C}5OIYkxp6_v;J&s09zGyW0W%0o>6iK9NB*4?m_mOAg4YSb_40 z59_EOHVu$d|8LVE_L-jqVQa`l<-V5wYC5nLEOP(w9Xp^pIEo#F7w+3?%k_fF3{D;g za=YX{0|NzIM%WkS*a7*_Vserrq)dvUtm1|;@pKYGG6PL;rShz$(k!il?1>E`n*&dX z7EDd?&l}IWKB7Agg1CJr_JHKs_3v-?;+r%Fc>7b@loJE(@vNUtd|xno45)e=7UUTB z+K#!2FQlCIFc(Zr%#?cz8m>4Tky^~8qTm%Sx(E~!7gW4BQy0U5H zM%mS`Sjs)~`k|Fa17S9ozQr(j79C)4XmEtvtR$75GaGm-6b^?M&W#wrq;+70wb*np zXYfd8(THZ45Gl9h*dq?jY9d|rw!BP+td+GZO~uhExRh*&UA3Q_jf)bz1TpZ;wzRW4 zp)1@nJ8;$8XW+#@g6Cg~-8XE9HQz^&?_WvK2Oz)kta_hZW21FmOQ)GZn}T1Dw4aV~ zgj^mP*&Gz|83-cN=}j?5>DacYGmXBO)<|9geUT9~1%{x+f2KkVQire*hc~Gs-J&Dy z=jziV<{S3Wma{YyGz$u8?zMD|mE=eW+KDkdtFjFrjh%L`I7+Ui$Ul1 z?ST?EaS5DdN59RE|KBuTD>23viUT)k(g5Uqf4L&%+^%!6s8E~I0qwX5|3sdD%0{t@ zutWtxu`;Y&d1#5kzygK7IU-F%9QqWufTMNHJM_WylLIl!(j(58L31n_;O~%NO56EVx1UkTT=OVM0yD3eXEE z4nyT}1CrPWPA~gJ?>%H{Ph zA}%os%{9_v)+IOH?>%#JBgvbP3SKG0#XrT(@fgNyDHudvm&7qmT;OPrsTWJiv3 z_`O1mf(b2#2E7wC92%;Hz^VmfGUZ{h7{D^^8?nKaR%r9!$%Nb@fx&uo0_PCHW+CGr z_raNk8m(R_11(cx9Kc_O-f?ly7QVWjx|S8sC%ptDybzI8tBPZ(ETkzajw~-tT*-i} zj?(4seW#(jSoOUElvK|5hTQHSo%ND@A>{4U52&9}^?;oyqjLPxtYp*<;cDS{$Rzg> zcEO1SMY?iH%5pkVRoPlv;+|Jt@w)J)b~Lh7S+MMCz#wcuC-Obmk^1y0eGXY5%xt38 zL?A~v*jVl0uYd?x^{LC1Yh^lgL4>373Mpg5?G(kOFmYQzI_n;0tJBe5CB3mWv**Z_~=NM&5I;N08z@M)QMRmdKdfm3OT+S*=E zDTUq{L>LjisKvcOd?*mO#LtEsjf%94Au^_y6ZA7HDF#_om02b%_^SPIEF%@R z{nX^M@B~nEnljX~38gJEtMf$jD9HT=6^%!I^I~`deUorj z#{-36U8z#HsV?zY)MB973uBmG2K?zwUwxn{d#SY?>mjKprfkm+_OHlq)urQRX<4Kfd7W^ zp{6#EPdTa^iqK~xQ9lAg1#(FG!+v*5aS#)oL;l5kCTp0~i$MF0>O)%ZDsjaqw)lJF zvkONB1f@*mbTrtq5S=owQN76snWc$XFwlYbC`8OM)ep0qwuXu=#>-+N_x*iS$QE|M zj}zhUXC;Aq;Dqe}p3-|S8CuCRo8=OGe0pLcb8pfLe0suUqXu^+> z^G~9LgLT7Et})p=j+?5)4!^^iW77lVDBThX)OYl7JJYci<`?@pTWR@vzja{5M=zWD zx@W}~&oNJ4_pZ_osSD}LHRLIwLN9~3cgkb~xtjMU5eCXBIKH~YV1#G;`%0dNrJOY! z9u#=47&vXhUxY~qxwgUtqysl);o>!9P{Ygt45t^Z?VGYZfZl|G*AIt{;qaP>1AVnb zQ5LUM!EvoKa~d*MP$9_76xlQSZ9u&F}5{5+t>8gVSLexf4!|0ShY2ci8C)XOd59} zP~4^pn%;OAQ7S(CWai?sX$hy%G>cp8?UL|Pt#X}ckNL1*d6QJKeq%Vd-~-&kl`Zrz ze14VWR*Iwnto_dE)b(|U0SoxZ!wx5ga9irns@js zQ&D>N=uH0LhRr9yqiM7vdOXl|UocgZkhYDJs1 zWR&RHu0|_l3b#s*ps{?jP>pI>m}RHKv1*57Q$_1j?Nk9yWh3koJ(11s(7?I8K}cup zH+p#^OS&695Y0ORZ^I2H_d*LunSAkBSm1j~xAZ`vL727Bg8cGEvd2hHaorwD_`FWNExN$oP&X;d=)_MnRX zYMt`^H&eSJ`p#}H#t!C2#)@X<*8fkUS9MbcNgjE-lp4C4EF$8dSol~0zI+SWd@(4J zIEW%-MZ}wa@kI`_lyTZABu~~W3~#SemN=tqmggP8CrEb0dj^A3aWqLMTH0eKqw%$> zdj)cwT-Vp<4H&=?9*!T5N~{hY5O4EV+%A{TR$v~PQM?Z?dkPV}>KsHu55L&#sa|

    yO++BToB4i-vdeE=ER0*6|!Mz)q^1?&Dm_CR^dr(^0d?(5}MIvRqW3fYj zVSuQ;i$F6JY)S4{2eLHj064^=TsPHsv9`58bIfX(aor8^y*R7548%h04ggPO7|8!y zTDou~gF=-8S(-|iG!v860%_lGj)NMDiPq4ckFFY-dA$jmsV;X-L+1K7RV0<%Y+%LN z8mo1Gr8|>AE#tb5y;IMmNIqYsAYbP!yy&FJg7T|z5|$kvqvkbUdW$$F)E&@8It^j8 zRco@o8yyNx38r>m=+t6jzimlKw%^9iT$2Wi#jsh-car9+)l~AY<^02XRLhk--8}`G z#w2pQDSbB8H$yg+K}!$g;Gv`%dQK*9bwS6-{Lo>^ziD&oOZX5G6GL7SSK=}y zz7z|xGhtMw!_{E~O%JLYx?wV#LU@`IZKoIk8DC(XjU^ zM1k42d`e!#$ncG#|;_29F%3^GzRb7Q;MZFoB0>#*32_PS+vedID1*RZXO@-}JICDFh-`}nm)xSjJuOI2c zJi#kX^&w{X@6i7LQsRGPsSO{Gk&%84%=drmExiA&7xF)PPLBVp9{!~Zk}~q>52-bS zIEMmFu>^I1+Gd>EfUulcRnnS-nMc2hT;zcfLlID-RJIg+SH5kLWxGa-q_&sRF5fO6 z9$#|A{?eFD=3on(v*%5pn|?LROZluAl((zOO(RX8uAgK%h*(D6$V>!RN1N96F#2O zwe(`D7aj5oRG{p-)fOrMTu6#*`+>h=X%VoY}QX7c8mjEYzBm z)2lF=wdOBrmC5>Hl{;(bA;X3zFxEhxZ9CXo$9s2I6H+D-O`^ebS4ErHnk$pa!!?>h zoPS*^Hd8xWWXY4!QMY|U6sSwlB3;dy(i1x!5{oc2gey0=L~s^@ivQ3}5tFThl%B_< zOB0&bTyk|t29zJUvZnq~RK83pR#t}9a}QDHx!W#d5ydU;$WlM`fvlA2NK(6YrYo?a zGkXdJK4>yl!MabAu6p^4j{rH=q)(@18!fW4LiK%3W6DUJV1$mKWU6@MXA?fM-}0i@ zv#R;3F4$x5^lXrEov_2SS;1LCZgJhuG$^cN!j=n;|0@Iv`Jj!Ib8~Zux}|kj27Z9x zVdo*q(C2|FrUTWr9BjZ3$FpxVOLr8w0}0sAxGhY3s&r<;Otg;_^1er~m0*D};&t~1 z@eJutM3$5Zbzz^sq2O|&P`aZO2hPH(@3mf~S;12I*g91<8^b-Ej!1>UJQvJD>=7VV zHrW;{Ys?i1#_(4zjy~Lyp_{w*-auzWSnJqCWkk?xB<>E+g;QtXl%c0Dm7xZI6s4rC zeMnjN_@k8V9GUhnIt?ffGKtr)9gQC?30DCTlbjsJ2uCj^1v7QGk$HtW^?4Vo_G3dw zN%H7D;mD}x}K?ciY!ZRU*&>kJ$Z;j{$ zZ0l13#+7MSryDM3ulC2O=g>&kEQ^p$&fg#w2klBnihG#CAkC|yI1ugpc7^WE7Cg#j z(-C|hJXuLXFbVdrVr+j7{u8=)=Gjk7#Rr`L%S`5a?AoZ$z@rkbONSxyD5gUoo6G?; z>Bff6!^TM2wedtKoecYiHO*TJRLoz+Oz>YpzRu`3D8j2%RD&fV5qrdOmf!P3OOmKp zutU?hwn6&SCs{O!Vqs>O6QOVD(6$*ZHB^PZCm-Nb%;GzH;zooweelX-}1c|;YnG*vd zWzha0JOt)MMwaB< zlzS*5NpNY&4`R2)ny`^ZVmJq4Uy=mxP88z7yx0*H$HUX^_p(LXJIJB#E9TbpTYWYA zBeR#?4UXk~nT0>8W?poA03sn;_Dv_jCZRe=R}t;>=aOv$?|*jAC8N1Ww)`c^)P9Y` zMgEWW+y5=Up`xjZq>B7KGj1%#fKMpg{%jB!Vuv9-FCiciuD9rbAb2le$w@p)N0;6| zKBWA)#XG;+^VD3U>@*)ad0Ml)JO8s6=#rZlWE`Xb3CC`l>;3Y~>3KVzTkG>{AP&7u zHjoyskIG7THdLB0F?@%?vr1Q*ugY+G+<>1RNxwCepk-sO7L$*nJ7z3Am`%1}uS)ZJ z)KIZ638PCd1ZCqs`6RXbjNWm=G9_9f|4h9(cJrVJ9p9zwAk}*T5z^xwyg)R`SPmWD z07r1$r_UTW6Bub^g~0*OnQc0Tzb8 z<9m-aCR=fEfxjmchKWhzu}6I^i?vnhsiNf8@-0LE>dsiHk;Ibx1ftPRQc3F*fnYuz zeXG{1xw*m^4a7N;Wjjwn)Gx0_3biz*MmsXQBaB;=fF*g;?fOn7k+`GLvP}^DTW!D3E3H(OV7-Avpfd(>Edj(lS4wSlypH~ zUvTvA0;W~Skbb3%D26!>EUuXyMhy-INBU4oOelT@;6-uyVG4cnl+PS)npPu!hKA=T zgdjda<)c&~?rY2`D)Y+2Lf`n`@-B<7mA|0UrI5i@QwvOH^)COMn9qCYXPTTF8}NIc zlV`XY_R0p=e|(rIDiiKZEpmY!L_({wKB3WmSht|J!~Y?~-3d(@&|li9JH+ftT~U8- z?bT;66>a3`bJ+uPl56GBI-x_~;`8M?U!WJv!Vk|&Q!M0<006 zhlC%JwftGizM@W$lri{td|14pxIVZ* zT>knzVe&acht*ITJImOl)09HFpuWtA43Y+CZ)W zE65APQgI3|{3t_hLVNBXtWCQl6nD_1r$Fi7J9zVqRdpDOc~LyVqt?M=yMwa!7pK}v z9!H&b^g-_=PIr@MCx>DSKK{DO>!ji}i95|HQ0o5tl_cbee}vWT{I+* zmD|z?vL~yM-;mi!E2LK>DAIX3zhtLHZ;T^F9stA%J$#BUw5?$n+jWyE{5#nH7(T9K zjs|DI0{{&C(y^@nC)?To%j-b6VU0Tb!~(SKIS9)qiD5JlE^_euAq(R)Ny#^nAu5pF zBZ`ZMoQY}pSz3_5=lO$>vrq4HxFC|cEH+6TG=(R!g=gx-Q->xH4%>UI)i1Kdc&?s% z=bn4F)oimiM)m^&>-qU@Uo5tArnx`v{KU9FnxxS7d_S84=yA@h@&SGEh4=>fChX;s zyrE%a-PJODVSRN1{}2rN4)~4>-B&>Wz|@Z4@!oNKzK2Blk?AKxJD=&nk$ScfSC!}| zS?I%bs8@z?8(~<=>sK2OfnE}8(HL^q#MS>%ZCI($0Iw7OW1&yPLcg$#=&=^d%uqF& zscvaa-2=2*KT3_bqXDI(H9Nvmw<5B#K^zFgnkdjFEKm!54Xwf3Lg&JxfIz}>l3J%6 zqP_NaUj@Tv5EZm#J9?A&O3%XD^oVoKkTm^|tN0rEAWv8H^OZ^LCdpNT9h|^+8|vzE zm`^Q>Gd^lAzZ__RJoOHmJQ4)8KmN7sMLaomOr2Gm>%p1Y?Ou6&{dXU_z~Y{|vy8PY zrbkgXEem7ih%yl>X$tef<27BrA&cMBWr<3sbY72SW9W>U)JIx;1ChgfYOi{ zSQ+Rju)pvw&>@D5*NgRQPC}NYCsI@rwPHe0Sl2*|jN*ay=&{2v))r(K^iM%1@STIj zvlIX|`Vx{s&1Xrt*)sA(S2_V<;Q*(qD4kgPsjbH173`k|ibng#fgVa&GBZIrUtp*(4&K9w~%>L7wVZTjf(iejPSYRftBFAh|GG7{m$sEIWXi8)xk&F?=I|q<3_TE%D-Un7lY#%gv?Lu)v`}`2Ivg;fkU!mNF}qOAvux#<1v`9Qi%(j064Z%@7GFUXHWdKznfOpWxD+7qe@mYyTPz$ibwLQi&a1fXa#5uZ!1|>YeEsvP_S5U z%MY1_DR1l&D*R71#1rqKo8N{9X}o zDalr(U3-_2Mhvd8&^d#($x2(CPD<$G(CGppeFJc2lA?}_;=a|Bob;77y9h{~y+|p1 z&-iA-t%8kq4ne)34dt=VSeFF(`N@RK9|fFM#3DEWRd!be=SCq{zF1Od%llT;qZYIG z$$uMGT2Pf>_ADu9{lCeRh6E0>bJgwdzo2m7fg;Kv~p~bwkncgDXFyu@9?$TaYLzfVi&t> zOv4_r#6-QMbbb0K9>(t)G`|lr$(DPiAu(N7ft!r`{T&zdF9sFZ9G53jFEz)a{6R`!^G3Z zv3S)2v%HNHqxShB>M-hYo^Q`5om2X@T-tQc_z{JHPm)W2bg%Zyhrym*A&qTtCA2WK zHHB1L+v9Vj8X8VH_ZOBxY`j{AWSpWKk#e%xLJPgW@6Js}60c@qiX(QEFj^3H44c84 zYc#FTAp+OE2bhr20S_X+kkN&>;$Mx~`giTx!n>q$P#R-`pxWgIbwl2a@@T}ir}PH> zg9N?v1HAQ*6?c>CcRlb63Pt9M3aol8M1&=0iy{JVrDYeSBQA_OMgSSr%c96lP$$2m z(^9mdF(FgRfY~iY3JD-E z07>09hZsEiL4>1(oZ3fTlvcd6$tp372rxxw!O@AoqY7wUyO8O3yo(4x$dad%;IfZ0 zZ}y`H0o{YoE_`5wtOFAH2KS?clp1gb5z$B2m-XTKcR=arZ^ zvaLK%0g(k~*;tjo$1TRGs=4 zevOY!_EXv3PK(?%HU3lY>7e&8*9X9fS2N4Y?MxJdudaFzo(Xm1(&G8{(Uk0QX#Wf- zEZv-;2bFlS9|ecE0&24RUKPvQdXzduwpPzlG41$r^=iM(wpcn-p}*bMC({Mwk`fT% z4Ks1925Vp*!XpvdiC(P|*^S6k7(5Fz8ntf}l*v$w zzz|6<+Y^wntP=~bD#8>V)rrLVYn;D z#|}luUQ8_;b)pozMR*R;12umlS9ISd2nL^}lS97MG3FwT;aqV|lqf{9QsdxJUx{0^A0=kEl|$DXz@_nI#ZBllaz? zY}W$gb->idAL_v-IWXIwy>!TkApkEkw+Yj#knfDfUj_!(1tpWP*IWlJgMbfKCNwX^ z{nuM;?iY_x#I7;v@5a)~>NuxR>g@TWFt?8d$MNq_wci`XVqr}x`IHSe(HCi&yFYqS zC{1>*ErT8v(U5@P6FRk8vtd`V0q03au%XhrA+TnJ>*4nBA#++?;2Tqt$1=NE1w}NW z1QMbmE)NnRIs6=Z6uF+xJAjVfvX)3n0kuTWSrb16EuDa2#eg(Q&insV& zFo1{n>~|1)`ny6lirHA_lU&zv*6m-{;iv~AfoqD}7wgc+IeiXz2l~e?5TL6ca7v?b z$-&|5Je`1^k=P_;XeurZqaeKm@wG2hJiM(O*oHucc?s`MiC0nAyF<|;sU~3S_@(W# z(NN$F*~wF@NbTA_c2jYB#|S{SBtsf|FO}@07kY9Z0`N<54n}w1V%HcF*#azR<4?W| zUl~r_l1VjivsRZeUxL(mNO#lU6Z3J}P#HEjw6f52)2N-2ptv}AL_`4r0WmS~UjsOT zeVqio2XEGU#^_hUpnu#=4pZQ4VzwjADbRb9*XNU3#>2#cuLxFq@Qd893!6sYJ~LlD zk?fLG&}C9nVE=lccNp;8!})w?QxJ^~UIw3B60Sb?fiTGZqq*@%aFNOP1GP>;Mf$Aeo4P(RVLxbM%_78YX!hMr>s31eWb^}60`%isQF+;qnq3Rwmt11eT zJ&>BQ@Pd!4YR&(s=muxfH0wO*g3RIzeo;;4vcfehjBXr8o!~_IS$ZdtVx;HP1`6G% z#8KE+1(-PTQFiE2uJpks<%3z~E?*YHCP0KUbvGIy-e z@(zTJuAe#Nn9RCdY=8K1eEdP%HKemrp zvMA}XyD_{Io=6c(9{QI=pNr3EUGU3kLV-EW^$b=(ks8lCCW)S!!xU-RKKz5cXKv>v zZ2Q-=_rjQRX)aph3ADkNuxCp0#tz}56HqH*2SMVNP#x$qsVs}IGkMokCWpP1ol~k; zIjez)NI6;~$f;Srxgb(u2nFG)n6(T0+%}4egDWY|To~%#J!S}bNxiOHcnX+~+kU0v z!DxUse(uIV`Qc&prH!0Fi1DR9i{MeK_Zpr;@eh@=)%H&dZC}il+m7wwnawLO!+ z&vy7#k2F;Q))FR)^W{GygceNho>KkOydQV9{Z81X6uzDgUm-xY3f=76H?#30KI0@-y}9Sx-=RpMO^Afey4lx`+l~HmmqHQ4glA>UU;|o zs+xTC(@o5gE4Y{M()vrg1-rd4y@tPr;Pnd{CRO7RP_4Z8{Pgg^|{(O3%h%7-B(qH)E#LVTH;68ZYEdTks7Lrx@T0;7P*X> zFNE*#t}l$Q;O+6!ho;95&h*;Th9w0?TC`4;zZzX=2F8{0T1M0Ly4$6rCy+0^{gxkb+#JxD7-^X?x#sRZ z-P#@1_O$)^`u7b5FtTqCpP`o#n2!IZhINY1pT|xx7QiCehleYH1WrZ9E|Et>KK9g3 zV_eoTV=8oYE=8fPBlTF(cT+v%*FuC0F-6)Kfjmtqp;IIeO(HxZf^4o5StF59Q-6_E zV8Qe%g~psO)@-b^yIWWhS6Gh2AAxk{a)5^%!dT2q)A$9k#kdXGY z&@x>cIBM1-pVMLGQ6QC>zrZ}7Oz*yniW0LHB0|gPQR9G0e2|~VIJ0lDPE!FVVC_mF zUP5VQE%6{=s1&LgQ7kzfNNT0u!^rm$87aEqxX|#5K?Yx2r<3*FwlZOtO%RFA5T)C# z@v%mRGnx^d=i<*ta_hF1A8dCbSy#j#!DV_{<`O z2Fj{1R;f8Nmf?iO3^b-sPkdOiy$lUZIPE2Yl}ohg0Kz==_ftDqY5CirywNJMaSvP_J?y$0tG9DoZ24j6U$(&Dk&M z>%xaNz}Uv~TtE%;h}?qgpkk3{(nMqs|tYMnY1gp-$YuHjAATvFO!Dv~rFkS#I@<-6#{AfL5I-UUAe3j>F z?)y*kZe!EW5S1$br>Nj(gt}s(3u?5UQ3YNwnL!KZoW;FiL2%6c4N=DS;ad2QDfZtA zuh?F;okR2sr=C&zBZr>RL|B^MWlj*ds22h!1FWGd5I117{AaxXF`ZeU#~$AQTb&6& z`fv98|F6dIs@95F%E&%8;OlWTwICX1loI4H{_r}L)`Zq#{EC3p0{oJdHVG&xHZJy! z<<+}iAm1q2^-K4Gi?iRzz2&<&v)fiFMh)l0SZV%_H#wfSk6Dg4?X>TYy}LgEb$+P? z&XUv+^x9+2@EGjmDr=wZTXVI4$o{Ffql*G7M_y zqJp;POI$F%$hl?Zx-oS3gweD#KD{UJjof;zXMvKQiYge4DjsuKj00sKaR>9TFbB&b z+3Br68%|FGwl{T>(k~7g8k7-G*d$O`$HDq7R~9^$AI?ewZMdy2ra2I zBmal?tk04f0;D4j2&M1Dg4Q#^3gw&QwKaZ3WioppVS zfk8-9188b-Hjw}0oF7hHr@DxCJ{2x?UiKOxO5qby9aj8P>{WQjPq@T4@RpiGXYdDV zox?8K2+q8&ci;3UFZExfr4bg*Y`^ClK%Ith%zZ}BrOd8zsBeIV(mTtiVkS3wx=-Lt z_t-3~W!UC9?Vh1>6n`jvSSI)?9Vm{-4(lw>qQ$cl<{G;O7?@UqgV`V zf_dD-;Ein_hX%siG@M(3yOG`C)#rnax|`EhW5fN7I{S3Q>4s4D>C#YJy>lJ~0mpIf zS3*4XS7xpsZdN{RM_IFy3_{79%?0f>vZ`w--7w~J2=BfBZiMpB#YafxSRnG-aiHsa zROo-?IPecK{y!CKrGGgN6ltnyppVJaglnKSCiH>$V`#hy1c6$!)Cw4QrMZwhkLvtm zIG}1y^vBG=>rotQ+A5iBw#-0g5GB}Zy)mX`_{Xwgip|ek!>SNJ^V0`B9sLoO$>{!o85G$1Fu}#b z&cA>tp^!jQt6fmO{)1tglEKXA&njn%HDIvFmpf^XnryjoL31tIl|2&*$TIlcJOZ1L8h9uSf5RYfmIqZ z;CeBI-I_5Inff3NMW3(2u2tNbW88ll2i(tbSFP6u%2xg5GNOq{J8N&k1+UYX ze*n>E5oPeL)exof%6&S{zx&i&rqqgR)Rj`9$eKjsg7fspxeB_{7#=VzYx%>{pyBL! z$E4E^>x?wNIE@9^QX*J)60W9ok#1d09p~0aa>q8QsS@lD4Q7liU(r*$l1i?eX@C_J zSC8UVzby?mb*tJ1W5c3ao=Jtj`obX_jB}aDK`m@K^l4)}sOH$KOX!0O*p*>4kNo%! zbHGj;6Od|yr5^kQDE-PACzaAYW=yLJ=Cz5N zL_v;I9ytP->J<*66aWrUD7GOLD9{oz$Xv0^Ma9L`drRuV*8?%y%u@zCPr^qA{~|Tw z71x2?7LU5*A9={P;*GxDd;NCTkfM51l0Q23CHly{$1P=s{Uh&Vc#V2S8Qk?K0XHUK zOiYyL9B)7r1T&(QFl+sY7(?`i>6&j{DA6vu;nxv?Q5*Qq|DW#wpl$)pV&CV#v+)1W zec=COqjYM(eY+1N@|$*TdGQbs5cuW%rm&Agd_hD4!6fK4gG>n20|6tC7kA@Ig}Unv zF{@luu|98ZwCv_@Dz~wYXbPsFZnV_YtUa%?+^nknYva27vGuoYd$Y`Q%G>p_!`&Ul zBv{S&VAA_(%W>)}!}F5!cL?2~Z9ec>6BhWLcHuCUYt@j6YzZ+#0^uBRR8j|)@B`Z%`l70ijf-{e;H|CoC zkLIc!acX|Hx)hm>wTT!upN2a_Da`5tcyxEPZXMhq*^M%NRZNv#aFf=k_GZiHE{2L; zTx=JJT5?$07R7!Yyfw67I5)WF*XP;kn9cW<{M|R!jq+W-z|u{zwMfzloXFlsB@ax& zD+#iw`yvsVct$43wV{kuOqMxF#WoF3mrJw18_m|kM@_hp_1x7FxZ$kFbtZZ4iWY7p zNzulNr;U)gHjWfn<41GgeG1Exv?{hlNk7M);7KAI&%@k2bO7s1e|f#%+SWZ%Bzagj zcoG0`q>&~T@WpZW@e-IfR*u8hc68$lo25=mm=|ny0|lK#{!lZ4`_RlnneB8kyw(Pn z34+8Z>~R4m4xuST6(z8N2TZo&bg8T%QPBs4%!YH3OGZqIQO1)>aVq(%L8cW9x$fh; zR^keJQ%tlsclhC?4h@JNsuzDaNko`hau|8yc&XBo7j(5sy}i>F0tOs4ic?wI9QuEV zwS^QDXl>3l4Vg?@|5!$fX*{P+_|q)v+1VbU9O)`%N`)tNKQuCLE@F_Wz2WXe!p~61 zjT52U&B{i!9Ri?WjpbGscmm9rCAmBzjo;N|{l^sYEO_V8P8rSDDg{pQ75LT9AdGj&Ghe4Gq#tJ3*E5TVEtQ~Li*PW?)I{L0 zq^zVOZXItxtp-sw%<|IC`zi_rL9!qb4f`sthI|#me==rTw2n=3tY^m5+e{)* zU^ag4M7Xca)X2rrKyNjA1xalalMmu&13VUC_(d$%gMWE6Im`x}folOCU-Y zP7*R>NzHIx3((Bt;;=yzA=YG1G1oeAxuEW5Z0^(Av!SPTz;zx^(AlxAzc1B0`b(~j zwIw!I_yn@GKZC4=C&C!t(nHp3sVk((rlejB)N0*a7L-QMFvup>*(1X+~_97jgzepaU^j<%)V0Zmj!(#xwMYrj(UG? zBa)WcjYOYCME?p$X=H4P^%qz!&_bk1Qq}T$+k@8#msKe+N3+Zl&vU^_-IOqe{jRsG zuJHzoRxan9^_;v1F<4|X6dgvTt-2!@!TaJ~zb!;>emRipKK_>E8^D2vKwQe?Y?mIX z8iF4HU^iZtqZn_@GH=NqEvJxuuS#X+pN|J)nC0F{xbXT>9kz5r9?N;viZCC|I3%`s z@>UQ0X)AI#1lK75;F2aZ_0pH_ba4V+D0Iyq__iDiE?V>)5$_D)%vgcX6Qqk zx(!n#XON%^DlGPBk(KRvpnExcZBkS!l>UCG(@69#5*0^((rIOKXogYe3rcDKPhWb6 z2hC)!us~)CFNF>k)7Y1PQTS(pVG~%OiY&AnQoUge|m*sPD4li z@%W1_>Q*nP&WVTepj!EEF>`)9+2iw~nX~(=XM+oDUtn$I09hR_9g(i`w&^p&ZH-_m zJ)+xxg2D^!^jEAnb9}%MQrCUTp@~9xLPR*)nykFl3c)MUWQCRYz#~{eD|NEO$XftI zFIIz^gI2>q3MFMBF=yPki>dikO=ziKq**y~k24XYH8(Q5Sb^7vU0U8Lydeov#2rLX z-il>JDn{~Sy8UA1@d#-Le#Cv6S^mCtKHM5ST7%msqVl)gTt*_{_Lgj>$~1uPJJp|&L>I)gU%~( zo`^|_V%tObk3;?QyYA0)ec^L~+>wNFX?SvgVO(6;p9?cH_WbZj)I0)&dj=1O4}HT0By1L*#~-wi{jzB)TzGXaQBtXg=2u!mb348qoUpA zRuQ|0di@fUA`Q)Znu@H=dHzDwQ_$#ZM5E0O0K@tOKDr~&JSJ`0l(K5#H=dLzWnH}T z3h%pY$II>7z|D5G7Kf67Q92R@Hb&Xkqe~h|7_t2b3XmOK%;=a^b2^H!0@UAvXHq9S zRCO(f&vj@a7RoWOf-SbinACw+0wlE7Zwiqz+q9gn>`u@0bUxjP5(`M72EZXSzb|0N zBw9r4@I#-#HbgXda{P$nn3LbzA^ljI(kFkYdzz8Cx>A+%tcH?Difh+SUTZ4n2-UrsRS&jox&mTL6EP#2 z+gYfeN(89bu@20G*dvP4MK$OTbO7fTOAW=I%;U5Da`C{zDlIMmcRTv@w#V~hdL%Iy zQb^v1?83YOmiWoaPL&ubSz@!;fl!}9XM6_9}t*!IWHKjL4tA^Lj&C=R|C71T3zYny5 ztuyd=D6X&z(N>{K6oo)S4wxKPq=pU7}#f>5PT!6*&0ip^cQ*CkWsqAzTQ|T zA&rPfM6ux8a>C9FlV2}cpgdEDq!)#z0{3ZgqkNDKtHhL#0jiNpd{9{@^E(ec{W(#7 zSI?5yPoi=HzgM3@(@T5MERmfg1mS)LVs@UQ*9yQf{92e7?zVp=24+=wBna%mj7d7= zoWWBzOEu^&Xi3YtK52;0c@P~Y-~i7>LFA(=Kn=C6)lUZ(w#$LUc}lsrgldt6Y|(+n zB!S0!&6JG%_%tP)JC1UBdckfR7H|c$ic6$gPlg2k>8sSY$o->=$-J0Ss=`i5Qe1F= z6Gpx63NHx{Y8ChP9%VDfPh3D>W0r8wsle4NR&t2M0bMW6I<8bNeW(iome(M1Pat`F z!-Pa6<4AA@!_u1TA)OPh;RLOmDWps;Z%-{uTiv6YVq5l7l=l5YHrf2g1Z*xt(Qx`mq70L(Slzx`LQHpQ;PIbx$1h@0P>QbJK43tC|*g-l+9 z5(lhn9JDwM+O^OgYQZNhtKV8rsikBHt45`m#ezkFc%|64epMh@IaIb_(W~L>YTct* z9`<6$5TsPSD7$De-Mc^}N>3yO?3J81^klZ|gKyFcgX-)9bli`yE98cRU4o|zM-L@@ zQA0o>Y$YGOk_THWie(VN0@@s{Fix+*-owab1FA8SALB9wDUUy!hiM<>tmSiq4F+oSN_u$NOG~c5g<2I#efkfk zAqL44tDF|*&K_Rrau;5eO zfS>JZg^z~G{=C>@q`E?-x+cfDM=Kr~lQ=dCAMv7$bS#S=c?%tVC>%8oWScH$1g2)# znXpFoUC47R*Ltkj#A^`WMKxMHp-NW9rVeAbt4ewcNO=DOd~n{FAZSVgrdH9cF$30| zoe}yog0FfuLi9cQ9T}R-%~6lMq2FbO%^RY%%Ba_z$|PSC6Ok}(e0nW=V!RQ1c^Pn? z`gk@VBCa*mA_HbZgP|GjBtFS0l064K@xB1NQv<) zDaO{r=F)soqK0TSKY~T1GWkiJJ{uNVRjX`%FJ@jgTt%_HfunZ)zNT#V{sAp0@T{b> zWGb;_y6dR0qzcKtuPyMHxh)xU*Tfdx_ktk&$B3R|>a@L9(8Ojusop(%-`i;XjW80S z$I0u@#mgVsaoXS0{TL_7*5=BR`gyNJUZoV{Hx=~d>bw?9S93H?h{|%d{Z?>YdA(PX zCoz8<`2eNk;REH6h#}>j4bQz4`PLci;4rSN9>=rmMB5(QRNFM$9rS|2`!w6Pte-2vAhR02);s1cJyMn!<{7@}7?eWWNB!bkANKq2?i}C|L34M*JAG!cd*yo2lHLhy zONNMj)qN~p8K_^_6TQ{_Lhs--xd0nVK48lm$rTZA+-FoPacW0>EYKp9*^9 zav5dH`XV=0Xbj2ECMIM#DUCD%MhZDkzk(VwveqZ)kNy9}X(`SX-1iJKq-&j~#M6*>z!D740V1h)* zo^1ZZ^`k1*q69{jY$|1|IcT0nv0m5b;>zx? znmb~5qq2T8ZF$BK82)W%Ir1G*qpV`9Vc05ZdPxuI;-*ek8Vt$rg? zbmVZhXKcwkG4eP~YY8D}Nl2YU2_cYp-pgQAU!wU;! z^AvXF`0K}M|07ROuPsKiaJB{3$=j&DIiZn^Uc9STnD?x9!i!c2bhpb!v|ITg_OffS z-RZ!?mcfzEya$xCyH%%9D%?CkNXbm^Se4K9f_5zXO?G?gvorfL(eQGX|v44+>;NuH;zUh`0hV5PXKP2 z#-<$#ntZL+4X7{m^wuJ(XT@FmpGRqB0(WY__quJgOZ1xp&wzmEPfy^zYShq8WRZbe zOre^-upMI@|4<=BtPp}cM3Je;o$5_QHz|VWQBS`e+Z~x!OSbVA`~p@rPUvK=!ESw+ zk6!y+el^tBucX({sl+=bjH&L5&^xDR&%KM}4Bn-T_?ogSP_0L6h-2Nv!593%+S~Up zd4(^O9=8CQ5MMgYXYP2~pD*Q^_sQG^-4lf)oo)5IU@1tX=Q>+osNJHct2-rEok-W7 z&XDfKJ)B#m48xj+j>WCWS=rFjzDUh^KST{XEh>_S_CWYDU5?DItC3%;hx)-j9jJEK z%4S)$qN<#qf4i#4v!1c2l#D^D zI<>QyJ(D!tPpY|sEO9T*w^xazK6GDOn%C@=-F^*#5H!qO*^XHL(n(c&Dsej5ni)1v zPWl^;GIPcvVfmeeHc!Bs6q%+{Rvo*Zt%p_k^j4l`JBSa={T7` z`6vqMx2rNk9R~#J@%&{5dnWI(>hnSl6MwP#*t^rw=Ec<7*udk&SJlJ-cHVwq4jODg z){W5FP%?%w)Qb@mVX+jXebTTg=>gh3fKXB$GWaeis~$7ap<-|9^3I)8pE5*~Pkke3 zwmQ5$4_B~m+u>o!c+ulr7Ph6vvOF9YRK7pQ$Tf_o=yn*AOa2ZcmAuyx1Y{fZzz}nd zj=+$_n8CL>k`OjxJ2X^~^>@kqdV)_z`1}d5Dlo<@-im-hi=sM+JR@GJjxG}Yp)lfUeAqrJTS9J)^o)(+t*Dk%fGsmaNn!uTrP9jatt%`m6n)7(Xm7s{xv1oLfngx`pK$H$%d{JqYu0ww^d4g zuv;eCbrX1X*I%EP7?)0FZn)KWtd86>C8V1`1sKq_DfvNWvyg4afi*USZ0@e78qQ+0 zm^n9U8BrYln!&c@y-aRxzb$^tGq1t42CGCnG3s;9Hlo^nx9dD+*Ng|t024$=*!9ll z1%+0%1F1RDvb%YU7Y6Z&fAsdRKjaKb>G;4|NTF|>u27MS^)w3*gzxEtc$Lq6l|b)# zj2b<$J1Z<6um{xOg5|$u9)&Tt*C#+)0+9sTEsvNmE`HM`m^yer<45yqbP4ZFGJ^W* zOaBbtw~IQi-lqoIwCf++IN;*78=q6}qv6coCz0Y9(b!?TZyQ;W1{F80=FZY_t<KBG5eQ!D&JzuGoka(n$2-1C9R zYs)uCOq4;(Go%CXiU=c4aZQAkQ*JZN7b;5o2J-YH{WGSjszpqf#A~)ju^#NA)iSaf z*Oh|m2RQdlWMndEum>py!u}>=prlh1x6F-x_6&XkuMX2Z;-{dM)pQ?Ul$*$8UeI`i z#!B+TGcH)UmM-oOD@A0K@d~jP4~H>tPm@S5y5agdXb;;TIOz`CUmSKt7i)L=FI~X$ ze20`d?O_gGpt(V-<{tlF!!&lF;~{?E4%RNnKtOE&yG%mWcKMqN8xo z(GZZ0J#jRstrM_hmrLk4oC9147;LK@XmeW)Vson<_a&lT@$Ys_2Vw`7G(8HNvt)Ql zzk(`}A2I+T1SZr5>dvwP@_i;@+0Yft0dVES{oIlSi4hXiGyR9hvi}F<|T= zmc%wQrRWns_)=~v&z7{d=q5dJij`Tc4S+9fki9iS!60}+OM#_*@GWZPzLP=4NXsu( z;n$Wd1E$2t($cb`1V}7ocjxf36HTm)tuk47g>%A+yEIf~cyhx{hYh>5+y==AiCJ07 zs_RzKiP<;QaK9SbQV~xhrY0Zkd$?LPh2|jMB6Y^Jl)s)|qc~|CBg`{YZ)`DR>0eXnT|7 zN`W($y&2E<-zG)4X-g~k)0C+`1TK6@NSRh(U>7&u0f%Kx-pJj_77i2DqhqVG?qZ_` zlUR#(2UGFP+N;ZbP8_5!?84-Od>fyzjZAH|TsYEeV&1dn7k077Bsd*pLL75e zn?=0MoBz^kJdo>#c~opw3a*XEt?%fJ@;Zhk!whP&mx_o9?8;oi?B6!BJMs5ODcHjH zG0p9PG=UfuVyUOb96j!|N%MS-O>S#97q(#vwxKc=9zwM}DN_6Z7kXMjz3rwkLpKmZ z8RQblp8gW07B(5OMR(wb+n>0sQ%tm4Xgs9EYe+YVfqplUo_r#_{(X>Wrix5LZ74b6 zS8#gi^awYQVG*9u^kTPqC{;)|jR9sil^#c;tYH`>Orq$0Q6&0Z%mDIqnPIfWh?Aai zA{{~QOcX__MrtZ~XBioUoEMW0v2dV4+Jc=qRlK~@~G3s9z2u>56m*N97!Ai6mxixMb9YyUMizoIy0nkxqg zJnV0~F(8fPJX;Bbr~1w*Q)87mYQaNsL+Uk?&lg_LcaT<*3}9ysHH=KP%%@sE2I(yM zq3GB&+BsT+nyn`L0@2_$@=h|_fzmC>)U9v&RX1tI9jftaR+fXnOb&SIg&Jd={MnM= z<0P?mw|HMJom%ZDV94cK`hZlJXcp-)>k2->4l>M;fsgI+v4Ad*&=K%6<9GV2#gzGN zJ~;5%a-qCMX>kmUmY7DXOPB}5LlEB=q{9@EE2evwVv|R5?K57f&-O2E8z#-Nmyy6a zI_t_M9Zl>0HG%x7`BXHrR9v$9;$j9(&Zt#D_-@MTxVcDkpz$NcAZ5s_!nU~GYq_P^ zAO3I(fNZqIV zi@`AuNiqC?c&5!)zBsjp<N3S*!{~>5 zRKq|lrsWg8{gAyRm0!^cPc6e&*_AN172>*tQM%Y`stM$lexWxJ8a?ASVo#eaRK`4=txd5^vS6ru1b^1h46Y&;xc?r>5#RMo@Cb-<)H#Pl*FLl|aEdFPHi zd9#AeC?D+G3Et-s0j~5_T#=?&o>jnEqou(A!@xc_QqL3)2J0-fUFhDk!}>+b)CP+q8qXkWgolT()_$RI+fkeCDp5+E?) zDuhIgKl2ECNoWkpo$ImU{8m$)5eQ1mz9D5ntFdmO>8Wl_t;~}KYK~^zSXtS5_11OO zzLbA8DNWX%KFZYoZsBu~ZrgRG{q@v&)yclQnvCc9v&Y=P9@2-0Za0j9%1)^-UfB&g z8+v}P*!|H7b9#pvnNKqak#D%ap2sT-stZw!H>T~m8Ltaz zi2a5ZY8yTuej94P{aFWddl;e5?0DIQhjupv*#~tXravVl`+81}^gXihohMT4U8s-# z<)xg#Cu;lpqPgRV8_#FDAHPrSH$UK65wkLBg#Ydu1MhPT)OUaPiswBb#P@cn+l^uM zYqH<>`N19UbG(}V`Z_N#xzA1gw*WNK5NDncG9U11M@1PN1tqY1d=+&mJZ+LJwYlHe zLwfVQHHO(`Bu>~!jy|jfAg~BZxHzPU@MXwEjX zq2}?_%B7k}#A!h6IT`b(Oog#5Zf~BXM|;(_F`wMn%DA?+T2DF^B!f{#ZMd8GQu9%OV^@XEuA0GfQKNF4I|)O{@Jorb)#<})ZmflYmtxQvS8gbAgr zzrghcv9_vijtU`-IoMo`+3Hks>E0c6hqWb@?L$lkea6ltD~*^F&YNcGCC*yqU~5`* zA>@jbmG(upL>TUc?7Up?mK~}L`viNumlE4)VI~0u9`N?#dvIA{>dMhDj=(iwd=|md z5cdf?K*wvr6)I&$_qmvN6jy2=s`zCeR1i02(5iIX#0Aidsi5iRf zKS2R~D>8iCRkgkD~4V0>Bjbo_7wfBD>T16H^(}sRKh_V&U znk!vs)7dHL0LI2+=I@#+3`j~(AHs}GR#3$VcW@5I6>43z3Jh){rIyhyS?fw$>I4r}-U8p*OtGkQ-;5wW z$h@1SR_L8)x$W=fVxv5naK(ruZGU<)E$QUaBvET|qRl5!cEY(W!2ML3?97VtqS;lHk{ufP z==5!+M_D0PI5C%r$5gi_5KwiYq5$^+_~A`yIR@1JXoR)A2h24Y=K+qzzK@QD5aD49 zt}s%MZyPHTK!d)cqfRrxht-@ebdqT0mKn)yhp`w4g{k@A#FomUkRa0@zoE>K*J)2` zo_ekCB{C%bQh=~WhgEHgq-xk5S+4fTfDm$$V23gde|=3c@0}5XW0xPPX`kOyM}#D) zJ8xdd(1DJGJUe3dSo=ecFrHVZCvR+n5C1g4$H9=)&ZQMCNa1C4xCJDkD|}^y3=ye0 zB!Q^i+1jnMhy*pWubOhX#9ru00g-46@9m2FYbv26&WX~~e6~6rLD%Xx^kRrBp)e8Y}SQ@EpJhhLtv$FK4Y(I~sxVMq67fc%8g$R}rJ(UD1+5%r5rCVsVu0 zC_6^0ogsYwMN!QnwkC>uL5XYL_#`RHPunFz^MHx#@}{)GLZ8;R~^jbuH^M+StY!3 zLJ19VQ!EmOVY_i)OVkdS*~iuq`EEDL?os}=Ytv5)zDU5UU4|#Wlm+`sMK&iHi{2+D zh%_lwB%vE>?qp?%U{KZ&m1BZ?{_6~;MH@|Be+pU682`F2W+R9zQD6Nj$Uu9U!|4Se zJ`-PgsUMZW5R}}i{p#>IDO&Fc)1=n-y~uY;gf)uy4`ikEi3Q|5jZovy>LGv@fUP^} zd%85;|6?W0Rj_|kBIT1OyTwSzDa<|NjWMQ#uCO1Is5BV~AHT(a+`Q7?g-!(4{`N0T znbD7isgtWgc-Xo4kFGclT65uOmc%6*tTJN5Vt2lY)`%?Zk0ruicOdAH+kMHuq}WJF zPNw%^-!fpiib<+!0t$Qi{C1EQtnmlKf(V<2j{t-t-m#O3gqanMP42MdjWf2?AJO_Q z`Wf2sD5j0F8H-%@D%_M)7MUF7&U+PX^iy>#3c8})7%7Y-(rIHy@)PbQ0v~rp9;-w> zI$Y@EjVRQ@WLjr5R(j`F_JYXlPZVb`z?~_?j2w~%Gf8Gx9)`O)KGqW$tT6as{Oq&Y3ozkU%P{qyJm zUiK7Y%m+oaEnq#{w_4@m<>WZF`)zHB*V~tbM8g$6#F)VpJjjyTGx!At!pMLcPQhXang@{GI+Q?BIBKKojM6A&ApepY#F*EplA`T;Z63gPIEuAWt^>W z-Nh?ZfIWU%6COS1a^l8*gptUoh%Ppt%c$JMJFbTH+j6HiWI+A0vgW5VXk~(BGP+J; z3Hejky3!Y3`niqbu;&fmEzWsMlGAgK$E!p5Ri8f7|Ojcymz*6 z_hN1ga;I^&^T`!`&E1dZ9P8u3rsd)~N7d+g$G-=!DL5;wZ1!NN?ypyrGhc*d@hGp} zqW7kbMAa$TMO^q&U*4^+mg_G+mJ4lYsVkVqI~Hh>#k0rg_J|q2PHnQCb4kd}NVv`19wmB%;(n5{ zx3=vlAGYoME^nzHLwhQDYvg=$tCr#Z(jS+(E!$7_ViwcVs;SY!*tn#sD%G-Q*K=aJ zM5=H}R)xOQ+$3$rEj9vt8cvZ*QWNfGr;6K6Ju+5c^|#*JqFUnn?a(J|OqZi6MOP@; zW5%RT6F&!bzDatx{N`rESKk|UPm$prQgo9c5W&xRxW{|_xBZfT>`#@qJFQo~s{%D( zAfWF80m#tSn%>mb*3`e>b_Tqh|pi@`%A-jGM~i zCtK~IYPMW6#=*bz2p|O?L57XhqBAmooU7wc!QkhFgo}xSEc@vn;q!g^`uH?+15LNc z*vA_PNMwjq1zx92s=63PH7le{ABNv?;IYaDZuOxV7-}=-rhCf`6I%;Ca(SEY#Y@3| zh?bOR@Mow-^j=&8smgiAF}#zmp;7MbV9_-R+V*?DdRdFXrgme6fV`o9XK+k!caqbQV{J2`k%A%JWR&y>})9X#Md0kJ{<- z`|YG&9$^`L51Ie7fkXY@dOMCJjQ=W}q7=2|P#IBqH?^@a!O;-~-$m5)`2PTl8iEjF zgFub?lS#QYFlUuCF^@@^*H9+?=1Y z10h_uAgKPjoejXkuTMD_$3jC;Mqov_gWY0`k+R;>r&vUIVMJgi-e;Jj8jBO5K&i@3 zUGJ#xo2jQtWU+*GJhXvK z)q`wGKpyp&m{+3`>1erjJ~y;hS222*60p z%{v%x+5{Ze%4CIKixQQ{JQc=j$QKcCARnAoHuT0K1I0%~U#`(3Rvj5N_6%5# zmL`gNI|PFo<5ew1hA?L5Y{TP8R%~!$G)_IXvUoE6$a8;JI$wd?+=?P0#wMJILh&n< z!p1!|*HBW%l3Wg?N;T)I&SJ*6Bk7K!% z9_*ubE^v8JG;g64$*Kta+J`b(mVxcTSe*+o3VLa#CLq>NF@)Sg&ET6<$D-BGL4P>= z112)d!9dQZ$@ATb#`Bl3y_9htB=%)v<3HwtLPfyCI*x0UCc|^IQs@t`%Qi@)ICyAV+St%HVJE6KJp3A zHWG{FlWat>(WsA$ImN1cKBf&%taM)5oi!AR?>(+K_Q48XIP25PGYvqTUR&DpCFLGJq949Mip{xB zzcDAjLw8dqSg!TC4Bzin&S{#eC70u#b)iTMSg`rt#IdfZ=dJuOGqoLTx7(jK94{yT zc6~j+!}VZa8t3j6MQgTH5?1FH2#c$y0l+yk{l}U1ql4RF4gZQS-C4tt1>E%QUZoK^ z2<-+sSwY`w;$1yt;F0o0dw=ov{}_k&s>cD)l4RfwQkk! z&F3fp03^YgoY&6-vf=fbMK6}c|LVn)oK_ORTOWr}H^zL)>c*mi(~UWge;4nsVi4}_Ex2bO+55_u*(XpIDDjxvy!#_#)kQY1B)PU{ zv;h=xqHg_~-BS+FJc66n3Q`9y%l;Dwane6LtPeDI>Y@WI9T*IVC_(p$h#&6TscPzwZ#Y|DEpzcdZLS9QKB>ft6C9R`%Sp*WD&-K(~CQE zi4$gFICOftAma0xL`HO5s#w#Rn0|~$rV^Jt4z!|aV0CZ>5NO_R7tI9ef{T+kC$(Lb z-0z+!BadA>bj1)+Z?lbUCBI6Ce2qV=t zTC4LFLD^v`%;lQ$eeaEh8(_YL8>Av=oZ`_|H>xkk!;-$jSFmeZPklLpQ^xO!{phTm1th z|MObioy@MUhwW~pLwgSC-f6aewg@DZY(}e@^7DH$2&4nVe!9JTDf@OH`tCP|u=<7z za+h#REidm-gS8uzu70g3lNMPHJ`wZEs7PFbX_QqR-&Z~F$n*W^X`A=3eQc92f-2ne zRz%EGm`sW4T2(iCV%n_0g=0|5(Om8=9Xo-M2zL8g;SyXW+u@dW!#!j=?hj43*bh+2 zm_6Pio*tzrgNre!t&b$cN4VGukKj+>|I87DhF)1P-yBf|0R%+(-#exLMGJ|_){652 zh(6IExw*f7iGXeY1_8?j9$?oHEa`EgH~|XiA13}u`bQ^)#qUP<6vO@^a^KW9VPA*B z+I>F7+_5=*(=@wtv;FPi?F|7)QEhHE8VW9+3!5QVM-e;g)U2-|_?U~OW9C|6n7U($ zA)h$BAviLa9Tu1K6iOA^bu_uilrxSnDW1gCT8AnOISe0+pQqUXNZ4^GE{S~{Q8L$+7B`)x`8Im=FYToUpo#*g(>vl9#9fgh3v{$%O_1Px9Q!0L< z{mTd|e%wrEJeb|=RW0dx+a$X@92G%_Y1dI_zIqPFBWp)>hOMigi2e6g6rZWkIvFZE z22dW$-lyuKvGKzyqeRhn3S4-qi}{JHRlP^7KMY?6#wF+QW2L)Lb5B#&`D*_vODl$( zkD+-|qB&__Kmle8s=4SFJ&ZW9ia?eNTl=N@I3V(NXjNFNMOw-}r}uEb=PqUtzoc`k zZeN4<+l$odl$IM*+c^sNbhEX+wb28I=NUJ|FoeG*?@LxyUUKaWQwD$j%|~3PU@XffHxAr9UBj54{a&!o%MLVjou#si`NRgs(Qev)$%Dtm79UFH6@dCzVx7k1DPX@f^Gmo_8pNYk0!J}~RuX1hWHC{LtD%XQ$OElGZX?_1q+5D$> zA-q<9#rS>i^ZT!>^Y7NhKZ82|sXG6Tm**9ha&50FQ~{&)$w6I3*9Vrz2e=`U5|+Ns z1P=`Vbx}x?HXZf(^Nb)Z{Z5-^#+df}<6VA;d!06JPQtaG+x0Sw)A2I1zWeL_8B7ml z`i`N-YzLYOJn34Zzs|2BO|7J?q{vV-N*OMOwSp;yJi5dU2_d6t2bLXMd@9TkM%?A^ z2aBfZh_&ZjgbU_Th5hd{U}2Z#E5u&u{`hy9?|WGeYYq*o*D?}>>`tkB+Jsn$&Ik~4 z4LvD>OAtzM2Gcm)^3|&L_7${^;>sNk#J%;SiJ;t z>8?}fLX<&ZYfgUjhE0n_S5(ad_WYiB?XzCQ6jaU;QT@c|JNm*|+*3x)~}jOmxX+2YD7L)^1rqG|Mqvrvk$8O0vh))t9b^r92+$h9%{ znl;Lzt{E%n<&(?+rZ{)5Z^LEZ>E9C`CM@_4?@2mT99{XdY$@E@(Ab=h?RMBa2(%%3PAaFq8x zl7#jYz<}ys0-}|HsAkH)@Z3rx)k(pJ#U8;EALU+uc%KT#hI_c5K-}k-O>qS)5^>qzO(aT-9cMwVIgZ)H&vWocXPUz_C+FpSkq`0W==Hk?7oAP{TrV z)tvoJ3h_Xl<&;LO!TGSJQKGE^tUQRQq-CgbIG0@ydHRKhC65`Y7BL$N^`sc?Rkd|1 zn$psVv{X4^0~UK~JJWF6&iJ7$&Ol*RLX=??MO188X3N~905=9<4Ri0$WOU3LF3vBDpz107SH^JMY89(ed9m!a8516=1+@KpTZm~ zIwb=BK^Dwl(kGG~M%`kuhh25HfF;HqV07}r-Tjik zm65d*_7yO$+^)@s1me#mm7jr> zg}hR}E2R6Hb8LsH#Gt36$_wHIHowT&E3}Py$P7Hi|3}$7MM=VD&B9$)R+r5#+qP}n zMwhKF+qP}9%eK*F+xDsVn|IFt&0PFvX02Q+uktQ3c04;`@1504=LK801#8q29*dq@ zimlaaT=FWCM(WCFw2-Fn#ec%thR%bN?^uqq!R4!mO(@rAmMq{Zm{g{p6FEI0*T_~& z?o)&x?aL6x0H=Qi`K~qi>)BZW*o=>q{wLy9Wq}%}eR_w0)X{f0CUmHC4FQjUFbljK zOT64`o9R_-cl7TvD4WH-mvrNs*=!SH3LRoLXbQ)|7Lp2;pp;F<5ku7I-P&6CHZcYu zaI!moxwCFYpgV6RBuzGb@MeO(P7g4Q3Q?{qxqE zE%ylhmYeFfukOnRLW3Oa?_WyW6JAVCBp;K_iK(!x(XEZloS;`iW+}Fn74}NegwdU|6j;*%68ze^KW9Ij z>4&3+%j--PR5-}VvxgEK{2~0Eq{Gv0^5&M`0s%i&hR!|S$H;wQaK zeXt_=DErv^`{ifZJhg(do9S?%`Fqyxv3O~+*<$t-cYHmWg!PG191SV_n2B-Ux4L;o zj9k`mN=J5wJ?{KQ0T#oAsqTn-#{LKgGCaX80xu-cfE#ehz0+CJxbk7ajh`o+xkM9C zJ3p?2uA$Cgb^wtKt+i7vcPChg)sZ*s^KhVY0<#VCN*e--Y^aGkVp-9UB72zINwpFL zOCr7UMv)!&bgi&)5gn&32!GOBgju3im-~U;*u#i_WD_MK@O1qf7FU`YbPm1@jHxeq z{U2lTpM83T)t_JLnmfJ4Zl_IJL4v$N3oC4wPufke^hH5_L}80qepB0JpXQG%vBx^Z z2XH7HP-xf~2wu1750lJ>HQ@d@7ZcOT@zl)J>P;RWpes;*5ausG>p*XxurB@KKf1Cl;om>Y2It+$|2LXzEw*GoL z3bJ!FdIgA+z|{d?!J9BW&%ugWZ#{#Y9Z__iRLbkT*|B0Q=zYw+dRQ+sO+WWewWRJmtZf11Hiz6pdl1sIvfbfN-2h+i-}3A&Hp{ z)5#?g!xO}HE|qH;?GY_OMlMBN3Lf-r&i>erGXR2lM;%i#F`UV5^1hU#cDwbc*F|2m zFVJ5YjmDh?x2+|N87n%%BUs;~6I`zRfI3CrGAaWAv%iet?vr|R7Fggie-Jnqv`%V0$uy*>=AXLR7wV~LtI?n3lw*#HeEjG$0NZF-? zUi>5`ki1u<3dSG+*}9_ljA+7Njzl`U;JWesQ7>DMK1Sg=B(S-Q*!@;9?}2Hi5wZTe zWtsL+q{2_V_=3RnmO#n^c4TG$=abF<^%VQ7d?N(ImSTKySJr>ST?~J7SNyikEFbz{ zcD|VJwjLYnx}(gHiGI}NfUMyP+72QjlR7?;_gNdvsr?%9xsy+lU1*yS(yr+z+3u>s zpr09Z?&F3BT$jhi@8&LVpI4x*Z?9k}%Txr>ha@^FB`ErOoY6Q)w9;yTLQ2tjt_iP0 zDchj^i$aI}<=$Aq_IM*rKr5lF`%8-cLKYtY;tjb__c-RSFpw<2qOx-)x}X$ zwb~Oy-Q0(MHBq-&WcLj@4vstXsr%NveD5wN?3soW^UZicie4e~Z2Ju2z;`@LQi44N zS%6H+Ko+!Da<=PCESk+ZDCm7TUOrx0Sc=Dv|3P@2XT;XSGB7zITAcKboEfX*4c$j$n--VLaw>F9~ zChu`%h_@^H)09WKdw2V1a3f;}OAbsBbT9EEKx3uxE!CojNL?{aS+4-fVT)qs1TTB! zf4Wg|3~abQLH<=C2EZHje*1zL-+u!!#(zRg(q@hiIdH1~hm1mTw46o`7qqk{X`!>5 z7?p;TqI{{s5sCa`6{kcb31b}h#U(IQzaVg}eqXe}nq7thCQKaJb>{Bwl&Q(Z+uQv< z)-TiL(pRgST+f_INV=s+B3_x`Vy=tmn29QA5Ie;FSd2ph^=wfn5VG#r1TG$U z{y1BOwVx$HAAF_0TRe$^#K#1naQFMKaf@?@$Yp5*ixehm_N)0?rBVIEq8x4(zs>ML zG6(M_69wjUy1LqJ%rx#Du}6TYdzVut>_afQH81Wee?w;RqS`SH_;Q zeCHH?$K}dF_2@cyRZUv8eE)OAR+4v+6Ge?Bi@nyL7ikTF>lw7b8zVPDgfly5IC9Tb zJyAoy4m_(M%ZU@zNS*?KL5fA^7=Tq=GfA@KC}nrM{Dd+iB}Fp&O)qohVu}0!<9t-J z?D%u}tz!kWjOt~9-Vigf42^6iIbm`UqGnPwVPmEw0Q_Bb803`Fq|{kTdTJuq+{^@S z#2Av++~|UtK(9Vz`?+)~)=GGXM&lkIKD z#NF-w-1uQCiy_1k0MkNw?HKP`X%m{FJR{yLVe~L@ z9_*U({s68C|BWrhwJ^pAqt4ZQg>LCys^;qJ^u<<67&oL`B~P`G&-m~NefE!xyxTI} zg@=ws2VOybL9G^dfx%oVKl(=5X+qz-%_q(R#+kg1hado&3vRgw?F-*AB9btngAA6E zcLW(QLu#tI(MPrSZ?{$c2}oU6GGL%e3>3T_xOnZN+fN#R(t- zu%^_65;IkWm^nvYxiT%z5$h-CWm2@J9*LskVxy}(g+Djh*ko@YI1cMO@C}JqAvxZU5Czp6F9QE&k&+2{{&}P+8W|_mddBeKFYgeDTYv7ev^! zQ>qEKGNsw`Z!rZ?)2QyZWYc=c;vUkkOd|$fyT}!tZedFA5VM;k-H4SKzyw}FUtWO* zX*0tGpX?&^1)@Z-dEETw=>4UhA-drj0X4J8!Rcl!z?odZ4fA*d)B$f$$>Y~TsAq^M z5$p>ocMpR(s$1%`>;v4tg09g;7w-EP==}d1&@um0-AjMb7ra+Go84I(Qvza+C$bs2 z46qZwpQHe>(ieL{2aEjXyr5VgU5T`UnDJ4j!Dqvtd?V|x*i8}8ZVYxcG2KjeV@!Sj zpN1uEt$u#kkOP_FLVsE$bXJNQ>-BuVnA|xuc^q|6-71$JUDLu3Q?(0#L4saB-x(^jX6gD)Q0f$YLere2k(=FC@Ne%WpkSMA!D_`X zOC-W=X0a&eqKo)R)48IlenTl~==Si$EB0c0F{2N1Vc%quf4eOa?7~e$$z^hjmLaY) zdBu_d6q`SE-MLHHNd3Uj_F%0MdStzw=a|L6RMGfwey2`si9hxbM3`vSIL{{Y@wL+^ zvD4@u4Odee)NW&~D|oc!ZG@{4SnL+$>IHUV(WfBKfB0Y5x&BgKFX2#P(_c!x?Mtcu zKLR!X_tp4M;q?`$ndd|1261X%t!yFi3)`fcr4H2&<>7bz5f@X@S+nhhPGUTM7GYle zMkCFHi1!Bcfq~@n>w2;-Cr+eEobz#m{V{{n!KUl;nMDt?Yi=T*S*vdt}FRK32y2@DOU>H-Q zA*omUC~+OOthBV_)T*Z@dMVV+1sTB;!ZnE+65K{YfoltlUxFgin(t zg*;itjT}4E%&0EII+G*oA9+74ke$^ z>h*D(A@?zKVhLQ;*4fLWrVD335{f z-?2S%5nkTbj*byly>D?D7c4y_H|sBEF!<*G8xNFV?ba0;N}y>i>n0tf5IoCF;i&u< z_!QD_*8N4J|7{0i0;He_3$Br89cMJ);F%UDM z&|X0z)TGVIQ!e@$0i#n~G79J_#pQ7avDlzoxIuf*##tt5sl^#6D;*M^OWgU~*hp0Z zZNlt1Pokt8yEq8%Qci6n$GDASqp_Gl+}A26ALGW{-euyBSsS3-vce4L*db3!_tf*& zOf^=00wY2Gq(+}M##oYSCd)00`UcA%)w;%N?IPM1c~Vfw$wneoi}q7rVrlTJg2eK? zaJS(YhiM@nfsF^C8AB!Q3I$BddyH)X--u(bfLKYUmWJt-M9tGeMl0lxwQ; zpv0skw3syP@61$H7plY$_t%=G$XDD`O;DbG2<4}4KAC<#D)NjCN4*TvW20Myl6bX z;EcKI@y(GFGS4y?O*?OW4u+;|Hi5WA$^(Ee{#cLshkHo2L|el#pS8Gd86@}cMjJ_^ zX9*R@F;)cG#07M;R`Wdn( z7S+PgwVP_w$GMnKbRgP$(7_eyv$<2MGNnxAL@~cb%xci>Y|?dh}VEC$@hl zNLetjXVrae#60PAjh|Ro0*O9yYPr*}PYkPMGfCll=e|mt$qKWJB=1u>Q|KW{gl zaRzq`6ZEL{PgCcI)KpVbQ=hlD2b^v~rkmlNsPqfeEqyPb#~OJ)uyouDk7a|asg^P^ zN&@dZ&_4S^YTjMg0jI7RT+MURBU=wj;Lpz|nhsm?ueLQA`@kdWMPU%4T z_Lh*)x_nq+)Uln@IN|Z4q2XZGXbO-}No8Zm19G$>e^RB)6adr9@I``23H^FP-oGve6Rgu3ErYS1Ix_s68Vph-f1CHd? zf~?_v!qhpUHy1;MyOwr66^-=G1v|^)Uf?kywD1BC(!)Xk&NrIEg2#UNl}xWEIJzwu zf~U%0ps#6lLw`A=Tm;b5L8`Z$LP$jKJ=7-`Q0-<^m?*+HZ|c~8*C_!}rJVG!@yZL- zMoDnRkm5X(@U!VL7B@w%Q@qV)$2a&+gv*_=RAEFJ3tt?}1@*;Ct7uV+=p3qYjwrnG zgg^s`1e}s%Jn9y-}pOV)pB~8G0Z$EF^D=LL@5SRB^|QOea_>KL1%%Rg`xdp{{tbe zIn4+a^EIQ#4EEd1%Z!!ViAOx$E+E(MT_Ie!D^t6O*j(z}n2VAnhJ8In{?tJ?#H#m7 z*^-GNVt43CtCvs2k0?vIK2r1>%6S7dW_D-+F+j4QeHxr}AiPW@O1-2mdJUWVwO5-` zbO{NY$r>aO0FMo-#Zz)jQ$VZWT)tmo)BKJT$5B{`VLe9DACj$;2+`T9p&qT-_igSmKHe6J|A0f{I=!6eGnMc1l}v>en#VF9e{}F`Rcz6Jz$1&!8Jn#IVRJKuFZe zg!*&or~wgh_bLAKCy7IbB#Dz1Qefl$oeK?? zNgG+tQNGs?25t4bv({Q~n18XeN3yvS$wYN^V3%C|Zua;)5?0fOU3sSVu9 zdLzn-bIO{7Nfd?&*}i`0VSXTCfgmI80A+tk-i|{+rDO;<1__k4s&fG1F^&Hr%D(Q%5jMS= zhr5ttWR~2UGz;!ki%mBmoSPf4FOLpWp9NldCqx9$vxQ68v7788ubaU-v4c0q5yy?; zTnvjy@JyM+6#GLvjuD_<#9^ZLz!9HSr!))|u@g{=6DAgDj;c74C@?M4wYg4gbQRt9 z%CJlEyTm(o8~cO`_r^fmA@a+RZ&rl!Xfo=ZU7Qq}8@&t9PI% zk{XS*)@rwOWy3@*{q&7!qT}lcHpwrZCtDPh%UOIhkgxnO&P1iN{_2BA1aW^oNjY1W z^R~INQC5o^y6d@R0&o>U8!8G{vS5jX{H8wJBXs0smswORvmvRGJi_ue@zwY~#U}oQ z8O^rW^Y26f&ST?L&W{2Ag6c_PkROgK`B zYK65tS?^h2tJ=a$SE$a$Fg2YrriRYxRj@!a4&=e z9o56e6(cTLRlc6VIo*?>QIQ~Jq>0*jAjx+ELjq!81;c!QAX(vQ96_>z7Rts34*=(c zIeYc^G=~A%S-K&C^0_#*j_EZY(L2IKU=~y>$4;o@Yi+Hbtnui#Jdd14u?G}cMgF8n z@&SST1juu++=g1g0?AqHN^$h0v`U1_aS3L>*i5>8K@9Vs^#KwzvS8;AubJEe;GZR{ z%Bj=N3SNlv>`dy2VO5TYsa;!5=N8l49n-lCrSmhC`mz(X!9~%ie|RLwUQ6^QgQKP4 zG)G@5fgVYN}^RvN)n2p^KpnRl|Ae^2Rq!m*;!sHA3Uq; zNYm`1!jYVRm7tRXpey>6DdDz&yVxtssPVVk_r(nk(W-Z#XBR=e z#6<$2*w?T>bP?=iCu#xd78c~WT4~?K56hc3{k;TyeG}G1wLD%$^K80^%c7CiF%5p^ z(=A?XUC7bw;*J1c>;nCaQOPYKSW|t0`d9Y(Dwg|y1+Cxyi`P5*-|X|Z&4yKM7uVLB zfJj5WR5WjwL*tSs;#FE=M85AUw7nu;Y1E@m_+_(oLK9Jt!Fhhe3rum!fGmR^NOCcm z8c)TT8vmcPgR7r2klUK-kO~4AlS*wQgz#Cnl7=EqQq>X7#ExrSFm*~@X=(@Ihg0i z>AK$D3kd7pNtT~F`!)gyIzSYXmg{bv>;`h>ILfb-`@3K5@#bfuOXNw{jBFfe}*DIbO26C$$!a@8mA;3YRinT|Rusue@N`&$Xm`9TDvL z%P>2(dpLIYhK0hh?GzBqdyVMN{QUz@%klABLPLZg?KQB-wHDpoX}*XLj$ABe5wcEP zj91vSfR27jkR{tpeUH*4x|A`M$(lwXu{4DQrs_nQHJ1Tb{i0IcAO^D{jo{fX&OC!_ zSseqXgT(;1uXtjQA`QBV)R4RhcUUmvVvqpM1=fSv1Wdz2s)Vo;0={^p5~LS#f_XJX zLE~{%ER|*@Bc0_f0OJ&^fi~1IaT1$dz$4sg7Pb)S9@;`KT)dK$7R5x2UrBH51==}^ z3WPlMQtg;5r;~3gcJ62zgNK#@8ATB*r|h?6-MmTcES2(Fj!R_Sx)i#Tk)kzHGol-o zi}AZYW`!O7bEr>VS?v6Hd* zUu`5uo4;2x75*irRQ$-SL;DP zQAj9eAbh@szT|x1>}FV(@ z0O88_ur*Xc&xOsRM-bs5BrN?(0zZc8mIMr%7Z#Uh*R2uN?C$620Xw zwGoM*Tim$gYC~LUtQKVEI~BnSRv})cB*~Tn+84@|6QeYVKY&F9NMvlSo(iWo)E$JS zUG1$mQJs#TaDiSW;#O(1Zrls9Sfnf`4oXs@Gy!_UE>%V4;AmfK9p2rHQPEA>JO{2? zKw3UULAG$9Fm@7iKPS>hdBUTNA^(La@ApOZgb&jfaEVU@iNg5gM`BT-r{w zlWe+*10f#iVswC+k$I321exLwJi=@SI0Q!1O#u&SQdobZ*O4y=tK|Vh{2V5TjP;KY z(y1GMSlU^B@dZu8WrXv7IC7+ZhcatUyZ~I9P0nx8jO`q=PQjgDHz8~u@VvP@lnQ@X z3mPx2QOpIjdiNoDmuK^p(9a_j>;k=^YDhV%njEzVXL+RHC61T#B8un^&VDRcZy<#U zbB2`}r-e9AK}m^lmzzP)^_ ztw|^b1`8C5A#f2z{(>MPW$sBdBpedCQdI(m=DGs%L^fDFO<}41Q$owwUSEGWo`vx` zwfXggu*%Eh>rDg3&zJzRG>r?TLoHkY}-wW{q`GRrvS{Zfw28DN{Y~lu>1zV7B65 zWuIj1*zx5)N?;==W^qb?KKJDW6r+jYl+>Y<2C?mhK|XU26%sUbh~0C~A(kSOh6FDA z1Nok@!%i`u(~vWZ0fvPd2)21Z(93GIF;2bqbLRVtVSkPSEDbjdTs!C1c=%uIyu{cO zPcR-IsWxkV>!T!oC4O-Xr}m^%!`K$t8^Xk;>~8sl!NUTADGuzkdkImZYl*i*!-Usj zY9?x&W}F$!b{EHMIFh&k;*qCmIMy(IH|+3C-`?h~f+b-|%w@x|3f?fvqPf(iHpXpF zCut+PV6pD{Vta~d#xw=I{hXmn#9|AbV>64y(mnk;6xc-a{ZT0@jy$Vb`m@zkq6 zNGKBpCA2Cc$PjIzk%=&hB=zyaY#V?7#5vaAn}jlQ164;IX3Q`o7qUWtNG8-K!}Z63 z-9CqKl_VfUB#qScW%G2x8Vk6}Cd5(62At~lSZrPDC3z;PATnP=Lpd{c|I4)2U-$;t zcw91}fBW_+`~S?r|I-5a2b6znLVX>vS>QEI>M%M$5D@E)10|@FB7yorRR^jF?;jC^ zAD+u^i9VSoWZ)z_nJfeK%hlXBIuX+FWP2dl({;g zcXdhzLA!`ir09ESK5EnPJf7(H2Aa25pRd1rcf<#Gh2vcw3@N|4!ohh|LsSo1svR}H zwM_bZTz`!zxPQ2T%>CBwfpgWz^_J^_bJOSXPT}Ou+Y;rjfwb8J!ZVb4<$AJv1MTvP z+x)pReAOrD&DDirlddQhxOv?DCF}v^o2s8|(=KjQ7;{+s1&v z#laAew`UYy_TdoPlU=kQ1a}S4iC)klQ$gPceRQ9y!@RxbwF1aUmJ+hPY~wY^VmHaqsUH zwDPxhanbupk>7$Kc3PBsNKxL3{5Azj)KS7o6hO9*9$?9-3&G+vxKbhp5a#)q$_7-0 z{Xzqh_)6N?IN(oV9)tZ?2{=$1A%Dr$abd%fa>8eH4&s6?m8s!*p?A?>FSIFwtTsG- zMYHU+sgNV?KzIED&m4(e0zzLaoN|}>P9M~)JcKL@mweR{(!_*dh&5sLL!AX;>x8!- zE87WLD3>vzM4Hp@&Lf>OAq({#v=X_6rAcOU`9aQ+v0nDmS({y^bL`UNdZs6Rg_)$fmiRpEW_VKG>9D4-a_=jJVT&8ddWz`ZH!F?gTJMHGKi819%GLU*~r%2-IzZnk{iF2k}WG~`L3CD5wh=uKpD{-nzGq}=Vfbe($xE&)T z7@8Px;l88zswB*uMBdqafehRJnGOrLuK-W(4Y-3Qg(;!?eMXEb^ zxJ7cbYp7#`=CxZ%(6k#cYX2b8pk2-c2$lN8c%LTvc_j0A-1iPTlH=(MEqG@7brs4mDW;jdsjhmeWZz!+#Cx9G9d#5pVY68%b{=o3O3Hj@dK&#? zuX}k^jld;1NT5T|@@{3^y;C~hr07D}ZT`Sm&TLafApM&J17wqf6)*3D-m;f1)@7lL zA(-iE*SDKUVGvw@#7iFkEm`Txk2wWPs#{@6^Uu%lwqlczqKH7cG#29RBfT&*fyQ&P zFihunlZTOHXJ`OL!0!oXHE$g*lU22YJos{f?$L-F7W&a=CFcc8l>jE&BLLw9RpI%| ztO^AdU@%^v`+jAq)0YePCaHGOvnitDYPKCigvC4NCUMb49#dD`hfSbwxP7u)WFRk; z6lH<^c1HOPcGU*iHvfS@QqtosITEOj*Tz@%n@(U(I+hIj0ETt9|I80>d-|OdIMEUN zT^*_or!#T**sv4>jDl`<)0vbPPio?EK(Jg0&RcK*#xq3f|1Q zs%|Vd0^#woxNAM88N6^f{0bbT;e}GO9wfWO=(yQt=)(6n-0cc^^@H+9)l&@ThUvY5HK3>`ZjL@%jgs%u>IK zm=uABZ1z$9Q8x{S;ZYL9pkTs`^D(SX>TAj*(MI_p8a!*>xa!_J&;jY*@g}!hcx;b@ zLJw5iXj4Th6gczpzBAc<@WXzsgV1S)m(W>?Q#XZDmYA?B?rfxQasxDHDz(@{(t$L0AAvu8dt1Y^AW9Uja0OR>E zj}k>Z2uVX>Ao@$+C99`9H*UdAK|4lSdb=v~$vwWxARV#35 z%fkB=k5{JT3A0m&XzW>dmRfIyR2hP;W*7m+JfKgW=sJ(!cv8P;k{}d~u~u@x{UOi% zE#<=YHeYA}xv@m~1%=#wiBr5m6jwgveM^lA=@VMAM#kE}Hg?%(UR z(xubi-9lp@#I=IXDQJjA^M`ax7U$+n1sN8*pBsJ<@{2Yxfrl=b$Y>_3nl?Pau zL~E46vk9{Bbd!k{sW0%RV;(VOO~XJ-sdJQ&h}kR&)#EK>-o4aJ^E^F^Q_bokGjB+= zk>wN8X0zz@ydJgb&JG-oZcy*}^WzPVknS)mW# zVKikUo@S)?cTB;A!kTQScdn&61{;uf{%&@f?nXy7#J?=63Z81a-7MQTV<--ZQ*VwT zT#T;S0B_B#A!tSXr6-RqD=V^tY@CrbA17yJ8v=L3aYkC;D&rOhI&sey`=&D3TzuCB zWB1%-|G39hEX-YOSGF8~SuJB9-Rm*yQ_Xbn^s_mQmRs0FSfqYKaggK1_lEqCU1LX5 z=Gv-}RF|k$HXWtzS6I=QcCzf#sMRZad^%*J-X_iag}yy*574`wjBFHhXC;f`T;DT8 zdUJPe!ElLTz7~SdP8v_si7(67X^W>W;jJwPC_Y!xcZ)*QQm0oq|63k+yYBWQbpnp5 zK$khi1*k0wSGY#wE1j0K64$H5EyT^D*WjMUflu@n8*n&g;@8m4Tm;+4muot*;E;ae zWfcV&TU>fgFr-|hvTfk-kYig|Ey;5y3~rB7uk5YvcK=hbek{<4M@76oHr*4sQ99f} zg`~rVlG+)9`~)^{d_nL>&zL`OP^U+4ya2q|d|nErP6Qqj<%{^b6Y+_ zJxG6zUz_fCQZeyq(FPdw840_`(c>y;7`QN1a%uWdWs0*-Al(}ME+O|m-27AE-D9`_I`mJNPXEK}g>VU`tGV5`W< zZ#>jLCjF-1&zOYXS9xw%EAOP!>@2$Jc1@ucvx~H2jICN9MRBN>j6P(`=t-t#PmNNx<_814ZkKru{V^ai-Gc|#g(XE>@P4l&N#9>^1FEOf z6_=xyqIhoj9rpAc3iJn3b2`9j`s0zc)}aBEwxII9)xg{$TthwES#7;ne$}z5cmxG) zXdMD?>+@9$k-I0HL(1m_9$D*q)y`0gFqD_Ya(!J`*fsl@OCunpK8n@xi|gVv@z?v$ zuTr9^{ITD+FiL)H_Nre|Jso@Dz5)H&jz;GH{D#(>EiLG#$CCO4gxMNm(C{HrBPCdw z7_`$|4JmlN`d*Z4VHB;O)rfj4_3aS~I%O`};k0*Gj@X(%HvQoClws{%LJd!kKYp0H z_qIJPx?5fBMYcE@19DxOdKO>jge^U8Cl`b?yT`FJRT}C06&J=mdSJazEDddp;%~8c zT7Je3fWye1^%Y)jbN1l8e2QnrnqTrfu){M|%%8G7E7_QE_JAn!7YON>-z4wcB=7M; zQ|=z!Zoo=loo-2j6mQgwV@J8Sd9n`J02m~9KA_g7mQl}b)^s7^Ke_uI@crSF}Fn4i7 ziYPq^2N~`aEbGqhOrwoRe?>0e){L0MSSsEdk9JBt<4oIK8)TI4=i;J#A8k){(WQu5BK?;W_4bs@|u8LcB# zlvb>obW0Z3K)*Aj_a!MNinGA5EsWz>e*5Tagkw(Xu<>aK?SRIh4GsP zk}MRPuMH$4OMjKyBN~f`K6bT+Zz(&V%}%7%hKFkpLsFd-{vKyHm%XVmT9d5$I=O zRoGWUm45$@dYjlIZr;i8VkG7BvMPVODo>b#U&rPsW+%UMjx1SK>W2QudXL+L12=s# z<}miA7_UQ7C-H@06AT_Z@p6*dG<9XMeLbeoyq zl^F8EVJ@AS&rO<52PsOmcjh=66DZ7n`yN!PHg(^@TJC+3V@xf~IJI7i8`m&thSG#R zJKDJ>x|4iWv{bIgPz7&b)(Vdpqm0}T8>0hzND>1LlR-pJxVn=Iu5Z)|N5<%?dU#t` zf1B4=s}zw`;zNAHPf?T7vE;Y3h@U>24XDcfizQs&^KlNvO=LdmS`^10Z5J4%TSlZpl z@0_JgNAyJ_V%;H3KlpFay8p~kSGf=TvIyX%5_?ur`T6i$=&*YB z1MtNloA&v0ia(`5U&n2x(jYDBXE_!T3fvtS(=~roa;F>zMyX{%ldpp7u*1Hv&Ve^@ zQ}>yJfmV&7wj2T=Gi1`^J%QWn7E^cI=8&JLQA1$sj<6H-H5X~I+uQ4jFX};mE+mws zX)-I%XD@bFrWIyT7@sP^rTM;AWJt`PB7+!V4q~`E>!epqi9Dsw)k94Z`PSPy>-eG> zPrbYsliPlWx|{hZ>^9iMPx>=>R`>u)-Doqd;K5*6`W#spB)y!`IRCb6;GJ$sU`7mj zTO&>2+OFhQWVfXuOiY4@xDYl6bbD6jjLuR>m?K6LRSY#F50jQ!#BH+kR&m5Shxks$ zE(3LS9r)eM_gjP9%RY=f$ZW3Yj{b6mf0{@a?M0P!EUECW2H;oKfgnf!1!~^K%B(Z8q?QC?Ed#UE!2VSEwX59aIXcf*dXBuq)pHqyr?Yjg)#z z=M)PkvBnnK^Jgu>kl2=C^w7f;!uy5kA4}iLd9#|&BcTD+_*mEwgv>O!*7{WBHTr9D zjdU5KSZ(_Kg$ILAGNFYlDI_ z#BDUSjWI1tH#6p z@1M)~2JN%d*N65zr3qKhm*Gwz16n(~c48_XTyCnx7MW9Sb#4Y|1p*xcJg+y@ zuBYO3OiPDClJamwOjvOBtq`|KxM1$nWv2toP)jG${}j=aBO0S@f3m1qX~A^Vu(J2F z?Ev4OT+**A?^l=_kKsh|*7OGwU{ue7P(Mw@uz$=`)HYK%XFg4B%(E}t_do6bI(Yrl zyc2vI&=8L0%Ldld|D%>+V&DLil)a*wY#`ihD$&b}0}v$`@B{FQ^Qd#8mFjSlU{mq`7;47mz_py6RiCby)Fr<5LAMn!A&m7$21 zZ{UuT_)EYrc#HdbalHx%naB2urJtJPJ1YJ)BHUEx0(v#^%K*}%UpUj zE_Zx%RKW_NKVu(+n}%MYeo*E{x!QL#s!v)@vk0a#{>numBd*H~IBdn=lSeXZ~|GqGqRPwD-E8dv;!~1h-dgk)As~QMz7v z>)kXGyEG?^8k$_k6;nRl^aLULu#JGHCGCGyZ-+5f5J?a_ec%I_n3H%U<2s2TZ z0}A4LXY)?p4V)y$6JxAZG9qhHxA4T(1DK+#q`xIlu`o%Wwx4(hKV65y}nM`ce9(Uv{%_D`gq?YzI9z*l6L5!&>Hw)J$>5@{VTis${K- zcJlADcABiuFA`tgYxoyH{)0jCe*lE;ANEwD;y=cou!^6{#0AreJQdBzoCR*>M@yAy zQN$7jJj9NC(|4)9&e?`rk@|i1=ZfKjLdb}TLAG4^z}Gh+;YZ5V?ys*j*V}AFn0CFr zT_JR%Hr0#m%6!MLqS~QhVn4DkF_Dwp)xk^$oGjN+s&sP`!s7~-dKpAS4wBWJ4f01^ z&=ojSFF`+`t2DZOf1ww&*S%x!Q&_cs-X1=-tG2we5(u-_$9$;WR=3CTAJH>=2H*oh zRE_=iTD|g;30Y(boI{7CuW|F25^Z5xVPW+*=jxiZh%339zJhxW|HVIZSKNOb6dqS3 zifP@4!xZIC>gXssngWvax%hDNER;QaKI`0M2&+Yi?iN60<{n}UJOjlwhBGb_CU@g{ z6^)$L5_P0G)oUB?=p5=2J-N?eu$TH4OANMGJhEsENpU8))DS591NT;s?8SUunQ2-n zR#;|$K*QXsluTb(7^9rxB7dOfA$<_Jir4<=4RrS8zHPF`uG5ck{*#tE=-z>jQHzT( zBA26U;((R(-Rq=lXNCJjGn&(2e5N2hCReft8cdz0F7A$6pb)%+Z;=J@4!G6goLcQ3 z2eH~bkuPfy`I+xIfVi%Z*Dd##@d!ydx3S)g&OPk12N|H+1f6HfI7e4lC$6U;alQtT zo(SVlY-6_^XCW*x(bybdpVEGmm5OpxaMs?Dj$}gKz*vi*ZOpD4vQ=PlL2jP8u4-3= z%8N0n3R$t3G0o>KS3UGNo_<8SBJh@a?fZVLM} z;2)U$d$~cTg0|&fYmVZrc(hmlq*+K?mPax}nWg#31{sh;!<<4e9Soq6rjIy}nt+>- z7Jg6$qV_=ed|f^1sGlJ~EPSGKnA+feT#Ihq?DTnt)`P2r=CW!%)jsMlcItchJ{_5eJ zC+w*~mmt=WCKc3w@l1&^WuHfo1z!_;e4jgBF-&Fn)dQD+ctE#pPBA)CtNQ&o4}b^WeyBAzwV12$}5B8YH! zi$Q-4uWE8H($RIEKY2Sn-)!Zr19ZQS0@s?`S&qj75z44I;B%|#IKv2?!QErocYK@y z*XTabCs?np3XuGvI@BxglGO3Q(Io5^^D#0`glBFRuA&v;fI6nMhpRTpePc1|^6`7m z8JbP3?%RET3BNHb>*7Aty?AR+J>QvGvo7HlaaWwZ;$|Q7YLAxN8sjcfnfRP;^#Zv{IUKnS){!VFlqdqhB0udo zv^xB*=|$kVs2I2pTM^bP3oD&;9aL-wVg{sG0x-UhFHV`C+76LXbm039v8P!o*nZ!Egqj8&Gn-C1 zLnU)eD2vS`wN53Lm2GNrfK=xaK9b2uEp*Q@GN2>IF=Iptr8+WbwFTE0g;bEr?s7S% zDIze?CNLBe2o)_SoHQ3)Fix;0WfE0Zko|N$id^37A+{a72fyW0-Zkvu7rrtd<`zxy zxq5(lV*LndP>*zm!@5LrS~+CleP!WQYJjy1$=xm~>09|qTfgw8l3E$VyV{Z6r243) zSbqLP?r9_%;d}9wyEgut-1To+pYq?r2i?wQ-9})vVHjvM_vo)D{L*`}v7>tw-1l#~ z@YsY;&5(K%eNqyz&SU!C{RIg!Pmc;i1>sreO6NM|S^axmU7;#t@B^D#v+D30{>f@n zEE*17*d>KdOUMi{(t|4Ybi*9a3B}f|a^>%t-Eg?DiLxc;Z6i$=hK8T;m^HR6sGwWP z->=N(1&4h36-zR&GXttY@F#WfX=+_aQNS5Fb!)}CYdw-67utLJMg1&fD?$`(Ojwb= zqz!M|tOyndCBLq~j!ok|nrL>)VNF+gNM&^)AL`t*$_}_6pTS3uq*s=GzmyJUOk(*? zJ%0Hv^`9tLxp7m9_-Imppt_~>w2w44Ika#iR+$-0PiSj@@zS;w6oZ%|R|4=73Hixc)=ys8%LESBp;)Zfpu}`@_|KJ^%@0=E#f5lAYe-ktR7VIhO zer>6v@-5QqZqPTc0Q(gyJGMz`z}X|}NyhPY;bQbXY^ZE+YZ`~ZFIcNq2#!G()mDg!HDFGN|A=rc+Ak%=e z6dU|n6u-!Y@f$ykOr_?}^L)mFhESIA9&11{0~0-k-ATlP43n0ya^%K(7F{^z6U+NP z`q=R$UHjS=U;IJxRp&r)t?80ThQCPr6jzVaocP!*s>I~ZHmtVNk-fRQ>Fj#fi4_wO zU%TN*wqzs1+Q6rPGdvNk=y81lO%)V<~M3lg2bEk@qTvAdqs+dmQ`<6P0 z&tzL|g^?RS%g1k_1jq$0X5>=(-HG(2%N^ZmAc?)LH#Eu8e7s0*CgA*e5MR<;O>rhc zC^-V2Z+Zpz1{jyHn;bH^g`E}2hIA^FfE74SEOn1J0xOQL>GkEceDpl=0yjLso=UoW zCDD@eDn@sSC#~YHZ-dpcTF?lqff)^6gva5=8Jg{!2;ZKJf? zp3R_|VsLiJX2mSl+H&8CMgzeZi_dq1mxS?#FxRLFgF8%q21ZzBO!hJ+_r2+wu6B;? z+rw|y`1l7%c5;W7XM1_aegEfP`b3Y}{^3{1xcz5)>Hlhx{;qJb|LWRNb6mGLUE%0T zeK07SOQD3>pgAhMB7;<^Kt&Zvy_|DWdxm$!o;s^SI2{7?0ih~Lk`AX5M0t3J>QIs` zN51x>EL{&fb^afpPauLg+UysaEe?xefoeEy4x58np*-j}%uDVes9x!XD>iUgQ*qeN zVZ(U|-TA{LdENKoNJNu-$KLaEGNSwpLMq|JreEcYf=q!sF}*A&p*FAHh(nP&qFu(a zhBTD&px5o0Re`rQ$))%sWB|ISc{bj~&>%l8W!R*2{Q}P;JP*f{*&#n3UQ+7HYtYzL zl4lk{l#nl%EJYyCR6apAx?;o5Jgr5BW&=$P1 zpV&x*n;|E=*t>?^{NmTA zDW3o;-{J-RDjR_}>#irXlgR7et3dq9vH72d+e61eo?sf$9&oELkKnPZC)Wce&NwTz@->X^rk$CHKy649TxLcFcSI|=H!^4^#!8p#xijFgE| zEJa0T#8aK_nvYE3KJ~-*=L+*u@Ex1b#r+)Aph{HKC8-x1Z<%bA9sZc8b9T9^4?QFV z$UWa5g<26lCX&~(qu*^e=%%(RdF}@Htms`$?c)bA%i>CD+;_sG6DGL)NF`}vj9WeQGg>JY_RK2n_t`BW+#N7# zne$qahFSjnqgi3gXkkMCii*uIvB7_UAoy1n`FGt>k@?aUpnlThVP?QL6Dy#BezS~L z1oa6DBBq2YXp|&|amB2=?so~3EeG`ruw$iX?G)7QawLj`v?$`i_@q4SSZq|K3?u*A zKjl01+4bDk@B88!&V@%ps}j`_hUkH9bJ8sJ5)Pgr7y+H4D!-fNXeh?%8FmrcV4!`0 zBZ=T9Fq0g`M%2Qb0LO7(TPY&bM@6kg!$0Z_M<{-83WY_5BsQ~hTsnk}5YvmWumo$2 zD>!;==RN%&g1aJ-&m?Kp^vkpDzO=BfK6|zh(~pfm|>PIeggg$LJk+L zV7~aUl{qe?uCUQ*He(e>(g&yA|)3~Qt9i0 z38(2h!HTH5kKR9*CWABF+yoq;`fB_=_((#vm_J+=XE4>BqPnQOg+>~pkaSd(!oASo zA}ZSBl+Yv;Ym3mzO|}pxFhwTmPn&bcE-IOl%R7$aYA<}&*=%IQY9Xy8!eboKI2>if zD2QS4!mS8IJnVB>D?UP*oAH3-J1gtYiy#^gE|q-rX*|8wbvH{dily+T+-9XWVMdJY zBcTPWo*$T&#NZ3AxG?=$-FF<@?X+RSESS;ImsE80J1=h|P&1=viqi3|BG@@%fcTuS z@y8{ksD`qB7lH4Px1wZJ!ND*<(I-6ZswgGx1XCoBAkzyDxURC>xfR6gf4kx-GNaLiWWQT4O-5hZM2Z}1BR1-(Ya$iJLW6L8`lTd;$8~jQzw~=Lg+xg2A;mM}=&)W-DKjRH6VHgpfW6pBo zKm+RRIcGc)97a*as91;2f|Rckz!Z;rMmnE{Tbzm9R)a0ZI>TVDrs>pi)!ZUen{9R4 zX1y)xTthlWvE};!?eUBA1y7PJ9TRIP@79JI zi!%Gnd)cq6x{lW9OYpKZld6Sq1**#=s-mEcT0|t1vK4Unx0NEt^kGk> zCt7}EneMWlEEeXVmrOT0i4+?S|MYjT#v;Roel{JBxiB-3Ye}q(K{$}``5MEGepox? zaEN_am*UYcK@V2vpDbsiUK_MBJUvqCvV3iy>9$bo0=2R(Qv>uiIMPI;vv-Cftb_M# zbIxA`g+oPTI+LW&F4u*Xe6_LN?I(R}YK*XpY9BZ^h1#ezPm2c4RY|1q;M-9&u@Vn2loRePNg;Y{~2^3j@yb$G6vvj2Cj3V-!bMOWE zh##d2F3TQ}xT!1(TUx%yjUKzqX_fl(#3dbL=8}(z{ZcT&&hD3OV-b&)j@`1 zj)nHK`~NxfkPA!%YLId(b}7<6ALJ^f0J5zng%?5~3DnCWUIUfFUiUM~(5uEZMK+;R zut;}(D%mYG1esTuBj}NMj1Ez6GaRF<*qg?;`*9?G9$fZFQbsyoS5k$21J#HUC=eYw zlt)g|6Pge>N@PV*%F!#N!ci#hHb*&(U{Spm>}(gyYcb z=TaAh_qz4Jlkm6{I?kQ``pFK2rzYknA08*30%j+(fBfF@`lWoBLXf%{1j>(3LEs!w zjWR}q#3#YxiooN5N3p1WD*}l57aBt1jWtKKES=*Hc_ku+`siz<7CChGdFVx&eAIL> zUgPY)zbaGGF~UmI%>JG+FgO}IZlb$r?i^%fwBIPxH^H2Je4y9O)H9Bt<#N5pr^;?s zI&Wr&byu^|B$Z0Z&1zT)v7T_HjCqk;GzR)fv);N-uQm7pn}o}-nxo#k&j~j|oGS-4?Pv zroYiHJ!XPb%Y~P{MS||hIP`23a~*T2-i0xFM!)&GyeyoE8&=(0p{tE_-5+;|ISLk5 zShd~|y6ZU3(h_bx%dx(AW#V}Qw%%dWmectv*I$=j`PzHu1X6q9vX$kyl7e)#IdN6f zTux2D$u{{@wyV+TMXr3tQAq-ehWm-6@DM2JE5DVIghG#!;e|V7?9cs}rj~C}v8LA+ zpKSOz&SopV&W@Aw+{R0ZBk{;SM8V5HV2P`WQ`0FEJ=X-BDto3FUX*?hGJIN25^=np zf(Oi}uSG&{qSx6^1W4Dm4m*5$jvk;@t3iIxoKZGn&|z>5bWn0*M#4hWOMg}^Q&4&4 zf+(IPmC+?e1^qV6vw7x16mR0z^*nH>XI^ZbHV$ou>0FL-JyNb>{XJrfq$4Q!5s%QC61aX*C*4_C_E2u@ zG6b7xD63fMqWOx!00GJL#S=r=7bmDSRFFfDw?}9y)gbr) zKhXS+;I)`6zX(G#_uxldSbWgjGxh;A6p{(H5>%K&X&9EM*hSVnr434|U8B&Es)d10 zClW|ocqK0^)HtxnH|SBRYJ*%CEZJmTc3EkSB$9D$(#-z7u|CX$ z3_}%#{xyNMKcL3AKdAZGevCnM@FD4^oO0C&^4AEa+_&A{z)WDkd5Q^VBzsU`p5ECJ z@`XO%i7S$JW)b=aEBpgdLS+UTkoz?zhWanM-@nNcxnE?qzosrfY^iM1gDBAigeaS~ zfnofJf=I#Hh^P#J@AtkYb4zTr05(Gx>N(vjyZfr=UWG3YW;z?i z*HF3l%#&Et!4nfYDh7XH`bk$~?H-|+Q9!PS#bv`nx{)?dDl1&c!qL4$qeXopJ4LXd z#6e8gLwTO_i1V4D?Rtd2Z*3zh>!j-FX_0KlLPDile)+HoD%+MgYB)jsrT>SnfJ^s9QUY6F(ol-LQ%4<1Yz#b}E_YLV z;*cC(8)NMu`&)9xyd%U9?vuG$MyDd8FUyJ38AhL=BGR%naV)DpG-V{Xyznd zwSB4tEGfX=2(2XFmOR#!Ap`Rg?z$~lJaFN>40bHqH(`B8gpMnusrJ>>*>9Z3nWXZq zqIxZB%O!e{1k>`Q#Ln`?IL^DnyRkM#$K0}qbs3#)FtT338sm}fP;2o(L!NMZjxHz4 zmlnqoV-IQHph_pYNvfgav-A6(5Y0W}1Jm*iC=<)kp63dcIF+_u?=Hh%vBq;NBCMS9 zHUz!D>3T=zJV66CtYa+f4J_=7N4Ti-ibqZ%D=A~zsB|ont#WlqZ;{22U5dNICg<_M zE5s&ohEm7i4LPlHMj_wEWK_OWEY&~!Z!U>{i4UP$U^+p*qTKMm*Z}w+0>^YA39Q*VTNFpMM??2s zF6SBdUgwjkwp;yPV2`+KVrGx;!synftPOdi;`rIHBUtINN)=cA^HGK^_SUPo)_iG$ zq-R#9@a+s!J4>aL37gI-C|4|3?C<5jW3mnRBp(+*3SI zIzjfedhfmN4K1dK9(||ALgo;J^%AhIL)?V6Vxyj9Uuvrp*CRURVb0WrCAx3KH=rDC^g;t32Bbs6f7afw9#5-&4@zaV#gWD;J@~vgI zc;+XUlW-?^umc-B?IAj~V9bp{;>;~FJ8|Dy6Ke7CnzuN?Xp2CAD?dr@;4#|U8^M`% zyL)JF*n7x@BOF3SUH%yn{_v%7&0N+1N{vyVVx$iXlg9o(<^{$fZ1EVD>j_`ZA%}JzS@oIOzt0>P^*MW+PG4FM9xl+Clw7Kat$I;ffrZH*LR;9#SoYvL03^c7 ztd9J3!7pIYx+Mlbh_wSJ^Py6^ZXc@_se>k(uDbGUp!-?}0i9c{cVmObQ(9w$w)@C$ zbg+cxg$lOz1|f!zw5wG$&0B9xqc~d#>F&C{c+ltC?V(CAT1S{8^r~!OQ-6}qd}pkU z#`FT>p)p*M)u?wXX{1Bt^`;a7-yiRK<`NXW0%gThiJDZQtUPi@fWV<#Gu0nL7RSo2 z_eB`J?-8NiAvZ9b$Q(jX=z)d3<&^*?j^( zUew1Em!i^++TUZ9>079}2F&pj*7^>yU8`u1*l3FrD;&C&yu#xx{21*#=_hXRl(lEh zQ5zwJxdx)DTEVKtTD)M|#k>)B!+jmo4v4)(ikmmCtbhNZ*tZCZV_sAwObWwRv@Vf)!xL~0wOk~jUvd0g2)k(<$N^L zq_nnflCIM#`o=L(=J$esuJ?%wceBu@rb%zGujh8T-|#u#Wb!NuPzd;c%NTV+)nKC0 z8^$b}3r7^Pgk+kk%!p6)78({oi>AhBB1M4Zv3>3CJy>~$o4wPGCsNyHfrsrm*KYls z)i;ZH=~5@rRsNY_XcFtqHd$Hw#w)p~ju-At(>iZ)2M#b=cDeMLcC}_-9k1zvhijdd z(-)AjD&bKaB1W5R{B0WcYf2Dud)&MYbCBi+p5jDpa{qGrjs2ND);61WyviE;DQ#ct zfX5+BtP$2g6FWr0tBy9s2IRBZADkc2L`kr!j5dmKN3U!aXGWm8a>3ieEmg?z6!YGf zG&03AO!<~7b$a@q`B;pjCd>FmPAO?!LaO}rVO6b9<`ERYj-Q~fxpe1^Q~kexTK|Gh{*Oj}L~6-E)I&p~$6R`CS;*?k)iPKtLP zag+^CWNzqG1csH=jJ@nuSMpiH3TPHGYgR z;1nuC*+Bs5n;OV*hF2&U5}!z{jlwSOfYN4xYyA)-vL)C|0!kSmpwbH@f7~lHPCzuJ zm~cy?1GO&$@fkUk&pQoy7wU?E;uMNHEr)ooslDVuV^xL5CZ_Z}rp}n_LI0ha^3k`S zB5(4Kc!}Vwdqpm5-0XZro5heL0m2cm<5WUv4h@9=!E2Rs5d3kdE|3&@Z=nZviXKXc0Klm#{sMVCDA)Ttm*iJ#@ zEWKu^h}yL*&4Om4%F0zZoAK8EgC>_Lg?WKFhM5W$ZYH;~#aX|H)vtBA+FLDpxDXTM z_MC@2=bg!i?o&SV=lVaNKJa_UZoHh)+01sHd;R6i>U;?e>_Le94+rebdL9XAa`Gd1 z2>0!m!+bT-WrSI9SlN1@i70aFBfePqETBKKv{tN-*<@JMCK<7OtXs0o%4n>L3)wLH z`}?e|#%0ko#!LkYPzKy*kRi%O$TYeq4^r&R2{~hAGuqI3ibz$977K z(R}~eUB<_c$e~3^s{Cl`K=v!kt`rkJC9N;&JI$zV&vjH9CnAZh>SdK}ZiEf9q-C)v zWe`?R*>Tpg?KCYUOqk*bWmT%&^3rfS-}y>c3;@E%?G6z!oL@q|7B9ES;TI-3Uh;^J zKE0S1w-WX?V~-0aaEY?7T&STBqu9dM{E}C_8A9W>SNPTvkob5;u2ER3VLR#Ohzy7% zsj);j3Ofr36dA?_y#@pWf(p;4s|+3gOqDASf?KTpxQ8G_5RpJdPF%PjuAP$OecZ;F z<*qiYJlTCfRH+%lp!AVo1H+{k(-kflu{o^w=S=(A0+877pSq9pqXam zLL|VoiQ#d>`x4U(hm~4!i9oYVoj{QJwndiMbsBvX;~ZU?7*c<@rH>SaWyC?YHu8u* zlWg}+LU$!jncejUMy%%NMmSWr5Y7#Nw)f}0ug@NUjaKCo-o7!$-dC}auJ}v@>S(V} zkpbq{SR~4%gC`{W*RJNIUAU0Kv2rF{m3-Lz=XP^-aur)StZO8m@4h^hwFE<)JG{`J z7O#C!!ZY;x=km8O<}v*vRSK%L=YXQ6ic(}ihSLjd1PI+_Z1!?zi;M!9N;S3uD|Ia* zU)ZpUqiPDyuVhvy18DiAawd^`uJ3U{05O{EdA}n$`)iq%H4#Y?p+tB0NEOh?S^}6CCM?3i|!QBnuwEv^L{_``HSH>fG74MulzxXv_(mSN!vHm6=Pb5b+OQEJ5W-5pHRN2;?H zR*%e^`^S>cb`*n*1WOn&E6025a@sVMC0`K((j-?e4w#I%5Guy>58n0ON%`_l_>tk#nF#MXBO zMzbHTa{>zRLo!7lum32(W-3U6&R>%`p05JT_8+DqMN?DjzY4IegU#Q2ssCf=o~uk5 zEjU1|+NcxKTJg)T_yBA^fiO!jV&9h1SZnR8@UEN%k4#3t6^w9v0QbHSMv6WTyj+Dd z=dJ6m7~upnc+Y$RjXzI+n>7je`@X~Pf!YnthaEcJ%a1rzfpN=M&t|Gya8~o5F5UaE z&{yysQY%Lo5{Jn!>6lrt>zqTbx?y&js}J)f)^~ji4!Y&>d&#d>wvaZ7+9>CQ?i-J7A&u)=<@{{H-n3&~>R7Dl!Ty4K%}e2Ii72 zmqgtH0~IzVmxSJ949C~4Jf*lFjK)(gG`lFL!1gh%@IX7dj8rkds|kduWzpAX!@f0} zN|`U9rbd+<{md-Vok_RpGMV7*Fx@0J&RWu>)Wxdf3dEMXLG^CvrSmxPN1y>+f@jU* zG^jd>Lt57I%zv@WtSRC?jXKznYwYE#JSOX6Sr_-n#?`9KN{KgX;=lDdK;Or)o3b#3#yN;5XOEE$X(bFnbQ6jH@bky#nlG)}6ISNp+5UA#!ib z7Z$^8bB8%fj#4snKM{{7WTLKAWIvrsMR%zt`Wa|QSndmSH#;ms$HiG^EHIUo)Uh1> zc__l<{v7E~*k*$W+kfkkDI$Jo!_#W6H3hKQMCTRj=_C%fXl>@!W|49yRhIAGMIGwl z^+2ZsQLseAO`H{lyD_mXJeFI4=%Rd(B1iGQ=02uJ&QTZ94?INrVcrU*{PsN~>x(C* zF(EPGankR1GS-gx9ncEZE5rmx^;Y#`0M9{Bh{wG#-$<$t9HIimBd?yXfrJC|1iA1N z(esi1ta=GdOT3li8EgL8f&$Q26uFOQ^c$r8DKTlwx>(Bg=$X%Rn*sU=!c8>gETT>S za)G}3@Ei;r&oxwzAJ$ABbUy=2*r3B5{$r{HRbEVd;BECSN|v7fzu zY{j4#Y;V|8Z>q4`SPlq%QTM^I_T}+*@4>L|$AP&c@75Z2_bAL!VirPfs)OnYmxz zU|RoCm|sdlfnt3zyT=3i>kIi2aLq+-H5{j4Y+uM$PA9LNz7Kyr1Yz<45rW@vFoJg> zp8d}~td%!41i#qW_f7}`rJp!@Ye9$9ev2^LaJ;)lvAbsJw-qnC3^t>;l`mh$Ap6DC zpZzdAKbg?{&q8H>Qlt4Fg>GMc8Y94aC~Ewq(8KJ{uXdU zE-cZGhXoTB$z|d@hz})!{BBNJBC!JTF<*f%M!8jV`K}qhpGXKyC~JGWv#{9KRqd=j zdoz>wRBOwZ-9}7%d4Yhyfe;E15$egr4+ju+f(3i|*S!8J+`khvVBFh9S?U6w*9=<4 z4hgaiEKCqUk3WONaVDJKaP9E#>*G2@fMc`YaprQ>{gE~{!^-GpzcaT!zusC`y&clL zg^3&w7Bo#x>Iz@4qBv_07XsYa0$JDjrU&}`b_X=Ta1I^vDED)p&#NSSK$P+l`uRP$ z=MyrVPOsD08>D3A)iOk`As)G&*w=&9jgpH;=Hh}yHCd|lW+iVKzQ{zbs---f#sC_^ zG!G&K4NK)mX8+|3QqC|gX#Y8`!87PL#4;q^(N}vZD8K+cX!d=3a1tVSj*X=p{KE+p zsiU^-`JCino>|#|Ml;>X?e6L|0g^9-%2-B{XdQS{IlZ=_^W4nARXFXe68S)E?^?9-NMp8RPak zKM&IV8$cBO+qq|Fvf2ygt+YgNA-VYAA_4sH?{8tnJBhQR%geWdioXi@Ygl$nQFsVh z%Z$!tZR6BNWMqqzGo;;EJX^>!rIgs1FgL~^j=qU>~f;m zmprLQW@K+}(FfRAy4tH92g0@Oy%Vfq5xtc-YeR~7c*1d31F&^cmJpo5iWz?@_UVmg za;$(0H+oG>e1L$U6t_@ympN_nVy~f;NuLG?Y|s^}r#fq*ac{DA%v=R4S0_W14Mg~f z=^*?fm@wMDnzA!Ig85zOmj?BAA$#qEsp1y3v?eLy39fa+I(2a$xeBGGo1(4;FS1~| z^~)7LE(zL=I74On;z}=UfL`HSLQ5GSNg)%SjsY^R?!d-wMsi-kAC>DDF5moo#RB1O z7Sobm3z7*S)6t-mb zQQkl)Rc2wCQvL=qDviXH`89&AGuqQQTu@gemJpgB=p5F1mB-Tru%MMFgF8Ah4$X(8PY{^~Ht?bi)_02g-ejvtv8`V*+E5{=Sav0{N1#4V%`58?2QG?SFu!GVa= zBVt_Ifg<;fm;UT6yp`*zBrC9&6_ZW+ugoF#RfWXi-0eH>pV2#`T{ifJNRtF6Ecp(t zpt^opzdYP3r?|TEz|;mQ)sXcB+Fy0t>?jX4-VYNY>(BqVf#=#<4}>o`$W!L;Nx=T!>?( zcHPUMZ*hP-Z&Y+)q~IpLgjf1Z&RueDGKUiv3CHAm2F-WnRU~h>ApL@KzT(7L2B9;D z(ap^)M{84__W=+btaQ@)^e?S{N$oKi1iysr4H zpBX?$rI;VQ6Fn}wG0wNHjo-;VEpBQx4rX6ySH{Z+W*B01ng%-3e^keAs9N_%c`reC z;lQ6>r9dTJbqmA{4Flhl9ur|NQbN~a>igI;EFC1~B$S%^gyloZH2W9`9jljkjp=EY z`|BV%R1=Cky@ZFXwVIfxh0Bzs(z~38S0V7j;OTTHF2zYvn@DRXp_dMKAL6cS>YL1s zaQ2BMACEwWPB;~CFmFS>RP=)Ox%v8B7P5>Gouv2~5>SVg@f5U)FG)=Xd$@wIl5C z6FH}dAM)|9>z`f%vxDez*rhg?#^B*Jm4KARs#D8rgeZm9?#;oUl6^Z!2IW}8%!IT? zpp*sje%viPKJ3Ty;fF#`j-fC>iowASlEK#d+;DXP5#Ww%^#>@}{E-TY*iDOUgTG~g z*OiT;Fe+Y}!)Et>V1HugtNiqY^ABdQ&;)k3deQ!!3!Wd!qvoRoNWXi={tQ$+Ao!_3 z{iy}$`wPXC9p*pkKS!Oh)OmcQ4)8yir2dovXxyp6joj@*{`eJ45+X)W0T=%G-El>^ zivquzZ!f;C&eqg;WBiA2N|;Dby;=C0#lq94D62napeeBpS@5dsv>nFxR@d6w3)0xavl60J?|h z@F>;{Ru;2LCFz556>~{zl2Y|b0~Cg3J8C-76q_9Qu3f|^J3<}Is0fG>7tRq|=>KM3fgdWw`;p~?KX3xBlocRj6T@S>J+D^?QI8l#Df*apJn8MUQ?fyJGv*Ho~~r?Pds8DbRe<0(pk~Q&zc>IPII@dMMu!<9*+Tdc!pn4Rty9HyJ{GrA=S& zh9A+y#Zj#&E&&%GiHU^E?`ZOr?sv7&hsHb@Vwj(Db~o?CW)?q`*T0#|K~F8l+K-}h z138Cfjrb-G=hUCb-A|I`+2QLzLV}Q zXAEm*h{x>jd(bw%4)KTKimv5kl9W_$POCx%2#`dbj*w)L#5*5m?GoT~4aNDan03)v zm8%Y=XNsClv!A&)MCN5)1oS@R#${U6a1hGNW4#=^qSUe_uXXZfqm8;mq~GqM91G95 z{?;dXx}jlVm4tZyo|zhzB%$3y`{`B&Bei(p#%XY7DuIz(`Ls6qiffP5!8N<91vFl7 z+%>eM$KIH`LSbckipg?*(_A|Z&P`wSBTvW zsAuEAX8+A0KFBF(`Kqk(9Td6jtjjkd$?7_!NK&|@^T3AOyo zAsDj}L8rTAfdkre(-%SL6Y1^+Kjb%xalun!4!-#4^m)oW-X40=4dl2dYFWQ6c_vL| z*0#cPHm$u~**ni!e7h_X(9Za`?&t_6Ae<0+K3Jf`NgfKre8$E*!~u70%?6I!{lP|m z@Q>$#_u(^yJE{U!TPVMuJrIk70iQVr>!in1e8wm|u)K-2|0MpJAM?(a$^+y*BgC&DV3ehfpRxnqkF z-lwz}wY~RW9%>YHF!?f{k)Xwe0hI_Im)JMH${n=bgWvh>_!6QhlAmclPl>we`Po1C zkeqZ{zL&9=X~RRk$xruj!t(h3!=c<@^u{K+sxdG#_M4h? z^ziHG48KxtPPkTyKtQ=AdtPC=c_FGF+>d>(420QW1i#6|73@c{1#wRJd=ggbUvIoy zV!x9!wCb}>>rs|uW)h>ELx9|qfu1FOuaVytLVC+ME3Wd%Q!SArz@Il%%cN2p*{dgd zf%H*v`xM+ytgTTxtL*m>B#35Rx8}aPgY?;2*1dct*nbsUJy_?UVzQ0a3F@T=>#*kA)QMT8@NPYBOCb@N& z7{mJOx5q)ZpeMMM$!j#jARFx{)Q^lM!!j`-4V1s(XK;fb`<53JxtvO6obW&`$}p6M zCo=-j5gH~?5vnLca;%~;d@|c}!ysVo)`VR$ln)gEtcD5<;C(QCfCc=^x z#emK%yR2t zC)fiU6aPg?rWuSsyB$?}fg*aR`u*jcP7wi1qB^_!9SII61f8bJ7mgTrMr{u}Drh#l z$bifd_z~rXZ>gMs6*mBS$&d&>^Qa;`U#0!qrwfU@BAnG8Ml0l)*N5^GHiv{D98D-? zAMsH<07bZ5dm1T0z0$LoaTom?lTl;<#{{H>eg$iEG(VRkb$*eBJ*7=@1j4Y6p>ab1 z+1EAf56_I|dvz66%Cgi0Eg4k7KjrHZ!E>@M2ZQTsixh7*Fm zLN-dFSND)lF^_S}^@0TPRdJqQ;k454J*pc7Hv6e9v6HQi9X7ucoqs3qd4w`H5bKK^ zQnGUW@R>4U6iYHqG#JnOlvOYTFeFVygE|+lwzK~3bHMaRW84uJzdTu7=~pioo8in$ zCyJ3%1eRzVQlfQeDDRt3jwX?QB1r!jHT~nb?w|99v-T;!_(A+z#Gp%2mLnQ|dZz!= zH0!7E_ci_2DNgSP2Cl<;hXH*#!}{pVp4PQ1HL5V)(jlYzKh3p9SJQoD@jqw<38C?~ zMWdlA->P(q8-~F3EIF`JsCyJkN!PLps*I5KXcdXj=_%0dAkcZ7O!iI7)q;kXQF$^g z)tu$jw&|JElr*`)C*OS3mdg!1ow%sXd{ehe+9nO64mhwJT8{MTUKUYKCL_|Pppio% zi72H@NGg)H@FyZ+6@`pOL#P!-PMI|4Ppvt@>ZPa$fF96+o#{MMFJ&hv%cmxQROpfC zvT1EOCRM#_Psfg_S-v`e&>{ z!Rax6%V7Rdn~)$UO#+WHCPyW60+%L-)FpnjYbJBDeSmF{#gQTVGaK3B{Y}Gk}zr8e5;jMs3ZI22%l2@CKUP@hEe;KIHx=($aA8CH3Pa4pUDA+^bU-CZ(PsZ z>3_Wm*e`aVR~%V9nPWYdMUsk04OZ0ZXP0nP^;oq?}}9( z56S{i^Uf%i)yhcP@Tf>&w8xRyDq!k*&6}CBE-C1B6Bdc$KUnl8 z$*4`^CUJTW^THu&49SMrLDOaVEgoM+iTa?e$ViJD9AM5!bUn0r7;69^hQ$#_4U}HzxX?CI0ckkm7tb)(kY9%D};;g&j*`g z9~GzZxz7XBr7-vm&iE}!eauJ1vRv2#R+k}FbmitQteCK-yecPusVX(94Zu`a)NvbW zp{-=AgE1d#6tEGAl6b7SLmOPZ>5BVk{drAo8_?mokOqG`AYJPkXp(PFLzzNjoNbwC z-kUuwIO<*Ft!pydpF`SbC{;Gy^i^+Thjd5Uw@dO*mby`d+hf*`>2vM`E1)gNC173%~9lYP6L{yih zeTvWZg`(BYsw28z?@_#fPT0Lkc2J`{@|$SZG~BS1Y|Txyh2k;tV<*#MM=5AFbxuzn zg#Y|AVfI86r?^%gvQ5Xt+@w9cpufTgovm}Kp|L%XZg`nT6&-+5rMl{hDh{8l(VJVe z`)jZG-DowIoJN<}^n1``N2RZ7yPkM%%V$WV#%s$#!dZ0HLktbXo>e_Ski@GtO zH?tvrAgz~L8lZ13L!sM-JhcgV5-xX9mpEtTkV=m{9>68N> zT_`=-gmq}D#zxJS1rN!lZ1yWlNn-Z(WN`g3ObGEo(L&ZW%c+w}=ryL~*T1!IhqHho z#lj%ec=@cj{{}MU^f6vix{lJ!x@kgY0^$jb-Z}u+4!;URc}*OI@uJhasA}@K=0w_N zWTYH`VRJz=rX z>UPHhzWH8d?W0z{mvn^tb80{rHmeJ?tbNj;%$s`3Eghia4o2&;>fkU5%MOg|-Ki-0 zQrfO`gecRPdLTsyUlP&Lg_%QH%DegQ@4#M*9C#c_fzZBuz zgRd38n1Yjq*l)GrR_ze)p)D~HdprP*)^O8lIMa_Sc5o2h$tBy!=yxpSKU&BiTq;|+ zfgnDUaeU{T7Fs7?M`@Eyy-Z7R4=S06J12b4Cqu<42^`WmOM(!g>@&|Fbfe8rmNP$O z9~cwi#usH0CWYheOP#0JDW^`YotorOsvn{cR{2gl%J zl=s0M=)~5(t$hJSJUO-jE`2Evcm48?wBI2?$nTpk>&f!>F2jMkPQs{ zjh62^t=6tB^}5vpDluCdk}^BXTayE~^ryWb!8W&lQI&ISOJf?E(u zTi1eUsvQpS>$XSsa$zbCce>!Wp})qOptruC_ei=Q@clvh-_(SmL0NC&5ivn;>;P2K z8BOqa_!X40j&d}YNe$ZCOA`O3kdWa{bi z6c>`vRR1mVZ2O#x);}6{ZbSK+yn`R&rw&oG<*Y{v+~S z*6k#k#Ue8OM?d72+QyES#g-hR3VJM*poblW$;|~b_+~VduFRom{`ok`v}{Tlt?8N- z86{Fary;8AWh^axl!_P5S5-vXaX;o&1X~-nnmcJJ#2dzP)Vn8T@My@~*)uZD7gJZI zM6cBR-K-(m6BCnm-Y29eGaJi}y1fQrrkpKc!Kc9t=MEfG>a$kVtnsPVNc&WTROP{P zSsV^B*o7w=)y%>NXmrsLqv93h;0}mbl%Njk!Tw~{+$eGe732eo2%}vAP_^6O1Z$K# zBS{e&+Di0oow})LYg&hGGu{7tGw1LeDW<|44(@Mx;JUh-`+s8;=Uw z1G}MCJH2Arl&O-Pt#o)3tGl-xVYD?DJD;|>8d`Zp33}YpA-vB}y8GVYKZinzzIY;x zwDD3ekV%+10*o~I0e3RMhMTpmjq<~SVqsI&=~{Y4ts1+IU6e4rXf zd8H`KI&L*$zfzNNPeN$QK6HWg^UWg-kbFPmy}ERM>69?k7HPH8#1wE2hQF-_6b#j# zZ3y}upgC`&I!E6%2HF#0i4pHxjIhY;GEv{Ee7n8C?hu2S87sZDtCl;cqB^ckdZwYO zVMb^#X52Rkha@h<(lLuGhhb6#q5dGd5X9P!i7#bj zT>fY;$|?su7&r(t(w^Cuy1F>A?^z7ht)d%+2xpA~D@9EbK_v=p!+*Y}>>wv*o z(51x;N!;`!_`1&Za@`=|1}Ztl>b~ z^7Sq7{bw&9&#g`Q?yrHS6C415`Tx7xTG(2d7>gS?naj9XJ6qTo*#B?qYO(699hM6G z_ed}6j&;36RAQ1~q`l@SZT+I4q&PT4e=&iq=EdIkUeh}F`ev0|;kL`N?i*Q~gP1mZ zlVYZ-asU?CcbemQF*xMo%HN$g)}9G z$k+t*;jSf`vM%o`eTCovj`DZmVZ;;_*EeNas)Zk>a}@=9h5l1WT7-m_wnH`R-R?^L zfELTm0iAm1StMM88cX(S#X$$m6!QC)<27n(DRkd*%MC8W&x9M6)y)*U zmZ$BlKMUNU<>@e5ubVaa)V-8511B3_rar#$_aWY=73LhR7_|FrGIVOB(r`hO_~9Un ztp7v?qD9;22un2Nz1=N2jKd1O=(KY)l zQr4T*Y%T>+agUH@ac>lt>RoM|ql%e4Fm3~-*s@8cw%R(3T&ZwWUG?ic2UmW^blxqf zGiGQyZPXCZW;7Jk6Q#ugY;{K1sK=OXM7!*>W!r$Lz+A4)*<;&TvimoLOtuy5OBu67 zjU6-3z{}zc?b=(~6l&B9ORf1H#}K&sEY`C~<5%uggkZ9=cn4#^xU?tP%M2pVJk-Im zf&@MFmhVe&O~LFBQ0dZwtU?ru(Mz#&ffL6j#f`!;PQ1v7snKl~VTIgvZM`$@>N?GF zz47T5D%9c#yKbp`;@_q=85a}Pwhh={*(klF**(_HBag_w;zS(VP0Y(O2lbMsH52Rr zD?pe%{IINbXY6slumF_4HOoF0-g6dweLMm`_(r)QL_KoOe`d>0mLL0M{mAXnv~*2( zURp=iVbdYw1wh8aQy}C1#U=Uxs1FU>HPb>S^H3?q;}J>lJ#G6t0`3iayQh=V&O1$f zq%`t-=zn0zO>TiU8WsAw%^&jRr~V+iG!h63ddfHBIZGEhONZydQ%1zlAXI&f-Uncu zYc=2~h4K>j4&5h{x8)v~qhqvHNl8mO9_DIBxxEhMo#_{t&7Z>)pU)ke(@V=k8=K!1 z;9Q5bOp^^M_oc&UTQ$qvYK?BB!IKv&uLD}FqRhu;e28YQr*`BV*At?|6-qu5U&amL z65JfDw*onsy1g~y8bFLkSBz&TC4xXEl!UVw7Aivdl)%z0cw$UsMLKDKhTJ-k-mrRo z!P>DHUBo?lBRFyo!-k6F4t@0Z#=`^N(9rI~`qQiM9nLU$74 zn=h|fN>H9DpC~1S1058}>>xVBdbwSfTJ}!CJTLPVr?QG;Bh%F;QVWrB#$2{BN(aJGW3f#^ zG2OyZX`p#HV~2dnrMu<J@&fp6Xb*nYO>sWGg{$R6{HuEwtY$%x-5luaoMewR+e&*qrF!aIYuRd=rb!6lNDiZc z4P}$gJxvdls9uu7+2OhUR)s#Mrtpkz$ z!VzerW#(3uC%q6kZEUSV^Yz?@DMAN`dx2s7#tP!*3nNC2lNHIA@y=K@-X;AE&ZzIM z12%D3avc(fHEx&>ryKN{Azs2(cjQUzK6zbz;E8}n(=C5xSVTO!^^Q;R*$P>2O=jxd`_jPk%tl4XSxGKH-In=U3VADj zL8&5kdW0<&3vX?hA?`&}Cwbh$=8+DSi4ED&aR)YF@pD8v$Sq^WYP5>2W`ru;1bgJG zaaLa=qvssip^tamNJbRgeS8#wu}M_eNmLq^h#n@MR2!xP9LW)^6s-@9u&K(xTK*2@ zZ%S_&W!GkF?gaG_498};QFi*4mVN}*iBe{HD6Hh_`;mg;AW7IQt0zF*fJD6#Jl_WO zkbOiE`UeBQPs9o|r&E&+ai>#hIgSO^qUpz>uca8!A@sA^J@x^+*aFZ+;?nCe87ZE? zMC=Vg$}H&%{7*`g12^4CT;2--!COL{Z?LX+^kY%`f#w0o$6!3|o=607QL1S%#A&J zVd=VQ*D2Jk%bk$BB3R}G!VvqUTK_(I!*y1B_b#?y<_I?OZ};`PY4QWy#Xr|{?{fC) z+NIdRlOx!1K^8KVxS-M+T{;V#&;=)xG0b>rgli@)9lt7AG`@@D5^ zB4$}f=(7tMy|j#dg&Y2S{p(&#Hbez-z(VzbdXnXfYv&=oUDAVQZ`%V+>5K)7B!&WA z%J>8HpY>5hf3=_EZ@GK>opty>D|bpJ&i{{4(o(|yEq9nH*}vS+kjarSNy3cnU*xK& zbX!{6pFjf%XmRKr#wpfLBvZ4p^>yT=R? zmpwn?d~y3U>o%))_I!u$=i`_S0ExV{5bPb;(}BdFV5;&wAVF7cK?Nof!rZbJ%&u&f z1x59PmaC_=a^L2U&vc!YqsWI; zO5^Z(!J#;v9oBM16{Iv>x-E&C<8}g#6EaoJVE?ZR8bSaABKI-;Iu>C7ra zo=SC`;VXj-OG$Oh%Q+2PIY1bgR`?D#ZQ=B|tOdrwWis35 zV$!gm=43nL5GqW>zfG^DLg*0Fmg#9Q3Am)dK_Kfb>RA0dt8ds@7%!d0Uwwxrp`ZBq z$g#SCpj*Xg@ML0~WR>}fWw3FHTRWEZjZ#;p}@Tg;gglbvO9VN27# zyGzR@>nIO$)?`D`;Ut)Fpix@2ZxGi7f4@gh|RR+Us}c$x^)e z7|{`2^vL8ct8OE!6jrbB@t-IURJIsP15u zLxDz(Vp73zsbDezl<6kDS*a6 zgi)-{W0k=wXS53v#(MfT%~1=2b0j%2)m~TsZp?CBr#$`GLrc|MU2VlaG#I*qg{D*Nsp!o_9HQd58^s^0_)#^1%M>WpJKthaeV3dSrJ`Yf`e@M`q=YkB-)a=-cZ!fKlLkkm+lZEL3i*- z%b-;~q*XnjRjf@<+6PcksSF}c!LGSPK%@4qc;R*`hB(sFeno%%#7-CPcsn2?u8mU+ z*(`9|^hnjfKetwt>QJg*p_ggVzFs@%|;I-6Pz0 z8f_Z6&J#2OH`O!DCXVIb|BS7-ZK#N*5SWDP8vcM%albtSWiE}(S;e6YR~Z(W5CKiVL@Yp z0@>HvEb-Q+RVgL`Py4RU8~#OUhKO$|j_Z0GSXLi-ld z$m)GG{te8*H$JX>nT+Q8pUzQQinMU;8CvTp&EWza<-Y-bxjym+qN}=Aa}j3M+IC+V zI$qbx7R`cXWQ&=Nl0YDtrkgb>={%|qv#eHXDNF`9&k@??{68((I_2JaU2M6x(;E)3 zpAQ^64H}{mZYGYOSI)l|`OwBv>AaPG{dIJOwq+Y0FpV22+S@buPPJHL_s!X3Fs2b0 zrfcz&$5N^kiL>={B!^Y{Fjzy0F|#M$2AMk4CXU@v=;WrhCfSq%z@HE2(H^vY4Q^(T z!wFg~8ltKV%IZ2II5kYGo9f+eAg}~CHXPj<3pvsb0+9m;5W%KN87%4AB}+AR6r2pJ z_1u!w(ukAM@67d8g`wL#bFGuKZPXd_$#NR&MJi)sja(RUT_~!mVBm|nrg&$i$=NGT z&?uA=N4VYjFhr@`YkIn_+d(T-Mm=qY+xkg~vi&})@lkhTXbHSdp4SU20og4|uJvhj z#EyetjyBHwMdD7w#$QzCi+#vmpo&IFSxVeiH`hpqBV$V-#DlKx9Uh4OU6{oBLif}v zOQw>p{glU0O$3G+ML@;UtU30lA_5~m^&=oJ-jdKnhtKN)3viE$aU=_N_S}(KO%x`B|w1 z(3kCs7q_|uG~yNOt?--W=wVSGKDlfnYb~8#eANQJri5Dyz$`G10|8jN^`(d;u5MPU z8k!80S?RgYk`aakx4SJNUG;qBmGgV`;T*S>Q^@C+7CyW3ih}{wDiQ=L$=p7?!8AjV zGzi0+RI@i>0?p{H=GKf_jA7Z2~6x}!h~mV zFI&~i3<+a~Nj2vz4LMZP)FC#78>f7rp`@vWtl;6&-$-#`544hADBEog7^$l!vV&>V z2|au^ho0YJ!lT!W4?5k4h6>N((PGoxvE|a-5#`d^BW}~(F=x}nrATHE(!x)RvSh7U z@40Ij?*U`L90rCW-6ae>R4_ms6!TpUHl?b|J*`kK#41wLXB3(T< z?a5dQ!es_FMUW&+8O?}2Q14A(O>(P|st3k7mhGRy-)1A{8vIy+k2G`%?Xk7-b@je@zW%6Yvc3Vh!_iwouJ zU>lObT+JFZg3X;z#rE5P+xG^a!wC6e`7BZVoIn|bj-VRqor96sxosPIi=Z3ss zcIg&oufRTV-EOVXa&8sBX)3*IYExwg9B_VA4;*Kz56;-`mcbd_|x zF8a8e|DaXMSTm^=h`1OAOX{;+r}oc{mIlh<9s8&g%*Xz#Y4H-h_D|?vk$?Vk$94vaf!iNVdMObGBH4En}G2mx(%?6 zwsy96-yLAAbRCdqJ70r|Np7WMY13RZ|Glrm+376C9qwS?VEp#%nZMkgdaiP+(`Bo1 zSnUkB2ML_JOlt__W)%}MQ{zX&1ky1FcGlupy;3N36pNbgYX2m<4jX80o0(2JjmkO+ zx8Mvew+fDlo^spRU%5GHouAuUdSkr64M1RD@kV^!7MuN=q_YBj$~c`gPft!=bcQY<1n`pm7u3uiFOd%iB!!**v!`SmmG zj573MQR>m;YEMbdzg2d*KJNLY7~2ub5gvp+|IFUpB&G4Fxd|B0pNYV*BT8(T1oem) ziC$GT&F*>fZxvxfU@@a)M0^iL+HTQ|!Z2$fDh%N;IrdwL{nlhEX%itc569On^1RH=aLlWzN{bvm=nuDfxZ}bQ0yKl+CG;~kjz$0tQAdW zxX>Fg4072&YYi%^?n>@U0Ujh3TrpH#Bgera_Z+Y3=<+D_rK zy_}4p^!^T#2+=&lqzN`Zr&Td!1V=q%=C$jwSwbE6GJ0w~5t70Q4d@XA>YzUQ1| zv0l}(q1P}*(&F9_{1^6YagLdE?%Xv>RBhlb&``h`Nru<=H0>l^$3wk}*0!uhRZ+Vo zRGaiF_3ll*w-521k+d6!WXmh|@RB$`97Jl|yLbDP%UULG{|*40xKgMMbt8d{7Fa+*)Z1EZMy zbK+_VkEB4tAx&zi4gmSne+_k2l`<&rne@N~@yUyO~kA1`b<3Lspb2%oa&cRVkiI z#@v#=SG+0wR9PceADV_UC#a~{oBN)K7(~2z1;+-`?8h^_Q4O5WpBd@J`9Q!{iJM}C z-FP&MIB44ygA|q7qU;|*@0f z{eG3>{}7e`p&pClrez2Ck%MPNiWC*@;XDA);?OhO77f`%3I7yINW2=QFCEacWUque z?E}5Zk7z{){iRM?&-&b+;&Gbo^6TpP!#-0DQB*W|Ogv95IZp2sfxyv$aB|P8rooLcJKAVV zn}0DHkE)R)Iq*!Wn{BX*16nhh0|R?_x^I|NqLHy+RSjQ=1K&Y~F6~Aag=sqek}dmV zNRLW4pdctVvptwry}g&3)4E2u=9^HOe>D=(`(f@-xM(;s@Mr&PR{;F^Jr#n?uf7r> z2r)v57HLJ^pe0RmO}}QQK6;vBHLcY&y|lN|=E~aw=dy}*7yqh2yPogA(8v0#?JWtiCBs159H$L8im>>8(LhXZ2U z4d!mG)%wTY^?gg4@BXtEsLZoX3-HHYuO);#j|cu$D;czur%LTVHf+KWgD8 zAUFSdCFvd>$^LkT>((F=3n$A9gNy`)V%ec&!}HoM0kA;vu_b?D?v+I7vDl`R8Cv|k z5OMiyi^kH2Hu=Sj1K(`ePI=)j(oKm8*d(c3c@P3njS$_{5T1#$#awA<@>g@1@}vXv zAdH233lW|zqIs+85Q0L-D!EOf>eLiSuIWA~$vv1dKt-NyXu9O@8g+~P;>@(FZe6vc zHS%WrdVWM^Wtq^`(Z0@<1sj`J+xp}*uPvv$>crZ3v~feO7g$?+aAx2ZxNX;#v%@2$ zZAbh0eu)~2Pr%opC$|+eCWe3}dpy13wgXQ#>p}paV+mWlgpT}hby|+rI-Zm?IH7-VF}N_O?q^B^Nhyz%(S3=0dh~5tAn&Q8;DYHcNo&R5jks1>d}vXPw(v z$pK14-p7{o&wNeJqL0qDkXS5G!>HS2ti(6ck~eqe*br&7{ed<$4i^$z2V%If=ZYX=^N72l^R4Si?m&L|x6c&nWCme$}wl1S~%+^D`KPHI328V435Pe^3Z zr#go}F=}kDlx|c$Q{o2N@=d_SlF8I^)%h(T`K#u( z9dL@ULLIz+@1XzGfPvyyCFk8d2s}tXy-_tPPv7PN`LdPrDA$= z89}U{`h%X3h#?j^aX47G7h$iE}bZdAnX;xe^5 z?lu!p=A;#ixo*zul!IiB>&;n{{b)a&pR3ByF>7U1vVl|YIVuU?yTGEi-53TL1n1evFVrl1> z|MhH}(6CuV(w&zKl|L8%R?9J$ zAF-+Ipe~=NRLBjXuYPz_g$s7+*_!4E*~!w4@+ClEJ~&XiBhUn+TTmKX$2l`+N~xUA zNSb&WRpYKb*I^~h#AL4=r2$cM)OW~kp%QOQSU8Gk;lXiVWb}%@5L5kYZBHsJUInZiuySl58?!UH;Zm~ z<||d_tALKTmJVNf6+;+>C!xQmO`97qaNL^G@M-uB(sj_gzm=X&AhY&gdOp_=QJ|@x zTAx?&d-;IfUPgETe#Jc3`6{y~SGQ1M>zoz~qq%aSUI`oIhH``gizgdTQG~AyHUdxu zd&PX~xlaXq$^7csC8msmYN6RVS4JC7){uiOXumqNgOeb%)d4YEEh>KDJ{(WY4oX$vLJ*0%t0n<0NyZ)H>#*0+`&^<=!vg#9?1~UL4D3K zb*LzuJta)SK@|l;h8V*%g6(Wk`d!zvS5z*%lf_dLe|@E0gjuHO+>RyQ;PVH@^9k8U zp^$DqmE{A{2PJ8Xdl2c?q`FsNcj-)PY9H?mZyltka^6Y$p2xOl_R^PscCcKElR4le z#Rr7ngtHeutr0cB^sOvA2VoGKwTX8reN@M{1xMWUBVk>bIo9|YkU=$95cpN>s$pvp z^@O|bWy4^dAi{YPH0Zs*3R+=Y`MWei^f!(WL&4}<`Hu{&H?GXilDb0MKN4SL>MzoH zdR6IQ!5j_;&WQsKv}-8#6MYY|H_0_sdG@DU;RZe|pk3I#jO0-RZ@ zWtE!EVtp@EwV@7(wjTF&l?)%js;Yr6Vy|#U0&;;Q z@lPj1`oI$B!x&$RvJT0vxJv7|sFav#qDq{?$>z%OkO!w?oF zVNmhl;Ji!N3P3VOiRd3-x9r3HBHaR=|6+Gc`|76C>$+l>KcKd$hGLY4qB59JW0P<` ze33@QoETKv4`jJB--q3Vk#6+-XK}_ddhc$3)+uh??~~q(F{N;=F-3&>SfPK$sM5H@ z5*)QFsq2Xqwv#j32Dw*w;tJ@!)Sq@ba^3EbSs#868+p&b?XhZ^cg;8yp;3Y29Nfim z^C$cTf5@-&s4D&PT&;NGl~WWq&efO}E&$e~dboJ^pg^Gh_-$DyKSB`pHY5w~*kSH3 z+r?fV(IIQ7+kR*O8q?Iifi;wth1?zGaxC+#{2=r;{F84KrrHXtPCg1*Al3Y+@naY~ ziebpz1q83bH}*mmC}O_kL52l}57^ElcC}!26GZWXt+FJwLF9NO?ZBe=%MMX@rkA&2 zGIzPhvX3K51;Zq6C_f!bhh(KFzQ7@L^^8ZmN6h!60aW7e62^a8YkhSH`}GFT$e3&ZPm{N|!c*V_!Q#YNg?wHke8P|R0Qa6FT>wNNZS8Xukp+tkMd7!~^-j9~( z>c`O3BA1cMvFLu3zH~`@fuj%c3WU1q5L}aosKXPCUb_^DWY3al>$#_rE za=ehb)UtR6fftfvSv?EcGl18WGnqY%ZANtwJOZm2Pp^-$8#n%FI86+b|$HER&EJnnDAt)v5MQk^-XZqJzt%ojCDuz z=fqp|!1hCr6c8adjpUX3FqXuF@Y&)B@xqagkUU9GR6ayWYq5SJeO-(_5>_jn%jxA| z=@ywZG{*B1u)sf!4>as4>AzWgFip%+w^2@DK72 z)5>+59TPQSGIhRsu(5dr%Ir)wnWem_&W*Eq4i(bzO$v8%qjYvX?|9A^v7+2cb zK1?t0f+)H$mp3kz{~d!WC=Fa2{?~5P7HwG%lUWCoY0=>V(s=q`NLjV1jk6>N+Q2 zLiSA2c?SI9M(!o9_OcMPAmB#zSx*9XM&s@$&mj&+q2uT!8t?THx9;xM)f8)6#3%Oj zlBaH&V8pwGIZ5H46VcWqG4t@l+HP*QBx1d!*H=U!+}E2F@5ffr-dix+*T8u#ENsZV zGmJGrpfNz2C@qsoli7H1vi|?{0ND{)l*uMCqg3#ZSXW(A&pE{JH`bl3PTF zd~>6>>U^L2=Q8g_YdDw=JtH3o&k+(-@Mb>GDGP+5cb z9w^QgOv;Z;wF(TkxZ7#HX>#ETrtQATD{s7+U}S`~Q3N41wZ<-m6{Z#CzzD%wP2eiM$!sVJ zx{hhVy|7m-)j_=dYI@saXKUqlKi8(`%kQh)lk-W;49LvRzjt^cal7Mm(|Nn|iF@1g z`oaYea?gj8J1a1VChW}+O1Ce9;lmMHyI0BClM+bl1h-d=tvj-MoUFOq$L92g+LJx# zcBg~kBNx>}SBMw(04MS#J`^kRB|Jn$sEcx+5wE*Y9+n&a)*hx8_EsFG z7yi~9wj1_V9kXk3_EcSA!&zEgVdr(z7;J>uRLWwF_o~fDzrELVzEtHZ%!k<_x4hLy zs|DgV|8mVSis__7M-PPgiTRKyQk#|g+T}4i;iUeu)wM1^#^*sn-u9)t&t)UV+(ZZI zAL65Y;X+esoa|}Sx=Oi<&9t}nYPn2!$~0Ut42KE(@?08+%rjaaA>g~%r$+i5Ca>G(BuHguSHIxWI3@wH2r){jW!r~u1@a4q>DtD> zZ0H>QK-3TJtAKnT3sH+}HYB^11u7EdSXiNNQh2IKzHe95h?&npu9@#Qw+LlJfv=SC z&SbKoy-QcvYz`#C)cpLAV^RtP$?Uf}ds{TJ-D-OBnA>`Ur9c^s%nVMS_k0xu-rJh4OQRIp5)yrvUDu*E}RACS^) zf&^4c8TBt;mZmP--sxSZBh*f>c?lE+c&>h`!ngxVxmH>Vcej1Oo|8JL@36qyEho5+ zySi<#wxGVx8vIjnq(hwvr#C#caVwy#3Ry>N8B%%^#|ay>k*=Q`mlVrQ1;eFSjsgH8 z9&n6a(z1?3Mk(gVNm{8X1G|B0Oh%82 zrVdiO#qwk9rs8Jj%F0Y!odvu7XQL^%#{&AkgqdD)flczDbPEHg88dfN`~!dbA95rIGE9;_20PjANxgnwiruM0 zKfgv0l_6*jKMgqYun2;RyT-oL&E_WDjQ(mqe z4SJuDx9#C8&==N2ycip&`dBDC$5gp4?=hJd)W$leW(`%`U=jwef9N|Ee=K>W7*XY* zxk@9BVRLEB%B5tv!HWa8s6~+E8#!-Dp75yy2s7dznmYG1B;9iI`GkTQ&1Q1#W_x$5(I+7H`AhEp=|UBqxGT_Mf%YH{L4wK@)VK);y=@ zbxuy(p(&1F=IOI(VpXF(_V&CsOuZONXVyt@4^*4^4&Zh#h<47F;yk`k9BY+vmf$nS zgfa_=oSC#!3gj@xs;j}bV^BLslt8Jq9er>jvxP*Ck*+lT@nLEX?r1aBx+B6AiSOq7 z$?#1U6*{FYcDJ>H!!W&Zu`32 z?N5f}C`ihen$R7eh$@_>1oI~1uPceS^!+J_EY0h4=hL(-s`->Gg0{ZPr?QyrRm0eU zC>&|`yiwdUb{Qd==p3zMe_T)gghmm)6BT7e*y`2ThUfTQ&m%a`Z%vePC@HQ z;T((zVn7^7M33~baiecZ?JxeE9W|wZp(EE;lGQvRht2pPwrU-@t)WbZIdMUquOp=U z?kW=go89Zf4-1Kat!9n(r;0|a-Ro=jgefUZUadJyu9oPpHm=)UWF;IOKmWKcm>rt3 zVzwGxjM;G7-7d$vNX5pStVe9TP1ogKmhbbOul(i7MrKA}NU&ItF;v(sW$sLnWEfdw zc)OmN(`CeZ>@LU97UOSsIT?QlBqXk5tt&t+5O!<O4;+|Mr_9{YEf{r@w2AZ_8~{QsIgP|^6GxpFs6&Uw&^r~-W;O@e57f5V{02&ES0 zE`W+gMmNu8Fw$oBrjo*LzhMi*?}x!;@Y{$-*pU1Z8FIL2BoPcFWH?`+sCVCI(w*db zf4-hT`hZn4;6){QM+VGC+|h~B%tv6PE85nB;7gRZAPW)Pl($qErt@y>nL0>ZF*cYo zy+cc-ZBdlq9y0}B$FLt*q1iY`=riW86)Vg)MU;xfsn=0)N+fK{qYP}q1xM_=t=FHT z5O-7JnL2Jqq%;j~H9%9IGH(mjfH|G35Dpc3X;d>qV~@;oNtcv@2{O2Mu5Ib29%!3NL)iPY8%d5cn~&$%2q;NR z2nLatSQ5ef=Rh?{n9 zU8(Rqc+1GAO&!EnwhuBJD4eGb4tycsTR1SF7ThFZHxG1&U*<-@M@m+JPemP+oNm6n z>tWGF1)$=bvphnoP4JF~rDbQg#kT=Q+1_`rAfnP)3%!OwvL|7Ii1|&yCU^c#eIX(1 z19tA|M!mT z-`_}m$P*64_Duf7BS>R~aYMkQF481((VLP^V%;~S4sfq7+;a@mb40Dwd`$iHx{TYF z`3D^+TFBy69k4VlG}0R68Z$9#)EYh1t2P!Y9x@^`>M{Hwq$FSI0?do zm}=@7cHQ}7HP$s_b5;`j4(Faj@zcpI@3eGF#U^MG`8j|Gm8!%04L1r)?J=@UR+Ed3 zN9$G{F-Ivvnb;GoU)DFukW^TkNpsFOEb}*EJTCg9QOa0y%G)}G2DCz!DvnO2Q&#(; zV3EriVk^_{FnXR_NtJ?(+;5{V2Gx-XFFY5Kv>`VH;e8saoy1vip75hp0y0bP{!MK| zWSosEoHl?oVMn=F$mACe^$`V#V$F^3If~=Hd^cF$xfiCM+GG+eS|DpKsOl%V>2-z( zw0;d+%G`jQ3Ku%v?}|ijKqR93cetL1T->TnODnSR_^=DOsq#rkh0WuMN1gEbNBas` z=k|2iC+zSX1+IBP$61r7*MY{DxU|VQY3^6{gEK@n{brs#0bEga^avQa`vJcQL0Mm* zTUS7M!Jbm|gI2B7{o{Y70-5f~J3T~L`}Y&j%`XRyCgBz?TNeK;>5k|ClKlhy&wK>z zk8{U9vLMwtV@=#YI*G3I&t+0~5@5N|z3$!LKpiL@FR*GU1`8T#J*~6_nG$A3v9tw( z#pb-KdL<|4$55|Mf9tvvdd$D43?T#wHE~(|hp9tC+N+)v%&}TWopbU(|D`2+lk%tk zf9zjyzq50!|36x?|7rhX`oB%#$-mK!^6;ZSWHd5#0-RgN2Ov}>G)>4|f2$)1$&LKM zEPWhDx-W(PDyf(32WH1#}-l4AljeC6}O7=$gwaJ5>ZVh}c2z14W1p{f?;=xJn? z%6MSj9D-}!9%S&P&FH|^+>p<%5^0%hKK`6_$jta=y-bkh&5E(JPuoGL(wa}>_}u;n zkP+gBYn@WG(q(q`Tw>pN(=z(r^=nJ=qB)dpx)^-%AMK(qah3>qzBa*Ld`yz*0HoSonX=7oiK-<`s>le zMBF8Xr2F#;lzXtO3)9Z;Q}o!C)t5HFWSL?mMxl4>fgjjrwy@Kp6r+SwB8wBTNR1a? zxUef3K;nYR;_K;Bh_BlN%=`s1pfa2^Ayhy7TnIe8T<*>XKN~KP8FUP3fFZ=3SA6Fv z(m)${YaLuvf^EeZ>(x3{2PYdgA?qc;&>=eQ3z~26Qz;G)27W#;EUk~FA(mx*ghwmN zdex&mt!N!)%wr}~Ib`hSo+x+L&_C|1-WUmj>j?~FZJVU;olXl@fk*J0c}johX1O|A zptR9q{zNuxB4c41S5**_c#1L@EiBAeH$N$xMZ!EtMoPN zl;bof$LaI>HMJJN^qxGB84{F{95Zd8DJH?6_~wipOFX}zu)-+h547pFOK|Ve9X|XY zAxYbHftm?-9vz~ifa?v%cmq;A zI8Ad#;?%AbeRR@Bbr`P90lm{q*y<=&?no|~o6U>%)-+`aMrEVn@o9wwqtJ6*yIZA^ zLrSU|WBpzNV?w<$B@7(K)#AJMC-0DP@9sJG88>&5q!uNMCkzM<{Z5+u2!8~5H;Ypj z33Mlxg%=9Td)HOCl3y&w9Mt8k<>mB-;XAmL>9lR9b_nk^lh;EEDsswJ>Bm*8-Ds+BJmLqNx_^@%FHk%MvRrQU?a2%cv}d) zM9Ds=$;A8#DC*#etnPre2`+wC<3lbUuIUz?WLudNI&07)0qu7sDSV@h3P#_9iW-U| z@%nj*?r*>kV|hoO7)GA{9ExZcY#|@Qf);d~x#*Y?YNt)RV1jV}~dJ?~6(f zc4|Pitg59~Q2 z##R$>8U}oiiJP~s5iI98sv+NZI(~qro(h4@nNrRcqrG@YKaZ;L_6?NEnKQT2l<)yl*f(NL0;O4Qi=^8#6Y+ zLZcuj{eeN+s`W1ub*3s3kSu!fOexfWLaH7##Ri%d1WdAr+``&I7xnXTaI^oIwI(pX zNtM!DOqbAo10tg0oV=o;PZ$UX2{Z@&>SCe|mbtu#l-8_gbfdP=3900tTPC$H@VJ;y z77C9Ma~MKi`#2}b^S}(D^n-`g!}_BUlu2mz7I6z*!f%KRsQhbL2HY5W(k}z45B zcPv-2;S;&39Yk|SWRmDUXB;?tqU;M#$IuVJ|2kxBuEF|G{3znOe*9TP{%^Y;p`Q`n z+{VyJ(%Aj~9KiYyMxctd>W_!O9~;Da>3Tlj-{j4!>#M2JM zOHEO1DD0f{E#$4;_USW1q&W=8-@uA1s$^d*W|~WIYR*cKi1UMyI$6>*7^zEwq!HNv z+~cM|F1#`#g?3avB8!Y?Qm17bPFIm~fDY$4*^Ypinr_QP?y}mLcLLsXC=lae}6Z=Mdev2;xs6BeNe_a9WX|F}I&fZCON7PV?;LcSg6=r0EAT zr8Talu0_Cz+(ob?eDgrxtktkwvMYHn8Q>%H<82Rr_*xJ)W?pOY zR<4bjRX5&DI|4l|<>@_&>!KVdkP^?KW(v~&gn|8~R)Ez`U7tJOh$$!En;yP^Js4P&9}0)ON-1Hdlvqbgf9Eri z=ew{J|!tTs^+QObwz@zNE>djRi+ux+^&xGEei2?K)-X zH=24R5JF+AJuflQn8BKPDF2f~S{V?_v}m$TM}i7Z+o_Y{Kf9DV+P5*Da!lM&>Qe~3 zW2QF$_yWM%Q7dn=ZAS8sGsDdbiU`R~9OLb`-qeu9ZfV!7E3`~@_BqRj#kAdDq;uMw z%qc)Y>mIsgvzvUv<_OvZCOkm>l}WgOV8)-Ok-SrU&=vSKaw-|s(c%-_U4pl!$O&}I z1_!hrBre(DM?K&89_j+10XDy-30~NOAXUPO@Pd(t!wjwj|JQ%7oRY0RD3na31-?Vp zhTmzS1%)8JA%~FgYNz!D+H~lcP1GZakDNJMFnIYdP&!WvE(~mpShkDT@)f`=;yYkn zh+K_r!7VE&RGXeOFyt*s`k<;=+GG-O}2i93^k~ zjlp^WXjeN4u3n5=c<;Rw%-~OF==bwGEHISYSW)ZfQjoUBg{=+vcV`R}({f2zZ-yp(npTF}|JKnqKVd?C z{xGMLe^MsL|82VbNt6E!jsH>V6(?*K_>j31TAlYX5f#MTn>ry2#mn5oK%zU#0+mP- zh4U}SrgvoQFGg`yAHZG!{^s-%3K;Z(-N=V>iiep^kg89%xn50XI$p;etz6^r0&oor zLP@r2`-X91{)VizQyt*$>asOh5Q^$sMeDT9ms!)5L8)-IyY5o)%L1dUvd=S^cuOjTduz507#-V8?@~4 ztzVu~J4vu8(|ccRjRjTsfDraLo8(44+BmtMTJ)eM%a-+2e`LnPee#Lxk@?(#9-FK> ztZ@H)8Fw4ss9Dtx;S#O1diG)YZp_=^8lWg{4Y#tVp5(Lpbz?Ak_Yk{m) zDUXWl@Ee#$(P{}uyB)|2(QxqMPNA0-rNQ!<3)Q`+v+VqnZhh>|&(?eHiwk-c^L834 z3-;;1o9xyc*kqcc7FB|7nLHHqvrFHa^=RgG;<3frxc@A{QVOznsAbu7G!9_n#mtCX zi&ok&{awWOX+t0w!x>InUD6xE?tY_JsNCg#UgEwl4ZwY?;&6@;-zuKxD&fDtv`>o^ zq^JGMxX7^3vtp@xWje{%Vx;4B>DUQh#Q^s>r#eVNLs{A}(nb`j2P<0aUQ})w2i^$l zy^(C?_Gpw44zxDrua3Pm5vZ<&BW0*VW0oIigtedpOcO(INUWW{a9>M$ssQ)ymr7An zK)!u}&4oi-5!LJRJ$KX9PNp>vuRQ-}IOykx=jlbEZQ^@+z>lXvbmbHd_Njhi-VdJH?A_A#v1_ ziQR%1mW8xsz0VSH2*iQmM{n@%9(MD925_SDX910PBe~i_7YNir)h>dnFyfj?&1Z*H zPvT9_5EwiK5W3ZC=0Yx*H)?BXz4q?CGDP)?CWrZzRGg}bSrjzP3UK;J;TE)cz^|1z zbdbw>fJa~dtsfPDZG%q#i31#j|D81D{}l`Wy%E(^RQ&M`{4LH#j9pEc3z(l9EEMLy zPUw~=&pa;7CofMGau5n8AR{FMf1P5Xx$!oe)*N%$$b_ToHH#rvJiW;C*w?ebW4Xe? z9!3CR9WWi+^{nCPbFQg6lhM-i37d-(lVvu@j`n+}6AJBy0*~&_W)lPisS~Q6dXTp~ z;ty?|ReVg!Yw4|xM1La`O5|K9y>6;~eh{5d?mg{beQ6*S?cyB`2m|T}3GvGq^|w|M zJ=t!0;5p!QD2FL9A%U|DA29HRSF&Az3y_BxN-R)ZDCT`glABf(l+y#qBgS@NwQR65 zp0()%IL&S?CbO5fhLHx$qq%(nFT(Fe43hPJbZsMJp^Qj!5ke7P?I0qj9In644vm() z1mb-{)Wssue(`2fSxXPVapg+K`43t!kLLtE*?QJ>_UaKW7w~3OquA=?SIdOyb-KA* z+N%qE=j6guwjx#j4`+M^CIV4eN~Hb7WmgLU5^hRi=3dQ#E+*m(CS*Xtn2ONc&H3O( zxJW)B$&6}3Q`hbvtdr^ z2oz_b^-5Xl+6EC7LaX*{27}cQi*4`4iRwcs^o_MK{j&z+9jl!DzLs|uAeeV!Oz13! zLDIT@@ViG@+6shn#&orh-nWnGE#BZN5Ugk3c6Vpq{#gRzgo?AJA@q<87n9< z-K#+zf-s2LyUW^7zEtlnax8^p2mLK-hLhAXGV*?d#@69jGkUS{36t!j+DxnlOEdC_ z)C6)eUhQQ^zQ0HXqiGsj8D*j6jJoyKn0`(CY-;EW_8!;d;XB%>Qh(m1i(19{TZr&m=gD58>7be z>R7K|a?PYiHx95HqWGZK#1`1JNB=ui#|lAomNYtF5P0@yAf|h>*ZR3r3~e9wRWc$O4ZH2C4chQv#c!`iL_5a9Fs%0)rn1 zf=~mveuo@WY16TsWlJdu)x2!I;Av{lZtko{-=1=Ic<+z1S)BT3_~T@?7p`S$=@_lh zMRqI)1*^K^{7YjfX2Txi*^BoP7qTpPlvZj#B}0@5f=ESbA8uZOs1|=tsJ_^sy$(7C zt@fz>seni$$tuNqhIS!arFMn~S>_Tz4IytUMFNcF34r*m?vP|D=)lni>G1QuG z4CAjNY(5GYFs>%tOgi0Fcthb&1a&xQ7{hXb74 zt)1`Yr%NzRAQ`>UdY6HEm6pbW<-53}kM;}sCmhPb=Ta12quNr*hSGi6N)qa`d1^J+ zcqbM6WLzl(4&^n$D>(HvtVVEl?!UaXUm#~Wrmx#s`fF*;7lUT&4vY!Yg~ouq?bL1q zApxHD93_#bK5eG%e%}R=5Y_B-T5I7uC&G;VrgqC(Beg?T`dAufwARJiL{%N)4Y;6y zL(@M0tp#KR*Y({0DSI#Q|3B6+|K{Z(V(ak#v4+|Bv2w)x&bo~xvnMq-%lIvQJyg`3 zFbqROAt_-dPLWD#(?UT((IRs}kT#qK@x->#TfbQY^9_h77K?_e9EWXa_L3lS&k5{OD}ch4lIN;@AA?F}C-HnXc`Ua1CHGQFL>+9K z(JF?sIAtcjzx#~^o6WuP`an#V*L+^_)oR&cv@H0vlEtvYossfHdbRBa*YB#`DWQD_ zV56?*Sb$E2nzry71f1_#k+n(qxr#qNZix)!yu}3tv2wSXF{~mb7r!C__&y$8sJ8k6a z)F}2H^K>Dd{)?*U)+;M$wmN01xQviNW#sLw)ULkChs*$!h0a_HkwKvd`W58JVFI%m z0|xx0Ex~~P!rBkoe0zuAeD)IK7jjeUCyI`=YYf%Q=oHvywl>r%8pnKtE;v%V*1HdW z?$+O%;5Od7;5OXb0G&0G+1od9DebqM1W*K8fg|si-A-1_r^?NkNXwK|@6cv*rf+fds1+_>z6kIOii3`xQ)gNKhPkU8S=Mq#0z}J;P))a zS4=B2U2k|@NOoW>Jm*io2YK4V%zu)A37=`oc>=uD$o~wG;g(At`=dPK%<<-gJ!{Vm zoRu7whgdPH$ZLbokfr0oCgzJT3WtJ?LYE*GYv)KJO6Aolvy~g4;OEY4C5JYR(=+^j=Nfx^*lgf5 z3lW-B!kTui_G;9M#-LQS{WDP-LC*~fv*|CMphd!@weq(}qZC|`8D@tX+z>L->?xlXJ5)9Cc@*l*8`pD>?Y7Z)UtD;X*0rO6=Ec0k{*TG=oC=HJ{Fp{l=sD?Yt zMd9~TH-IXNB8CM}W-2q(5{epVwMWW`kcrNNGfDtGdQ~qdnnSjs;oB3HXJz%}BQ52# z<*Z0o$>}m!XpV0&Z&}fcPV3|x*2tMQu{VIr_22WS55if+nDZze!xWIslmJ2~O)@1d z_`96mqplhS8R@zd+C*8(m=lW@$`&lTG+pzOXP~)a>9`5Fl}f7$#d0+Yr76g`L%B6K z&he%i@kH`c9G`u=1^Fc6$oHY8|QTFw~Fh{Fd)QT#FL*{?{ zu{pG=8uvYlfLh407z(W@8`#y29qXz0Ih4ju|JUj9-QHV< zOHDfGllxL8GWY<1QUdq_f%M|w#GTOSVF1K{01%*p=Z1`qzHwtxnP7m*ZI4SKvQ|}# zJdNaolqz|Ap^ZaNe>E$Ymo;oXt<9}1tvx;8@BaQ>Cmh$d%waN}PGb+0>fCm{_g*vQ zUH)2Gx2)-U((u&r`fjuR#Ycoo0Z6B_Q)EE7Qfyz99s$*sI_=HWTDogc90_n$eV88| z;XzlrIHRTo8$O*Ds(&x*yUt8>xEVULAL0OIyxQTPDk@Isv z8MuOatO*&-ym)(<%jUp<6OFTVbqok^cU@YG+2P)V)@JvJi`K>dR#wX^5zOXr?>B~R z$}KF$wGjFSN@VfU;q9P=v#6(pG_c|=u>U-6L|Is~8GV{k0^^^^lVp+jGBN5z#<{T< zd%~YHnoAc_X~U`r6#fZd@V*wBi+bpJ=E~%MH)`2&x3QJ6O4qSs=EyLW15JZMim4Wk*8Y#TBH5{O4#{ z;vxqPRh#KZ!Y2^IH}>j`DA6UurtJN`LgebAi-kRwo>rU180V3cH4W?BC{y#t!~;RG z7y{J&gC}gHnnp@{V%C{c3LUHsLBW+f_b8=PM`ieRgzwAaPrJL_2#e;g+5{n3QVG}B zSeT#`!05WAQ~S*@l{n|SxGfC4V}bcj)I00d7hIUpH#TdFk3IU;7L6BH6!29Sx@XGF z>D2ZZD)tE0Q}8JQftQMu7cae;1z{FI6WRqqz;$zhNl#Z+pcxioTX#S_JRUg&9_`Ta zBU{RiM0G`I8iE;o>}je>RdnY+LCCA=FAyx(y4VmS3N_%dS(rLjm94^vLv+%rRE}d3 zdlIMvU#8Ljnz+`tn^<-ZFL=?Pj(WzaI80rQNmx zAK`=Z^tw;*-wZ8YmdV_C$E}*oyGxzq9|o|y8i*;=c9c?INr4Dzo-V_i2IONwTEW|t z&6V=@KC%D~r3+=2Z)0h%SJnMa1%E1cGS#e(fy}GFET$^RBf^OSZK~+ckn`N%P@4L4 z1ZV7h+z7+iM*#QW?#%bAfSEy~KpvN{Y{E(^4I*h4m8H>HUFlN!wYbPpTD1mSoc8=u z@)G_s$_PHsEi&I<&4FYik_K5G#k91&abtciMJB9)Ba&(GKH}jLO%0-n4imZzFnmy# zjX4~=(hbNY-5+slc5A~a(%uCr)S3%(x|U)rM@Q(Gn2C$QlnrTyL0zh=Zem<4Hcf2Y z`h{+q?Y$oRWXQwkkX_AWc*5H4G?(z^D=;!gD0QNooAq6*%DDG%%A%a+uc)Vvb<6SV zcse_DJ+xb#em=5ZP`*WMzX2FSAxmB3aeA>C0IIqH*+TMiDnwaC&CVtd4o*-#ycV zIkaX%1$%hinPkMl@xc?#?@Hl^M)T+puB|=lv#2mJiKS+A{qXMVxYq7-%Xtcp&nyaq zEvk=5$t5Kf6EeD8@i+^Pa&ZO#{dqaNWx==}Gl%|(=8#36-5TT02Qb2=Eamb=WUCO+oG(>i_sMGUL?7*T> zC}19`2L!@dN5fh+fl$aMfxF_t$6QBiD&(>oY{Wq9IRtbRY9(#7G(auByV>u( zh+n**pYu;5Ki2M+?V&3VFE%+JaCu)JvW(V8U>GFk2Kzg#cn%qqhi6W6K`5&LoG33`Ui^O6b_IZ7yRm?} zex}GTlq)vAfq>?;Jb;`CXOL?sAUrT|4!7#GxXHJ;AlF0hCpuFaJCF|BMnQ~!Yw&wx zj5ntcaa3mgWE|K)umJ4)!N`NL#J`3Vc!>5(klkQ;t9Ak!Ek2;>K3TlP`nW4gMp~~M zHlImWD{`^$1k@DZ=`vd6liedD;izr|KQh1Uip@)i{-(iN&mqC?XRGM_il(pw)KR^; z*LvsaB-}?s{viB__g4eK^D96en}@uS2k8;o2(?)U--HS=@{;NsvCoNoN4Xdw3nk$S zrLV{(nWS(MAgZ~UpuY7?v{n!36{t%`W*edpno5`S<9n)YAw3nVB~2kgB#e}@2`ees zEl+KimR5Q!RnEgF2wKAxGnAe0^89*dSFZw#qPFA_Mqq;(xr;3V7YSjq(EaoONW)3)G{sQ(^>i!;`7J z15@pd)7@t}GNk!Oi$ATT3$%v(hO$#Y_4}p^Ye;y&(God*?X^K*CTPkQ02~d)>r1-L z&zn{(O!|*O>>8Ga;5+7irg3zBEynGDuqam(S9WxeG;u-*Jxo31-C5$rnND;L(Bw+Z z->DdiV^(^|18Vp6T3x7iYNjCcV|RjD(4ggKTCyJ3Igt4jxfbC)a|B*E$8xH|PXPuF zrWLo}87^0crp@GIV5xdzd#$Otq;t30Y{^Ij%5e z9s^CM;(6ZT;*@X|8U8{YeVK;m5SLn2!FPwfP2vgZQ?5)bhs7M5mBn=2w4HMS^b>=Bi3 zkKe+1PwbMmris`f?04)GJUk+NRz3J=BHDz2$N{_dW--4oV3z08eY-~ow0QpVnhDR@ z8>p9?3&s;;oRg1PsfdG1xE;#^C&{3+yOxUU^Rt&I3y_&QKa3CEuT}^z39*P9WRK;*-VIo=3nnLmW|6$_7O?M@ zClqDqVim*iwC5^(b&bS!{g z-2Yf#pkd;g1A?j2cWbJeOA7o&d$IgLrD)q3os_lX(*`ti&-HCfG|8uTB@ zkQ3KN^_~)#H(59AuV1o#c)Rc)VUhcEH!N-$(APaXqBq-t532bec$lwPOMm@bcdyj| zOXlEAYr_GT((F*N5bOygRt4CnAe|rv)WLB3X#(it-|dlBnr^_kBt&iy(?V2;3`bK@ zmdLmDfQr|xl@f%a>Jb?6@MsANfvcQbKv<1;u9)neF40`CZ0PM|4!-mobU9&31K%Mot>r zKUg!(jc#7n^hl?bwKmNu`VMdcWKL=0f1Vi{$!q77^^27 zIB2ky+3=@L4J~9!RAkGj^8+-`Q7dnob;vJahZC0R?*iRiBAr}{KB*ubA5oGd%S z_EQ&%nY8EFEPz%^?{%+%W1S2acC%Nmh(Nr}e2wDMPQ*hCAkDAZMxE|UEgao7ZZDZ$ zH;X7ximmu*LJE{E0{syW@-Y7y7k>{pm{V0I<=Z7KLUGT-z$YQvH6)^XSk5KupIE2l zwP@Sgjon^t#2- zuU1O-z4E*myNL&1kKZ_G3%7NnY$IvPC$2$Wz43tPrUyBlew7R!_#EK`yt3a`H4YfX zlMHJ}-c9xh=>`nHf&H}h<$Y{21F-g`?%%48rgVz%(8_`oNqgBLWZ&MAkTj`P|(@mHWV zPH>S)S3zO(-t@}t+Xu15hwO#s!8x8&a$_Ribe$vmd8-i-4z9Zh3$zD0i(API=dX(@ z-?qz3Kp;B2(=&GI>;vkF6Ystx17q5C2Go!sp0SGWX z(2>6_=cb&`8u43i879N_)+4D{iN--}WQ1Hc>3xTfvr?qbAbGM!c&kURM$3bQexiPU z2gd_V-Smjkka=rT$ZE+;J{!Etw`THCf$5|4pK)w?tFAz7e{xk`l~&;e!WM$-!>lZa zYkaS*G}P@I$pGRYQOMl{?2(70MMIi7Ncl(LB-IWwtc3!Y_Op$1d<6hw$X;$Ih#uW9 zSY%eIjB9-9acE+G;sudeuz;ZO{B6EHaFs(I zk_e62vabE&8(6i~dvIhVHZfV`?;G-@2fbyMLRhz3xZqWENGXWvNou^)^wL>n`=#9m zM}213FXI0mB8|-P3kx<9{)&0X8grA9+s3iMw0j&^_P*OjFvw=ypz66`gO5j$j7oR* zDz3^Cf_>=uZYR2bIIjFQkVZ?d(C&IbJ!9yPS)knqPzlUth-i5Ss}-8(qZpd!II7K| z*lu@p>45cYgLhj0Yk^%9cP=W)STM|ZJIq}dU6>p5gwSv1Grp3nEL~17&Ka)d!&Ub0 zU=yORUs|Sc+>EzdiFd0E5Yd5Se;w)LX8H<`zhfafgR?)P*dPhsr)URvJ1t_czj8-$ zsRe4HH-D{7_Jl4O{IS|LVt8@INF{xjt4q5W^Db-2(X!%H$NhUCZ%1x>$6$xYHFMBq zaA!t6N5+}~7di3AMI__eq){9-_7`!c0=8kuJ~q#^jvo{1$eLL{1DAB-uG{Db<}Pwx zY6x}5pI^l9uK-cQ@B;;51Qtk*s>NQxEf{SXU6o)~UdwQioKcK-Of5^!xwonS zzzABk6u!3fsa|*o&jAKY{5YX>1@H^_YeH@so|&DPbO>x?hHK0#@J&rqQCGtEmzv73W+1aIJ_#vJt*rVJ)O~6_s-C&OpOe5r&i_r8K)Kl~@RDsq|eE)@IdG+(L zz4lK_5q}7AzkXPjWdGyGcKkouyDUY`AN2(CSFojiONv|`rG+LxNI8i2tskgiEve-! znC7j!8mW_08UbfV@fVe}ROAo$&5Q91e}4^Rah{pjrk;Jf&HK3CwCDTn4W<{U@lI@C z1(ss7*$%9U`b?b}{deRI$@5!3t3rk9G!p1jq<&LH5=1NH+a{DSW4kq>DMD4Ajdgc=+2 z5--{@SVW@=r)?ga*yh}KLJ2!+REXJRoA}kn<uQP~kYLU0YM4fbfy zR%*4@7X_)p3&X}*`m5UQF2Nz+YZL=d@lv1@fdOvz`(Yz;+^z=GZ72&T%f219=AB~3 zYMkey5i&eDIakU?u_SE*8i4E`2vxq+6@eawqRCQ**G#LTKMWILj@P&kKj;1;bKu{# z7~ilMS^{w&B>f08i}k{x!taGAp|5k1YZhJt`5z!-z&wLAA4T7^Aceeqj7 z3%U>V<2F>gv_L_xmdf$W6El3GH+m|HKl05}yYAYvb)#aQw|q3xI=V>*w7Cis1^%b}54?F)^CSq;RAJLY-TWR_MR>-~tDBFXvW`(Il!8%{D{8wiFII zhFBTw@?X~pA+TR21&A=DPn>!7;7og_qB*$A!FGWy?R^@xi@a%@;}I;nVn$^==9iF> zWI;APz_tQ%#<&N*B80M~Sb7IB(T%ltkXI zY~HMx{@s0f4%|3mEF6eONv!W9t%e@4rJq|Ty+t*(jiZ5^jMOL7 zm{?Yf6PcBlFFm?VHdqo4&3~@7G8T_H$?k03!lSg`*ipTVoq>9JQ2Aq7uWspd;qB1G zHd!Rqp2p|sTd2_ZRMZR96K)!+DL<+C3n7IuB`l>K-aa`ICm@Z?Y_>27iy)wXwu zSSM>|`!F}+=tDyEXc5d;Y$TUpBv1Ge9J@FD<|bNk8y7!?esrp5M;Wox63(V0vzHhm zmZ|tL0kEf@A8NkYG>hMTMqQduK)*(=GNYZ?c0qrvwz%1qe^&BNJB>lLwyo>io{6h9 z35GHJ=Dmt!cmuUAutoBgb)yReAzby-sRu$Y{FGUzNr;Nw%Jzn#$nXpp^&G8%_vYup z5Nv#k3;IBie?@vboIxkuuJr-!pa%@innAY?D@w1!k^a(IpHl;TgEUXzSiF!F5{;=U z5FOU7?@v0Q6C2kBah{y9R#3jf#^>(l3>8fLOsV<(%Jo}@C&wrC?o=4~BjoZUHPTf2 zPo(9<_ScvU(Lz#|Nb}gVJP-Ha&&~Q1FNN9_gqR(7the`K6S9mGBVSyUUlgH5LKW;s zz^`}O3|(2Nc$&krIc1t;NDg4f$37W*z=sPysmsxbj^}cOID#KrMS~Q8!Aaz|HG=p( ze90rov^~*@G|>wr8zh z@~gE&6sT9Ek*Q2GsB)5O+85!<^(7!^d7%ZWh|84gBvmdm2+KU}nXzJSp+LczbwR^m zgqe$%S%e|qyb^XM+FeUBL8oXO@8+Q2$0V2x-iFcYrd5KORQvP~Z=w$uh9at^o+Py0 zX%>d*GSpk^*WP5Z+wKSAYOM9|45D@b4Q+n-4$>cmUB>p|YO1q~Uvm<$;e}~EpP)g2 z&{a?*-TLjS%k$(GGEurrbs$%#qWCxgn~j)GoU#d7B%v5o0j&r$KB#xWrjugZDK}M- zz09?>Uyss+ar7k*L_I&4@!&ICTlN;8RP2dt*vKfe%)#9LtKkEnlIt6HUGt7vYSs~& zg0Y9N%3Dz6Jz892;weAuH_Tvi{ychFGx20pVA@2=a~ucXoBJzH;|D=7GdAD$IT^ij z>QlfDZ%nVFw;L=I8`^+5CE|<21y$c5S76^w@yxG(6A3+hE`>7i@Lqer#!InLU`*qF<-iaihMp>ggUOvyWsB#z6IR^l>u-e^ZR>$#Q z&#ShE_n97_E`VD9cb;%H3WHxcFE7YB?&vHbGu|3k=rd@zD%_iowMV;D!Tn5WCh7WC z@9f`xAq=Whb}e68LT|K!_PW1ORxXw3AGp^DV=^EEx*rAr$-)wsV3&yX;7K*cn0rx3MVoI6c6-c+O`NG-MmFUrg) z0DEbP+vPT>yB^Fn8~H{tDU()XU6mc9JELt)vtO$*<1|k6*x^M) zKS|_*dw(_=1t4=WoOur6x#%6njL@NM?f4@STM|~y+%xMY67rt{FmLiX4$u@H0M(s( z4CFQH;Wg|Z3bqw)q(z6Q)7T>xuV!taKlTCvv+FpMEmLxxP@0s8^eyb=LeV(hi4V+m$Gq$f zMb|wOsB}{NhT3b=uWFioEcy`n zmz$9G6IU$^h7t68ZzR>d-~VlD3KoB!BSC~c_x z2m-gnB@7J%!$Ih@g!ru^5Ic2yDGmC}_>@qq4-?EYltC8)mkQl{Zu(?z=)B}o&~EzR zZVI%r(*h}JXx&eKx+>GBzYR0YyguIF06WlEmM4L6{kW0$yNx0P7%-;xHmuY4CxEnf zCkl`$_QC_eq_20BHB_ao)dms*{l@&{1lConmd$hEX_jh1svktsj0r;;>SuIFPy3JCw#+@|(thuCI zaO|J6rGclY^I@W1c#H}hc_KP3+-JTuT7vlrY8I%h)nF)Z*R)6T>rXwKIcS$)|7d~= z-ID{KY)IU@+r^o?9aEnycuY7kT@(ePrW$YpAE&UdT7MCg?x2Re6PL*`qD zu{S;S+AdB^L+|67_lGj*R1|=*Iyn(k8RGrOH}VWLMx>FICreY8?4g8lNNp-w3kLc# z!`*RQ>vD-AGNXyu%J;GZH>0CUo~&zh)dZ?z8U>RsdKpm9WY(T30Ryuq|K8Or{!wts zO5YDM*^I0-cSzxE;iyZ4r=4EgWt3k+r;ra2p`aYSNx0OGE?hndwcoadZ&S@eqSMWy zO;2X$m85BDuE|>nxMW2zE=Cifj7Mo6X50KV_YD=IdvfD*F$C`o%5f@4NHp~haVJ{Y zPEow9u*u(p`=DUMD-4s4lHPH*jejWG!#Dlx<98RQ00}$08U>sM7Z-~qHfDK}n6rm} z7?N+u76`y6gn$#n78l7M&MvLw+^W8`h0G#^z@4c!&M81li|+keBUV|kudn;Xlz3S2 z>E$66(CJqg=v)fYeS){zOACUhQP_>2Mi-Z?tFQKlrtpYpwO9#gfH;;XhS)+#3@13+ z5Sc=tk+xcYFrTPwghKQi60>a)r2K#-t(ctl7D?fJ_Al!rv3t~qh*>B-Q(bT$4aPL# zZI65;k08_b0^!3Jq6WkES5R4#z6FAbNBHE_NGj@$d;7P5h^FRyIbjr~GUa{eHsrf4T$wPvun5 zw=uG{<~KAncKo+C@V`uMS^vIX^xjw=E>^azc--)~*#SeJ4KS0;3-yObRzmKy-a}MP zkQP_y%Q+Ok*@3$e4NDl5&_vD)G5Xt`)#=We_W9!F3051?9!-tPOl_{VT-zUOD?w6# zD(F1mwIjQEA~Me+g&`6(Wf{B~=R<~GELAqBzS1CMH$;&U>xw36U+nz!& zunD5-+P%_jjSyV7DBa76gFv4slZ4n8H!&b5x94a6p1u3hy$>0XdrSpcO?5$D2Vec2 zx2Q+1vH2%)JWM_KuGT$xJ$K+(X2#fZv3#mxUnC;YG$j1-rN77tIi?)|B@NHUG#&Z5 zalN^pe8+`(HvRqRR{t$*BFQjQ6Yikowr53ma9+Xt@qI>+=TWi;Yjsa(cxx6ZEsL!! zkl}!(lJO#Dl_0na;bXq%ZHr3q6OX-;KoCi~Ky-iVBo7I`0HM7oH7|90{SSyILE;cw z*JJ9`Df$G8e6BOi6yYC0vDyEJw0GdnwB5FZtCEUs8x`BOZQC{~))U*dZQHh0v7L(X z<^9g?(|f<8yU*F(W8A;szLwWqa}pPcm2=gwzSpbfc2ev>n~2d1Gf$A%T(CYKo{MhR2#s4d@)W5&@-vV`J{IOzHjzO~^TFQ)Ym z+B8TSWFa~N{2&3n**Sm?Wc*}|OzK3!W@OH^9$t|u2(9NgJc&1#c?nF&FC=A_?UX0u zQM0Lu&*$?qR1b{~2-!|+G#Zc2%L*cyYvZE2Y)%(W=2$gDhRIrBtW3R3w-;4S!;y%D z9{Ze%SDFlf0%IgszX-KeEzL0X*wZsnYfQ$8VumfjWuFvpPp$C8Pl_Sa+!UnD%Tl?{ z)F_Q&ZA-K^J<#xINF*o$$rK|(-d+X1pxSn`xSslqZ91dk?A(}^XqOWho{0?61=|}J7l}}@>(Adn z3tF}AP68mJHfaMEx<`1p$l=?EhZMLu=lLYpmpYU1W}mD?(Yr1@ewCao{7|^IRMUye zs@DX}j68`3T?5Bg9p*X$U(4d_m@8jUH(t4iDfyii=6d>1bg~5`Dzx-xwO)!%=F>(` z<(*$I)5^u={1^63PK7Kr>I0@F3`-?kOgG@q(Tf8d{@wrT?HkNgbx~h$Z~lMb?Fz;& z#tx3g|FieYR2-M-lY{3*i;>`$j|rC5YLOGS+8rVb97st?VM-&@-x-r^-DNIZZUEUe zZDp|E0eg}kGN%*?85+*Zbexu&&X6glt(Kks<|03fFq{W4hM~k%!H9D{5$o=a*=DkR z_Qmr0ssPEkyPFmb#IQ@F^hVO=5Q^V*G+U&%nnFiY$97%9+Zoup;~_ppenA&HUOFjV z&C~@RWrq9NaU+m17|CFZwurJka`6Yf78U*yQ7x^ahW6(^kgKuQf6fK5-NP!x6nxQW z6})sI+-ViRgC4XGesm>Dj{J0~WKC}bB}XGoi+oxLI_KE9YF{YeVxKA@OELdtMXdVg zkYCBdvDh-B(RNhy0uA@4m)GgzD(~|gtOa=fI>fJ{}%7hKDqY* z*%wk>52KPd`~c?xGe`45vq%i>{S5TT8InQt!F`uM2w#M>*z-=yz$`pHN}eIenc?y% zH;jBCCb1-yt+g9(qBNqdTs!EfV)O#S34LlJ00WxyjzA{=ZVL#IhAemyTKk$p!wPF_&RY}S~Vi4P= zw8b}^!e$pBq39N%zYFfVSk-Vp6gQf_ahvqu+;xP}RJiNtnQMTxUH0^&*~qh4Ku~!w zSuG~Fyd-qeT1tNVaghVMzf(EKgrgOjA>_dbZ^xW;lEw!x-m36%KdZu|eMAHEI04;n z<)f&Eh(qVqHf$iOuzb>_%qS#XDjWAJ;H-Kn;4tK`HR;B=&64 zXA}kL-fv>YC_7jvTj!Uzo|{?&fVNcjSSk0@(k;7!2mgZJpv$_9&i$K83I|`sHRc?x z6ET6Lr9U*mk!j9?y={6y5z|7Vzbbr0S zlkWh62&TQl6<_S7fl^y=_*`Ce@`(`mb)XB*d|(`}iz@h4m=mkuFX;LL`DrlXWbrVr zL>W+qep&9fr1mFr1aFCvt3z}8X%R!7muPzPIsdd(;=xU~9aiYKko_yUtZtFpX@QI} z6qPH}x)9ezYm~YMK*D{3Me|k=J8myF93Af;M&r^Pwd`3E7;io+5;23oZ|Y!5#%=+< zI^OBpYD5SXu`$~lp>F`0!{o5rbwY32kZsA`=69dx$>2BC0AeEv12&yAW918h7$R_o zkuaW6{+UD`2=>URj)Nii-%LDyfbIHr@ zW9sMQ-`c@-9TU6;*W`&9-EsvM2 zj~Q2G3PYpK5Qx$>l ztuDa%<%oI7laS`cXikEfRtu78jd@8H#3#CR;}+J+jZPn^eI@lp@wTR@VqOs8_WSk9E5RPq9;Pk^<>F`MI1y|ER_~RVO?l88J~qtQtiS~O zip&RZe}{<(uM@Ym?wZL9NImk9XoytJ_r+DlHIDE zXakq*qaT!LVm5FpBRY}67mv;fCsI{U?#M48Jr^03T=}*ar07x-(309flL?g1Q8c&% zhf4v;o;m8YaXqg?p5jFey_nLy>g?puBYGe7TVT<&eaT zoFU5JOFuzur`t=4D@WAiAaD1Bmdt4p6@_cS6q4s?heS(`E)oO8bhU>{N7)X>mb}H^ z9Ypo{4$3pNhX_P>#}Y*H2@vdh473LP91HPqp$TE=A(y9ciVY1xq|ZpQxCAMgq{0#z zMw6yUUTuER9$wT>O}=Av$*x&2z1Y6HiJCXLL0SO)(C#tGDQX2981&{X$Lo>laj$Ep z_!v4KQI&a(g>X68pL@nAcdYuTlG2WWsV$teH7WSpwI;hf_%Qz-g}^=S(2z~$45>jQ zpIyMw_Jf@8xt4mQo9KnnfHzKR2t1OTiRc!3c0^Zf{#G~+<`)NBsG@KCEu90kNB)P- z((v>=+gGXV6}5k_MwIjkQH$p}!Uko$8l=zx3`DU^sQ+#H9OI>sB?pJ4d>+j`tm_SF zz?7k1Q)~k}N`)bDxUypZhk*lH+d%9+n6mpzXVPvFhfzLk(G z4RGtuj%?6v(R?1@OgP`9Uvtdym{5SEq2xl-v+vOta@1Xr#0Vx#vjjLgBMTxje-yD1 z+qPg$&rX+M>OQzJWB*2orV|WZw7vyQGjG!@ zts&H_>yz6vm7IJO7-7aAcH?(X6T#<+rW#HB)pa#!ZChEo8Qd-?kCv^f_=qeU{Ra<1 z^g{N%xm10Z{&hC^-rZ{Sjzr!&WH8sB4$dRQ-CN?9eR4FWtJ2pu20~MN?4G*u>SzN8 zV9J7aMM;dExaMKuUH0a+^`LY&StBO}E;9S&*5ONtY^VKczR3Z5$=|~_UE$jePv3c* zj-tVl?tO)i=^5?O-#)Wn?^yq}*IYqA|LZvH5Bw=*#%ecc4dp>gMN^z6{LUBlJWQ4*(7Jy3r2^={9@1sL2*=fh&XrE@~ zhIdx>G@?JEKbV0i_u6l^`a?eI>eAW}GY?3nINjCt%4_S$-DUfIZ+ckvo0Q?^0JzB< zTZlR^nlv$;>8|!fc&^dhtq18?3vm$?De6sEiZ^}{%FRtM;ft83DoTHxpD{2crh@*$ zuD4*n*qvTRlOzPYGdQcj`h+WMT6IQ8pI%$29!&2M+6c@?P z@63(4cyLgQnlv8<7f}sb4w7=xgcDIy8CL|eBJ8SOW!14SX4dqm+-9Z$i+|=iMOvTn z`egVn1#6X%AOkx@umR?>x_&Y--K#_Ow3*DcNRB|?FT!{d4*}IHT*?Uk>y1SH6u&1b68I9MVQJOXUnA4pz#!Gf@7>knGr9|^Iwbkr8 zoGx7z`Yqj#Cq^Td9Py*YwP!LT=ZmP0z&@Gf>D;F_bdL`f@M9qEn?gQC$3m2K#G8ki zrbg#ihFk9m*dK833m=zJSGmWr;Q?70N5=^Paew@W(9R2u(_2~ZBZ2q8buIxKN z2y7G`|FN{;K#!&ANE3<)D|tzg0NV8yH$VDWM5 z&s-|0G-(-_43FL#Y5+F$rO{i~8VWnNPS@PVla>eQ62{$1W{w_E-%K+c$;W4tS1J%2 zPMF~4-xJSJ_~|UrCUq9-p}ns*3LI)N*bb?T6j{NLoWPo@CFOXfJX#NIiS_zo&O?|M z?NKr6WNu<7GPf{LpO;gNLSEVt@czD#buYJ$L1u&w{PI!-~Jk2p5Tn?%71OK>%NLhq5no)a~cmX5}vJkutDeFnXXs5mj;e#%@k`Uh8_Ybn0 zi4}lIe8|53Va99b0q4=i!SJ;0_V@E0b8P($S$zLYHUqa9A>1IcF!=;@!pqQ;eF}Ll zBQ@J~Ee>vDIH^^iNn=%*EG&RsM$$J#zuz|b6!>YoYN!5);^l#BFDj1E02Tp_@hl*-(gjqWso6Y#_tpoP?$tMI6j+0 zbk1_67D&~c&|7I}lfLx=1noYr_pQG^NMcO6w7Vx5vj4PV7o8yd&@fHkI0;z zGzmsiv6Xl*r-1F()TwULr-d%?+0HCe`cH-#g62J_@G-l=NkcPt0m$*ZUF4-kSVMCI zY@8ITWOi>@yDt2b&^Uh5F&@FsAFwf`+@qT@&#Oy_H7dGBdr^JK%_I+MV3gv06s7N^ zgfLu{5y0|U8Q%QbS=S$3j(v7~+@bi&UJD{JmJoma93!QlcF?*bPYU;q;sZ6LY3cD| zIa$Q()EF@Ot(gPFmm#y-vl~d0Z4s{wEJmIrdzOGbY0>(P;HG){iU;n=wIC84%2-M=U=*FLEYk!~>QIZJz2ij(vn5xh00IPln3iTRP zXdnX1bKLz+=rW7W?fFgC?bZ&70GxFN&9w1Fi(`Sypa4$^Q;3!stC!#NG_KH-8^5C@ zB_A!9F;+19W5cXlvrOEv(pC>30(k+oarziKsXGETF_V6+)HZYjln*TSnPph0woaVX zmrRXG;z_A(m5R8S#)5Y<=#RJr zK;w$$Z28OxWXK4xwjRI+mraYFX3wurQZbZrN}b?UNbw)igcJ601fk5#Ryk zYS43Cnq^6&JGKsXC0OKUdNL59Nf00m7VKMcCrHu$idM&4=-Vo{y*BFaoL#-idMRik zQx0}L|0$rk>^9^@iEx}$Hr`L1PGoh^Z3#hAgxrv);6IW5Nl&4w~{3>-yue`O#R&7loA$31c! z-f6S8#@dZAYtG}{eTjxyw{((@-;uIWyPrklTVJIwtvYmkRXR4gw6h)78QJxYn&I`2 z0C{Pe;1hr}e~FU{FU$Sul!dDRfsv-@et-D0gjbyNIQH=f&miN4N@o5EI?}s{N5qTt z6NpOJ4dTRhAd4tV_cl262>mrO$?z#;4PyXek8pR6L`poFo>rSb>Ky9(57gMl?K`QI zIP_2>Vr0Uv8^mg<>9Zg1AmrI3SSYNGguTqCL9z^=oV)EY7+Z(&#I|DNDKTN*xDvlH z4&_7ClHRVMHrhKHxni&TRJz z`q{omLm9P)Na}Yi#)uMrg2e@VuX-rVMwj44@avRfX)7W)C#?)?Q1H=rV8pwXBkt&l z?Zr>zK`q4%Uw{u+BHmzFJ*Ea2`8@nFoOGv*e85rx5kh;hf+Vi30uU;{Oo$trK z>_Q4w3-L~DKzU~#gZdcc0+5;zeEfOt{`-mtw1{Xz?kg`AeC5S|H^}@4%FD@I-|DYP z|NqR2{{bimB^x&`Y^12Prmi&5&T%pCeQ9vsJy$Sv z9KhRyXUx^!R6w>s2G@Qx;Yzd3Zc4N5d?`aR0nXVzPk!eC)Kgr6 z4*!rBEGo3?l*S6qb&K`X7{A@Rw4A5Xa{e4pAb*3HHEXLn1v5<73s*3ZSg-SldlgJh z6GQ)jvS#g1sd~?NDuf-WEYXXMwUA~}nrj)_h7&=G^3aW>#Hab9r4e;&2Kt3wRuScJ z(L0@qS<20?Fhujf#659~K;bB@xBA(C$@`eI1JPgqXnU9N6JR}1~{N$+=t%ssXxJl6f`z{z(5D5&107}Q+ZVdgeN zj5(co4haTrDlZ^P8y}Hx`lBr?@3*&Gm>yv89f=u_^!;<|G#a}Guw1Ix1d{9 z-dNPJw3uX+QWj!>zH!bsFxQ#ff%cM~Usd3#Pe6cXmVAU>H$bO7by2QdaT(mFa4v5u zOkz$he})&hKB=c$RVU1%N%Xv>N#-o@4&bDb=BBKmt5F6#Wc(xPsqfJTq6tba)j->Z z>JzMXq%$@avY_X&dxSr%sWVY^sgx(RD$b3O3b%zf$#5_!2=39L|8aq?qxS%6v`Hsj z=Jqjn-M!D4!F|Ol-R^pm?skCHiOrnp*Q!V1Kl~to>q||sahTK(A@<7FGK_u=08&mA zF93<=Ofy9?AXXP+{<;Q;TNr@04DZfmnhQ59CaTYUl3?jZ=aZT&E0G;*Z+MkD30#@O zlNvYvD~VY?2-$(s^{Xtu&oMj%t~MwbY*w*zOk?%E1YTWb_)@g^CPbisz{Q##n=O2i zC~!lgP17mz^MWE1$121OF)dDf7P}be^g^2iRf#g-GE#l;q8ky&8o50QM z++w4t30PtE!U^l@|AS`P)U3iN4Jh5eStyJOM$h^=eW#wO;+y9tE2aWWJ9J!PT|8e9 z0J}mHt9SZ1_e_`@J(Mu|;s)Q3o|j&>g%?dIaRH)L@PYnkOCBrNh1ly`Qq~9b2`Axe zNRjEAjTIg>o;ioV{V$jBWD*ehQk+Z$FhHSIcF?PO9aMJtvJnlZ*h`pv z8l+@fr1U10cfo(%-D9C%IFB`pMF>5;9tS?Hzbw=Kt6TDQD8pNRxnXvBG~CWm|i85(5GoA_bpO{0+Uar8UI_)0T*H4K3!NVfBmLOFdO0e^(e@?xQ}* zx*a6)1Y!uJ^3Zu*;w_#?@JMaA74=6_o2zbLdbd-aT={%>Lg^uFx7*zaBM5t%1FE&Y zV0}QOkv02s*NwAOXf+BwtRNMr*VKZSXc#}!cGUL1eXsN#GMF99PQpFs~6os(60 z)as4c*v61%hu|w%gZ@MvvT|@u$gH>QEfgAv3+5!0F)FxR`YI)<0kw@{Bx#hL{ry=Z z1n(oyVM+?s3{l3_cDx`cwYul z*89b_A1`{k6j7WvMKQRQg{Rg#^rsF#8% z>;vu-(_P8@$L5kQ097`y8)aRSbpF!4*9(DbBckC1qyH^roxV<8v~p8~tWDtLSGRqu zM5oP~=dDlNF!?V!Eu(7$E;h2%usM{>obWV)Qll_VVnr{oTV&=Pwj%M5m9cDm$vfyV zrs=s;_7m*<(vR;doi))?e|CB57A0+ezXfgZ+|rt}h9fb_1n7XfK*7F#7hdXNYmby& zCFRNQwAhA{*^TfLFi}V{F@7>WAEO)JJ^vDJ@uh{iF8uBtcKt3jrJr>eO651T&U)(k zqB1Ly*6p z^E2y}UUXLt{1lO?>qP}!s?QEO~Df!F9x~STw#%`L)Bf-idVTO>a%~>Ymb|? z;Tg(xkZ28%+`eb6D~w$*ygQCeamZ+(_{e2bK5a~evq{%Wnh0wZ*YAD&lWOK)(-9lg z>Jo@A^6(qFZ{JA%>#X{Z)TsgCrnKzLW4a|~dw(Ao2p`TuCxR$|7}r}@!w(wBC(`r- za)j(Rm3Kr|fuH)m`U+4}FX;LW;=29$Zz>nm;06NvRlbx3$#hclG*a{VHk))N$w!vg zIVN%l_M zJIbV+Wp>OYL*Z{SW^8Db;XN;^1v^|73ie$9C_92`O{K6!wf=RB=X{y|Us~9{qRLu% zy`Fgz0jlOL$ki(Lsi2EXV!)56r7I=;+$^OnS^*?06+4htvo$E|Zj%xy>&oXdISAGA z_KBe5H<&{$8iSV1X1y{f)$=)#>oh3KW;0RCGE&PL# zm|D@?Z-vFkEPB%9HhnrDD-*v~@(l3cwuukbA}Tk|Xb018P%mNZs*`zHEZIWVTbeU@ z0Z)6X*?deHaKoY=iC>6fmF8BklERNTLt!y)jL0y;gb^gL-`jRt5TqjpcMkOXstjIDX?g#dU^w}G@Ee@f-3)s7oVM2*@vT~7QMGRL!f=%x= z0%Me@AW{~c41k@2N>_zGXM{z^DK#S7(3hR*i_6TtDT$RD4E;F0q_(Uy)+gfFs`a|! zA#AnjeB8R+p*~we@>|0pR}dOFkH!Tj5eTgRi5W=(vqY}1ed4z`LUr77qF2X?np$An z5O4oe3XvU~qYshNi3uUM@R^0R%=7lgL=6VPe2tI0RXzy6;T$+1E*POE+X=G?n;5PY zWYvX@%Y1#8B`&+efMe0=VD_hNrb=DrKEQ6?f{UplQrYn?#0$3n|Rr_kf`SIdoyeKtHaR z5m^%r>Oy1qdILiSR9a%ehg~b+qF`%`BCzvD(_i%*a0g;!?6LG`gbbFrzfrL1kEQO7 zsJyLlwYHe%&d(fHZP}T`Unk_l%`iAc2Sz-L50H}|((_fI)e}&_7#PoP_inaghUQgf z!0J<|Mp)%JsgrwI_nmBhL5Wj$){geC=M&w;?1d;)jK{H}hl48Kum$D8Rv!qNpFuaM z_)1_ZiSE#?l0KTrjF7xO-1CVXX#o7aP-NLJbRt9He}I+9RDNC-iVSj13`mbPPn=TVyyG>ycrO zK%f`Dt(dUP3=@Q9JzhzI3^qQ#e2lsLGp3nAC*GQ0Q1`Zr98*Fl=A4oWjxn3-X2pa; z45Pi7F+M7}n9(V|0{NH_u3T=Z=Y~XY`hc{V4mtRIBHohHx-V6)kwjxslxSIHi2#zd zK|hM4uZsKR&N6{*CC;FIM|j_MzJuWSfC*8bPm9tB+Ze3pSL;S)fK$_xqIIM_YZ5D}uEwMT)Jp%PW z*7-Hr2|jc;!s%vIXQ%m$0002=Y#*P>v~(j)6fE%KeR47e!7g4X-(}4n>ZB3(JX>ym zwi{k!&cZTvRnfw= zH^;rGFm^rf=afjWHXi3mcVGsH8YXmtYnB&tDvuB z5c>MCNv>60425LlhQZqR=AfX|QtA*R_m!MY89EdhZ4JT7Aj53I!R84G*=O)V7{xTP z3zR(|@c^t)Rdf}&qU}-%w)j7i+2TV+ws#fyZTU3=hj5q~gy|-Bf^`P+VlsqE9?!vC z&tCHYxM=EUfsiJ~q%g3_E_laix%LF^Y*~F`Oaayf?0BsM0Xo#T)A<7o1DL zUIVPH>gn)hHEJGt_ zor|fB0|(dlD|z}U%MuqY`aMn{q;9mGG@xl)m{wXJXh!w`uh!_04%))q?>KOMM@n1; z{TN&o{iZvP$X1LcnYM}Gn;@-HcN3%7(fAdaFp=lYayZ+5q6k%#LcMqVNvn87;mB*} zZjIC;v5$kW7E0%|<{x5B}yH#T9RAj-+^pvyOGSvld$ zRt*;$GT*Lpp{w>f-4uou-Lhe~hh7m5jqp5hy8Iu{p1#dJzYy?S!X(2b)tjprGvU{3a3 zvZctZmTXN*89|1DY_W&k%4bOq$!Tdd3En2j4z^-!bWaS1X#-d(}n zb>><6>+%Z`B)aF1dsW~3!pJ$z=k8wHKg51RLG)p=h*G5X?%8LUQ{OGP`u3iMnjH~L zNU)W3e2ixMVGQv>9dIXG{iR}dnC@<=$gc%$`bTPuxE{B%?5-r(S@VQ6L1rQ8q#pML z+jy$Zd^bpIu)AVk|3WxkS}}y8mr`s|o1N8zEhE`BhG(hk@@KL3{LswS{d}zRL|A}* z{CPIdV(J)C@4@wiP6LPTuqK!v71GoO5}vGjV?(z)9Gt2PWtCiOE~4> zs#eocMEYo#+FK4na`aQ;B<}97jc=jx5@_Alhq(n$m2pxR(P6a8lUd(`mhSIt!EZ-h zp|+oH--Y6*g)P&I%Rf-U#Mw0**~B6x>4ujE-78Eleh!l{PE5+ zKz%CAEyZBx8Sh%t@scq-{2hqIoK%3o(_xj7L~1><`Y03$yipt zwn$8adduPyK)WEDJ^ zEccNcA7_0~Jef6>TXe(TeKoCy{>X${CM40pc|lTuX+TVL#4bfhAA)!C%9w3Qt7XBX zQ&FD{-0=I&*L~xl>T!fyb#$G}06Ea7C5!H9Crn+#O{rwd;5G#KSGj1Y& z%P7lX-6*$al(1R4OLFZUmwf+~orT@}?7fpFJ)`bOW}U@-4QlN5_q$DKnRs5BR;V}O zsAmu99skRx6i^n55fAYwcD_o6^!N?4%L`+Uf+A;6f+j7WcGdDH?jZq3L3#Y#B+(ci zAlgV=^=D!IA&-RPE%C&O@(z3GjiC9Wb>D1gBctu#NO3y#9^9nqL zH0rWCDtDL?bp1v2XNnj-&y&Nw9fvllT#|8yDua^)@i#m$bVeCyrr%4sA5Ae-(?$6o z!x5*mk+NuelS#6IiL+b~UM+dS%RZr>63Nx{fvr|I1=MSmzgZ!@Ct~>S4!jD;?XQD5 zdcETCt&6KbnQ?jw8x2GN+%9Q*#vm}C##wef1)h{cuW2E6mVZ|l+->6L6B3voMeO@v zaM1KHv-{0HCiD{@TsuDjtbJ|QLa(ZWbbVkxhNOQb5_i4;X{AfPoT(RdgZNm+f3#!I zRj)-o7Z7&>7FOIbB{X#aQ+IZo>@RD^UKbp2mQ(5yq=P!$>0!B8Q`-JCmlcy_ZuF~g zp1dH7kBnrG@7SnM-rvK$x&uYFt8+FVEx{U?6?R1HMdmDukhFM;wRS%|ZfBQ&;}I|U z~%|L8V z-JoQ>Mj;!ZJo$i;l=SiH`e|I3Uu$2MCs@N*!%H89z}>L!YbEt;|Mc_u_DOj0ff#8A zzSaXV@kvj1n{Dj{!ome3Jhr-&tly7cs!z0;HF#7nC#~x-u#8*f$C8;8OsskvOpwC` zly*xtp^O{gK892y=01mj#=7#;0QjvuBs^S?-F)wBTGYZnW;y8~O5pXqi)q^UU zZs6oT_}R49GryMz(~i#=qtSwCuF^9+6FD9L_JGJ}B|1(&8)?_NkXahJ<1;>xqDZJ& z3B74VU+wZenU3m_P5mXX_7m$PSV>W$>RRv#!Jdm^b0E(pX_3P0O>OSC(rNsekHFa_ zlIYyX#GJ;H$}SL~>|565+;HoTaTT{Dq73BqxrySuV?RO| zPVi8-w-NI{gU91$k-buvHnv->jjcC@(N*w~oG9JnZ(-_QSWmFK zL7m4Qf27FF>4U_+;rQuCGOyKOmXbDXv?El>O^Z6~hH52OxmRTJHn}pGS)xRXQ%|)+ zf9KdwViKbD4dGF36y&E6)&7t$Z48i@qK*)m$yPyBVCXTJRm@~&0c{!Dk_NVyI45%Q z@?jL7;kS5{^Wbi5mR}dX&@4GPd)FktZ&Z9`vCu5>;*4yT_uy=dT)@zqV@B|HoO1w7#97t<7K5CgwK(AV~<4 zosk#b<+}P zC9^)@nnKNt=C;@IBo1Uu?CdJ zHTu{TtX758NX@#%=aYACT>kt?rjg;Zk6E#LXf8*MIQ9rsA-U(ChE!X^*q{K0D^s&# zk8wC9qvpL@sLu+V)qtR-AT@g=!og=1!$Goam1RCet#EFD&)d-)L>+T|RgZ;q>a&Ch z;N?m|7!-hg_)}GHB%ja9dP+_xv?hs2Fcol5DhZ-&@LXt)gGIhnBd%6x9$o|M`A_sR z7hf+>a2zm^`t|pLzlPCY1Fio9z0AM7z<*L=6)IWFF7Uy7KWvR{qFl1+Aa7qE1nTfZ zmXP84gA&kZynOGtlC)I}DNNuo^}ZLyFqIVUHJDl{;GAD|&q`fQy==b9 zj{Y{WD~`*Z5;Jb}-F<^RhDABh?}RWcB{sVr@{*!uIOfW(m||mQTaj)!Mmv@w;AO)( zsQdgHAO3s4oMF0a%Pg$*uv@Qdd8}$?u56z4G>ky@y3L53Wy)5RzI)aIc)$YAG|3KI zA2f;G^FU%xE693dzc8R!gV1YPsgYFBWYrP^pwRC!IQ}qIbj|uyB$y=8&)7P@-$mVR zXh^zIS4u@E<$^_0G9@>~O}zsi9z0;rU!Lhm@$9_r;J)%OYRR-}sc%@>HCsU|F~%1t zec3STPQ?Qr+@5q};g}v*vi!j$pUyGtD=~L?eG>NQ;-ivT6oM>EBp<%OPaW%ZNo!hn z`fS^}U8fyx!LBKxziIheq}FKM;5R?aN&+k&prSQ@0~Ct3leDaG%{M4GQBIa4D-2Dn=k zQQtrc#%mgCCoPw9L-UOOYm!>Oi$IRcWe>tInJxsm;!%k-r6`?PR#m1 z2?TjXjs!>h(YG#$*k_K|X8cG>N-w|x>r(a>NwV++@2=zZbzphz4?Jh2pR|q;cEHv! zs^k}?HAksKvB$HJ(fM3OoGv^! zR$;A*8+vBD>00gyi!kFPDCKP~@+ z4Y0C#U|eDcCr`WM;l$K=v#xFzklBv;clM2DyA+M$FdpJ#nVsk4{!f8qxSVB!0 zVRV}YcA4hbmf8R-%}Yl>s|?vw`A*L89(Oew0>gG}7n*Y?o6;u{UAYn?Q*nrbI+0(~ z_R+`sMF?Dr7)Da&l%MN&t0zfJeEv5y%ADhoILjpOf`>+4f=-H3tz8 z%p!fEh&7S~f13e2B_fnkrGgzQ1?xFdc^D}_om)eIu&EWE($4~el*LRDEuzgu`bw6f z=e8Ef=%s?>6fnv}rOIP!(_>15s2N1{v-@iJ@~x+DDxZN99$tqGlk6P8p2J*|O-Pb}XMy}yIl}rfL zp*PKNd{Ulhd#O!)P}J&sHXMxHN1WTO6YQ^d)5}-i4r{T6c^Mp1!}tfCcoADF^+fz| z1%K4jPw4ZAoN_v}mjBN3e}&eQ%U*4=gF=1e+MyS6ZB0aMy1FEH>w(va6$QlZqHZ7j znq;MZ2iX>198?E$|%zfgcngSS*&CAQQyFX69)(v_f;~uNM2ROl8ZZSGFe?NYY9+0i5y5w*HhmL^yiYR1nM5DM2f{( z6A$YNM7qi|yP*T%{-8F)ydMmqmWp?{h^&=Iy(YCQ&$Eziv+Oj6<+ zLK^kZ9yE?%H1e;{IJtEyMcya>gk_z|0dbb-cVUvtOM8TE#nAb@N^v?_(UFFYsd^u$ z6AK@`d}{I})wm_UxCl|Lx(;lYbhhkVk6UUTpAIRLw6P{~sG>HVm^+d!lr@nhB*22p z$@~>ftp5`E8^{Y$^rRsK_kIp{TIwRexae^<{yA{#aSmBrgXqT(Si4x2M(-#?=wvgv zQ5vFzf?07Q=bZ_#8rPo@K8@(X=|ifgDdoiZ-qvwcNQDE$B%^47=-&8mFtM!2v9}mr zKiz$ruSwV4Y>96jy3*Kj!5$H2Ua4l(_AsA+0q4*w9O1|_pN%Izrog2&X+A)}b6q zbXok+&>xq3{Qg6@W9tR}*;$ysAjrDK z%ie~bvai4j6lhZG_onDN#vH>S(lqT;@Z{_$y)jhtSkq^XFgsOWE<)95Jp6l!Sja^^WN*zB^_C>93hD<{w)@i8qNY@j;~M(DdNRID$T zwdb-RA1ErQS&M6(kRwl4f*SvvV6>sPQS>1yUm_XhfXpe$QThP~Ig(3Eei&vAUX*

    L4( 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

    glH?KZ$pC-2)ckR3Ar+WjN+ z6}?wr<(;n2^4wpC;UZ~JZW5Cr?g@A8h{#}N$-FRqc8%2ND?us(zs4ffU?q*wJCi?B zCzdCK;p5DB&ySjuqE&c-bx5vtHN*UZtrb2gOHCzdb~c>NfVu8_ZDfsX7>&A)f4i3|JIhG4H08b$abyX8~A+a0rX6 zqc%h+0JFCXIQ>j0COqvZc=?YNgBNdTF7FlIF02krl{w!W%o>Pk=dfN}iLzz;8uWraM?Ej}ekBgd=E!Dt<5GT}%)rnV##P7@{b^*VWB`XQE+sED97z?55szr+zuXP@$9i&@kTMJM z#hcln{QKP5Kk>o;X7wA@HSCmBFg|1xj+#z`h+r#&Eb^2gC8cwJnIV^{3)DuKSt4lL z&RcpA0xcYrO0jpUD6U|>)bczh04?L8+eu7QFL`m??LWQf&FH2$&7a**k8I7r^#~P{ z7Sp$s>(6P|563yV&(|B`Z?qhH!v+QK7$TZNML2&j;_Z-|H9iigcKqlFuf;io-H%MN zSNDe@ZFaXRk!8)a#Mzg z800)0dH~vlGFnV{#ifT%DoGoiylIY7k{aFvX%Q31h(PWPuI&5G1sYK~~gS9&H++B}0) zvWx#g8)xn}C}>gi&8TpOIgz}1Jfejb#E3j=MV~ZDZB;O{Tzv-Mr{-m3Zb&6+Z0BL9 z<;*(Htw)7A{fi*~k7zTmOwF)?`f2d(J~UFc(OPykQV2VFIb304AXf9;=8;Q6 z5z)_cz-UggvtO;@p3$XUMZWW$SI5YPQ=_vqnP+|cQ8DPw$s?X|6mkXN? z471gq`~^R1CdBN^ChaCWbnhlOM7qMIwNGpHE(%3I>V{c8;)Ys1dNO3pq&tkw3UQ6XbV8jg_lxb@}CLEj75gW{)zE>h9Yn~92u?~azWQAiV zIt-}Cy0|lH>?dUuYui0E%JG_*`4u&*a(cN^UHhFY#=$@UcyTp#vguxxH(t~QktuHS zIy^N|9SQYBP7K$^Dse0(NwT0_Wj|S_0aC_USG47e*q;X~1t!A9={jCf) zCeQy(5lh}-^9*m3gV>4FeSWA%TrL;RXD(4;I5fovXKCKokMza>FGb>vzW8S}Ddb!# zRRu4cA-)>7Cr%!tijwCB2>+jDJ=#CZvlHJfco*oPvwlGa$^AYsbc^oAwqR;29Nu~R zmCVbL(se(|J1~C}ZYociJt$-kd2a4gYYuX}>(z6T7TYqcCp~i(8@{HfuSF%HNH&1s zo;PRueM16?MhS}x`udFx1z#>49q?2~sn=@jJW)eEZ-qTMn`DsY9ifUTOPrR()t{3a zeHrsxCYRa?`jA@)NWQZ@>kd#%?eu`HUMv8=g_asDr$DdHlj`vMahsMENc9TqLulL{ zNUP;0Wq!?u#r^gB7PW=Ho0MTBbwu)+LiuM1@;3Xr!j4W~>z*bIPv{6oP$N6pjQmqh z54}*jzOtQrsG)yla6fT=|MdUm8|HDF^u2A3#Yni47-14^;kL1)6O9r~onAiz{Kg=? zn0gT;mBf6hQeS;nVS=`oQu*rZ|D?AinaOC6-c9>U(J-OpN6PR1?}bA}aMjLhnODE@ zHrtc$JB`*2IiG?u#2B|hK_Q&Wc{mKXpXwEEaj6ELz-h7pzdYAV)JFD3NmRHaKZ1q|+b&H`t$m!w>dY}2d)L5|A=$J26h2D0XH#Is&P6q4 z<&Lf=Z{t5HOLwQ~$8y2Ew4o_%@{3oFL9}?e{&m#tP+mC*s(woS`QNB`2-Xwb-(OUG z=$BOO-&M+fJxu-UkS$cvvYnSe`5-gD7)rIw6Mz}76i9C<*l21W$Uy3=WGR%W^mlWb zS76|9Ipjcn$NK2IlBT}w4>#3)`W_fK0NQQXXu5Zb&`bwg`FrAUqw6}8llkLjd;9ZS zi=XKanRmkAx@b(sZB$`Vz!LyRKn3tLcq0IScjj4QEZ>I;FyYKbPR2xYYz*F}V)O1k zy(6O4>Jm>lzY|l}KG^jdhRsUu)O__@?da6})9He-5{;fbbPfPj@eN|esp7=*T{EY> z*BjM!k#wjyVz+9xfrws_-W7PBGiL^r6L=Lur1fV0;lWeZY2Q3DQaeqN@}%K32-CL< zYVR-)3G`{424TQ}MNQZ5xb~Mfxvki)vN7Rn-&U?DY@Ji=R3?ix@O6K1+qgjAOeZOp zJWbMZO3%i10oj{=yTAi)gAkdOJ0&ZQ|2ej(yK3n&+t_Jhum6JTo-{JKPo&;J^Sbev=(6JuOq`~Ka7ab`yNA9F`1=a<}gsyJJ>xx$H_5EdJqeI@! z)tpwS(dI?<2X4Utey4$cMilWjGWB$hKzC$x1|Sfb8x~pZHX{s5CZi=-%YXv9KSC%D zIXr?Zn`z?Wp4Fh{Q3*SE+#6MN7(|6&w~dkKZ8o5x*;b=!JJCRe9Cd15d>Jh4)G@2@ zlMqJ?THNfA7|1U$jZVha^YPmlOWd4ge4m4YNC6MB1;m}`({Xno<`Ec zW#nQawc~JON2`f5a5x;MthhfSq1oeP7FNg=?xLuCAPTRncEKizN%((>bI2YuMROiB z(!B8YT{C?Aw3t~t%H-X(f_LzG^$BE&PyPC48b8O7=ie~ z#ssoUzY{Q4-_+TUcqAa~S;5J=N96CxxP#Xn#2+r)#c=eIqToqWvC(u&|ut1i9^26#K5DFXQbb+MjRQ52*jhUT&-&Zk`C=`?+EiO&|BxJlR@GpZO0SGC{mF6gUc8J+ z21-8Ak&q*(!v?fDhON{+4%9tk&3!Gj@nHr)u($S7rwhl)JgFf4D8!jzAn~9>>~}N8 z&0b7zRA0|&s5_@l`=dxEu3Z23V8O&Se_5h#-iYN=3l{xPcqu1rhJ*W>S_t?8=uLQb zglfx5pxbU(Q(+ZjHWq|2EOOU2%#_3vz zh4rm_zh3HTQkywWz5C?MSVsXS?Cji=FiwMHGOkSo*(xi(`M9eS%|!UFawtc}T|g_f z!zS(wYn(y~hpmcbdL?J_q#e)J#wceF)0_%xiVdQesF2v{4BA&P6ud%;h+?S)*(Uri#tTOoo+1v7 zDO@`5e|YEUM!R~qHt0&+>LT}WzA7Mq=KqB5f%JygM?u6XN(!Rz{>GWsb_abyN}JCi zlrQv6gik2k>&wBCbFaq{Zr`JWI}GJOsY-4iK7))~GWyM#OCXDIK|@mwu_cy&i1BpJ)%SAB5)t4zI*d8%Of`2wI1K{KvKb7AuQ(pSZrZUThBJgTF z+o>!=DPf8@EFrROk(}{w-`<2Vsxf%SZs9imo67AHv_)!Q z#AKb(sl2$o=-C@j=0$kkaAl>LeB+PXd0)#|m$hTF@oDxjWg%iSOm)jQvHgSN)nZd$ zF1HW-7TCFP5@ZM7h{`$eq##|(p;+u<2(PvIO2$9+`Au>UVO1J!yfeCwawT0|7>G%u zN_?nwbT~{EGD0;Zv!SkXUPu-zl@z$FaF1x`9?}Mrq?-e{PDRmP2a!4f-3&o{TK9EV z&>-N@Wk?p#E_rc~jFc$aLYlp-+9@}o`q$fPqp@$E@<_6%2B_!?Z*9YkYIMcj$F-*! zfkNAsH6zjcu0zR#HJwH=g~siQ`)pAloA5{_v>pxy4s}eM#85^jd2lsiE?Gpvbx?J! zccwKChcHO|vG0Kk5aFb8g-=`>HOmsU>?3u}fe;7%SXMhs2yTSKNv-u>PRU`<)$!ue z9HviD88dl_{6s31UV~Cd%qAKHwXP#IPv0#GC!*9*H+q15$Xm2`NZ&tcsPTLa)B8kHY^qU#P6DldQ9q)xSJu z|8HXGADK||@+dx6TqjFOe%M5|RC|F@&ELZ*uni3jgffMhGZ}r(q;P|(Shd9ax^KxL zNrYIi_}=m(k6mDGYEnrp6W&~=+@~CMum1i$exv_3zVgr?;SL288UY!h9#3GH1|LJp z(;E&i=M5=U&@jfD6Xr%|5Y^k9MSo#(w@Mq_+hKfs9(=3$lG!+suA|~KZxY)KR4O-t zEmWPi0AO=2mJN(2tFSe2&{8K$Cg_`$;o8<#h_3CDVhl(yCU`ch=t=lqU{yRxFrH;D zo3JeLrn6gKngjlFZZ6#Yk&-OGq9P5D6&aqKA`cc~am~e{v=?R^zxCHyoOB>sYTTEf zQbf%!QFgwXc0OZG3Li3N$5Gsn++4Us>6gdmTdyV3SbyU>9Q-*mUSzOb9!Mh6nk%=t zywI<4$Z^=cwR$udY z+q6GYb>lomNLe5x+)$jNR)zj5)n#kaS?DAiQU-onBapXmXvuK`iUVBz9%_Ok7-CXG zIvdEfgv3#R!blWynK`E^V=(&&!j*LHGQ$v`QuQ+Zw6#CbI*Uwe=HCF+lb!n=h+!_v z`AJl*p&L#LiWZvhKouogN4aL_J0aVz8#y-V7)5JN78#Ip5f6Q%xw0YTynXfHfXF+p zS*2AN{vY-k1;Py(1!=x>lq>9Rbc9}oxc#`|3FAu=z8J(+AJ9Bg<^+K232+a(-NPT* zXaNdXhrw7w3}1Rt8y1I9Qpg9;y@`uwP7k>cL%Kb_<7g=HIB3YuhC{GLmB8@JF{eNgZvXlAlZ6pQn*-kf zj^CzDYV~+~1>TK6@V$?-fElcV-<&*?NS*_fyH%=AWG1(KUfd7HCYL$Y`G^z1f%TBA zkNEd=w)LKK~DYc8{Pj!<@_J^R1?ArdlB=KU;1&iIAWgzZ-7zK3^tBb zYm9`{MaGK#`!ex&>=1!v(N?bT!vyM4Ss5wwHN}%$Cn4ddf_5m}FhjAEV7fIB;L~qf z+RcEb0)g%)r)1gU1c&$_U;gfP&+E63PumX9bEi)w^6MWp(XGZ{HF7DTg9^Gh z`-8Y0&lQmbd}={-Ub=ngMk5?_yMX}kdL-GglA+8%ZsUa=Iw;ril0jZ3*QVS^c3AumdYpK%H^lJo&y4gwM7zaEK0`Ab*o*sNsaQ*mo&B@w{!+Az9H^3k z%HWq$`7j#~jL!?&if(qEi*vkYOiQMpWXh@k~n> zxC^!7MLm(lVSnz&i{i)Vi*&laYB=M-sJ!V6luW5WVx0Q^+S*DqQRu1@u88`x!&pk} zAd!4RW?bfkdrI?(gA<(7YYa?OxGGniIu}I?_6D1?i|tI@8ikBDI$O9iA~!8Zk6M<* zzb*^|oi7rAS|Oy9Z&7&;M8*OU%u#F*24to&=t%D%u@Peug30W`4pBKFcN!LGw7@nd z1WcR+<_dcXi@VqCxr1@E&H>KxT|r@r;XsarX}ts^^E#6sM(UU9OeZpP2RAx}l4-bZ zVaz7BzK#^v9>=d8Vp@mNi5)cR!H*z^>}W)`(8J!OQl_%uisY;@^sI#A9`Sh_ExP(? zmRcg-v(zZUSvQR&KHkxfj+bXZGJHypMm;~x=XApHrq@{GUh4q|Lpok1Z`*iooJDSM z&0d{KjBv%F9hxqdwLvi}3ntax1-XcGL+!Zak2RjNy^5yGG}bIp&OROYik1eNUygq6 znz7A|$&5lGt|`l^)h!EY4=+u`;{9Tt()V5Q8y}+mP^>Jn)Lri!QoVP=szsgaf} z>}oRDXv?cD$?w638(6n_&{k*rs+;<# z+xo1;F6gFIt(w_vk>CaAE7is}@lG5k6s8@=e7C`K4j3EuNgfJvyeVAryqXC6*g5k8$t^-XxkK2>hOrX-$o{K;=otfl9C-~<2ITVEGi zc;)!rvcNh)gBm`>uhR&js0K4bJMIDkmP>0Jv}@sFMIW~#>A5m+iC4UKSNGIcKd|Mp zHY0_Q9Udz(W~T>elvdeUc;4VU74N{#MEfj1wED6)3z`d&7OJNuB4))*1lt;e|ow4O%l~D+N3Ra&h(clNFP&P zVE8w9qID3GA$SX}Cks8XinK8KULRo2HiB-}rhc)?FAys2Ds}F_WTd0=QMb^p63oi-oRD_(6>fe8w=Iu__t-1=c4omG{F$SJ}m_>f4chRrDXd%89UKF;ffzJwo&#wmR2An z30mbVO8zg>-ZCiCb;%lq#=UWe#@*fB-QC^Yt+B%0y>WMUhsNC<8h3ZN>^bLrcV^#+ zZ_eC_sQOV6^{3udna`6ebFGBd=c3KELZubKmvGoOo%z;s$-kg*Refr)0dvjmzbJUgON4arFEZ^o6 zM1HT?iZ>QQ*%5=7t66{Nm0U)3hLcatVVUQRFq^|#?HuQcKm!o5hiqlZsqEWyne5lM z^aQWv_!jVF1%oqU&;lIQFjZT%&0Sh&4k*!CT@i069WU?QK_qDUB-ex3;_+&COv?gW zypT7kJr()gvqq=_G@dZrnT5Yk+MzSBgMFGd=Rg!h`RlE= z{tEql%xWcUtlY|t0tcq09Z|EOLPJ<5u$<~mw^0(JCmht>%~SeZH2m8bm6p)XHMWo& zo;Ti(WeBdB;BzwZO@ zzZ22(*Vx2%9fW2Q3c)YqkYq^mm0S|rP)sw^+-)Yb&wD2IiN-V&jaS4_uG7AaPsI?1t}CiqnvGuPJ@-Z z!>Xo$Kcg&va^^}ef=vVe^<~apzkaM9wD`-s(?P9_Y4Wqu0`wmq_j}BQs4D-t(Qx|J z%ID|k6zBYMO~&~u+y2{0V_^$ZQxiuMTO$+V|1hWde?R}@9{M%OF9pJY5^VR9YB4Nk zRoP}w7QloJVhf5YKq=UZu4=kNi)&X*ktWQ9dEMN41@V+Wz%>ZbL_2hdKs$MZ)gY#F1V9sWeJr{B6Wt@u2Om;D9;0WGaBW2>)F9z|(1M?}@ zMpu$mS#2o+NoVQA>y0DPylY2mGRDNA5*i*qg$+BR<|2b*4(Ig~-Qur=iSbInopHxkzm#U0G2|LYe`)iseZFft0l8ge z7{<0Q=3Z`x#TKX^SviwQlJW7(soXC&ZXCLL^(=Q~K|CBMf2Ge-=6r?vuSH-q)ofV7SMj&^^``vqia;3yD-*|m4c7)o zD!}*he+PW#Qmf1mh2E_Is35~ah60f*8cP>l)!O#$@o;)_2SVLh6Vm)X{^VRfxA6f{ z$3a5+r+&YDZ=5kz(iFltJc%!_w>U^@qv$g}Z@ABO7O`DT;De5YOnYdg?x3rP^IqJn zRkw1c^1ECK01~WonPjFa7o_)(_5C$VsrGv#cbD7XAty;TZN9g;ZCxKdcNpu-;N&;5 z6M&Z%x8raAwdq`OelTAO2TUj+Ant$fw+h+W*t^?PJpk&6P!CG;U!T*^op}49@$oWA??E2S_3tRc4k=I!q#f-)%NChUtQCOeCA+ z*DgE8T>7f+O2(!4K6oP2_biQ^gw=O7w&7+VqH`-M`(Ij*pgron+fzX6K|B_-g zBHG~THz++UUZi7rE&A~UvS*G~<`gZhNwI|63HfU)v%eB>Tf5;r^@S%qX7^|JyjzZ^ zhD9N%HlSAcnqX@iGeN6S+GC%ObNSg21>9?@l{Q`s#+=0m&ANkSs4Ss`Fy^Y z^XH%#ek_^us%R^A!Ik3noc+MvDQewZt)Xzbh6&ZrI%-&ev?2VQqb-%ic_Lj?1nnhlw3VWiac<2-nR!rM>$eby?& z;GLI|1HjIzM0me_lak7jwNK-VGw%#gVpcM(pzsmP*2#75z>`&*_Y(`#;?T4J+qC@| zc(sEXiYm;in{%Dv=^iU+{VakTG zk@*4mWjkR?_mmG7C}nDA3Rc=#uMV(&FO2I;3DirY#Cgf^)zs;fFuc13DP=-_oj&&K z_^xY|9kN(>>CdR|e;T!9i<%tD?x<*~3z`wrp|fD_iQXXEToHA7(O3Onym!Ik+e4`@ z^SnGDG;iEG8l%khrdT&+C3cw+*N!%N(+-j4e2UwSr1%Ly7!w)ta;@db`Es>9KxI~h ztLuVOZ!m~Pr!bVVe-*s#hImA2pA??S5DK-kj4q*iZ-?mGhUga2C6(U@0fY7F@qG8> zfb1lB4Rv2Su7r>j7##lmQM4<{_O;eWlb^EO<=HnfRpyd?99Pqe z^|V*+sm}U(zt7vX93b9a-|tE-m;;oy6i=Qw2~VWrF>AmmsOyLi?S>t!z?i4dtSHvt z4E|owl3$~>bGWvrWeSI`V$I{76I`%octS1aX}Dr6S#6fit@xezLc;Z$=T-R`QH@ol z91VaS$*{;)fC&q1cE0Txqf>}w$l(jE2jIGFlU}9R$_a3%@eyooLzPpta9iH+r7zBC zs~@e2!>N<4hYhrnt*U4mvrJffW~!xL!1NY54gD#d| zJJWb~DKB~!L-B*u_5IEJU;3}c_P zX<4HPebUb(^!uaGvIt91`m+A>d3+B&m$0vZz8rAU(!?XBFW~etkFmcoE;_vA^T}#p zqqfyFO|0#QM0H}U>v*H-prbH7ppt;aXH?O}IxpUjem567BRQXsdu5*{VlpP;L#F+) znefiHaf9_}T}K?A2dr=ZWJOT^SbA0jTwJ|}nb3J|yd_@)OTlL5se`MF{}F?{8D{=7 z))Ut{!tuoHsSKh^ z`kv$4YpL`DdZbwn?DRySty(LrMAeTUc6;$1fi2!!B560SIKQOz!>q?eQi`&JfF?{z z$lBd`RKxIer>MBDG>bG4Jfc6SK>o;$&@PJ15pQ@oIPg37(fwYL z!%Q!VftZ;j6y65)2P1^{i21WY=Fu%8%-d7(hC4Ze08UKU@M83$8D|f__k^;fV~`JG zsE`8BMdIoF!*iab_X_hqFxC~t+gGa>orh8nUVMXp(*}kZq{Ne0@(qnvsjsNy9opaT zZ}*ld=pwq5uLdmXmyM@sqsW)d}vFC!BSU)4Gyd`ao#NK0{~XqN0pEO`VXbpNr=(WA(hze$iq z#wKxpSR8ACRK5vdAhBL_@nIs3RnL50wYA;4LR0woYgY;iL|~r4X>95hUizP|>|lV2 zf-oiA(teW|H0ID+?;4@lFQrEN6oVGrdD!=f=_b~u9hnO#A!5pva3e2(#gf@Gn$Xto zbt0oVa!r5^&8DW0u%%@FBj&tI?b=$~2z|qH4Nv{hnCS+wcr)Bmi9<}gn$6lZY>Z<1 zy4ygCw<0rfEjfP}Q*8L84Xke&6ERz$LZxHOjyp~fJ2Au_#&N3g&x&+}roQ#-gu-AZ z(d2lMN0N!~m^1^w62sguPXqKY>?C4iN)bVCuu&>6W#lkZPvTUVqZ84<4!7LS{Gn&2 z_R4Xw6cQIEgsQ4Vir|uqH^T#)_IO8er)PkPviO0a7UQ+1Vss-~k;LdhOn)h!AgVbS zvVn7Rvhc%QWRRJadyxvUqC`KDWUW;|;LiNydD!pxOy09w2?Q8?KRyPpQdBJt04wH< zNc63C{;aZ3+<7?ll%aPact?>C#-NRXFZQCW>4-%Os_zEM#xEx>8Chss+~Jz4-dTmf z%6$9~7j}$!2b941&WB`c!DB$Q9si@OPDqFYF1o$Ku!?s@ZmtpXt@GMhA(g^w*gg7v zYBN{(4u56{#^l+@tReZu4e9JvYPyj0fjnk(s3DGLyWmOn{H5lvNF~6<@ySKgNbdyO z*~SC3UGq{6yZ&mei5E?y6Z$Z#aIQs*it9qj?XFFV($&)VmE;T+f`>^~fe0Q;;iR%Y zg}&7FDgeD9V6x~*KX%hdN4^GOL*4;{=csUL!PnD>f}P)~3|$lddg*dHy$o=``5tW$ z>bhC1k@SFq_3B91>-dZ=pDi@8pF?nsGm>K=G)V8`759V2k1+QQOy?OJBGK;(c;*$v z0B1P#v*om(+_8Z365DV`x7Y6>YKPbXCO>Cd@;Akal0~kNeR-(4N`WevNT%g%S&*jO zoLv4PDUVrjSiMcEcvtU0>w|RWFng&LW3TV30b%`^5-7n-%?gUJ8noOkQ9L0K`yDpt z#Xd}{nRr)F6MsJE1B@cHu2`8AyTZ9(%4!sFoZ zKY<&)2Dbi&n!fkwRDS#Rc*ECVhq;9n9z>7c(Ffu@Op zWWG&n0%=O%sKn{ zw{$;pBCBfg#l*CK(PM1?Ubds&U5r_3hn1Cj1npPmQrtD3?nb%h z=uR9+T;<%Z8{7N6Of)M|ofnjAPx<2c+av-3$q;5(GOUHfBOa0ytY4RF+J|qRGqI0s zc`2NgLL~MD*LQ7)jj+laPO)?W^Tv&v14mSV(i7Iz^~26KZ|&rbb-39AD8=ZxlWsm@#Z(GP0hsY+qTrrtXH0~ruVv$kb9G2KY^=$cVnu~ zj2k(_^rwz)$GD@pwskbS7mpDkWf8}t$1_N*MV~&`0i_-zArQ{`A)Qk(lIZJ>-q==;Y%8DKTJy z!FHlO&`HE#jFJx?;T5vTcbX7ePtm@ApCg7=>E5i$WMZe;K!$ymEg87Bx2MQs@}&r) zaCPq4=ZFzBijg2|g*F1LhhZEcrqJ+4hD|gkAt^}Ru%kIc13G1YLHO#OcA@b0`l~ib zPy`HI-mKAfBPu*w#X43_#&+&q?~ubH%^20NQKAcHofx2m=1&{vd?a3^>XsY{p^D=w z(doo#AM3)yCu5X-PM#a4^?nwQ4?+v=6??r)-7d7XzTa>0V2=7hEv*NO(Afb*=6XSS zgh=1Ndi-7)T2^O>X9V~5789`$73l6kPTK6I2 zn)T#GDyid2%xaJ;>iiEqQl~<5{e&yz?)d+e4$D=<+_wB*#2(W>Dz+p=8L4jq7`~<( z>l4fqqobU`5S8XkF_Ms`Kg>g55jKikrYjxDT)*V$I-Fp*FTh~$1xFi${Dk5VrUxE5 z9yyOjrkmZmTR@qHZ2lOFaMl>V83wGPPeILKTMb{M{0yKYdH)KKv z+4lFy=65$c)8;4Yd1j$vdV(?Tx7+qHoj-ZR@W3k_Zhk%hC)hI%1SQ9X8&(kVEa1=J zWm~+=(d{2bDrQg`{T5!ts#8EUI6zJJ5M;0>bg&h@&$Ts-ur?mI`>*hE`RGnq|1aQU z{=dLi-$p^8?*9vyk=q%2NuYTsYgy-9&gB@z`3T|;B;Z5(?!xc~VgU%#ZO2r{)GGti zrCzliQ1q7}32Zs|BJ3ZGU6o;%049KTt;g{2di?si)_IT9x^JPv3H_1F0y6Az(O!7@ zObt~B_GZ$6amMIDT|W<516ctcEKUxA2MxgTYt35C_BGLKRG}j^^T?3^wEBQ?#z5G z|J3)Gt{}YYgUt_kFJP}|ZdlE|Kfvc8q&vo;P&9<7gX*H5d3?WkxaaPQ^+u;C3Rx9~ zV#6v>jq@q{#-*5VgACQhcGn|MgeC^SSAM7dZJJN3S1j4)e*qxN{|&&Sf*^gc0N3AF z(>B@=8(40JZjF2kg-X-8_|x5xFSs-95&pul@Z;mRytllU!{Z%(on64}L$2Q#DzMa< zVvR!8aF?JaF&qaEaPgg_9GmSLL8csDlSE7Ve=VuV(HCSyQ&oxfS6$hu< zoD+a9Mg{zYYKl@XBZ^zdr#22thJ6 z5zkGStf3&F5`ub-!LUR+FfQo-K!{ zQEEQ%aFueYbX~KB`3WT9)mEssa1#A9UiUF$5OB$+-7aoA_Xw%IROJ?)v51hd_~=UI zrd%z3XJaF!r`8AuOwm|$n%>rLBU-j#V>=jik}V3-y5aI3W(uk9$tsviyrPqR?bt;R z%~$m@Rr&_CaeXGXanQA~TKk}bW#Dgr9t=cN-Q56Rk!R%*l{aI-p_{LbL7*)9c$(a9 z)rf;f0FC@uQ8aP*fgWI4&YnG|fogvp1X~uYW9Zi9RPvCx!^~YiXA`GLJw^5hzp}}7 zd!FmzR^L3vUzCdMII}2TF)bpTZ(~LaCq+IIh>P-%(<@CUU>Wmb7V=gNGq z3ICatFUHx@HA?1FIm|?DH$Kb5E|g;Dcn-Zq_LClaM?0t$@{psb_}OC@wjfr_pZ2%N zi3!v*(c_N~z%s#ZcYt2@5{O(nvLC@G_7n4so<9ct5NVwH8}5h@F}nb_Xp2M>Qd@4Q zRxfv!pk=Et6oV&lle>>8(8CFjGhmI|jT(ZN%3+(yTei_YjxImak{Hd8j4YG78KX_u zalK8*BbZ>cIgrhEa-5N(^|kiP+uy9$Xr z5I6?hT%=r-9rQmj4R>_^^~4Ol^GOH(O1KPP#RmKTC|v(?-7~TMS3fLEzW1*Vuuq^k zaOn?iZfpck2V{6W>;B+@0eNP`+1J&IiCx#FhTxdJzuLb+!1sj2SPzVsGMgQ2^*QDH z5I=c6@nm_NA>qt&R1VN)-Pwumx<>M;?#pG3OS4EC@G4ZEr+??kgAufZBc+7Rx6YII z(mN$bFi=tqs&~cgXN=N4vV$!#kjXk*ns7{^8n~AzvEzcxv13@{_S-w7Py7*tCbFT- z)-~nE8}RZB+(66aaJc1GcwD^_{g6AE5IxS7I{Ne*6h|-IttM=6C{61z%WN>iEEe+W)zUs*&`kEYG1^v2oCY~)>Se8Kv!kJT&3w;|{2k$(T0 zO8+-ojsL9SzQ)omOf8HIoGt8Z|CtPxwf-_Q{4n(@qz?EM`ZGLqHhIiZA~H8fJe*Wq z0HlRsC?z-2#emM(t!cE}PtfOP1|6UII{rU=J~5}LrIdom8zc@hIe2cfF1?v}x_v*N zp!C7(ISS;hg^-LmjxeV589@SbslIm&+9*Bw@3+RJq+l$A0HW&-!QyRNtd>os|N5B+J-rg)E&f8fEQh4F_oTWY9DLi)jbQF)y->InUlbA5gIIkK;xk)%*JfcaZvNf8ptGk9M+KQ;OBJ!% z5znZZ-(~FF2HM!9T~#9M#B2biT$QGb<{E27`k2WP@}2g_k75#&kR>5C&1m|{9>Tns zmML6<;O?Wg>`08*co2oLYS>LkEUR3b^2t!CCQ{?KOw-$7G+p@%5`>F|$}*I-dA+Wy z#GRG5(RGKc31mZhFW;)i2`4YgE1pFE5#dU{! z#r8%wK_-47!f0=+Hyl|n*C)Ep)10Tcu8~dL%5J8rvmY!R72)PfhLqP@kdKg38h!IJ zGDj%4AgTZJEw?0Z6yN%fp2Z)%!Z$0#egbW>wX|P3fP4owoS05*j9isC9pZBMqHw)m zK9)7o<-ZeME6=73U?6+c{p3rwgNC(as2CO4fL!V;^@mIc; zg7+)&^K)GwHxqM8S7d$fi zYIf4q4#(k)5lMxgQxDbQju=VcX(i*>G-VEA#$^AgHH|Z?H44w-Bp~@NuJl7joLoXO zFgMl^LQB;F%0IE7(3!}YAaORiiJHcSVmcW~aLVKM;CNy@f!Xoo^0xCb+v`%}!|9^+ zFuLpQz)TOcCQT79avNeFa%ZdH+0Ei3{|^0t5A$6<{WI}EjMBGan+)#_{X;ALQ{hS} z_p>@ABgbQV5F76e$FA%tID~(|>UW`Hn56A9HO(-4(lxlEvf|iIq2s1FUM{t~gi?uM zXcDE0gdR--3!_H)tRN=!&9tE=p>}dv!?@6xMX)55iYCc=bwW}(&$6%;%FU>LWo)%t zNfi!JgKDnlPVJu~UJ#vuuI> z4-Y*+kgbXZAXD%NsLv!s3s+$Jaid9+A$d{{T0yd;Nnp$5(weRpi|vsGBKpy1&7-dN zcgRS}aiikFg#?t^bBmTRmTv4AOU8sXn6z_ou0gazM1y*M1Mz>jAo_R!IsfSCp%)YU zDc@TcU#d^df)ZJ9j}+Z$*>`h>=Vuq=S5sY`Kg{P{&~8+cuZ7lPBh3Ym3whUw0P5)# zeb?}K_b|r2C(pY)w?#k*AxW&Q;itNmBU`kq&@ah3UIsAQQC62uhXnMM&IO&wFJ4R^ z+rAgz5m1MMU&4va&3s&~x!^^e7QZTS^CfeN$`|uByN2w}B-groQ|C2bnK9$-(IU+V zm7<}w@Ud5sePa;iLyNp>;cc%^0%oTG$kl6BY;hsV9-ZfRyyz2V&UyvZvcJYZASEv! ztO^nEq%o6~8=bMVM?hwT%a?9;1-q0QzjDeJ^h+DUrb={zB;@xNY#M3}zK*{38`bJl zW=&`1{@$wVe09Gvt|38+jB32Y_#Ct(J-m>B7+2Ubs=bQ}vD-)Qhc|~-k*>Og+jI!7GxSXojEO*fxsBT>!U1ZTvI8HUE4M^ z3sAL0olSPS+_h?f*$020N)RDY(N)C``n9U!rpqSdQVnL}}@Xa{L2uKw(*FBktXqTA_hM&t!fql0L=FYVm za{R@F3nNiyP6O>Z36@K}cP7ib=fvp7OUhx@#8#^lRb+tB(HNQ)cFheUAT!9ZR$m$< zvhst`*sP=@AU-^CB?;u9kH^zk5Gh>g-H1GChEpS_J$GTd?vq9bFSvEcKh_4!E4YTda$I4%N^xVY?>#Oo?2rs!HeiBU!{+#Zf`J_DByh=YEt^ zoxB;HyeX2ILthPTJLM23^MV~pU%A|N7EZxOa}*R%);}q6lUkh&t|JN#5~15vCBIGA z2gFURBp%$Ur|{Q|<9>O?8o^u+zA|I=qC+iBXx3YNndyjgJL+3!`}OuPu#4esB1_}# zZD9E#<1bt}Sl|)x*2&!76kB8MpHxA@!T1gsE+2GJg+tePhHT9XGj*xBqEx2M+1X*? z=GTZ0TV&QSe>$!v!HbEie-|MiZRV$@&|`qB-ovgVsrr7&C(!X@L>iWnH--v}w9o^% zyK*OwIVbi2Hap4tp`xJKj3kNYAT{8|<#3snGx!#m@*8Z|nC8JVm5Kwec1!-1Y63*2skQM2 ziE2TltGcQ<;e7N_ey=le((T;n$x4)wMgER3;{tMwNr8<^tZKnqxI3TAE=knIkU(g`ifIrSxl5P`y@h^^C-(f z-$h%7D*B+Mw?QGH@LFU4IE=E&-aZxBctelbSKD}}YtcgQ)8Q!=W4&Y6^I1J;Yhk{> zn@)jM%OPuW=SRV2+>Xb7KiW`2jDzR{iv@8nc&BB8*yV zhAd3UHRim}>pfg*(SZwIbL*d2Osr=~vK|y%bOp0&OFq6l)S&4{#qWWT(ZMs4AiOq6 zWWfKm;s&)}E$EOF(q6E*_kn{3n*v$s2c2H+0F6qQd&4;Db1_zOqZ8YWh&gN33gM&` ztT*h*9UbM~7u!PIzYxDXerx!-m&_{Yk=mWTeW}=j)?m{6{5|`RFR&cX;3r?^fZf#< zk$ZZv@ZS0Q*oWrKBwN^t#JqHF@;OX|NPa~l-W-@$!^9>FNw+?b^EdzBk zS$0O}vlP_GR2!H%xA9~<*PTE2Q)>H6-AO+_BH=zMU+-90udJ5CyL)V&sGN6CS-(H1 z|2XTl)A*5?&kWK>$!#X>JKk{FaqTw56m3hH#%fS#A}FyK6!WL8w4g_Z&)CLq!1jfq z{g{lYbWaK$j)#^oB5< zn^m=Jgz~b+J3i#?fGNp)Xn?vWys|0!5euenp=s~DGjc)D6WA(etg0j1=+`yaJkKzt z1{t5xI zQKSnK=bkNu8Gp90>83|4Ln89wZKXw9z~fm9@+>L=JQGWVl*XL7hN+xKU7+ z0A`j5>c+5YmJlw_PjJs-f(4jo+z~U0dxP*xZN@HN^ql<_GFV;Z!)^GKw;KKQ7cg0a zyg%fp`B(3wWodX<8hG+W)8_0uNb{K_*p(z@twA>R@#adU4DF&tfDIY$4Q~cE%o!o; zd9P`S%V62ddQ4W!f4rEifk(?$&1uMFiI{xg>Cz8CQ!C}sR>mo&h{^V!*Z&B|tiCmq zvvH_AgCYCwrVs0btCbD5-+XJoA#9JIBGEA{_u$j)Z(+<&Y|?y~EzokUUzq1!=4)9bH&p#1nb$YWdhE$vmv>S9c~KFJU> zk!fKTe>Ri=!%N1;m)_AwzhEg-6_4kG^ z9!!;Ci1&pzRI?0(bRmWyU!b6!K1ZiT|Fvp{k#Zt+^|9g=Sy7Q6bgA&i`Z$l)xMdqR z74;Mk?W>Dsw$cw@maXw6_a~MrOGYt*kxu@j33VkGRGa>;Au4k|gmX$)%q`zJyk?ng zT`kfFP1&1Wx>nV?r6Iv*D<(E7dzy73(p8A{#&fMMin9w=$=}5a zE9z?mISEJH=806`rBb{y@mxZTqe2PB1)#I^JiShnp!UUWS0;@wIB88T~Nrh3AlG>uT!m1@SSk` zZ>#8aoul@osvx^|!*^KJaH`v7mpkrg=A;T?ueYwq_Yy1l##!FdKfET0m3I{e0qvndvFNEBn)oQB#Jc!~A?SaEjm^YKX+ za$SvK)Tb-!$SDY063%)NV}R-EfPdf%@i@$p6YYe*Qb{=K6M4+$fKR8y(WH4jCjCk3 z8{Iv4^Z7TvV6YB({`QL~%l;Cg|9kBM3EQtBd|QLRj2r$n>d^U*bswE`v$g`D!ouHy zMdkzgzWIs?27$vC{RnvQhe$9;qYYe3Ys&(AmK!=s2t)V)@=Ls)yjV@FvuLZhHgLPx zTyZj;>~!PxegC*d2147`Krh(w2S$K%H|{a|wjx5?qDdG#DVGH4jPi$(4J6|6=-o&?NpdSL9kG3@Mt8^N>VBe8@XV8 z)4PHDo{}`-xrH6$K^;J^0lG`c%cD0R|6Fn?qF-^}aXm}~w?Kj#cLWQ=*p|qg6IcxM zQ1H@hj;=XLN9e+-@cLPZCoXqdASQc(k1m+uB%?}eLl+xnBS)@lK%%>s+DUUV3oW#0 zLQs$wF6G}o5gPMuJli(6eupDgj7kVs%4le z$R7a!+}&VeDAi#0!WC<0UhpHtZUe3q^+>p#>j}7RoA4+@5aAB6{Ytn2~Dw6NU;$uJ8x7=RI7-qClc_=T6_E zU7$MOS2DM}STg?3x+R#Utb=?-k^7gr<$oSU{~9?-kg=Ql67+1jtg}ZcLKo_J`!(<@ z3czvLTc|*({1B1kFPR2uj;eQP-Z%sI(t&!C!r2Dh?LpWUBN&Rt7O^E%kXjs{?3$W9 zbALO$tlk1jH&@=-wMBij-|7d1$N+At=4US$5>KLpz}>d)K>H1~EU!5+oki}V-B3l6 zS4p=|V#OGB4h5F*MpA)c8v#+#WwbdNUIE%tYA?fV{FI zhNb3K+P4aZCc(E({f|d{SsnK10*lFKP>SW!bS;6Ra>TOb zk_+Q1@%6Vx9OOrYQK;|f<$P_3`B7oSiyx5CoSrx|$V}F&!5GJXFU;7=7Hyhnk08Otp-6AEzM@A+=RFtcXdKFNn=uzty4kITHqUTkh|G{2tvNL)^B;dcXVQ&~NLL87l2PQzyw1t!?l$WHBSNA02y`3uP?QFq)`ql8jil ziuhqv3^MBU)zD#mUEcjc9hGJCJ8CPrYH4uIhJ3UW>G!oJUSt3ZVGE@pTS@J#Ck&CN zR;Y$Uw5o=L$tjMy%i^N5YF2AgriK}EKUSsP3CXosz?@l0^quJJv8%)w(!!2{^m~6LkG6`o$yJY z$YDN47o0|5jm-=C4;QB|tj7o4Bbrzm4Mkhjk)10$*MGKSQ|Bq0)Moxv$i%GIJM0Ff#m8hcyp*7O_G!uxo#Y zen@>s*O9$OX_)yDf~jV}`1}2DSEw_@n@ej*ARsO@ARyWQ-(jj`;%H%DZQ=PJjYoM$JNJKv z>V*2S8uk+ECl5cYU?4=F;hsKrJ8|!~ywyfr9C}(42T;LfG^vD!S_lUJ+Cog~C~N!G zA&GkCqWKb?S}rHEUN3wv zz4DhnUw6lV9(MI?t$PhwR%`zZ*|1M-1B2u1UkQNY8(#eggn`8~yrK_8@VbJ;s~j?N z&#aAczXHv^+s=Q&2#lfn+MICzgu>*VUOT0{SMM&_dsrrMh!i-*^zTLWBg?_AGJW~+qsd`tO?25d{!Uf~z3?SM27qshQ-k&Vm?1lT|*|HMz5 zLEH_;qC4?EdxCd0+HDRS>fp>&g9(mX=q@7pBp)RC_hgeVD_~D<+X1jP5Cg80jQaD| z&>bRXORWZBLeb^xsACwT7Ym|;W*j2ZV?%m5l4%ecHRdl8mn_+hL(jKVBpMH5iq9X zN8LGRInim+i1RcVnYN?(k0Je{+}R#GVJ8u$%!qJlhZgNu3G+2J!N?3Z3>_%+lURtr zG^WBfvxxM2(E_!~S2~1vbi~kSR0MT4<*sqqKG@5PYb*?_b1V!bd-5z+!jT*saZs^w zlI*4fDYyOCaDU{H#JM=7^iN6PFu{^Ki%d9u1g&ki%&*sbe5|0$P_p9?yZwlcDM+&0 zi$N*D&osij(dcQ2QbQ*(YN32c1rsyAxu#-i6uTB3!q)bsv6VhGJxmQ`rQ*2?)~!w4 zwh3+cGMm!TLPb_E8LOp;U|Lf)7+Mfmja*|FnH1^{)P4>#Qg8~hw%G;lCoVOe9`n=I zXsx-WEUq=D45Th?EF8MaBiZz!Eze|cTCZZ74I@tq_U-VWDp-U@fDV-K>IfY-GRR>c z3dc)Wr>&4q$3D)=dCcKvi0QUw*@J3U6-w%BG4y)4E(PK6c&DEqD5_rZIGUIf zJXdV`$^=qi?mK_Gjnq)eOT_o!M1m2C+(Dsu@(;j=o<~&{Z?nXzYY-$rxQpIwP3Bbz za;;RdUXIS1Gpa9QQR@JAl07JbCP}1XGA1)LFk1d2(OCE!s3nW7>~2I(i7v3Q4c?`-#sQ=0G6VqVAoe$^{OL0XB!Mvq5wr(;aZ7WNutyp zk*@R!69`i1)5A*J(y}P!rdk_Dt&jIWcrR7vq#=)QGbdpF#t`-y;XL*?! zeYyQ(MpCE7b>8?(kn%k2RPTS`UOuMw%O#k&dQ@Nyvk7_8dXx6in4X#0p$|Xvm#^jF z!`!7T&pUvNlPv^>2ICW~w;%2h{JO8{;19%01a^&Pg6T zc+64Rwry8z8#_+LwsZ6E?sLcK zJ}{*>;-ika-rEq65?6z2BxCuXrusDGvu zWE`Y9E9|zDqK*9Q%K0Vx3w2$LKAGK{W1!H6CfIQkV24d+S@5m4!Hb4lJnTrvX`5ED zOD_z}%C>L`**A!5+&(MHMzq|yHv&680Y=KXMt~C^8yoW*0^kr*;q^Yo60fjO{Rq7*;s`${hvoDd;jPX;0+_H zR`eEq@7vGiaL0MX!YMBZlZ`0S(auas75DZydyjOQxRP7;);NXFSFp&c8)9zAwsuA? z$O{{$^2qph^=Uz#sea$PLtf8BAbh%Wgm412VGZNiqdd<}f!Q0mY+r!(s!avXt?ou801b? zq_|{V{n{$Ig*Fex)0Q;T-4PkVCV9HEX6O7>i%S!2w(Sg;{tVo*A^y^W8^MwVbGjFE z(UhqSYu1wC>UsJnRY$V7W$r<{L$r)IVRFTn^MRLPjQi5ijl!o*1~9B)cQ=AJFNJ$_ zEz}J6c<${2)<6J8CCgW{sv849O9u zy@i=V$xT1OR&>h5hvcr*5Gs4Aj>lugHFlgH_@Z)UwBe=$u zMbxhG8A4>9{1~ZGQ{WpRV!49nQk67{CMrxRM2l=HZrD`x`b`G|br3QW_O(Zue6G&? zswXcXu6Kzn2Y=;SM(47Tl&`EEO0r&txe?IREGqtw`kQw9}zVI42vMKtUG+8P3q1B5|7?MLh943*Ho zUDpU(n;6)-*nf73R1BP~{%$)yuO}vyZfw-Umi?Ti`p(!7 z#WJ5uzb==4ws_e7yB{N477VJe>bZ28UX zFCipn!e5-IclcQiy3l-q_8kyt;nYdq3QS8d3`ssI-C<#>XwYbqfbagv?EP6aLE|uh z*l~WpNtgJs4BJq?x7e+xdgp*#m$_j{TXkBkc88T!V{&cU!&XBkGnh=EkYXH@Y;5D5 zi=Nhjhe4&Jwnkh!tGpO-sYn=%dpv;k6jhj4g+Pe7VGG-$9q~aq&&d{qUk3X9t zSY1y5*a$E9k>rb%ZTDRVFu;xG(#%!nSrJyiwD)MKxd$V(N^Lu9T+eNwQKp=~DrQ({ zKbB^!;S1yppduxzVFQo{W{4O`uq8IgrkmZI50O-^pRf#Ut(>3HeC;>MC_LmL{mt#c0zi^ms(aT*4EePkCb&d^|G-J$fJ1>sO4W zWoZ_BUJ@N;9?4>Qbb#^2N79oAw@?@M8OL>2x_?Ht=@+qlP7IW@SX4LhkojsTe$NfU zs5XozVnJ;rZ37kM=ii?eW+&=NrL7PFB*+p@FC$2F%mr$dnAp^)9?=E$pt*CHZ*EBP zspa06QKB?~-t$NhB?Pk#Ey&{62BlwA6wodu*OXfl}U$9yw2lUFtAiH@oG1 zat!RgPc_}oHDf4Mx!QdA&9;6o18Al zMDh+A3vJiJAC)x4yVPO{gO-y=c4?05m)_#pVX4ZGD*c!*`}9lei)KvUo5FboW)6$Z z0!~S_d_n(tNKwQ}xuxQ>Yb5$<9{zp6{$}UJJ`KK|qsMXa0;dJsYu7q0M<;l1+m7{h6iEIhhtCh!OnFzDuMk@bgn{{KBgABfd z^a~x={iSTX&%78TI)9oJcEg`$-yy=3yU-Y3;$1GEO!~Cu!>6wG+~#H#h~Rg{bdE zV^(Z}KYC(D5p*fXpzga3I<$6B{kb$jgtvr1!xj4$=oEfkNeZL>acc{yl2J0 z!r{d963T_B!KC5T9|oYdVKtFg{kP4i_iX7{+w)275Tb_HCIKSc@&j4tbQ#E%Y^6*U zE~zNOdm5|(_qq~MtLod0FkoYGlmn$Onf&VN4<|}os*28*2zSSH z4<4!tKxrzzfy7$E*bN?p=LAc=g4*|YV09xG3AaS1a6@)xNCljXgOaEOYrfAUO|JbIMHR%4R0S}d8=mKl3E2p-Da0os&jPSr1)~bqw^dB? zxRy!>*$91=8)gS6qqOKy2N}fXcG68d&A67O``??_1VdogY4a5XhGC06lxg4kNM!eF z-ygxLw9-W}=R=1ivizT@5%6k}hFoTUQB~qJY(xxDSwcD$Fj#dw{`hAWhSUf#RX)WA z?(^=!f5^f=+Nl$2+Mhix)OU1ZDz<`@LakRNrq9TTe!)}Yjxm#tMl0av{*%r%s&H^U&~o1q^Wve_&?JId?18vt1uI+ zIlk)rSQbeFl?=QHH#DBQx%22E@9l^Xp=_1E@%QusLqQOh3R_CE*kKQBr3A*s#D+=& zqKbEdzXsF7&~;zBFy=O=u@%#kMklLFu8vSNG@yjB%x7@ZHFQ8kZkq;L8Jg>&s3vyl zhUec_US5BKfkHJPmcXmnj`(m&8-M(Kq13vz3|c20olzJNuMA5RXV63y0fV}$I<7oG6K=7*@%?4P{)0``>!U?gS@5tG->0yuaKcis5vBd+ z;n>nIY+Imw{MJwbI^1wknMdLRzs!g_##v`#IFBIV2sIsJM(PqM1fz-KhIvjFVTlSk zo4KO#Af&p|7{=d*q5U+hiP;|$+@4}M%|;l#UbwTLa7ngQ@3MhWHIB#ObezSL%@6n+4m9tM0Sesz&fNPp47Mv zEw>w;t`8$lqRYagEJ(%5Dtr4HO?8)yWJmvbF?xE}@by9?>Bm`^$F#bPY5A#bk-}-WBZN)YQb3+OXWoZ~qAsgrWIpCO8}10V z9#}8`NZss1AAT={>REUAH)vHZB^XaL?+Q|?6Ou$)hLgQ_oF^gaA7FWJ=Q{>j^GvG8 z^<~E>D<5V+)>S7+s4r62> zL6SP3^Um4W=obA&L^i-O!RnCNqk}l`7qkw5D5#yRhb~?&B2FLvukLV#S9YatNr& zBz-oHoD1yIcvq2q=X{p5{GQJr$-;WhRP)Z5u|RT1>Z78+8CwE6lZb_nr5ng(Yb@p& z8NIwk>CmrIoj!qBt>k0>f%JXIYt04yOjkkz%hP{IlhVrSXm*rAA{e#q9jFP&ebts>$m5w?&yAfqesuPw~tATRwJ#O-!)F< zhCNv^?<~41O}_7jUj3anbU!OmIq$UKS1evoW;bZM8&fj7id2*2w$b5nF>&EDF}eBi z{!a0eONF_{e!bre3vRn84LI7}Z*%ty?8hMA$5JAb_f$+ZaCZCy?Kg;*J=Ru_ADmTz zQLfAeX~g7Ciz!#-u2j*8olXqgO6PYFQv*$YVZ-;d+%UnONm??lp<#wulLkfx)X2`2 zB@pY}ex~M`qrv?_<1pvEBP@C8C8|S`!1n&p5?epotp22oq-H`YG~$zX;C1%L4i$@* zs%t?8g_UJVw3Eo#IIrJ+C-zY+NT^K+mhqJ>)xNo^(NJEZ3+OF0J76g!{gR7X45>^Z zo{nb@*ZguDYVcTUUVe*bA2r)Nkgg3^Ayt6N^GPw@ciy(&GOKIV(tm9I5E9sv!f_f6 zHMu@1p8fvSYrJr&vu#h2hSa`VYU~CIOob;%{k*Rk?6o8gEu#qcswnYt?Bk&|j{6#?rJO%ruq znQm-GcCnm(p#suvU2|^y@_U7I2L)ztGgfVRj#@UM+S;NDo+2f!@!U z`!DKdEi3A>WP=?7e&qO!yu7CYu{E?+7z>fc?6JswgL^Z6L(qdE{M$SIZpYj01-f1h zW@>OJk<2d0gC5)1y2x}TW-0F$#)p&l{#|O=X+~&8Q}wzvKSJ>XWG_(X2hO2zDOS~3 zkFvW%nj9dF3JPz34>5gGO@R6AY07JLYWRrJIhGZ9usRqSrDNSEhR$WPG{}`vtc%7L z70rf^gJBfSKLhIK`;|Jmq_bihCj;e0XYnyY!D03X!mWYnFoGq#1Ka5sn zX6j}zjuV_(afK7*0#I384&)cA(`Se=WpD_43#mUX#^-RX#c5rR#4Un8jwv!_J!F+r zF41dOR6uWh6`}pqpEaCe8_A)A{C39A182O`y!jP=K5h!%Bq$~(ng4tJ+ov2xN zc9Yme+}zJY7?E?&-~PFZ9s}1xS^adBdH=bi{KqEuXU^uQA|v`HCFyCyqO0ibiHgn( z`GbKgRtdrdSWuQE%s)C%NqgC^lPs0b`fV{>2L2X8K|z*%wSJW*A8ajTwIL*5@|5MN zuVa4Rm<}-4t@O#t=dNKsx z33m}K=20lFu>Hga2An!e5$amvY?i(2QrYF?_)JoP$mR9v+)`qZXiMRA~7>0fb~rUO)XfOi}fXS0C`C5NX}47Q^S~M z^f<}1`11#A<_+cG{7Dq=M%{?GsDH#Jhr`jzmZ4HqeF*951DAm03%fUJ9;;fQrR%ar z9A*{np)sR1Gw6MgEfR~g66b2T#1A};t=*evTGmz1y`*a=W!y?$>kBm~Mm%Uo zX=Jf1W8@3RXm0M33P2Vro8NMGDvcy{oq!P2v#@v!oFesOe`&Ss ztGpu}&18=;`ZN5mhNc62lqh-1%;oRovu&{Bi&I zLBVWN^a6}p&~%=SJm$l@T|g|tq06gUB?Kkyiytv?g}E2?5IN!izgT?WXYjaHls!S5tqYN$(PdEMZMsk}r<7v@h=Wys}Z;^5uQ@|^^eq`E!qiSs=66lUktprty5S0Nr+CI+r7@=$H$ z*I~TK(oGF9V1e;%U1A5j&@*!{QXwTTE~V%ypcnQ7;-AUEwT7bse2SvQe=dsbe{Xh9 zs87k`h@-wkvTrn6g#_XRq{kHW+w{CHf0v%sAL1la&;*Ht+$$UE!5RnL(P~v|dmlG` zh#>H>wH7LUhDRN@9{-LvDxkE3G&6!JYhagZLmp4(xafQ`-FPq^{OEYzW%%NxA=%wq z5jwT|hmJ8);Y*Xc}z2vp$l9oE^Dqvob7nN7K+sP(`-XprlW<0wlc6*aBP&&@~}k*ty}Xo2b*6s%lrgQ1u%_cj<>b&}*vD(xXe+$vmMf z38CCYRqph@eRts~X4`LYydSW1TW&a@NHIJNUBzNaa@3}kq`G7^P1i&ofOnyY?0_mu z%bbu$^rUvV{^yNvNWH`M#^bPsITZQ4M6yfD5VVyv$v!!EdW>wSX1bH7&s+U8G~&s; zNQRch+h9(L=J<>WZzOaZcioyO$1W{TlC%{FGKjHuKjV;>An?A4Ui|SjClUT= z_v%N-Gn3^=_PM`!&1r}xwQliH0mR+i+z(u6&o!T%>}6cUWxR;oM52g~R zEflzz3>D_5Z-x>>5=KEC2_N#tZh+PK?86t^YmQs_NYe-~%&9vWyWQ7{U2g|-oIy#V zz-Z@FRQes{&*O)RI*TbvEdk|07e;Z_O>9^Z!S_q6_v$fZf`mV2}s`0Ecy@ z(zzVa*B}|R5NBIQ%jYj<=n+7b!AHDW8K`|hHk=m-hkI12`wB3xHluGF`tn9`mv$`0R{O?fC@n4kd{#E+&#nXOL9)Kf^ogDq0@vqW% zcJ{lqjQM9Y8!0L>))l8Fq}hlkyH+)bz}0B>7QyBB!mu2*W0swZ%a9;XGeh)WB8iJp zQtDFslbK!@8LbcFzczhdZ|uIzX~^{SlA#EYJD?^jANEa2vBU?2(vVlBrI<)0=o|q| z0J*h=;;&52eDqfLmY6MdY84UcSP>o{{`#DCds4Nt71iPTk=0%WSUT5u=c*oCWxm=L zK{&R7M4g0vIgP`a)8Dk_D2h+ysc90 z!g7d(ktEI)1var51eA?y3f%J&$xFxNTpxupZ-myRp#x5F8*h2D-s@3jYu)9*x*&@Opv!B zoxHMAUZr(o9aPGyIm~LoQ1dUs2mT^lx~h$Bq|fyG7Jq{6#JQ}33xRH{w4*4B@)}Ng zoTROAzN!~HLPT7JT@0N?8FGsu^Va9HnV<1&@c6WvJRRosGr2Zzoa zWXYw40B7Fcg3ZfyUpZc(EJzjE9Wo8*@#DM#?C5!2GZn7dCJuT!M_Kpng=Md$v3Ds8 zn4;6+3iar@04wL~SoCfKS<5MI>ZARjebp~~WQNFFN{XF)MTT5V-qIY};D>U`tf8dE z+}+?ixt(4alxPue?E^gmpynol&+e}Q>Qg(mPl0@wUz70arJOL1m@EW+-fojc!Zutt z4-blS+0+bnz}FyOGWYlkj{HE6K^~ERNy^crzCtmU7#TCk=#74Gt>ERc-(WnS%fI@+ zkHm8s;SAF7%^h%7J7;9OTIX|O?Ok?8W%f8^WG&DHE(^& z7MBnQ=QZcgw-y^Hzg(X}=`%fA|8pJZ z{4c^cKM6;CXXo;6V%jPoBSn}-MV8120t1C`BoBg2*CM5g8CE6W7}~+*x)42JiOhEY zBY$K>qbfqJ^fHfrw|PW@e0;i!D~CdqiPy+C!r@e3U%z?k{nF>x_40)AMO{&jB)FWs zs?Z+!N5RZ5oKZ)XNK)ICs z6am})bu0 z))Jzxw{CZ-qU=JQ&mdOoh75WNMb5nP@(ituET9ffl(1ENb2sy9&~6n@lB#P?45b-s zoK3M38Y?YFB}xEYUX-waqyelieIzBnF@FV5`TA~<<+^E%iR3KUQ2uT)6S=ZEhY5Jd zOaXYOn^F0*mW-Qd7r(@TrID&a<=Xogy!y-CoIy5i?V{ANxE&nkxhikjf#J|j?2ML;dlq$7+9%|;O-q|UbgO@7wLB0oEEEv5s3vP!EXuxo{7tiL@LEj1WeOqPSs= zUd4EmJgPaEt-+&KhfnEJ%u9tY=Mz{=Y)R9W8eEvf3^_xJCNQ@|BMavy*GC(4y_~}> zwG*pak9)zI@6Z5Vpw<};uXn;Kt4Ql>xtZXm{V_m1=Mmv|CRY#`{oO6kY$%E#;t3u& zU)w=U*h}0dLKNtdIz!q~aL@TMd!C`5DpLxzJ7h4XQ0M35f3rr-@-gOLlmnVbZ{~_u z=$E4l9=0(%Q52E~mN?}+#g0(7!TD#H_y@k;DZTxO+eC_6Svq`ieWtjb%D`fBHF(Vt ze?~k|$2-s(;|PlvMabuNMK5*$h^eh=dKWR7Faf5ZH@RkqR+Dfi#ou>rKA2=;mLMWu ziOD7LS*ATPiy8`Ke`2F;U5u#u5C19tw7(9<8^co(nAI`n&`t$l&xB6_ZvfO6Jk5J3 zxmpf9i@iKnM@4L|al}3T%89r|`FQ^Cb9ela9bqMJQ{wL^u^%FPA4Iv*#`O)ZSn3kk zZ4qE?&d{?5F`dZ;v(xn{1%9|rn0eL8q`y!kkJ)~mU=HF%vOID8v%u^0s@{=*nqOP2 z|A%|Ie@lP=?<3Ry{gvuJ;MaKhfvb-8vEjqmXDq=1OU65kjH09mtt}yBNZ5TXAw~F; zcHKFC)wvEXooI~qd{W7Le%|tAt!%+^;kjZ_d?9Ed#yK5(vvF~W;l0E!kU)UI?`n4! zm};N_n*FRvuKMKNasYIi;(PF#>^#Wgd07?s;R*4b=bf-8x>&08sU=8$D;`t~!dt4> zz&nj&>N0jp!u@OZdH`wGpNWIVgej+U*ba{q9wsB!J#&EwATkje{9gFTJz7)esh5$Zzhg|0OUJk1CI`LzkOZ-YpeoE2 zR?TbnYY?hj?E6vBBrK7%!ei)N-aa9tSlbGjGhUxn6YwS-1q^k6+zna;DH<08IqC9k z3v9l`MY!wq%%XXv&;usom06(HEUpm$`%91^V~s=$M$=4t>rB$p@;Jk~UISWMzMc z$Y0DJD!PQciB=a&1FeZXO+$YaO*viDqX>DPH>JDRz@9#6gRRa`@n;VzN%i8};ZK}6 zvSxQzSXY>ZhU%p}r819qiwEt{JQIzG7?^N34`r42>TLF5vVy%l<_6PU0Zn<4)4}s-@~d{0GoTuQp00}v z93TR9N~DRhLkmXOzr)JdQ)Wjo60W`&GRs}tB`IQgbkJ@=_Qg&x(31qHTi5qt#$J&C z6RwOpXm=?x=5od!seH+I4<3Ufe(b1X{qEgm*4qVEU$sSS+MhS;-1AJn;aAUb%;tiD!Q?+nmD&N*8UKS*2aM{zHMuCP!LukAeC7`~3&M`!mFLIVT4;w7H<6!RV%7csB4Ccsx;t@R%+sw1t9seOz zdYkb1%i4W^-ebtM>o!Q_MGk3|A5oBKMlws}(8Hx@)I15i0*^FajDEzHzkF#7Adf6Q znxjsf;B1V|ZJxQ)cEnLN%WS|aR|x=X!1kL$t3aJT0;!T^Ko9Aqx4P#3tp=k4Qi7&P zRHDiTH6LcKPw~nL_x-$be+l<{!&(s^`&pyKa*+@FS@Y4C;*ws%D1S@R4?)NWMZc09 zzkp}wTrhuZJq8K#TvQ`WipXX~I}F8l3c4OAw2kyj-F<-v{eV?u{=vyOU-0;*cfq<5 zGi$0}zn`$BY7dO)JnX{v9#!%D2kut<-5d+(G^_uw~xacx^uk!7~Nt*S>I)!EI!p;t#AIr zJ$k4aTB(QV1x3^a_>ydEL|F9)J3t+GFL4ilS%6SEh1y~!6aU*WpWYk_>tWq`UZapji8#hwJsSBpQ?vxL#*#i()O zLc!u@zPg{jE08) z`>$CeM}q!e!zm%(lwDH>SNP+ufB)XA>3#PM^z$3>#CD`E`Vwn9E(t zc1vNLrlZFh*~22mm_}=&NUgkd!Pe46WH`xvptU89YN-dm$SD0ge7ZQ87bw&+%h&n? z#!UO$K2Jsn{@Zhtf2%dOk3#VK`C<}UTQf@&wPm}*44 zseAg1F}#AjQ|@BbQ7Rbfq)&`U5t-RMrUt!fh`AS3W26ukX{kWZV0d2qzcm z3QV_S##H@~VWeHurP{b{r_06e_%k!^xbD`nv^To2Yd<^9jJ5yG&?f|A0n3F-S7Er`uMD_m3md+qT|K{wPhB?9NOj<* z2G9eiITQ^wxK(WlvGM*qtYtD5NTG!!y}$&W+fpD0yoW%y!ZB1)fwbRplOC<>r$*2t zdN^3BkTH(OKENG32vE-+7dpQYrZJOn9*!xDUJ3XR zUe9zqe7yM#`mAqGzFu^{JL7+(*mldU0@=Z)iqo$`?|$v)rj~;@#nXs*t`;<%##uq4 zWz(ZA+)fMk9~ zA{K8~eSc@;E>U2x^NOccY-jT(o<>6{kCJzgA3|?(@dn`GW$$JI7@UDaV0bK!?ojpI z8v|^3OH4yD9eQr{Iki}*!x^?;{7apl2zSX%E9^&L7LC)Lm(rSBe<#E_^I|V0Iqatj z&y{M7ZK_z)(>4!FMfK|p>(*QU!LHaN%gM*{(9nPU1GP-2CTr+z#B?>FOPVyY1qK%) zBX*CZjxCUcH_ok2W4`@O!i>TXFw8GDCZB+M>u6mF&;33qTIJFzhV6s7#k*YKA-uCI z+aXFC+B$mUDE|RJ`gTeZGNjLX?zJ?h}{2tB;JvkQdM|{PH zJbJZ9AYrZZhE@rht~^yB#+}LS?<#$!o^7ZQ79CR{873d-8F1@1Jx`EBJp``QR|ALz zhl5DVB{pfu>zkf7BAu}-VAOBe4x7OTcvl|t!e~}i=_lm6Y(Wk(;uq;dqRdkPv4oOn z*b3N1WbX5+Q~eZMRL?@s zs!bH;JY$XOj*Q$Rjo~_8!;Q&041m`<)l=@@socM}xqthIZ0d(BAg`!v!i!fF2}u$q z$5JQ9KoCTP4B&;-%u8aOLf`K0Loz|)V3T?j3C7(u?Vg}SFZ*I&UDFU>Q-vd{rz7#a z|Hif$S;aJg9MXeU4b^&rv<2LFwe&wB-$8yH+}?zd*My8!Qd#cT{v7xF=YN^a`Fq#Q zPiZsywAjM`zO=bo82uHis_0_k@_)}{R3_NT&nch|W{<7f1~Nm+kOqWtJD{%M5|Sf4 zp#({Q=Lw#;*}m|6+Fjtw&C&zG zm;EbJc(iXXxdw7tqEFOhSCpY10Kpysi1gwnv=p{q6t&$k9(|im(XiomVck4N)6KzK z8vvtc{s$~ISK5ab6}R=aK51k8_5jGCZ8e2eHhI^HXy6(;$V1T4H1B3qIb*@YSsP;@ zUjBecbf4UHgtpAcy&xX0-pBZ?XGo z9o?yZut6naIIFUW0y|Jx%EEjI-MiXBXLq9~_-8EM5_4wR(TXEJ7g}i;2wb@X@xfSu zVFh3J%7{sf#$ld_*$MBml?}aSS!zq?4KaCMp;6s?BKVTm`dHL!??eJcm;n!dS!%J! zen~=gRg>G~#j%`j7WnGMT^fOV5t=jpQ73-<$)p99=||VvC2g0<7~EhxVHm-_Yx-aoxD~l%O^mL_SI)A8;a2L9oX}O?&7`oHPW43C9kN6? zk?u)9Av+EUAz$5r&bIkSbOoL4&4qsdFu>(7&oIA{5z^D(a0p*!9_60cOSAMA-El%G zmn_z^?kQEbw+w2JaY*-8Zb32F6dkc*e(KM5ekoM{@w1Epa9SH)P2ALQ4k%1D*G{*t zf@dFdjjr%k$C4_JDCQe&+0+HhQW+&0SG<3{m;X$)XJwSm53t6BBGnRv zF)3(7eH#6odxjCIV8*8`{g=WH5vmk;@cHz6|1UiK{}@uP{7g=nQ^53{qVkx{|j zf;#T6g%1nKP7e{32*D8%Z@DU?8B(M?JC%b5UZQjm&Sd8_r{st+L@d3N8+mJsxkyRm z&~x$FW#42y_-q__H*EU(KEdeY4saUpA%_rc`nyK-$99)Q)PnbL7)Ok?j3A=Xh>`G- z8wKP#nf6Tw8)(bxo;yOCOxCrq*jPqF+A;D{9^JQT)t{w}s4_3vgmcgBeeT0)byie5 zm`x%BYgyy7=ICZ%63Waq04c_Yo`XN^e`#}P*9O%O)MP@VJ*UKL*JA*ZF$*lbQen>N zvCy;Kmdb&e^JU~jd}P{7<75*|9S7u;9%)QJw+%2ijvSE5>bM3Ov8q4;8)|9VcVK0? zU!y$1&4e9j==rH=>Cwok6rg0Q+5@I;WE}#?KD-usrO?ZHy!&c&wIoKasa({8imGGl ztMTwq0qz4OnrZfUao4JxgZ{|dDIY|K3PlZNHs)oenrtq)ZBihVj{-5xq2EB7qjRoG zRuQ9$!eRW59HlYSxWv6#4R{7Vgg5fDOO~thZ#4VXic5vbqdhB*6ecy=EI8oG)%Fbs z^wjKOo6-7bN^@Y{P=Nz{5D&3&f{Nh=k5rt|u+B5V-1BfK6pBf?h{SYfW+Y$d(=BYl z)G>=ZV}AB?c`Zlfo-ku4!!uk?|UzKcN^vL5i79=m4vz-$a-xou)L zvEaM1)$iR_gqPRLaL8qZ*I=E@^zw>*XhOs-Y2GrtbFzZyU$4qS&73x;-;rk4 zN%lgZ3U*Yk*|0Be;%oLbe*c*FO(W8Ic!2}>u=>+_1bD9wt4TJX`lyv0Mh%8Ee7yY2 ztcB)1f;h{@1m;; z+E%g4tlkaiu%NbmO}c5emUX4`iq5!KU;^~7V0uIxIzRJ&GVi*dB__W^nZ1G_1YE4} z@vXC8<sl__Oao}XjQWJqO24fpJk zinfH!U(L{)OiR*ZZzQf_K;QEATN$i#xKeS&R5Ci1j5d#>dZQ?v?)-S_ZE0zF!E{k!g8Rn2^$eu0 zr4HpuxLB#w)0_rnYLaORD?E1M_7jBF$fWprYS>kkEkm7iyx4m@a?CRy5G zNUBYNCDwqm+VIGDVH-}W*)HUH$i4|!`O#C=9pxi2%dB=gm!kOM1t=G%YVD|2k0bNr z3K4vCV%eVn-`*_~wCd0Db*Q@rjHfhfQL;`y?}L+) zm$MJ{HMmg6v~ZP&5xW38e+mJ%n!R;qN&!0coJ1kH`$S@!LDxB*f5&sAlrgN2$<;;X zR|XgC=DE>d;A!Rs>_Tz6tUO?errrB{V3Z@`m$I|{A0+c$q_;*Kd{1WB%OEA6qZQ^8 z8L-RYKCDfZai`6)N*1$tRqrI&N9?QZzCzzY_;65pMHrvJRK$hC>AUh2J4tNBpwX8l ztqn;eYH(LIHk$C98lcy_7Y*XAv>Tg$oRg7W$)zbmA+=P&>Nr4s^&efK>=IUJg>O8e zKP#obH~L!dfDzF0z5BP2vK3-K1gKdw$zhYvo>znhA{5l2yuQ?&UUa{+vcA;3J`AN> zyzaw{`(!W;;0skIsm=kC3C8p|y`uQ<)83RA%zQRX6lA0M;98_nBi8CcaR%^MYQLBu zYvP4F8likD9`C0F_y+Ye+doJ$d?GEXZ}>R2imW5i?>xvC?5v1-cp&WXgQj0EXt&vF z;wM&8vYnjAhKuZjjBf=6TW@*S?_;6db|KQ9sA_lFNft~K_F4@$_aZWGpgs7BrYH_^ z&9MA0pyT>ypYU?NVc;gx+D*#}MAD7XhU)1G$r*OY292`&uTQc`=7=JPz<|=6+r{eV zgIYJ|Uokb&3wt6Bffs}~Ou^EUqX-uqV~fDQqIwOf7SyH@M?#OSH@W<%w<*K$>78#5 zc;ojI!^V-lI-(QdS3?~l$ZyVmZ}b_ciVwT!8QLhW(G!P_^jiKkO9Q7J3?)(feJ_7q z&sazDC_`#kd5p5u{vAYln9fg`@Q6j|zG@RnlrKe?N*-NRgQ^3 z4PBNW7|*(Tv?*PKqoSCtAnFsQc8}#+GgTYD-miC0HhW5Ayu1{rM#IHRW{#KK=-OX& zJgvo*7*l*draY#Kv19NJ2@y!_WJAXOfft6=nv{@9Hm;&i1arRBCaAF50A<(CPE!MUUieJ>#! zrRB4wMKKkvhdS*s))YOeNYdkt&GmS;|r5o=9m7}Kb!($AlT8?lce(MFWD zA!`m!df`UX)(-OoL}paN=(`w{+~?bwgb4J8k&v9ov~{CsaK;J78-Wt$f(~nnz7z^- z=dSQqGFH(k3T8l7@eOCXo=;cYByXn6bKIzL2@%F&p}cfR7w?3#^5~I_B}FN;0XE5> zlg}@KFapxnZl6ZGPFfjP8M;6DxCN57lRb?aP4FE#&~CGbPuM8EJ9(3k^mnlhU%%$; zNYM9-ZQRK@pmJ{O7YFY9oxBs1IPb6N^Uxpd$Ynnc_nJ-2mEhAmgEq%&QiXKg+6iHazfb04XU-hNbvik8vDgKQ&BhAQorw@<=us# zzWz%n(s0+8zN1gC6!z(r{&NQZn_K$4#KNa6)l8>NS)vg}XgM&8j*cXtjT8`rs2!4Y zxii-gVPddSxuyxq(EnpAP(bJhlVBu2X7-!xpt~EDYD~=5sxi0Q6tMLH$U@Nmce4Z< z{1w$W|0~JTr&$t197qYcqU_;7lc8)GK#a5UBw?%4kIS{PZLeC>IZk?-M~c!{z>ra1 zu7|W^6$#u{thKbUWE(5P5+ZS$V=iTZQ%uwfU6S?|UWP3~Z5o01l*0>8E_Q}kpZ|j@ ze86%gwA@<}#-+T<16MuEADHd%JoEY#iw4-LXp|ClLvvB48D%`@v;f_f;SCe6}>KWPkSXC%Du%@$cGux4|x1Ig&C8-9;11pf|(bL zKZ!yO|GX4@n&q+`U7hh`rq@N=`Y1^_9E+7tsBox^ zP^p*TMgSa74rA#FeF@HXv7vC38zN`RPw-rf9|Xu3JSbC0WTTg8ay5%oG~ZhL-MgjX zwD*JPVm3O7Zm25EV|~3e6oovxwPO8cqyk$_n8S*UXsJRKt=U0b6r2eyv!#3o|GeD& zXAo$Z)@7gk02$nL@WG8fi_Cj?6Wli+vLe39W}&;HbnTwlwp_d-LVx;<2CGBth@~Ls z=zYQe!`V9qX%aWvgEMX0HlDVvX?xo4p0;gI+fUoJZQHhO8`Io=@9xINy|G{JKcb?d zeqXDyGV^4dJm>fIYl_?(zi}^HuNt=4G#Z5PLlw;YdgS2#6?goiSS6}`n@jts2k>u* zlTjUE4|A(LRL66M$BBT5TqwCc@Iu#tj3a{*Hp>|qy6+VjNv>u15eU91E7+NSBFmyc z^7f6F3bjoLtq6OYf3NU>IeM~UJk*J8n$`ZKsug0mpXu#TJpzL$Wdc;-CTrpOc#>=B ze$X)_Pa@?4Km=yWcg9%Rw8_c-THX#1uq>h(g&{SkNl?7OUlJm(@rVK?B9sHAy5#n~ zby1e^q&-CO3$TaatK|&`g!4yYC`XE;tfEAuXT*bptA3|Qcy|AfJxdHb|7GNFyfpod zm;Mi?ZvVZW{lAE5{XdB5%eu~-KErxGrUFSi2wSTIOZEp0w$#mTKdUOn-)_1?XD@SAw8lO zje^4jb6Z9TFJsRcw-8S*6iMgpb1%C0r>HQltg2XMl_c4(s^&zkd)Oq&aaI+0so52X z9im?;AD?0r%Fm|IXy*yCIh!z?B|j+ZHk&987tzQ43Q1DjX;o?z#dV@))MKSj4Prk0 zO{7+1wb@{H#vx7Wc>m-dAHTsue(&6`VRVA?@z23sxcE1O3`p5J_C-WGgEKNff1w&v6@=Z7=HQd@ zEgBEk4}O3pb6^3{l}_BdYcn7ktjmAiqXhG`T%aO!?;EJr+uQgQleih*e0dV7Pl(xg zaK*F9BD2S20fC;E#fGgkBjId5Tcs=n{%R6M*DwSjSeCrpYBa|p zMcO+gs7QfiHrz)QHtZ*bd8$N?U-)&1L$3nPpsC3=VY`_2tI-1pW6bC6d|RE($l#8{ zF*6px$%<2&8)L*WDJNKnJ(JP`Pi~KyHP3qM1M)}#-MR8h{&N+=1s?E*q-8$20lN}> z$=bvae_uM{r$ zdW*qL>>MG~a&%}-Hj=S`lId3=h@rMYq_TdbbYv_{`Se2Rf=-qA>Nr>@n)6D#Yd>UA7!9mQ@v-oNwG&WfJrnqr2V zCM63keB+VGW?Z4s=#u8>WMyZlBl9RnaX{U-C3)x}t{Lp4fM%5jK^FQm`Z0-OCGz*u zo{e8*o}}QoMqZFx`mLkKfSF08tV&RMSiW``T@-HZ+49J=Ib zR`|G5#Q%$-5UFAw_L4i#vwpPuiuP&`dNj{QD!M|G*Dn)%jSXH=AN9`ty5A`(m=*f6 z`8AI;cZNKRGgB5+t6(``Lg#O-iAG%sZB9pF-Wb;(@4w`uVd;riMqgQ|WbbYf!rQ3s zEJW~xbZbe``vW1=B?dWDqdnqvK5T%FbwlhW_&)%uu_^qIrAqHoAYXGDWWTU7jc}j4 z*MX^*_B~AF!bS4JYuUo9c4I-6tBP~fmzqvUMW10FCIo5+oGr0~w@RW78@TZ#xcy9N zEBT?&E=aXqA7hs55OUkNR!H<#yvA4uhQ-oVw0NXYT=Nq634Cf0)5_ETa3z%P<%qlg zt~l+;|0gs`34KSi|IT2jR6AGtkBFsCg8^M_+n)gZ^%r7FW@HkgWULF2-XUfLKuQ78 z{x7TMh?XQU15s5PxYM`ThfUtK2Io7-g9w2I76=Ym%2P_$B9@O0#E%$(g84Z|RZ9)^ z0v3N}yX)5DEWTsctoHXy0pC|NK?Z)P9kL0cz7#~FC~$s&t_`I5C}W~AV0fH_Fd5`T zFe}-ZUsDLJrf=a~)+}h!LG*}=TWUfBK5mPLd&!?O@R5k`IT&aQVIN4BHPGz;!rs;I zTD9Zq>?J?^?EEg6GpJ}e)i6d&GcKtKYauI022NJ5bmXP$E|W^X%0B9r$L&Lv;|ckb z)Ldgs?%-QU8XbH}wg7hgRwg%Qw45_`96X}QOSdrdMaA*3thL~x;E-ya`Q8cW<^cf? zGT$0$%uTKZt-X?&l)Lcq$HK%er2(73Y#G^aD@@dJF)}$rI}1%?%Xq^HX1vwOYhbfz z!CG{q0jJj5G1F-T#&p5q!r71GY>8R9m~@>^^<6(2Bm)z1Wq$M>1t##{;@<+r%u}zfO77?(uyv)O=(R5Xc&#`xs(>yKT zhWG=sycF1S3iOn}3}dsl!lZu-mZzI^U!Go|!0+d{CN4`<$pV@h53~{zX+4 zE{4a`s6$NU$`9MZzaw;W*rB?DL%0Y~oCxopZYZcNP{`-lsxesmEm6L%p7I>JTvbV@ z_jDO(5W=utj7JR2OC3Wn?d%ajuN4ind(0Fr)rjAjp3nC4zKkPX>wTrmBW1 zuHO#^qa1#yXeoGLIB0(<|ByYckYbQ^CzXtts@(#fAUs)UXr}O|_akuzc|X9*qk_Mq z-nyg_J7JQR{nTlgLn_VKZe-b6m=wW+2H-nnF(Cbi7=Acwd6~G@djR>^bq1-mbZu#e6$gh&kS&<4kMd zxe=3d?o&Z4?S4e|0f;kBuIJgc%;r`^14d@3afR2<|p(^_mkTY$GPvX9f7pa`#Q(r%`$N2WEf zDhDAa>%ASLXVQ#tZ-3$X3HRJL;;dZexmPy&P+2^FiJmeg zJo#JsG!}q)E67 zP%kuNkx+q`-(NM6kYnDV3qY8g<`vjiCYWXjen%|8OtLM~K&Uktvw8L-!ioR!b z<_9UzUWm~Wb(q6`k9#`#iPCZB$7Ku+*r9Vq40~4mAb=_shbnf>?S+@K`NrAx3j!S# zGb$LN;FcF%p5~G->TTqibxJW$e$Gds-}irLZX}3p-kyBh{FZ%Fv;_XwBS~pv_y1l` z3lpT3zDX0qUzo3O$S@!z{Ig}&*wFoQ;|rqR&QxtVO3TfUayT-!DeDQfJ^-Ci7W(%e zUQ|P0gWOGf6fF`{`$z9nq+DElZ=aw&2mtp2`*|UVW;}~#{EgmC+ACvwJtEX+e<6FV z9!r<}u4D07LO`^Iz#N)>Nn33*L-f-jq%jV+s@QmpOJZ)jAHrT*j~unWRV!UgnfP^L z&o7plv&oumg(7kuVm|4~5}N)dR=>vKsRTNuKQ{7FI0qw~%pf+xmd0nfcyMTl<)dX( zay2WHXHILgv)2ocMk||3x{ZrfOHD<$)Rp{0AmfD&_rD3G84}i>w_Fe;cg;VEZW<#) zg8$7GG9zDHHR3&dvaYunVaKDLS0G>Fi3rcDFo3RauL61s)^~6g@YwnoWt(-C)T;l1StVDugY^M^bR%V3-``BKTJNAseU=rcY)PITCae1NF zTlx)${a!f=Hfd?f`(3kN%-$by{p0<$v@_3|&oObb8YywoHs#+hM-2LFZ2rK1hT6GT znwiA+>IL5$2ilF$HIe9fv=3Z#o=N2yf1bcfr+twHWRV;(LtB~bA3IhoBi{>khF@Dd z{6G%5Kg_NE_^Adv(1Cx3u;2U$%Kqi~u{Eb>c{QpUgBVqfFet-#UPdLppXh{4vcx!3Z#%qnTKIsN>t+&cdklVMeqU ziP93B`1Plz#~rEqD^l)rgJMihZMp%{o4-$;vpMQH2!wf;(+~^Uzm`ZEk+=yJZieTF z>EBt!0)O#I-mAi1EB(rve?R`^mXU`dJ;<*D!xqTZ7!o1-_d~}veMB7oKmwLaaXMLZ zBWq<-=G|UyPc{-_AS$O!K{A8)?^@)$hA;vFB)Ek6W*^pNc3-~piyOW!+)mgJ0xo|X zpMV+?(LQ*RZX6L5=U9;l2@<5#oMPDAuHibohcQTxa?^2CK5rq`FyKcp&YNQu3bl~1 zlEm_nB;3q~e9}8ZtAqv2BunW3l&Vdr&m|`KPOXXG&c}TJ>pw%z*~;p_XxIPuY^+mF zIv!O8?bD`Bk}{Q%VF(J8zejh&hs^Jj;%f)upYNI}`1lk`BFW zU~bOfQVf$`yTyKg2pkrZzU0^RrHw&byd;GrdTQAl=X2Jz*Rj3r_P^6pR{;<=T#o!0 zg>Zd%V{jIjsv)F)@w`?HAzrZv^jbsVUT5%hxLAYMx?064Osu@aqAE!HHL}B#uge-dw+dnPb`ty z7CX%x%-cX+5-6@WU{QzuV-koP7br0Q?2={twsaq+Y~4|EF$)aM{N=2Aaso=3sUwF3H*@H@g#lUKxK?*+^hZR3wR!E7xj$_p#7pL37RUS{@V9}$-i zX~^Ek>~SZ=Tu+4q{!AVLyx*?rUg?^*W3E$|*vE9fb^akG!cQM0cY_!i>5qr5NQQ0z zB+?*lqp~+Ek67o+;8lQkzznH`-fZM9xJADK-2=;|{En#Ymqs97R2XPXa@Sy&cudf* zkz%`;A$wO`1pO_I;)UNdL|gtMzJKeS-baK3yRY)AcF2428F)N(iC4?rCIh&HSZXN; z{K0%K1)=^SVMsi2Z`~l#b1~nk{*K}P;p6xN2ho(fuubuNUGmUfOZHa1&a=hwFAsVJvpStgj2P{m)fFF@~KF7coax%~jA&O7Bx| z#+0q@_L*_l*>T7dZ_bn~vd2O-ED3o1D(;>9( z{%zqdrg8~HWcR-%@1TU-^}kL$|9{pzg-Yvk>w;(*vch=uK?MbL zor?6}?HtnHRwN5$c_amb;0jxqmX>f+IG5bWAC3GEpf6Ml`(UlNd;Da#;~pk1rqij0 zdfV@xpgW{n8Z~sBa4LEO_ykV_wJ+2OF}@jc1BSJV#M>2p=HHjC?-uL!HE zjjKrgn4WD0nFzv;+|dnv1LJu!h=VFJT*bI9#uYxYC{|0k{E{ge5wVQ%zn)w84O>ik zWP?$5lX93Xorbxt9XSr>T%+ZtN7J6BR}k#q?fYF+Vj_h4D+|dG8rQoQW_Qti9ZS}5gnSat$$8A z!sw4!#<2K6lDsPL^)byQ|4wl~XCZR`mS0VO&;7mW+MgD6+AYOJ?)au#P35l00;K<5 zdu~r>w;pfIXE|hfOyOs(ehn!7fbe)tc_~ae!km|N8(;;+499*?8I4ww@tD{fwo=Lf z9K8%`qZYB8vD$EDT6XWOVZU?EGfXkZ5*OV{hrS*C6KxHnHI+(9KYkkoK@}=4oMV_` zkEOx5%@5bYxF9J5+2z8{zqs)6RX=IdGxXsVvNwTx1cBS3#9hbGQQtwU48jenU z=gcO=yxITd^B$+rJ;Fe5LQ8)eA>FDy$d`P(@1T1GQ>9}bRz6VO;=ox+vVNWVxv-fCo1Z0EgLT$FYuJo}_54#;e@@UO0-tLX&`Pj2TRT|*q zz1A&y;jh}9z9;yj%6jtx`R^7fTF)}v*?^DXL(9f9h4=$#iThF;OBj8#ui(Qw#KLZ0 z`F*%IWa(e&Yox>)Qmx_}jo!ZBr?y!iYP^K&80GON3())Oi59rqmw$g@iC*t*%zSrC zv;TyRm}Jp@qiMd}Ti(?6Od_1V-FFvz2Jd#8Wza>rp+{JRddODS?QHq-KRW|g+5J@3 z(Zc2NOh5~pOyMv` zs!9T?tD+a6Lz(@0_Rhi;j~7d{u;7>JE2_$Jh@ErYRltmP2I_^Se|?;v1Io>ACEUGP zaexbth>I!=RkYUviWu|#_x%f+1O(Vo!AbM4rESJC1@vv&J@gSGeY10AzpbrXRChL9 z7`Pj}8=ipTg7H%W#qBzb@DMV8xyvY(1>S(%E!}8^b%Su`tko{%9jfB3;+o>L^0@b9T~#mX!m2G7HNIE?hdFH^F=4*x0=8--(x0312aRCB z=e7>EPa!Q8MORTnS4{(7A>~-6SQLO6GEO25u%wYJ6B8p@bS5Scspk4WtpPRVJ4-`KFa!;VU)Q#9>IlGL)A_25bL_4^b5ZoCibWWpB%Y)6ksrNcX5| z>IjV&$W}xKQZ6%OVFIU|5{MlQoZU+-RH-yaughkSb9U9#8?_ib%fm$UarSkv%K-3; zfnzl1683fb#Pro+Lij#rg4$w4#$q}pUdWH5=!Nx{Pxk<7Oo}j(k#uPK{S4iRR-U}7B36>}AST zDL|{`cV>3zFLg%lDXYn-F{WVA5nmLnQHirgV}5&&C^WQ(X=h!WECsXnv4`%LjA+a7 zQ1&%W#{L_(D*e#y6+48++S&?gy}O`>bR0Dr>FcC-+$FDRcJ{Y18Gi=pzaaV0XDhD6qR*?|~-C`_n4>$Wq6rj<$W!TBdmv{5* zI{fVHy#wUSUzh13xW}(dYwL)Yj6emA^de!+bznroMA{rp%$i!m?8O%~{h@XJI{lYdP;BVhlM)TrA%yo5 zt{i>=XY)YbADHCq3e2?*k{1)h($xuDln|*zE!P=#WRk;NM$hypT<$1+Z} zRqn1xfy%e51n6bU>JnA5i{7w>>9ERbgPJX6%qkIObf(C7O!6>`^m&@B+DhnqBQHd! zavg|pl9wQ)6=iAsz;d&NFi1!eV$;hN&2SZkCJg=4+&e^v)z%9M&J5z}a~VS1N?q-? zm;;$tHydi_1#<0Nk?eqsvfqaW)KwwpH-%<|)X(&o_2?eqyDZT?#De9KA-SRCAn^#~ z_Ke`sA|36_$fZ+NXV}?hv-^nF|HZ8zin+c zmy!|9D>bb)Mo$RVw@CHYNN%g>xWk{Vw0rToQPfuVviCr{Uy`Hf_O_c|etQ{3L=RFn z)wDiQvpi4lv1obGchwB~4kS0dNO|pJZm;d}+;&DG-ulr!-IOffgwy%tKFNZc0HBk|F+!EwJ%8OYN@;BXbb=^dCukKOCn(w39Y{^dsGRJPp zSQEGfZtvIf=|)dKk-5iNd&%bW`j9N4<|q*K8?F&Vq@32)E@Si$LMcXLgyCyw;R5fn zqQb<=CD*zK`Pbur{o0irjPj9B6THnmWNV1Za$1k?4Xw_zMgzr4ml^7Pa;gcECtH2N z-CvuHKYTV?&yvfUYN9+jHGu7gV%+0m?=py^^FXI$G2A+i!Xq78%hHxlx;!20G=3l1 z-x}A@)a{9AD#i`CttpB+2Kvsk$`dr|!)Dd+ZSwI+=+^XO40dc$DOf}ZJ)E763U>_> z;9lS54YRmxYG6S!mU}YEd!kYff?Z{fL`(7>P_a`7Ae?H3_tge8+JlH*f(YTPp2a0t zIa%ULhuKNbf3F{$70UhCIQ_vco8!y#(I^PPXSo?-oRI0V)8qzT5>;5!n4iS+JfAu> zD}6cg&&x(nPWWZ1KCiBc7p*dfOayt6c-vbNqn+fbd=%~Uc)XoUDs&tRjOJqHx4TYb zM>Zkq^V-%q#j};ahQmocc$Q7Ic(hLT=XLw2RM8KKq96G8s1OX;unUsS(p6#y&6rl{ zE`>pE=w^TWdg6?SDT7_DFNM_$O|IQ??uFg#x&U~Ijyefn29*-Oq| zst%ozU!yR~Gaw*b_87U3m2ypn4LT5dnRlMT=m{srt!>5>c^;s(_YD4OYLcsB2@I}l zbBqkixK{#72tTrFt5If^(Qkhz`rLp8e%Np2*p-Y;OP!z%Pw#y zL!pcBEd`)R39OFCA7cLaWGa@UOXoLX9kiQmVp5wJkETyo;C6UDsT5SpsO)x#7T?#UEr_I0vfB$ca11>TZl~rIZ1htm_ z98vjC{#t1E=As50*~6sfh;ue>Mp4g$5g{d6m6}(>ntY#%INiXrwCdK)>zgPQd(-Cn~xhJW-0 zXcM_@*R(cd=4V@VVXG1(XhXdS8If{+w$wb zpp)F14H@~d5NIsJ*0{g7pT)?klF_;1Li#oeq#jKsBdp0K1?DH_E8&#nq;of()(*j|osZ$!yeRDT$ ze0a}?9m5-^n~mvSY6f=6G=#G^=J7%Vz~cmh;$b7mgw-A1tQYcPMukDyB;YdwDg+Z= z6wXm1@ML`vbQK?tB{caYM8osGa$9aKA73c=e3}WmrC~?L!%ALob#pO`{1fAhtEGiV z!QNg#Z1i|-O})A0u#kkjrPN_74{bvy;OsHV7#{K@v=?G<87%gYcQDQSEu)bb z)StJ>ZXz}wuR0PG*K;%P(HQR@B!VxSKje4B`mRl!pelsqb}$|gHp25ko8uKXa)WX~ zxuuZ*e9$SYYZ<|R0)0m^&muSq8bep1Ouga>zGK5zX|>wQ%{LD^54&?WG3kS@*FW~} zRx_fYZCS*Y5R*s57i{Mujga^I)?D*f8Z0?!-O#90YX z=!vJNDz(lj7!uA^z1ejGp(=$8tc%LAvgJs4zV$=N8aKin_3P&kpPz$)!KZOIAeAav ziq)P%LNsX>bb&jd-#f7}g3KbF{^%IDd|rU4D`t*C9DJ-?^p>U5<Fa*<;~3ef?RFq7>VhYbn6Q8@pIK~!7$g3SliJou%`%mDvZlB;Nr2N}AZQ zfR>a@hebj4$px&Off9YOLnNm!g>I_-=PpVbZT6WTu@ihGOUKG{RgR4vjJO#|_Q3Xz zr4PoqTBE(rC904b9{bXOo~VSDD5n=G75~zJ_|L~{i3d3-dmmPGmkaRsA}7#BgjCE0 z(Ylw4L6ZcsG)@eHIZCDzmR0n=D*%Yay(8dYs(EvsSbpX;iT#T&MLO{&1L6Zq^|$Wt-BxWHcrIHH`hoDlm_ zpD8wQPPbmcc_hgOBetRQ{&?zo)Tmb%Hol6uUO$XM)*2 zC2PGXxy#@U-At;2-&7=w5#vQ7TTyRufPO0kJg~A>wYpZPvRA*B!^HHB8%!~7TthKf z-c+I%#S6NOeNXZbAcfx_*Cd8BeVP%t74^x4+5yf|@I#K4idGqfBOV+oFukp9E`)N;<7Nw#ihHDs6Uk7sFl zW#lb<9k9kbE>lB9=vnf^L874TA7ILMfLcUS8sdCpNt+D2xYdY8`dTGvgIH)oK6zNd zW_3(4l*_x^kW$>AEUdbGkx2oka>SD(k*ghI|DTN6(g8``9q{RBYxLH5o1_$4&c*`e z*px$JLGnnB4(=6)$rPUY69R`V8D%y2NFX%H$%#muQY=(vfmiXy;Q$NW=n4~QA2V;J zM8tRB3XT=SFaf#O42NaaPO*L;x|;ul0*)GzdhDI$Ly7G}sj)&%r4A=TDKmBbae{)6 zrAb3WVl4!1t>VG^L{Q^c*XW{fVpTs*vZB^NrjNooNsNo4_PAkGl*iD$)#(*qMa1V7 z2Wuc*FBD#s?ttg6DPcrU48wzqdaw1wyn^U%TDZ%;iw5?C3;iKq4ObddiKCdoN1EC*EgZlw92C2U#<)l0Cq#Lbth^@dg85OarXLcyD;iJ3H ze#m03*Yct1&73@BEz9UKlO^QEjdCd4zOrdEb+y3sYKg^geGC5ptS(gG4XHrqnccC2 zXg=ZiAa%Pu+`6;^k7V<9)}Id~eTP|G7U*g}twr0Ke5iH3w}tTH4S&=4;2vUMc>an7 z*(^Cw7pihG12J+3mN4P~CN?_foME^j0oM_h;>yzM8jc*LpFrnt53?f>L6DN$US1AMHKJv{Gr~#xT;=XVlP)LDQ?%s~hjm z!pBaHiz^5|DrUG13qFcUfKpPsdX4*Q^rwf|4u#|)BP^&cGDj>4VLv$5(!Umn)lATI ztHsQZ7!Ui74-*M*WXB#i!1pWCGm<1qHpS?jfTi@B7KdefB|PY13XU(8%!0@x9ATit z2rq~@u2C`pOg=fRHac=$+t`D}F8qXQIxUPk?N++*9p;iTbJ68|@da!`!?1DTtgwpi z1pLd#=^=ua_=#9&%u3w6)ZbJ8QYdZ%^@(K^DZ!@p`GSm_=WX9R9fJZQG$K^*@IkHj z?SQA8lR6?lsN;=_+De3TX{22(E@Pah7g(}FC^L0eJ_!p3N-j3D;^zwvKa7~7t$%HY z=>j&1Z#LJ}lfcs&`zDDgRgrV3j>=)iBi`#7%)MW#!@`^;g;$l=_o8&<|DaDaUY2(%J<#6y(lMb&&w%L zdxX~;YcM2@xrjSu?~dc`Bcfq_LH{)HYO9U+Pb{8Ye1QcryTop9L>cUB+@&)7@xLVr zyOJ(p(H)f9XRBcT1eQno?m+CrZ4MhYvB-g_T&(m&V!NE~P}Vh(!wXRsV^a#U zqSeYuv*j%k2jNu!k4*XB_!%zd87`I?O_mvHQ2qg<7JUPL+XcHE<}a3P@0Tz>(g!@C zNBoKbCU^WrcWm#J>Wz|>T;#nz3ySHEAX#g~Es)>^2XBlq-09TE(hif3Z>2V10EVO{ z_kSK#nVM}i{PG9u>G2LM<<~BAO{e`Z4&LK9yOh4uLRuFl;!ED>gOXc&2Nee!o;Qm6 zs&#YTzBApR-H5OF;LvtK5BxNz?*^n;D`5>e4C7F7xuL8(MLFFA6U^as%$NmNJin0| z9#0Y~5@^rm)HSFVY~z2{W};sPAE}wcN5G2*V&sGg-TTPc$rpa21<3&_v1P19WF<8j ztwX@FQDowGtj{b4xRTw{bu0y3B$>IQNl08#+wLomACeYM#Oit&Wyw-8(AnoE(Tq}b zzRkLbrYA%N>S-WSHyI}`{Fv)8DbhQc)_GwLP53d=ycJ9d0*p<3GfW90q$hv2Ea8Qw zPwv~Nb3wT(tb5#pSuuzFY3D*~pNPLnzfULRSp?L}j=!LCB) zD>d2UeV2O3!^SW%%EEUR=CKQa6IO@vFASXuU33tI4cwc#OPYo| z#WE~Xr`M(AJUF-~6y2d`AqL$1Gn+{QPR&L8qNABt0~sKyN#DD3aR?=OD?rEcRw3!u*_`YTHET&J zD?CF~8GXnk<9L9Zd69#n#*+tnBsw@9^m~e%xY^*l>EFsh5WRQh;Cd<_t|6VY$Y2wg zSkN}gnyyOA4U+KCN#8z>IxCEy^rDasKy8e$&$`XoH6FWf_cWuIiBhPP`B;l7!I_M( z{0R-tp^T{Bqtb%H;(gkC%o5gV!2w=W>B)LKKkPpABi@ZaN&9m3An+zwxD)@(STPME zT0y!wru(xeMBP>^`m~M=yo|(d3N@l^OKcGz+0q+HMk`3Ib%?F*d1rew$nPc&^C&x? zbDv27(fRgFuC6~Jr1^FU(VgO6Q~m32N}T*C0JW-Zf)RI#90jnfGnm_wm+(Z1wA?&h zWMHD=r!Q2RWK{N;g?! zTgpQCoRcGZ>7sFgs#=Vuj--Y2_n}&{vWmE|EotG5Te19HveHM`!Wp!5F{(h7BUW=$ z#-cHJ;Y?Mr973@iQnK=@r~W9@ZLmM0+u|!`tvjdDm&~+#+X{)`UP%9Us@P@4 zujClG0p*c7fKmL;r)F7WS&XEAyGGgXzhsx9rN4aQ!Uzjt{vi$c7QnB5-L@wv;aW0_WG2)ft~BQ8&}Jhb+&g3`0ULD&_+pNo$_4n@OZk#!7x;D z($q!r9h6Vd({NP6y0RBdvG&IUbxlvfi;dy*LTwcXZFY60i<|{xX%J_P{EN{l13O7n1M|2S+UDdim7rC@k6U{f zB#wQ!duUq5=DZ;k{IAtqNm)8e{MCo9M)R>xW}UQD1&ly!0erA{V*RL{geX{5Je`fRpq*cf!%h%%wjA zDPh4%+Bn~UJwTKqh%U9#>4a@Aw>uu8Qz&dHJ;A6mh~Q|Qig{bK_8&oT`qx0}5oCh; z2kdbQ;coKL@PQhCuk%rH%iud+bGpE;jiUeoYxe-@k=lV;*O1&jF0ZMNw8uSukk$4+ z3(h@x)T&_@jn`3hpY10Ztz-8{K^;qDJ;J82R=borFe=^2nz%|Kca^I}CddTQpzLfj z>?a@)m%fua#1ix-4rX~SNc=1Yado8_q?zDF5!^;J0dEkbnYU8dT{GmaVR=;P7>&u= z!EUY4evfFfw?NXcPRFosHw`qqpAFI?J{V`d2!J)o+KV33s93UEiEcqCrnn3xRdWF< z#}h*d@yBGHQOK)17oOt9L8P-4 z&e?YruXclRIUS(5wmdc$d-V@Z|K>T%XB=`|N{rh$O{ek)un7*&Rs+j;6-)jxb%A|( zOfV=htiH6OmOF21tWSytx4c45-5T7!ei6J`tF>kQEc~s~#x3RyQOP@gQAZDmCk@@` z*p(eZe0E+jKdZ1fXW#hBn2Ct2Sw;8HVIXytEIPC*$pHlyJs$WAOMp1qb&1Os;VP&$ z`TA$zN(90r+Ubqjtb?uf+MLj9{nF~0=BbQ{Q#YOZl@~(XykaJQMYf@eSCAL(%(c%L zV}K-{>w;ZQEhvR3F28$Zd;!p2^XiALlXhqIp=M>u0Q^$z!0peGCZI6Tnb$)jU}hR1 zR?CJZT!9*TPtLiD;}5;Szm5|;U%C7GyE}z&(Sio?x^5g{ z-_f6jyM#_gWlhlR&-X=*O3CV_0yV92HOsm3Tguug99e+u8Qiu{oV9r76S251G31IT z;fs>`Cw0xILGM3Zp6Z<6NBECt`57zpB^Kq=`jv`c6|*OQqJ%gsE6(F_tqV(*Ui5;YdOgsA@siKoH(fA&G{T|;Ngu&9Y9%_%iWRe@afFe1Ui zc@G9ZX%Bg*X}d)Xq3pGko4*l!nt@lV5dUkJW0Xy;;cD zy{;F%xVD2EDUB8E33aLsFN~|4?R0VJY|$WF9X_x+wTRn($@JEKDVmdye&Lmtet}zo z00~Y(V^jg)`P?)zDio}7juNP$W}nhnrjpV)fNp}$CkU~XX^1%(77vqB(eih6?x)gt z>T+xI2&_H-(H(|XB`%%o54LjhzjL5eKq>P@4CzH&D!$`wPG0J9)7v82?w;g2Cy^Tx z=A#;nSSb2nYta~UmH7TrAw8OKKUKQaF76ByI%4tq1iVRR2j+46T4(yICe@gg%n+W6 z#FlApLii;>MLm5#>C)kfflespsW(sOb-}Z#d1bd&@{X*9XYv|BUOSu95Rr3ZBN-jqBuLAx4^$2l4Nywh7E`FGX#XtOimI@(0n{WiLRh zs^1Pc2$%Z*FVem#yt6l3x;wUQ{9@baI33%zZFX$iwr$%^$F|ckzs#ID^PKrVb2IbZ z?R~c|cCEMGwQ5zN{C=BCjAS2kM;TU)mZR^2>>tUPZo(5CS&jH<0iCym44~4m zqm5KEvWltwzaFglYT6)AJ@R2-hV zk*l)Qn!x0$Nn@@cg|(;*8jM<2lgb(#XHlhejrQnYvmg4vRLlKU`F5j-D;5?T3N$L0 zrwAH%G|VeZn^3y+Wf8lKK4!I23J0aGnmHEyz9fyYG>-zwvloWnZp!Ku+jklD^-$L) z#;}NAr11cODiJmtFpt5YymN<^_$EGC@|*6Ey&@g=bumN8TAptM>r+lU_cg!6n`XuT zt+w=@Xy*e-z9Ko+xKjXgpnRlWJD+;j2`QCLR=-nx_ZCe=^{S<-6Q|G&yHJP#T(mqp z?2CSxSK=)eh~B^tERda=-BL9i>FbREXhwcOjE!G}oej z@)5o96_MX5EFW#ATJb(kIUcxbhrj?S7xCTW<$EXe=@eC3-fPw0z6voC)1JhUaTu2Nea7m}S8 z+9>gP9q)O@Zsqqp%W0SLGKpO~d6PK;`&^`wNi08JI5WOEe@n6=m}H$DZHhH0&cRL; zT`{9we`)BglzCHmF=5v^`NOwUfWV`5Lof+RA|?7lXG#Ka2Jg!umcOt>Z)jkhncEEn zusk4(FsMn!9wRrKcJy!QF_uR3L5Nb#%MuLTK9*e{Fl|3YnQZ>DEy=KgnAELnRS zSGWJ!l$cbp_%aH|@P-3WQ?C^jl4z=H2vzJL$snn(>WDK6D)2c1{1;oTByld_B_nM%rUE zqMC4nXFYz*uRes76qpcO>$eCOw={4U6#xsV7UTfe?6mlMw<%xaaN~{}SVNzk$s{$Z zJnb^c+?6}xR)wNmMv-al+do5?9G@C|8kKgfxsg*}bht7wE;XSfBrgeP!w_&-!Cf3<jP}xW#)qmCg@cQwg-i6#l9`~>fJj{KAH=Ql zBImM|V+GWUkkisMPKh9k-7gKC*j=fZ7Z*5l`?Ixp^YghE&}NfUa&=jeuw3X;#k4t= zONMTKeaYpiaCOQeemti{{NhjPhEABR9WbLFUd4tKOVX)-6uIi$ zdlj{&4 zwY=wP8n?`9b~8$5bh%;Bo+qojSIW1*052B2=rETjwVS#bcO8m--e~dL9CCM8y9c#v zt?5=W$nDf^ISQH1>mPG9&0tP}v$C4Mh$0$w$d`VuAg`6i9_nIvK2U&_iV;g;R$Vkt z)o&Vm57VSnRXVso4#^}cY8JyQrt-2;OdJOY>|v%gZc_^|%SXnq3(oO1&^qT4=NsH~ z$ui?4wsEx`bWQOdz}M&uf>XJlP|UjtbqToaTinfd2q}w)SLi(OS>(Gysz3;fsfe53 z6n^iJd=bC`Q0z-oBc#{R!Nvlf=gM0|JOl5r#Ovq=>2Y*r%V$R!;>ds}y$667zDKAa z3;_pVAfZm46+E|HJ%hY&5nq4J7! z5#L=AihA>_?2FzBdEctRBv>h`-VueO=#36M<4z!mB+A&pX0xuQ_O;)2gsQEgMhuWo z1&Vt6-${UWNl}YDpe&Mu!Rvmmekeii1-+W zNC7E;-*xAz{Jz|V0g(p7w}Q@=qJWO&G1X1OPO68Uy6QKOGFKe?-M;T|1z`aGvYaqz zB@}dPoR({L+Z{UDyK`ELN&s}F5w5YjM_c!En@5q01mDM>$>wiaf`mZ^s!@8NDr*S+ zl=w?eHF)_u>LAY;M6UN3FSa~>*oYlyy=OoJG^4+f2n@v)SE?v-3=*vvGfP2P^V43k zd|j25Qh6)If_h=Trw;lxWm1}}%jr=dHM1m=3hRL~H3AZo3f3g2%Sh*y#B-0ByjvQ4 zn^;;)eijuneXp1LB~?LJu>9u)=9lxiSlD340mSCl-LV*2dgCe^PI?($R;1ZUK-q|i zm|uo^GtRjnfv9vaVTx5D>s~2bjasXzt-~(-LEI#L{8KE8lBaT`z|oO*jB;FU4O>zt znH6R3j@leld{m-sB3rA_)Or+*F1^XDO>|eEA1;e35YIaqoOIjpy$3YFx}Hb6loA-| z<&FFC=cipJCv|PzYDSer1h#!S!X(ho`|%@;`5DbwZu<_`Vr81egl08uR>Lqi;kiO9 zkt~I>veY;V3rf_p7AXrh61OqMDS4DEfcHz-gy#0>g;d1CPaAdyebHqpXQp-%wPwU6 zGleiN21Xewk^8WelxFy3Gd@VeMd1$)bIPbftsL>y+R+b&Wq^=cX?p~vpF-&2l}Zx_ zj83ZuMKBfTS}e;rdH#yUf}*HIRTcF!mwm6Ja;NR167LgZqnyGdypWLstoCeK6IMqa zIIFTZJryPxtr=*qVB+1kARHzoXAwoo+;?5U_ke;PDRdNI z%N6Gw<2N*E8H&Rv&e2pup>e{lS#5=To&_Hq%zrr{0d(_H_d%Sixnqxz7EvodIrona zEpwzwBQ+>Dz&MSBJtS=-Y=7v*Mg6#*7Jg|GgwX1czJpyEln`zc6|??9N9u;ydGuW! z9QBahjr+%(33IR+o>){QuW!s76wM>T&#V@31`dKv!6#apAX~p7UTbo1U*#M0hH(5m z(Km?q-C=fdi)k(bS0tJ5O^#5-W(u^Kz4HwW$?Ux`G07es(wfN*&iXjaK;%gFlg6V6sjSU66|W!v#DI>$}@{2#fsYV z?qSz9XO9X7ABZhQ7A+!*O2&@bd-b)GWW^bV7nO}J4cdF6(8Z}{#u=XedNoV$?iTk9 zl{JcgV&RWZA>5#@YN@$uRcQHMY~2 zxbn)y|3Dj4OiZIcn&of|<|7z5;ti@*DMxt*g_ocDNyQj)-2Jb7@*2O@QuoVZRU7KR z;*)ki^hoJ zm!rSgTrA&y{nYXC(>DCIC`Xpm&zuHlFaxf59uMc~<}H`0mHp)_e7^7Ny`EgVt}{{0 zcuhZsiSJ!A_(^|R0?A--7CvqBmZyLw+o<{NthfC}jEVuhk!+hH6l5eTv`wPcrVVH8 zUpMci#S~tnRqrFHHVOzo9>boB9Ia68UX)NOMF9AHiJTv~=- z2n$PB+l~|KkHX4P&+b;VTOjdI|01R=x=54(P-d|do=h>YBlC9X*{Lz()EWd(Z@Kp& zry`eEH$RA}lcLiE$Gd@9jc$@6X_XhDSZJF`u%~~o+*E4sspNK%WU1zCU7XN zGxtKD7AwLNJhA5qKRD0=OCnZaArbVcOzQV1=Ak2Y;GN~l zm*OaoG*^ib3GzQ|gkzm2Ru2@kFPkG?T$%!pd=KL40Fc)e^@E>rc}~_-lO(IUpa-@q zdrTgYk>+dfqazYZC*-tiirVTCy^xFw_m@xz;vZZ~y=&xDug`3_-}T8}aV>iGYQ1J? zxoK{_JcD)BcNzB!3e0_$vtD2~9ia@=l{&&QLu4xL$FoOwfgHxUhAARd9*gCn<1U!W z*-#3;;4AdTM8*LJr7{I7l#*<4@S!yyGhu@Z0@2)I7CFwO0Lno#*+mV&E1iBg@w%I? zu6g=P!;R7Dx9~5Crcq7vo142I$34JO-{aEgAVPy(FjWrDT=kp#dIMXzLv6TYq2H&s zh<$kc;C`nA?qUg{a!jcUvRypl_O)n{W*@^M<-`&hk){yhvuBRLfhM+5Bn}o2P)>9} z-eYz)hwz3${&0xPQTOD4W>)y-ehRIhEpSQcF$0@z!}weFfJ=T4^WNmNfZ|rlpa|+U zN@S2UD=lvU=cqu-&1uZndu#X--Z`)}%7HiioB2r<#Q8*;K=OqBXGf?6+ZyMf=)Xz*S=b16YW%~XXi`HZGS#dollKn%?y~{jOYF6>00NsUOI``jg74zsoMX$Va7*X& z1>0BVnmzEfq$qZ%?)H7_BT)c~%8a|GtY&H8LJue!sf474_J{KwYdk?L$Iwb`z5Dts zjn#BcmxRp9_j(MQI;BfhGNc8pqX~5e<~8G{fI|0q%VhPU6-L$2iKfv~2ACzspXur* z3LanXr7kIhEdE(GcYTQ@1 z<#V)+hW_z<4|FcTO>U@(cixd&CZaCBn^~;zYU-vQp%6{mL1J(UZd_$U;N7CInDw@n5=4|K^;RU;@r6!eE_ZauGa1&G*un$#nfP0 z{%F~fO(#_OA&N-YwwqM@3ZeXGmZ}^LHlNHne!u_XBi~>S?{}uB!&r!*ykUh-PH|$S z$NT*p#*E8sJ;yo#@a{86+G)_H9A9}Npkm!KC;Wr=7c8n%L}^Qyi&6=Ogs#FM+GR;g zKt&i%U4oOGg;w9j=P^2DA~{@c^NCu-DXEQ|E?fB)uZ`l_R>jX2FG5T8@zMewT~8sp zJ7z!xkqDiSJO4`Kd*op5ST#T%Ki>3I}aPiyfUik|$P}g%-mLK>dgO~fW?OKC&O%(dk2$#u+ z7_{|Im@p!b6a~Cx*JJ+{boNqc9=trCpLp1iBR>gO2BJF+6K8#dmt4k879Ke+!D^;U z?vGK>$&-%6O+p+WXbOZ)J?Bge0&Ok*hTh)02+qcTF~%Jk?bDL)ZR%o<{$Vs08#>o8 zOb8w!e;f$`T~blKU9FDIRZbWs_tMjeA}htfmxVhd=xU)7`}k{7p`{bi`nppwz%7mHci=?75-t@S6XSOO3URJd#0W=W+O;}0cPGVK}-Y~tN+mDlEmg-gW z8gXo5-+$oNB&4Lx@BlH8QgKRsrRb8XcBh*e7g?8=h@x_3+=fA#h}QZ`M_|SUEsw`Ev0XA|dG zKfUCRSC(^=WK%z4c?*NAST&eZIn*kAf4FP{VL;malNh`EQR~ACF zJo71#=-Q>=%(8W>v98QeDV|N9PtD6KdpA%Lu*h1fmn$6E0`GynU&Qcd{|r$*Yz6Tl zkHqK&m=Ux4Q^e)(J0y9}qfO18J-cuWY#rF5CkM06Y{-CtrOY6S8V&ke$IV=IPn2GD?D(h z+Yl*2e1H^3m$r|hT!(az=C5z|JuJN8XFHPrSjSBJ^PmB^2+v|B%4BZ%Zbp4ygm_YL z<7b*;lWSKDAIXKwoa8YV;ym}{&X2XS$()zT+(m-5g)7K%`A~p(R&dkr%dG4^AL2Ck z6l?m%?8pKHYlUi2)e)?)jmyL@r931=E-)!Iger-wjj2O)`xg&X!_;q&reE~v8_a)8 zkCgQ+os9nJ@$nCHA!P{}WVtVMA^dp(DgvUs4n^6u+Y&z+bt+jxBH{cP(iZH~LO3`k zdP%~Hjka4CjC@FeyijN-JxRyCp-7)W*Gos7mmbnd1oY16zs1ILZMivieRw~9?|~@7 zLhNY-d$R3}4Z{8o7|1~BpZq5OeO>?BVUoEC7{kQWeI&WHw-F~Bi81IpqR5W8ats^W z)1NSL^rZZzqv}WrulS&>YPO(^+hpiyzmemag3XvY9y_gKuB&@p(=S&~d(@&%jh?-~ zfy!VsaAiP%HI^t}UVavZX|M)wv|=RPUNf=LbA5Z{yDVu!2;H;y|(%7i62R9rh-pQ}D z>4)aia$qqGPh+Ys1eS0pMU3)I-;6e#kHRbg3q5i8hskDUtjUGAg8@TjdRngr-lYN})j~%g3}( zs@;*Qnkq1dmz9S)*@yP~RnSh7%%?E}J=bS58XQ%a)tHF7juur)SQ6c+x((nZ+aZaMEX9)X0CED4r8B>S)Pnm3D#WoVHo8LB)vXB=B6 zRes2PP-H#kZ841Z6c_@j_dzQKRFUW)J8WW@Ocoqtu{OJ=%dAuWurg!Bu((2) zT)UF0;uExc8_fcn%x@)?v(>^e(hkU8xNb8rp~iWUOO*}oaC9d?JHNMk@Ki02X}E1n zuLc>g(oKWz5aaG32~U_-#n7lu_t>SsEtLV2jdrPK3XrX!Qr#4xYZ<+4M0rQ&Z=D^p z#d{;}nQ`*?*R%FPu0mS*Sb}FQ!!e6P6w;v;*vj<=Ehv$mG_4~TzltqI|7ltgUUj3c zZ@<3uSSJto+GZ-aN;-MSi`%QjM@Psl*D^BMm{MEN;}j|X4zoJVldsS#c+BG&4(u=J zajo)ln;)!bK2!A6ncQsJ)WV4!6faTP;GlFW#Gx3i9dAATEQjQjE^nxLbAN=46V@kZ2 z?_b*$p9YjeQ(w+`4_|2%y#F~XakMwGHgPlsF#N+jU&-prJrBXVDPgm5i48n7LP+{~;Dja}(q9!=`m)*|m(?R`1Oelbbi<1w1a@~%{H z)rugQzJ!@ntw#O!TH}adrA8`owm5RPky2gVqkIrHS}%R^>$&$Mm`fuSqqc*{Tz*R= za@*2MrmkZ-2Z2gxbIbHHU{_Nx%7s_BW~w=zJx$&{*F306f)`*+1sY7~^@M{q;U4>j zQNbXVZ~?cuO6C(7XlpQ`xfRYT`88m5@VirY)?Z$2D8`Vyl^#G zCaEqr#`vtRXm$#YA(?KrSTwdn zQAB1`GQP4d%3I{_Nt1vH_Lq>1+XDR%1P!X`-he`8nUGd4n^b7n4g+oX9EH~%_1SUm zJ?u|my3wwbDDOBnaS<_T1$8w4r@O6xMaqewwaN1rQj)&1lm0)D^3TAQ|3!*+Y2!d% zNLWaStoGRVTjS~kNc;jhLy~< z4gBsdPhk4!BSNv1B>H)O-ie^?e$9{t8347Isv!ixNx?-P=Dl{}mwUxnkh!`2QmvDM zLKCSy%!gC?2&Owz+o+DxPdDqUGBm)OK zj}6&zBWYq?F+(V2@g-^rrWQ&4QO2(Zfwt{F?!B$3*YpL={7zFT)&hQK4_2lM1`+Gl z-U8iqhPh%(00|hycq0-UF66l3^+TU-zvDSFBvpZfl?5=&mVq{hqKPbb8;iZ%sr(zK z55M$SfN0MUKRLd9>sW+d>tqZ@TdVGH%qcY|5GUH5kQp=RPt+wTTHsdnsK~j6Z__feOQ+pc6QdWyH*7r|HKi*7KB`wZ8;jUt3 z7?Zt{y!koh&&*m?s<#gHL;FlzH?ogW`W2%1eVj3M)b<`WCpki38r5kCw$)_T2|v9= zv-Z`UsV*fL;*bCk0Wl9vSc~b_HYuU>L_I()C8@Z$Dl~DVT~MO)BU4b}gC-{0S{X}_ zA(`;uN+*L0QWisprPGWn^=}U03`si~X&A3zSj$btmfz(;r^hoZL~KzCxVVEKmS1Dm zOsjmNhS=^;Hph`uVRiY9T%%Z?Lpq-DZ(1+|^TIX=JdU)%>)8I?WvLlhh9>1Q-UjNU9%p)YDLE+R2^(9%N zmT(VRdl3H?nGgZ2KHytiQn%kmq!oBe6(Z)!(WZ_IMz1Md1{i!M%z{mQtDl$~#VUDf zmEl7^Q~6|Hhus|J0Wcl$iOVem?~wv^#afJye2+`0V{Lxl6yHS zgKsh$Pk!BhasRc*_JDf%{|6P*KaL;ee+Q~xBjKIuVX83l%I}8IxhW5TEeeizPZOl8<4o%|+zZF~k~OSEYhZ z&7?2Ee3Z$L*;!~zo)kb9Pj-}LmGy08NitJ`UlT#q?Cp^pl6snBCqmeBWK2`P31J!S80I+ zZz19Y0R`=Vj=j^511qBS3K*iOV*R*)fJA~g3=>sr7d``3%jrbD+)8zW5EpsFsts%h zGQGqd;d1{WquwcsUBj?8`!A`1x$d8$zCmpkMbY3Xv{t)}(_{Kulkmfr3rlR&+{m~0 z?p#4-s+l-*R+{j0MxRl&r(=DBEL!*X<6H-h?RAU}rOEvT0xr;3u{v;-<1>Hu4i!WI z2f5*GTbKo$2*y`<`;!kp8{xOy>g$f|mw>9{JBkjnDQqdWg~wt%2_Y;u$T&oNHDFFRC)D6JQZo!V zh!bO-Xt;EZY==5ZUd=inL;OPtn27|LG_}L1h_4hrb2AYIo;FL`YMjZ#rSmc4wf0L) zbF^i%1+3aPO{uSnovWuM{2iN-cJxVm5D=#CN^T(0n*c>3OF8;mIYvGg^b8l%2y~uu z$p0Rm(c4fKX8J(7-(xHX6*suuqRGv+2OgsbfsL~LAX6&HqtLxP)vQ4sHr>Q@)sh2X znZDdP(e%95^i1Uv9yP2r++fD@8med#6LBjNIPm3>7ycuw@=zig3atNK2ka=KoBpEd zT25vf{s(boW0q}DZQQ|irn5tIJF3HUk&j_^cgM8s&*ZFBx`_xY&PbRaG{w2o@YW1! z=8ID8=50yzDC+Sz^`nEEm=Y*vQ})z0fjge?qG5lO1UzJD#s)(4Sa9Yo+6Pdi!XpF5 zA34;j{*;A?4AFubUyHmPRPo&`g@lR$cubRO?_c(_-ncgm!{bVKL)prD{4P*=P z;g|eIq~)uYX7LNFYe>l_J1j%wN33vy_x?!V?x4X)^(Qc`f%a1rsE&yoP*<g5Z<6Yn$gjF_>U#;P_<(7%3~icBPpZuK-o;Sdg-Yg8bl`d!sv#5v%D@5|&Y z#1YRLl!#*R{8E<4ijRtA@B0loWHCCeKP-l)NAv+#tA2-&FCxV`kRlh3tKY{iu`M<%8|IhL@C!3R37qxWwl$n9A*^T zE-f5VP26KyFtTJ~wu&;WC?|^Hy%MJVa;}_L;s21B_ z!2c`U!T+0Z=WMZG#NxSbet!PX{qhD=CB^&Gw8|EcE11pjO!NT;6!`;T5bB58LH6>K z360-929fIJuy_Jd3)&A3zh%&n<`vxUqX!yuNeN1T#x$*!mO)BmY5uJ?O(l~0TqZ^; znpn~n3e0q%0PaxAHC9lVidvVHsRgKX6{*aaT{k78mkc6IFeVU5I+X_XrZO|7KqK)A zGfLPn0lYfUQtcRPCZ6gvNfna7LzA?fkplslZwf-~ic?a^Gd)QK%qi_Sy-st9>5d;K ztXF*BHjKZ)Z(Ju-j2$-k%9nMrK5y2g(JH(jHl(9m#~P^_4T@O#pOBad>b;ShqKZ>| ziFS^n7)`Cm6emBN6qXmt6izc_(6S~`wr%UPx$ZwbCvkC>;=2XH_BU_$^KLvdwJl1D zG!2YaVnPqg3M5!WxJ;Ckm`D_s6vw7Zl*%qD_9^QJgYvFhT*b>LG2mLv(vK`!X#E*fYmGp1sO@#uCJ@d&va z#WAcvOcXltPdsffqz>@%aH>u%C6=&)f)8V6pk_Fe+`chxAw6&d69aI5skOKPjPYC$J|g2ptzaSuq&He1gE}*GUBLlQyiuX} zxFB7Mo6S-b;UEXLhRyXW=+?!oi320-sSRWISZx8b%{5MF5b4_gahw2WY>De-nBv;wa#m| zufCgd${BU#HFP7tZ1-jhai4O@8I|ohbn_(@eDnNz%{`pi1Pm;Z-jqj^-awrkRy5fD zZl6k&w*L)um9hIAN;iw%W4$JM+eH2m6!UlW4F<|*!`sRQ-APcABd1fys%}()Z?QP( z20`m$iUo^^GHbQl9L=^;@uF)#tk)dUrH)ph#5DaQitA2a<;v@t=mTw=6i>9Ug=Qba zbv9b;IWz{8s9oF;BGxk>m<-X&Us}_B=8c`~U(9FV>yj?^-!PxQRlt8YT~oS{{#(9k zzqJN06p+5K+_P*Bik{p}eIf+qs%p$k5#JkILT!b$$*6O4Z1c4ovpMs}^>Zhlx(Sa5fgL3mI8$pS(`GESZ`5Cr4lq>u zxpq)xCb7${;o6V=mf71+pcIQbO-Q}$dT3{&a$ZGYUkldEO_W3(W**6kzQGg!E$9Jv zmfot`yFl(HgF?zBFgM|02R3}X?8g2GHg@_j-^r|MB8RWZrF0_Ik7BS$Weri9f}C5k zhH9PCVOa6ZSQb7c3Po!;X)(t54_tOeoHQBAY1D%*^h~L@nT_ztWC% z6K|F1No&dUk(*EmaVB;}Goq%HDE_)9b3~E_MlPOpV|Qn)`>^ff4wKQbg|rm?XSO{Z zUW1HPtKfOV=Vnv_Wawx0>j}+jmIC5g(H!gQ&T(E|_JCRhAV!KPcm>cln>;}Og0Ymx z#}xGXxegbknZQd=opH+Ur3&ce`J_%dCPx3#*l67$79_<;#VrSV!^B+VcQVP+eG_cJ z;pHF{`F_g4oI!lWy3VNhnZ3A zO3EH7rwQU|1Cv~ma7()vHq9PrmzSgG_Xb(_5zSv>5DvYTfQw#FZ8YCK4ybBNQ zLNcOh7~*IzAXz^>kmmZ^GGomf-3_#d?l98MJhQ6-Z~XPPzkYaHKl+8v?_au_{~DeD z9D-Xr+W%wQqVgYilyJjwj34xNV%#cGU83j7x=khSW26V}hHD!wFaP^u*LOb*U zslSRpVm^YV8s?2xPXvAVePmx_Qj1(j2rbVIf1)y(R=Zqfc}%_YzdcW1`Fv{$J|*Do zm&Y>m%zC<1y2czJNSY@%5LPe0y%FnA3vz;u##EfPv;%AErKf(XZFcrFs<~w%Ah|+C2XlT$E+IH3Mw@3w?<8C+Gue7HIYPPT1&lo4W%)(lXR28g}P%W zih<_Uy#lLZh_TL+-gmtU2dWVbs$6D;W^up!C9dJMf-Ws3ijrIg5E>C$PG3uEARMin zGVP79(_+k$3L{1~394%E*sa+(NpQCRE>^We{#G#8k194?TAhEU+S%^#>WVTa_9b8EpN+(L=94dm90^l&Z*8GQlA0*{3YLe;6ktB0T55ml>36v14b!0Aq} z*2U5$>3Zarjk>1Zv{t<5R`>4No#7u+=Mcz=Uvfcc>b&`1d!M8!*BVt*6$4BNkg?LqtUDgM=?wocf;jpY^ zSs)zZDz0+p;OR57v(=wafuE@p(8czB1aCnbbj9C=;Gl|*Iif&PeSRot>kBQ~3Qy|) ze8!%4OoI2dgVeN7;@nRcJ9$?Gms1x+_(1aY` zWNbdJyNoE8)N{g4M}|>8{SJD7b0!|~1$Uj~%9lEP#GKDLUg`c*h*fNiXY~~UKd?q; z{&aqHT48Z2ehT5Fb~z^L075J~b5g`4`Gh*;kwGo{E-{vqZtoP-$a7UkU)P!B zuhlHM|MoEdXSw*dr@Ds2nh?qd%II>4<|-h7)GC)|0Uaq>;MWo<09HJIKzjZ+LoztV z;0mX?;iy<0*-jx0T}O|MUJ#t4uIo1Vb-r(X9Fb1CK8{;QJEzCP+7*|{^l5eX=M!>| zRf2(PzdH^iUO?8z9uGr=J~13gJrWXu6|_UY#=zvF zrAqCzOS-96>mfyLqNIkUzg8M#ButOqLP^CceFZ4#7PUU9G|gDa1QTmX(w|ey1eHud z_6+nsL@jKGeq7ecy?Yii85M!bTuIOg3(cyD7e%$IA(1ArUIK)(d5yk>bkNkiNkl*y zrr%LflnHj%lj&2)s%#jOg?^4!q)-nrDc)^Hwi4LcHai}gMXB@0z&=s=lBxYH#{z_I zopo)IG3$8~zuPYhbJSrEo9710oeX2ssW@NxzQUMUrTjFvmd^kXKE9T3RBz1#^ zx;@pYd%W?BpelzXA+x%%x3+yIl4jjOp}3#UbC;R1Na>zikm?N^YBS@Z`!yu(3;-dG z7P50ZKdR6j=pUGH`NS>?DE*n6?%8#(Y5B!QTWD`fpa>&Yshrzu6V5t+N_?U^=iW$~ zovNFo#=I>3wdbwYKziA$Gls*B`^##aBB9eR>K$X}qjgn85ce3rj_C-72vOO%+F&k5 zQd_wplFf-5V?1P2YbrN4ph7xBy@UGdF{qYz=qKT%`*6HU~x||J`8j zC?yHcK-+w~?G9Hy&W~+`?4WlK%ev*e*q&5}u;$Y-Dbhe}bliX%KnJ1f__Y}Lv)Stt zaDwP%1g*M1CbTThKV)UIgKOSeg=)VOE>Nn2`0}OHKNLBM9hZE-@iZ=llUNOGk96^B z!BwAbhAOU-cT`6VarltOBs@_-cNkhkhFb{Q7=X4q-ud>d@`1%e1rA9~gYEHb6B6*{LO6X-9w7`v%d#v)Lscu9OjwGIKXOHhPnazymYScud3lQBQ0#JkZzn-Mn&=2n&vtpS z$7IB-q#NMTC%a?IjHM^9ine#MmT%rnVUDSkDKMfZND8*N^#dw|xwC(bDG_>K8m9Up zGml?Q*8i5w{5u^?rILig*9`q~1<)=Y;fsNALsKG-koOcY0Fjq~@&h{8{<#>(2yL znUsV0C#)z1R0O#60r&(d|2pFXWT{hFcn=<{k&#XLpl*x?++A2%qApj}LIsmGo8l}Y zj;bivVll3Q^@*6Q0LmE|I&CPDLrGibsHRP$;<(XLX}O$oT3>yh1wtwC>^x3WCobE; z;0IG{?kMF_ekOlxpRNUg#(j4$%Hwyw?zR+QIneMj6jC&jTuSiXQN=do!C1vrQdX#Z zk2Et&amR4EXmHarjLB_Bm)S<5p8j`V1gTPS)XpxJYHWxFoqD!OuU`*i?jGZ?o7=6< zaDE4iR?=1%2yS|VgU9=ucKx>foKT~gaVUOhhK4fHZpmlQ@06=kn~8RBdcW~~dQaz2 zoaNQB=PmAoN=+Awc%cjDqHhE&$HGEIs9Ot5OEg7Pri%QW0-Y@Kv9=ub+AAG3qMbDQ zwMJDTl74re67;G(51u@%sh;Lgfpj&rlcMO%Vv7V$Q!N2=FYFu#9B}>sFNq-t&4c6= z5JcKAb|iZ;m@Jvj#>n@KnP}s^^f{VcBA;|sA#jB3zK7U}_OG7Shhz-$>E^eqfY>LY z=L=E8l=qD=;YApa=p@#|E=Rc6J^ux`fesw3MnUeDqjU6+Vv&VMUSR^~S*c^&z8K`0 z_D{)GtlCnmz%T^V3-)PD7oyUKZds{74)-`ETF$D%;rz~@ft`m$Z`$sInuvbRhg2}_ zM^UGj5pW5cYDuB1h0=J5!2eSmnQG_E^Am(qf|&M{d<5})g@ZG?eiZHX`}BvO3I5}` zLXFF=xB;7>0fvS>Oy|SkpR;azL&sV{%uR)nUT17o(qGC8pRcc#o2$*$f?J+LCPJwst_p^w@8ZOoy4b!Yj`E0jNSA z+-564DZ~5I%P;$6*2EiTz?^1k)^WFTl6~v3($lzfW?rtfvGJ8s6Sv!GtV*7kKKzCY zuTR^*o#P;h6LtunFKeGkS(ZYT7|M^_wd=pR^$YuRWkmSrq$|V)E@|m$7@^LbF?KtB$kInu9b+_!!dGrCdMtkSVV^qR3l z6-iH02PEE3s}~3+e0r%i8^@oiy*Q)K4AZa*-=I|i3BP#B#s}8NI7p}UyxN4`Tz?&F z6SfiW&eg1>Cp>Gk2PWorL;{VX-X7HisnuD=jiVh$Hv|Qfzx{=J7GuLjzJ2{md7%GI zdfC4%>xxn~^ZW>zQfcf`5)=qIvZlF;eH^|dQGl|NGDV?6&xS^W~`j7`re z$Omt>?;jufU~-o6;0?Rpz9E}_Au zLA^c{7P$MjeUt8ck{wmU%qrXfM|(hxGKW%Du;zj?99!TLW!*s2JI)!cj(DSEw1H-|0q)+=ud)W87$ybJ$3;!Yo+Q z3J$Q+D6+Bq^KSJqb{iID;|A9}IyJl0VH=>Mt11=Q!ltDMVbelK9rTA}M^z^MzU&~; zZLuiTb(E!5YbPtlnI1FAOnwBaIUS9{eb$cJrvET9hudqv%|yp6V*(u}KBYj=_s3L^qi@TDTk@{Sq)RR&1mP?t>mQ!}~x%>nUV zO$8!O6T4|qXDRcwQEs^6)QlCG|BthGjP9&$)_r5!?$~zHF*-Inw(X8>+qSKL*s*Qf zwv&_RUF+<#-aXbBXYVz}9P``!R(H+1>#F))2f})(A6o$IWU+k3wyfyJXSF<Q;ibJY7;YynK)Mw!SNP_wk67`-%-$W98HK((<1;2GOifi`+);sGX6<{1u0^;@Q> ze>`dFRvDJ=r=WPpJb``+eFNBNwC^WOxSKh)J{ZU3# zQ*ylJSBlna!z&em>}FQ(3q!*NMUklCSkps&5XCpkIt>D zO^!bf&o?*4A4+E z;)B6JM8Z-@7pWlJs>{~JENoN7DoR`ENE4;hb0ugajHyI~ov};J@!&Evl(Z6KbTUN} z3Tm6u^pXRj<_Ra*3r20!RQH~Puqi0h&D5C6BeW;df2Ec5_AKwpnzX28a`D&V6%8(3 zpcoS9j_O`YE~DgLO3uJ33)Z;lE9%oQa)&T3#n%)SXcV5XJ7HT zDU!_Tzi#kU+$GyZPmZ->Rg&qft602bG=2}yHsl_Vkx`s5`?y33ItmxJwP>5p7CVyB zzwU1b$2;A?(@XyydF=%UV_%^!QBDE|_R`62ANXpOB}i6Nx0YQZ8^j0v_B8<>cs*#y zGB>L>qvz7;P@*CG#s;X#vK!5I(4Nd<6bwtKEJ%+evL%H(uje-ODiV*f1ft$>olxR{`dNb%gVLb) zq{h}}%is}%N_Q*(r`bt#YbR>lQG?rAnL)xxh33SKo#YO8T9?ErQYma#zXPSWLZKsg zOo1o#lkyuIAWGq$?}~5uAJ~8>#k$fH^7bZWBNxoH&5;ITT|3HN%^`H)BgB=dGVn!- zSl=6y_`RPUx4*I@RDL&p9>s2DG;|>pvFj+FSm$c0)(&C~A>F|wIKlaUX%%j{K;=d( zg?S6R+$eq*wi+$Dn5Z40mv=xH0Wgl4!~}T@A*>Osh@`*7E(OKc#l{Fg!caY+$RYea zkob!xfMlnahwuklW~e{?U2gF2L$C66JrOC)ugr15Vs@GSYGn1Ab0^kJZrgLG)^PUt zHtnJXVC6geoBVWGj*0}t*;CXf1cKp1Lq|@p69j%x=*{Cy8AP%JiY454fedzG8@+dL zZ4Z9kR1a`i{N(fu;lY^f~UGQiTu8C?n#M(};D?+|B zfU2!6ISe;&oL@e){bm)dxCwS%e=6Gp1Uq{=`bIn9*Mpk%-;z0aeMRmyGyITcgpNKf>CGm*YKtHv#yxf4fuJ@xfOYEo*Nhhrk@-SrksuN3qCMU_|tFE!Cc}ZM(zArc78STVaoL zRTXR5To=FqeAq~T|LyRA9o^|4J^#2M@xY{<)uGdyNpCoY_!0si_QBS!(x*OSCdg0w z`fY@?^S`$fjuX$H^}pK*|1)mDzjEh)+u^kQha12vHJ2!+AhJ)?1(c*13&ls>sEVYk z(hn(}b+e|ph$6v}N{;_5?468_kI(-M`mPZDCjqCdDywICa(}b4{pp)SY4DF~DOr7!c*S?{vzJQzH)p&iYu7SVit(`q$JjsI zfDGPHu;ew@_zg;vJ239o*@S9!WN>ws3UX-mvp{1H;J zCC`0p16lJWwZje0KeDA3<^hb%WZN1!aOSeJ$V6l3X`avtmr}Y-c8|o%b?|`kid{c0 ziP1|hYW6Tex>xf{a-lKoj0LBP(X{G09kIRVLZZP$g%yk`N$x_oMM|s6estO3LoUYf zu@Bj^EM=Z|*Pj^iVr=1si>z;OK(!YYmcdU0-8ifAZ*aijf;EIH;cqswKD~nEj}2XS z0=wBMpVD#A!v0zplS3zOOT(fSU$U>ZC=-|G5~WwtRD zpueq#cD-rPvMVt?+&%7xXdtH(nAZZi|5({^N+A+_!44KgY4B9W76|A<^3J3#1DyNT z%LL|nQ^0z{z~Lf8b141;8?FsX{HLzzT&InPtOO5ZQuPi-Swpxd3I$WF0AJWoaf+F+ zY|_^m;V6uUVrHYyIy5){C7WKWL!lG5g~Xr9sR5PO@l!qV+yK5lWrTW(Tkh!yLn9Bf zOHSpZJuvvUHHJ_n-_r;z*|?|dL2BmA>};-|`CbrGK7vCO{U8PS(^_x=e3cN#3CFXh z(^&bRY)J>VT^YMscvQ2 zT)&7L+cL*eN!Kcfo|y{YkI)32pB<9T3xRe|VnV&302QZ#Id?DQ0pQMEd+>44K7}sn z#mjKj^ZL38DpvRRtVxG|WZG1eyTe+uZ|WceRP^bbbm{K?yzp`$Pd?0Q)o#(c{gT37 z&0)S3OSErlg1eBzrXk(i)HND!iep+LBvE~;RxqUW2$&Y+WU|0slJ0|4Xmj_1W;I#Qrxu^0xIsyX9DNmc%iBlJFbawJcs0||pY9nf zj1EI!{4T07Kii5fu;*P)uze=!=+iw_I2WM)8%nhi$+w5f>fN_B>urYAOp$rI)o`J zBae2{q##luk`{AxQbIaLyiz?7;ctf(`bWtrpg|2-(i4yQHZ~(amSp+{r5H0^7z}T2}r`(fHY@-961{^H> z=yo_jj+B1Mxu<3Qk)XxJO9R!pq3qiXV)nps8tche+H<6-PhKc?>i{7;X_9y1QGyjmw1RYyoHFfhXA?sL3A zEY@s<3)wd+wguO0-?2Tno|s+DGsLUwN?LPiByRFunN9 zcJ^>DN_98TY>VtxuPh-31@}tLs&)s+-U;lpJCfuNP!^cT_1vEpcMi!f! zv=jdf^Vr;YPv57L6{1o5-UXpDTKpM}a;Jp!8 z(OxI{i4o$%MC<;9A{ym3TFxpCLK@CbeB(8&8y5w`(^bw-xSerjPUUKMHCvK`*dlXB zW?7V4aGW_nLIR*d6A`^(Ea9z|!~z|V!aEcCEp-1xWk3R~ju9{OX%~II+)aEIasX=a zhJ*;RTr=YC6b_p>c2`IddcSWeJ~sbcIQ0snzeW1+a^@wnIRt84I62npEr^W>IVPT! z5=Vl~p-WQ0Bk~I%_KWtKuP5G=e}Ge6oxI>a$ScjoJ>4q0T*}-2ckCH=2H@#AFGfHYQ)+3 zHwc@a*y*-3(gj#ia4aJjz>OAgXexphAsm-nYOxefBE6RkgoWNH$KLW9$;WQKKF(tr2!#5d6QWuPskD=vK zjByt=U~bR}8wn&tjYH93=gqXp=h_pSMFp7@D#{|gYAo#qA4_l?F^HahGwrkJ9d>9s zMDZw(?LR=b(tl8ZwFSBt_FCWzjiYrg zB1_6D++o$Nnf8vL*IhBvY1rD(!H$%9XAFJt3A4^yFWZ2oNW#JbyD?>*^To@2}aZEFZ55q3g4~sr)VwG!zw|~#Ow>iqTgmsdi(Y=4$Sys zQ9(I;9YOZGJ2O_2(aF=OImq@@A1#YXCN1;`m$Bq>MqpsHnchMGzb_L3gC$NuLM%cC z#Uir?GG+Yb5bHTPYr8(k<<9%X9un5VrFDGCC=Nl*Ak-?dniEJb#GI9$4RED@r-4u` zfa(+?eZbxS9r{Xq7}3gr!eAx{bv4ZyMoCyhOpnP(>*Lo@A1(2Mw6uT4L{j0J;>mZ* z@z+@EK{0latwYQ#&;?&Yh^mpQkg|BX7}^JmrLaW&m1eGIbVbj&xY;3HE!fi2cH1kS zqWAho*e6Z+jW7t2o2TPGDTs(71M&;kHW6%r*8MegmoWU5bOPB$&>L3Hd@s6LrvP0E zy~5YJVE9>t4b^SJ%V3#2XG^06k;1+3c}&!bY}M!o_UUQA+lvrk4GWXR@$%1q+l7= zOpfW+xuC%;3>;W|^L|Zp&kd3&EmNEuRh%u9sH^BaoIgKj#T#dz^Tco>vdl>}%-_XX zy-(Y5^3t0Fjpa7`s6wN$^T{g=M4}ZOmF&Uy0)G!2g?_;PdoJ_T^ddC=u8;m_QZYr`bqijTqD+%aokM()ug)qT`Nx}bh&s1sywss zG$S>{sjATo2kE3H>G5qErlZjYo~b+6nUlE#6?clu$sF`yjM{@iE&mUT5>3OK)SqS?bUCeA|r{AXjd6Sgl z(teHpn8D48&uai5dL9?}21=(+6@79mI)({2_lIMQM03vUMwGg$F}peXz&g8r>q~wI z^ZZbDAB}^0!3T|O;k_N497-v|G0P}h_1)F8PGWq^s+%wJ(a4`elD#oX-g%y+_$*jA)whs?ov1?1=*z(J?gRDh@n1i7z(IdILqZ^L5K22d;dEmpgnC67(6$wU}0J(%iu5$Qz_nd+Ijtc__PZb6~!v-jwtc!n|qI3MH+!|Z;x>VWVsN1XQW$6 zpBr!QqKL!714YmB?Yc@fym-v&9w0hvx3I70|l;^m6SYl9?o!s0oLIp(A(IC8TXV+l34Fd5%Ke?+^> zh+m|_4{?69IbF6*^o-h7^y$|F`aI^fLY2>P%!B203~w-9%%LV|I}MENbd3JW8~sVt zDeQz(fToX8TPRaA)UFh4+7hZM2i`*PCK`-;Kch|XJ!*4sd9j34jtqG&vtEC=RtPzY z$slT$=uj8EPEZ8Zs1zNu8?O9>`R@n$b9!oZ;h&4nH#R`@|5|JP?O^U?tZe3B>uhTF zUpl@;%9^&gDoCHQp6YAbw%QaYK|)kLXu9#7foL%B=5x~mp;@Y=%qX@Lm!q2|ow$qb zL0v@sEGdu#qo{gh&;O|EJ=X)9@5Tb^5$K3`|w;Oy~T z6O17{E=c@4tIl42Se$ACVVDRmtv(dZntEs65aW*G9cOqNkTANtYJoa?&CNJxP42AM zsEIX`wQky2?H2Cnd(f%E#weBW!b|a=@;VV6jayBxMc97s1s9K}_)8bdCRyXzXVdy? z^TnHqYcc?1cbaHh_vprvqgl7Hx_59tRkz{Q0)d!c)O3FP@g5Pe1h#6?0E~Nf8CzkS zRq~kA=Aw=G?14|h)O`go*^UGCF2KygdhT53HL&YIHlPCc+jo_DS?fP5q?dfn?@vnS4}UAqg%jVSm$F179qh{o-%Wx~yy!ly3yjXc%uy zwx3m}tkk_C3^F5QT@Jv2awue;E$X-=LARvN~z~ZQzznoxZ^{VPkc!+zI}h^abbz zSrE%niIe@A%I~Y3YnN)|SC(g|uy^5GPCp?2ES_%={7LHk`X-(Gx6=QUei)YsQQB@F z6Bhh1=bV*yk5i&f$;eCGG=8$q!WuLGmE>1>Lc6$fiA$Vk?rV1O7V#0*4OMLY@oyetY3)(EfjW_0*eU>szjsIvuj9uZbDM^h_Q6>6vxskJ_5Vm zU}O`5do0eK1mtkl{C^00e+OCT6su7+Ti@EPO@)}f!3~&kL0WegB$Q-Ud<4()N-uef zmX8cm_y}p}A+GXf?$V4*!FkfXz{iJW^&>2h{n&khH5*Ksj;dj_^u)gz&k@2_8CcWm zf5x+rH2yV`9;}|AfU%dAPZ86flRCrbrSdLllSL2}mP#aiT_W1eBNjmIwg_UlC7et& zchfUTRNUniTGoqP3=@z6o=t&9Bz&dRxe97Q)#_o52q3S~cDVh4?`o>&8Pj3^Lv*jF z+iFFW&5-~{NB#|?+ZZ!!>Z6j_IH;`?>tcKOOPz<1NYza zMo)RyY}yYXAZ%SAAeR5zyzw8R=Y$rlr}9GD*JPT64YMP~6(kWfmfV}oy9 z&KB2^PuHE-*2|>f^Wd8hio1EzTxG4Ir+vFz~ z>U(b;Rxa0z)aQG6nfFB966YiCXUAj?2eaQvck6ab+I{3R{*d<+xR0Gemg}5MO2pUU z@(=7cP5K*(8}^jXn2avs&lIVz@gkp{sh{s|zmc!(pMTT;98vZ$e0|d1O(g9v6!1%Y zx4#}5aWl6`qemAtX+3#jR*Iv~jlGmElavb{cNnos>uUtOkBk*^r%mO6q;L|!0-OcP z6GY#s4yOVel@5KRRd?f2jj4P_(bS`nhb7i0jZ!LOl~O&+HM7Y|00%1$ZJOC6G%qZ| zaVj>e#GjEdl_rraX-*hECU+&l{Ep9#^Z{8F!*^Qq6i4>Eo}!Cwlt!e7G`Ap_@WXE5 z@39dO2Oy&KP9xlIM2MDg#0(BI&bw}+^e!{>2xsU3kvMq&+ttS0skObe9r!np&!(Qg z+b)6@30pPbxb7W!u^5W`ih`(T93j1ewx*oeZodln@zytsgTRYwo*wTli9}S*GYf`) z2@-U6P*s9=?g+@oje#B5K)v>Aye;bGc6(IlR1P2H&R2+0{f2TV$TRze`nT#jxcQf( zD$J-e zZ(ge6JS+0!w#X@!ra0m+%yMobmp{2t?L0qU#l5xOaHqSnZAlrBm2K<{`U%)I#={v_ z(CEU>4iv`=)eVfa$V(}Sl`-DN>&Jl0in>e0}>fHhr!%RZK+sFx-kZd>Et&%R=))3%Et9K6zd!rq=2@_Hoq-0$7_zBaVm% zs5clduZC$W1Wvj$v3LSB_XON7a1VD2KWKmwg#t!+fjoMnR+fPH4VVcNsnk{FQN>^j<}5NWFs zUtF1HL~oKYo$i%a8{8xmr(@JSXabX-BBUFqVaAId8fU>SsKl0mkELz-2;HQK+?Y)8 z=xnpsBTXQ2yy^@RTU=#nZW-vOlV}iA*9-^m997{*8qe=fPit*qS!%1jI$z(hx9c2r zR;wx}hm>-yIHJ{X^4UEv3ZhTea8J$}pvA-$D5th%We33Ce`K3fRxeAsAWmYfl1 zQVrLz=Uz`%l@=MdmKl55UAg2>)YwsNZr*=c46K_qbp^|S;v{=Ox!i3BfuU?FoGWFB z@%*kK<#T01w>)V{pt^b}K+$%S&r&!cy(28xPn!Cu(E^t?OTPGXx2Q1@-0dY3vqETC=Ikj%Z4u-5BvuVKW|t>xcI*8_wIv>~cn6!MEvuD+{93p**nCyJIfSQx zpINYO`{4dkR#I3MTU1QIUN#UU96fF_m>yOj7e+TbmaNx<#5pu7q1j4WdVf1L@{b=+ zm5Y<9MoG=R{V(oKb6d8v`AJFE|i%wvo00h>BeGAa1#=ETgKRCP^8 zSyyoP)*QyqX)~1uC2;{hwXLRL{(R@I9m`~t^5YoVjXsQBOzL-Ea^#T!EWJv6Os65& z5{4exNDpkOIk*uApk^DAsp0DzE<;NleU$czLv47AEM6Vm8bDu-9J)Im&GN$-PH0B0 z^2I@DfEmt@wo+G+qA|Q@YMq~o1TG!2H9tUGt`Kx9V#kwZ|u6f=|&9X{+VV56b zwAb?5vAqP(he1Ao9BG5HdiWP^qxAQ$$wyj@+XuAN$R-W^pgy`|B9N0F!9hDzv@2fR z)(rXmU{Bt3rlJ1QHujj|ozK6Hv!E^faD3-TpBpzS@iH^NaYckdPsBC?DyfIigMaueL#jaq+sJJB@See1O zVs|95e7u+Nc@y|l!jcciZeU%^rVKbGU^KhDq88z_A*GKGhOC&RX_*QzHSM!z3rK1l z>6WXC-CTt%eE4Or1m~-_)P{0~&S$Er=Yi~(!<-H+5mqy}9$i+MPO`G@qz-TlE1pvl z$J?MWn+ulDYRzoDCH|v@`AG^(D~1GpTkNk7ON(y%vMb)znOe5Em1e|M4DyDZPK?p2 zTGoD_dL_-{Lxbi*C{Y;`=;$X(2P*gR#2gh4xSfUJtTP3p1ooZ89x5j(z)3oy&F2Zf zEAC-mi>L$e-q44Hm@8*}rhUrma}4>#BE2X2L2q%AbPBG@9AXW-1*H=sm{k&YNm|D6 zsXyX26%U#mN+f;qTU6Y#I&_M*W-`J%1d}*M5G(Q($B~pDfFsQwUs}wyUnR;UYvypv z*XgFGV}SgQ?!aaEYY1f@-oI1GXA`R}{e*Tj@xVNb)I4LYe!B5+i^ z(W*it`VCaPr8o13HC32?vzFy+j4Kbw7_?E_q7Et7DSB(6TkcaR+o!c^O}`j2yKc9> ze>b==P0I{0TilDxl=ktG(a(T9HfK!G_g3s9Wde5#*MkF=MD*vRN`ZH9A#x>mB?8 zSwtvLL{=(==(VZKfap0}8PR@sLS3L?kexiLF;eR^Va9?_hY%h=$!)!^Q zbRcLSKz$h(LvstABpXJdXQcc>_Ci`&MxA3o#2J&8lG6`SdW$sG%WF_W{m63oaa&8> zMHzE#Dvll_%zv!yE;rpV4}^;t>Dm^e!Y$z=1pwYFLmBMLiZR$ky$pS*7#=8-G=G1i zBIud(Hz}HrCXOk;O?|JYju|rrTPTFsT~D+eADGRWAB0JN?HNR0iuu^Pn;MF~s8(uoPQ=E_OyQURC|^qBW{Y{8*Hg3#+v6eqPWqZ%X(0 zu^Er%%rFAlJ&(@0L#HOhNp4nARpkO_5uE zqqCAByXsCaox#3AG|I~)e6l8Qf&Qt~Zpf=^GMuQ7euTFKGd^W_=1$jG-I;K)+zIZd zsF=yCdSuqc@8r8r8BC#+q5M^(@_1ATtLP1H=pmmTu(&wXMK!_39qRU%o7en@#OB1I zv$Xe^ywS*^Uis1XqCAJSWRjG94J(UZ!G>ok zm$8wHnjG7mKn~$WQ$cz~AY?_j=VPNgAhXOfOVz8HbVhbz+31&&l%|K5l{s5nD<)scNfITWfOzui77& zLr6DaC*s{bzV;#zx(rcjYvdTUPVb{*$$e`>miK+4AH>YPdByeuR zDKGL%sJpu6u6-K61H2V>Dz!!|73%lSiVI7stw*Sa$hjBw%ev|MGO#E ztXnWfRc(iXGLaQX1d|Gcd(N@Rw)c|~Huy=;C|2~2iY;gf0r{@u5uezVDcfh?cIgMB z#WSfVfe+qjOVDkyref-qU&*s*#Ohnv47NC4Z97Zq*lcN8SIiI=LeLu)XJ{`S3~~ z7TXTp>Pdlee-Pszup$kp=Vkz_?NcjZ+P%L>%!v0*Xe8PD> zxaKf<=I+#Ac%z%`F5sxT_bK?|pVj2v$T_wSM16+nqyA!<^{HF%39;D@u%P+)T_`uZ zReAp=o)ex7D~K8tc`L|ih7c!?dO{i~v`-0Ssyz&7J~ekxRzXZ)VYr|yLX7JTizFJ| zpJo%WL0BNVRaU_#dSWz&S8!2zKpw@;*P=Gw(%8vYY8A zqCTj#3LQ-=d`FU5l}i&dzXf){FA0y5n@c20hY4@EEe7rn((+;`GtQkjXf%v#SX4h2 zQCtyIikz(!GF??Af95g1atReGajac*+n%pb;X*&q7Itz$cR-S@5i&}h#LgeB7c!Nz z*3j3;bF^IHlibQ8&ulsgItem=6Q`3Fd$aSnd^2zB^{|` zwEYIAviAnUbz+$a>rCk5||Lgrs-Gmk*-f8))FM4Ai71QZm0F)+WZvy{Ur8RVdYc zb!q-nzvpX(nh1p`ZzsbdF+2$kI}BAbR0tHwIuTkNbfeckMuSOnb&{r6X^XQ*7dd zjvDsP8D(mI|5Ga9@XAXqmQa*GK8>USX?7f0uLiUaTF8kQJ7+(g-sprME@c{QA&(Of z39{fwEHEct9s!U9EDRVE8q|Y`YcF)}3(0r>35>3{!bc}{Qr0`8%)(Pg=q!;?l{@QE zDjplugJF4E=NF=IYnH7?lqTVWXPd;B zL$w@_uGqOwXPXp^l4K&O`z7NUwP6xPJzt8!GLZ*4&c*X*w?Ff|XWdr!&s-8Lvhzg; zwBT!Qw)hgNc>t<|K{JVSTz1^dh{sr^_Vni`tZL&k(#kb1H#qd`!DRnq8R(cb>o3rq!_+0 za9lru9pb>#PAutO4>0!8Nd&WL(xvm(;S6jd>FOYLdS5V;@rzai?By{Pixo?R+1e)S zb4}7_<0Q=6=0`+eqdrx`Rf<>FE$d4`Xww(u}I>KI8_uN`-Ux?9Fr`SrL z1Qox+&4J+d(~>JB1MfPN9>Cxh+|s$e9A;7@v&{;kpPVMz`i*j!&iXnqUZiY?WpB)XZB}-Xu6dB9S1>I~oExTSdx7nX<#!ee%>;}%`&+QZ)Uo+bSR(2eV9mdNR$x!JNTv293 z{iAQX!Ry_Nv-@OUbe^wMBL_UV3=b0)m8Ho%ld9x@{D^#Hr&e_@RX!O5-rD;H;)_JcA(yd@O;GmjE`B;+NCf1AV7SN~LRSpN& z@X1}#XzGGoRBqR6RM3uw+h}{N=SHdN=dQrO?lEqFfXaL-Xe?S0?-D}9>4Vu)lsG`{ zAIqwxwOf_m2FZyXh)kId<}d3%bQvJEur+Y zuyWM1)q%ccGesZ$BTRQRU@-HEHk}wGpTUHO?a&I>_;*Hwwl9XPeuBQ0gnx$$v~j@1 z&VEAIVCsESSi&b1`Ga|nO3A4wvY6i7yUM$rU@)h=S6@Y0+lOa3fqwy$z+M3Z}Yx%Q;Lc_ zQHf{jzlyRClrPQmB@0czcaO78+30Q?r(vdWG)@4ii$q>!B~cyOE~oca(~$gf{L5*@ zR~=cbTjBZwlpfsI!XURyxb4DW<>ArrW=FQfeC#D?g%M3)lN&1UIC_mgV-Au4A=E zz%5>wQSVyNwIUzbG}9{K>8gCaIMfFVq62mP3T(SA-Lr-dD;JtEASOK!>37751!>#Y z!|A#NvMKwwo#5If3Rj1xGUk`w2&4O$=w>W5Y(AjPmtK8$yWsD=my^%o`+XWLvm~?Z zya~63c2ITixEHH@yuxvM`(N$d;OWJ3JS&ZD`*{;|lO)&RlUc8M`CY1UoZ_+Uf-y{^ z6r*l&7O8cz6+36l{lxtaakpcN_BK+})N0@SpNPpuKMD{8Ve9KY&nNvM@Mt8DRQ34} zORijq_LB4OsXQ)=?m-JNiWpY1f-5K3hxTBGsoh)x%sB$ga|m0G5)v-}S>&#lzGZYE_bm@;xq$vslK!tp@Qq-sW6Vt(EM+~+!F|#nsS+9Jx7J=A?dI#Fiy^f3)*gRZA>`;b6Z2)1FJsaw>!7D zik?B)i&3~nXJ~^v62rgyOK$#fjLIqI5%aMe@H%vhnU?^OZOBR|zR*V+W^!(lJf>^h zVn?RSsJT5Tv^n%ie;%hB5a1?GIl(1xv{hoa-D1)12|BnDl;BOFHb)r)209$hfC|^w zqmKTrL~W@hYwDN*oPiVx8gRQY^{#Mv)l5-pLx3Nl{vrUMUvJ@`n+_aF*XlA&=^yrp zu8gyC^p$o!|IvuY+5}EG`oZxeZM?9&GZne&B_$C2 zeK+0tA~$yJ0)Kf%*xzesf1zw(Ojf^DFc}H4NI+bmjmRG`VG=%O`&sg(p^Ijb@|j#^%} z)nLwu!sc8yT1fm~m{t8CELE&p|C`!P;L1N@zRsyvY5%-8V*;GPYNJzYgMrSJ6>T2Y z^x+vRErBZd5ipPnjl+=j;B$gC`-C!sHRTLVV!{oJ-(RNT$BrxaSX&jkdk#r%NcQ!A zL|=_P^F=TKzkH_2VF0;!tWUDE54yB4(d^KhB}3B*d#<3ox#P3WBzmqgNiPu;Wrdh8 z*tgm2%{hJOLo~qF;UXwaD4_uWGc8~D3W^6P)DBMSOBh1~Ebh;=8{?2GtN{?_kQc!R zuTZ@)+$?55J43luM1d`Y=fbWuy=zF`csmqG-Y7d4P*(!36us?8-Y`1^l>H^hn=+`| z$mhNpoWL}v2yK}9_`Pqrx;diHT!mL+&p^G9$b5lzKYFJ~Jh65#kuJqtfp##Fzc-&^ zh&|y>0-%0~J%jZ!5P72PC{gkUUNg>$At4aq{d#8YEr5#2dmn>}G4z}w^mMrqX~WwI zyNBZh{dvq4s4M#XJ`3j#yt9OKIjf#6xRka7bA$JRx%$T2%kS$Q!6PN_UhJxJ8P7qV zeeLuADg9?b$s#$?_EM1FTh7$qqs!#~e@egO|7#$Uq$Ksvmi#9>!&;cIumj}5{qxoMx3IECQ*!`V0MzyP2CFjal%zkB$*A8MS|UdSCWYE z4JV^0CwX2pSKR4la-aNw-~FE;f{M7H<_NZRmz~`6eE*;H7I~X)7az5bn@bXEOZ^JW?iEEZWdRBAdJmf0yCSz$8;I3gDNjK){3xeJH zOt|BjDihc}T;4#JDfYLr|8{5huKC=|ONTQ*hhTR-;_5y}?_wrmZDwt|u?#4UxzZOh zVJZw)O0{O5(zHsp`I2b~XH{~)&=OAMhCKPmSB#%X`aTglp=?g2+UM_jx|kN@(_Wxdu2@;7yG%NE9PC*YdjH`rJB8}Dxn z&VV(qbg3GI37&(V3U`8U&TQt9P2q2y5|RgneW*e4o|y45Y(D||S%%}$X-qkMOu4P| zJcH;?EMGe+A1SxyqY&&qcI#1m@zzWu&Fs-7mT?9{6Yr`2;0|SPnjU>5k^$%Ox_pkR zw8#xtX8k1|dzri!_UA+AH<dXJ$E(?ySX|v5lXDPeg_B!@QyS_({yD0^&!+HL(hsTByq-)lOVBVZDl92ey}?^- zl)*ow-J|m3GwDQPl(?-@&E(dvAnScz!z0Df2`Po@1r%<{EM0zCBm>t6IKp=*!Zv^9 zqrC`_Rk4{b;_*(D$cy`9FM7pUGD#Bfb~fAkwYz#hu*&?{VuDA^ESYozx7h2&5KtTY35VoM`r>z*jQeChR5BG-s=Sf- zCDalD>mX&ot0dIMCOcs77(uvhvAIoSsGhsHI&QfM48ORnMcX>&Df9jX3O)E+y9;g~ zke`&k$g*Y@X|4jz!dimM>puCT*|xDwmk=A2zHn%guomq3*c0kuhNQq)DKn}{i_(t0 zd6ovs-MJ2jo3@I~f2gs=CT-5XuRH>gzh8{Fk^Gq_mvz8-oOP>(;84o0^BZTvz&L`( z@a>nFU5jnPjVfVToiky3UfVvn<`ZbDmQ$nqS*V5G={-k3(yM%I5d3sUHxvX~>j1v? z+C@aOrCPo_*V&ka)as2_g>B1&wy-KKIfJ#*t31njXtOz2@bUS{Wu9|xZs9KSD78VV zQrurdbh&Hg9+uz%Ush_x*2!A#I$<-)$!_+((ZDB@>0&FV(~vRV(u7u)`}z*U%!->I zhHNK?rH?z2cwPNwV$XLsF0WQf@bl}~Sm3LgFz|P@YRps&DHvL*-q7Qy>7-?mNM3%f z^k3MtPw06u_h`K;uQBoPi8vVIszs5U7PjN$zP>!$OZs8y%$@k99M}!;8Pvn z`RQRq!Xn&OiC4{nZ4`jaEPl*ihg-6j%4b&H$oPF9;#+VQ3O`x~azKR2tk`?*Q|)1v z`FaV9(Aozu86+~a@Z~Fw0^seyG`Z1DD`N2Tzc3m8308M4a$>*lU@iGhp8p5`;s3NJ zN>cuhz2UXwz+?d$LP}}|npq5}U0ABVW5RJp4E*5HCu=oH#tD~rI+8CKQ%|33$masQ zD-#%DHpTbp!~Mf`$IFe*c77kPFJL`r8gs1H9KWy?J~a99Z30Q`@QJikj=H~k_>K%d z)3^8sk~#Y2yTifSDfO4o8G6F6E>R)9n^sDraD(M%?G{n`Zp{w;F@O!lYExS(WIM6| zhu=ZH1i}{Dm$1QB0}lgdss-f!)HQBs*p=cT9v(b)4<0{L6+>)>fvEqCJ&D#{-Y}w} zrA0G279K&1t*mumAEuOU_J2=6@3bmn|Kh%oO*c(8WO`pvd{A+Vs-LCa_I4!<2!@`$ zT)9@U>y*BIB|x%XOY z?z!fikRwwvjsKzWkdtHdezsoRX+M;sIDv`$a-bR8mp{MERZFSvO~|6z?qu423&Y{> zL4q zOULWt7xYsA&6n3NfKFng61jniHYDt4Q2*~mwRdXrqc)4;N5ryQ*deeE0>|gTz7ZI- zCHqh+t1YKM|AlXkV%A|aQLtfcCpDc@7KR&=l%s^6O6ZO_fHVJ{yh-?D-I}KUi~k7oc99t zmO8X%NK}+;0x@+zL0;|eL=gD&Ti0J=4p%1Aspcye3*jkJ(x%|<=vtXbP(VQSw|M1eo~@nnDYzPDDNj|yGWbix4W%N41h7{7nVk5{GWz{e@#RV&Dov-eB1x$(KjLckN>?9%&cnR>V z=J3KiY$lgFwk%Pe>uA1MH($7wOy?OI2`{|Ws62#$nc7R%1|&4-O2+5Ik-5qHeOs=l z&+Pk(R(mMK5emp)kkE9v6a&9glYGgxX*Bik-=TDG{I*}VvT)c$1nuR1r^(P_Eqdv}EVfBH;vqiR%lNkM#syhqXX1lhX z%y*fw`qIhvF>=&bC7S-|A8LC1 zX>=*r1{xX7IdRFVplT)HGgztwu=dbJ0d7Ug8SBQDz`Jc6rmA}F^6T)^m^*Z13f!m0 z?d{V!16E&#S*&MlfL&R%DhW3G66Y;GOg*8lt#RbbPE#mAB=H8pP}7jMMAdCWR(ioZ z2NXZ@kk#CuZ$k>9Ir^nSQ`=g7_?5BUS~KR&r-0@F*KFQXPdk#vkmUGqQm|x6?wof7 z6;YLpyqXE`?8@j3C)Y&%q#F5)n7TnG#IMQBk^$Y%B;$(Bz=r&^Pxi~R+bIXpBnkJ< z6aY?oe-<)auo=T9KoMk7D&^*6)d(&SGR`*^))Ws59u52Z(SA}O5~o$c7bl^rQy{`^ zl@8TGdB?TX4-~c~paXY>nK|Qh7NnNVnp3)2o~~@WgP~5bb$hq34L|TZNuZMkNnvaB z=X>m#+-S@t%Nak4v*RvZrNDqLj<8Lnu0dtQw*+-HEdTlay+E)gPT8& z$cZE*L2(`xhslShaohx=xgUtw`GL8ydE|bF!ppaZlvTHI{In+M{OF#9yS|sC4zXq8 z$$IXS!se-`$gV>GV2y~n`!n(4O~K}bWA~ZYW!5#jR0}fO5vl6^$e~N%We-lB=XZ9E z#Dmb`8RfgH8<8UvsaVgV0DNZKm=X+Q5zPK2p5DjhuY}(Ak{D2FmAYY3KYe%g%N{YR zZx7*?H@;uDLG7yJh?GGf3A6+U&7L9xiGz)1zmd!I+uV)zJ0ZaGK2^wUD^_BL1lal$ z5C@~nxy-5MQES!qi7E>w6mlX;R1$u96ozrzc{vPUm^o<^2X&mn8*2A<3sVnWS% zUuBjsnsGP^{d$PBb2}e168%FX!wG0Lp5Q+4IDc3bet)}|+xU`jss9ypQA!UXQvZ=F zm<~5IGMxxlS6RhyXB=(>O-!~gl%Cq=l`spAXM362e@w5G4Envl;*2tfG%Bo%rc0QP%+n@7_C z#=iTn*^=-1mG0%J+=pc@M%?C@vbUYG%+Ry0P$$LNy?$L83tPU^4_3M3)4*N+h&5E= zKCSE0`WeAqQXuXy|IO23-DxT;Mys(Nf*LFL#~M;ommkYT2HxIS7kReb3(ERM5{|aL z9cE&(Sjp%a66XhSmCenTLW-_i^1dhVo2Bafv?bf}tGM zMlla@WMLwFxO+?4%=1V|B&+4PhLLpSTI?QH=!|WVZd3qyQ;2mjexbap-r{G?gI=k$ z6-T{Ud(H1P|05ICX9>Qs0D7K2TL&8%Adjxe19)OZ z9kaQ4Epb?+)?&u;*qF?8Hl_jBZs~p@PeWt1lcSDrvYbGU1O!((A1L-Q^JdF~7`cW{S~tq((Z0~vbq=jqx{g?tmz#t)lh6r&INl50TuM+iy3 z31lnJOFphBDi@J{p7n!sF*IY>M%XSh)kD5tBE}l}qFL~M)wK76|IrjV`qvj^OexsoU0@_&XK5eblZ(NAqD{X|dvW0QeEzs>8D6HFpd&P;|$!9>W?K0Y0A1C7r z9fHhme#GRwy1xBrYlc~IO;A4Eno``m_R5c)6uv;Ys_BU)LBTUnB1lyC#%0*Umsg1w z(S=&lH7$>(ovtn+w^o#|0nv5l&y2EOerP|s90r?eKPH%PxqIWg!6bvk}j^b)Zm3M4Z% zxN^G3nS7%h&0j>j6P%5WH`-iV8Q-68ZqUC-Urq|b zntwLioPiwkV>T0f1Kkk5?%j&Qhg_aJn;-&~8%cn5@p8eILYIW#utsgv!Yl53-uVQB5bQ!4>B~NS| z0^p>b4Crqg(<|m@5P>8aD@QOa8BlgJ3mGKn^}Qdfzn~ z$#Lu=13Rixir%v#B)C+%;!NC*8_&RXI5*8MA#fQV33@rds^3;FFWLn^+-@Pr&46iA z_rWnQM&kHUX4iOV()%Jiw9D6*9Uhm3yDV!jI~=WNxf5;};kEO}H+8^>d`Wken=3&; zAAe*_HWxJ|1JrVg>@tvA_D*u@;MYp8{xNTAN;GroKEzc;6_JMwwj8#`!m$;|MB>?LWoyQ;kTV}z{LLK*1 zBq!Ddc#O#vJt-=zHnnNiTP$N}O16PjT}V&IP4EjWzw%v=JO68Tmo{sF!2cY3a{eBN z&iXIj^B-dm2KUTL&6!WWUOQ-?k0l>kP%sIC79>%>4~fO|56ys@s&vzP{^?)&!TpE6 zJY9H(uSVoTNBzS+=V|O4XC90jua8e>oWH3pQU7w?%;vorT8{EZ(?cKvdLYbeM>iys zZ8C5v^8L~l>WN+1#R%K-1{^`CGOamqs2fm{a-^Hj5$L#N=D6^mu*RN-g&bnGD&)JA zZFix5%a}Jhj&juWr7_fQ>44^5;zXHB=AfUfsS06+fheF#a?#aU^9hFy=o3AVURzZd z*V&Nc=y~lVJQQ_Out{ulfZ#Jv zn3p?2UR+i-V0`3VImIL2k3k7lw#r4p9NW^0Y4D@S2Am^Tkl59obz83pY~vEw;K~aq zACm9KI(lFGEMg|ekSO5OB<^PB95Zu~C;d0b+ISNeRX#yR{`Y2Uwts@G{F7Y&N76er zx0+PZTo&Y4y}pj`!c*`V(Y**MNhnNmFP`pHdp6dM&FBOlV#q;L@PD~2*xnO?XIIB8 z=CRgJtaIIrp00kr(tP4fk!wU3EOh^hEs|L&pI$MqNsevjSw1L2zB;(H-(KaAyan!SDCdbV z0O;Gt=h=?fEjejB!j?m@G+yA|6T||9U)K*+UMnsGk|orZawtQJlv zaQi^`o@%-&%I_&GsoFvncb{_3{BgnC_COv4iF}mBj)H_Ul=3_|hF+$&JSUfe^O=A_ z+k1+NpwMTRGHl^0%_JUcWOQFy$bNK|?sTETP8^OU3sGV5n_VW@<->8$t)WeMuh&*t z^mK=W%Pz85>8$pH9kYb*$Ok;>j^#hKQpM?71<64iqzLrTy*xm2P~$c)OJwK{K%?>rb5=eLouN=n9!Oj# zOw(CJ>YbpKG&uxIp23eMhC&71Ffmman*=*7J)k?nMU$it;m+l%vR$QF@GCM9Mxf;C zD+lwgg0pVHQ=0vZt|fY`F?S@R83NqV-6(yC7I0gcS#1K)4_X$2ysZu%P*we@H;ozs4t zoAF`%_4)1X+i&7FCIn#?5YT2X6PL1-X0N2Ah3crRWRcTb?E@ zO&5*~2BJoTO`OCQEr^@?xIZfnO&2hky45P5t1n}Y<`GqcWvwwB1Bi27%X_dqj?wrN zS*RAK-%bD{N9MVVh5?`c=d>cWQwiIWwOWW;!OGaz0Q5Bq=i$}bxu%^k@NX8m*AAD+d}6s5MTVkON3Wla5O8(#9D((V zSt`RYz4nC1A68aO7gV!lop7 zrZ*r6Rz#+aVwIH{!<=`tpbPT@W447s2F$eEeXfSsCIaNS8-{c=YwgH~lnINtnl^-* z4bPbbS(T1>&P6MK$|B{MI;Pg8Kstdbo|$meacwhgO!v^a-2ZT(84wc*f773XO%n&A z9kMeVMv!#Hh{l_{b?4klZ$r2S4yg(G{rDa|<_R+5C9sPePJofEl*>F>i$T1iz;YF~ zMKW7nNRg!&vc*kL5pZ>CT(wG`1DNf{keWj86Q$Hkw5;f3Sr>9xjC1_vZ2G>gO0<_u zWL}bQ#PJkDuzq2pbz;I&)0{ck!OsH~zY3?922M}s`;7_jB&y)DYHng1@s2((y8F8- zGSOn*)b9co(xrph8sw3xeM?Q3Is`P zl0?;=QoUB`eS2pXt!I(>5==|N2q~V&)mrAZUGYm=vIKHW$Xwrc8sovK{r!Wd`vqgH z_WSF*@RvYa0X|k5rYsnA*P9X_!#1?u6BmK(0ajEK6)1vm#q~ozjX!D#Cv+~g`1*`N zLP>2yHlU%bs_VOtPP!jxc)`tWVLm=|Aq))$ZDUy|<>CRRC$66H*{)UsE7M4VD|E;= zYBWQWRVHPsDVn1vfUV)V>inf$ISTgia=W@U5pxz**wOsjVX@jeLO;*&%pooD;*A35Xa4>adz; ziqw~0Om;h+P5?PKo!}(ik02ntv<--!I&-za!m>4GBPaCg^cW} z79NORPTwnyYt-Y=%{VIM^$J`PP+Zi);_x%=%zS*rg}JVR^68ZW?mv~z(#91DA;NLz z`PECvb6IlC`~A+8!5+W_)p;t zui#hO>;0^-Qi>nF!VEu@Y`==4E?fqONh^8;Ops?#babhrYHxE?mqn9Pbo_Bd)xOzR z4J%FB`Zl2_)d%dj!rsS#JO5L0T0#zHCY03Mk~fG zw11rXWDgA*gs{*eKlH_Wq*3OS)Vw&iS_1=cE%^nT%$gQd_1!e3t)=!CLVzujhmI)C zgHX&$kA_9)%3}nTBl974S;Yqa%~i#$Tw@%Rqa#+|T{S7G4ilTD#T{^>Q&{zWTY=hY z&dz+_(>Rt_wB8^1CHwMnlvP2U2QB!2E|4LIG{$20Z)iftNag0&U(Us9}d;A#_aSX(aQ)|)I0NEgw_fjCk z4BZge1TpZT>f2r^de|C=Yda&-6;AfRhqoT=!LqyRrz{iVF4fPNla=nEPs!yR@xLvl z-1upM1q)b_!PtkAiP|E8FwJ6k_3QUPJY-41D6%xNsoHoxVFmexMUCWw^a%beHH-Mn zeJI~zqjJ2lgMXIhg| zV2dz~Cu7L>~wzeK=&u@p^}G1kyg8KwU9dIDEkVCm9h3xmauP*(6xPoRRlf&+n%~Q{xrZ`gV!yRz9{Wznf1{eZ;P@t1wrV_?}XtCT%zig0<_UK`5 zUfa$f?#$JZD;WP0P+x5bZ8&UAGVWyS)yMW@B4Ah4;fcM+!8ZRY;@4)rmd+BA5TV)3 zF&o#R>rW0&E-h|Xd3IC9d&tD;g`Hb}gjIAX z!#^_eV1T{U1Q&3eK{@jl?gAKq#S8!yFc%l0!pwcKXoM{*im z^b;^fEpV@rk_2Wf2uVl3yjTCclMMD-nAARXISWOH)2QkEtSJ z^xtv@IZUzhr%yV>0r2Gu&Hn>p|3!@`o6D~Vp>R_I4MqqMVi5F1z6Ohjdt->;nc9eu zKX1!-$9=%)`tH7Je5mDB!ZQQI zyio^zvYMH#cw*Ey|CTZW9A_CvV@)tJ8X{^|tcBfhun5>P>?ua0h>)*#@lH`3pow#g zL_ZfIG05NKF8q9dRrs-nJ*QQ ztxmkgEXac?@wig3km0kXg2wv#b#HK_znB2tGn{wA8NRDPI!ulWP*lkt;7jF%Cb@EJ z46Hav@!?`A%q0$J*5F)>EmYGn2^ewAq`f-eYss||Z8YO2dV?K3=;7_5Zg=Tbpoiwz zO4gSDv%7joAh2v>q0MR;`AU}->Z0DFNzO&alkd-%D?R8WJbK?C#h~G;Q0rMcEM8zd zEmU??p|$tJ`M_f3%5f`k5e|&9lj877N4MTcRqp_jzar?1@bZ(@LG;-q(lCm^LW{Id zo@F?bO$QE`pybQZb;(Vb#OI+nu|nY9dsIl81z&L%OhEOJLgS0ntr5g>)VxlHJ=LQR z9?eiKJ8#)FvadLOs<3)A=&w@LXjvLAoi(z!XM=6*u9UBBIiJ<=-C!1^k<;sD-s10Z zy)_@)YVe_DI&9)gHV+Ehx~89=rTfhXn`ooTr|Ro139iwDMu7>PG+PyJ3QLkE2a1Ae?(!*-z!Tl=4kWk=s3$9 z!_@>N)05uVzOi*aCDXRNh=B8SUdTC>+LiK}2(4Y3s}jb@S-1yq4>!&{?xpDnbsB&`IW2w{0(@dxamUX z7la+Egpq6#oRs%_G<#0O;?o0#CPq<&PFi2zcGWqjDfTHd>lA+prG;wFKf?lwdkN{8 zjf7y=T>%D5(jcxQ-Ccw^m(uZ24W?!Ow^w-oAzZdx)<(EXsn5d?g@B9Hs(KEKdT{md zDqz9kf%@Ph{v6VrsW*E=WZmpnH;yl7Fk{=WqB|VxSx*9w4qzW7o~Yfo`?u#frA1=P-k6ForQu6fHsY3%Oc*wOtM=(8no z@cCHkT7c?MW{i9$Wjtcm)yXI2NhjVx-*Vg1Vr-~ZboJa&*X+=Mu0%#FngdRBMx2Yi z4XqJpI)p2uvKB{(!Ev^ovcNS!AgKgu(lwjhb#L%&bXV(@s4BvHvD8~g#(+bbG;649 z2^_=R*JLw<8?JJIIt-DaY-gmsf;N6)`>pmCRqw{{OUA&7OD*G&ihAZ%QKAp<|1A5= zjLY5^pO>im=Nst%>B44D#Bcgp_64l1oDA(g$IpM=q)L{~$bu+dBtuTI4yg$$T2%EA zWJ!q$-?Mn-p(V|;mjlGaEP1CyTk_OdS`D3jX+OF$H`%=&#CbN^heL6>AN%0nNg@Y0 zV+}1+M3#3A&QH@hADVAg-HmS+csgIbuM_N0@| zD|ir4%`2{k69%~JJu37W+Y-ryY(V%8#&9ypAsBX@_3Y1yQQlB&9q~p(wc)2+?RH;#oPIllcI|HmLjv~w#=hORK zA@1>ey3#D0aU0v1tymnv-vhI)m#YBQ0lHjkj3uL(0tVyjSy2#)0C8GoEX6g|J;hk2 zA>vk{rnJeUC1s&D$sR+I!8epY`fFDXfqd$9RBOqM%_qlo8NXneEFA_`9%kqx>vBJx zp`fp(yEV@Ata3;}ysN(xH0aVUjwh~W_hyLFT3!usS=*InbSkdp;P^`vhRAh;%W9(i z*-gPuA&JI^40sIC+^r9!{wSlM3ZV`qP=(a5pXUJU312T>G4=@2wPYRA&s@9RHNeYn z)KV!I`P##Ts_)x+|6%6+>Se{lT!68#5}>_2W%8HdR49uyt>{ zf=ZA^nnV$R4yQu4RK~V5v?4jei20ndh3Qa*dVU!oHBy^k=)Rhpkc$v80@*Qq!<$UY zEGbWiFV{4*Hl~E`Ka(sd=i;NDR*)AouI%yWOEEc6CmivQza1D(W>aCe6Bng7&dMs>HJAOj zvE8}*W<}z-*K$To8P<;KYC}9TVBAkzHH6OY*@S5~dv0?$d=O%CicH=~+FSTBvM+4I zrf<}*T>%tBC{mNJL}M(X0U~gQncjx>6NqlXmlHv+A}w@MQ%T>Uh<$@%`m$nr*p4FV z?l+mHuTj}|^^KP2Yr2<35TxM{C3L2RD<2Q5Po;wpny!g{pXE}^T(@rOfoK4Xqpf{I z!EN-;G`>90bf?2_p1;^YfjoTm1gz1~p8t^mOM=o^^i77O>s#*oa>Ly#DE^YP5xY>8 z#g*y~!tA#f%#$tT#Y>bHCgdehhBO|ZN%#XlC+L*ml_6&sHH=)IAw^*%Fb`Fr?>xH8dMn#Ti=Oy)kx%@8NG^k_yO0`oOq~> z7A84)L0*@BDTQDjLlkE&6Mr%pr;07V@8iP!j26t@Jtxw&1G&HKVxcr;LziT-C(2uu6;_@M4gP&TJWaTxa*c782-v zVh2e6qNP8_CZ_+p3H@nkuWx8&U}|Ojd5`|j=oBAkX+152GVp<}_FTnaGjmiR)tC*+ zLO%KkUGtMQA?pwe@}kwQ$4soX4n5YBQqn`jW9u`x4>$qNLawf`T=#Ih`tg=NV{i3x zv+#iT1@3b7w~r4Ls&=@c_`=fPU$m zyG0(^GF~j55$|-!;WZJ=^~B{!am|d;C8J5EkS*j|@u}W9NSy6cK^+oLGf(;pLP4zidbO(Q$rYy{pAb8|0C}HS+>iSO&zd>5#NPAO}Z9xdmjlBqVy2~xogo(^JW915e8|SY-|WfNEJ34tXm}BD%JW(Rsj4h z!0Waf*ZXB4&+FC|WMoOk(o|Z^JwCUkq_g9Lvf_q<@&nh)Mqvg>6>_I^E*73-E)1S{ z^y4GL?IyCR2U4cqT4D1Y5G`}hd!qW0E0nhCkswr9)g!nsQPso0Pg&I?yl+9(!?%xB zm8+ix*Lc@@=+Oz&{1VKWrrJ%Ze~)Q?i#)?6xK9ynL-&d))Y#=%5iRGgF6^S98g}Dg z9A4#Bra#i)Ri$5=i0RHe-bab%c<+kv7zj1oZKulkkT@$QSSs?{&!IbsBR8eQFbQcH zE>p>PcHLB*_U_#I&J#(__t{0YzCcp)&+?$?Q%1Icr@N_Hu2RFOy>AL}_7Y<(iYJ2? zMYh-P0b+{>_y0r1?I;9u6(m zwVP_=y_kprXCN`r1D0So&iu&o)KRhQ81^dMB?EXGpw4KZVWFN2!j`i zt|uTMRi&nQ%*4olb;LNg+;LoBhrYHbxfc(_@#hK<^HU`}3cqF`O;)^jwXUCAXzIGL zZW4Q+)3;duhc)8Js4oYQP*sCjy?|gDWkD(^aWzd-Pg)?}uR7*%FKNuuR>Wv_gYZ)? zCb3aSRTL5{wdOWR<4h8utL0L|yxxS@A^Qae>!>)qF53%gaek9a^@79Z~7;@xj!(e=9iF5gdwR-z<)vq9@Gvb*wNOL74 z{xT-ZZL4ISXn2oLyfi@v@28?Pva>K8mBn{?I_BkBP%A~NB!^*R^+9#x!oFD~&e69gwnBoc;PWgh*K{2H&%6b zMK}#`-=me_YmLeT2Yt0jk`lQXl39wTOW837?ZUK9e?$8<~ZGamZV6?@zTDfW2lsWAMa;i(p zj&%w__@>kiwb6eU<4} zDr7vCZM?F$MmCzOv6x+Yd=;VkN_yhO{HMD+-wP?0vXrZ<`TVb5sJ-iu{Djcn+bDI$ z6pz{%tRwNF)DCO6s4l^E`dKe>&yzV_^gHtUwfFGZLMq1>*HvEWWy?HQ;(DtBQcsHP z9}h%%1I5u@KVo3ZM!BSWe(OnhQ7=kQcx4)W5%GB_H{WC_+ilBD!1F?Lj0E4*Rspnu zx(7KZpkObOLXq-KST>VJv8_77Vqtth#~?*GX#08q?}Y8v5~t|wf(Mptm z6OQ`94vQmXqhaaVFJ{$%Ax88GHE~%~8A1_YM}}7sTU1#>5u^o$S20^u=|d6Zh05LH zY9lW1jA5BC?!@L%_UTpv^sS2#-6`PQ6)`xK37y#CTB*a<)CpPE9?)#nST0Jo>e|8` zT5bEixuw}&r&o^ZEDmOB*o7gKW|kJ;$zn2Q=*MPKUSu}X9(HA0-QVk{hZ+VFh0o55 z2lQDv3Nw6KK6K*4SkH4acVa{z{Gh2=X9`5en`q#oLa~L8DdyAiN(UXg53R3$WQ zUJF{soR`6z5!Vw!y1T>Xbp$&&oH*-j@Tbv(;`}^TBXJZwr&>`D zSlL2a5!$_b3Och1-m7j)Tx4cAC(ygFTWv}0Uq5X@6`6qDy5&+7aARQcjAdJdk7d2P z)figjE{)MNuhh}!uGoC8LX}imGMsRRnG(}L@DEadK=OCYag26=nre}rRBP8-qWrcR zUziq;UL0@3=4P6&qas6qwhQhHL~ewOZtKHDCqRC9p5 zk1xlBxX9V zik~os__&_=*cvk{Bl1hHx`q#Hmu??cb+>fF5e}m1zI}a;x{z; z{Dg-Y=Y?R%CXGvqm(`pQt?8>9PnS*?uP=CD+UP_cL0)(jn}mnNf)QvAQ{R^E4G8DE z-ra!}TYIqNWrT02&-_b56BpT6|Fwxel_RLY^VzNc`D8r)Mz{WtKnfv8D}4u3Ypeh5 z))m&Qk@yfksAVE@v+D848s^oiucz!bW1;FzZ>6<9?Y`sQgRn z=aAx{c-kO(jT5k6n-|PntWL>Y@pWOSH3tRR@%ukS;T@j2aHR;!zQTNqv$B*sr>rSa zF>1cXxsn#q5T56hGLb?~aq)Ak8Msn;vEGC_gIbH`tYfLy_<3LdOgL4WNwD!1EtX`M zga7#7!c+cIe=yW@+4Ft^viJWFApdtkbK@`l-FpLdyOt^HQ$8wKZ^#=+`=40RXkG-Q z7&K(_=lz}rjp3LxE&F!H+s;4#3&<5U%Qlfk18ZaB{nTV@r-y$664&W3K%&`l)n0Oi z11(ftbh8JeR?)@4z5z!3pHV-$aE25YOd&dC)|OSP`=Z$HX*2>}9J5z%surByoZF~H z8MPlcG#Z*{Z@tPSz!LSkqPS(fdAMK|Nf9#i2Ghv*o(E#!A!w4jWy+n~GG^}DDjaZ- z+%s|n#Tt>>VAt_>3kh}~%m9pS8;JsH;lbH#H0%Js*(Ag~rPt8G)O%F$SrunL)et{~ zH&ce5cWeG;vM#S;2j1_kxhnxS zm$#7f?QzA5VLtJ=^$$EQD0=>d#~GNn2zLr50rke#oc6;wX$4_7P>$CCEDbkwpbD9B zRX7d|YJfjv2#~AmtH7SsfN8hxVh2qB*J@XwqqudeXe+a4q`W4pi7gOmr;p#Dvqt_D zWBwg4QFo`IH}Eq>Q}htA&=g;gb%Vv4L6@mm&Nbc>;zh&`VERll1nLs0`fL=Img5Nb zJSLM1m45}h+~?4Hjoyo4CE>$kW3@R#m`JZ79;!m{a!ph>&qZ_;Et=W0W9x^ia~?EZ z9x>u6sDv{@6W>Yr4i%g_=q3zxCd!W`T_tqSHXr^0kujY@htn)A!!HWMfTWF}zJko&!;REX>U+D^$ zlyyLM#o|c5)U7d~_c}C6C)PA?h&ar=Y=k7zBf{i)$qhSbKvq>znI}0|U2)GiXj^lC zd6{^~{4%|mfUiT&yX_qosDegMvt1pAz@T9u$Q4aTAYd1+^ph)|jzqxrpp;<#XBi`y zeZkse-5f({gHY@MmTKOmbWRV@|-uzseIj4xZHc4shFV-}E*_qo#{3Jg%HkENZ1 z9~1c|9l%Fcj(Tqg(CY=F0Ang&_Ac>?ghB(OL;9Z~URcT+F?(eASnJc3+H;t-icx(# zg5XZhIRoxYbhWu~j`Xx;Q`N3BMduwSYaD%%n;tE=qy|4SoGD*+ ze=lO}=FFKX)KjOke(%yGX-fA|48N=4t}5SckWJZ z{j&80LbS8CLHJ%i$!dkRd&dI@BLLw8;)50vd-LeaXq18m<0=ulN4nD&QK@L3L@nO1 z3F!=8t~M~5ZI(zJXYABwgdmdn2!lis4`Ze>PRUhf)0s=zw)C1HS1JUb$a4Zd1EiQF z^VkbEw(qvk#n^Bz(%?|S!0x|p@gY*mGUCtk z!U_B33-$j^#{A>V$QwHR&v7xgM>a(9S~rTdj6IWc%jGLVrKls%m+2PAqRB@qYX9AU z!YA0clCPO!AmAjghH~)$Q;4L@(2CYv=r_?v@a2mM#judXXlw{fc!lC$Ai ziJFV0hqQ;ZPur3<($0k-|2Bfu}3KFj7Lu?P5BqP1A%7D1jcb z69=!b>h|vGA;^Au#DHLV29hOZejx@Q=)6BwQTypLuWo7Dj1>f5vEX=WJX}KX3Jueu z>8TMyQpsnQs1Z!ea1o%76X} zA7h!ptfA%x?&J1nk|D0xDj$1HLe`8~a(&7#0n?h3$t`5kfd!9L-gjzpd8eGY50R@X z%w{@CS1pk}J6B$fK)l*t5aBIiK%bsf)Q3Xm$F9jU(UC?=QLI6f{!*QLjHz+|*l!(w z2BGN`f}QHSlY-aS*0`Fdq(H zbt%m1l=X=}&UV3ij}ZD?$kzu$&48;=hjJOkLIBioYe%M=or`t{9GrHW7@YQIgc4e- z&m3AyxYdVyu~dgs+}5`*`-cOJg_dqEnG5>G5L@Nu*LCH| zKr3*(O#wZvZb7(TP!p7okY~Gg{*78$Zy$^_GSzi<4zVFEel!QyG?WaOn?Pht*0diT z!*h~jUWv``z+`oELvlQ@6TmAQoy$i%Ko>!#8^lJtt5WtC>s z_Fv991ZUiYbFinCdAq)eT+aFK_5+rubF^nU&UQb`NIGgvb|(2SSt?du-(v7BwaD_A z8Z54skn7sd2p)6h=jXCv;%^of66VPbSMEo7A)b~Vgr>ke8a43p?nT9*3lT^iP;P;? zVy!Nr7}SX`;foUH@>5cb-@OY#&MdOqk?LZ8%Htn+{TlaVa{?#6frK2T4z?}+F65#b zR)y}nYw0=|iSiN$hGrWG1u`owQ!rjJNh_I|w!w2`5jCHYkP11jCp`iS_N`%*kce*Z zGy9b9JSqptG9Fq(V2LV6_6UtaV~^_(agslkW&lbOj7>@mj43rS^qu_Rv9ZkTglxW- z_uX;gp;D(E{&`jwG;WvYqUe_rvZp zvqS;k9HT-&GA2OELhChpO0bHWLgws2s}o!mY;8*qR%Z#~^bFzBhVPFb6ngO>SLeR! zAaY5>*$=jGRdM9p@q*AvFQhHt5Pe2IH)#u5pWoY9KTzwSw3@`5YHRnZFtYL@m;<*{ z_+pO1nn({2QD;5Nsmk-qb*L~MTq{E%f*&Jf%$eeHUn`KX+g~T}p5$Z>Dsm~P#GR3) zq3=k=9ys#dLCt4VO_YBL6+Xk<7k6$~J!1vTs?)%JgWCT=5Oji^gInZWij>D*3;Krf zJ<{9+rx!o5BAQFnErX{0cLm0h`#Q&9s`GV~Iu*Bcwid50HBrGO3&j!njw~?J@+I|^ zRt9rWw1;iGf-nwiL%c(u)TUBFOe9iQxG2m<9V15UzaQ~yW{jjZh~|L57>Q)Wb}hYkU|F&{sh+@BKZTW@x|4m0UbL?r(2+1GMdd!LdayS>Fh zTZC84Z$ExV^0Oh@d`JA@(q3CzyYu$w;rZ_dUjhGErhidKr zN7^?=N7`=NcG$6PJL#li+qP}nwylnB+qP}1W2eJTa`Wwd_8ohFf9^Twj!~mV{iyo$ zj%U@HYd&+$X(~dhh}orE zx{#+*Z!H&PY~^ZrE)Ztrj_KxE;yT=prsPWs?IIe8@aNG(yl)2~dW%8eD-!mOgzEBk zPeXIM@Sty>v8TugPI9>O#3%X3^{}bVv!TZZtM)-tosK zb*8AQGzIkpHXu~DzZjinMtP?Ib-X3S1{ zDjnp*cW0)Ry-$kPe`~zkl%&o~3zgE`a7nijp6yfEF6TO=JQZ;5v{9uQVZ2;VxpB=Z zkMV4+5fp8S!Q+~Z7v&!zf`UqM;u@@v(U+o7(?5ZSq^e5A{Pl4VfQjU*A|vXha|*-w zi4#eb_SkL5eTzLcENpT>w6GkXLcFMq>=UjjZ6H(3sE>|IJXoB|g2&nMEd;MY$M&_J zS2H>X{8WH@q=7d;16=46{5W-=)3>AVDGaI?U2xGb%XaYAc(0`d?;JXtZAzGh4!UOtV zi=W-iYMC%a5j6(sn;PfOMJ-ZuF0m6017R0a>dPUObqkg!%yCX9+z=CQ93kuP^7got z^`e@EiLHnitntO%5hQ>^kSMu+agX}%qq4AE9Ve(cePUAYK>vB=D37R%Sn$PDEPtU~ z*8fcb{1fkfMKn8ZD4~3y^pKWFFW5soB>&>aOd`!$!c#1EX+=Fu)&(l(WH~w^L9nSwa+o<@uuU^ z^~cLA_BZr8%)U+-$eK~M5LIF~Y5yo;On#d1J&&k?dJG$(S|Xa7iPmuCIt}Dm*1wJma%5dr zd-9eWqoBuK9Oi)I5i+Y##$27mS(}bL+yyJD%do*|-zAd+EDo2->9TPRcT9?2^E7B# zC^4^wC;U>aOe^>?`e-2uIfsx;yuuw4C0!S-nH5`{hzC%j*Et<0ksO(gOU@cL_m{v& z<)##V4G-gzF=brqW!%l=*6@D99CI+T6`@89ux~9^m4Qf{aSLcKa?K=Yv^e9xFsw0=TV2Hh$}J~p zR$v9SRJMjMbT;%gk;G$3M=~Os$|1Wzs+uzs%lKy^*T7kw!>;{G#x7*%yRNP~1f6SV z)VWG0?<|U@IT9r{@dF+^5&9=iW>-c|g4u>|nlZM+ceNqW;iM5ofsNdeWFb@T_w5N{ zOmDJ-7uI(D-smzHj{PgaU zVlWL2YoK1&^8JI~UqWNPNA~#0^G?g&;OoMJBNin$9le6mIzrswB6vcWb35a6=iC$e zCE^V12j79n*yGyz*P0%yt=%_Bb{ig63sad(Br1%-cy zSWrEr7V5Fv!bQ|O5)Deuu~T?ibKzVh=w&AX@?^FdAyT1~IISzXD43_S=ogMgSc+pE z!-sDqzQ%I}6DEl19D}p)$xGMGqv%<)P=M{MAiF9L=d>7%p1C`iK&M*ne40->rQRn#++_`Smw~D?+=4%d;_TAPVk+d z_^Pn2hXK4O@Tw~@boe-a7^N>uGVvZ6fxqc(<|U2)ahnC5Xg{oGZgp!Z`lf@HaEhZX zyzbFASE<%pSrOA6b@xyev_?-hs=Va4YciX*Xw65v zo<&w^8^R@OcXaQn#vNDEm!1atiPuPXxDj^vdm6C1UK_l|x%_U^x|lt?sH|>3OrgJ{ zt;+cj>>pni4Y*%&3xWUP|K49JpMQ<}Bn!Zia1{pCA#GtN&YPnPCDfhqx-6R?F zH=QnVAr)cz)bjuo_r+tE=7NqmSM*F@_A#`y@(#|#b*0uKU8N*~(H+&CbBK@&F!AhL zc5PGl*@^iilk`EIEljSYlK?+`qU45%@Bm{}m~4V3vosQzz+)|cmwZ!(Ibs1PwMn+T zjCRhkIC)#(at&FU351``cbR!SMHyaYN?HdlBASe&^KtbK>G4Ze+MTLVK=Ql;hp-B_ zbk4U4B(q?rHxjj#n z_S{=fKlN(7Afoltc-PUfvwAOYtvkXKD!jGaNj{Ka8Kn18j=<2`y#g+2#$04!g-z&E zz7kH(s2@k*=G{pDbu$<-<(QJTqP+zu`=Z{K-LDpsv?)-_)D;ipRfR8|OVC2{4(>MX zb2NGca$s~xh~QZH5@a~kfgfxIIhjv73Tb=4^Nzi`?eM5|`r>y#6aLv5I~?KmSe7F= z)OL!ihQR%OLc%rcJU)M!cj|y3=T|aH?A7;-_hp;B%kvosojm|X-5N^d`w$mRrvqk* zI3ik~Rci(B&z-*ejoJHqoDTuYHK)+C5kNg?Tz8hn_cxgpC47|>MI*+3&^5==InU$o z_?k>1U!xEU>{6O_aqI7KGt13yx=mnIyZj_v>_Pf7>k{}c5a#v~ox!Q4HINIe@2Ker z`88ezsV3CpJ?r()(EkZT3NYzbbG~r6{r7L*`2N4j@t=4k>tA&BwuEK)fj0k*^}dcD zKuDM+9I`KnjU*&k=v}G#oWh0HoRgS$U=TkaKS>Dr;IAF=&3R^QO2$S>&l&IOwqy3= zP0yK+Kkv8Dy-+MhVrp{qLBf!dPzkdnNvOc8BwTT|RC|bmk8S!Mn|o8V6OJ-24~F2* z8}+RX=4aIt+K{oBAznv+?Rv!B!ojktnyA$x^BBx zpO*;el!q9*VZ+qi-EJ+$Jixav-@+(vkRfk1WJ&1f5H^{!vJWh!>))nkJp#F&z50uf znoZf9{OZ2KFu?Ppj7Jb;cEM=_kS0C1PSWF{A`TewUXIzPa_}4{>`J{chAcs>TaV2PsVvEN5RUhI~bw@EeQU*RyH-0V1ZyR?v#>%r^y$?-$esAa&##XUsnCA8h63R}dUN0SXsvDNJNP{M1v=h(a%jX;l($;7fr1OWy1P&Y-E ztum`lIW}aAQ?D3VNLXNV*o9s~FX4yh2B#=xKaSmao^B`zV+ANT$=?6*wJpLe?F8ge z;~d1DE`mC3fuJTWns<>`PQdZ0$3lW2N18wm{E3qO@j0kARc>2sCoh`ZgFGs!1O}62 z;-z3%k8E%BS|1bwDIQX=-=%Fw?WvAm%k1_@K-P5`Tscl|2+Ct$^W>i8ToXT zy&R9br5_|0$^=Br!}7;Vqks$TFCvU0>84aoC(I{QE55)Cqx&FB%jJ{#eB=E(`_+lg zni#}3>emD8$F4Fn>`zxuIru%_CiS%iP#WYtD3C}B3r++@dbRMc^mPO0zo4DT2z#H2c&6)2GE(G>nra9?jWwfS@}Sbwdn_lj6tx=AMc*&a-NM zPC>AWLM-8><(Kshm|Ho_6c6WQt4@01FVAayJf_`>E(J%SvKH!C+tVhu?jMLEDXY?6c!!i*q{5aiH~++fI-QqF87igQd; zGi>&fj8qNVfvIAm%|sghFpb7YP4c;yyYSzSG@hv)m>mC*8 z1*7jrBNWk|#k@7OcQ3`1p_fcyBu2q)g6%ONns6ILXn&G9!7hygpU^I7_84t{ge-sc zYl&{3`4x=9XZUTB*ft)&I`KLDhI(zlS2So3L!crvi|Vc zu+;F})JV)t`;m^568U0`*PA#e;TzvOXcEYR4@^}cE1dI&m|C;V{%|6~v<79n1-s$NA zzoEmy>}std2sa1wepV~iC-axJ6NPCoa98asp`dz(afFg+B`Xsca+cjP+7(_{yucK!T4~}K_^mKh zepH^K%-o0*&OA{#M&B5bNc{P_svpF~fa0X+T8v>+DAUQ=HHwf?r@|D%NV>In#cDB; zuC0;^JO7YU8DT+F-b}aL4IsNCoM*ST!12&_!0rwi&e@usN zA*7Ff7hh^%E_yS{wY}ZgBUBNw1=*rFIxj>(B*=vaM+w8*M|4R#Ro9`?d_$#W5Va_^ z--aj|No}LQs}BS!gjzqA?V|V~J*+?a&5CL(;M^I^-SJZy?$c98DW$5$Z5!p~G+%Va zWgd*f{SH0$p0K{uVji-}neT-c%(?8n4&}64NVc$+Oyh@nLiBniX}Fm z3U+>qDD6iQ{_))o4knOfidevxk0|jSl_t?UeAH1x#6Ej?fl2TMQ+u2R

    =nK4wA0 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�#5W@itmWYSW z*MDy^t-mV7y+bk~o{@rNicM%rMsx3>Ad0?gQiH>U)-b)ZXH(LjBz(8$8ZtI|7 z6Pf?$K?0dSWj^d8`#EG5n_z`I|G`s9SUsp8vCA0U;^$12wR>~X*Q#}s0#gV>X3F_@ zL(UrZN+X&hR$KG&atdSZ5uf5Vv!v8!Hhl7ode`c@f@Ha#TBu;V9hWo6YyReAY#F!W zszlxNdfGx>y*b=bLSN#-&0&+77H2RLsmTJ{Wdv98OkXO2b$YCo1ReG!;z3Kcm87F6 zwTiZ!gv_s|XLN$~MheM3{PAJhri)J)cBUz3%aPUVNS1m9g^avb#?o3f6(GQp>9I9p zdhEEUl)*xs{!77O^T~r0KL2|iUf~qu(yQ5`a5l2+Q8+6=ezjz*B-xl#sW$=gLW=5y zYFF+fU2=>ifXFkT+AU2UnjRz*#V5@K)6QO2(Ce&JYn0QB_PKw49yE)Y2W zLP4Y-E35b@woge2DdZtepU=M2veU>EXN#&WisPB6B?vhIG(AW`NgYu_I1ofb2+W;q zOT{6uk^{}gP^aIV5z9-5v1rfPM@eBK>|S-4)`ZKpdk2o~)N;QZ`ub3YpO^637`Fb8 zUL&lz_Qorn7tRtr>$TkSc8S;5xR;xAHu&G4I8WQ+{u&U#lAzo%zJ~IBJ3|e+e2OndM$-xqj$U! zXB@0A7es%Fdn7o%&eJIVaO*_34UwoQc)$>Snrr@fb%e*;cte-0KVCMN`n(!<2lskc zeNz^{p@cG!@{1#zONzklW~x^b>ww@@4|kIEK+Q#C{sDBqy}q8BSPgeq%!OY`?B=&f-M1u96#Vj@{KS531pp@^asKDR_@r(d`Wis z4ahq;B!-Bn0grS=xbR;59k8H~xk``dhMZf?m((Co(k}Xa$c#I=5QprAloGl6vcDmat_F%ncR$<2NmxT5C)9_>%`N* z8(-puQ?bIKIoPd?n&ne4hH37Zr<2B-m~^jtHvtfqCrWQ!1wVPrjqBWxlyGmWX$!JV z-$eV%glY>3lc2c#1{ZzT-3|8RK``V1?YNW)a!82;SOlF#uHp}_io>`f7eDow=8YU` zBRS^HG&|4Y8N9=nW3U4w;)k$YG@8qP`=g6|FsEM7um+GXFHIenZ_D=Uks-zBhuW9Fxu%1zxxO zbgXuG;OtcCs`xx6pg55P_qsMYK{Ive&g&s;f>yL__8;IBJ3ksgzNe-3Z!Fsbw=!9E zWEos_q_K{%T424x){?- z2x27rP+lp}FPPXNmxc&v*x*AI4n)OzRC`9qu29Z?i|6J~eZiyv3j;Pi(7fv@!L=)s z-Ql+|U{FfU5MnrfkwqVC=-F|$ItYSPq&2iK>Z-R(g%jLZ8FL_LV~&*_b>({{4(Ejg zmM=|tD-(ZR84rWwuIF)v*u14g{`x4nFR$V{-$yL+^bS`)XL>txVV^&Gd#iury@JDg zcClJ}l!XPWz)|wz4W2QvY`IysfXKNXlEK(ivT0ra7f1B@;=9nEeO3Kr z>&wjfCv`x4{7dz~f5K;wvyXR}q;t*te!+Gn@Sqyd(HW*+vi@q*3~5i@{#Iz{lMdCu zIovlEtm`2TOOG~3aa4_>+S#4U7^{?Hs+4J@^f6fwIcbrw-IqMo8(OL5?2>q5$uVw} zAN}h5F}kqPV8EC4cQies#zA+^;NJ z(b7Z&$%%g^*+QD4_-tnFu_uthu)wC$`Y~>oH5OSXb|d^BNP``WD{qMw@B zI^8&X&vMOfUVXUUeNY6DwtUsTozmTk6ljMDk=#2KrxMZ1ZP0d)Ct)XVB$P0DmZs=qO~|luA}GzS zd?(BsEHq!`TeTK-ytSu`7!nFKU&rDi&=HzMzd?S#iWH<)#K}i>-fW2X?H{; zWxV)n?}+;QptmHMX<^No#?Cv=0akjB8Lb`DkH2V=q~Q8inp$eU8!hm;Y6M`yel~2| zF1z-Wgcf#A2tnf$7VM!5oI6AB5YiBhB6izxLZipIi=LtCr=m(xrj1NdMim8V&7_^x z;tU@AiR@<-sA7QK>9EuR?Zk@KJC`nZ%Uk79ZNKeZhsDuQhANK&`_Qw%?w6Tvu8{s?f zb;mQD2d=mQ^v*L!RQBK`R1W_D@wzku!22lZMuo!i2pJ0U5m?#B^AmMp9X5dAGn`HS{QCQsn^?`6R_Hu3m~=kU8c1NE@bLni0|#>I$VdKLyh< zs(z6huL$Mnjh7d@X=DM11m2%}g8v>5XUi&^^w>Z^calIrg#YVL`kxU{%>$*WyS#k5 z#c>PR7Ye{cCYBnpffWfL6_*PbLIjS71Pw%#s&Wi~z+#!&n~EFW=(urfq-V1$moe7a z6t{(n-&k8#@7&nf(6+U;w$|y~eC<3DIPDodoHhn0k9bLVyY9T%Y20=G5>&o_^p5q1 z14{W(*-%H|?qPri&gVgNt;$q%5D;mIU}7``g2j3E4dZ)}k?L?-q$7d_Z%(ub{_P$; zn!7h4!jlOiYun@5d?EF<+MN-?R9_yBz}T!z+e;jdz|^b^p9Avulm5v&XuBHKJ8Fcf z!Aib5g4(;iW)Hllnx{QD4-$p82z`NpX^EF##?*eiFw%D@yiSc@i+HULH|lnFhpU@d zBc;3^5Z8w~fAyF1CCIqj!%^Thrp~oo{&Td?GDhY9eAaT zr9Qqr`Hj(jhD&`oqSKG&-mW!veU?&xM&**ee-m#f$bHzGy~Cj9zZuc*xYNK7N4{fy z1onStd-|?=N9Okl=>1S1PUUle`kVn--M`s>hCt{E@;^FJ*y^e{$mMe&18=-zcwV*f zf%`Kuy{q;P!9b|>hXu#$PJin?GxLwbLkGm4AAb%{;BtQX+xaX;+dDql+U+D zr{NcBe0JH{>)Im#+=-90Yvc1R5ab|2-eX=*R<15^Hd|KR99j$UzTrSQ>5=08fEc)& z5wwuh0Fu5(Ea6~fU$(!os5~ucY3!-)?t#m1DyLvpTqlTl411LR2`@VE2pRgA<6$bH zy2?`!sOQC6B2kIduo3*RFX%%ly{1vzSyOU8&{rd9%BVaJt6EFMna&A6w}_&>uMc|5cx3Kb)>OlDWlD;rTG3oeV3cfYJdhCa50F&}B;f)Hjy&7_6w~5W%*>A;N?gVFNPWtjxzmjzlt+XZS z#%qVU4!Y*=WS!Gr7P!o!iV+D>-!dc$z9*scQVFFzq=C-zgIAM=3cy!sGt=&p4emDy z<%Uy^+#>xJZeY*M*a!oM5D{YUMmtZBs9(_?-l|%KDCF*}`W_-T`i*3sWQ{I7TSRG7 zkrN+xjwiUDP)pX96E^~4Dq6*&3KneOBl%Eut{{Eruq59DnOs38R?zv5GxZdAwnKF0 z5>#qM-o0-tgPtipuwRHz_F$wM(smTg6nep@r@Gj3JrjDjw9VLa)lsN5>nz1_V}0fc z%|MPh)zr%!U9jgkaa79*`-w?~Q79hdhGEFDzYZV|pDD2WB z1kc-+6?;vFE6`crNzrMPq=^>uTB3|=#e+IKqCR8LN5RCQ_7U51tt=Q>-t@H~{#!`s zxmH`a#9ApCDVI0IC~|g&OH~K0C8=3GTj`+i#4i-B$+cF!MmYXr5I+tV70)NBhmk;a@vSTRTxU zDt{Bw^dEq1VFo__Pi8RrNITN74<9fBr0 zZA}Ti2&=-2x*;9m9vYxW55M@xhDrFH(oa`&uNZKkA^@l}gP8ae@MQ*4+S<&B8*RKX zvhtXiRI2ACWAT586+rEKsyv0dR2`{MhfXMR;8CiKtcem*;pq)DWyHXb3zn4>S`n|H zY?DYSeo5k5C8*#mn22ZxMo=gat#OcsGhN6I!+ ztKK89Zqd?c&m?LG9fu5hQId~dM5TtFbVxBtw)WM@EPw*${Crexva(>wu+JK;zOxq7 zAznwrF8!`^lRJ&*P@_s1S*Rz$UblU9(2!LRXZGeqjW3^(QW}ZN)vBp*sC-5qaMQO+ zx+q(#eB z3Jsh4ec_m*_>t3wA2Ysva*YEW8bx@1!f4~>O>#HlP}>7xNM60)PuKq(Gp4xJ!kT+Z zftu*agD*4O!Tqr=^>b;xA9L6w11n-7-N8^(qdLcUdrLZlxgnc1~C&;Zg}KXz$*#*=6X;vGf8jarr2O^hh- zU_<-9O*xCMZ#8PFo@^dMQ+p+Gk2JkQtj|Bv#zCi)!K6;qm@+dH$8$?X{203uSJAB< zKyy@wapC+3PpoeFJhagsSfAr>tqxF`^n>;LYFRzNzb^~{3)Pr@E`{>R(IWqV!hcsp zBZD0-?Z4TN1x59nQj})f$1ttX98fse3#VKa4J}*RbFEL3M4WtfZ6}vUqd}yGmGZ_I z?m8;!?)IX^hn2ZF%n!`h+}f=6_6}ZvTmw1ba)y@6B9}M+oH1ylQLB$+Qd0_scGjLA zWXsT`Td_Ehtxv(N-iTCX_`HdKOoekB;9r%HdUHE7he*>Pj zU|2wLSEOT3afG;#i4CebiEJzTGC5ApaOU7;qUZ3O0mET_8o{OUYCrN(^iA}ml!aV| z#R#ullS5;~-oeY1%s3}#qVl1tArkJAF>;6n+Ns4Yc2{Kt`}Z_~o;nSL^CrbXE+cZ` zJJR3nvV-j&kyQ702KoK=`=+m?8*I-|yp{V#^ZEP8^;#&|9vuJ~$58SX#uYBNR=m0+z|YOT({MhSck$HL4efJRKZlry``n$@vLqR)^di z`!PRN9digHfONDu49gV7V#&S0s&7y}GS-NKjBm*f8)V0~R8*ISLX9Yf#pFUX4?&2t z49<+nWR#Th4WrLiL`7k(4v6gvj6$i6qQcz<;?{~Iwu6kw)RjYOtIEojhQ2%2lk-#3 z=c`76v)&PHBp(bODC2j@2G0%-X0++*=10&Bqa{|x#tby7_?P$?La&;14t!5i2N%Dy zPOyoEUqpFGtnUxG44+zNPn19X=;E$y|GjmU-7J@RL4{lrGsG9~U_S?&racSaZBBvp z9p;!i26u+{fRxXMPQg!w+Y`yEgD#lun!w|6>25yc-e99{Dv~Q!y~Gul<*7zjDMx+9 zYDCbeYpvC>VV2@0p`?o?!I0>3XQ{Pa8L}w9;3y$w`48&Ta`gS7<2Hi=U7csS6nkx) z##_vb6UF|5hrAW+J%0Nu=RQvAz#?#cNF?n505w!+vleurt8Efy2>BwYp^J%%$5KD< ztAW?D(psgUwdt^PLBT;s70$FMJ=`XTW67KoDI;@z?sR@Ifyn2x5R$l=@o@@Wt|>{% zn4KGFa{r+r5u!Xo#nuwvfW6z|+J&RcbX{ep@X{DvfciZy-gKhDerjKQWa~k_=ClE$ zHu^UL+*nq_Qmbo0?|O=f?J1Nrqv37|@>Uy?jcjxKs6VNb)5K;t3P$TR4C?y)+T;!G z_1ACpR5|G2a1}Q))rB#3HB(wM4bZukk#>Cuq;AR8Z05xdx8eVeY#joxsA`mZV3J zr^W6#9$jp|QNHDh2fkLB?8VmBWG<`gcly1Rq?FMAhWDmCKY2qDN%rAOvI4;r6QjEI z(;oUZ!9jm}w^_eHYHXs}U>1=l{)>}_UzwnS`qu+`G=MRH1(u2A*$1tW_E`6K2R8%qU_ zyQ6eoD@XZ5imYwa+)1Pps3aYeF?`rF49UBUw0?t;&3%v~xw&Wa6m-0n#BY=z5CwOb zsd6esD@UviMk3ox4_RC!={lxF>0p{p(?s{44YZx*vwe$W1Gcg~^42z|yZEcCt~OQ| z(w++0M_FT>mUMscu~Pc|G{Jy?%?7`DKqB(f?D9+8xB!Zu7{;C$7G(R2rLjFj#Hr6C z9;a>zfbYVy?kStoog6@T#jDL^0~iK1&eFjK1yzm@9)ybV`+WXDQtC{!VS#C^Qku;5 zPSFFGr{DoU5sh(M2+e?nZomh%V)4#VF`;5B8i2w-_*3QW95PC4_DcI=@IgRcpxic( z*Lgu2vwtjNTEiPo^MNjAX}S(;St$p}q>G|bWgFJ#z1Wthfhj~NMVrecmM&ks5*abmjN zfWSL+oCOkhoa?>~Ic1s^8C?hgIT*Z0f)?wn3bGqwFBN08w|R?Ka7rZ=aj^JP?YU-H zpGS9=Od+wCC4&2VHXrmu$GhoJ-s_I^(lnvYTzLu8gJC*4m z<1WJ&dr*Nu z^9W}^#}=zM2MQ^|T$v94Z?lObnSwX*3}4xw0`x@HwVl= zus0(PIhhf5GAoZbk-8uLk?k3W3l6+v8r6$GzO^d~E)>=UQ=ab$Y4ZD*9XCTTZ`T%p zkl+*kPaNd^er^c#zCJp^`_(R#&zk8kg0QOZVSh4kS2A%=qL2;<0BDE#(}YLjbGPI; zL|h@4{w0yH!pK~{gGVltm=5Rb;(JXdx;tWhH*P=zHsAjAg3@~)O@q3)(eFArykK|P zIEzY_&ND6@vG$`%Ym)#=HxRcjC*Fbq<>>s`)`vH58@GI&;^cAC4O?d#T zyHb7rrq|GVgH)C3l2W4+K~ZiR7|jQkuq9R1CRNQ)HZvCrl+d{-I^k2<^JN|JE(^F- zOQmB%REHIr1}*=Ccz-9+qNic7t{xZ>W<0*U$JjX_iB5cVa1*m zLOcW)v4E0W$=#9mcUFySicWq@P!?p5<_ng^_FP4_;yIgzB-=SwSnF&Y=_!!d+YQKx zmVbQYkJqB6M(AF$qzZGIP7z>B!Xup9w{hkfZ(5s3!6xv!I=ap*1PxgOd+j%8+Sne_Hq1 zB>o0pDtbK$LU5+kL#;zRF{b~e>*Q`0$ehS};ibIQZRVU;k_+t&W z`f-P9runEo5Oacpin0ze#qe8pE-2RtAE(}g#W$BjDbB%1bd{CIrkFFf)ZWm#v2lAHEsBlHLUS#upjZW4 za-dg4j@O|+j$EkWG~-h>#3-F#%D>jO@;wuzj1UudCX?glfgTXhk~Tk3An98MW+u(n z+ShtG$l(MZe|7oJ4dMI-5q)}jGq6qfA$4fpW=v+P$;wS&zAVK<2yXJ{vfOEY_1_Q7Gu`Bt8`CbFr^0oRMJ!8Rda|^Q9p-?#6-m)7~jQA3+ACfdT)H z!muf-hqnJ73Y*!fI!`1rG67f*Or4vx2{kocuyQ)sD5hSBAQVQz;FQw<%PA@S=-zyt z-G63iE64wjVNg`2G(){@z9HmQuw^0RoY?j)Q8?~hs$(2hV83HNS^@@0aY7s&SZo9A zeeyA*gqGo9#n3?osKVf)+$Q-SmQkTeEO0sx>EHNz89i%nAWUV7?0H0Vogyoo85)&*2LAi1?(=SM(9B`U* z*)9!!4&dC_%%eqg#AI|M3lt_7cv+Q=eC2gmnq+#-N|ym{Qy7~fewH=>Wp&Y(BUueG zQxyn@x*;13C^u~hk8DZ121)P{YuV^>+X!p|PM>SiR*?)Kl;ylW<;{9KPQl;uma@9p zf2z*ENU%X}ctiY^B6Qr(As~_U^E|qILqpcFhB;J{`aKVIolMz8Ysc_;E{SnQsaH(X zSOWVyn!($Mu89vuXWFeT+5M6&$q?-c7=A9;thHow_`zyAh?vjHu03`sdG-EjItT;p z{;Ol~aiE4*hC!Vd+%iyqN9z)G`m>l)%&|K=b{nZKI+ejyYcQsF-?;7|a97$oc zV!2Qlds<0PZF#V6#w2!0e(!R;nIk}v`(ic&X3F!z9`HJGzW0N3QPq!X@$@NtVN4ge z*6KLXd}JIJznh-+OwcyfE)^Xgc=n2I>$uC{>00Brzxx%Q z=!`b+01Tg1RkZN4A#XJGWQo@G9Nxa&CZToG6Sl{AbEd0M#l~;-$nIRxF#c#_!Owhe z6T44B5c8;+dNhlVcOU1yr8;*T?qtkG=>fM2FRMmZ(#RBjAt#ZhD;)Gl7nZu_r;yqu zPUw*%^$nBsnh;Mw5SL9b(64I%ZrD#NdC&g+T$0b znHjx8(bziHy|Z^725TaYvl-r=L9^GP*;=#RW~KeI2}t9EewuS@dtz#PKpGu573#-t zZ^CdjMtwW;6mZzcgvtecIP7{MOckDj97)`ty%6%<#0P96GUl}5()X(nUHsk9iBe@O zlI-jKe(h`8`+pRs7PoPAw)ii?)S;^XROf(@F2w`<5UUKB2q*xnKh#4MMS@{XLGCv= z*i?+YI&&FmQklEC9cS3XlI`L<>&!KYa?H+elA~mjn=!rWUe$VI{`mFuh5*D7w>;ge&JITW<5PxeF4dVgy*9bkLOD%9-x1T{rY?q;9;h_G~JLOPE#;#ghIYzB#@t5>AsC+5>QqzXHepx9Plmc7S zdh=9gkPi-L&*<56rHFoDAUo)i#&*5l>aJx3$uUe|PIMoAmsayGAVW*?Tlc>3ow(#j z)5%z$FGHM7slxb=X|ye`@<+H{b*eEkiScvml63WW;K2(v28Rje3tJwwFaX%>14!rR z&M^CMLnizR3D#O8xIAIL;Y=SEX_`}J1?HJZFW?RQ zJALY!2kV>TKft}_%bq#JXNtzcCIK8jI`?+iUciiE!{D=yu;Kb0vkt6qISC^cw+<^_ z9+mqEBv;0_v)%#lfqJkt@cyDk1o6HuWCbd@`Bw$jKTp4pA)4Ay_(%TXWvy8p!bi>y zjPXw5`r(W_i8PbuwOUj=vxo?I$?3=~#@j#V?FMycET5?Y%nM-dy=Lxdrjc|?9Kf_` z&MqQ6fF~rz*M?se2w+r1Q9RP9wreObtstfy!Fdd@DX>b^s7Y(Vgp!S;nrkI7BJCiA zP;p^%t5Xgc%y|@!9p>ZAu>@StGWHalq7Zu>|vrEGlLk%LK#TI=ld0~f)7l#W zAl^PVEU+y|#UZNzwymZ~I)V%SpZx5YK`1#((R;pznAF=Oegh=sg&<+PW|aK#(q^5o z%_HlBCq%)kE57}8OUcq**s)#%UHjc3aaJ0myj(}(8y}#L4f(QIeTZ&J$R*jgtY{%N zZpM6(;MxetNJ^Xw6a0?{zQ5Ho-M7x_f0q7wI~r~Lj&&bx7B+R`8$Rqv-Yo5F!;E?$ zS~`%O(7M-*pQ*{4`ulvNYDMo2e9=Lw)$Dr)9C+d3i!o^iiPgMUHo{t z%RH0(rUF&be^3Q{t@Hz}yo_J7*oZ|UJGB(cpg$#}AZ%=&u&DVLSk*7Mc7>+Necb94 zs7r(RmAT<>DT<-CDAK&!(0UXs?&?;);BS%dqb%S3!dH6RN`HxX5 zr_8Zam^U1BmYDoQlodPnsL9d|vO(px^>C$I?U zWC;F%Sm7ycbtq+;;gnVL*{Q7b?Cf2Czfa)0;889U2L=R?Cp0g`KJK4ZmY5zEd6s#@ zac;+&K86N*fGwz}pEF4iL?YGheF|+?j$HLTqHsf{>2Wb0199uF#W;M%nznk!OZd!Z zc>c7Q6MPzx-Rtv`pf}HBBqbXUc-L^AdlkOIKj)WG?-)^sSiNKXO%#0m z51=yl;u&mLTlIZoet+!6L43-_48FoI7efTaVl}B}&M4!GZgE{c9Eu8DdH7Kp(JZGB zJU8|sG3c3geD*PQz=S`_ zHtu*zB6vk$Ym_J8m46Jw)3!D*1 zz2Tmt%Bz$*(ou_1)s!oInW=VV%Ph(+EE(yq5ZDMr>C8V!uQL|!{otb+3t-e5Q1>7&WOWA2_vd~h~C zzNA?g1zBB`ElkYv`2vM$LomSDBVzgWC2cmldzp7*$|=NgW%6O5A^i?>N-NYv$<-_G zl=!gaq1`ykOC6amn|FIN9VQJpn%_1OQ3{Lu4~PdlC9&EVe%+<~{kRxv*7Gk3YHIrP zv(bQ#^oClP%e=T?k0La_hmBQ z$6{NwMEeh-!sedZd2hL77ofpsxNT*fo*b0nM5Wkd=2Phb8sW_8In*`xPUHdGDO!sM_NB2_A;v?avQ z$-M3jIB_Lb)+#LP({N+u8gYde>9LAlMMbEda9j;J)pF7d6h-)4RHZw4^e)s=p;^+( z=-)lb%e%5X$QxS)dW%7eEhH`DA|bAY0TNfYn4-3SUxUqrKiAj>nvN#0Ln1 zV3AE?o8q2~{m(!J?B(|XRI{5G8#UkU$G7p%a`zh}_|Jm*Gb~{FpCO(lu*_qrk>{G+ z*T<)Jrp(REfBU_^|HkW+TM~~OE&#y^Rf;kg54RSl-K5;0Wa9MRVkpzR8QBm|zxpVb$a=m)1&3YV!$?C0O_W`I?5dnVLJy!i?_tWTFNS(#Q_1-_vReB2Z#aYh^Gth+u;7`7UvbNwHfI}F}amXux-Z_Z7v5L37woZ z>>=w3)PlO7STC*N3fJE7B-u2Mi=b<_uRb{f#B&b zZo!EGq(P~k?taQ0@~m@_UH(yvQ^!CLjKm2{`uPH_-|Ma8()ZZEzb#yXzTkaC-zb#d z+V5=jdZZ_IAq>4e>wkw%O-!R{%eb624wQ$uZ=`g?muHvAW>L7t`0v?dv;GS=&KFi> z{{~iU|5{y2_!m~2`Wi7P8R~ZuN=RQ=d4~&pXXSSg5>dVk2JqY0%6NNh+g?LF+ow~K zkCY+268a}O{;pEAVx2bQXl!K3O%q0*2SsVJmI;yi7=!=YiR{!OwLtqVF0d58U z6ZVAYiAEw2BO)Mwj(0C?>vz(&JZmhLlLGI#m;#pc^7!ZmzQ~A@UO(gRW040E0ynY8 zFb}_Fq};KSe=I~!Pi#_p*-a>{L7iI>YT)4mBWjVBb%&L~Q_|0u0dmK@BKXI5N~_8} zHUw4LPQzoO<3u?pGS%hzyL6e&eCC$jHX}?=X#n_j+MoOHuItPSI^qPDd!>cWK$UA|_vGI1fNK;40Fk+t>is*hiF_hZc zeWnF^Qujt}(wQCn!~zAGF&V2z#wO(LyJamm#_PutTaFtCy%y_I8wds2@2M#xzlKi1 z?Z`XGwuIx0h|is*_&l{`G-r?ho*!VzYT^CGnBc#`82i5%Q`Y;sx={H<1l+XL%fY}v z#fryTmg$8Ke~dt|TS-Rp8ti#?;B5|H$u|<*wzB@E+zIh~8B9*j|11#Y-U3riSie4X zna%T*^~Q8Md83f~&BnkN8ElJPaR?8DrmW0XZBP%+8k-hSE^@7*9dX(!Hdgmf$~@=l z-4EwrxHE$*M`4F4zV8hyV5L;S6jpe{dP=l_4Z1AC3{4iTBJb1e+>fi+NvFPf^FA(d zIiDQXU@!&rZ$Seiar4I#3*|JI(0IE^OvEtQFncrC@mcnAMn0K71Hzc0Hk6K$(9}7h zyET=xVkTyFwc*?K-=vmI$FwGN9DK2q;_xSh#$g-Pf9aBlnqN+kx(qujBy&8t_W&YG zcXGfYV-8xywvuh(*ic-zSn`b*LIOSEp5#~!GTUOr0L%4WhLms@>y~(s9A*|#Ag&#} zTT%yp!a&B4b58x=9XAO}NOd)i@|gn$n|dLTEX1!rEyb0r}!NY{wZ zg+OSMmjtCo!L-3klBCDH!l7QrR4V;}Dt(8Bc(~>EkguSje1=UorkB_mqnVQi%osD7 zY;u^pAar=e?fl0Kia2&DZ=RBlHwc-Hl~&a5<3||7UZQGq?iaar#$w}z*DQ%({y==b zQ^XA=edAbw2GVnNh4~yZ`tx7Z z?EYFux;K%_-~6hE#l9-z|53v5Z&k7I*S_^X#G?PjTCAKr2or2*?&f(B9yF>KsAeB9 zu_LIWP~%Tvs1-}>=#nDG*SzLYDBX-)wUlU!}p(q2% z$IUfqG&fC2*69~!=XZ}V-;HX8uOjml9|NctVm!~~fTDf5bMsN@_5^_fVc4iO{G z8Gn1StPf*zcto$Wg4A)Du_6M=)nnc80f*dhwo>gDk=8 zS4YJQ4NLLCYEKKsp1PXkV_d^MS&;E1l=VV!Mb-YssQ1&H&XJbU)}mOuUOHCh!9Jx@y#60u%D&g&$o8wrs$q3D19;WZ#>YP}v81IdLld-=X?Ef2M z{qn#1g|B_Z6h5?l&t}85ttVX^5{Y&Q5RVg|Y-~(JORT3>IF0 zR(KtKnBq69BGJfg*8uqa@!g8|}!NgxGWCq1J-6=Xk zHe5)zvKKB+oy9R1W7;NRqD}2>MK=4hmJSkv-*IMokIa1jw&2QzQNYMaT7c)KjfyEl zAA%I)n1JB-w?&*DS#`$ae-p94j_UsxF&fc;j)|{u97$sx{-x?B%Y_32-YPL1E*&X)}ZC8@uzI=U(X`WK@BExVX=QUDo-K zvZ1}J7&WT<8u!Ofv&~%5t?<=X{z;gH-xpzT{~&C@VdS5LEh~NzmMCCipZXVJ zNWUGY{y|t-n$O<|yJ3%_I{B)k>0p3>sQzz}`Omv6JLSzCTMTuy7X=swC!r}~L&Arn znzT7zZsS?9n%qK}njDQf?G@J`L@IT=Blhtux8P66XA=J59m1`~hd1xey51PDQ0jmd zJ&W_r=}vmPv-zL*(^dhXssq7M+(_>0ePcK>JSd+6Lk$UJZ|v)fx!ZC;Lkui6HvU=K zfH`&rcZt&CZF`K?rL{-dJ`9{b^I0f+>l5!&{VB7_j}ofOpng0FPVAn7{b~YTBv|X` z45Gpfu|<175joQ<4y?Yo4m!E>9Ye{ZlnU5Huu3XSGnoa{&hMr4mk?ccinF@oRt|*| zw&fd!r$w77@Po(7gFlaSQkI!Tb3WZ@Ss1F{XHZ(r)??djJ22& z7ieL2P=AjoKYiwbek zWi0(k+c1&oIwIoW&2Xu}eWeAUFt)8vRF+X6cq^pA-NB+rv6l%MW)p;(q@Bdn>N#32 z-~q05X&Jh=OUpW}QTHi#nb+bLQ;vE)n(}?WO*>FXcG`_@KO=zy;t>l;o9ETjZdOOd z7Ld+ksc}pUpMY$$iwvhzt~D*!oa4O?GQ}SlL*_NUPYbu$+u73V8K`l5XrsK}( z*PEABtTxu_3Q1-2$pn-5azD>X-&PclPMfHdZpTvbl%x8QHo=j6@6MELPj!qw*p6gf z4cKJTx{%gl){V@UrE)uPto0+rP7SE4(LDXc<9;WAzB669JM6Gy+qP}nwr#7UO2mQv6Mdv99Rq%eJ`O<^o*G&jXNXS$VRKp!C!*# zi8poT`81>?t`5BcBBK_Ds zK9}UPR54F08*m)>%|{mTb!bv;lf5mfS`3|(v}u)%1?lCQSw;j&FW=0sBl)vZ>dRM_ zn=SZ>OviavS;e54*WyoZ^Fir>w3jbF_6EyhTHNKtDm8Rx?V`s9ju87>jZ|bck1ep@`Pb z(2B`A8am`ZKdyfK^X>jB7fI{Zr~VQf=Y0u9|8`j^ZDDI7=wfR6zaB1FS<4Pd4EbY_ z>vRL1i~UETKXK4Eupx`DOHvkT&@l<&;r^wef>N3kSY9@C?7Cyg0WaDmrK?4fKH_-r zf~9Z#dNKI1#q*E4zWjbt1&i;dXY3TmBBvQ&O#@fcW%~V;AMYnZH-@p$uif%sX9%G5 z^FH5nrLi;uT04r3HOt?P3`RzagXxjCCno{3y7lyS1_Jy^9br`Vf-g8uk8>{vFdK)c|oonWcl)$@<{Pu%ihXgo)h!|?5;h=ppaUaZ%k3^k(CMsw+ ztV}EoHTVt_k~30^CUpv|6WUw9(&J%OQCO!QbsI(4sV~W&XNo^Yof_mv&4BnRX!X#< zU};e>#&xJELLsu222%n2>Rw=&F8&$vw(-g0mphw9EZGVIcnxdzmbRsg(jOJjxM&bM ztyxZGuv1m@H0^y({tNR`8Zv>>>zVq&1ghSB9Yw`8_Mv>J8~)do`^q;aO@Vxg%YAEi zx{;E+^+#-09FMhXn+K&zhZeyE5N_deQl*BLuJ^j1a4W95B>+o1qvHeg%n3 z1kt$#U2{$bUDH-VM!duI0MBIDvn^dTb11SFtMr@LKA68?RmY9G3~cqS?|=aD@eUj) zuslH|S}}uP!Z-+DQW5RKiP)J1XL{Pb9sj*{$wqs)?z9!EiY3F`AEC#6yBjk=tA-g%O+|PVj~^XvkaTy_0H*WJ%?oJ*~Gv5h}xw`j77V>mX}Pmq@jzb ziG#Mam8{D)FN=YZgWtbf6UdgkRaI=d!0F>XXXuhS7lG}8&Ns~+v)$4=^VUg-tdX9{ z&V2{4=?}eVqDKU49xWC5(4^E{krK9vQjZK^e{_o3M-cpkL)Q-u@)fq^TinM!13gw? z3|HeA7EDg{x1Li!ELDRpTD!Xq==D{Yp@9<>%URwkQP^d{QC?{7*Qw#lw|q@{K9zjM z%cd(awO;bRbNVj%w#u!!xp7|srg|0ehTF9r^OVJqSU zlo0F}u9p0F*!mYf$UE8@{fn)xP0W~NA3rkSv&6}ddj%l2EF!$#(hQUA2s?1YKRVbl(DgzqoY@PhI6pcr8)B5j@7 zRbBJ~iu>NRJJaNjS2jT1z|IAm>b~ zadQNdmc2>EC`nO$H6YyXC!aXk(f9yu0nMjNl)=*yUSG2f0%wMgPvlVdw7@N=4uHqG zo>bAq zz}Up`f8PmF)cTqLq4UfwR_dr~mb&*qgF)4kR4-hq?ga`X#g_`ekao(rg}4qoldgn+ zjtK)lb;E6oVSLSp&51QxSAN?~reAtDwY*)w19vmkQ#JdC@Q%9g8$m`NUV)C`V&bZz zkFJOpPSEyA@-gn&n~%$f#*Ej@hkBj!shA4TI>0cm_%jc2niIWKig6YAk5UDM4PlXa(GzGKbE!clUSgJupHCeX4 zkA6nOrK}9u5l9l}Inxo*jvD2dui9ip4vvy|>fVItNxB5+Pa_sF$ocPm7TABPhiDu$ZfmkusHu<2< zD>7EbGsa9Y__bvitRedaO?Z{Nu#oy=W&1JE2*IS|!HoH+B=LBmMswofXF2dY$`kVf zN3H9zH9}XN3-BU`$WGZFXnj&Bi1i+7g@2vTxRL(@;z=`)$}*X2?1SYY)-pzz)*(5{ z)p1kAC2-LGs*7SIqz|P@1(&+>jmkR7*yx7S=HqoYm{xAXK>~W>UT4<72f}5giXQFP zDDdjPbFlwsApF;GMrA_{O9lRO!`nuk)w`)%pu$E;I)J2JwJbQ7#Kwj>C|aIUk#DQ`IAz4EjrR`4RJg=&~mgf_c%7DtTAh!ad1Cyx|wSi7C9D7V)1xn`r~nu?OKM8!(d zcn$n=;86`mA7i@)U}xTec&;qLZ?aPUP4`&MdVaK519Fs6zS_mM(s3x}^}(Qjjd}eu zVxvSMci+LsD|5+5tqV!yM7Qk@QL;d;AbK{R9I>bS2Iiz9q_x-!@a2=)na{K2vePoWWd|BkG#AAm_#RD%MrrFWDZc?{HdTd9`3~t-qN%H zq@JF6AYB|;sOyQtIp$}g5+e(#xiYP4y^dvY9&fjJ$#JU0$%>nnC7Zc^l9!;U*(P=X z5C>^K>~PN&Nn|OVg`|&!kaX6R!>o{d_yem% zMO;RFSqTO}&xHE2xmC)AZfPiQ+1a=JLzd++wP&LU!m-f+=0Nc0i{=20viz{~oFPfaY1Ej4unb^s<{WDBb3x z5jV>~>EyBR_L9qoGd?9eI1T)5;P;JF`n>|)ZXW9e_z1&GN&e9L>Ym=e15O1Y4JzeV zq0a&P?HlXgXC7x~YZDP$V+#XYVFPD_e>6_cjwS{+|3IKb)ioz174%OV+cew8J3%36 zAevvyG=h>8!Me=_XfR2r7A446wK9$8v&L+sX@VWQ!Cb@Ha+6QnflQO^l$?9@I1c@4 zK34;1Ti6-bUG~^rPL8!Yv)_!kZZqn(o*y1xeGbzv*WPX}ANhcfx^2Mdwi6;Gz!1`t z97uoFL3z6?^hmk?{;gJ84U`HDSC}F(Do!DvL$#l&N*|~J20mFc!~teuygaU~Pe8S& z0%nkIN;XbN}lF!U|54us-;wd*& zRWoK-XKY$7)x&6TUdj6RZl3iFQ-hS?eM$w%VU&eN4Xn$>QH=(b8Ioi=m>WEsmUIfM z*ZPFC83oT+`cAdjZ#Ot5o$)ghQ$32l`hpd1%U`pGnLuUT5+f}5({fR8q4ol@Rz?8@ zeyU>*VqNy^D>2>hZtALUxIv*DhOmFVRW8o}C%c#P1;RPB|O%tNfp<(G1U#dHZ!Wgh7KExo+i}AU&aqo>RLO1;^iPR;`;J+=+$>Y zR;iKGl9}?%J^4wJnCedFtkg(vCIuF*8JH7T47<`_yELYosx>HbWzE0bl-r>>;{b61 zJu?K~<2xQR!;sJuuRFt}nyL4ou&PRrgpwnyC@c2>VS((#dxc?IPyB*Lkfqjp%EZ&T zxmY@s5A>4{pIQnDMv!TfBa2ROkW)=p!>AB4}FF1wocYB6)#VL0?AaXT%2t9wa<5 zv!j27h&I@~GUjJ(YXm%Mc|K(SF7I7>zz?FeE?j9fq;A}%_&HUK2oXAoMgv@fq?q(`d8RY=P0^xK0#vO+92oHOSE{;6G-{P=9-be{R8La&mCeZQJ7# zqpGf4e9omTLQ5mq@?x?=3e%o||cQ#a+VfZy7Q3-LF?=^|GCJE_V7 zjiPF+5XJ={>nP|-p6UJ)mvy;k`&6GD5oHcir@{qxK;9ueG|-a_z?cgqa40V_zxu~ zxE%>qC@J-(UxRj|-!5CfSy6t&9dH7!)*;5gw~)b0R6BvAP3H$oH^43nx;5aKoQm$j z=rIRNzjqsT@b!V2bfA1Al-1r=W=fAHc;yY5YMUhqv+ruzE(KfX_3h%$5xQ{QHs~?| zb(D0@EmS1C5$1Jq$>sV}aRkRX%Ln;E*P7zjrl}A=7iNh!8wQNr6u9qE99iRoJ|scl z1N`(Kx9z%uF+df*m~p;eGkv!I-|X{`J&4l3rXQ8luk?fbxj{U^x>i7!&5yMYOMpUn zBd=M^DpO`56keYo=2I=vbSzk_#l{w#yBoM|vQLvGJ>A_I+4tM)kNWO^pew4~kO zj7B zCn}(EEo$Uz;X^|_XMun<#t4cU*Xv{vT4+%V1sKSV+8V*2TCcB&0}c_0uasD$Md!2$ zFu4(Mg5Xs3py3Z=AOCcI3j*+u8bzzSDh zmof=Y6EWJP{;iy+Fjm__D|G9axapF$qbY7Q)~XaPvb^6T4WOyhp4w>5u4)#!jQOtU z+TsaTlK?}ja+^-R%!zi2W4Z(=)9Hoo+b_ zTjWvaX0!{VWfgvmQ3Y0Wx^NVVX^;o zH4`ZXv+;qNT@<`ZKb2g-Tujx+p?FDN)wrY{FDBEt5k8wz7mONDN~e-2t$9|8=UTAd zLOjTkhOEuSL14~#N>&!Oh;6iBFWDf93QX4hjx|=Zn<7HlSE>+~>D(B&)@wEIaL1y^ z=|M|e6TLa>>nZvD==~x;mRNX8&73tD9+=rS@)O9_#vaH25Q10ah+@^Z;Lo>*X|+T# z*&MW@n&k4%Qs|zG@A)E*#Qdbl5?;VhP(UH(XTLrHSNhIwU}1Py)R97n^twDJK(5;m zhM;8SdG%N^i})G>?UJs)9-?NV>n~>u%#n+j1s<`jvjbfDwmf>#EyVe6pP1VLNI^@# zWM~>VT>GPWB$r2IYW8@oPn2u54B%9=UuudVxauGuFxqE=-V3$)q`K%QLd=bKf$W(u z99DWAMsxb6oG@%s?6x7jxOY%F((|xOi%D7&@gv`RZWY4xyaG0#^y>p?P@H)os|@ceWTm9CLDs!Ab>ydyFUuQVF`Ia+qLCH zwB`u!iY?Bl2sH5x5w04r?4w`16DI5x(+v?1a&KGyA-o1TJu1mwg7Xgfxx@-4`}}jL zgR13_bvp*0A5Ir$y-c2|)z$5FqtL?b*10Hsk?1%N8uTKb8dtuIFJFLxm*sG{ zW${4bY*t{Em)AqN(Hdu?+)y-FG*4M}mFyw~^gBzzJ8bK9g4y9#Wteq|XkH#QUS?9}M9Nky8)?lOBTXH%qj2sG-#j>JCP~n=18J{Ff)ofKG z2@ExE!?~_zb!#UQEu%)Q!ynp=^1a!-!_w>}EnPOt$yEZ$xUhGh=h9>9FJ~UU$&dFb zyDpICpJWzyJC>MB_BuoL{_oAPh0PQVS~q8n>zlS>h;I4KWqC28T&DXghl?9!xMBKtRhme6WgK`%~!DMR8BSyU+oLaojPbM`VK@R3-cC%YlA>0> z1`^!0xc-%&q|L4rH!DNb9I0b$v;MAS0~+GEm2^KfCu!7`SUFS!(zJtZzJ%K7GOt5FD&(Pi55HcJ`nA-7Q* ziyVzlp4Uskd+FZ!6<_sU-Rb)dHXnq~+a&SR)M{X*rCSW2>(3Y7RdD+hy(FUb3Uaw@ zx>qJ)*EclcO~Pkz%%+m1dNPNES~Sc*7^8JZhDZ-cW-&=0N3>A}5b~Nq9_g(kEVbDA zt^uusF6;+RahxIksm9kj!HshB-j2noPtfPmQb_i*2P3R2Z$|B1v0lZ+UQqzu zQg>!~GMd{ot4#)R%NLwFdF@fQ(o7E%q)$7fPsIJ9q~-)>+yGifvJEd|ln+757L3F^ zqdNb&5tQaW;)~vHX(UlOD!@#D1K=D9YR@?$R@}DKbvWB*lyM1}8sR(A&GotEg8Vow zLfvUPws?C0#UX&?bQSw4`dr}#6qQ`c`1L0?+Ddwe^(s*Sk8Nsx4tjOS0$0c_Xq1*o zyO3!8elMK>cQ4;`(r&7a0kiMZFl#HF1x93jD>9AA$;!BSTZxazGfRmE_96-IkFyh(qR?ni42sFA_%+)v)Q%!Ekvby>{C9AU7MTbsDeH@(SZLf+e zFwgo|=^ZRYXmK{>5*#I`1iSpCAy86@V|=+O1*uYI7;~ImoYsa#ix+8`;rXtA2e_}% zZjH(pz-@j_T}l62fcwY%{lCVpe_@*$vM=jOH7PY7Au&onsIau4OGU%a00`mYo-2ib zo?V$_li)<-X*7BMO2&A&x!@ zi?paZ4Q7^9lA%Rvu`%mo+s%?@00(OibC`mI&K#+%7Yn3Nl8jFuGP=xOl8pxvqT$G# zcs>;3eng!BxDCe`D;i~i%bd>4Quv+oKDH1Ys`C=!VXD$YV|i`R$6U#TT3DvacQx%T zL-#xPQZp{GV?rh`K+B#+l#XgOzQGxD>Sq~3F0#nh@`6pEN1%j*?TA-v4Nui2b}U*D zdXjhgh^dkWXT<#|lI*bqpo(42T=EV)yl`T%#q{@|>cu}{=Ncq+`iV4!8nZeb#&N3& zHe8t(PRY}Ix0`c!tx8(O$l<`r88KsPi$7ExX<5WzuHgxYkGO9~DzA-^GipopV|7YY zS*##u&tYXcNcol1hqA+*j+7lV)br4ltMhk}B8t^Tbp_vW-W6*CLMRR0N#dZ6j(%S7ik`iA9|m`b>&#=Gxj>QfXCwt&-Mc zCo|$#XUCuqa6|CdI!~kv9qsh=wEZkGabK|Xnv>avn zYS_wG(X}FI=9V)Z*{Dc9B}L+`$gUN^h}|E#o|+J{_wn&_#`r{@tIO)sp3=qG0*-R- zG2Ver7VjQoW`(K{vJt!`A3$caK)uwxE?q-oHI)lT1fpjKb&AgbG&8x^I zsPftTeo>4Z`G#lvy`Y<|SmciX1>W%m1(=VJc!wkR_#{W7w@Utp!vRb0r-@6Xq7YXl z(<5w_3W`Ve;7J%BosMNTerQE$;s=cnfu%q42To46KRtl<4wsOT+HJ(&ZkjYT_CaUj zyUvY3Mz_ev9x$H5k2;z>>T^`5P0}-TgUcslTh+QHt%L)&VX~CL*X9#8`U%2HMl-Z7 zOqvz43Ve9qz|Fx;ouY+t!z-XtJPB=oO{A_e6-Gojzh@L=4?M?ep?4q}Zof!hg+;p~ z1WMmui^se>u=gGC1LvQ&W=|p=)C@-YVLTZJXN=T)xIRqzTvEA@kiSi4;NET!z0G29 zmekGVe=b4e7>vsxA{W%-BmYhyw1bcT+&y8D4QOf_ebU(hT~QlI;%0P&LN^%;Z1OCp}+hg2}HiIo!`1nsVZCE z_?Q^ET?%>gNo+br@Y5mr&;-eH2f>S~$=*(KjF_?cM2vX<4;l*s=YGoL7a;xo+713K z=k34x;s4;Vto^lXO;?)hU)1Wre>#(T*$s%+1Qh@ifJoVXWyS4Ha%RhK+iiOOl8Pzp zT0m{0C1r4YDHDCX{5-(y!#Y5@AVq@&26&-6Av5h`qApEeB+4|`Bu(Zpl0VYv+kI(U zt_N2{0(5Hj3u{+Hk|5umwUKir$OcyQE(f|!9nn_f?4)Tv-c?+2Qwv$wGpX+hTXqZo zD0=x4V{d#vok+(U@0GUdtpDP%G!S6>LOZl*J zyTM=FddRN{!{6F4$Qw92n>gD3b@<%Yz{ce3`|Ia_0et-bB-jJCETqsD8080SGFv3k;5^bHbWDY;wcObf+Y)Tz}o1ZqG#p&rmQ!z>~!X$FNE6nhUx zx2(<2x(O*DkzKg9s~8SfN|D?{13m=P|2U~QxjB=oR4{jp#jL)=Y($p&Ef;A6qmna~xtHQ*ON_ZC?2$XCKln&?UBk?W$}<&*rbMk*t= zYF6{6k3g-g=t&uOoI(;yH6R=zV#rfGk)OjA^3;oyzi^}!di?IGI*i`;)K)lKOY3SP zq-e0lolievLylrzX_8$$8Vg~+d!ssC!R)i;+>6|R#4I$0EYZFbRWOxy+b_|tTehcu z5jScaqN_{Jx}Gd}8y5&h%{go^4I_n`gu~sV1n99^J?QR{`94)`Xt24zH6P3$5?&3N2aqU?Mec(w}g;{n3ux}FD0khO2&2Vf7+3_g{ zU0nzMaw}IoyVfq_5q>z)o>O3KUH3J<{TafwtE5CO=S<&%f=B6cbiK$yN5GaV_)sm5 zR|X5fy1QgTa;TO(|LcSG)u93}f2rnT&Z63`e$|F&D#vJ|dOIn*iSxULVB4 zPrX-)5NYlKRg<-U-o=;&|NR_XX*aAZ?_~T!ky*svlp-7fYvRz;{YoM4q{pY4vB zEMr&A*i6nKBlp!QJhebupC>nRz=I|=&>%wi^@k`?h1Z}@nBZex5Hhat9y%^*vBUO% zDBaX`-i8gnLi+xzTKU^bMbX6Rf4V6BQ`@erVTbsal2oIxJAv?ccXcrgrPx(-DL;l3 zwj>mi7N|mEZ;XDuo4HTh$!z*5%X?b50Q0^_>?@Mj4TQ(C?|~*iGVUiI@v=IBo1?fa z%*pc|Fsvwu9Y_KRB`tPGF&A017wjVmC|Z`>yaC$p)7}P{K3lF4t>@1u0Oh%h=EAMy z^c;HA${!{}&Rn8%$&G6zXY%5;mTiq)eehIC4;Z^FGlknLt>-u2-*v;shD^r@WIAc7 z=T_JXD)!|u9@`p+zJb4Io;qqcNl)$NYgB0EnmGp@v9IGdl4^9;QKI#EGid4`|8!*c=fG=F?83QV>vh-dZHVn9%OVW-<}ST_yP(yrSc ze@naDX68J$c=G4gKw|CyFe-k{D<3$b$3>?`h zNNLpSD4hEsCvzMaRVbb3M!A#ekK3;bKVfeuxxK2PpS(&4dcfJiIZhDy&2#KR^3pb0 z)=;w$#`rn-TM^lD{x@rQ_r!uJ1|f$|ZJ>?><)>`J--!nWz>)ZO3C0nVKw1OB{asO# z>Cv18@zS#oj{k$iFb6jklJpg%ieI?P_;=;>KZ8`o(fTh1h0?z`eFVuK0{WJ3Vnn721A_!EYhY=3T( z09=?CjLr)n(F98Cbz5smQ$$u?b?W-!G%cN2JjUqs(IJjpFe4}m2QWS&ONXcTmZ9IP z&f>%}trgfCn~c6!wzH*=m@mO%cs7C9Jqz_W3G>(w+mt`^!l`m|!Egkdg+~=@q7YEx zHXW&>bpC;|iVuOplf}+c0<;!8_)$SM>zJT3I60&WYusAhlm8H3uJZ|5B2;_I0eHb2 zi_4GSQ^5%NiD#axl`m^e+h+m6gxk1eC2h8!NE`aerg{L%ijc@#np0KO9w_D_CPvw? zh7IL0B`rp}L8j>=7879ZjJmr;A{5`xU8t9Is>VUW-c%a;x?q`MxqFQ)GU=<+{TU*x z)J;=9vKZ(iG9c_kU|0`pXRyKgo-8(UCYVjc$Tpq%ikxe9x*d{zQBcV8E(5^bQiCQU}rZ8~1Iwx616$!itQg_(^#4BmXvQ+UM8&P@$pZvmO-*(I9gIZOL0P<;%V)iY8=i0(nV{!E0$$NHd6$^6~qUK`as2q+zPJK-l)q{J4x$5uU zpi;%mN+U&=3xHuNJ6uU-w(Z6sN3Whj#GT#0H;q3pNEzb3Hs_Rx-@Xz5KcoB~6-9-b zh7z{Qmxrsg`4O|!&lrB@9tcx(dLq(6bO`WaLP-B%Q}NtF49p|?Ii80*_}xl}C1Iq; zX3>fp6+QjY1l3IME0NCtm6N)pDoc-xbJM~ivt`Acu;UA_spm^;18EP5Sk}j%3>PlW>#f%_}q#6E{cD5QSoV zIH~rQM>x4_45&^w0k&@R$lz(B=)fBX>?4VfCxFG|h)9dY7*5oJ#8F+QTv0J)sl%xY z!|u#k$ihxG!@=J8LJo|DUS}+($ZA`__xd3EG;^b3hWa`lQEm&k)uh5f@c3(YBJQhU$H-zs^TW(SeUkj{0%jR+ zPS?S6UE=0-cWWU4;g8&NAuq>c=XGg693`2%v1+ph4vAIIgl$A_;W7?|mC^GS$b-r6 zgr@0GR$98+0q1h7zds0DuYybl(V?uFHssz6l^fzyJEjdW8o`}x*q+z&3|nq|ET!-6 zxbM}GS)NObmbX_>kn+^5W5kcMWx$-3Bf|x=DTsGS05}3&f@_lGBGP?}rZzeJIJDmb zb5^?+ad#Cq5{;s(s=D*fu-^hX>2_=H5>_V%&{e?Zbvxr0?P)>HEkV%37Pe0P`W@mVI?artot2!eil&JAF@P70EG^VH~(UC+x# zvYUg^1@B56Qy`)mt5gTO+}44-q;SW>BY%QdLuaLfCD|bY!`llBl0)_mn?heaq(KII zXBWM1lXtq04E2Okeh>Q1JlMpf{IupDG=-u)fCdw(iz5}TXm3{Uxi$`vzapV!QZ679 z^J|q*((#DzRCgEdAMnVXPbv#7kL|Z7Z$6XO-I3nd;d>b~k*fE9%O5z>#P2{Cnex^m z7@!$z9<63;RwmQ-9S48P&y$juo_~927wY6pansM#?EhmOV(ZS2dTq)h9NEO$EFQ?4 zuF@u?6s1)Vn{Q$P=(tLs*wi3-x}R@ol>O69<;Bn+pKx*utBgbhi@PUTbSBY)Zi``2!$_uf^9z*0CKn zW{W*gXxO1a`HHW2BXxgSh_!jT*kl_j|(Aa~XnQsc~=?6&g z-lIXYS@~~h4Y6H3+L#QI!N3kf8Z$86sL4{K=h`R4Iw2X`AAyV^sqraFL3h>7UZByf zBRn+JSK`RIaYjyw5qCdQGf4=Qo;0RpD|_f|{z|2@-R2BuqTL3)I-%IsNzu4enKnmrBux z=Rfp=M1SJ*>*TZ~a!0z`Qd8B-A>&XSbUJupU>`|CZOB}-OSqdcB57u_lV!FeBvZhk z*-eSeT^27TDE4N~S;yTdrjJ!*=$f?`t-sU=(!~i65!RUKluIBm!J-zNj5tWig7z;3H~;;ctBqKKm`#M9fSAuEQ?l+ zmBdmGp3MB#t{Dr%AiD2QzEOAC8CXPd>D9wOn@&?aO@|Llmv}?p4r)?+W!5EgzY|F) z=2_cGp&P}Upqr)Wrx>RgrkJM0+Kcs;cblvF8GSeHFvd28iy$IeqYvrd~;E)V_qlCs1X8HONcwj;?-(<9C4j<3NAjIG)- zNiUbui~|EDyR~qSrA3pf*h>X6EXd1Z+<-Syci3WmNDwnz9TC0V{gWBjepv`01`~~u zgrSO_sV|^Edxt4Gacdb>5M%9L*}Emhp{4FB`wjRw;8fFhk|9;5i~`^7f%Xzl-4vhx zL+=*2pmA7M18-yT@D%ghevGAGMGLne+b!aTGJ#n$Qh7|b z$sNLDd<{GanD^Tchc~8slvuhq;VuGHDnG$95A!|aHcnMStjlFkjS{1HV}XMuU+zr z@4GuWtoDi3f*MTyAPHy*msy&YR1Fo4tEH=|0$M)iRFiBV9%{WV36ntQ)bc8U^@ITg zFi1o8fmgI06s2_`8R`EiSig}4)zn1z_U#4#@0PRwm+<|^-?l&l(p`JOzgB08@)<#gIfzC)ma_Y2Jf5rqzvUAv(J~6M-ISZKQ-4FrkPjz8nC=rH@ajuSpO_ zZ4U$KUnpUbmMZPRGHUB=txb=mf~{uSYed}COCk8e_R zAmm6{AY0vRIPNH0j@vBl7yVg#YqIQDXr<3lmYr5&$*_LM{a8;_-!-q7WZz&r4~3yS zs}6j(w~y>lcHmTQi5A{6VEJ4P2{x6L`4pJ=Ty`(7nZCPyXivNg+Pr*Uc$@86XhI(0 zD?P|kzMTrYT(cbNDqiwa;o4Nl^Hb{otQ5U0ZP6>4smeh9;7fmk{ZOj;q$BeU|7_gx zODFIBEIr^^c$Ti14zLW98{ zUD&h3S3p05g9C#Ej5n4wd5k?Y+FBJ`Sy*md*esuJ)K=u!NQD>a;@kGLw~D*tA3zVS z`sDQR=Nb|Wud<>?fxQA>TzzcwS2H0OLxvDB=uwMn3X~L4&8n>*K)!wLlwH=xSO#x7iCgNAt=$wu}EA7uvh*5%yl=043ylYF+1N$QZ@c=fDtSburSiuHOJwyao5tcq^l zMx0WdU7S?*W>sSmJxrKA?;az!U}``>pR7ed8ZL+MsSw!!`umT;;RWo4`+I0bGC9jO z-)S`1CoqZ5j}P(Qf}Y9i#ii} z9;iUCeK(U{P+dWm#Eb$4uJun6d9%93;)%iWJ4Q(b}(wBlYjK z^?xJzSvrNDcm;l0DRd}rEBZv{jNtUB+xZyBEETD#zxTWgm@Lcr-9>)#dBS6gRTlZa zo`UG0J;NOa_;kV_*PlkZh_SgK5v&T08mv3j%KXB~g$p85xcGq!^>ob4ZB~ZwVOhzF zz9)jzH>j908U<1sX$5LxRvkh`Y(FrC9swpaz%o;O2`*=kKS&gZVU|mY+m92c)x5@6 zES+o|wM%B6A)0Ir>^r+NXZmsh`;PRX#k>}ZW!7c604{2piB2eS+W+j~F~^R+J6S?b z<2y1B%@#8PrsM?0UskW6(Yc&0XmLNZ$yOx&j23#Cxi&jn)LkwupatFwgVBJe6(CjJ z;0E3o%L`)m+asBici0S1Q$_sXR^%Pq1FS%$VYCa1 zN&_2sm0echyx8I>h4jVifYlDoFdM~OBI<(H1cR)oZ>=ucfpVwIeWHsoOtyW8&Mk^8 zRt4J0P?7(NO}%ssbz}5IwT9MB?@;9t@8$1GAAw;F@w-m zmf(y~WN99`)-xIv)+!-Bl4#M)$Ft?EP4a>kDxhj}hIPU~1Nv#SHoGbb?F*z~5kvN~ zq-!n~YMx#&a>unouC?0BP1JUOx=T$|#(D>T>Zi|YN*%iRSEk6gmU!J5dIh~Si>jWu zt5%}SCnUW}QiA;XgR)`8+15%awdj)M;+9lNK?nClxup8E1iJY2=3hA*)=*%Af?_2_ zN%h`Yd(n_cl0mXwS6Dt?BwPT?nXg)XW0aFj|EccWQov-3IHe(7BE!P<$a-dNV_|Fl z0Hr$KLnYgpVX5L!HPO+svT;;dW|2w06IaAO#G`2CbZHB}uRC5f#|BSs8wuV@IPPr9 zQQ~$F-ul2IW;hW@03JOyq0cOHh~#hgg8c5=EzS_IMkYVg>mrkK*4&w!?eyXl;tesN*!gi$SapE7R! z_&F2O9gZ%R)r+ND86)&Y1Z>G!s6BMyy!@dJ7zCvA2zK6U(-s9NLv)~)X8B9#qd#vx z^Yc*=j7d)Rj7_p19(EbGYOh$e@Uy^)TvmhgN6%S%MKUFTCNeWA$;SB5#@v+Mm^lLM zRVZN*Q~!4%{-4x|-SR(*GWtPjAUvJTG_)?L!3`KB=2A_qCyOmiD${SPIr2fgT3K6F zr6L8aa{MS>64a*cv5mo|W`|1sTgb|o3#h#XjO-Fyl^|JjNgY;+qOw{cvbI0sC4d^#)Af5Uf=Upgzy;*1 ztg7fq+aS3c5{50Z^G4lZ;j@xc{GxQ41Xn?Zdv{6bL-nvi7Hip!t6q5}Pu&wlfgFjv z7y7N`#BO+imhydr3vGdu93daMLKy0NE%8iD6svpe&vS1nelFMQCc)}>pH@l|_DtU7 z5=x-FuEC@D9r=RqYFtl^NTJw3Qny3d=filxe?U=d>TYT*KEzgF1f;k{;)I_f^cWGB zD+9q2kM_l*?ZnXFz~8*7#fM7@#Y!}ZeZ%e?>w=}GXsgSdI)R4J)46uVtT6=?d&ut= z}!eEWVZ~ncW66VB%SG2?Cm25GO0J8GNX1ddK^;bSKIV+TMrWA zUi7G9=7f?qr?S}&@lw8hQ~AU=**2woCa>}(qw}Nlydth-x>FVj#Lm9)5|1BVKsjO& zeVnBiz*JT`VQ458U5cd&r^Xff=Zr~}pb16@SK1{gWpJ;p^7>uS!e5WmlT0*xO)k&t@tgH!bmYU&9DYMrZY@Y=DD8~lx4KdCpyf_n@+yQrV{ zFH^suR9;!7On$u10AKDfAk^aT5ZzO|4yhgxZaWm-ka~UZ?%;OQ)qFipPZ(p5TiY<3 zeM=&J8WKZP;Nm}KGC1XbLKx^1ER7A%NNu-=c!SWoDw^$iMq!UuBH8bd|43GO!pQ~K zmK^cx{zDEP$A=F|_mdwv zYO{ly?LeqT?cNv!0$ype_>cRTmgoY+Ir6?;@lc+<1`WdYO_)cEmWfOw+Qef*ja%`fhkiNL_LaD+(S5dFo?g#j{|Dyk!CzcJq8 z4nzJk)8j|tyiZ(uA7Y8=X@Y3y9O7Z9y5wS!t{-2TLHdc)6mvu%V{!4E!Jxm)$}Q56 z9O3_<>mArL-4=A+N~K~{Y}>YN+qP}nHon-lZQH2WHY+D{b?>v+URU>j7%#^CD15oK zpD}3iVv+K*?AW$^d`2JqP%Fm849Oi3;FS@sm}*H;kAj5$)`SF&s$Hv~l-tPu*QW2L z@M;{~)<+3(*ro91V<;i0C?R60{s*Qp{+Tg6#%p$0Fznp)^@Sy|qk?VZ=spTz8?`YL zkAYcSedfA`^!BYXr=mu$oqzPGF_8*Q?n6q^&qISzw)r?TFj{yQ*huy?Y1tN;lW=c+p=`xes$PF~Z9;v@*@!SyaOcxaS z7Ao7kN#Z$;$S*=w(hCxP3W#ZHvMDUVwU|lxO7~YHCztf0aZN^c$3wK`r(zY%z`JNu zxjM>ore$XGc?uTxjGk5j$%SD#bsOmgt>uBUDZe$3s)EfFM<)lX6)l%3-`dT1$HxBj zqe(80Kla~yRx~4XGi+Ce%?|8LG&psV8H)A`ZH2hiX~*^L53nX!9g@$fC9Mit%`uB- zBPaJ~v&aRjwFBz>p)Ez`=Jx@NzhxacypgB#Zr>M}j=f3gY%L^r(OB9mf4$bqn@gMg zTKko$gjmlkmI`_xNw^$_d2U2$F(}x|k|(TDCt58M+lWta$wtL#UvbfYY|MIXtMJD}$+uAWB9d~cM9!&Q@)+3&OEo=?FC3#Dk{*ika zC(}_KFQeAjIL0kKm(_tk&YfEjA!oxZs#|{Q37ftE=kz6|2^obyvv-!ABc%76{9KSP zG@1HwT?*~K6Z=RbGMuu@qvW@nnYvi>^fmmI)*w+2T3IoV;7X~^T&9RIho|rFU{pHk zn(vZbJbvK2qKRF@tqVo#79jgj6`eTXB?l6NU4$G2sXRZ%-iM9%Tv#jlM@rE`$g8@> z$Y2`s;3nm(dJ1~bnmYD+wDPMud#9X_42vc+XLu>`BK-kg3O(b|cr;l`=1$5C0Y%GB zE*8B_mh5`q;>yY-ook1?E3?OXZ3PCmVNe^n_omI6;My?gM7@xy2%s!Wk!i2t1+f9k zH}lMxXgIStlD2eOL0jc$-y~m4&X7HFT{}Fh+H#}FxZDQ%Q9XS%9$9usxtQW?$Yta4_v+~g7_6&wsc3o4b@%YHUZf_mv;+Wc1 zF!5QKsz`}M6b*QzU;jv=V);v((I{n-nbU#C-OUqS7hL@}Uw*5LsjY4JM&<1goy~=M zH6g0n=t;*F0Owe8X;R}11sZyr;EXg-!ix!lFznv4({r%Ku#;u3%_oOO9rmXxutQ*GD%-H$*o@SFjTkpzdF1 zb=h>8IhA0a#!VL!Wi@e=xmJGB>bzl{WVH1UT?F|TU2N_l`ER-y82Z_Msc|S{`RA@V z$~%+*xSa{cbmYeB$u|)GJi0e*TJr#F!1`dkewjWKWW(Vs<5=8QJ-6lv^N8|{NKNn> zKdyW%##93&)AGS~6qcJzKD0qAj3C33qkbw|!$)x$`2cBCkv`NN`BSW-H5LTG90bfATdv z;$akBhE5g3NtVAxsT^s>Qn*XaM<8*#^diMPXe0CISjoA^Zg6vfJRgJ;+F|1ZnRhhm z$vM&~w5%U8LTeb%o}>|#kT?)-H$T>wm^c3cqwZWy*boISyeG;k+Zte&!e~EFI!;+2 zlPDA1I>PEr$c6SD@s#47_cf=qiHK&O!XvJajUt@NF2|Jy>Bthn_LAOG5FD$qP#MT-DO8#x|cboSE)r>B8~HhBq77~Rlz z#SU&FwhZmYlqSkB+iR%d!9a{21pE5&MYi9z)sMt%kh$%7_4@WX&EE2-+xHbx4-|@H zZ}e<7J~}ZeaUv;(Yx;yO(vcqNz{VnNnQj2Csk0c9t`-xzoUm1L4?%Dx;BviB8I+i{ zNhU?Oh5{|YcmtU=Q%0ES>Q*9~>9pST_Km}K^=?z8ys!8&@tLBCQe9=ieA#`687&HV z1vz?%8zhdr$k zh$-CJfO=>7iQ*4LxLKO<4?!B&Us*j^S5WUMOBSj+tBH(6Y(xFXYlo1$ zjzzT%c*?8l%MBySwrbRy-Y2c{tq)-EYqqo%To6i{Q`Zxzx?ijkB?6SWvyfzBD#0i> zpS{)Zpb28=Cn5TH{x~qlFj~FBFsaa5!&n1124V3KFU_N)=BAyY=>{ZL`Ly2EW_YEi zUjQgU2^H(*Hcdub<>nw^SBnd9Z>yz8*P2?IkhDwM2~2X0#6NmyU)+`b-ul}%;1iA& zE*&!vmWpZ{MIu$F;O;X^n;}?EzBUD3X?AYFB7euwh2ILC-c|@66e@c^@}$*2aB ze8x{*5w^!xe+0(LIngX66q?*OE}F?dah;>4G2Q<3gpIz;OYQ0<@*iA2c^%wYd9rD=A?St_BiAu9E=n=}(4|AYb4GnnV;twaEHeJ%7fk|3dV zSfRds;qt+;Q4&Gk0{)!tDxq#M4R+!LXo8FZ4ZkB`Zq^riztJ_(B%qrgHxY>-GG;a{ zf=xy^J0H7j^*;ivM~e~BaKC^2=*0ft1hfBmO#Yj^t3haCt$6?CeL{0Vw>Rg<5)c5T z?(kD597}N4hYRgQLqUdvZ)L%u9$-MY*yAROLm0Borf8znl+GSaKxXH`Ag(vUmVs~f z5^^!Xq4Yvmp>yhPb5n@ecpzi_!(LF_h+a3ef8IS_t)e0&D+RKH=odi zT0yiw1owE{n$U+qW_Ofd=(KvHQ8__NeE6 zWah%j-)92Ju`lI974??=M(S87uV$vbc1mrRkM*MhD( z?`Pij1jr{xGR|&SPhH^k*Gr9XHFX$TQBY7rccgp97NR%=w{SmB-^; zg(*4t=oaXr*_eA43G>|#o(<^|%%dUTV_Ylg@75SC(+p+&t0H8uyt9o+kQ`fnsHaOA zokhi?y5D7gx|B8SuYP0Q4}|Z!$yc;0@;QR4RsJCs3_N=eAZ9J~s5RyGUJ7kJWH5y# zxCs8%)di^PCO9baGDnaH!Jav7K421 zJB!H~!>Qbl7)*+v(XN*IQfN)m(2Djky`=XiLT(4jIs00zRL>1}7(k*LIWseX`$+Mx zK|;*U=3=M>__zgAeb?&5!c-(Wc5yMqmEbKoXYQD*^zSOj=)mMl%-z&Nj)Z(L5z}W= z%Oc?S*K)ASlsSpOYEjCAk7-_zycBL8C7%SDv7TR=gv;RDwmOOKYCO8_!f}xaf0&X& zpWOaFc09?ZKT*t?dX8|FMeWbF(I@jsthdWRSnSzm(> z_4_o5?^8^qWhf7|7(0C~A)0y{tV<~eJC=HXzzN7SOi)EPk4Y7GA!L#^IGrV{gI*dc zF%4DFR0@NIC=E*Phv{M;CB$zv?buOiR0>Bl>G6V9poI1h@eGkJKv5~0s5|`>S2S6( z>XynW@kVeQr3yWiu=1b0Q|q3DH0zm!H0L!Uz6ieOnshaT4i(fN%||uHDDE(7j;oPQ zR)^OlY8a|iGm%_%W}wtBV$dAVLZD1Mtx18=ieH1N)G(P?bx03D+OwrJav{ulqr*;F zl}N8LV8!?S>H$u)G;5k%u5DuA9$pr=>YB7zow9RGU#jOwx7K@%Vld@Mi8`O)5Rt5I z|I^rHt=UrMLo}06F;FSeNWvQqw>1`nKoquypGW%9*1~XSXAJ>8UW{Vf)som!5m)Srp)nX} zD{ej_Lw$zZ8(feiOLk}{QG%ExpwHy?B-%@$*l~o{$J|6-`6j4lxw&-r0bK6;Uf4R- zn)bFNCIk_Cmsl7IES3{cgh{r9i-B{99&Nf0`bqUeYjv#9>X5Vy?i8lk5CV)8Hn`bG z(zCR*_3iCvMATKNi?ra<>^G$#swYNYS%-&p&5y1K z#19F#pr|1nHna&pK8yeWgTIN2G_7mt^n~&oHtc#l6=^jUAX7X$HaW>vu`){I~4D&6;yZZ>&t(i+Z@P5)& zZWJ)zkx-Sa-3-oq=a>AVM;5^|cdy}8^NobyjNZW;0`XX5L!8!9m zACEFfbzm^m;TfV^2|`yN##DkDdVnPE_Qw{ zx|dL+f_bD#+Jb*0T02o}6lKNO0!y?nNM@%TG52ZM;Ew?o6=T39Zh(m142AukAKgzn z?*4Mq!aw~v%U%0wTAK7%;Rh{>x3PVkF{l_NH9c7rr0marD@E##WNABll5igDd?XgA z(=EO?(^)`_Q;z>)6``|SH)kAtC|G6iLLHBt0qF8T@2#-IeEhGfBZEXy&e${5SR zH&nUMm`85BWI0!eN=*NybiXBbm~;Mmc3iZQe8rnVVP-cf9ph={f&wx};Xi1|HFfL$?mazN_r%L`58QKsi8JYq0T-T9q@XEju_%u@LqGgA7U zHt@`msY8IC`_D0UEpv)`0=Q&+AjD(DkI1vwNp0TKvL>nKx}3=vo9u8K{h+e*f?dR< zcK?RIa0|F|QDYTSP1|KvbDG`c+>up`Le_xK*1OR%@Hx_^WiA#V~rFvayp&E4hR*=nJp7 zq_tp~aPV*s%%vhIV0}IBP$WH)@gPYDMa$z={3M@lMDYCOz8_bIecjqcc0~_C==m}m zk{^1EK_Mu6Xd#K?)53Z3=Eihi*ErUh0<6V9lR$2iCUqG;q=n47JRE=_ibr_S{O`1ApD@`h*R{^p_pV=} zpO|EsoO?s9ggQ)E_W0f-c7t@6#WQn%`oTB%bjD}Og;6LCDk@Ptsk5q6m}P_U_qWZ& zmtE5x!13QbaXMahGA@~a_n+j%c9_TRG8eVCq4qt2jm5VKxGKrwvcBz)btNAXvniPe zv}lYqjwX5S)6N17X!raIPLuzW<}KLArtF)K7a7CtpH^T@%4kE6YUI;;Je`prFhbr{ zX?Fdjc|~7WfY?LBDM$%fsJ*lyI~=byvK5u=UmiJsOPvy3LkY%H7LgvBl3%U2bQ`5A zmi`bo+w`4WlH2_G!w)u3Rumvod@+$^VUS7&Y<9bAocoDXtMMA2?QMuNzc5ZMqlyO{ zY6d_jz5Q8o?uWBc0jtn1sl>=^a;#zEsz9NLz)%auuKo=6`=d-%tzR&9XNs##oOPuT z=FDT!uOAU9bkCukEh*FPC^Lprdo&>hY0=I-@|A6*-#=>Mj2xOkzdqZ@l#r-F{=@>+ zsVNh3mDC)6BhhaHdE_u+-+_3iK2AJ^h|fI=hZXCT3gzxX-Z^I3siC2V4O?LIJqUW3CzXqO;q ziy&&A?*Jmm2r{Nw;Ehv%mI_NncNp`zl!7Bd9ojf4&!UCaXb>aZYLg? z;jt(9_pd>s9Ri2dxLEJ%8bm_GOOhs%$l0QG12O>cp$`pX?%9lPTcH`Y3V=~bxbZ5o z93v+2y9@Rw^s@^13dgEIu6OUs{63F@`4tB#;nm_=SfEWI>LaJ;;j z_K;uK>G6eJrESoXuj=Kz+@A#f2($z!e7v+YP_#p+p+oB76Bsgfo5q0R`N_uPLK{U9 z&z3cQn9D5`Fy8GgPga?zqo*q+u%<>=)BK50NbgL!yaw##DgNxz3)nLY-wc&3 zl$Gx7~N^Zl=Bz9cNi`tPflAp8F|;uhnk z1c^y(Wh#X({&jQEb6^8-;PJ21<~9FekZd+tH`K_hRK&r;#TJJpS%`^wZi9m0xBt`i z5>Um%oSjd-B-m871p2n<7Lf@sML=?PW6FD~Fkqy{=L2~L*p}#HJlQ}1)Q;1Bwfz~V zk9Z5xKO4Jq5}_?_lJe(_hM=rK9&XIXH*!^ME{RGAat^O#-b!w%^y0tXb698SC}#F7 zx9p`*ypFR*lHh)@IBR(FV>Y}qu*!Ax<3D~m)Jk2sOp0fXRuoZTbWC;(K%6z5(I~cA z-yB0@(OxRHqV_aV<2)CEqmvLM0P1ou?Ozku7&5QoYakA(R3+N~sa&WIv8&KjU^hHk zQYDdvpkWZcui7zqhpQBGj;w!@&)ud&3NW0J+W^;fT|A|>G9yA9<#j&W?|JBsmZf@UID z1sz>t+uY7NiJll%G4bQFYWT{dF%t<~yA(Fhl`o)cK~d+(dx{l1Eim-!8`YoCBl7ug zD$_t-Vb<0D)Qd>%e`C^xUrcbQ(r?&R4U|_tPljEN-$Yk;b$Uclb*3>nQFd*isR%}e z%}_(_bUhK1Ub~k=M&^HmH%~Y|!|$kU_17#uv+?9lZ?QR^8HRkS`2#iT&EBqo-cH*( zc`w5sdq;=idIpPT<00qT+Yo@77|+6aeqSmxbq$b=%#3?&U4Bo z>kK+KP4Jf&SEtItdFblj*-ypR(6QffB;FEVJR@?YI~Mp!`XSrC!^8&*Gf}1HDU1zB zIc?HoIUk7pY~B**6L)fZj)LQuPi`gU~AG~FK;g5vR zK@hkmoSGl_hGZujo2E&P6YNjdV;tAU+P3u_yTGE_r~iI};hA)8McBb2#FEN<3c(t@ zHlS7YBC+2vj;(EsrTl$)DhH7*Rgp*~%*oHFmH{jVH_7gDPWK$p_)$F2QmZ(G@{*Ig z7W+Lp8gZFG<>^s0QkuLM;7cf(%q`K7FGF2vb*_zCEc_iKdw=3|>+ezsi{a5Z`(hb^@vH|RyHfb0 zhEKq6YO8MngXe!uO8@I4^6lxD{x?6r_rLl1k;+QhfZ&bp{!!d$@%~ZVY_QecA$9{( zs@Ed4CEH;?&GP@E@K%J=58nWP$PYV0TE+Q^zjtnWUbU4xZ~lFKKL_u{Qc*w~&L;Ap zOCVw%f2t0mXF>lCbnZhVLMK8iLN6d(Nv6T0O`Tj{^j4-u1x|L`n;Bt<$jvBqrf4>8 zX^d59{EXiU;4@frvRZ*v`IVojsQI%_i)~G_QCrfI`H9MRVAavAu;wH^q`~-w`_OrbX3y_d!WjgS=KiFvD2DedFh$kS3FnrH}pNVGD3CUHJsR~&ID^!=M?)v0A^BY zC;GGiXGQg?n>5V=`9F*`d;pBu`Z+>s@A?AeJq`oW~fPu?U%|Ok> zEymp+e!Ni`O7Z1S30Pl{}80s@C}@_&5%xlSz9*O!{#KK_p{uAiT~8Fm+5 zhRl8GR6iG-(sH10!3{6uTX2(p@!LjPS{slN|M-vLxw5%Sn!0Z#K?>`C zi(PSbPUd6nLR(m5!gCJJ3Y4g zhYgk4p?ITX1q_agp`d@0;(eVsr_oUH&Lb=h@;!r zC#eToxm@0R_n*hSU$0l!uhS)+FJsRDP&*DDr+uDH+Jj6Qt&=_-uZd`8x86XoTkGE( zboiEkZtVtKFJ;ki0r-}`*>7vXbfm^7blb#n;O|xhaGZDP_18%M;5_fx-UNZY+xLbC z(tK2bHQaKmd(BIO$U?k!Bg%TpMT(;W;*bA8xGx9yq#ircXdU;LmVWuye#!~)(&qab z@j4h?>T})%?e?z--N#<0VzWC824B*2?hHou-~Y~kBYt%o4J=A)6x4R?!Cp{pUbBC< zPTj!%`eeD7a_t7^jLNC1Hx%Cpba|X+=DhsNy8fj2^u0Q?+X^_C1X{I@r&twa#X2$p zVY`i$`3OP;u{EVIHc=raSgTA|2Cug5(bE&0dBw&A^H_#{0JPLyKln>;b!8trxmK#k zWkW8g6e+H05hZV6iASX$tg@wy4<(wIT5tiPf0Il;DN$rc9_(!v*EUjS$gsecEDS(2 z#4i|eETNHGn|+T*t0zuBq_1glF>hAVaiXuSCFAI{2UTdB5DhO;n~+GGH$$mXxQQ%q zPD(YKnw=u3=ZPZ|#t+VhkXQU=*5>BMYl zxs-?lVKnA~A^EKr_Y&)bjO|{j+-kv?JP4}#3eo&2bkX+!+foimAO|9X5(5kbn76Xo z2jMBZsc1Fh(4&0!0y;bcK=%D3$$Yqyu%&5gw$j_)HRe(|HJcU_OO`VDd z2Q|kMeR2jen-dUWGFh0O&oq>kA`IGqDQyAh!*iHVPbQPfa5pa4~|E=f+3&4|x7 zUVE{#pgJ9#(9$n#6I5X|aiQWbd)g&S#iD17kA#aIbF*lY@?=P$zKRZO2}162fIi9r zoP?ow4MsJM2(4-eOlq89V@?`_FU^m8oQ1`bxFn}J-E9ik9ruC)H>kFsm3 zBnCtrYnU5)513RRiR>-n@bK?B-=xWi6Ej{~gp*LI$l7{PAu_KFg3RbxP8fu@_UH4$ z<|!)z9WW#sLi{8eMgTb+q}2I9vg~?6U*@3m_IHZ1LO!?ty+LqGPsh5Bef z?Gc)fy4du)?_4D-#N__QlV%*kNN%^q zWaz;6ue3Tww<(A{cYD^If>hG*S>eYb2_`f+m#gT^qQW47+h{nO$lFtm5yifbdw+x$ zdJIP+zk1;!Rl|E&Q}H2HV}=mv6KfsdV-3UWtX3m+_qFk_>C<)()L2k)mQH--OKcO=ai zOuejy4O(a=A?lCXBcP4ysc~)h9i;S-C*ua zw_9QL3_|p>zDLair%9<(gg=Z<4_*5UQCp`JGXrO`(0zC;*R>UBj&Gfm zrW+)yI}sf1r%?5>oMWCg@N_twejx0t_!kJV#}s>xfsH z$#}OtK#On3Dp==LwEc*Cn!Hi#2Cy#Lvg_OjlZG9cJjr2W&3`HtAX@4VaCEQj@T2A! zTZJs&t5XjJ+!w54XR>{wahKOVW;;Zy&h*((j&wNN}?gePybN@mki;5J_e z$(S1U<#WeFYtT0Dm{)Z@Eo|-}a?eiTqU@PUplSe`j(O^ht_o9o`l79JykWm;0fX&l z^Tox2dMdEG71Y9n({w`e6ULgToHK}K4(69R=5O_K&T2JG?4}dUHNETZzlP9WKdXQm z%7~&UNRd3$B+UtG`T9}Jtr#_JK1pR3pJ+?n=!4u;Bbam>yHI28CD|*4Kpthmn>u$! z4X!VDZ0EP-lf=mRtVA%Jj?aT!KsWt}|K<=cl2lMMd0K6P7J?q)<>gBn&7Px92~C7d z`K0e*W`DjIW+sOuP@h(?hCx|5Cy(a8{!R@}N0&Dicj#({>y}U^Tc!RumDdOP{MblTc{oDFMg&I1j42pd)Cpku^8f-A@cVvU&9kloe8#)BxcqRyZMId~I+<#Hj3RO*SURj0j zjOn-q9e9XX4lK>+6GJ62@#zvR$DJ$+E2c51F;bxKTfRI1*a&`$~RtFKv7 z?ys)ou$Q7>{2r|azxbosi?h%R!0!dL?U9KIcBuY%M9{XnE7-y~ha^P8fWU&WR38K8 zWI|Y9$9QYp&klX+h}!myn>J_0EYSh9fB%5ty@D6lB6dk~;X8T+I&Oa+Qv?!&>QOM2~#)>r*1#B$~1fGO3 zpx_Kv-a|~7%Nn@!^t}DB06_dgtn$~p45M*$?U&~?{}n*B*g7?M?R#skvUFcSA_pCPa(Qn9lv6fynjVrgQ|)S25;t|!tUPvQ+Zmga!mQK z9Wff}8UF?E=m!3+xv6J))lqaezuhn*iZ9u+JmgM*qhkEZucUdrE?L(?l68ZHUD|>L zD?(U#NiPJ_pczs>CL=IW8Cymk#!LwcPBF4po0?ySdI;7T)TP4sCBdTq@l0wnx7%-H z$ziidqfRwDT69r@t6F83dddHJiT$POY*3WKcLavMh@HfR)P>&G(_Qu2q&UkhXz4C8 z>s#z^W%`XV-CY=)Jo$@dp>4vMhOvW2)E21a1I*u`&H^s%%XXC4v4Z0+O@xnyAXZ7b^^dk9= z4oW8&DO4Chh}w{AM7ITZcgJV)F=uehCo3y-`6Oai+b)De4h7PNT6mk*R1>CGPLp01 zCSON5Qds0_w7*Y%ctglQPS#3SnTyS4^%z^EO@q8xTboY$byRD3M)ULDY3wE^p=NQ= z$u1$y_1A$;P7eXx`qm`vy=Gujhvv_|cRP$sL?GW}{>5u^2fL%N+ZuMU(Z*jv-_6d0 z@i|}uOk$&ruAUIc4+4_ho7gA?XJWq<+O%nZxk7e z(PoOQ1&ZF-TW2a(3V(V*&R8yeC@*aVuxn(*tubo~EuAe+5zifXh%}wIlsA`R&Yi{1 z)Mt7WI_bFSOgNm5Q0X{ysYz(W!xiK#f2xAj#59HutY~{%o@OnF)=;)7JKr^PLV^&VK>TyE%m-2JD-E)rr9I<|H)|mo`uDwD0H&?d&OO(!e|F3Nw^Uz9pC*ty{IMPa}~n z7_HnB*!dUy6g1u!Y}2D#pgm-#OBD817RsyQ#kE(&7l?}W}gF0Z3bW<4Y`5SJnaA3elF<>5g){t8Y7@Eho9Jt(k2S^|5x9Uw=w`k_nt_rt!Ir9&HOQ{e&$6&~Bc z$hH~j1=IO0aH#h!m90Cr=+lKJXM4l;*MU8p=`Y~nD=@b{FhlA-Z#9w3&PHo>yIWwg z0(p*{CerZ|di1o1#*Lx?kmr07tWpMpfJcgfRS)O-PYOY4tk*}S!t<2b;imx=f5;6d zrgbl~dS!z)YtZF2ll%=9D8gn7s|Jv`+TghQC4*3FSek~VU5#nm#wltRu8r@9>AYR5 z$S%Q|eNexZ3rY zHa*h(UH*PezKw}f5!f>3yQp4|@tWkuF2m`^>v@4je=Idt1MC~V@mSYg&^x(<_NL%7 z!}?6F+Ou_hb8eA1OH z@F8F_nvyP19yE!-u)(iDT__^fiw6M-0a4bJI0>&nN@R8IiIvPVqX_Wnm=lcT=5AzL zUeHxB_iZWpqwZc_Q}XA~_AGDeFQa(&-v%-5zqE1fpA()qBM)4z>2@pe9STk09j=kJ zzPA|qw#ygP8Q#Grwo4b0V^{amlw`+tY@_D|R3$YTS>4(F>gJy6YLup2HXRR43^#=oxoQnogx z|IVm_|BX>O{o@LU96gvC{RO1Uhrqz0eZf(GhcEy}t=)j!k>Z5?HYfB+?W2Nd7_|%b zQV?~Fw1(%O);KfKbqw(In7O>><&FI@X~-O`i6%}EJx5eV-`qkR)i6fCssC@C6RO{x z6KXQPmS83YR#*p5(Sn34OaUU*XH8ofm&+46Q{S%el>eu50woN&e~f3zg}Q2Mv*AP9 za3(L_XNeKUbmPYQ=?j!_nbTiCxn-0yM03Uxu+4%gyy0LGaqaoHo=@YOQNjHGjB10m zDu0T7zFd@8-n$_yq*+C4;Z{Sd1evKbBd9azo#BX%w%|89`tMpiLwL!bfvDG1`}m>U z25yr#LHg;87o>@x6SlWLR7qp)Yy6jqI1Rix1TvK1kSx*D1y1Ai^sv<+LF6s9+KR*=f7} z7==i~^JHx4+>%li3T2D6WzZp{qy&w500dD^P1%s@2);t8`(HPuHI>FmvaJD0Ct6{W ziIN#e2rUubTVw{5{6arjUc4BeqHg@VjbNO zOGP8bl6=p#9LUr)+!5cr`GnSp^AmoQ{WLs4p{_-|8-%4AsY)$Swi{xNKEjHfABw%- z^9vtV(IX$%M=7=zVWq+{)$NZ%kV8&+N$eu0MHA5_4vLe~SnQ!!leo2bJK#e{K29j5 zCA_LIJ@A1+`c0xvQQL?!sfG!nzd!#kRsHA4^0J$RXCwdkQT1IuN<rTm{G`(K!< zN!`;+X({_FoAcQOCp}1d z{B50$>RT>FWQ1|kfueu8IY?8}(woJl%4MKN)y9^Abq7!L#`4e8XV3ehyK+5zK#=KJ*T+@ZA4o)Kz zJhK+WzGQc=C;%<1B;~@<(u)xsnWd;Olgt`*o`{JiIQ4^6DH=kN(c^;*k#y=OuF%I0 zIBVnQR4Xo+6L%*pZD4{;;G6|FmK_QRfaWll1~vV_9ZL5OSe)50BV^l_3{B&D5CU^6B z3kmF>XMwOLm9N%yfs>W*v-Z-|XbadY*d8vdX;3!blik{t#2y*V+V+%bl`S}&KCP)_ z5R*wp#TZeg3~28hfot}O)1|!Dv*~S3za>OEy%$)<4*upp(T`=dJ{=L5OzOHBjv<+7 zz~XqsJS%Kl#PC=GDL!m>w?ziVa}0aYth zJ>J(=m;EicKGU6!pN!%`=;9>2V^)l4hsc3ro`ZTv^W%<-qFXx z+}0!$?3-yQ3`Hil+MTHx-H)mQD+TB5wsLe#hCdH*b;24LaNBOGqq_7Y0H+;KA-4SC z7t|ygY@bQtgEh^WrB=d>txv8~2HEPBsA@?U)bV0;%d@y)BZ2n(!4v1pHfGN?<{E8% ze>(FFhsLL0F;$wJ8>!4KEs%&(AjU1iME1h@i0U|IdC>-=k^|#~$gr%!p@aAGuKwz2 z6Cp_dLiny{VXA2&#dvxYF7W>3$6d8!+JlPveN(l3%p_`<-RDMtbgD^Y=D=24#k|gH zOXHy#=&$oo4Kg4@f8q81Pn#gwY27U+PPr7ncB6& zatpWv<|lUE4WBRFWd%1g=;&m#g`_ z>#VwR@@w_W6~KZ(x@>W)2b$>EQMD$ihVQ~$^V?ta%1}<}9{s=pRB79rxY5J43TgpU zUyaVSw!E0Ii7a=}qfk|2)d!Hq2r1@%JwJ>j*)K{!JUl=LRvR#9OrRrd!-;t?=}gq! zljEI04-a+%=#fUV!T2`pK@yH5TnUD-1BJuz;TAWCy;UEKj;CkR{ zy6C?Kxk`UYnL3fPSPfd(Z|m?$8$b>Azva^7q{IJy6jq}^OfnfA2Zg{K?xR7k)AOpu z)l7Tya1*nw<%RcS4H1kNG5Mrt0X_PqCVGPbUgUgURb{GJYwB3rQjN+;icX6ixD}4( z<Vay(DiqX^zC1vqa_hfZ#Dj#T3rT_7UQ3j+7=a zLRDSxT|H&?z?LWatl@<_y_7YG z6l)J3Mv^LN6$zF^fGxu_0J#134jw)5Gtl1FjSg_*0@me+DiIVy)OqP*53>`Fy{FN! zIwqiTl9jEKdp+=*)pMeFWTIGLa z#>^?I%PtZPXADJd)*Jg%Xr$M4*u1;gEaC|Fo(&dyZ0H~7#!Ab8KpI=~joS8V=i~!> z3^cFl7dJNBT3YalWN*kH+nwAf7vToH`(~2~Kx;N+2(9B9Bd8Z*gD-SRK#B_Mb<9a8 zYe7l67rcvA-xLy3keyHVHtG|+=DY-E}v{D)Da3&TCP`=XVU z*ugfr!d#p9s8*38>jB>WvS3t>S;vY=Kd4VlC@3snD+|b`;NIMtD(kQgMNdgrE@1}) zyYG=KS#wF&LErP@&=JKS#%Ro7#dUb|a-Hty+n0}ED%SNK#+a*YEI4I3Lq;pHRTa{+ z>-b82wK7SJ#0XQHi4q+&7kQDQcD;mfSSC0Id*YMV5@5&eN`=K)%OW3P&PL?j*V<(b z)OhRWCSjzhtEjCd&2XaU35;l<4i_Le#365)CGxC1A}G}s{be12CdffPM&9F`qq@b@ zZh>#U3p?2N_kZ)A@86qqQnT4A8-cA6>={Sq^4glRs z=_^R%#8S6Tv|n2epF4}b?D6r^FXNRL`yN9D9z>p$@CiOp0I(FSn+)2}_O+@L2;xN8 zNezLw%j1wjG2Z8M?h9wYI7C*`p5A-_wyewUH=I83f}TOIN47 zyvLY5MaJr%(9~%?qO2ToM08n!6HEv)qK^&s%NPJh2Z8D71xBumeq(3cd!@l7L?hQr zGUGJc>SY`j5uTI`TIe>&T`?6gT>R|XZEdlN+lu7eQ~lhDX3RgT`arc8e{k!{0BHz& zH^#8|cVKLqtP8-CUkv@|iIF%-b%Lb)RqE#hqOTlfKaY7bq1UHSzRKTI%$f(e+?L*0 z4&BfM*X{<@KFjQcoHCQ8KBV(`gxT=kw)xoNJe}R zhhK67?-f0cEN62CP5qN8yEsy02H(!6-_|1^=z~AAd5nwPDzh3o`FaN zR?~Chl1ihtPqM8HyTCPLAZ(19XhL)C5~{ag51}mMQ$maWzzrZF9zoWukfG^HiipF?;F7UCot2Ouj_%gb|Ggs!#6Mc0p7|h z#YRL5r=La_6_Pv3i;jYcXskh@L8sD_QRS7^ECuEs`g6MWopJRrX?GJfp<`UDBB6G< zA_;<|1c>&Cag;{5zftN?$WVcOsq{=p#2rk`xxh-4%gCTt9vxnhouKobe8F)-xIl@4 zYp=~Ysd!6WR{^1XaUM9xrAT-bi;H=9!GcSBY^2J4p0LnpaDVw}OYjIm(@w~jy_eP> ze!2CpcnmhIO2*a;RNIul1SK2g$h@820b(DKG+vew3e7l*jYDL*64khQMr+t|1p6YX z7ZSp~IUiMSP-{@gU{Rx@mdHw^aHHtrERVb-m=Gm5(Rv|7d0v9IlGL@ptqF(U%^NTq z>}o+79+$;0eR`3<@);HwTM!L7L7_bq-s4w1lFk&Oc@~H)_HB*fpS`(&!yxQkNWC3 zY;bepn^tk674(CYEVYTr}Uv%5dc zFWuE$bB^(h@q6~0j%5Ytvc8-QXnH2ayIWbYr)NIL9vs-|l?EH;*~g_dR*g2`S&4gmpdUwMKo>UB_0}BBs%cf`lHx_u&>k zg&rp`tRvnN7t1Q3X@-8Oxc(99PhXS$j$FI*DS2BxI^R*M+>u z5K-9*G~2sz9OghT2g+WE8B%27kz}5s7ZHAA{3{_61SWB*82xMWEwac(&x|j?#IvLiiJHsuXu~5TS#)!Q|iuPft(0j;oTodTfY~}>*(#;2N z%0xcmRKj0Oqg->UQSjydc&3gUva+DcxFTsmD;4`5B-W~@!Z=wa|Be(aY6LwQqAZ;d zQ|5@3!AzSJEyo56k|M~^5D^`Z^oUY0FCM`zJ>)S26j`H)c&vuMZCuOWw=LNbHmvFF z)0pk!fMQ8C>`kJSrh!wyhBM1Fctd#*^$&DW#m3atj;Bu(JR+KX)tbKf4W+_Pw^1kxc08 zamc{Sbc&Z`*Rs>@z0WV4vpmBN0fxp|LOp*aQ7)7zqzT~ue9;w&@=BDl)Di}itb;JD zCV7glY?Q9lAJ;b%8FNk?RCXeBL-?A)FUoY! zI4$`)d{|=R-tD3_!~*@T4$}SeY;>(G%3$0*k3p z8&SDRDisZkR=Bz|Ex?qVqOxbYk1Q{GBQDMfn}b$U`@=lOOwzB>`Zttl4n z)UYa$t;nXXHV8Loue$M}x94xJGQHFbT0=qOF(~D9$Z<pPwo~w_+9z1%aKj zhPL|mZ~D& zww(r1Qn4kDf?YAgISzuKHMHroEuFql2pMpCwJo56i|INTk{Ky=PCQ53I6r!ooKi8P zE3Y+2WlMowIM-gzuUL(M-oipFUEDNIfvrk=r>+d4>=~@GyHnBC^&NX9E7>s>!ew!G zy&OASu><))*6m5`V(6_(tlAXiJ8~|UyUq<7&${iWpEp0EJ6Gry{&h6LQtBCGtg!B=&e*Ar)Efx8o;Su7Va<-(hafsXlApY!_FP&;3%D;td&7|N& z9*nDyy+>SiyoPL2i`d>!!##>iq`Gp%TZURVyK-a~Cs@%hA&ww&BiX>diXx3DQ846; z1|UBq#&Sd~$b%9K7KD1wUC%vb>mB%Ewzm@#m7`-lFg8$f1rq~Hxw7w6p||NOH_NVM z?7E4$ht&c#UV_veIE<>(OP+i$G%lB2B7Gz>uBemmd1RDc-Wi|lvml8_nMl;8|x-v9pNn!p@w>eVfS#Fi;pK*oW>M zK_MffqC5AktjT*=%By$A^ivDkp(JK)k}^yZ5SA7;6t}Q;G#a}|Q#P~*)Ff%1z_P#y zxkzW0T(}l5V{aJ1MKTq~vJwZDPF|*{kTL*wp6pm(_%B|@&d?uCT!X?aZU9_^rc7+U z434@~bskBgM8e%~09b?S%u&LGV=|YSls2JpGwv6c)I2n4m-ze|k0%^5enK0MGhV_! zX|&teh%~MKLVt-OaC^#xiBuXT0W`)k{rXi;MaC0mj3x*8cPGO$$;&tIjH4551rOcS6y0LfLRa z;dVsfc0%cJL|M6@cs`{Fc0ytQxjCn>UXb7Xg<>5-T?UyUEJuU5Nr~twPt+_qd2S9 zDa}6Sy+er%D!A%4MxBq8{`vFSYSPaMSm40(Pr;n^8PyP_Oo{i+<|{DB$7y%z`J#y3u)c$tcLnMRQktwOmmrE)=HxsIeV zby0bog0fUud681Ye;tHEQ}XJ3g-Cq7Bt(xt1!^V6I=NM0M$20|vtoEHimYyY8oyBrex%y>?*;wYQIE~!w;CDE#z zz%{VJ3^*E!vBGNhR))B0#CG%v4lS`n*CI`JC(_FEyDx*pXNA&nhXetdNHO6o7%fP# zamYUO!YZ;OQ5Q;UlXYr#OQrxnwAX4R|$L~Pq zqfda5w&BJ~5piDnY+5}gD{ELEgnM7h%}b}#edAzu_|I|53stKtQ{D57(rKemP0JJh z;(g+}E7LAt=`T?3J1sP!Jc}PWPimE_?Vk`rd*+ZFv>q(>z>NQ9xlA)c$IIamQRL58 z9;yGAEgoMS=e{1iWbb6mu~7oWeGXykB{v38U4lzZ>SfxN`uiL87b4?;Nrz)yeg5@& zbnDC@s~x8wRrYN^mh4J_YkDspmgk-HpYob#Li+8#6JYC?H!HPr2k{p<<+oRwi$^^K zSwqdu3Z>?Vji)!!sy2%2j%d?=+3st6n#d%6rC9k(cl5^2Q4=4!A*bn2u2G5G zUPXQjj?-`WC2LsOWDhlSDR|!<{utE<;9iW~0@TO_EFks`{DfX`d2Z3-4=}`SY@#K@ zr>q;puS$tzR)fGn_YzakV+a9Z@Q2i*CF$R=Ew&pM$paZmgmPdzq=vU> z05T$!w3qwLi4DFK8-`;-x@mwXd*GB7_MJDILk~=CTYz0*nMHHVlzz$-QJq`K2pRg| zv35?>5p{yD>A^SxSEA(Og8HkKuMD0%jh^4(&D@yF*oPF@yrPu~H(;CNHxBrhxrI z#T|IP1Z(1@8M4m{AndR~$~carynREVp|Lp$&=^3N>MV!b!*7xq#^)K%6@IAzAUJID}-z2boK!|Xu{T--+SHyt-A9c6%3mY-&T)y z&@A`)b(@&QoEn2d*f0L}_~RI#E&u#ddM>(d_Jn$_`ELIkN98}p1JTnhS^qH}*!UU$ z7ev zz^wxWBM*@PLJr;3S}R+WM=>32ojg1m#X)zi3!B7|%6S7WSL7=hcg2b z=H$nDVE%?eH8Eaq#tf~v({}k-L$>-S0aX2|mW$3wY;dAKRj&p>WITkw|8Dqmu|>_g zrbg!iDb@`Fk$9VhG>%`Ht6^IuXWskY>>aOvp88wxpFSNl5YWeuqV_)vz}7~N^x`%S zjsn((ayIsk|D~rzsfPKW9ASEsac6ANB-GN7ARzs1V_Ea14lUgy^Bn|7f{X>{Nwo|% zG;$%omf^TG(!7wjTFM4)D$-FC8KNST>^hHn=3CUL(uisP7NAYyyJ2t0Kuw0?zn@~? zdD))vn8f=$yd(cLIm9ni+RKVs+Rtv-rjmRis8tQW2kxop%noj+2($yWx6!H&XA?J| z8Sp9tw3Br8a(MeL@IerW;Y~r_GG^UE<6*c)JrN_=ipvkTPcCqYEYA~vs;Zo zc92eRoqWPue+jRLbPc<2((j^+@G|l62LXQcp$`ZTYX2_+e8{Z>57J;k{+Aqr5FyU6 zEkw+o-5M^UL{IDyq(3M1>nl|&xlQJ!mUYaWBa1A!`l}u`Gu5@t=>e2Fr?6G_ z%;hV*wq?}K##fFZX-=ls|B5n~t5s67R0Yq?pil|veotNF zw=FO@JCqTCAp^UI(AF}ODMpxTO{%P|HJ(*&rqzPu7z3-93s;U#UO>X4=%lVzLc%KY z`0`v;m?ou|R*zs!(;OK{AUBaHQ!r~XcP-1n8X!?}o4DO~Hq3Fy%Y29Hr%s!400_+M zmy-gwHMM9OD*C&hlhD7&2;ANQ?CQMZ9xJ>rLZKoGpwy zEM7}4v*d}qiJMRMCum0s_e`=cRr;q%z#G)54+b?C&ICpr?4C^^I&DK1^h@c z-C}>JB=3OTdVu)!Ruo$5PqG^--NdF+B+W%qDbHE%#=Ih5+%S)){$mrIOP5slGB#Il zwqcm^MMsR{7wKn6kueMK<3C^p;jUBR@zfUb8X0|(5Ma9n|LW({IE9lxqiaYS%v8Vx zz#kjV1Y;)=nWTDX>8E@HEOUD%`Ny_ClE}%ke-HNR&i$kO^KjIszPy+%ah0#OWRP#> zpz2tWCAr3ZD9#0_>jv6px@G$+*7LWQ!dx*3^T0`kR9%U1P2LIsC@TwRYl~VcaY?Zx z8R}(Fs%~?GZx4C=`p{;&@B-n!^#i>Y3Of+1{|G>qS@4^ItREnVMsn|hFN9$MN4mhv*wSWkO~afy@9UvI{ynb-5DRIz;mP{897@zX{ zMZGYgqGCUqQ!bPvNC2XdeahZ2(HXtf&z8;PaIKWckyuhGofBwz3E=>ZIT={cD|4(u z@*W@FAwuLzm78Gz)SF_y)a}ccHws7t)W^-Y7 z{0*t#Mft<&NgcR(gF^fGcWXdI_lNlf`jt~NI4E>9b(fDQL6Db|<~1|)$dq!ns@JsI za+61WDgkB3k#A%OPAGyES5Uq33&FEaA|#i;l0&0y`A>Hyx40YQQ%wPC7DmKVYiJ2$ z3Vx1I##r>#3=O3sciqs)0;}4ES@Z*?(${JM1-F`^OeY-9rz#3=65#{VHgo%Qg&=aQg6MyRFDtumhBO%$9?1~!p8swdfjg*wxC30 zOwhmRVJuM2RU_cCGTb?W*l3&`h)A3)RoB7`&D5N%bXJ6pdX`GbuA(Y)qfm}}581aH zW0Sgare)Zo1W1cHe?(eh-sMghM2CX)D$_)&JUUHvhfIN<+hFJyD>H#Ig)K3Bs!JBpZ3g zimEduW7eou`J%@y(H@tFl>O}dS7Bc4k5a|-Cd8?|&SR;E^d|Vyw#*l?GS1DSsyo_f zkzp9ZdTdr6%#F&G^X@jQrglD;DQ}vvpo|a(>u#N@n<43LrHi*@LZy_ef!EX;4SYd> z<|Hq+?7eLz076>~EoExO1lFJ*&oUFWtSHz&1UZ6-L}beoPb}k8jG^oug3JYfI8odY zLNSdKOiU!yN?l4Z;D_AdXk$+7pK~PnZr*kkyB0C)$ksbwuI^kM$5Vhi{7O zdwBS#il{5_H{HO|WUK^)yHOWba7#v%+iHL2?3kul8*jM;j?o&V2KJt-<1ZemsE9Bl zuq=$MDJtT&v-E77VNdVfFAd{#DaISRdKK&Z zU4$#nuQf29)>HGZ`PvqHF?y3o&`4b#C}AxmD$npPsGFtq4)1 zFl`4S1yJt07}N4rail^p0%o0?)!<9f{k@t4yG=Iri0&YyO9@~XIw0T*IUbc(3 zso+Xlm+L9$H`fBNqOrT%nb0>`$(4%?TbxuWSDL2>-OiJX_s-hqdycLT$ZVJ_>t+96 zP(&Crju1VX#_EhRe%m=RWm&dNQgZN&X@gcYUEiahWDy-xD%U<72W zesQR)L@2!B!eH>ipixr>M$*B?a2g?}`C7{fX{6#Ed&5O6IW=8O%!mNE5R*>SM5U4iD>qsnQb-K;9L-$ErX~q|HRC<@t zGhJNsm18owX=+1N;853~`o@#!J&&18`exo~oW#g<6s9`!kZq#^@XTq5{An`k@#h+i zEcTiXx%Q~t1UGNSq1#L&E#f@w8l$P(fSsG9tHJ6!f1P{PV(pcyVYOjly?&v>VQwCV zV(C-DX_3fvJMeO17PE8&VYA7NL_hRJp`BjeXiPdGlkO5yX&vv7Aw>VS+VPU0+eGv z_%DRUu1Mcn>n^l`><6$3W(UtnM*vlzeg0eNw$4O7@4$>vNn<7e<7jA5jxYl?DIvmk z*p^x3T)CViwBH^PyJ3#XNf2SsV}wAD`?m)%Zfh!*$e00emdERkfN7i7d~b2x;^ zIWaZ&0OIw2&ICulr(g`{V`Tn#mD6p4k>7ZLFgo}eY;xf&MZ;u|I( zG{WU|6&f*nWL&I1f)#pD#I{XRPlHQxkIj2h$ChP^wB`ads*auQopeTJZz51Jwxm+G z6$P8A+py@h@-WiuwkQmMN!9y9rfs^u)^0(`}qDu2da+CIcm(2Ul2qPTmeRseNkPr9undLnNK1uc5H1zCz67V3hz@Y2X3^@*vYj94isaS*Jb^5R<1%j3 zG$$kC>55Lh5}98#)8x|0e1lnP3xD3AxRawcrF1iv8{UV=0qjGOI78fF3J?tn?ZO>t7M@{j;L{I|Kg6Je&&V!UH#9nYtvl_mha0dKH zC{5Tkvo}EMj*=U*28-pcPaN;)nz^N}QDh2upo(^(OFW_p;RB#si2ig0F$c``Xt^U0 z?N$#U6Q&gComt^gsL<6KgVB8)gln#hbW|arol0&2pxs)ggcL>BLNzO%y zO}-MG?%XAMv(E}9ul`4RktG!|UgCTvyR|ph&Ek^Y0?y?xV*hci_nc6kKVI+np)kYV zq69y$ie*Y3>Q;z7j(FDs>Jv7|Tb$+#P4f=d?(3ZiR5R~@1GkQ%pl$NV_;DXJ=qAzV z_u`c>)H(W_P!t| zwyqw|V-(0~$~~a-=mHk#zhj2}vlKi#?5jIM00I5|F>wCBWM3Q|ZN-iB42|sn7iB2r zx9i3*>IlB!n7akY`q)EQkOLs2t9j;$>5JVDmFl^<-@}S87*a&l`(T%1R!P621Y07 zjyF6_ShOFwlWNnRHWM#|kZ`#|WrbfSSNcoi4_7T=4L92bons|aE{Kt=!#OFgynV>8 zR;n*Ef|Pi}7<9=GB}(IubVW2P$DJV~;ZkWF)&K128+cBZq}tDvt+ti{82g;0713UN zKm1t_PRRl5zrxgd^qDuH<|spDIl;Fb!Y9cYb}r?pBULgCL3-@b#UFY7i;l5xq4Ta| z_O>5SNMoXN6{Xd|wVsms%%FWnB0}`8(R${!FAJ@BgT+SYZO0~W7nZI_P&rAb(sENc z+W$B!X)10L`KSf0dR248PN~fYs5RJtHGBhlfLwYVn8B-GL@t$@s)jS!_h;xOSQt63 zCPu+D>H8UfV7_st(uM%UehsH#(OJVcs!UynT^7)_LE0X&{e>8>=HGCi?ZPHe!pc*g zJ%}$hnUV$gPNts7b*oCmJyR_R^8i#9P5NFYAzFhBn{OX~LT(x{{Pla>u;=Jf2z+DC z5A8*9wpTo@L@WA*m%ZW6Zm8gZsmN|@AA-4SPkl9Pe#3b^yN^&QS}TN5e5pp_6cwnH z(MM$YdyqZ?LH;CDT{?TmDr4;HOx33GU^eoF84@nfa0wKZrTQ(JZ=*NPdL$#5Uby&Lr{-=^lUMHHMh6M~lOw+2x&H)}@FFrmDRvtm35G&g3rEo~sh1XAzli zIQ9mom0*QA)V3!N60&+zmB?@3#QuZ*Bi0Ww3iyAa(mwH~JqPQ-!RWBow)GK*F9~Ne zp`jK^yVr3z|DdINfeUD4{!v3QXhvNc-~GeBX0KRZJ-!K*=+eP&8|Js2@fUxrh$DxM z>8Z?CM(y_9`3g&^-$SKYv@^~Jclm^l*%zhEw`7bz+hOpB-s4z_KjZh()~u=p*!*E- zN9f`zuiFI-^nVLhX=I3UbQy2~Tl@hKDUFBT7OF`hT`!I9C|@eE&yp1~hBdQxR>nt_ z(^!oqVo?C=&F>l|4I>sw4Nyqa2cS=L`=E8t?*{=HCk{|Bq;xz8?7z8^iS&eLc$+NC z3ig5QxvstUVZbkY#mM0cV74_;u#Ba;Tf!x{8!-VIlwPj3cQ*h-8k4JTOGgp+M zxupEzct4eKr|pu-cd&jm%w)Z6T>iMrO$#r7$hi6=&;dwjC2pq?6-cByA}}wqn$!Oc z?BXS%)wo;YXIdS$bN-g!5ZrBA;f<8%5RtuZ2`*J;TDtaUZrytxT49dk9hldA7&^_G zj&dN^s0THa4@#mYC8J=qFKI%6UYX6>_7(*yiNI*f!3r|Bhla`=?XM+Py3wjl;J%Ts5Yb)$JCeNh;{v_AwxPc|9 z!Ys;~AsR6%bJK(8h#0l!!zi4x;Eh!R$x=|2%a{&25!vF`!o2-!d+e3vmTtHtz=fF) zq%-6$Z8w9Vo6?p3z-u>yaXZF`-NX~f6YU^iw*hkp*faEwb61mz4~8%0uBx}i*c1EK zEpq0!E)X8}t<{sGiMSkL>JU@abW} z3R5@sE7P#c@11};sBGg(Kj=s&+qgTJ*1=VvorF6^+cY~cOQz;t0%VD@xBQ1~_ zrs@Ff$dg`GhHmuN?Z_LDZh8ZFPyS&(*K9lF&Rz~6dM0bXjYy$eyJ7NP++l6oK@M;fvi0j2-+Bpka7W{?NOCK6t$kx!VB@ew+`8;TTZ<@VkP( z7`+d*+XD=KybsV}Sy2A4yM#Vjy$_|^rN|s`Z>|Fq-<+{m^<5KYZ@AaC$eiEadh zx}&cmyXXxXUSr}_-HB6OmWJ0ymN}}vx?``(yQ<9Iu%ZV0%&0vzA%@|DBRq41U@NhY z$#?;18+4Et8X-~R_Hhz9!^Bo^ey@)sNkh~HibM zO8lGz3=Qp#92|@sNR*81jSOuh{y)p^B;^?!Y!Q?%KDq#<%#I6<2!gL}P4%(Ojvf%v9ob<}XCa=j;c%x1a~I=`9uB^=@fg(lrK?x_}mS z^0I7SzJ7oBjSChcXu~k$!}$+hM8MKNk9JNIZ=;8WCI=8myY2`5GUBdE_b`1h5%sXz zeP@CL!@CJ9%&OpJ8nz5K`nc zo06$zt$b_KrzS34qvmP02@PZiWDYukYs##r=R};)(l_@D=m%+2?+eJPEd@6@E-9Qe zvf(+ODH?E8w?9DY?`(IHZw~g>hheKR+Aa*zRx)WRxg780!~OEmgY7if*Pg_*mF^6A z!IUJHV6nqdBnwyQ^hG9<sAhh_fBYJt$J7Xmttl@Zmg%eKX%}Iv;uOZ%P=2cAt{f_`PO1K5qOiB;+XD zdJ(T-#)1W75?yMJku+<(60vVc3v)PR)T+Rn=`PF|0(d-5D{MhLr5rblRY?Sqr=Ak7 zB5g7jVA)4u=@jqiVGu>j)%5{Z@eUMhEB%BJ`i68bPMz}!_>wQ~46yY0Z9w{oNGAEl z=gSD1_=qCU-xIJ2H~js_8++s&{rPIr-3>d)U1Dc=&_FV^k7W$=5a>$rbloI%iEo7V z3c9h0zOSifcBwnK#w#ENqJ@J7sl*OkF5NPo63|>m31CZ?PyeBBtIwC@-5`-z^fK8- zcSm+sH#9slXXG7FX5~-DGbPGtfH{zm^0HO^z&XFDqdx`1i^uU2M6WcJ(>Xy4ix@kZ ze(JDJKeohA+?2#P(7pL~KR(4z*2Pc40;c&RZKrdqF@Mx$?OeBUp?_83 zbg|7xIq^R2b0ba0P{&62^7XPa{gw6b?Rl}N7$D3N5`!w2I3~o^kbw(sfw#PNriYG= z7ugC+7uzzjE6ARKN4KvJ@8+7=*m;j}rH3CA$4PpBJ5jJWWng5P>6wVBb$tv4uWFy< z8I!UM>IP~!E$k*8KVnFzZFP$R4=_v~QF4<`xW;0aP2m)Pj~c>o7sQ%7TfociV}`9} zZJickc1vd9)8snA(4xn8I6ACD`Kb_3HjzmhcL@6g6meH)umgVLo%8Uu?5_b@DYeMko{=9=(qu_|?Vnmm?a zbk8ZsNQF}4{D8(jVpupbWfy>4YbHj5c_!I7%)U2Z88t#YmaN8+6keDr+ElH^`%;by zpysYNH|w!<`;FYfgxW;1U*^b>t%Do=B$BJ^8kD{s%dFhKB@JeEbw!BNDVWYeK2YZL8%L}`^3mfe0WoX?F`Ce%QVIHS-ADH?cKdM(bC z0$m)Q{xr29W;oY&x87JfSl5k-rIrNeVy%vL-DHMtDM_MQlrZPYu2?&~PK*}qvZ9{# zFth4xs_N3n-Z1U*%mjfttQ24kI%Y~`LYcsipXL-x-C!V=zqa4XvLhV_%qO(z&oA8U z;lQyJA4*`@r z$c_sbB=kd^w&gMYT=T?ugbe(IFvO~DXU~)_Nfu?UVtXxBY|4FHOg6Q#=#=7MRNkR- zd=zab05Ek@Ihuhp3Ci2+Gy20%l2NVd_X#0arHhqKJEJYkQ8e3c5jm~kay z{%T@OqFyyQyO33e1(~C|;<>F+F&6Xom3X!iGfu{h&p5vmeuL)E2Ilom>}&3aS=|+d zDMd&9s$lrTMOZNnDL9X!+p)uj@U4L$;Kp@V59HP}I1_Bh_{`d;i5 zXDE1iRjIy1wJRTc8POuLzjZeC*SdfeTAq5Hx}KkT;M&mHG!g*ArBT;JNDL^uOp9?) zWGG=Z`p5Uz!eEE2xW2)d?M1{u`<5#fEkqr;S(PB9FZgWGXv{P?5t3x=A5Em?O_XD? zm9Dc*@V*GM^tLI~LNI1MSBSL*4cZypNP7HMXz4410jl6Qg??8FduDK~g9DCUDFLlwp<2Su7qSbcXJ!H>dPX0#w3tB%%6`a~p(0F;QTGFz_A3?q3*LnqjT zA|#3qjOf`V)U$X$w5F+929>T6hRRTwMT;odBQT?A@%o3zulASdQJ&-5A)-CHI~~M% zD27(oM)X=O!vOaLD1qL=p?su>^Lbk+M%M8+q)G{~c98%hVn*Nad|O4Pxr8irodqr? zRU@V*+H{!_qKE_SIa{q&3rVtp6-ffIzm91^KTYYNz=~Jz3j+v!!152z zrn0&-9;3bxcY)m8bJf|b7Rk~$>cB6+tr5y6t}3K&xkaS%%1ba00~+el`Jfy@EQn@N zHc`d-6m04Hcfwqj&?;FY1p`9J=jp^}x1I^}iA-fN%}i71R$%@4)j*l_2vIh$Bl+5X zss8;yz2pedzX$Dro5Qd{6czl!pg|md-ER~6n(er<+K%lOj!_PG%pCsUKMO}r?Oy-t z%mLb?`1)DSb_!6aBFq#O7J%oJfa=w7z!ad6K}ih-UWgJ`J4$r7XQC*OWHC>9l{uHz!%02q%Y2|N5B`y4dXw$?u|o_SL9WfR7GVPH2O@k2ik4gCk9vMC8khY-c2g?H{w}OWOF1Z%*n-1KG{V1`OZd z`%jo79;pDbu0QlxAHHMo_a}xGGtfODxz)p>we8!5-dy3ssAN8V)<#e?=pLXnC2f{Q z6&S#jpu#lWD@ZALjZ4lT`=fPm=K2=N;sCrC6ZYC3$>Hz|7s;x=AOtt)l>k} zEmSzMma%q|8VTM+iY13R=6$Zt^?kZb{}8_@E4Q?CA;O`y4eU=VSjD}ZU!4kY>Ya$Bi(?5`Oe*>9K{ml`E*LTy* zr(Z^0O@?_P%7-?dNmJ#9?r8wLG5oNISf#vx`^kFXKM5d@%Bn+ti4@0UW+6Xg=CU`B z|El*&P*NL!qVWLlt$(wmV+&S{YeyY}D1WIgg$)$R${^0tWct(3(q+80_M~zBZ=k>C zp8{n&TiL7$7rpFfrVXH5lELPRHe=+H2w7}hr3{5FBmt0HB($3x`L>vk78xkNELAs$ zdKE31rn@jtRgqb?o$9%ANI1{MJ5vWGL535t7fbUy%1-Fa@s$vw!To){f~_LlSZk_0 z&X{vR#eKsH%R0M#->3RIl z6%32I@)JQch)Do+1g)KP%%fr))%*#v6Ei^-Eb{dmJ;h8&ttGmdfR?z!YmO}*a^@U( zrj@p#D73fHBeLu^Cl3sr(G?k+b=zt7L9Wl@y|_7<1go(}(l;6GO=7VV<4(AZu;VaTl-s4ERFa-GWe zN>&UU!phdby^co@Fpc7W#!U`dlvI-gcSMKSN z6;H*DZzx(%_F{03FXqw3V@bW*?8elQOfQ$=06j99SL zt5LBH{=2kwBxkDYQjHw7H5^!0Ru}2}yrw({MBU=vjI86Ygl^|Tcl}tvhY6set!1^W zy6u(s1r4+ACeVjjB$lkmAK5onahcnKCM31Ynrgep3APUNxnK>2RJ)q8EK`3`NZQVm zlfv(2JM+fkHfl1$xovUMRkZ*;h}qb3Koxg8vW3|-5htdMbmPvkZ2HQPHoKVBk53#w z-b0Pj>~ctT^`SfKo9u$oYaHY4&1YF$vb#7;KBq^f3?3|#P7p30pLR9`63 zQ&J?S*ZW1kp^GJ(uYe+1Lvs$$C?$_A%O1c+y>7ja%(9)krDg}cWu9Quyre{O7_*j- zH;q)kcpHRc7k)WqWd}tc`)$^%*S8*H;tN6^oWBlimDgNKwJJOG+swPRJV%uE)O$>NVfTvvW)Js!yM?o50w0v`K#5PpeC1I{G)3g z^NT^hHkbL4T&OIfN4rKGNm+xkU6i&|JzsmarvpPg@)B7WAqNkp^n#Q+@k$N+$E4Qx zu^lulmgk7xVdiV2*~7@bfWr)V)be!ZKSj8byf-*REB1U$2N2B^zf78P4bSqEq3%A| zBEN7?_c{)To=GX}sL#Y$z-|!2H#L+xoJuE57G@gmlLQ5&%DHa6(YLA&D_V{m47PY} zx%1cr+MGoBP9X2G9>)?60|V~tsLa?-72!r*Y()7+0I}0iVns>2F_X&oET`=4!75pNj&DywhP#&T zg_BFNN&3a_r&e!@%hE2ta6`SLLO)=YzNw-H!g4cp#BT6S$+~_mbV45W08Vmk_&$@S zOL`QMKLa$*a%|_m3!WTtdSB_=!Q;}5Pt&v;17O=DwjALz9P!Z?0(ipl2Hq)Rici+W zc6#5rwFGNwbG&0-Hnc>2_Uj(e@x*)%?2n*a`pu~H^e0f$P0<)cHL4);y-d$Q{gz4v zWcx5HmnW3;TE6tTV+fy{vr2rwV9tiz#tH9A7-xR%Zd=`S!ZuW9xd6rR2P7jm)BtCF zLa^G^qfv1R6xlNINnklpc22s*lQHy2dB0|XrsO!mpkX)y1sur4g48gQGrV&oMF^SO zj=rDe!YUgGNMl?=yJNqXnG48O%(6c&yc!8SW!HL=0Ts*BFQ8r~o@soVa(M-;bahFu zC_9V*fnjACwL6&hva;;Dr;}ClN+uXTE*vtE<8|B3`x8rFmz)!>rbA63#E=J&$EJX= zM3c|EW(y~{F#+}{8$(Oxv9gOV>lgJ`mrMPWUVSCQbb6-(P91s!s&i-ZihjMX%$^|T zbNO21;R@y;^B(*9kw)O*X1lJr_tw3mdPbsqPJ5`O_o z0`*dSH(S@iB0jC=7Y~wMPz%*~&>G6lTgZP5Cp-w)_~&G|MsKuBiELMoh^ti=nG+B0E8;qb;02L)67BV}(#OmWEp6w0g-!3mW zZ@}LSAS=FzO7kC6nek-d3S4L$Xk6eSZ(fd48xHXk$peCqv6_|Zg8Xt>#oiivF5x5P z7x^;X8ep~etR(pO4s*Yqu%Zsf(N~3{2XCeTRMaGF91xb9y2?VSzpDEeh)?XX)9n2O z+@mA-#XvWO=G~C-+tN*)8OQgui=!>`z}->PCou}h$J&D~3fMl8bO*eWAQ8QHT8msW zlmt}0FSt;d1VQnd_FliwgYc3rRP)VG<&Aay)&(5NG|EU;%xIj#Wp0H~I0Q&%qk&Wr zSssDAOgnmeYJZYG6JSi83(@m!Rw{R(M>LQsOWP(ZM)_@BN@4pW$Vii1HUNkMAnd>6 z=|YD>NGyxFHS+Es?MZAoP_Q7G;G-g*u{<9@Jo^H-kDTeFIVEMD5L|D-Q^z5BDFd@( zDG*Cw+TolQuXmPF42U|nNaonM*E{J?aT8WuuDMYLrRlc20c_oIiXd&W@^u0`hImfD z1g%-nF{@qn-oYNLENL9|nW!86E^dk-*#h5=Un<^Q{c=wQvHu)-h*MA_^+e2m-N-KYZ5k{K-@ zgIknSP`S_%{5IC^j z)(Dt4JX0@xR6mgm8SH-S+^J%(!$r7)xlOeD^rv@Ig;C8wRgqE6NL7hZ?s7b%jLt_8 zCS`o!SNmT`BPh52m1n6kL(v3Nc9Xen(d{_7HoikXxt{sM!4Sp`REQ$_Alp!n(OR2HQ&(u(Dx0Cd1La~>7IAg`e zq#3TohD(@Z-je(c52Kz(=^THB(p7ebOr)04m^!VcnvDp}wC_p&WO?>sqXl(lPnH;v zbJ@DqPOYCVVrhA+ra8!sdzUnRRJ)H%^Wt`B^-ix$WUk7Dw;5TOB(}vSM$g|f*H;wa zr+dVY#^Wr_t0fAC?`#n#E~5;nv>gA3muSZf&AS@>rjEu%hnk30HtcPJlaGOTMo zqb5r>wT)O-^B5vg4_K-2yWlFE?$;RzmchoE7<9CBs{R3}N))mA51Dh2na5iMsLISY zSa4QkX7{JXv((pMW_;SA-{}FuN!8f3++>DJkV5RPf0Zqxt9tT6SU8u|>Av>Uhv3?D z;yb59jE2|_e_4NXzwP3FPW-Z%OJiCS)V&mBY)TojlA`?kq+FSJ)(}zpr#)yENb zgMLQU*h)Iv$Jv=M@bxlDTf(HO8vV#!iVBNDC2Uk=_^_?FchEiJ$SPETcnz`7`g#ri4o zrBH)ld$g*>@;uii_}P-{oT?4`X2qsxvz6P7&RXV!gpJ(O#0f;E^ba$uDnyioM(Yd@ zB>6LtdO;OPd+RTRMML=7iHs+VXdBj_uciQMCLuJml;ROOSA7Op#Z{0gA$MWZPaq{x!zh5G8f?W!^oPwwW|G2~`Z|DB_0smz@)+JFT255UB z*?uCUSq$$iG4xi_0U=Pba?AKQ$9%>t5 z#G00?>}{VHxy5eN0;m&V1g4Rj-JPb;T#+?j)t>kv&Ms4peA2;7a42shTDWt0u1PcNnt7w1(ODxLM5E^xm7o4wRqB7dTDFl6IoGg1NjaSVEtmXX zBTr`&$Df6;osEHot*n8K$^SPMQHSwXTEzO!X0e#Ff2R+gQv^m|D{4^4U=T2ufRVWz zFCrwY*Pffvm5xu_AZ+2xY(Unn;V2)5M1embB0+*l}po$$i`qWZguNbh`Tao`j z@vk4)Q*)`I0)x_WyU13Jmxz^T=k{EIjz@sji7RdC*@gY_;jNz1m!2fiJ-@TiNyd)m zxHlsH$OF~`eWNXS8F6B)Y6iYe3N zz0tp>Y&hTf>*6#^i*GR;ZJ^wqql>Hn?Bljls}Zlu-p?L_yI^$Nb0R8O(ZkM4X}Y%a z;!sn4UJY`hB6Y0U6)*KT>LK3q_3|KK>SZQLzag2`fQ952YlCc*Wd|F3h5P zRcwkoYCtIdaF8r86ph+WW9LS5E^)Jfs;CdO!5P$w$7H33-zZTm-K07t=XYvjPfg8h z7d6%4u#5v-Gc0LyEHc&(M%&U*piUC!i>LJUv(VG`oad#fcfS?Sq=u zbRMK!sXwIK^C(z1vBt|Ft@_h%V4pEnc&mKTKm$QquayiA@;$|zt|2$W+MkMc1OTLs zmcBg9qtggz^Vz28pIWP0my0o2D#@KtqgxWaSIDbhtP7}kp$M^-blkwb209Tz$qHhK zlmu~L+^+Z%&?U18xa0Us0mk4&&R@y~t{dX6XGlg=@`5?VRHduE5qs3>%o4j*bnBFm zk=nBmDgb)oW^xSEcxnAVay%7QLcK1U()lSwEReLo)l|6AC)Ddg$YY12c=)Wfr>Bu2 zg1E*5eSdthS$#tTKG+i`okPvEqT0VD#MEbB9T9PqFuz zR1C9J{^*eLp2Y|?9T{%oU||=bomUDB>Oe2$EJlA*zA$Vx?)yP+?W>Yvqk8|u{jP zl4L-$?Rkq#2!v|Zjb{8!=m=T3kxi~>0)T=s{R2666?INNiz6Fe^pnnp%7c;6(*7$8 zcATSw6h6`z!6R}I0o+chEF4SO6oD)os+B{sgSesm3FTgKnF5d`>)pQXvv>HOu!$^$4ThH#pXBxm zg`B;kI{eo130D^ki1zEu7e#`D4^bY&T-7^|S4uzqNO<^D_IJF)!b(sC97$%wDzp{f zB1RiG($hjtUt#Si6Hrcqc~vY}gfNDUjlUxyOWQ?eie55@oy~CBTLydPEEec5-lE5R z&z&rdpv~dWrE_J;CVS}Wn?@`KX1e8I+pTem1+Rh}3%afs!hTD!^ItYlX8n6E%YhwoNvL{dG(X&zi8r$?dU_teN$-ldp}EJO7Vr|H$&-e0VKrUATvY zIdm|G=NNPL*2o`GZkdAEM3y_n(3B95{&CPI(`{^m+{*-@85g}`ficyP5Go%fNr@qA z_VfL^1R$nUpGJ!+8qyR#_*a@?QJaWM^;;rJ>2s9jKCROLPif{NCZes-9&$=xl6?1lKldXP-Sle|{2 z%?3UU-mu5tn(y&j&vTwObDnsW(^8t%Vn}+7=DGvRP;1+y&-{{BZII#~K1KNHhxG|x zr8+1kK!~o!D6BUg&%Z(y)X$)?hyJm`TY2fk+Q6>1$Lb}ku!FZZ`oTuKW})qUa+~`g zRA`8BE(zJ&j+EWU7y;UC`B9%K9m6Q?a9`gQc6>p>j3{YaXdQAWUx7OD#2geP?(k2U zocJXP$TRC^lv7h#7BlD3UMmyd|bwUa_ZRbq!W&04ZVnucvfejq#(pOB=P6*#ZVPV*6 zL7Sd;QTKRTMg}(AcHJ@94sN1G8g6L!NKR6}F{#;GhMBGzwILY&sw44KnYFrnb;H$Q z6@^VQIA5tHl_!ogJb%kaT?MKOn3VXnwto=H*8N@47*=S6XsSR0>5z0A97vyfs|a&L z&LU9-3{xM{6SMkbSnvpD`9h(&r^5OL>w6{oS@owj==v`s*RcHKbAXZ}(}q&Vrow2N zXNEA_F@zeA4#NAerQpRX;Zfff0^21O#u73Yk#x-1uOBK9jgj^-tuUo z08ccs1EoX{uF~J&ZcdphJY!O|sNeNn$?4cQD!#bIg+&AN5;8@!v&LigfwZgvYcs-` zI&v)1Dvy}5+x9?a3s{A&ux5^Kyzwf# zrE%G=SuO>cjOcMOcv2J|cQPvjS_hNOyNK7MFWe{J5ifB(`z+NcfdG7~iv`Qf4{m=d ztA8)Gw8`z}SgAD~omWunmD*ENRrT~t*!tngaAMv9$T8#^2fx?DKsZKEFFUt760bR@-+%VeF?IUuNOWXKy!9a`LJ6r#kNr>wBnGtgea``exOS+ zRA5TXdBE2K3NhKFpe~X$M(QU-YYSoTY0<*sw4{mc$PKI~KZ5*@=FtvR=dqz_-f1_6 zTml!nb+m9$#55-yDxE+!`d@E7m7BE<&^DPKy!Ql4Q8xdMR z9BOpN2;1bPd61~y-t!0-LLsP zw-7!E{$Hije@aH|dO0=>e<%~fKdHz6J?0`~Vr*fc>|t+0%Jg4%rb1;cIg~%BUqz@( zNodrDoe|=Lx(Rfla)eM8ghWku@_p~lSmXaTS0}G3e)&c5|03uZfY`6+A9F9VsToO= zoG^8p_C9{fWOh0lp03^os@M^MM{&;x2_EFh%CXLkqbRVi3?9 z^Df2#)sf>Mee-urn30vj74LFG4rl$Xn=E+-_Y;#Za52dyT8D%O?RQq9zU8{*CSKde zi}{yoy5nehqz6ZQjW-e3ru02>r(%w$s_VBM^mF9c&1w~|b(eDe2(M+<@ zT|WGOeB6*+Vw;TL9z1z|=rEK9MQSK6oyY$Fjo14hnZh4}e;WVDbo+mWq5S8D|NmtA z`@duwtZXAUFOTYbg_*DfjDn;mZ@}olAPKQYBQA(8AHReL&+FXAb`hn`_ zuXh_L9?InVB!)G8iEVFfY_Z12d)zwB`E!eZKfXR?0HRT!X9^bq;ljrpA+#b4=@0~i zLx8*EovSJ6os&1lgu;>iNA!<=U3b3h2P=Yx-djXLMO+*gWjY?=mt{EbIdUzmH1jV`$}p1l2$X z2OF=DckJ(2bVR^HuRrwh?V(E^Z&QKu5nEbz>?GH;@7Z+yiA^1=vmQJRL)(drD(uoj z+ATi?yvndj5)~A+~n+!cLM&OCKh$>S195sG!K*DEBj?OyBkmNNwng z>qHtGYOc58CX_cw{omL;+ivD@F7Tb#%@# zOgEDw>}82vIG)a@wA!%F28kbXJ(3^%=?QNPm?y=lo(qA}Y*ESREcAZ|_5MewFMD&4 z;6Earh5!QkvF8FA+1W6d+1Z&{n=t$=ZR~6r{-;ot?W{~}Ej<5kjyy_5!s$Q8`?f}D z(kKk;adL6lj1^K%anuQPd0azKDBy9n5lm$I$e}2fS{4#h(N%bB6>Eqj5Y7S)0f$jC zh!Wy}y&i-e_FseNON_|9$`xfEo1brV+wWWHv)6u~Z#aKVI#LHn@ul>EW2A0{;|Ag- zc!K98c%sY-C@CDkX%sUOo2MlmWOXYfH=PufSvqodd4wkF+Ih1LEHCRE1}Pii+BM4F zt4!F(VIkV0&0dp?m}{toJ|a!DzBB;NSKUjmHURU%RU}vxt0cN5uS|e_bEK%&$Vs$C zLo?iR+_3=GqgK-JzZFN@84{ zbAr93kjk)>yGDOnH1?8l@KUa$@n^|Sq zVaM0cD1Xyc?mf-KwRAiml>!Bwj(LVqVETxpG%Swczc^sBZ z$msM0{l(=w+4vz^%p>#WKj;}t zVSUs3!6Q01g17X<{M5@360$^+S{MpjA^~2Q$9(W{zOFlf5XR~Nxe}I0R~Gg^H|YmB zxsBQ#1oxM7?$1Z= zaG*!}2t^%O!o!#n$K$5NW#=tn-J%IGJIO0tUD8*0_EGmofmn&~O zJx4y!C37lG#gCRWW`r~9SB(En{+;Hysm%G{FO?F=XZ@#Tl2BW8=mp%Ob>yEN?vHt{79m^(^vUv|4n~c7+lx*m0tX|{AdpD9N)^{<41qud++I!t(`Z8N1x&t zMz2coNJ>qoWz784I9wHPO@&Sj$AyvJM^ES<-j!|<6{!k7zV#LadobWZQ-#Uyp@`m( ze=(*mN_kyy(BBV6PZ^7Vl&P-)@#bQhBxFIs=rhxBXUdjANfjbED)YtPbH!C+bN)kWhC=o*YttQ_jYeen96DsJ&8z>XzP>hx#fWs-bj>9%d82StR-a zP8zAdX=kTPKe+Oi%YP2P)8!v9!rdizIHA5_;W(un0)sNt-@j+mOJBmr?1(&R(3(p> zT=U#YKFWo=i|(pXI+YF~!hD4e-HK$9!^&=Ss8epM3AR()j_&Q^JC4&y7n zI}Yp0xx)zSD!98w{Hz-57JD#B>=t}bN$eJVa7pybKEa{(i$Bq#{{A&fQ1&4v>{oG@ zjrdtQ<|q1aO#KZut5^1+ChS*vw~hE&Ip!z!@QnV&_8mC(E&d<}>*&3^=}GBci*J(C zDoDh8cJerE=o$Ho5%YS*-0q3X=h8L1dbQCYVtTY^t!BJ?Sa0?m!9~q|e^$SwJ?&2w z32yk{XRdohce9?Ee9NHPy6)RQTD8Cm z20YQ}zKTYC4}+rqY13+)w*ca zT_-z7wnp|fpXjJ5Q}Fw_$c5dQQ?zJ&zlK=?gohIaE`lLFL{KIRMdE8NelL+i>$^d67XRNx>^+T ztdxxl>jKBcBrEKYjiqBVcAk9W>rmUl ztK3O(Ukf~Z60>tgRW=sS8fTVfLyhCI!MQ_w=8>{zj`Ny53*^FPz(i*ueQ(mC)1u*a zh3YZ5@wCN51tUvvxrOkMFxjw9@&Nk9ddi0Yu3#b*yap03REI~zcq zU>7~6eR1`|p*_vs(4&8{($!BQBUaQ_lq`j7>cLZvjzsiRn`ygQ{r)W41 z{~ih!DV8LhX7J$t(;KWvu9|1sCf_rFZY677TPeLwfpbzE1^lqG(B#02y$vs2^OA1r zX$`#HjpWXYos-GkhKS~IHGTAG!`O4bsi;k6YRN!JZNS!KaCQdx96b=Y`>#9suIYjS-o+g0bmBEqildJG3gJRj z1u~xbzMGNbdqXLyPq5cMIHQ%Lln7057y)#jclWD>f{d$BZ9p7h;GGp5-%$3jf;*iJ z@JR*oE$cSHBZL_E2HR$0o$8Z1!KaiwaRA97=##?fdj5Vhk`uD0kS7}`i+u`lFU;(C zzr*wJmJmaax)&2dMRM@6&k-B_#UV;QkH7!MM1&gs^y+o1Id4JmWqEai@Z@@?!2C_4 z%7%#se(aT302ik zlhFr7!y1Sm;`R5@qXA3CTvp9?AZ#Dwo67yJg>-C|V{Scgv zFqDVC|u;>MwO)O!XsO*?Uq-3NdVcvEn6E~b zyI4LUomr>O*LYu7f|)MwUQA|#F2`Gc>F1Eb-~q&+C$^loyJAUoP8OEBcOu}QZiT7o z6Fe|J0^KFs+Yz!XR4#>A(K;;}eO5O!N5i=Z_QO@Nb}V%Wft-_{L>o#C8|sMrl8V7k z@|3t3TS0rpP*a^~U&clvN`7_>V8m_D`Bu-E!^RI*7;FRm0LPmQKLtOIDz~Dd5guOj z8!>0E5+`P#en!NTKbM^LO<(4yLR{OjEoulvrj%3GjLvDRH0}{M5Wt?aY<8n@WX3c` zrr)tKOi)#Y1B1_oxm8dPV?xZb*fBBab}jtaGgg7lDU(vvzD$+4tb~gP(3ec8tb+Wf zj*m4}hG;ksEd*u;++xjb{w*XM7`A7{nCq8(Yzhj2Bj|t2_Q2C=ESY>_%TR@vJq@al?)vX+w4i-?YhGWSXH%O(TsVF(3 z!b~Y)h0t(?NEv`)_ER~u5gUqlJ{qRRh6nQxhjTyDcg(n`qFHfdYE$2_JQ1%))T`aG z7XJ0oF>{c<-9Bp2al-&O(yO7L318nvtfS)dc=bH&v?sg?2q^NUx0QKH)Wm z=d*tl4kR>N5d{ocQvBc`1#prgG#c_JvD00Ee9bWYeejn7{~(^HgP-&@ZBd5a&!!I+ zYBJ{ckXTLt8xyQo6g<~5R+XHTOf5>FVYAe;R;6Y!f#L?J-A4u{DjzGFq!!VtshW>T zDpm~9rqzY7snR5-IpV7%)2KASn2+y|L>_0|0d2F%2Hc0ge;+->PbpYO>{9I8hgb)H~b@`QN6-y0^;Q_YHuzX zwZ}r!n5H<~C0W#_prqXp=lN7rWUYwJQmA0j7yoB8kM(>hSxxOSMXB~P;C|UMTr0OZ zfs@q2tj^YnW4A zLW;ZT3Q;8vw%^>is zK4{@oVNw{TzBN-OeFf&A4dC9~I!k|3s3^boRT-<9VxiT&hd_fzK!^^Jc}2=T_b;9g zQdDASw3m%}jJcQp$=@OLu?nX;C@;pcY*63TdClht`X=c zI+RHt!^p!t&W$L0kvzBTA=NqfiabMBw8RIhmkxE0i6u1n!TverX$)`Ag6@1+FH39QMT*Nt zI9OQyZu9I){_u3Ho{5Nc{oms9LA8G~828J1Q=g&gn|yF&wn(uh_(Ifqw9w*}mJ>pPs##j%u&W=LwfH(> z#agr_Lu@Gbw7nNGU`B$%arxY5F%O_1C#sVRHdmONqO!wMI>(W-KYI`RUSZn8=%HXD zx0Vi|6R`LYcL zoEKFZmXV(Mi$cSE$=jfEP?%c{mFZwHl@=<`DpO=@<(MjuoXJaGB*gf{Rw-u17sK@# z=Gl~Yv%dT-(Vzi2j2qJkp2Ja2X90|;Nt)E3G%LY2E&owF9_b|0Cs@l4byLUq;me3bo6K=J8^`vO6DtRGnx<|SEvme?@Y)x7*je_|CQ>{@6a->508BswHvDyIX=(wzn7!WMe?)R*UsY2O-N?Q_@9PTa$u zWj?~<-;=L}siPt+dg5a)CLn#F-K6Bq%u&YsEL^5jP?Olj?tt^9#bC5AUa!a#lyG_O2pgTs=fZ5c z-a^c<^gbS2xiQY9+Z$%UWvu{XD0X-V&Pm1bO@tWBf*LFhI=Io5LKulP^CccD858)G(oM?F=M99ua|;tNXf{96vP zG|4Y$?&_{>P%n_B9moEPs8j0$IroK1ZPCnp3yW7fEr3ay+&Cv1mb32Gu`-^Z8fQI* z8F!rkSqx7~oM0vN*wukJgM}D;)bxU9zrxIls~B+7{4(JiC$U>_AkCnfLMrTegB^pE z;JxJQZb9Y83M}=U7c-dQrV1p$teZQ0jX04s!Sp+y-zLp zu_M8gb?IK|%&JEBpQ2vG<1N*ri+Xd>0!=NSzl`*h5i;uBIO3k5CoXb>{2cKQeTYkE z4l8ad!8xg5Fm5WzIl91!ER*8YTLMG8P5uW@gdw3xZIN1V7`H~MLu(OSAVsP}efnD> zS*lHNE-|hu&bhH5F)oY3BC%jGt}52Kvf!MQS8whyZjEe{uvBOcTOu=VNm7&IR8&GI zZb_<5Vh&sahs-8!f$j%^G#SSxb(Xk5af&XXMQW4iTwY)kXB+R_Ucmk1>7L7sYm)NJ zE%24#25p>+@6O4LJInvbi2y^w2n@!jzLjEFvg`?3f|j>OPH38|BO2j?FCrS@qiuPs z5ynynXh4pSit2G96Jf&y!txpwCA))8oRSSq5i#}A$03*hLBeen6QHBx{ly90kOUu5 z4~YcA2>%2fn>L#&68wXjRt_M8YJ>HP^OB|Ig-@ERGh(c2_`ozTY%==y4%9>=xMi#j z#K>=43qNA;Ys4s%@mHcmofMq!5`!@cG^3Ft%HTk&K!JPkrNmUQrm{6tlOa$tn!eZJ z9(4`GBU2(DD3}tuaa`bUTuQupwlvO!Bn`9o0yf1|Co$&XDdVL1Zp?3;KKew# zr98osX;9?fkRB97-EfUsjG+5s5xC+=oCZN7F*_afM#)mKF?r&1MmS*&nh*wkh|<=S zI6)H6keTbD5Ru=Y|HxemJuE<5rcp+Fzsez0zV5kUv z7yFFI3dSRnt7ql2>Q(-ZPZsKZRlzP7PE<*&t-a2NR(MjW#PP1tm5`s2gFNYvLt zt*JhOqlpo1$lcn5d{l0h%#!(G=vbaIk{ChN((Baiy|bc z{>O{y4s($@{d{CDM_~O=jwrwi824gQ9lRzwtr93xBJnTIV{MU1)1)NBjiG$$H?|*U zz-a5w`#><78*bcL$fa~ck-H8mQ_;+&NUTc&!g$&04@Es}^{-gY6)8PV23 zFv0smRT}JvvOns))QELv_7!Gg14{#uFf*fFlCslXLtXTRZv{G24XSZ*gMb5=3L;UO zNiIl@v0R0u2g7iiDd}1nSTCi-N0z?KiyYitCl27r{8HFMEt)~d{qaaRJc=RpFjl(5 zh$LK}w1$$pAcIWyrN}K=4F@I1L75Aj(3FStio8B5j#k_s;E$|rrLtwTxX+xKV&GD@ z;=vJVy>j$~B6WNECW#1LVj7E9xnv=CF=U@zKQ;3>YGs{}#Y*{n?QwxgH#^*Wn)Ag{ z!^LxK zsJ0aun16wZ<}^XTBdWLbAw|#B4yY#wrh}+(wxr5m zLiyzsCu$AUe~;S7%j}Y`L$a^t_fJwwgY{tehb0FDC;#DN2npK&7x8AQIFizb(}TYB z#tM3IY>BJ>TmCA^(W3^F>6|+c&<}?sqi*O2Msl3k3Ah&-86~eIoxJ+T!Yzo}zzO(= zvkF3dfNFrr6+j77O^t-)E#2Zx@?spZqZHX0iDV02pKy!i&=?lVXpC&D2wH^DL*6$- zcQQuMV@!hI84@-t4k_kvjc+_0hi`1{^M$li7`THOfW5(XTv9SnuE1)gI6;^VC&|na zjg&Gn1rl8Raf2LqAiX{`cgAah#20I?r=e!UOL)VOd=MEx$6vY_G-s^n@P`vUl^k!DRGgY7N+}Y#1xj{GIue2xH zhW@h!uFwTXzq`H*-39V=pJ@;A+^^FC0)G#Ldzg8{cpXse!S0>@+*8g2S$(S`QH~&p zSF{=5qTrT`G&5w9zvw4yT?BzxY2r|^rAf!H+qmGU3<*Q8X}LcxgCa+62pPu06QNsoVW;!`*6$M@sY26qc<-e z1w?JR8=7njj>^>)AB>*s;--sM($EYtCb^VcILN~bs9*s?MaS$9!)V#F>oh%x>t+6o zTlMN#aQ>>qjnkkbt452xzt^&NvIS%AhGRc*P3gG?qTr`Y5WnL2l~h|i+iUUaGFqWF zoMkXA$v+ZEd;cyUbv*cZ!3*2CjZTEg&j;a*YTsYU%Mi-C@+?T-6# zke>x!;l`50Uni@P$Vz23gjZAHt+*7fQY29nu%TtZ6NlFv05+Pj&RC^@c+-$1^Bd_^ z7@gbwjcoS}zm=;W)KoF!NX~%G1AFX+`6Ogo5YG=jt>$WFsx+Foco z#4yPR+r=p53&q`6c@^hErZnQzaNdD{ksc3yozJ_`ZYax+tdY%odO(2x4K2rGfcGBa z&iGd7i6oHooNvFZm_@5njPNgo?gXUJj0frjCSS~7K1iLw869~ZP+sxMUZR!Y2TJ=7 z>&?s(o2DoDKLlAHA%xDT%2tJqj*xv~M20#vvm#5Z$Rd@C$b%K7zp3;1lS4R;sn@-uLc3^xnomz?@-ESZo1vX? zs-9i_uLK@c{JQ`r=fIm`CpiM!0ydbRSAxb5?KrWs*Z9IAplukjy$%F zKzSs@GbRlGukaH);7`0+e$Y3HJU7tmZp2TmoS#V;Mc3DGn+@bvvo9lLadh7l1hVY- zSuWNIIR}1IAM#2x(I7(O3=Et-SwoMCJ&`xEYwsdrh}F*T7t}l}1OBaZTfq5_YzscT z(IwFf4^NoK1z8K+*5CErV|$2?UtPbhdw5UQhEu@6SA{vIO#2XN{86m2c!rmH?kmuB z_3_qE;C{JWp4u6)vWKxxUzQyH$M^7i0xpctox4Y0`zJL z`m$H5cegJXZs@&Y9I^)Q-0{bcl~zglLS%Lit*P|}p>G@12hLYnu8ihiW!d7NYczPq z!e0xm*}B6g50`6SKggT@`9;y~J=gx`8?gR>QuY7k3gwqsxyNr({(7xJ_Vec0BgYhy z_q*88q;bsoNCCZOatwK?NV(QV60Vy7|KEm*0NxN1_fz9N4-W)H{lEHg zal<5f(vzL@AruW9b*4W}u$CW_9R?c?fS>QNLvEht*vE8#Y}*3Y>Z+{!!$gR%r0 z?&aY+eC~&>7zkduqn*<*I%9(!jL=AZwgkz(5^&;8r~UXBnE(#(!+f&jKU8u5h$UJt zoPOo!(}RkNb&5-5S}<6nVWGW)LAS4Y<+bO2EZCtZsO+}$FPHlqCeIMWE)y&s zm!DOwk>t}*m~^vOZ8b&BOlzjaU95Z@9K+X8+R(T23Z-8&jHsXfN^Fj=Jr3x%@W-CS z;26XOLeW@bxwedpp8`yp3tZ?d3eKQ}Jr{U#3g;Ae>F^E1E6XNSZMHFBiaGpHLx@xTxg$!vUjK3<2q!%yJ<7)-aFd%KG z)SEcPL*FMGM*p#EsP-*cGaJmV#8KUq{kX-Kv6@7?Ew_X#F8^+3U`pSGfuDVr2qcFS z{ZQ`^_dD_&hsV+yWmr2kCv!7ts8j9vw*dXX5ko?VVZ%|rbXy5$)3B1TLT#}LZD4I_ zd!xT5iMdVAh%$dIrwl1`6%V90P|uV+o-!G^egADWv-6&jBz-QNb2a_; z&kYPoTVk!Yv#?o5^w{Zrik^znNoNyl_iD1T&x?N zJjw7T8gbtD9I04Rrk25ZZU3FVx-%awm>*$nUhHmt%ay3k!~{{(<}=Cn3Y%Dx4x@Pi z2#LM1P0C8A=u5UTqnJkOoy=VPk_DOKF*D{cvYc9YgA^z48cp&fMqAk5EjV?%N*?#> zvYyJj1*N#Vqhb^*8cbYy8({@LWGT|~_wtH8{=G1*>+kk%f~p$Tqs9_74*79uQp{9b zX8s0g8W}c~ke6tZj95~Tr;#lGU_tGgn`TAkt?f43$%jfTY6hFoJ0Pjvf&kS(6zp0s z3x~s+0Be%j2Oab)L{lQPFPAg}*tZkNG*>^tQk#0Iqy$Za`C@~X4Jj9yVXz66MLAmE zRm{a~vXN_0<(S?fnX*4cNolXD@;<>mU^=g5H%Kev$8}l4Ij5qWh+#R7V4@*5|yeKhTU`a0MG3=dK5kOccd8r4zAEKaWu(9;A{K!Z{e5 zuok>VIff+I9{GPM#_jp*uO0iEpvNd>+>IxcJA%IhYTq#=$HQeJEhCt5PP}6Cu__nIN)? z(^TNs5)(u38d-8o#>FQW5SfgNcg}1_TsLUPFo)`_6+@m49E&yBl|h<2@-_u^K%4fh z$t_eh{26;^5nJ8rtXVfA zvKpDWeKE7|21~mdLnr$@@1XN66D+)$VvGpAxWN1#mC-TIBr%2f2pox*`)@gcWLm3Z zemg(C8ZAN{@YCnY1&A_U=uuYm%(AR|l8na>u&ofw833&e1aLt!T+tnt1sF=Q{Syt^ zCv6uu<#u2xud+=HMt;l`kAkLR&Da9Zl>funIR;l2x7ofs>U3<|wr$(CZQHh;j&0kv zot)V07&q^{Gc_~!&fJ*~XV>|4F2hRlU7hi=7wUDM^_{FyYZkAtp1$n&|kB0C*^NtRei%VUoUT; z%K20?M7HxfQDpZR#+NJ)s1o}2y#w7*u_?Ue7%EnufQ&3V`Tf!Zh9+8TZ@L@&kXwkg zPdKAZP`FPF^Bq^k2}I@-h2#rkWt`<|)XY8U66y_HH#oE|peCP|Fuca@*((|N*z(=x z&e>%S@|mvNKXx~>a_YJkrzcW&&$IE)TWc7$^fWZ-6}~$d^_KA+jdq_{Yee>j!Y2ar zAPR7d1=Ir<{9Ke4o+?c5Lo9J?SqIkxA9<@O|GiFz&WHBw_Ln`c4m@@%4a;7v0qG|Z z)4Mv+O}W@UEdczJB4*zfK%|2xyLSyJcn)O?^yS!^8zq2oOmb!;w4n4Pl;oCHf)TEe zJ#eG?TNi`BbQ;CFM#{KL4nx)DFU?x}1a=&fN?1d=az~k6_7jOxb!$W0zdR?BjJiFL zHXt&Mc1Nl|yn7}cCps;JL?JWlXFK}brg+Q!aNpODe~$(Jqx7x;i1K z9jyLU)%+`(&w|2(oeS&>j6((GSp7u(YFSO? z8A@YiLp6#eZB3h2n*js{Z0nVH;f871;L4Ecf~$sXoA&mO8XTqSd(r_w#yld0PP!h zXMgm-5=PpE4g;PH(^fQMY}XBD*cmfPpo`gJ&K-9OQ;F=o3vVq0-Zh@H290g=FMS^F ztGy+{Fsw-Ff=@w)sg>eK>InMEdY#0 zz_lJcLWe3PbKIu)JS!XG6K7*iKbVD2lxWJ&|=1F?I6}J^uP%w z02djAhY+wwiKp#Uz9k%Vp{cP#nsEj>)rlt49b|lG&rucU3-u2A@2~VfIL`@*u)NjZ zB7Ob)NA}-}_5TX<%nkdKAI|&yTy9RR(L<$?f`Ecw?7=bBUj5PJ&_?#z5`wok79mtf z>UP^`dxR^eh0_ln<7dDR=isB|L-RpLL-l;`KPO`JPtg}!yL_e!CpHeZBzxIoQfBT1 z0511^B1JTs?VQNs9r+saq9E>)HKM~J#IdSu9n;Q|&DS~sT8HqM>`3Z!1L=sc+Lfca$=B{8#vMw(6E6;tKMYws}$VAW;A6 zFdin>8LT=2IFLOiolTH`-XK~)IJwKb2X)P5@KSYw_HA;bIl{VEqxphYW4<^<(Qg|Q zv(WDyEJ-X2g$tp@+1(HO`Lf<;ytAP)>4guQ9TiQr!o}o_o1RZOo-;4mjy}g)F9Toi z0PY{IfJ-#Mtl_HPzPv{EZeU+10csk(T3QT#gs4%{v(?CM-ehQ^mP-U|i6L8H0|U;X z1kyPFNffYkHjG6Bx-FJKJ=sR(@(&#gcL5m9F z+yiiE=*6%b@{%yX6O16tj#>CNmc-i3A&m)Dnn!^z+(ezR`tG^L^Xd!e3eoi_0Z*~` zn+2Ke3zFptgag`wPzt%s)%2AYE7I0^T38DbqKou_E@!V*K;$ao+}@s<35-P>L>t!X zA;lT&G1R6{=PdpTcg1DNuTV?P%p45`J$lFuiQm~rGj$CVYDP}&`EPJZ?&3vdNuP~o zxdmyU)XAN@|IG4C!k%7zq*scwr>*@uJ7G6DPM>%*6f4QS_Q%LlqQ$b@)L4YcJi`2x z{UwuNpKzPj_>?y7y&?!`eyKayI0rA=8@Kl@2(FygO8b6Ti+IWIc^%PTnf z0(y!(S(ewK(d^M#N5Tt+oaI0&vmm7f$(Dw;B2HbDeY`G%D9xyg`{b06H-m1t*xFol zCFb6zI0T)_xNXytHDTeb_6>*Pr5#_%K2$rYVPjCn=ehvzR@FWjxm8Td;|COe=g+XJCIqo; zS9-O%q*B8sYUrUf3(GY@;^^1e)+=IrWqk?Ctkv_BR@F#+9pBEG>;vPe4iQ6#Ru@OP z;mx9zAM0Nw-z;aPJ>`uQ>cLNN=QaHm17lyx9aWIVpA+b0m|%jURXC~@dS^pjf+^Hq zNIbWxcv3pyI@`5y0GW9GQ|~igz-BJw>r5=F#?niV6E;3?aQ)+ke#| zZwztbB7>#Nxu%v(=P@Eo{Vih$Q8={(FV3jpmuS)wG~;(9JQ)FE#H%CtGdT!hqR*U( zqM~r+y(7_OTcpE=0!MkJ5$96Y;+E2q7?c}Pv@IO=DY>ue<*84j-#lB>TEg|QsA$(x zf-lIJ3K|e;n^WG7eq*ap= z_SF2F`v85U4zerf@i(n-_URKmcPwY?)k6(@HgdPb=8iiRq?RAm6d%HFpz>~RDZ}C^ z=Gow}J?xlcBMknm4{S>trgzR1>6l5}QKMx;SM!wiR1N;}1sG?o-iq|~Lfjgo+Dy)n z$Rk$!>OGJsWwv^(@#=mN!zH1FD*m5EmpO;)l7Rv*f*jP}Gm=5a#{KsYd+vW1_VdB6 z_uM0z*<>4<7`8iVrzZ{DAn(N{sD(=RSJuvjf>>vJY4C<8@7x&^LkR)3slY z!x=1#2q8GDp&Kh0Aw6lrLS;l~o^@~JX zyy&>r0)Kx?P3H4G=>3J<_=AEu&9$`e9ZLG**v$AE0oWwo#Bp`xs4jOI_<{qbPWQKO z3u3>^SxOc>!pB-8WZ<7RCix1xE~0lIrVzV9Q*q$_yAd_gef|hOKkH8a*&bnP*ca_H zEbU_mjzXNP1sa*X(Y$<^Z&kAT z=+r#HoLqK4&r(H&%N=ZvU(yWvZ1U1wPFy2HPjq#RqqRoP47q;UyIa8g{Wz7_Y{?ca ztkwt1Zy#2#+~Z0uoP)UeYmUmyyD&IYd1wmq-czyvFR;>k}!voGW>Ml;jq2_*Iwqs0Vvrl0}fEZ9!WUG4ihiY{$4Dc zp2VXDP7M1XDWRt_>J_>a&DR1R{--x z4Udz;?oXIG%q41rnXh_Y2^vrU`x$OQPTvO(tU;NO$U|rfD5TAXN=4(aSNl+&#}MiO z8hotf7XOWQ6{i?5tR`D>+R*Dd##Siag(Z|H262tvNPf6GP~!F!c}C0c$cJ-Km@A=+ zp8u>~j8<5je7<2r1mAT>;s3RIkur8OH?%c%(6=))H`KQhw6(U=chGmTb@*p@sY+Sf zc0mQrN9JNM{M@OC$tsAYpb_-gurR5~N)ja_q~5sjkU-9SEZI`Z;wX09p2Da1bI``M zAyWq`&aBB?x#o%S89kB3ZKiAlBVIbui~u+H>E3<&$?N&4$A=xLHYgg&sIs&*cm~M` z$t&Lg3zTi3w>_UyOxy1NJO4+BxJ~-j!LucJ;1q z)kzPSKVMbDqvhk$nMuzy1cVqqys6~oZ!>teY~Fu-7qrdKUUl4AYqdEWpDKOar=GAU zZeH)dGV1#CCT*8AVOKVwEVmfNQdb$XejdAs&g2U7wC(ZMqw$!n?a{Jud61bzQ~L@`YNSU*m-z?#oIbqH zCKMlMwF?_Tq586kss{Cnu5cq?-={_YLPV=3yV&0ME!;RH*_9cK;?c>zwRm)xn$^rz zMVgdiiu0%L7)BM4&r{QX?BlmjkwBjBVLhiH5fU#_^ z+NTQDvXdAYLe;%|Lr+6#X7LR6#57qj6bhQZOy_?OwLieEmxiJIlRDw_8Rs@<{=UGY zWz~!B;Y#eS1I?xs_oCUIOK2y5;#J)@L&B{6cD&KwJ7d+FTp89*Ndz-%p*dbp%`zX5NpZ}5oRXI7Zr{0=R{a|SlxXbWM~+! z;L*>zd_VIHOH!LOewo#>1*SVBR=hb}If$WCV4|E4(bfR<>1;KJT=x07a$zYLGVuW2 zrJ;iPIsBxIMgr4=bliAKlY>lR514qZa8m#;UVQkqFKt7vP7k0v_K{oyA&gz%N2YLs zb{{)SC|2eOmS(SVf}|9xltoa2AcCqrv^|9x3dfYuZ9JR)h^adg$UZTWISSzyki-G$ z9^xF>scaN|$_MamI0v#lHw8dvG14jDElMdoCspoA)aBqVd|z{tXMR@z)IkAh`()!J!&`cQxEo_E77g%Kr80cXtrly>rC&5e&z7f z!HqZjJ0A>ekR3S=(~TV35?ebE>^?kjY>0g1NdGfFPU?m%nwvtNfhkF1{iKsDi{65CNtKoD_~c<_mcJno^T)D2XL|Z*#zLaYywqQl;^L{wQ=@tye;H0|PHiBK zPV-#9?M(C*5S7Obb4xm2W)tJ53`6oOr3X_t$K3R$!-&roB=Hkf*q4T&z;y{@4 zRy3TBjmU@Q56r5`+EN8l6_pEli!K&zv{`;703vI4=2&gqg^Mx_V z)DarKWp;*5Vr6>U|u;Be%UZXXqA1c?x7fbv*id( zLIe@U2PwN39;8VzDnou7(fKrij17vD)0_Y=1K)8|ic050QLzA18+$j&Rh!&aN{12y z!|;1Ptrn3qajAr3$!TJ`*ZNxKRD~7gpgZ3oN#IHi4Cq<)v5~C0_o<-EG|5el6UTm< zf~5j;3K{Sb0spzo1btE6l+pb7AqK1M_T&XuWeBx{S>nL5Z~%1z9#_(sY2xxybECtW z0QnjbKe*L9c=*cZS!u6*VKp}V#c&LG^TeK^8Pkmt2=A~g6jtnR$#XhiQtMmw8&j`E>gQCVdRzJLs@>1nSH82Y9K^f@JgMdXYiw2O<-D)8w4LxW;b=c z4`Fe{ReO64@6m~dVx=3#h!jQ~Mn{!%XZ1*7mra*I>V&Mugcc~1tUj*@=Iiq3yF%^m z1tp4x$WBhCM8`^UlECuyV1^8`zP6e{m0T~LNUP0Mm&)Jj6wt}S^%|-}ZxPIP#yhyQoraharMmM_9$NU|X$uQyZIMHg zTnLcDIc2H<^%uI=yhL)VF@W;j-`|hWFqfC;7hBY`j`q+)!3B{QT9C?PRZ7!k z;AceBylg;!C^QzZMFVuIV-ylNoG9Wk9Dy2qsG^SJ&4MAP3~@t%3x7L zm?XPKZTvmS&>ZTvILM-Y!-QQJz*}Kty`5CgYy=+PRFD^Dt0n2&51^rpN7@-p)5=mE z1izCk(#&cZ|lroPwK=)hSzkIiowTwil zD5bn%uk0i9)J3GPrX6UV&x?Ft#w)dhhhN^?H#@!%<*pu7K7c#OmbELAY+D^xEL9FI zF=ualf@hi~7drIpLQKx^F2N1PD!)P!CeuJ-E*j_ z=yuPMksLe|ZDCol^~UnwSF;yNl!?q{1MI)A5MWtDaqr@wwWfx2$KpHi{&Dkz@ruiT zhud;aTIUuES8#5nb$p- z0F!kHJe~lXNrjg5KBaxWqglVq2ypq6yThLYYnhEJ)K@LkgJO?%!Tx=-yrUuGG0Fmuc*EfA z8C>ckt5h@F;Jdqqt6r;9v|W>r>uUh}Kw;CHiwvNpBPcg>3}29)gpTs(KG4gXmR_S< zZYSRuSWR^Ti`*6wE@{vhLe9<&Htzb9NNkMe&6SMP^)vSXN0)2;QL!9t5Iy)KXG7Sd8y%-YJZt>r2bsHBZ3AzaQ>C8WtuUcw1G`O-T@*;Z3v#) zW69Ob&Xt3vNzB*%JQuD*S%=+G>p6p1D&-FFrE1Q1?v*^VTs`AyT!9h(DJItER1{C= z!R_$Y;*$o@=OLSl%KOO!bfb^P2(45eR!LdS9~)OOSdOM z3bS>DE~(BQ%aOb+3y_Lw2~f4^24O0ZIOT~w#>`RAhHR|hR(2((H-vLlS(b03HOVkJ z;|?OpB&89lHl>;@M{NayCAbw8Gz15TP&j^y+ZN3Jt_*Hg2;pS}omdFTBNe#lPNnh3}dJG#X=5jY4i6)DTIJ*iRoa=j2)yB0-$nT)jB;Dhv(SSE%a48 z1ZgzCTbt?3KiS&EJL;ic`oZt=V=;cywg>LX*mnJED*NkNj;s3w|23f;V&0kOND7z+ z|6P(@cUk+5_unP#KL%x*3_Bu_-wwOjx5Li%KT244r*9sv!1wk4@z#@7*IW@-(7(O) z!n(tsNVcmf(td97#PH}B2pCp@mwIr_!+m-vp^Jv@wZ96{MHwCFtW!vwB-;x;&DRs= ziD|iJ9RqI7Jsj3oK7V`Le);n-mzckKyNcA;f>QI0JZ-n_JiaZXe;n@kK7;iBd}j$D zs}`E|AJX8UzBRaWNdCP-Fp7`MPfdl)aygMX_L0`m6u~ z{mejHb9?6jy}kP(t<#Orr|Fgny?Jn0LD5|dIH%~whnt54^;X8CEcjP#RL5dg(e`I+u!!Z=OQ zt4wHm03G>Upc&5WV#8mYP$`F9Dr3JL>1oKN7$Gpn>}bv#*Q5&J!m}?d;B5V+#A!{V z(XL4qmvKcA5SR%Kn^<0ZDDuC}C<*rneL+V4I&*{=3I_|@b_K9ysaE>atM*|Fa<;`tv27N;5 zuvHG;FW!BG`b7N+-oJF0t3VUd#fK=98Ed46_41+7O6VR;6|yWwYGX)X8I85gg`j>n z*I31WHT}dk&$iuDb7CmQ=l&qDgAkasrm*RlU z#au1wjM>S7@sC`^+n5m7TWaW?VONl5-ixH~J{dRi&ccoNJKq4T`!~X_a*y=6EJ72* zC*%nfhRdDMGOa%^q~W=(cUqJvjs8nufYv@U6_!l4Y|HC4IRrgR)n0U<<`xs0b~i0V z@VS%E@vjoMQ0XL8vToDjD7pY}v15hqeY;^{2?UsQ4CsRFh~gSCq331VN`?<+aI3Q$ zRh6BnLoVx}XoZv0CD*0TN`id(R@WD2ni5s};Lh5L=%J<{qWvPHYWvR2Q^p{(c}L=q zR!qms*G0GpIjb?}JpU=&22`S?!xf7)h~wn+q1b4oU{xRRDx{lt=lGyJ83_7zVMc9t zC)JMZzpvu#HF6<1D)$+g2b1r#LG)M|7N#-{ZOvL)!bn&%tZr z4IT|bDLClT?+R&3PA0cV;VB}>-5^-7(#mzk1bnQ3ry<}cQ22p22;${aJ`u+iVPk$9 z`a?VFl-!`qVg!m6YLywB^}IxXBCV!5m8N-84Cq0)Hst*GxAe~45BW68glBO4S5=g& zl*{0B0**qTsr|dZkXVC`-62SqQjj35l2>JMP)WpPhu&l4{r#;P2I0&>EBQI3Kls7m zGtYHJr@Ex+F9~WoC=J#X9-BdD5>2D_>A<`%Ro{{R5`9IjYpxEoC;AFpW;`hC`>x2N zwn8hvz(s)IR{qGXq+3*ESq#L7Li_;F76f;~HqI0+!{W-cji1816rV9sbw7;6TH-{5x8g~N) zpQGRJ7<3cG!;X{jz?0K*8gb5~O}#&WdA!Kc>`pi1!leZMmx^Y%3@)ZX+$au?lyaO` zTO|GwGC+2pO=eztagH=D{?HdeHxCo+;T!QntQcj=wk)&UJhIN~*B*oY#3S+m03*@a zI4)hfwvL!35&$rr4I=#k2s1^TLI{;H{6Qk|5+ct^kcX6Kh8_*!0w{0wh@mCUuPh9* zE7KhM#?gGv=Zcf~gvL3f)}wa?8zzmNkpJcqmK?DT3UCell}u8!57RE$o0-)1iIlDQ zss6nvYB2QcrNV(V-pj9qg~11IV>I{vUe}@uHcf1=Ij{E7HqVtXM`p7hIu|?04BbK zVLD%N^$2|5t@4Rq)UC?g*52ygk!+&L*6cK%V%1t!-XDSbj% zk&)vF3zZvVOSOPyp%x{4=Y^{bh;CuIepM*lv88toQ|;THkQMah60?UQm)0`cBQu3h z%V}DwCkkYDA^)3?c{~sIiK-7S!PkF?E&M}ZwA=PIX?+Wf1K9sAw(uWE`2P?X|7MVB z+hM9Af2wrMR~r$#T#S|(t~p00j@M%oyU=~7j8|dIg{(;j@vRMfI#ZhONan}I&WUJd z8;6kA1;~?nng?`4(z*0PkU|Xd%*HMEq92pdbjQhkAJppQ@d9BULu<{($L9SIy+DPgg4ml8 zmJ?79#pEYU!LWl*9lSNho`7%MjR)t6r44JKJ#$my-+!*Rj82v~x>IwXr|E$BV?I(R zf#}|#)jSR%K-g^9Q2?}{TGH96`} zY9k9=h?mRTkXdf`0_-^_E;0`iWTQw96(=(+l~roUq}*|3B^!*pgF;WnXI5+Id7&>P z3nangmo)&;6a2$!(eR-B^6nVUg&bgwep z6gge16lGM7388TgsbJCVwl@CysA0lg*LixNKzcNz_`QY!9s;r@ss9e(!Tzw!%ssDZ zI9^eZ!S>Li8u5tZ#Il{zLLR}TB9+aHJa$w%4NG{wWBafk*uX1akWO%`|QibH{r zd04n;p2<<)gh8ckv&;2bCuPIhPWD+4+6y-dLA|5vCutOL{VaD5Z z(CX4B!HIfVKSdPHE;GjrN`WHfo83*%3Zn3&>p&V2EbJri$QA*N7G_Z6b|KUeGxEm` zOZMbh0g3XtJ^-yN&7E^YnYuJkyW^zToH3CjCkjCMY=I=ZXYSBdeTkg@*L~C^nbhXW3lIM!FjXNZpcasr%ozf(@b&CRMy6KFx6g3KO;ctM}jb_j8h|1g;vcbvZ)fX z?x%>I+GV?-(6rcG$fO(mD67Pl846;>$J{hXR;F(>o*8;BPmS1eu3er|cgta!aZAi? ziJ?=EmA*r2hKRhXU)h@q=lH-zg7yY`bE6Nz|70S-%K(M|yi43x-C#?7f}Krhfz0-q zirHL=lIF_G{%|dbyr#SA>*{vMt-)GtYZrHH6k+s(&DXTJ>bKFoFWH2?-OA27tB5KW z)Q~!FjllM%x3(iggKYjnyr0%kcGStKAomODV$Xwe@k#$gj9g-(V-dEfP{ zN2tq>FWyQuF_{^JMewr`s$dDRJOlRah|qxIr8p;9|L1LMtfyx}YdAa7J%11ODinvH zq`Fn0a2z_2dffKoy%cdnAWx;+lI`XbrOKN-MqCB#gb;Wsd?{-lh4l3cUFiGj_CZ^% z6W3a075=lHt)o~s1ua2ob$KXYOv0A9VoH0+`^-$#Hn@;@AKNjo3pW(7kSAwfxp5?%WiN3Rh}#7?!U0&mDEI~m7T^zSq_8%5aPO*j$Co^I>_x)K*;u*D z@R=yBwOu)K2x-uIrS2oCN@~nN)8cuSutzu!=k@+60zj^%e z>!I+@yYYkgWS!Z}q9Om|=U#)w8;0+BWj?+RcbLa7`!76o^PULmvB&34jAl8!w)lan z`J;2Qfn2oXT;rH_F5V>#wus;1;*~Mu8gOFGct%+AE?DwcJpHBN;k?rCax<^_&EOG< z7Pyi*^ftta30-{A$31iNl{ z#T9|ZT)y!lZ z_|7cDw75ucnB?WmwDg#mu)kHzgnC>vlCgQCf`&TyjsTChrU=G z`?rEe|L?3Y!wy0n`nN(6{ohz1f@b;-jzs^s{udU=KjVd470Js8kYvrqQN)2i4JQ)# zSX%iE_IJU-35HwIvJfQBn>tq^=fC5H?0mfQBoBnAs;}A^&4pY{-zG@99+x!fLiZ!? ziIncTdFJFpKCCq^#}t$JOjk#OG2wzg`c;?bb=&d#G<%O@^?L`b?_U@{?^bMnBoUC` zS`Z5sGEnyhbVGfI;MI9({Ak3;DQTDBC^wyGKk2(X8y)Q#>=**PUn7HzTV67dbz=Q@<=#VMH zV&f=P2}Y5ZN*=|+>?8UPz6fUp*>8aZn9hU|KR)_ZG0?NA>b{ zp+VJf!b;_qJ~vqaw$rm<%901r9baV%9&dAO@1W##C`>Xan{EnpyP#L@F)zW|^R_$; z;Q}KyC&uO&p+xPh7$DHvQ`uN^Ixo9Wmc(oI(kYgkE(m(j??p7 z66uSDm|9piX5K*$!BNMQ9&_=9vtw4HDe`#3h|TU>=}&3M6qqtaV#m_e+@~qhmNIyi zt{WT3JTpp@fJ%9j)z@#<&-NVL5*+AiljQ;a+Zc~LR#ydqmb7?52B1&17s;GqTt);i1%ct@=vAS+Vqqsg%-N81L-?(q@{5dN#GTARqQ^@CF%rW3EX5 zmy5+JamWXn(ycOd&8{-^_aGTv1H-L&5A(S=!q(gkdT03to8AlcpXSIAEb}`!EBYh1 zN0lWTbO38OE~Aw?=@QWMIfhR_u0lP7w!vRU=wrGfKuQSfjUzNW){-4uDB3#4vE>rK zw@FxFv;rX~R8#KNFYSyuY(h?XmeQih3?B|0%1O*%%8^cqzmODU5n@bL!t$Aaem0Ui zo-4bz^5OcxCmI{vPJiJ_8AQ=!pIlv&60piIOuDmFya5~NChiVfyLKv2F+4C?s71H# zP+Uu|#ylu^5NmjZy(d($HzUktX;XbWlxX^b4`#GyQ)6JzV)<+bLqtp8&k*z_h*%}m z)VVEk_(iY6EzPU(>LgqTxy{|WG=-v5faZpM=kK_*^AR#XgJ9KH+mB9zx zgTK7z2J1Ta&DgPtra&WzXm?GzcZ!RdpVa-Vb%G}{UtoL0rxgV6+QVQzkmYwINWXdH zetqsZhj>_qc+f`;IPnOa<2_#y_8%p(0XDqCt-#D=JXu^>o88%NIS78!u6hksr*6aM z)x*|Bdk1A3wa5M_~V34AYqM5o$JBGwLWljLsH5WWz8kv#sZfk z9UBw++7^3kypF&%#WMapI?mA$6^%3Lm|YPzOI3Yu666kPz!idITT$TK971r8C{P)* z$F>zCFU%W_nDFVIRfzrbgn7KVH67kf1n|4QnLNi0_>6&N#~X9*o-%DPEv;Cgr-MWQ z8~l!qp4^}8T8MH-CzMQ4FsYA`=MU7d(PF@0@kc$LDA)1_Y86yTVa+~~d%MV?Z#>Pd zr7uPHD`>zt_PEIdNsK&6K?%_f6m)hA9MtA-EI9*-W9tVc|Bpqh0NR%8Q&TBzbS$JRuv3qW|=_de4)yT^al4qaO zYdri-X=-UYfqY&c7)5v3IMPd{tDMxJ9+YTuug>8FG=Z~UCvx^71ifq1Pw?-tm4{;* zsqOqL!2vkNYR^t;am;R*mvfi5?t5kd>%#XBH_$RRU8uT}dx5*}a4h#D;lrV`Q=t|} zDyQ(J3aul*M#^q;lglt}Ibuu29(lOYrQW4(;kyo1mj^e@*l8W$GJ0Z{>zp3?5e$}A zVdpjIwB(B`;#!I`H&SYcfT?4Mk6gdg%@1`!kH`+raKyd2g+y3=Fgy`HGS1TX_CAdv zyyC)YL%e(YJ3@cIsCf4FS3o`sBkm9QNxgYPA-jKpMnvD}Rq*j*eL3GKA-j;k=?*VX zu9r_B(#j|tatBg-Rf72=J%6@IOsl{wX*9he%+NvbF7o5|WS2 zzeEDHSD;d?^=XYKFeO!&VZ=r=(qa1NWe5ro#z|N16Ev|p9I`BU{d#^N)F626N%Gc8 zYgFKu`y83xFvhvDKP_WKqwESItaTsf9A_P~AM5CTy&m5K|Azv4D} zCfixBcd3l9bl;NTglb)>LLoWKwtiu1(g)R=70xO*{foWl86I0+Z66!z9I{||zyyhj zg#F0oOuTfYJp&Q?(^%oIKYuMj9Vz)b4ZC5s(8-?>tsNhjFwj22B|Fq;n1e)+Yj+C= zy^QBcBW4BK6YA8(Y%RB1eItIkV#IiJW7FZH_Vq3*FM?YGt&05a_l)y;Jo84h#0CeL z#@~>SbtCO+(SQ(qSIV!+6%Lc^(Z9{SP*%qYsaiEnD;Q&36SindxFvTDxdUpeJ{c1|G~#p&a)c7uHv+uj2u2Uiw;+v>!bxAw~O^ zq`G%!t<*f_r5u0krw}p)@}UJ1?xu>>PTaN&yPE3xj;EMTvIVRTqsU;=#v+R6;lC4s zCASdny2R%Q+(WXyK#x#$f@Hk$!la2p39;TX&s5VQ&%}d9gNx*)L*9e1`4N7rV!iAb zn4)x9qB5^#Q%_JuGO9E&JWC@jhpkfxo<$ns7xxo`-41wzkrQ1Pl$63pL z_97Xs?ZD@n%fYYwA-EFh5<`^?6-z$#0P}XW5~acVscTm(-xqKor6`F?bo}QcUd&68 z0%ZCV>Tlv2xiRdpV&RhRs6x)H_#M*4ZDjB=IobteVYozi#s`Vb=rMu`aX<{|YkjuX z*eCRVKHr^;X^dCjyxmmv|ApcCFX#K;4A0+cT1&{EwD%#bj8X_d_#kL-$cg$t=z~P0 z!3F446a*><(ej$zp=jys)AAW(#VVVcqnlk;G&HN6#jP(Bn(fU4FxR`9TZien1FCB zH+m$AsKWBI8I{FQM}pzL%D6)UIq3EJr}X(Nl2S{5XSET*rP^=P2ISn@GBgMzhz*1A zw1w*3-z&B%bnOWPEJKfj2rk!yt8v-uM$kiTit~v?=Tj;aBt2Ww1L)C3$Y&mZ#_EpZ zjU0$n+IfABOy+gAiCu#xij``gF4Q_M>_=L;IvZ(*&r%H|2mUx_A&wce#7VAanZ$GG9sLrZ#8&K4W(riLw}S2SB@;e~tro;D|*N ze~&~Ehc(f0jW+z0s8uNA2oB(npa-}JEYrj2NLESTxm`)MQ7M?3{1gTfvr|9(dElpkBHeUnh6*X=gd|+TGWY?%9c&El_Va4f#+;hS-gRxBF>NcWaL6B6lf0dPCx0a2t9@xvdT!yJ&w;>kEc*{aUuPj!E-6^bX%$810 z@B+bE&lU(JF}T&|ByM9#HM2f4V}^u?-4~S^BGyOk4?>J&oyh@@>RuHS2uQEPulP+1bd5Udc zW95#06n9E(IJk*zYs!ZxW z>AJ3PsO!P1PE|*;6-k7b_UZ)N;lO2Vf|Fx0Gm&2YWGZG9dJi|t)x~5d4DlY9ZQxY{ zOTz|Fyf-f-^$4=r;X8-9Z(TwUWMQ|%vC5}vb1$u3i4^Y&td837SjC0@J!(aoUIC*tut`#ZN13uPTolJ2R+g*v>N4>y_Lz8(V zhw4Zxvn-pZN~ZCsvn?`PDn<=ekBLrY)_%*2HRDoE7@ouQNbhfStb!7NA*huHCe^a+ z@}MP5Biym`Kqpei>fl0{d1^xfhG*NIP}SguBWp_WL^)T4bbUJX*!Wq>N}>GWhwbZW z)D#VXx!V6Don$w}pT*@3gt0SR@L@`yHjbE`#gy@O!2mipiOM!p)bMtq^AA6&Hk1rfS-OIS{I z+{2E0P9}wgP7smP)@0-h3lB{Q;yKLuqfP@4wRO&{DemhPn8l}!Vx=CImV(ab&}5yU z!W~?I#@QTg&@9}kxq{$5&IwX^|NI9waJc=R@iUNSU=tH4vH7PDv1nJC# z#~ooc>HneZ9>XK;x_!}ijE?PeP_gZ#W81cEcgMDE+qP{d728fa=$&W3Yh7opz0SGb zeZJKF{l02e%{hK!{)bh0l)n}O#cxrUynleb1fl6JzQ ziOg~etCP>^)XSYCo35S1oQ{lSnPgPl>A3+;OYe=efy3a!x@jmO;7YJcrNh9{a^cgn z*%HGFo)_XBw4I$1!q zc5&5Z2du~WN|aXvPS)t^Z`fP`bOT0yYQfAHrF)Gl%paBEb7dI$Vo5vJ)h(qWngid{ zG$OD&@>5dklm_N8i>k?3ClkBBCASvUBzS($3WH>^-~uDR&Ek|A*@n%`JuPHGym1IU zn_TTD7tG!)!dp4b$1!EIn;6z3i3~v7Wo67ih>7$3b_k^a$K23l;o1@H!4i(;5&EpA zR6O`7c+K1GD`!%7-A~Q-h?}Hlz3yc$S>B%cY?1f&&F)wa*=_n*PYlPwkwB>buybna zuz0lbnT)+wGTHrFM5IUd&v>`*0QCY|IdL{Rve6KlWA@?iz;G_?kqRXzQg)&+hi8)m zT+|c!SAm;?F^IXJwkVE2E!i}hkf7+h55_r%M5`t!*?tzTNea}EwT@5tLglPUUwMbq zkh;m%{5gmWUJ72W9bckJEHU-W^C zI{#!wKXsNq3yocp%~CUr_n>%iDZN8*k%sb-#l6#-4O+hzq)h@3bH_OaGpsZrV3}^` zB1uCoTTQ0m7IUPea|EQc*O}{s0IQ8|9knCfS`7(Gu*z!BNt8H}W0uorn=S&QH>iEo zDe4hNLLztPs@@bUFk^2 z+NAManflo)C`LhSnAEE`ZQcs~fY)X&tVKsdRXe;CMAkS=G4-vk&D4a)zK?s4*S=dK zy(%Z|9V<--q)6Oboi$;<7l|7Rhv%U5v%42>HGnE(9Bw@?2&0pbMRI_19Y>BWj6vwT zmgJMXTd%SnKz7;6g?!+UPPw8(qx5QMEOVvwt=_cM1d+`sc;N=bTVBkY7dH>_JleO+ zD%g?@%n%2Wa5*g#^$+!CrWWW7C?$0zi(2|iX*G?08)BQKp2!e?aSob-7uYNGSMpm1 zrW0%wT!6{PJA-*T?gipp8R9?V%0dfUqI$F>$koALV)APvXjC)?d3>9@|Nbrz>8B#!H&YK$lQJA@E=vk@t zK;3xYyp`laa-!~CKUfy!@Paebr4_-(DS+AML}(#|?~yIb0%!j7_(BpRS)c4Na)#4u z`q$^*x6h4gp!c zZaITCfUv9V!KI?>aAQT^h>6Xws4QaUP-9 zNmuP_9h{ACp;cq26$@R4A;{)5JJ`|@R0z$aa%p1CPM|K)=Kb}V%Xi%&kQ9!X(-p%9 zIxZcIegMU;mITKk_#r^N652@VzC?io7|?_)bKNw={LWNs906L*m4rIDH>-w*E=QV>12Kl}eeAE}RfC5LGNDt})swKNk@_36W(TY(17)pY?m{ zbUHIdKCgaPIouhzx2|Nn)@TaR>Ddgd*5_7YjDRSZoL#biFLY~+I13TnU3YmEghr82 zK!5(zgcE97caYK?W>8CHV~J97p2@(q-)h2p4P3!?sTXsp&`%M)_ZV<^_gR>h9ou86 zInmuDR&p)MWPeH{j$!EmZ-zApUY!d+Ob3vd>9F7{**DT`Ea{Y6-aRIhEfvzk7(esx zN3Rumc%me;6xQm%(VL$PiNa^x#0K**!tElX(_6mqbm#6yyr8(m9uBg2W7B_4p$o3r zv%=}73%1+Iz|kFUQPy6#vFYru-TzB%2cLkoY!A0>pzfBV|NUTl>4sMubD#pPPP#_j zM{fWoQ`tdi0P#i$et)&XfSkZceS^pR8E;W6RIyGY)YvSqd0}PLM$|3x!gwv$R*~T& zw{m(0`}N+dOYt#+iUL-Gr6MAquZxZm*f^|)b}(LJ#KZ$!v@cMijBy^zx7%QoJjOUn z-p`&p`^;TkA#E3G_A33yVA!oxr>JsufEkVW5=!$ZY(m1)PY2O}l<2h~Vx7BAWHw=^ zr%hn8`Fs$Xqp+;BqKtS>PKsTvyJ2M=weo~6UJU<9cNpBfHm ziCAMl0sSkr3SSljx(hL;g6xf1=dTx1-U%tI*+w%`#rGs z6}%|G?4ENSZZ`AD+SbwBi6JJ?}EUKn*$7{AcZh&AoHqEE^IU&<$^RJPr|BIFJ5_eM8Sq|WCFcLl2c3uFSn z5*-5Ot$vOd6KTYHbyj*|Uc!Ztt_+ZJYDj&hIaJzjj5(i;KvS_(rq5Zeip50|B=$11 zJZOtC*fZA(oyvRK>gU3C3Z)TD&T{S7=yj6~R#ROx{p~K=lrFl~e^eZG(+6mfYkK1= z1A|mLajo3pvUs9(fdMk!VDp`rZ?B>U=02&JFAQ2Vck8 z$0GZYZ{ztwMXvcPns&k<8}!(s@eXczVRNKq*-^cS{U>Y4n~#0w`hf#>1+VUTn-riI z_%qY>gnL*__)>$I>yB$V6Xj>9rIXt%UtDyyhJe`8Tfld9YR7*}CbeVU<{V@8G!J70 zh;O|b6{nJ+Cx#=hZdiLvn*5hhO_yvA*gJ((6f z6l8Z2Fryl&9;(xvLTVWjbJybP7MZEb^~4*C!BX7xfu&D%>VfhQ>MdCB_M+u3>fD~W zcZ5-w3M=;4Xgbkia5Xa(aB7Ya35bkTh1%Z}a7z4g`1CS*Kl4g=ScXqLgYKzXL#29N ze1c$$8A<#sb^hjLOfo!|RL_>?!4BXk?jR~5P4`S^^eta$axJR_Cmza5w#=#wo8Z#YdDMv?Sl6s z=eg0~|M4wii{|KrhbWy_*eTLImF%xpx`!MWJa?`JjAYm`ib4FEpWq&d1YATbihvrJ z`5te)!NvPGwp}B!76~7sUR%XRq!bO!&+tXYLWZBNx&G2U{&3;ypd{s|=H(BJOn-$% z5_GO+T!0ZEqI^QWj{b3o;^C+DAoYxvLn`!ru&e^==mo|mTuBxb8VA4rkMKlU$X*Wr zFQLTw5=!C!+XeA&jIv5)#_pfl?ZX{U>lrTM3$5}kthDe|zZA&xBtUSDj7s#+3ZX*8 zM@yz$&!si4MbBLp`Ez*%A_kMFG3hvGRW0+0^E2Pf9%cmc52uV(43~Zs>RXu|Prcpx zTu)`J9nI?rYY&LwDB|$VF^1J+QE~B!sEmxfNDJwbH)!H1?df3h8TnpshL1(8}0k$_ifDX7XXa@rEooY;WGSpX}=;U|3vFUZH>F zsX1N+q(AYtG#=jbA-**8Qm}UI1{)!o{$rqurAU6$wn2Ry9mBKrWNxwb z(Dn^ZL1pD)L+}}r*hF`i4zV1rWEjcvaCwY-^*}jIIOJKI8S4+4#29Rlsf2NyYV*bg zn-eYU@kT%%Dgy%w7P;L>w~S$-)D+62hh0LTa88HK#wA1s+?cGs=5}?e7SYOtn8oI1 ztC7~v*C})m^fqqxbfr?%bdR&i@Wa3|PO-@3ErTA%O)fPd$${V8MLjFjTc$}nkJ0Q8 zv~OIPuUH0+)ct+EksPL!U=yv?yWfM)Zd0+u_ocwD_d0`<{c7w7dTG`T-Sy~jQ~M=? z$L2s8CL{OdxQ#ipr7F$p+Z=+jKIpBnF=DRrcpeTNrufFoc={cO(5CX_3y{jJD*$Xf z={AZnOGhW4Y2aCO!j>f>p1sPNXvx)$SSTDpEfQ}C64!HD?++vTa>$&&@2Dl5l_aF* z>%5F}hSO$!k&#as9Z)QN5$C{4`-zzL?30g%^RTChNFJ5VaYRDDN)S+u-n$ochB2Q* zIs*`WS?aJE5sji57))zLct(5SbQhS<&$%i|0M?@HH|#V)$t?Q$hL9IU7W5C8I%VhM z>~UX@N5NI#IuX4Hu_-jj1^3|EGe;l6j{$-`;x~{Kak_d!Kmt{sG13S?TQm`+{VOd? z`PG5LnB0`}0I&~%W{yGh#uIK_vIC|8c_=5%ko*ZYSH=Z!07&nNsz(@i+y54h%PyI9 z8&*Ad&)c<{B$Z4}NR^;E%^cK@WkvC;kqGWh+s^f6=FPk4clR&+!!0px)UJ^Io7b~z zj*By3ODsM&v38YkuiTs7P*Zc3RYb2Hwdq0czboZ)?ag!ESL}N#{{L6>`+vEX@gFDd z|8Pq6@7`KV9)Af>CDr0$S5ryJ04wuRRl>=E z&ROe0&F9Iy?R8ZFHUfHDN?e-aV!vryY26zOE|=$Qby}`uCfb{H)>I`|q8NX?k7%;uolq*;|gN1nm0tZ3X z>|!wyeI`>9T~YBun#?N0H5?9{>ksN$S#+4SE3u7>J$KTSb7}-M{@b?22r~?28|`&` z_H|;Scy4fH@q%ghTKd>wm0(}q@wKdp;*%_hU7?Gzz($4)ikrwUDkFGVxhSny$wK65uyn#9`zkG1Ass6%&pAiqu^Va!l0&06l zFb^W0_@!gp9JfkAK8ie;f1#&%tTVzAz)Yu;e#DNNS~C~1ghf75;Z02*vqQTNi)%?~ zVYkUS+@{U{6>gk*4>URd0mYjnp~(ytO|MOU|9f+AUoslaZmz;(IAUd-G;C&oQEV6$ z6g`q4eWPe6OVXqef#*8O?g*|-u{+SBA|g;KuG7fzk=meeHPOC5`yg00O;$>_jRx!v ztxLZ4zHCxhV$deEF}d!sRilSQ_%Hv7n_|3#D$AnZ@{UddY~fQA9il-%21K_w^Nji{>)za@XlBj2 zNqq%B&)J+c2P%piWm3w%b)*ZA>${{N&g|S~YKdux($~Mw6IYN|30q1Is|Ho_Sxhv0 zR)NE_SWG4M+Q!>~aPxB;AAM($mr9$p(xLla0T#DH-_YA_?K|H1W{RRZ{g}2b;owRg zoT~LAHj(%NDPmPjx+cz)#fEQ7#2lwDvR&(OZ@S!$-DDjnRifQYM{FGj?RO=-PWvZs z_rjUa;8IHB8rL=tNU8zTsMo!4L3_yzVikTl)Er;`3WJXc2l8+#h}9pk0l$0bk0*{KvRj;x~9E4mS&Y`JQ6cZQDp~^h&f_+@F z&T0dHOkJ9fZ7VKvSkrBbguPCk+9-6EvEuqfz4GIP4q}7V)myLr`Gn3-)`P_DIZroP z!x%$p#Ob(+P!>3k`dtc#}ADr9dHzIRX%M1~0{d)eCW7?^DwSnNheR z6sHx&L1<7ogKizZPQn?>ut7htxxF~BbfXRB9QLAsR zus$fnNV~JLPkDrJTnkS;p0cGJD@=mg!I8mgLX+5D$k<~>9l?TjMV$)0DEoczAu*}$ zu+>#KIsp)lkXpZA0aNo#ya6|ZVQm#Yq$MLPTN0BTN2&{nmLd&$+qWB+-Pgrpy@D>2 zFU2eVT7mKP%f*%fv89O{mU4F1AGV3Zsb~sHX;h|AR?95eoH$on31|vc9Jf1iwA{0f zOvJXq5Jgozop3HJdI8}+|84w6%gub*&4jDV6lKh^x)!fU?xGmQKPkqUL>&+7vG^)$ z04}xZ$T<`Xuc^f8wVXy+PGV9F#ro@O`1tMN)b6;qwZ^&UsIUh^y;dnr_*&| z8e#KQdNUJD#pDOb@%$4L6FkkV6D4NipZDOh(J?=xJnO)Tv9$==_ueX_hR0ljt`no< z^%CF{>bU>JbH=M~-!bj`BPN4@aLh%gH~yXiRL+I_jYv-LXJETm#rwNjFRp!T#qJM% zED~=>2VBvuiLAk=(d*4*PVi|Gch|9x45=%q*_e$bpC^y!Pd4*+5?3i>guJ4bn6izg z@Bl)wMVmI<{b?aCx1Ca{V~U~#^{5K@xx1Z^JgXRi`{qhPliNey`1Y2-KVv9sI67;< zK0S06qn1_??O2jXOoG1O16gRp1|piu5UW`D);ZVnojTpM^p#mZb-Y$v4n==u{n`g3 z43y*cS|=xHyWzbiUeO$fp1gadW7)N>-2c?<6qBe+U|NcgO6-@DsrCzV0N$fg|E#g( zu@a8wmM|ir$rikfz7Ljn)PuOzf<8+{B7VoY_0OzRte)k5p%bgucP?P(;)nXHsI;wR zc%~ocJqsX=-%po114A30IbJV@m>N*9q-%N#@rhpNzoAii#~yQupwxY?tIc zIz_$KxQ-q^@wVnG!{-hNbu&}4&i0L9W5eG-v0A_D6}sW~4`0xwy7?GxDB<H6Zfc5 zZp2V-R3u)KrzBO`TdY}2bJvIYt}9@akpQnw1UBAf?NTt7(^JcB462+mYVv^WzbfAv zMeB5J-9-s+t|Dz0&YE87a#|(`i??U=eY!B7+-w)lUF@`!x~3VvPmI)Mm3(wQ8g8`Z zGi9vm^v-Z2MwnF1&W;{0^~YfN{uL4a#_R7Q6KEg%Ce$wv+Z}PMBt;_L6zkNSR2mLoYd)eGsNXjP9wU#!BjZb7_yZ90}C6t2rUKH!*l) ztki1((nZS?Hpg`ab9l5YoZw(mq(~?d%Ha}~$dr(WFv3F;&bMo{#ggGpI*bdRHxm~@ z^4wBM2dtChdIt6MSd&_>WR@=PI8L^#*goHSrV9XZ4wv(z?m4*F&$q)L*8bB`DWlrU zV>)v)1&3enF-K^^!$_;l$U&c#4g3-sKt0l52xb|Nj9;^rG` zxRL-AqEb#@J)mKY^+x(mk}&ueDKoAN0f^4z@pXxK`4%~ezxSLatl&xP^k#eby44af zHo8zAzo_MrbMWLUc>s@pBRTlt{$Upr8BLE4d#U`E5ncUSzO|ATA%YnW7_)DXGKBe( znA}y+{(*rlC1;cXmwtvo7n$^VHU&o4nr`4MlfiTDJPnD7&^%6&0JY*^k&=<)$Y5NS zDYRmUQR;Yw?Z4tgt?Gqf7-fc~#Y=+qxT(r?gf~pCY+h9?@hgQJThog}7AQrfW$_^A zczkGlSwiqU512T5`VkT%w#CG9hyZkv+w-(^9q`zEL4rG)Wkc9I{xig>TW$;mW7J_a zXL)KOhmn*G+E0Mnl)bi>DnD^-gl86bcUY2?I^WI3({lR4yW_wfUo@>)jozu87$IV7 z@;hLrU*3UwDQWoFdme3h94=!8Q%O#BggoMYOzA2TY4Ez^6l;)h^oI2HK83W$`rTvW zV2vt=&KI%DX(82b?E|g)*WRA=)5HBX>P}dBp<1jgRd14N!`ieqZjKiTP{g9p z`HTsr5=DnF;k)npL1Ec4GYo+7%#zbF!!geyfPDVFkW{q>2;Kgp%b!mF(q-Sf>+2rK z9h(4RCkN58oM7AA^Z2rN4kOFtenR-8J9&h0RF;;Ksff4k;D8;eXLV--&BB&K+ z$!t(S$q(c81z5vsjrz!bi-rTuXdkL)Xc$7JTGPS0)5^;%wy&J)$Q`+##-sJL*Wbz{ zvvDuEs|4^Jie(_qhiNu=H0fm1iV}vE{an*WGI=Q3#Cdt4GRoP_+KgQqcd&pAB)G04 zG$}t$IXBp(NFWAWWVq_QXs*#38lsuC7#bRBxLjSkjnQdmG#R!kJFi`9l$lEfNVMBB zg^x5-#*8V}#H?8-c$G7s>Bf#nEHYWg%%zxC*j<6@4D}EL*^f=}(X}RW8JOrS2lyMz zG#NLIWLDGo8C-TpT|bvmi9#e*rYa5(hGAw#^*9VCp&nSvUREc0ACP5-6laBHZyb{n zh*FlGNu4TwF9%eoK{S}JI~)1nTLdVjCL;rc5)sn1vhTX&qD$TLFEoOzcP59^;*};} zr)PP{)mdfL8=7~Mqza2$rib!Wk`ZI8Ltl;8C|a4I;Fz!-NUg>l`&rFeoqUN!B#X7^ zVmtes$U5UqW|-PF%RlLyvZ%CzEE)=Pjgnpr^jO4QgxU@{C(;DJ#rtT(b-A@Qq6Byv zpkcmwtd1E>Eb%%t4?_$nRjV=G0lTynoE`!VX_RR{g8E+C8v(H&}UU_EBF7qvduNl&`4GPha44XKys{a|VuGy!}Ej zZ$$<^M76?hG)AQ74$=96fPFauJPhH%`OYj=6!xGo?@tYmd z*ckYAorS(LOos z>~O}q@u|bgxk#5I60W6!^y9?W>=lqK=ja}o-_-~=u`&fhWxjtmj3U+_Q z%sa!OG~E7#m}@6$s~mL%k~zSq|AAG8;Zp|te8dszQW5G}jR7O&7e8kZo)NOXCz6EP zK4Laz7Is>1SyS3R`W%!BCG$3mFzN7h{|hej%FIUns}JL_=0xd}%)xmsZOXiV;3vg` zits6pFxonwW^^Yj&mW)L_kf%CgqzNv?m$u=Hy{^*!Zu-NFs)BJq;LZ{S!osC$`H5Iu!s%ZupaeJE2}C&C_9R0# z*sbs}%JMKOy^vOadqxeht1C8YOqc}KV}_fTI14dNexig-C=5QWp$&Y#G`a$$5lB8< zw0KPrWd@}2PlAVrD?M`sdu2ynQSulyrPu4i2>y?mLZ$7W>RmtQB6Wr+M3`KKL1$)X zJ>Yj|qh@WJR4zNCfv`8KF7^CE=hC&lw^W23`BXLU$1P`3%756F=|jBPmt!AIi5o%E z&4)DSg5eEG)P7?Ar2m= zTKNAFxj&di|JkS;Q!{E%2QTPV*Ey3B$FFc$A8e8!KVTl z{{X+76_fsbqAIVsUt>6+fgmWI(-DL))U4(ZY`HpWpFFZV5iI95}PuF z`4e-xit22K{1rgb6c!I^2n8||fBaUbbTP;<6*5#!<;O=g0PA=AyO(R-19KV@+?i~) zWY-~oR$}J(=IXa#cIE&Y7uKizJ5(GA`f8fIH%tZ-^|>t~U|6@j%V(7WvI0r`r#^>t zO)AJK=Vz8rxUK*(oAlvdVf~xAAK`P#JR}p`-PV2A?flhqI8|g)XxA{7$S_g zsc?-~B=FMw@!|Bu3VH?GBP1$OaRLQ6iy3~DoX3p#n=BSUO4|7msE?a#v4@`jr`Z0_ z9wbkcIH~zdnDM@Z`QL^t{?|Ro|KZC?N^4)fjK-TV6}DfUsHoX4fEk~>oR`>Sfn2Ce z6|NbUD9LlPLn>tNz%%L!x>uoIh~XFLepG*XRS zpOu%7>z8@eklR;5<*sHC3!4imT$=8ZBvYVi2h>3I#XHk$%>lLEJn zqDSx{ZDyL=l_i>IEorl{Ny zqRK_G=juz5t9~9leCcxM3RzQnS%l7RCvzs(fMK<_btC*1(?ziEE#88y^^uph@4%v2 zJuPlrr_U+eSI9M+r5!OA_l-B2IcdJ+I%*cjfI1yYl1rnQ2SF8WOTGF%BvE7jUl=^^XY;1$QxoeAiqir|UI>f)i#>Nm(O1nuHk>hAX=D9YGP zW0A&8oNd-3?X~G5jf6HFIs?H03{w^w{Wt?+=yu;I+gEMffghqLl7Zott>ISA+x=S> zsl$<==}sT-n5hO=dT&4C@=ZK%W_6AR}E0uD+ps4Q=a*8`-+E2k)Z>s`kzBqXd@UP>X$yvF)CfDWw78&bo_sVjB0N#& z^o;BJ_}kjGyj~{p8-zp|-8m6%uFB@k_sV(D!X-v&)uK|#d^m$U#Q(k)LW_e3{=sFG zFI*P-cewl?YvJG6a?#gF3{){R-hCaf%PB5+qT-?7eq_IU!e!P2o7sl@qO>r{d9a98 zeA8(n8ft-2%jcmZs%IsO{Ie_F4**06QWOQ&ac2Gk{sKk*D`{003|p14W>>eXO{Z(l z=jn@!34T4iZ|Z}ZU$*R`J@WRCEiW=gg}17>YzoMXK(&?;)u2`qj6}Luho)-b;Nb8X zhPEtoyQwYXR=|~PEE{b+c=Bxn>t(K3IzQQ-J$7EKmdvW8hb7;DmLYk-EDjCp5N@Hob5%BW54NV= ztrjex`9^gU--Vs#r%w0jY$Tb*6_5Uj@dn~60zK#EWfGU4T}PLst>NBUvzQX@W($O# zczJuL9n7{>pt9SN>t*h+y=7#!s%=1i0By#f_>)!M6eyt_CQ6OnS?MvF@^ROUEz@d| zQ*SE$531DJAJ+ib0#{)<=#CpEGn*L{)X@aCJ#L^?Tfr9L+7yF$b;wf`4_&1AQ2>I62=+lBys0_ z-z9{9R{~Gjxp#c^*Ct4sz#M1=jlq67hSt2HKYT&yw%(yewjNR=dHHJ9ZRtTCX1}dL z_Wu4Cqp#%_KkTLhvfFIO!Oz9#wDR!jz;Rhyu6ui|1Jsl$q0Xtxf;y+=9+>GRrW{i^Umm}0Z1HL>5eb3iRr2| zDZ7qUQyCN5l^c6xi#B&iOAO)xc+pB*+q^xt8o;b%aE+f&HBg<@Zqu9oTNoyBqS*$s!O9@KCTqHx&1-+Y=K_m3mSU{9YwsSBJTV7I&%!3>MMU(% zih)U7_-X4H7r=IC{150RY*%VH0=g3q%Of^ZVjBk>;i(u<*pOvg6THXPUeg*AS+a^| zD6MUPQ=DmG#5K)>T2iUrlj9rs5LD~jJQvc&G;X5nEFQ>e?Qby}BURCjNoglos!VPe zmlW(*n=;)|D>KI0X5+G^(cB&(2q$C4_0@-58mGULQ5-A3?umCbTg8pxa3_%0>sqZ# za$aSc*{^G90;Ex&-kunWt8N_x6+|<$6EKpOpP_};GMRUcD_L}Cd@kQ|F=4Nctgi^v3z_8F|2vE#nL9gT2NS~2WzxmNX>9yWsGdrQQ>=f*uLtFqr zDO9*krTAW^7 z81H7NOdL9%#!sM2fu~6MkJ`JErPROSo$fi-80wK3z*=`O@ zFOgPvAMaft^9}mCKWq0MBajF&D#^W%`~A>xWOz#1XX~z%?WRX@_^(8CPhKC!^=pv` zkZIRYRPs+%;z#5U=f$e{OO%Jd8SWT82@_6a*(2Xk<~jYS>GM&WY3v@zj3R?Q`v=cO z);w;yYSA>ol^4r)$ZSDfZE|(lBbAg(QSLHN?^2Ut}dP3m)!#T6u}a7re!gLcPTY zjKu|P;&L%$YB!se?h3Ibrn~Ev4IYaRB5c=7Zs3itU7YPl=Pa38&dYAGrMj5Veb>g< z)6i18YD}i;MGse!vo$mwpBCrc4>>SbEj<1W;4Z*P_%j`mvfI{aC0AEcR@Z+X8ipbs z4`_~86sO?i;F)J$mFm#-U{u;-x<>XnL^(DdZXz#~vf3Xrl=<*MX&FXLI#~c*uuv^M z7T3`N9w;roMr$a;YA!5Tnt#nAf%_H#pXqW1da2LpGdks|#pEj~i?O1e2%$DbxOTL8 zp;#A-Q+9-PSdiEsrvTh*!DqQI+8)f4~r z?kXLAT`KSxSv9IsA>gv8 z!@K6WEe?Y(Q)X7v61y5)AdW$<6)C5|BHq2HJxqRlN`^{L81&Xq%qbGhhD^Mo)~d2G zFYZ%mPaQ|RR>5)0k0ilIa(A>Y^pWF2frddDcx%U99N{QusO{oZ7mNMoJ=tZR%w9Ry zySk$fVVfdx#@Jn$xYAQ|<`48)t+{H@`Sa`++b*qWXPGT#{Cb(Obg3Bw`m4}(qJ?xD z3;y5}C1=LK{7h6x<+Zq_3pdyow!OJ*oTjr!^lmxaT@H=N>L%{-UJ0hlJEm1OGohG- zg9rj%e-_i3z7PC$GZV{PZ?(#1rNDDRqS7wrEK3dQ40Ot^3l-$!0Y)d2>siT0!j!fO zYBCpcWG+-KH|%=Ky{Nx71I~&<*bqAQqln`-5g*vQ&!-}nY{4Op1MjvoCDs5>kSDH! zYi#L?fENf67(2AWJ)B)IXYuBV5OBzA-hWrPAz3|D%)Tw{Z{_IZF6dkB3?DH$LC#VZ zEXFL_J$ejTX{$09)?<@zy>;8NTkKL+X}=!H__JuINLWX_8P4*4ZjGAKPx}OV^=|w< zi!@K}N*W@UC;=~o^iuETm3vdd%@%h$P5`P3`n|f7k=Bytqk68?S3XL$x?!G;fi}M< zii3@t(gx^OawseQrM1;r=eaGoT;6*i*%k)3Pk!W#9UA5QkU(5F`wdb0AGGpY11cw+ z40}S9R>F;2M$;7^;Ov3(wrOTP7@V9$mF-X2F#m7S_r-FwdccNG9PVEX4e@60Vz$kDt91K~T>Uc5Sw58@KugIfFOc zl{|Ti^RZ?L1)>`L)Frv+q8sD+f+BlTR4mw|Qr;Nv39iOd*H&KW_>If+|Cq^p$y;TL zZQbxJkHA7b0)I~Oi_@@V3yb74x;hiUe@$%h(2qKx^pvN6%9nb;5DayM#coC9G(mn% zRx>yZl4ocXTf9WZeUdlR4D2EGDTVSWU1AbI(d4FvXT0mteC@6jzjK)#l9C@Q)r!}i zA~=?)e)7pPqV>vt7`jXy%A`Lcx|-0OOGp)yPCC_BSxA%Hj}NfQ&xxXaBZ#^qT&P?~n^r*MqW5>B?oEW) zzxr`&MsohJ`-<<@r|TxTgVVYd@Z2(JP8;5*eK9J}iJjIex)%jUsUy293j9XCC+Fv3-;=R4-0UwC2$n?k%4`f4U7?MZivOJ1jgmUgt4bOh@c#21>{r(03MH8;KRVfE(vtRSB|8GV<6VuVZ7Wb=B;V@ zCwnGUCr#EJ`S>GZZq!`=%c?88bnvQ4ru@u91hcV9A1LnO&N)nFyeLHn47v$BiRKg2 zVsaFEdMRG+c6dkP%cFY+ED|M9U=1D;h|oFU_ORtWzNj}Lb$#&cP=j@^Lqcv5byGZg5UM=)q>vrV6qMk?z)+WDftj1!kMmY&pkM1H{g3g$6hDIMP>r@~I#Xga2u z>2!AC^z`{Pj}WNxvGVu*mgJk*&5vM?Nh~e~!lETm#0VaBnpT1Vcr?S%{L;RowJ-x1 zb`OfW$-};gyhs!H7WFBc;8iq)KYbJH#Em(;%A<<&EfLJ!C zO9jlMG+%JuH~R;78hHhqpr#)gPmSHKotpx2^<|J@it#)KOsQ;5~T#c~!=Z3XGA44X?_Og=N&K}l@sl<7acIMBVo#YYK z9EF!E5iU3jm!4xdCqG{LF?hvEVUs?tZkw^BaRwd2avituI`PreS6(XMOEhsD3XcaJ z1)I!UBlzNo0SmO4;=mow1l_TEOf0>shEKXTF0E!*CsT>OE15l|Zu8$~qCX@1-mHo4 z#|Y?xu1fqh#{|2C!#8|*@Qwx#&$3giVft<=&yylMpD*MW@w&}don#$2a@cj)S6ebK z3TY(H5$=NTCBC`)A?{)$ zG43ynzWMuKa{_~N&R-yW%W|(pDl|tpAYG*Qvi}!j@4%jE+hyxkB^BGYZKsloZQFX1 zCpIg#ZQC{~wr$(4aOeHH_wLneuXTL=AMSbF^O|FfbNJ~@i8J|sBu2U1SmJvNm5!e8 zE!a3|4<-b?a&PusId%liaYr$|CB3Y;OUkEX5$ku(4+jZu6gkwZ)dyLcQb>|N#Bk9J z4@JG@rFPq`GEC(p^=k94=O?w2w(jCoDw>;(-!HqZ1R;$|V*jkPg&ESPD_1oF?0vD;arTM6fWblQmL^ zM<$gkAUC9?8*x$aus3$dRD(_(Xgvx=AmjMj0y3kQLR9}l!mJwSk(wu0bjnjMHnJrx z(cit#Ltpmql(&!p6J{9WT#CuyIam+!Kh9G#=cojWYe2}ePIG2%z%EMnJ2a=plk~a& zF-ovsE5tgePUy%QQh8i>g#Jlbci;NG)zCjo`AIRS>X(^vTDqbfq2kF9WZ^1-kc<2Xqx3LZJ9?fD0NMAzJMQ|6z5p6< zqL=BR-iTokY99OI^r@Vq_eY@v*?f3SZ3hwJaj~;6j>sC2<}21@w1F zrjUN=D{O3hV8{vnt-Fnkv{w0M(^t`9gdMCt<1`;ZK?%=0hVYdE|C#J3){M$Y`RGTL zL3j&-j2A)K4}!AqTN*|s?SK-TAtvEllm>VqT;36OIb=M~f4W-`CoHxO|GcnAH+P4t zw-Z>^S})1jK&OctMGtTP<_y4}p|Cs8XYr^3EA~?^Di4`u3!!ZM*?{ZD#QWlK(;@8| zg`A}ZImOh=a=q(Xk__RxSwwee(WE;VyttIgX7ykY<-#ixAlgMQi-;tfr;#Bj88JW2 zuO$)-2l=O*g;T0Iy)uc4rO!18`N9~emG}PB+;aKjSg60c%4oON zD@gKvCI~W9L_LFq`~VT-XoghO649hAg!x(eH>JM(#W?=_s*3UXQ z<1XD13dKb7enAlcF++ltI~$#`r@SdP9Is04x+T@C7deQkTU}Rxg>-?^V9_FuggELO zjr5WHg(?Lkw@EE&2qbe4^WmA*1rg-1b#c@VM>Q$6n`dBk(EQVK&aUVRFPO4Se;7JQ z&OKn5*o)l>NsW35-2-(Rmuy@n`0GE}PPhifR zo3AtMQ1aYEZKfAiZ6OtUf8%6Or`-HOpkCeZ!-M++d_!yC(#gINiHs0BA%OT12FI)S zk3`y3NV>|K1a&X;N9eat_SIIuDez~f!R&e4MBd|^Bg+(c-eD!HW&e!`Z^oPAMd7WLN-Qi+o*d)H9Y$Z)t znD$wPInNwN=6tktv&9hac~?T`KL35A7@oKEtN&6h(Y{nm*8k~7@&8jSfpT;5sNR>G zZAsMC#Ce2}z2JfrU1L4RF+b|{dt;6vjM^@^!*!}H+AZExx=8g|nYUwpK}F&u%SlO|~q=BMwN4Q;Oai@HO$A4J1Le?*N)OuS}p^fAWIXMbzG{bT5Za_>v^Bherjk%9_;qGM&s&30-~N+@ zEp;tBN1Ff4%NwD0IpW56{sy|0^OI+=$E@JMQ3GLxuW?rrQ9lryu+Wz%4qJl_dz6se z2lT%W0cn&yqsy0E`SLXc0{^2S__t!^hV_?N`JX{pY(eSp@5u>Y(J^=nl+{(tVr%o} z6hh-KQD?zaBg6N>x=^jGBvfH;p4-ApodtKsziO!4vYXWZ2qi1L|SH8a?%pk78PwPBcwo4FN&sv^= zc%s(Xx@waREc&@sZUxpcB-C|rPg8{Pc=W-cnJAF1rDx&Qx@ubDG6w z7+J{v-VWcVMR&<%>Ax9-vR=!stvN$FT9C1lqN>(l6@Qho$ zdLwjcXbjGGUmWItrC^s@#SANi?7vvOGRTTQFB@^IajcmO)^bhwTP%Pg+6?%Gc9wfx zM!^eeYCn|EcY1AQV`a_h=PW8#tP`;L4I573+#74dw4kUl%)7e~WFHbw)-P&Wz+S@FLp`1A9)J zpj3r%3nQzgr;sb@F2=H~dYgjL8b`;i{e!9~?v1{HG9gqO&D~#=j+`M1n+13C>Ny|G zP;H_iY_ee)ze_79$r>wuD02G#_w*~z@7tde^PvS~C(BdD*#o7+-cU?m=~rBU9m35& z=~woB+q8eBUkNE5ly$z+uVeDZ2<8K`Cpx6~or5}k72C43ffHPs`I%uU=ZY}_=6?#` zZ$I!G+UhDy=UKLh)kaJ1Oxz!1w4=;+w+LfHuRJU3u0H+>EpKl8lYTw?O22Z&onzn{ zbrTPH_i;UfV2IP#Z;{1w=kCY!gJ}zAAg76BnU-071fTa;{LVA(2tl4OH2z}ro}+5V znaF?i{xDkMN6OaBB|Xe1wH9vtV)R0MF?!vgz08b7Ch@Vm`la*zz(P}t;^@W4MKnl| zp2LhGGhUER)#gw}=_4q_%lTsqc#AG?ew@#YMJ|qDony`ZC=?#>CLkDoLM|!XYgSo(TtDpL|yv2c7NOgr89{V`ShV zG1?&CiOq@h1%G411xP^uSRF~F*=RpHpEur6~;pV8V4M`m?XS?ma8| zX$ylCrHI&{CgGM^$TS(&I*T$|4~=qe|GTLZ`T3*rDED&KWmq9F@Ru1el8jS-r6YG5 zd!k%!9St}3nH+pk#ZG6fH_c`&E_Rb*Ql@n3Xf?w!-blZ%`Dj!TD({)Q2fLMud?vKW zy4;#-@22U1SROr~zf!)V)N2S$tF76l6FUFwL6$?h6LI*{SMo1K!!*Rqxy30S`H4T<&Aj z;N#<%(}#S~a>kG-FMq>> zy!tLo4IMra(?;Q)>UKMf92|10PbanBDu}G5B8%43`7Bj#wllEWuTQJ8jcyAaPxI;!;RTmLLxR)yTYDOTjT32Q5p8(A4 zrmk}#ZHtRlGrXF#JypXRxALM^ZnNMjEIiW9#(r%Vc(}^&RrEimA}AJ$S2aPEA1Pk8 zvv>^$o~*XXMsyC#*qDS|z}+2xLmwrNm~Za!RNw}^VRPRP66U%JIK{l)Q{QIkCf7-8 z9p^`okTc!Bjd#VWd;W6NavQv98=nD~>f#SgC3&G9F7ot?ovU}aod!JjnQ;L&7N}lW zFADakb6+fMZ(JMnl-o4Rd$+PTW{!XRS6it?@osp%LW&?_>CRV1a+NScMNjIN38J{LnBTHweJTo(12S>-bhFvgyXe}HmA%G|=DSHGgz!ri z>z|9we%&_h55Z^ZzWhDQp;;;Q*Q!uXBc>nSzZM{{&VB3{f-A{=G~i>z=mkFdPkn;pOgRr{U_plMnjd^*5`8=5x8Ol zH+TFNRy5}%l}vB4in-9oj76Fl(Iowy7Ui3brO$e)$w%c#tg?@zku>a8{7b!Xih{c5 zCGB!-I%wxiZfr{e7FETlvhQ!|UU#Jl=#mw60{MYk1!VccTZO^zeajd)o=$-Qs5 zWYb>Ym98EDTVu+!8jgrZv0xTmJ-ei1@Ss))`DDW z88qk;YBcx~fQnJs9Y~q#gwguxt%4;*eB%ib4Zfa=hj&|3B51pR>K_#Oy9JO|J&c}W zJI7Vc-G~>(pAqYC&D*L;`^}OsxFlF`IT-0PG>9M;)y1+OV!8oRlMu#JC_tp7W zRJ))^bA2t3r6Km=v^Kj%6Q$pH9wYkQa5)K8vbza7HRo_OaA^*#QPK4GYwQhIh;VkinLi7%pea}F{AJ+rqWO)13-dZ1Y0*8Djj zNq#!Hcft;$+x_q2X5ifolnelV1QAaHxK!g5pfT0C2`hEA>zM||QxEIu=ejRyBEuzV z(+LVzctFttyZItQPa`|8%^_kBzb^;RUl~5HB&4Ug52m&P)<9b_7H*sOqr}?q%x5 zu>Ha(1F-eZG*95$%A@o0sE&2(W>M~yH=v?l`wg18`EJ@Qi?n?t&pBqftOZlf{*PTaX>*iAI%<7qV!J>$lwrbW!{z6FVo;`J4rr zg7?^>Uc6$d)r>u1H&fvq#iEEkHSYN!I`z`1Ar@rP=m>G0_vxeMtw*&H9Rs}QQmF2k z3}2unZ8-vYMFlPw=IN(pHGJQr)OTn%YJ}8O?Jm^nuxG;%72a(-VUnr6hmcryt{+jd zV2Y%O3mt~!TRUr63yN)?Xc;Pt2R3eYTZYY6>M<> zgLMoWu0#94kBS}k)n%7J2laOas9%V<5BeZ?6|k?Fgs(Y;p04bWmMm|84R$^xS<}p- z!*Y0JvVct*%+FUmH~JAt52(TmhX{3WmS=iY&=5Mh0VOP?;3I&X2_6Ph9K-|#%)$m>|!v2ldEvGLs zb%`R?JT<73wphYZ25%AnZ!sJaEPNG=?#_Uf6F_ECm7lcQn3`J|_0PR_EvNM^g@+KI zcuSyhV*BjRuGu|J4MbW<_b5Z%LLT)R&qNK2wzM)D8Ezf*q76#~jO)d48H##jx?G#z zS4{p>wOnPm29tLSxU|Y>C29^cRn&j!VRr1RTuN$^uBk;AabK#24|1>O86WU+D#*#k z3;6gCxl5}v?O`%PMQImpt!YI%gYI$y7bLbx*{=E%c@u}1eHAK;1Mg?>xJwsV(hyAF ztD!ET;;vI#BuAo0eQ?lFD1%a0urpSxjBww-f5dS1za+;NJwNc?A=y;ZDDys*rF*z< z(M39tX=!_mGuEP*_M%8aw1#c!_?d*`Hi^dnnLI@#GBPccvW3T(%C4NEgEu zqp5uK1ZC^whRSGeTmp`=2CasalkHlEx@r=G(HW(199VnX5iUf5m5~H{!|)ZZp(=pU zL}wS$BhYxJa90RtqH4*wiIqz-+Bwsrcb#3|X)9WwOhDsUPhKehn3 zvQ3t0MXfyr$d(8^yJ@v*R}KJS$3z33cCd5fO!O~x^Z}~-0I9;J{R_fI@k4>IJw;U6 zqw-x?)(>1ov0C<&$vX_Vqb9P5EllYWQhwX+Z)kj1F>WcZhG|X1nCK?}4S7u;#k9Ub zyQ|GP^X2*ZV@-SL*o#Z)1z2{GWu`j7XjWCK4Qs7S#_XUV05{Alh8v_iZ*qQPe%x+c z=_yBGBOEP5t-RWF!|=P1XE(frz3oYLfF=|KC$XqQlA9HiiT6{{A< zCc<_C%JUd*hH1eve-Mo6zRF$}t~9x$T_mM-uJusdY!q3ji0!nmij$d3NaOcm1Vs(;xU8blpzmN)jqsgI;UWbX1u z8+@wy^UT*4Nm0Au3f(z~P&@RD#Aoq_X|ZP!fjzYi*wfIqd_!%~ zu-kBhjL)h&$PuZx4Yh~HYta!_9JzEIansf`PKI^BofNx3G8zB(?iqa0BGr2JP$3iI zvF7(y@t$FV_h$CW?47Q8f!PeKsHR}`~8Z_%j_ z9;2hT%=0bOK{vUaCdO&}8*e;1ST-Zra-DLafv$G>!KvNC+zl&Xc>k4Cx)p?tK(M+k z{8gQEgp00LF}{is1h}VOFAcF!#ySIS(CQm1?$Kfe1KdI0$?yov87oip%0Z{&{kF9h zqSqJ7off@jb~tIn)WnoZ%u5%I;!R)gqmI6;i9nzEmuKrm;jO)^SDqWvY^9v&w&jAx z+k-u`K}!)Wt&m84nnj}f&;Net%<`4i_We3^{*P+Oq;0It97zA|rE|^xtCmb>D2`4m zRw!*Su&wfhtf5Px(6``sB#x0{O?d%Ji*e9Rd|p|YAFYWo*Brt&h3i3JGVio=(MV6s z2ut=1pKbaMXv$9ARA^DZ5-38G*zAf~b?4IRD=yyq^-**1H}u*h-v|>lj+-dI48JF3 z>HI+(C$y{l++Ce@MR`@Irno^^A9lBK2xv`cK4bCbrS_+^vr3hq`k?peMi2^CmnQA8 zdrbkKA=n8@NUVmYt2Ki$76?#}o@vI4oN69{ZPzB*KJV=_p4>GT5|<_XW6^CM|Gz#m zYDV&h9BG5a?4Q2( zQHU6=t+P2z-Q#uQ1Xf+mOUB<$Vt1;(}!jca#`b&z&W#CeSxP2r(Gy8#5;7{e1nN8mb#igw-~Q zj+NSVhSPKo`roF_a-G}SbXpgOGr}ak+_CZ3~ ze0a|Yu6i%euPF%r(mW;jkBv=;1sn_K1mjOl?!I--iw5>2jOPN^Ds}9o*|E>+M1zz4 z)zIV)cI)tH>as|4ZI-`9G3Nd;1%~Yt7~C4?)0>(aId`Vm_p(H__DL8JU};$7+qZ{B#>gl^nZIKnLVe-Fyzng z@&1GMNK+N3W6}*p24_e`7+KyDM2hAJC4xP&Yh+sy6)i~#GZ0=fO)2oqTow?2U1aWm z|CP!Z`;6L`jt^_W$FQTg6lv1t5-gHjQY!H<;<3NMeD-63!GrN*k)qQ<%m~jDs6nL4-#Uyr9NV!W>jG)wrF`#P}>en0%BPXJAywY{hWl5!=L2_puk2wR# zKL58=#`qAkAodpsLG-YbYMb+;NBTZGX@kqXlkB=SuB~W9g z-WU8|2WcOHZq{N89tRgP7_I4D2hXbwkE2Ommb>xuQ-;rvzT|JtyBtjY27}X~cM6&^ zw~Pb+0}vR7Eg_1q3JGk>ygW?Od&mfAd=75ch9!ogeI}|7fm2n07W6*qj^4gcBQ%hy&I$tSY&1y< z+(6YYqmbS(zf>@3i|2H$#NwkYPGK3A=yfsStj$VNbF^~dB-}%mY7RWNh|-@?gE97K zl`$04g9Ijpyv#*|;$Q!-QAkFEUW(^&{~IWdZ7^Lj;)&ZDJB>ft7y1DC7>AzoV7*{Z zI%yo2ZY(M@y-M9=tlm_bV`yokN<{LJavD;ZkHMgIk*y9x@*%D~?Es%z&O`0sE}T_1 z&DdUrdW*;NPYRPgSzlHHw}i-YUHBmy7#-NqBkUMC<3%ZW?H&roxLA0-);xbm{W!zTu}~{;Rl3 ze}^)gWYu`P06Iz3eNu`{OcAWhD1}^sVcP<7X0z*LiCXQs1o+Z%e)pKJta7E|Oa-NS z`~Gu|PeU*u5afi*$vfsY;Tf7z&FjIdd`A93s0p#r-!BP+c``u!ri8& zvG4wAQcH^6|G;ui5jSFx~_8ypP&AFdmesQ(!rL)U@=sHwZh^%(^seuB#-GmxSgqI9% zQ4<>`TX9&!@Z&m8kaQf07MkBbJcH<9TPWBoLG|O6Q;%J(tX$)Qjp<0DN;t}G}(1e?o5pZD5gfi*sKsazww4#Y*;zQJ$A#O6j`C0u4 z7MnkXFpP$yT+pWD+lD++!rEMTB~-xjgeXaIB_QLnDdZ|}2beC`wF;(oCZu*Y3|tOW z$&=HRczrrkT|HG@Eie+ST5d$VP=tV@eVT!i8kp@COZiyX&1~z0%nm6o@ZLyE53X{ru&`3qK8W(A^F- zy`Skm4C$+`WTaw<85dSDwUlI(l`wDqan}C&=K46g-y!Wf0x63n;D~m|?d0Z0z8K-U zLxT2TYC*d`fXS&(~SumnJICadvtBFxVIHzyLRQ?Lv8G zN{SGq^58N@nZi1se!c32Ng)15@bl+_Hu=e&6BP3g=r{BmvL-PGH4^oDRmez0< ztbahHA=Dl;&k9cgeF`F^4l_vs1||K)Sm5$WJneqq3i2d>)^T`%* z#b&P6pqX6?GZsI!ubIVhN1*Motak9Gq)Ach=Y}H%J3T=lL(25><}!onO^;pbxeY1_iS5&cY4VwX%H@(7y8QK7rT#CQQ+bYx7S3 z01ryu&*ybbEuY!Bcjd^7mgh(x!WVBo&ivM2JPetFxBL(}Y7{$Uc)NV*Z)7w3usfju zxSPoTK|IjDc+#3$nnpdKA+-qZ(gzWq&mzlTfaMB%f^JF49k1;>CjO>VSOUi+p&UBXThPxu>D|6r9FeWPbbTCrHMt{4*JZe5anQqwPX~ z#Kc#$nm&MiBY_7(1qmB`f;LA%GQ?jhHv=Qy4^i@_2Mx=IVa${yYi#01flm9Z)7&m# zSs|N*sS6LF2(m!}s-Mk0JLf!L&GuZ1&4zN3rd!^>x)xM1A)71vyW<2C9YH~d`P7Tw z!CS=g@f~w~IQM_R{PzdN2fNjF%a?r!{>wS>Zw<-+wQv023`C2STBVFgU<#<;?Lc!; zwoLRL#r-rG?ZgdtldaoR2db7DHb}|6Z~VK5l7B>y4^Dkh?zQUFM^pvXApCUsr^=XN zs?+D=;~7jJ41w*K5+J@8^j2YP%K`(}th~NBys2RKg*~AD!X7BsmgV)wtgKdD@~+bJ z8*r*1$=1_mz`J-|G9PP2^=;Gv-SM9=RjHk3n9~GVf!5QtWVm~kmW{Mqr?yiu`Zkx4 z1Jpv3dsQZ@?duP;I~~ib`ucLEs0XfHC(rFg8;4YmUr2qOI@~cmGx0;1c34RbR?a^0 z0sCj?c9p%$D2@6N7EL6lJhsq`k6_sWAD}}1O3*UuCC?m?ar}VB!*qz%YR&>%Wvemc z5Rf}X_FBlUgtro0fH!P9jlEl|;e#TCnFC{&vaTN)!O&(9RO?A=K73%h$MqDju`^R( z*7#HRiOPbH|2R@c`Wzz~em>k-(uqggp$Wi-H)qqXe614E!#1}kDmOi=zcj%nbKz6Z!$|0G(*KvSWCC{!094TSfhh!wJ>qqPt&6Y%>>!>?#V|{3H8?UOU>sMtpx83yDD7hlUVGI+VQIZZ z^&dgH@_)-dBM;DbYm2Z5qp=?YWrg^%5%Ikxo3fi{qQYAw^(w^WOD60aZ4v%sBXZM* z$sHq7{u`!@`dW%m?pWIjcgja#xJ0SNo~)z(7J2`Dp3--TL!gO603D3>H`0PKugc-K z6%>Woy6~SmX8ySP#}p08!I&>W3ChV2v0rxXGXY;R&EE~+_Qq^s0Mb!N^8dB-`yao7 z$;@0s$`@@r0{4H=3H+~F`2PaY|HaxqSgs|Zh@xBjK@n?$L%~i;YZrk>(I5#t+S%q^ zkJDc3Rfr*zixXN;YNQ&0UTdrB5d{VQ{*~SYqmu(zT>9RMK;!~Q{8yd zU2dlPs!fpLJN#VTp&s7-xXpwA78&!m3c)A5`)=EV{9`lt;2A>WLm|m0?jXCf1^m-+ z_mz)zH;}j^gdoLrB)I&#n(qzAn{w#WdRGjZ?B__oxf->JjB}xf;Yoxaf1J4R7Yman zGpb1DO+B}c!kv>n16M|455lldwS$L?-MX+sn%QKR0(w9&k0+HARmLQb3T$ccClALH zO$p?cYu2QC==g86>=5qKNU_|8X3M88pq2}8v)1P9;nn$aRdSuKN>)n;%*BHiY0Qz5 zQwR+Q$Q@X#L@%ksScbTo91^IDu9fckm*zozI@2ki57N#^;Rb$n-RWr%bSc7Ct zQ=_Vojk$CLs7fuPwG`|QuNhpC)RKq^Jeevm44rv^a}(QDYg@=%R6{1l$cfh_<_1XM z%7eU&7G6wwk+Nftg+vDhQw*Y(IZKl=*VdYo+EFG&%`E7I3N!ZwkMxUxjHij1uV7B7 z@2kWmk}~`}6@mlHg4Z}Pmx2#R=zOo82}n$hf%H5w;kD?NpZn{4Lbw7pBb>(CUTJ5^ znUp#ngiRu|`)6$Xq?Y6lZnLOp0~8kDUOciEvWteW9J7cLSp}!RmUSzhwB&XmbW1Ri z+A!3n<2*fa0WT|3cyx#zHN&rslupel!J)I~0qWS^xR?nuVwCXa@y!^u2a&2(h~^NP zap~Ept-@R`*Be(y^^R6u%L|-IJW6F$QPM^ETU*EeA~n90;;F@4|1So2{0TYgp>p-e zO)B)FdW@ro5q_x^R)LVrTX1MFnkF=i?z4gr``-)qZpwta7;m~_)LH(1VvKqZ|K2bV z^@~7|@uBn3qPd51)k?z`{KYYV2I&Ms^8|4P`VT!Hdtx@+PCoLmS4WjD$q;H*J>u?7 zJ1J2fW|CA1o{sY&8g;W>{`Y4F$7chB>FA$zj=lq@-S5u?U#=hifpT))yS>kAmY@jw z-%hE3K5vQ$Y<7VB zhMZGs4MmEhxrq97wY#;kZC{0)bL*pKlNS~7O8l4oIz{#`Oa-uHUUoMk_Wsn=$$G7c zRN+I_9itSm;i#Gn8(?QgGT*!p)CMAG_%GF94oi~Z2)n5j3X3$4)lAB?)fp7koh{g* zFOo^d2JSo-Ov>Wa02pYaP>VgS24klS1S{=sldbo(izS=lTV1|YSvam5KCvJjbZ90% zc%du6Km4AA+@214%yS$_W^Ntqjt1Xbt_yPI6Db!H+7$CqjAn#I592$T;SPe=jJZ)v z@^4QWC((CpzX!#Fh#}=R+CK8e4GW76m=eZ zc`2fhBRWz_Y+s`hETdjfad_tqQQf-jxtJvo$saarVT>5cAtFA-hoU#LXTs!c8D5C4631AnR8 zfr9jEMr0H@7Y|hSl>SDO+gwUc4>hQsEKYs#cd`2iKDQ$m6VZa@>)Q!R`3zh+tRx9!;BRnptRNe0=}gV(0!g#{Rk|u zLp|Ue+-g=xTx07lZ&XioZLU<8iE@aX(8zhZUM$VUX{2g8m9sobw=JvVuo8J%nf02A z`Yqlvp5bSvW|XRCGj|_)*We)Jkj_a=fd1MtlNMH~A^b>VkqRk5?YN!CN2JD6nKqC|(o z%qEsIkRT@F4_H3Vt;{32OrHY~7d`Gs}ojkza5LvPC^rtDu=82Dv!d)*o+!BNAzpj zup3R01wA=n_ zwA)wITQFv?Siz6qf?dKydId539R)EY-J-*k)}zp+?$27Ii@IhWEzK5fUmp%6roiYT zDx>C7YZ3L>Q9YHq1@m>7 z@!FQ%{Dc|Nh zWIWCedCBxmehTg}HhBFuCSd5JhVA5-Ma(a78b3ZEtUs40zvx1*RXnH0*qs?>d4!Hk=PpgF=zd|Wg09ZyR=^DtNFM#8UVdXg z_IE5;GNPl&A4R`Q+G8Sf!1XYRLwS~FrO9fnNsv&Bh+5VKr?j|*d0dQ;&=uMK{PZg% z7PdP-QF4$q+5Y166(V!#B*e8qR{}5hC{F9EqAT=)oY9QNkEpqDv);-25=x+V54)4c zf*p?G7+3fJf_Vmj9Zf)sjaXn8F3FuB=}!M}SyL!Kv%knq+(g(N@&nokDXC@>Nvo%@ zwlU~@;g8YcxW%=)W2N2cTm1fcC1a6%K2x~~cI+7x*GTKFC_8b<1*IyFe4cZj>c(&I zfm*o>!Sq%Cvw2q3)cRQ4!GAGSPndcPt$dp`6Yq?_0^-=(jhEIyO%Pzgv{LiM61I3EI zN%BKhla4qx4Gb(X{39`glA#)TFQRA%uFEE_n6rSrN2=2IQ#7+C+j+^PH3@BCu;r3gWb~v z{=(wDs)%kc)hK)6jm>i)s&4gTUtXNHcFb5bT{zj@zr>)oOQp-!Mpf-oI@?U@PwqC$ z8|?C-_YWA~L%qy1@iX_{k?e`^Fw0&Kyl3p!G3XLIKy9D(PUYNihV{zj-_WK_24w%L z7nIw(4?1-a@oI}!&F-H){5>HwjY))$Hl0pT4SDj5tR z5R5^CE22K;<)6=)%;WSX?b>YZit5*QAo0_iZJP)_C9Kl`jIU6LZ1|8nhaZD4lV;S< zXOwU8M zRRJbBA6|E;uESJ5NX$_mxX?0cS^w-=3gMHK&fToURZ9!8tlvX<%~r>K?+d`hV+-1GpN~zI|PK2*JL6WB7M&dU*qT2NOjTJ0}wd$NzlfDr?E12%vrx(E&Bk zsZ@kff7~ou2hw3w|7sLqB7H!XN0pH-I%|S;b~(F5y(u0>K_Krs^^XzHyZWGf7;i#{ z<29ch&-i!P6HEaKdz-97u4vKH!Gm@(GwX3 zkS(n*Npf`ZgPw)d>%%l~37cK0tznX*MPtu;K|86-wwwhPkI#pS9c!6b$WygN5FInh z48D!tR1MScZd1zelnQF8Ys+@D=`$qRlBn72W)=D=kh{4jMH}V2P?fP;l*U5`V1j+b zk$0)$wHHazYT5U1%&TvwakurdZ-HM!*cI1A1}p~x73r&mi)2|e3E!2TK^NM|my|ow{a7d8QG;LKBt*BXF ze*ip1ye${TtFG9)ETv);k;!AupmJ`-OvGcYa4a+M6p4=WWD> z)4*c-tti$tC0-84as4EsxUG4nV86Po)0WUL>DVVpn(2Y5;PH;1vU)A)4d&%%mbvK9 zFxLs^a(g=7S(;NGE7Q>l;+1e=)G=C92@krM_2fS&xq=9A?xLVD*ata@mC?KK?nH7n zoxxp6kR#%PafynWLE^$rpzhO-nuSUUkN8Fy zx9Oui3o>SEq6I03ut*stolGIe%DUlFhIg3hXK1j5koH=nhK=H`xX62$z+mP|wgJly zVAvajTA8xQ4)t?}IPDvQS+zY!rE`&Fb|2moeQ-j_ZQDpJ<^Ro0YnOi(}RplETD?4hRpmXlP?k#lM*^;<&{z9BpT-*EFndeK9lG;s-`8E63Et1R@;tibX}0-%drjW@wmwjb zK(c(^gWg1@Jp>W4W}v+u{DaSUi1c+0?It$lCxNFcWiARq_;bG)AY1a-Gm84?Xe3Ckc;2FU9leiGj|LsAv6&?n?Mr2ZxV$PyA{<2F-LRqqQ7EzZxO zJDp`|pdklmP5Cm|CMv3eLMPHiTl6j5CKjU>3|-sDk(o|gFrviUuRo>^26y>jf_s` zAG@~>(&7Om{w*ZcfIr z=29)P71aIFG1K26G1QNO&(i0vdc_#KEzh&Z-k23O<{>UctMA6gq*d6J$gMp0xGqRS zewjyf8FgWKZxXr#bK)?iqFD4XsZ-J)F&)3Xr#^@MmVM8bY0S%NM1!XfO|0Mxymfr;$k=U zkSwjFhGy@EWAHt>j9wNfcvyX#p+rjtEKmA<8Rob`d(&CsS5uZArh`HXSOz3vss4>l z6>S=%&0?Wz7bUX*U?B~C{b#u%4{7)a*{(ANXCdclu{ys6B1>FBV4LMAAX}j-9GyVr zKIAX~0}>U(sJ|=D6~z)s7YU^7JIcxs0Mi~#C6>S<*h1G?Wg)m~(IzOX>M6>*Q?V)| zD8_PJK@~puc&eR!$PPkE&k9ZnPpGlnSn~0%lOr+q+~1{eDtPwby$(c=wN?ZP7}G@M zSKnAAk80B#c;4r(<4DEh7!`cYEswbZvRfoWKGs^U!3R(DoKYElCGz;#g9`>Cx&t9} z^FF5g_qjBAm+`VQY%vc<`*d`Op=kwsL0_Kf?UIRxU~Q0@Z7<=6hFjWO#4fR((CzT0 z7mlNo9>m68=1kr#W?gPQ(|0$9B48W?&Ol~aTqk$Xu1W9$%A}2|R%lZv*jOxqfTRlM z^dX)qjReZ}3)1>&tkp@PrtM&R0o*w;mBx#HkV5DzfC#h9yxk{#t6sq^*JU=c2^0d$ zR(pcNG42K3GoGT=8$w9#)efH7uTGVNDWy+*rN4CePCd0Q`HzZn$ss7NZ=*T|o*239 zCQ+3K46vc<8U@+mz{Hx)Cqb*q>faYMy^m}nFNa{uiyvTXt5P+MN-XON7@nw!EBxy=a$~E z?dNCS+9u~%RqwD<{|{^D6lDpRZ0SndcBO6Gwr$&}v~AnAZKKk5rEPn%x_j2`JM(aR z)|#ht)_IS8BL4VdZ#L4ZB#^Ws4qulDYZbhxXJ*Vx_^1cugDx?_E*Y)(V*b3mCG%3* z(Ot>(IZ`GEG?cp?sLtt>vY6M-sTA|_Lz_lV)^SyyVampvf3q0A{Fc%3wvS!k|I}hw z(ahH2+YIM_WZASG=S7gYEyt1zM$N(LL4atO$e%0N0!bQI(7{+6X=L2sC#6PY!{HzQ zfwB$29p@Zd>b}N@05TE*36gNl)ST2DPajM1UfM7*;cm#7TE!H0c}#a5ZFE#D()#dh zgVlyMLHxbiMZvQavurIk{B~`vIBktikCwF)6yzsW;|?>w(L$hSWoBaX9FMiC&iI$Z zu*MXj&0ALQ+Ns031D3b#1Z3q59C~E&5j+1t)2mm>v|WMmTbIMg6KAzzvHtYaxF*2W zO{^{FNB!zUKrQdrKOBbNhb7J?loRr{a5>ct)*ZkEmM68m->obLdXDHi=f4Brd5*0) z`m`L%kYQueWQZttux_wE%t)lMdj(=O`bODgW~&`@ zeye39ljB~?q(p|{K50ZRLv%osGd7-wST3m)KJ3b4xU%4}xqK&XiO3D%QbR8zzXTpJ zT#T1rh!k;i0ct#ecAchLR||)O;=4|K{Z?H!iCS@<#{+J5jEHa`flJUvbOUPG1(C#3 z8={8Eq1VEb4Do~JVZFwkGB?9~25f=(T|jJuH);+v&o)KJti?TWPWI5q)qLhr_=_b4 zZ*j5h3qM)^iI^NDP4HonV`1CRRSz<9CSI-q`2JC1%@d=f&E7(wcD zeD5F1z=OenQ!^`Ufjd<7bFyB=9b)zvkRJe5a$F4&gL_}#%XT_uq)C8`qK=Iwaq-#` z@$jOK_C1X~U{%Fb73L4;Eu*OOrwU=!+(apRC(o>6g?pU373Up2-bgDRoXACD!&LOX zT_W)xzJ}+bMys-^hP-=#tHh5LN(zL@RPn985uu9wM{xyl6ugijr-NiM{z{#p1W^Wo zw7EiTAb8^}WIlTFb-%AdWozURQt}CGM7zXL!WWJZwWo8hBF{(L1pi=7A&;xYW|CW+ z`0r~aawCS-NCfqspvm>5rzyGUa|ug$i6`F%$|RKN#cWeG%Jk{g#1c>tTRft866Hvy z#({I>A49oTX1`$lSD*B^zzGO1r;)!=HjV!z)8}6W{*RCU3uenw)%=FpP(BaM3hNF4 zpbP_|tOR;j+7b8-ksyZ$*|ZYT4dL176Ne4WYrzUJL>U=UbmmCz;~%w z1|0^ix{D1lINv!fEmhLQXRqrqkH z=`Aod8u-is(lpVP4O|lK1c#Q&1^W`P=tc~?Vl`n0ftG!CXr2VZ6vdjm@h zM;M!g)#KWa&eax4;U>cT(;PSQx=x{|!L7pOr&9Po!idlY{t)6<9ptKG4n1^no$oas zq-Up^gZHguo+(HAKefs+VRKuq2$yiFkfl~*oomXl&`Qp=k7eR-&UXIA+4fKwOD9b~ z89i0_->nuOE9=u5QmB^m_Y9ja+=4}mr2Mw#3xgvUfmV^0JMBw4#bm9-L?Nedual#3 z+%!gH&gW*Q2jGL5JFE7vo{OVxch;3IEjQ+Fa5@WiIykyRuFjqT;CKgPoZiuSXYDjc zWN)hd^S(-oou%}JM%dq_`j$ot)AYZzMriFqLY~Of({MUpi=xdtD|f1+b$6CIbb9G= zz^=_fG}DjHz6;1DG;nf`a2?_y{qrGv5~DgTt2}i<@SA6glMVuDuzN_=&F5zhYV&Uu zq_)?07;+`Kos{4_z5Pdw5AxOnFK{9a=3LNcmq*wz^#a~q_t4rW&)*my@sW(mWC=*n z^oJ6Y-&cuG#n`H^WL~?UIQTV2XqOsMN3Dt!v&6i}RU|EjyoWepBweCKWczOM76ik) z`JVa@B*V+B0UAvWY)?ct*@Lelw}p3gptCT`j1$0G-EvS<1kUkF31rOX6xa~uW$0a# zAkBN^rH#dy1*{g46H-$j4qL&S=($hlKdV3x8{u|c{^5aD@a=)Mq{NZH^pi}+8V%@oL)n4@5BBh4K=PJ)+@Z1L@fMfnv#e?@wW@79+A zq0(%$3c`R$9Ylt3NMro%)pC{7Qk9d$NT61oCH`6w526|_0YpxCv3CsJN5znbvj;+Q zC{3B}lPt*VNyCq65KIQ92C2ZMt#k8M@>ABb(|`=cz#x0)5ygqnNb#p7~PNCz3`=Q4Pgghd+xwSo$l^ zKX^88)quRd_B?*Ww_nXKT(f;GFQBW?vzd?9mo_$cc2^ytkFR~G6)qq5 zBza-T%@IuBsnYQTl=kPjjO(+(1^g8A&O#@kLWyfc)FZqYxF2C|!Qj($JFBv8*@RqR zyzKvo?_o8M_?2#*d^5Y~YyyJinL6(k1D_XA6CqE~kKhzWUpP1m`f7ScRu6#h=8R2x z?1H9zFTPLop*twqINx<$ipEg-%u)?AEy^OMHB$gX4&* zW&R||5|Y}VA=k0sOZ-Oc^a%J8`^f*gV3~`d?jz(le+iWMi=UjCbFeFy-13T{`Mk=O zDE0`eb&0M3o-=-J%aq zXBf4(wR~!c?x~QonWkXsBb493u*c_o3IiYxc`@0vyNrHNAds*fGXvM6yFOOj$^lsrL#nmZ4bA7} zLXpH2U6v~p)yw#?{=IgoTXcd94)2U_TwOjwR*~gj3VPQ@u|sAQ*>Q_Fx=nvrH{}AB z%(AHDJz2=I$aILmqkDi-VH$CXV9vdXP;^CX9izOlViuT10HZAAY(Nk9wfN{;&F4C0 zH41IvUN?KtX21UJP3CW}fjUjd*!2CliS?gk_xyXW@qdAAZ-1SzJ}Oek%fM> z`ptwr8~uZ0i>1>thz#3wVGRGL6IO-iUni{3b39|N7R%(>MY4~b>~+Vfr>vuohqraO zACzvTe8T+vfUE~~@%>dy$dx4an)ts+!#WhUBzOH1gNT;m$ruWoT`AsTTqI=CgDJrJ zT_pQY?bZ)i0@|(BH)zt@_v}LSo3zlVtH_1s_c66K`{%aSL?-N_U|pHuE`DbdsT+=R zY_K>rj9ZVuFWp^8gFYtiK)Fd!a++gZ^CQ#dzY-k1h;9u$Xy+$muX5@?XCqcYE3*< z81*Nbb`m1Rbpl;NO9*l;o!R!IbGz|CGa(`pAB0zD=~JPFkFRLip4*G2;@~>Dt8nf+ zi!!J6k1C~c^t6DGpoPPBfAe~SsfQj}?f^n}%#_-WR`CTEupzi0`S+_twk2vsM>!o0d zm)SYvF27X)9M+jZLq?+4)JSzgixf>)?K4ssAyEKuhZjnr2TEbw2q3z=bg*JkbSw`F zinL1|>oUeP*r;d7?Jjy6ZRo^FJx@Ki#Sjc_FCsIa1dMt-q&f=bI33C7zrFMSErsfE zb#lG$Tn}`t{~*`npQZ4>F*XQKvJj|7EK}6U8U6AW|Fj_;T4bFR};9+kF`y6Z}lo-Ussbx z4O9_x`z=?Koljj?Z$3{MHQBASP`T3R-k!*KcYAvd&t$M;J4gVHy9o}@NS9@Tf z-spUc-pIW%H=$aeVSYJ~RG8?pMHkghYnhkh_d|@$e6_4;jdR=(j0trNpxz{Mo2D00 zBMOG*jt*S7j7Z#NVd9L|Yh{goIZ#w`T+T9zTq;)NEQtvs!-yQDvT|SIe8M; zj6A8OsRXgk)BM3=W!#JY!Obuu)SAtWSj=Z`wGn>NEaD+$j>uhKCw|%xcRi#G)~ zv->W)PDvtq=7T6a#v@2ocbxlpJd-LT*S?J<`Xw9SWnq~@DPn5$=5sE_;e1prKjoA& zW0eTYx|T{OY8=>Pb0!Hp#Do!}PVm_?m2!(okHVE4<(F_Ke^q8mjOfu_m-@LfsD=a4 zdY6ugtF&a(M(=MF%S*j2bwD7nq1U4^W4yL`VIoA%COrca6mQE@@g|AWT=j);ckMir`? z#~rFWp$|+8Y0!baMn6Jc5OBG zFuSQ3KXm&~i-Q|i==RQ&!Y~r(C;VUn8|on54JnWh>@MvyWr6bII4Eb5#i&$j*kF3_ z9Rmyw_R0sO;BfD@|1;+&zWO_3D0eGKsL#$eAU>)LBLbfFsPP@?R09&gfpe}Pa$K{Nh5 zC^%urn%*|kpJI9!X}#JPa;(=)OEQVmehX9Dm8SA-Wn;?D$5%^f zTHO}dw;+KnTAM14Z!sn55w;RJSSWKk7nP}Ut18& z(QzVC9rK5`~rY;jrY~D$DAcu~6Fa^G9#2|Y65kQ%8rBHc_ zi!U=I2f`5V65%L*2%{a3DoF~Ow4I*XSdxXSgg`#$w@~E>MYHcJ74=TT$E>nvfSM|~ zuzvU44SLb`1gnrVT0WKZpk*FJCE`o!4m?bXEKVv~qoEZ>GkRMBJ`;sI<*gMCbGd{1 zWG6n^=bwOeCzJe#0Wg*{CuU+Zf#qck6uGQtC%I{7d1>1n>+~wb_SpM5B>JbEygPc| z>i`*NB#3D3bzkj%4f!X^47<%iD@@V3{KPc@aYeYpXiU93`eh!Y&u(0>Fe@Dkl>MhewjTPu1q)VGLcb!hLvsul zV%@yL6ktj6D!dFW^Ax${#Ny?JXw;kaazAsoO$FJ!xXwp^kP5@$J#?sEU*) z_;78kdOrd(xl0G2Fhnq)ENX*f=T4&<-*N?(#m*$16xKmzWO_~Y#6rhQ+~#C!pgTgB z+f^P#Et||-K(_=AY^N2satyCrSHbp)2aO+4K_Y@-JKSlb6>Lw>VcI0{D9M#xz4o2p z#&5hSUU(>O`H3$GP&_5C4OFY_WNcQFD06iBwNZYyYG4SIWBNWqGu0iNt4`w3G~?On zI<#|X)VYD?RZXHOTa0&O;a=o6vtUoMn11^Xywz!GsxD_1&FAm5<5Z-dscb@A0VH0| z7tZ&CJtf(FdS~NWL(}@Ug<)X6>L~5<1jZHt;Rzwb>7(G9*l~-AdS~CObKFKqjFd|F zVWvX9As)U&XnWC2n|rV~;W%ZfK@i?U1K$ymQIuudDPgl$k#YxRzi&CZIS?IhAxij{fN_hzCzGv(1j9c!K zN898SBbQW^WSS_?#q+J6oY7t@ht+p#E-QCP zRc>Ag+UEhAQy}0Y6S>r&w-H7UR&c!65yQ0J6rC`x9C}c09aYl2masXScl$WDR`BU< zt?d-0Q)Q~^(YUx3%eucB(@^mc+hQFhZ*4~Hya*a#QfGFIYs%@2Q* zummHpU~Rm#+X2-1&JQIvk6>v}Yc`4W7f8nka^}=1F48gb5Z|@OB*?6|4a2_wf|V^b z(EZw(EjbxWK5xwma2?t_#X*46DN}g854#S3^O-U?TDaO5(P>ei5bk=)Zj!`IQ+SY8 zhsL$YP#gNyK~ zKU#~oohVTu`@+@i9iyDyz()@)OqLa}hN~)@Cti8UWHqkmUJlaE-K3gsvl*--4C&ar zuqsEK2=K0XQX2u7H{QkfU~0Lrddx?#H+h{RElMa95FJpqe?CA@%_}TynboE;rZXHt z=f|T9#(OnacE7!~G?jTNLL(1?;%8X%=^y%NI z19t5f!nW&Dx&0#8YfxklHFSZl%pI$2xow8ll~tJP_&XD7E5@$0DU?p#^kbK1>@;a; zi9b3vJGCIK^QgEhMXu$jvP5s;P7Je_%Fd^Mm`cdet%77ec>r_@g!36;2mBOuG`1vnCL-UP<>TdVFEDN z4vkM?zSblyx1|63vC&_O&hhn5I2XQwGb9rtYHQj?O1WBX)hXFKD{*^Dd)d5w)T|r# z{?>CE@}=V;frHb3On(A+OqVfZQvWPuj*FRod*QnB;CWxy-NyN$)@y-Ck?gcF*n!D_ zxwTC17mq&9!NVs!;_)mes6*OvKwmiIAv~zWyuh?!fNojYbXilmcnWQr@y`wDskQyO zgQa(iDTvB37_`X1U1si~#z*(OY3pL+hfUqy8_qKMT;rL?kWOz0*Z#Up&&n>&^lGIy z0>?+1kFPVjR2hT{_GCJbq-t#xbR zEYVUI7<5khWXQLBu@iNTqE*oM8nkF*ELWDrOQA{=04*1x{#0FCbVWy?2sW{8WB_s? z4WSUT%{d&lh0U3aoJ{TS7Brk3I-NRB*xaOJt@;r2e{VsF{%%3#%qvRo`yT?*#hM>0>h zay5CvbW{m60%ALceC`iingo#VlX=0dj#$u`i(-sBN&KOu!uC?=P|8?hhs}e-c1-A`qRInQCS1H?R%FxKpD$X;kx>OpKuB$`~VdgS|EqJFa7Ro z+l+1UCHNg=p*cQ&D#|T6TsK{n3dI!jl*viZqj@?CO%} zL-AJQ$@&u4q|Vy(NaO)z^=08#$|dvZ@?mJ= z2ayJqdgvh1VfGqK_iAHG5#>cwy6PO&(i@xD_-S)#XluA&Pi<<)=XqGi*3Kth#CT3}ftHVN{JvZ7ql zN;dq0A2!1{Nh&4^t_X>04L|ZSduW@G(Z_QBI$; zH^jr_rLdbo#5GNSOJMM}KUAdi$`R|`1psyt4j&NcFO!X73qqdhJzZ8&QhGunT~QL2 zlAamiq`V`PfQU#0&NV^m>+QCf*J4YkOqQ(|zxgw$edPhG05|O-bzf+DSwqTg1#5KO z1VaxLRtv*r=I78RxVH+mkT9a!%nO{Cpk)eYa~KcO2+T&^2pLbk6z}iT2{rBm&f(DX z2chJvfeTOQl0EWtg6J*pqgg$p7kmwZzOCpGJICW5c~Wlg7gJH{5crKo5R*K*BiQ)ewy2>_=|4DZxW@}|+>_8;v>|iXR@1iegYi+0Rpzmbs@K2>~Qqix?#6 zp{9Hxg$p@WY$2R%`UB$~x=`oPN(G)$Wj$nV=`xL-(Xre1@OSp+_Sd^JS}*eD(9b%<|#QV*P&SMFS zO;ul}sU3H2!NKUp)OK2FA57>xe<->6Na1>QR)IQ6#uIfA0-fdbfe?g3wP}NbnQggN zWnl7W5YairQ`Ko1*%MHqzN)3I7KcE{nKG^UBncz>X-9LSQm(PZMnT&UX1CY_c>HHk z5I?=AQJizTy15Div&PgxR`mfrokFVkEUJ%~MX9@;SrTX~*rB)eEKOzS z!m~`B9Er1O$4NV2n?ble47av|Kx)9=ULteG4lMDI6zHH_9~%nuJNMqd1M^f(skU&3 zA$jN`+;*1EpJ>3&76C)#jd-l~`U{~rnVxE-m?Nr~@x#UaRj=jwNV{%Zae1P1C1E0; zW=$?XnW)jJibR9*ZCeqZAI0KhRh*+Xgx?fUprJ%)$TyC@F6kaN^k;AaoA46-9L)@w z_bFp78u$hOYYFY`;gWFkdO@PvQFJtKbHrot$g;=0N*hdYD9#q#tj>9S1<|n^tgoEG`zTR z;)Ana?Jn?H5TpaL@Z!NO-HEHyK3$02mYT@KFQMcDKi)v)AE~43uVM|h_XyqqQpBel zay&_l1;p{gnHazo1&-o~#UHne-_8RQ1-DGOf?UNQ<9tw6$7BWiXuqA-g3+-&qOM1= ziRm$j>{&~NxiZ!TsbrU-N;SPG9c;F5U`#S0*$)hd?X!sdUaEBo>#kvP@aCd0-HM2@;q%JZ^3O zdw-VJ{)}GwEfqcAW7z*^srVKaeG}vV5(*;ve@TV%wj!1?@+Zxz5k8GTUZY&NwY3#e zFHMmK^-okXHH+Luxke{!ZI+b%=8VnXn=n9EpGe)WyOv(!rcTAL=LtU1vQ^tQ@N2$F zU>Rv$PaAh<*>_ovvY&3B6O2C+Rz~x&@G@HChLDRJQu|167_jhoqf#Uc>#)+|Hs^Zhpm> z3n`dHy6I)+`-)}t$no8o9 zLh}7t&&OIgmw;E|GEb-k>DFE@FD7WB7R+EN-<`O9w;>wX@YzVW?7??+PER`xrk%;5 zMIH#YT~<0?qvjqTl*v3LG+nRb9;sPzWyKR`4F}N#6r_b{+_)vHOG&&RPsEB|V)tW& z(=FK(&*AWQb1qGFqq5s2{s6{4&2mRM+kEA9J6cOJg)O3!e7jWGZ;esSbT>#wese@Z z1F4VTtgaNLxK{Ve?-e(&6ROrG7C0AznWR*Oqikf$bHdUP?s(*`YEB}htna+?nu=O3 z2$)Fr4|X|-muNpta?lCGX?Q{PT80uhP*pKff*D6up)<$>>q=~DGcrL{v0onKhSL2b z2}N9~-WuZ!rK=wW!Vd1kOvb!np%5utwdXP+qWr7-fb8+BDX0M*;rTGi)@kU0^gVL1(^xa{#r7~}NO zci+oEIv>%Ige#bv`3PPg;iG`=>XOk<5g!r6fsS_{zm-6IE$9da8t^dxmHxs~z2MGY zdGXISjKP3qu6EJ(aC?ALcajBAtjBuK<+XccDN!^X!QG7Kv84A3yZ}|MnFB zr%?P$CR9H(u|^QQ(VRH!u~|R^aj<<5;>Gy#;g^YEQq}qiP)7;)Q<0Ita*6~qz1jy{ zNugb=O2jkQ%x zrhZRtd>owdZUSGk-73%6bwUElh|R>I+$4ev3Q$UINr{*Ci6bO~Yx)C=3c$`2$b_XL z(4P&MLtxp7^ow*7?NCkKWKG>28q>UZ$#fCyD0hE9+ z-qbr%OKx)%DW}q)nAeXC!6YIQQn0s^mv?>aMwA&D4fps!Trfa{Z3wR^(tjg3OEeH+ zcm}<}S#`{A(_i5C$NlW~KHZ#QWVqF&G)(I;)dGfc#3>y?8$JLDniS|}Z@dw44uud& zf+N|)sNMezx`M_A@hH^599tS8enhUGLbn47cC}KIk*OpkQw`LbicMf{s!)WbN&=B# zXiU9P(b$(($yn(~Mr{Gi-x#okOz0YY1vJ>7f|dR;z=X`op_+JeH=e9Fp+q)5h| z2GOulzqZ#9Ek$rzW392c0)rXHg_ZK4Mw~<9bdcY8oVz9i#$*(Me3@>8*spF>jYzC- z6gn940~z5%NG)?_6g1i5$SEYcyaH)KIZ_xMSaL#YE|;PL!+vp;Ex`#Q%zLYG&L}!W za+2BYoDHY$>=L88!QilNv6;5|CJA<}fwKrr+pa8-++x3e^9+-UTey>5bY771ZqqOh zHyb$KWJ;pU3llE4UAY|hzyMk^#38uAcrlf}Y84ZM#|pi;z%D1&i(_0*RRvvu5G0Lf z9#h3S1S}&oXZ-nx?D#W{?5*rr>cBMm@X{6)iz>kqT4cpge2IA zJ>Q@x1JCd@c|&EJ46?(M8zFkSO0>L_!q{%K4r57)YdodPZRTSO5g7rlD~ z-lTg^ty9L`$aOyr5qx5AM5)Hqh7kvnQA+j8eUd#8Cw7%>2Ts@dP71X;8ScNnHu`7Y zt1^b92?hJ8ul+?)q{U8(`LoTzfhRVvxQp2PtFE*UDEdzg<2N1`qhU)F%B`Q$_wf~% zH(7%l+jhNzyZpY=sd{ca@I~6kckks1u9O{EvW)J^6QE@^4#~3>!^)bZyvQcTB?ZII zU@5p9RTK`1JU|TSvk`?AMy1<|Pmuv0z)nb-w-OYuo(X5Rr=O_hHCMK5TZ?|#8LTKU zNi?JllpDwUlK#2f&Ol^!XpIlm6g<@;4mJsX?$134mS#>8L8OSryi&7AL8A>lD6w2# z^R>FeUrw!64iVka-Wk3@MK=`D$P!l=t$4#Na9vVy zFR}`#z2fl}KZ$aM>Y2BZRo%QeX$ESN=E9g)6GCa9kyh|9Uy$PVDFjiX%DYA7TJFSP9Nr&H;XTqYDJ6t*P;d( zGmhun(b-pwM;4lTSG%+>$)*o(PpQ4> z72{E_t3gXYB2QINu2-Oycnf)!GU+QBW$5Y{d}z zLylKWouB3Y&%8qjyA?z!o}p-Ax2-a(kT;fA29Y0F`Y}gWD-Uqs-??VY^14_gv{7h; zrn%_8%vIJc-_eMlk}EvAEa9%G=so<3f=3EkOw4Q|$f61Py;N53B=|eByP$!y?Knvj zD{Z0L*}U_m4gekT5v8LAzX0H<@{AEO?%eDUVD>-VqyOXyKVQwjdGPQ*zyOmK2Iy94 z#hT24E(K!>EDz%L2~vshVD=_Z@$+B~@;_!;LI9lSAXjDYc8Lo*zd;y#O5c=H{$o+rq2mbl@U!`nm`<+0^ zose4Dpq(CqLzkEM1Jp`U4Lpcvx42HbgvdUV$%Q~!K8R%M5A^wfM$G)JD8+-U60$~s zM%n4nXKA_X5{(PC=)EA1+a=djm*eHC$B56@-CNF&!#YC)NVpOGT_mKOT}EzC8@)ch zr9m_`rt6|GGF(ixIZ^hmQBnDsN6Lha@HN-f-eu?%$z3q@yE6b=>`_ct$nNz&0IJ^C zqppv_y?Rw{+2D|{wk*Q)y@bIhlPW(|UhuE{U@GaPY&@hth3;K2rmRya+YWa3`iEal zY$#PXSKPIxs?f+qPRK!OaV{4x!XXP)b@ft5(I^*rs9s$4sEKhp&{A^uP}HAV2?(GY z1o>At-w6Ol>gN(H;`Eu4w)8`h-@P2t$i!t6H7~Ql%RQ$N(qm;$uCDn`on0C8VT}^< zl*(VKwVyuP39ZuGyG>aEPb7%pgy)MJ!y;Fvc~$e%JVSDY%*$z%beNQT>593}4Q!x)T8} z*fn_m1Dvc~Rj`^que@IQT$M|bY+QPQ5OjGA4vp5LksV*Hb^~jyI0wT%eTSkt_e3`D zAxLz@?b|hfqy88`L0&d7(jU@lh3^LiszP0vXQYo~EMbdo7`y_X1Z}0ZG6)lV7jTef zJ0`MsjA`R;j6J+h>j>AgzdzaurHD-QzOHsbS_G9xTP8|2jB6w3V z(&ybd6}^-bbT14qu}zZMk=yw_NDPkrOWdM3f7t;_2_@Vk-2ZpsTt^Xq6?po~*BG6a zy^MsYW#cXjwt=Lp>&md=i9XyKx-C;+%e37a&MJ0UUG34w6zXBFu7_SAMTSL&34}IG zt_id&t$rd^63@l&*>fIskw>XR<`r7}eaI*h^;*l&+8n#2B^9thOR@Nydx$9bU~s>ujpOh59oldLF6|S`bVtYN}Mf5 z(R=9j3lfFK^!(A2SkFvP##UhuydVUT_R@7*`4n*H5EVl`6d)JY&5pr`t#u&`EUBf1;N1PzF#5}|m^Qxf|OxPq;bk*thsU#m#(2B+dL zsgjd!wn>v@#KF12m!iR*|2_wd=;kH$f7kr`_Z&d?|5W$?s%uqERjlt@HrVz^BDmCu z0D4wR7V)6o(ZQ}^K5BijL2mE>dhxNJQA2v>!I2`sq*V#cGDxI0h@_Xq=BLl`!`1@< z>tMgjRqa*rUS~=^gQ{Jeo35Od-}LmTgIt3r zcgoq%MG%?18=8xrk`u^is3NSJd+>v`1>1psCJpq zct%X8@3L%f4_b&acjD2AI*P zftAibZ3+d&2gHgO;HBq-ano6w8cochEJ&QBrp?5)rG;cPEe`1dCK&SDg_r!q921kF zu-OKppDQtWi%8m&B3I5Wi_g{Y^kdW|-WPHiY(=Rj$yAaloOPAMBj#qKDd7=l(gb=i z#>uNrv^Y?9x-;9`#ZILN;|$Wr&4c61z?T(JF}RWu8l`C)r3vmu~drIe* zC8jGW=rg8CSF|rSpns>b$OUh%BS+_1v01)EC3q)1E{J|G(EOq1>7*`zL;DqpH~I|O zO|cWg;2ntPNIxr3b4=j#Cr_$@H)~Su6C>%f(o|Xb$#q&mdNp4?lNGXyinzfKp1z5nIq{ zh6<#loQakAJq3`F)&LmSWX_G+2LsQbGX!tSjil!w{QG_7z|7N0QU*_4+Qcoy!DTTc zD);PwTvAHSazet*hs64z)%520duKT*IxKR>>bef8H^M8AjfZOPaTE18p3sZ5CM9Em z(ZWn<*)R-u-s*x1#qo>xn}a`3Ulk=JhgQo1k*peGB#&o&!!&4i12edk;~yb}Zj6-; zTfm>}f z(N3m?q%16(++1vkxG*s=G4Wp)p%-Oey1Xn=@Z1j3l=}aRfcZ>iDiDFqHx+7agsEY3t-WvrFro&tiGBqV;kzTE^rCb^ z9MuGl<6~|LxWVfJmq6tC((X*$-#dsjM#06iY&$Ni=w1AtBRTs7v}ElT$!&coV6)O3 z88e0828ue!KI%f-=HH`kC9&<}{)MDaWQwshZ2X*Dw@0$S9#x~IhIr!eW&9^cHDTX6 zoaa58A`~f?4d?zGxxF$>seK8E2ciUAZCl*JV zB;pzvTvSaya*aH}k-Tip!iQUye-}TsW46pKH2|4d-lL!ZTvKGgpT+zX6YPC_uHccA zHYg7WY}-;9dqkQm1Q$3?^on*tVa|}_BjC@z5r7_{-tCf^6o_XOK({1cUBcS$uOT@A zZcdtibUs0eykI*wZ7j>0H(LC&SXpp3qx@N7>3&Ar%xvKxa?9jEG*=*tvxgpXETfzT z-WFTB5K~NK^#~6Y2Ba4-H2YI@$h&N+O>dAw+YZERquon1;KWXgEH&gsG~R))2kt^d z+Q^WNBDw21(ter?3eZPdi-+$R+Tun1@z@TS^@1fZ38yu3beOR&0?2xmG7co zc1-QH?>PJ98~XG4#@-v2tlY1>Y8PN=q3#TpGW&dgE`5$;WsTq^c1@D04MV*U&Ro@a zW^MknE{6ok6lWpA$Cmj1h4ELa1;BfPzrCj^jQR#~>(lY)c2T#c=G7?b zLKu$|I7en9(is}g*y!yK8Tga9c&nc$(oy=U<0=y zBjt3|(Rb$UWRU7?ESl%*R`Lxt_C3Lj1~_Pj{_*>!N&>&zb11IzzREMMBM6zl{*UPS ztk~OB!tZ_{7U9PahX1r55VvtMHZ}g&>M%(~-3e@VO@bc^FWBsG1`+Zw92XH00rGPC!0Qo!mZE!~jp)Wt&!(gEU zfy4i6z6OXGMF-lLYRHau>h{u$tDQGE=MR95_xL3HmK&W&EbrbSz76i-A;OkhVhq>t z{K&6Y;F#?F*Zxs6`$!cA z8Wy5B)z{h$=ISR;9PGE8V$knEG)}Ue7)1UTW$*YUinA>V)+wE`ZQHhO+qSJ!I%V6o zZQHhO+tu~!*RSuLwPwxS_aXm-%-FeO$BxinvZKx#AFN4kmVi*9Zjp&a8>Wgj(F8A5 zChor%P(n_dq@o+?P2x`ofKVysCUi6zQ%k^*AtI5*lnl~g>geDxIZTpmhU%h06YWhg zB13bLk@c)HKGqPmr3L4AaYRhQp0(ufCRO0G(mb4e>9{xwcz< zs>oxvOr#1MDY53v+EtH|rm%uD$y|(F%j3ynWi*9J*I8{eWk*%J&NHs>gAdB>(j_Rm zC&A-OJK!Vhl1JVvIUZL$9{O)y}ABG%}vN zK#LRM#AcMHS@m`TOvo?9$V9CGrn&WiaS>& z4(g_y&J!?S=GwctG^2MZFdn$QE0R1rj#TLK7+;_C924=&SUQ)jNqwC+dY{^5SC~)b z)y|H0h!4y2e|*g4Hfj->eUNIV!TFq|&!Rzv5LtZ2&WcY;?RHsxc-y!>v_NRV$ze!c zb#a00y&6L@(k7HuR1Ys2#RWA+R`;GDRin1&^rqbJ8?V@^TJq{hPY5f_tV^dSrJ~`s z#FVizK>%UZ;ou+sJYCgC83&OVvkKY56&{>s{s3H8{!r+zwhIUXX24+C0|iOfm`w%= zM&2Nyu;HRt!idr=Y*BoYNVv3@NNkb3qT7dz!eqU0Q-S( zIO}8)g)`4gsTmJ*Y!BP5^%#ycc%B}592r-No5!)gqAt0Ww1{5yC*P(@i^)3rL3)Cj z^gGmdq8MvA@S{zn$Vsr!_GEJ48|Ca!scdmP6Q?iS?9xqgjuxL9sq$R)eY@G#Dz{n>afTugGkWlkV#J@LpDCO0tv(crn}PA*a-!HjNbCn7oEF6i*8rxLy)!zQ zr?&X=pLEmmSbg^dAdwzkMu_HwN#r~j2LFPNgwX;KA}H)Oi$mDPgKxwlX;i*D27H+E zyhf#c5ET`Cppb9NxSoyOUo(mQ*^RfU7MC?75qm3j#Vq(nA@c^~wVBH-plm6d&HMwq zkeQ`R-i?)B1uxIS#@7e#O(|26l>aB@{OdGaT9ukbn~lIAf9K?IaKF6AZDJ25l@?ZR zy3x$;z)?s?WE<>o90|xe@0wYCf+i5HNu#Z;v;jz0(ft**_X~4*kJq0-<~?m8+8L+f zlqN@k9`T{H;xkjAGG1vg{d_}MYxCsP_UvqX{mKe9%5}%TJ9n(yrpQiKfMcR3{J#V4+kB*Q81&p9=|OdcW15U z1awV^^`)yu|Im3wD(RGIOQ61Dhp86tO{;S3;I#h8?oIPwE%-k<4H^K9t9n1w8}U!s z75^WU-2Xs3t*JQAhxFA19vFo5s~0jaFRuxSoXpL#QjZ#=@OS(-J#u+k z+m(|0YAuTMa5c;~vt=4TdR8{M)-)=*i6pheYL~$ZbMLJI*KApa!<2RdS`$)>;p8F( zWRmNoT8(%K^iL;jhvv_Dm_I~&F3#k z?h(7-cl97^X|>Z(_pqmAwns7zBG4e+d$M>WRM0`F7-8$%IGs5}4xs&q8LIUq>1=!j zg4W6XLt+gf$_;WgnN?kb5M=NE4(~xV7;>Dg2p{L&B;&VJUS>di2iK0;gc%YlL?t9N%d$$Pcew`9mo&Z8}{k`OQh1F9%;r%O?bGZTGZUk+O`J=}vz}Jfr zsk{o>TtQqZ9cKzdLi{KAkZ`ou)$Gq>v>nJhu&V*N7fei)3zgBGe_X>XSE?4Swr)UN zV$}HO-IXYs#M8K8{sY%QQuZDOhsyQn#p?5PpQnA|UIBokubiLgNsr;f4!AzAaK-^W z7p$8Uf(R)-ZlC^HsoF9+IC+#%j{^cBkucdXS=<5XER{rZS6+N=FRj^m7XF^7z+Q6y zn<3#Sw2kC;F$UTt<5Nun~N&Yfp=l<{i=QAd8z@7~IdBW{K zOd9R~q*uT8*WhjsvLtaB zJ9_cHSzpJFr^-baUJ~t44Yn>q1MToFaz>~g;W4?8M4ELcu3OS}@hTJ@b6#Oc=7ZfKd+}w5yx|*(x_aK9|vCOdF4B z%9~jsQ|0>pnp13o&{SR~_$14KCm&RMJ*f1U-GtLBi$sv+#Hq|% z%_$m)V)kfS)x2!(zHt78D8qVY;tbpIeoRa9eHNydrIbmhqWHdT8kshwX)1_rm`FT(eD0~nU+Wz;mzauJbi*k)@`yJ~$Do^mC3qHtCY?E``2dX6*?XNj)}_!uuyc=W zeK(%!WbJ-~iKZpGx5e7&I?1&50RaF6W)}9Wq?`dGO`;wrx?WCmJAP|bf$%EdkUWvk1XfNPNc8nvE`aoNTdgNmhDpt( zojHFZmeD;kg76M2qj$^QNPdLTPo*7(mDi~$_bU}Mi>iVo>DGHG^~;}j=Cs$hS>r1I?2@aD|(k_zgC1n^HAbM7(IUShV{w zs~}Im;V|$KuFjT*N?qO1Y2J6Wd2Kgsj}!K#^O)7oPNEZ%O&xtyWbvlfLMF!1cu;3> zQSd;AiQ+VF%u3Xf>5E!FzviA@cO@T0Ux3eY9M-W$zMVy;D-Rb1LXWmpj$E&;xS2SG zbiwkzJexj3$s2#PSSN1DPF=Op;d=SN=T>IIi0Ey?kLL^w47-YzvmKmP9-?PAR?hF0 zH&QVvmjya2*YU;~Y$ZHAKZ@@A+&-2tu9VfoUZ%t=b5$xfj%71`wOQb!j?TMiKNL}h9rXZuy)9x+l3EyURc{8@?xMRZ%T@_-wlofD_B$%NFe8{Cf~jUcJ_l)!>iW}UY54_VZS-oAv?KhO6PvEbNJKqAc3wS{H zI6i@gYM_7(a9US=Rze^NTVk$V;~?Af8MJl6P5yWyZm0Cwj=;`u(g)US*iWKdRPzp@ zlcE+GM2}QE$-t`**qP_8-*0g9XM%r{+khXuOF;%mJW*%~<3hIGFr`I3Q1a`Wb0Qv| zz$rGKWn%M%F)n za#copbnu#zlRj4cWTwModi?djb}j>XI{+1q62P9w#1v5sM^y=&?qI&oI~i)<}(Bnj1`{zG+WGG3)co0ZFr? zGxL+JuDV#@9^29uT*Z$78QX$Ts1Gj{Kk)Dg4}Mv%@r_&-*%DcYkImOyNiZ{o5aL1m z(p=$M8|HG7dg>G;jx^(^lzv4&#RJ%hF8B&v;3f3yj`>n`+1pO4n;C|{8rGK}QqxD= zcvWUTJ!qI^k<~$p;_|wS$LHPz- z^=;Ji{Wr2@GOd08mwe~g_|855q49ulq+D9cy17e^u6y8@EmRPALUL!Kj|&*@BIfvK zLf`nuLIC=NrwX1A-c9{#b{cwOmQ5u^XgHKuWlW(E^wbew?8+;faT=u?n_$Xg0dxk~ zf$W|7gNH)Ly+ptGeJ}UrH^{%r`agqlJS>;f*`Knmfbc&k>;I&w{a0B}RME7ljP9jxVt>@HeHgA&E8CWpi=N8Io9zrc>_9 zZ>~s7!Vge-J+Ps)SPGI$A;?tEP2YDHM91w{QNP^O>!YO3XnMg@#P@pEz4tM1v##y; zb!0QZMPE5Q)t(<&lL5Iu9*)wjT*6Uw@GUqptmx@JX+B%H?Cox``=c0AcCV@X3l?nl zF>JKREgH`8E;vpX9LKxOAuXFA(Inv?{};noQuh}ENpJEn+I`B7Hwsu?!<_1R=wr7R z5ix;|@pjuXH;KV!C9X=n&D&6^vzYjJD{l4c3Rhk%37_VaP%vV6#(FF=TLy zoy}?impg_Vq+DrthlbyZ%`j>mojUNXHHL&**(}+HA65Y~8;UP0bW-N9{QGs{*{h*bUKYFH=T|+hm12N%HpY{JsZutnj(Epe@!^V zaPLRg!jw+t4e|Fz=*rQ2H5zi3LeRx@auheKO;^DuN4x8lt&GGwIAM1TRUi<)(jZG1 z)h6AuUN2hp!jTJ>||)uvIvLsXF|0nBp*(R>EOCUTt~ ztrSR4%FrfpQ~?$d$5TblnG9Ohs5v|>a{FF%$ZaL4*h8=Ti`AIJIYgfx??Js)6i!xv zl(j5*pBQGraz%R%a;H?xicVrGi>dBf^Czvts{KAl5VgiscKJ9KDetRrr|1n0YZklH ztmVhIC1Pu_H-!upLQB%AzsAzksL7_{Etf}^bHB7a<2^-2)mo!1Qt#OavMyN;sw7c} z;Q%hPPqvwNU%sLtk$-wL#Evn&*%Vr4ixOXoGnKxC8hIl406HJN{lX|RfaE!frFsr# z3GcT!ZBd1Aw$|2_;XoLrb6`+Df9N(Gg&p%y#+>ar##P@z6+SLGfj zMpyW?c?*!Mg&WLvG1u}9*BpjVPd^)pnq77nuEh(y&diPBhfu$)`${A#vsRBJhRzTr z1&syUUrCI+7j)QU=8fQJGci5B{z@*ZVZKc4#1_T5SCB4`4Y-Ljd%;W!wQj&Zn*5>^ zaq0Q?rCwXvPu8%RrNyr7MM;sn5JMwtO4G5P>T!p0441pZJpERrx|fGDhL-7KP_lLA zTu%LVEprH)Tgt>m(GLf?n=xSuR1e_!phVYWWTGv{s+dLVgTA<3?t@kxfSvD z05D%k)-*S4=}=4^!JW9CRpEV)+d~+Gc0_nDxaRq)@UGkGE?6)rolCe2_$sPUcTV#f zrGsOztP4-<+;HX*6NFzdkYv&o=xj7co6NrPav*#av<_EX3pK` z^$}o`@5LGYUU!qh<|Lkfc@F@s z$xHgeM9hWp!)n1U-2C#s`F{#Pjyj~JZe96V|ENboiz zIImu0_EeJI#XHOeHw<-|&mMMe?zwq%!NMeLn1)GD=gCN=en9EvF@82vQmq!qMlEH^h@P& z8#e-Xn2J}*mnwSco^I=u&;{LuE8B>t zxFyVAvw~}ygx3A`QtsmIKn?Avq!y9+4zpbprwlBGTxdFhB8nf=y4g~s=&5MJl&5l$p1KRAU?aBsVUZ3@2~ zr$Yu z^!*}1=(k~mk5J-hX1h5f@BZEP;2(E7#c)eY+aK!YW@t-#R|0j3Y*v;I~*3?1Y z&dl6U-|AnBHUBM`)3luzL;50dIU91OO-Pc=9k1l00coZ>OtLa#ZHUnu6U;$471 z+*wK7SNib%1n;;Ruox89c+~#|P64N!{fhVzo#?U~VVMK}>o!Ixi{0@b3NK>#`uk7) zuN|ZaBqOO(wt#wwAmj|y*Z- z3))GB3+9XWjl0YqE%l?M)1;5LF!YpMTskx3>H2^;OBM{50R5?&kG89quKhKRQ0MJ= zRY09%eBDOOH|gqL>}eeauW9oLZ&vFpess+gdYdT~bed(3#Cpp`r*wZ~_RLc?h1LVw zRj5zU=ZjYp?^zg|lyDmJ1hC6D?4Wh?{i;@rv#L{e4`!&A;{(RbK3pa*1?rSvs5SIW z7pcygD_y;XG)OJO{RI70EDd9+AYm}c?9SxM#1JMcP-O85D4>I3F~atz8igvO3Fv6W z!6vJX*MU%>8h`Q8?MzcqN;#gP)*btdgSITpG@h$cDd`9I*JrC~w;C(yzAHuWh^}NC zk`UGdjpJY}dL8z|{HV{MmyfGxZAffs>iBdiX(9nG)n@>4M4)*f2_&q4Y=vbuA^)g4PxVJWX1= zM3JEi880<5Ki#LG6xW|w+A!}fw|rGhUQw!+rR>d!IQWF9wQ0fwVx&}0Mxg-L5e}I9nCEg~bLj4BIG>Qg4*hjJGSdOUC*M@n`JR`ssod``{4KPV@;OL; zQE*f@Xq#^S*lrSD+4zEWQQd?D#oz_OdeOUVzrsMRLHhj0NY!FNBJ#_fBE!TqrG^2FsJniFBYQ@sGjIP)0WMPbF=HfHFA7)6b2(_t&4P0nKm1`dNvJiQuj7?0 zi+dc6=w;FqK5WEwH7w56EA25C&d>8F?Al#oXkM%L*@$a@u-<24;Ca(D1DECzi04rd zoj2~*Fi29P(TCfFgsQPwG`e(@gmJN4qs&?ZN@9VIshqsDXkH_&cX_GB=00s`X>lA) z4N_1)-n_tiv1YksG(u#Lyipe_`OKS0rzY2UMJpX0)lq&;)Dhc)HI&#XorD|GS+E(E zzC~cs60LxQQD$wZ;Vft=OWfIfiK3BGoRPSa1ieM1(dp|_O2Q>thQmVB(1aq6Zc<1g ze1`5PT2Dt(_OxlMxR9_svLTDE!L8h!Xb#d$)m7oTP_?8mEy9Q*01L54JfCx6PC?qF zj;4;R5Yx*fASNEFa=Qp5^GmF!QX{D?;Kpgi!pbsz?L6gxz>BD3@W4|rcZu2}8$-NI zgkVlzvn^JQZ;gjd{G+H5>yh{s_@F8xE5Z`xd98I^vQ83`jLDqc-KSUvj6K-YiW?nW zV;9s3PP{C0mr5x^)M_^b|~XouR1G5;XRxt^p~N zPga=~ILKfwWhuxrD3=LVvrmvqYEOd-6MeO}?ki=<@|+}=%YCKFYJ@3WMWWG>z=%FS zGk;E?5V5+h(0bg=oT2KdZ?@havyFjL3YeFApIyQvsE%t%q_y>m4b~cP(=u+?Ml$mJ zb5(04qo`*)BlBuJjeh82zT&E&mD?gD0L;9E7^6~WI)K4Y-Jhr0+5~n7>kt-qX`0$1 z^hn#u*|^R9jd`>sw1GN;I5Xoui#wCWloi32JC@jkz+y#1Kxlyx>I;U^aInEdn`ke@ zsqDBNZA{e!N>kQcJ|Lr7k$?#!$h@E_+lLMkdI}-kAj_XSzi3^G ztUDM5I3(FkceI1-Uk#$d`X|tjKkQ!rP^|PZU-fmP^`YwCq9^He*e!x^7(5Cug9ptD zhSU#E4vRa#9k1jLVzovE3Rc^qEhg*SsQorr{Qb9Wp#eo*U%r)TuPr|GZ!HdWQ{$|J zkwRXbSngxTIfX&nX2Uw;C{cgIZXxyg7RVxQ#@^4owO#b`5_zzjMi+$Fwwd5N_-={P zwxQEd+0YYFe(?id-kVaU3E9!pX5g&z{9wJYK^E`@VD=|IKOY?RnNy}n1 z519J;Xwx8Yt{x=2kE?-ax{_E{2u_3+IkRxpJc6QK- zXS4ekc(NXTRe?fhNEd`1I>{Y}$bM)?La1xJ8|o|tvR9l{Q8id+XIsgw>RwVsIcpo{Fvy!U)((HU07#qLM4Gg z@qVA$0&EE$pO_(Yj17>7 zcJ@n(ugC2w=_sW{Rp9ZljUt3ZKx-h%#ebvwG5f#Ur$~@ER96&M&)U6Xte8i{t-L&k z&S;+e&`TemxCTCP6SA?tKvQkwQag>lSQxhP?k}T%hCGld+u}w>lYiE3jUC+pz8aYW zo_iD-&PK$^GMNLmvJlCv$}4x(L~w^w8i9+0cBD$6=T)T-SIzwnE7$hPIO6&lA_+iS zvSikUleYL$Z1VWJQ!lo{HR|+!bz<6U!b~$I9Lq7qud{@?nWMO!Bt>&L?2?3GMHRzU z_06Z?88Uii*Y%6)D4U1&m%{amsyjmsZlJMH5k2Qh0-Hy;$Thow{kU+jUqbWa3NNJq z3_6bT5M0!J+x55(cg6tqF6{a`Y10v3rjUY+735S+62d0Aw;XgvjX#$JPy6}!KOpeB zMch3RN!%cjz^(r9x?1;Kz3%wGGf9=2$8pE%fep&2f%rG`0`Qns)`E9rk%&ib)r7SzuW2#t%GRox53pBz*sV5*xjio?2= zV$s~e>Rq&gTzu+-NEI2akwK)yuKO&2zp*1d>}y!!2$O#%+6!Bg(s#v+euGPqwFdg9 zi*kTGflFCc=Y!GeYPyCcw1B(Q4{=sV9f0`CC)FAt)gvU-)Rq_)rc91GNG-%tN{tz# z>SqbOZctL}W2yDAu__-h8N0IRO7={}yaA%4qkHQyG(kRms^71A%#p@#^b?ql_Jw)M zjX=|u5^>5VwqFNVca)p~0QS!UgNeV|OO55RJ45x}d64@Q+J;(IwJ%IIa``&%Dm>du z(ctzJI&v3g`M>AbA?tVLE@;~W)9LUKWkr%pBwb zXb24WNfVY83F_k~)Y6gEV^A4As*MqtnK0JGO%9N-K-#lllC%6?u5E1zpB(;daEYOY zOQ0bbW0lw4;3w`EgtkHC;U{Dz9lT}5o&Ba3T2&Yek(~=s4MD5Q_jLqM8y29sm;In! z#jpL=gMjQ7rN2D>HfPg!Xh$T0kEPn}p_i(RkfUhT4$ipsX(<#$9;U0T`|?!;hY=5U zFaz3?n|eR=Pmv+vIZ1nb58cmI&5r*5pv6NF4Pv zH~l&FUUsh?lL<=%*W|f@_5DVZMdLx zLtx~TG(nc9nCM#TtjW0NNZ%{;!lI!(4y?@aWq+r4y>`e7)gPO1Pw-dpdbJT@zu%k1 zLe&owuQ|uB*G8MP;Uiy{Ca(`>YXx^)olIcyoaNunyja@Ew1hZ>8|DST}t zK!K1k42xJ_@l^8EdWi^0ncj2UdF}`F%G%P+=?2+LpY=B2sWMBs;r&;GaQ@REsLvl| zwfyw^yFcguci3;IZ)mA+YD{fzV`BSX&AqhrxWoV-Tt#SF327(Q3pkF`KzVV9Tb#4K z{&nUII>!{Dl!^aW+Hc;TXbmZ(0Ujl0?dY$yKVE<>gW`Y7`fB@5Sq@h2^3_z>a7(<2 z`&IYa?KbCyAW&&nN$or0m4PnV|?3L=q;li)mle?yo`wl^I_`q+5b%tOeL-Ee}y_}svWGA7q6 z0REeYz&~A5tns?*?N4$jF$4er`~NHX;b3fHWo+m~%WvT56-mW)6{N2~BqAjEK1!~+IiiA6TsE6~s%V5Pe3_n@lo`;qB2+>vczk$q zk{GJCle%;oNfqtFbSg27;1spHrDLk|t;9Xwld6 zcL%Qh8n5-|2X`RiAmvAQPL=|Pj!!Zyf-Da&VjV}Z-eZz(Q#YBWpWeGREd07|v|Xg3-~T+YY`e=@OT#VLX8vG6}I0&UMrrkzj&}H;LXVsiKv%k*uEh z%rI-+5yteGD!&O07a5yhqs5eZmoNk4gyBK&LlE{bw9u2$am7tztkL^~QJdcS1{phN zChBA9LUZha751}aMqz5vIfB-F@^o8divq? zjf51fDcMYdU@lF4g?JUsCnr%p%f0umCTbzlH3CL-h!~q=jU&tQQ(N(2%?+Pb%)vQ> z%9K8TFJbJ-pAdh`TfPRr3hgUn?tPSw3itIro3<$H-ti5DU3t*RE6EyczH4_^p>D=P@6qPWOpDG6(}x0X*k>|@j;4iSEv>>#+m3} z$g=;s2nk_5e14kR!;CmZYYj<`$(uqgTv^hJOb&X@`F-DKRgl>86gmq~H zAG8vK;g=hwkL=p-7hT4^5SB)4TK}ZOMvP`PHs!ldB|M2jmIfu1vs%drvPi8cSg{>s zx2@hOM&Z(tN**$eA!>G6h6chIcZQTROcKLE_!*N1b4Odhc{K<;nXOo4s!q+bivEU% z_;kG^DZWk)`P-EBmDxlnO*jTdXCAv_DK6OIW7MJd%n#mxxR(t zooP;8-oZFz55jx_gRkR9PcH8*CA%f!AA~D@vo8ylpjQ0!B{9=@*FBN9SLfv<`UG!H z41=j7*fsPLSP)l7i#tL6jr7+RDvy!?L081M;cbM=RSq+}TloH5(2kv8fsr`$6Tp)E zB7`sXNgeErI(V`oIEUsI8zpa}&0Fks9nLuOS~zZRjCKrNXdieXHTfhA+-tpQW~!86 z4gBT_+v&pZLjx&qZ>PPCC?60O?2Hj=?z7VSID=70Nx*Du^Dai{u(VgtVXboVqP9tff#uu*qPt@&?*tl6h|Gl z(ib!`p4-g^;PTC4zZ%#i{ zoggT^nly#5oZVYGq(G}itUqSY-rd*W=?l5EmwXRgyFyJ29DB1lHw8m6NBObOS@`8U zMHjD7?SrWs#W;;~m}7&=T~8TRP~n#$oVKtpWbO+Vwa$Ip_Urp~wzw`bBZ@z!@a6XC zG#m0)*3Go;OfVywT1+iO`7p45y^%ty&TqsnCQ}_V4brUtV6pA}#Vqb%YFrD=SNzVB z9KIJ+eS#HYx@iX;L#d;qR=Qc~Y5I%3^27WNHpUDy2Ti7GjK{n;!$F;Ymjm|?L0vp} zT(J>AK`v4}7SKPtzUGTwlI2h=eo46c)1y^ggw6Nkcvl(JF9;=?4ChRD@%1O>34;{Q zBhOjIG5r=x<_+*B5DpOb6!CMWnzNCHstGh6Koo40%FvB%6mclL1JS6mi%NL<74!w~ zaV91FCf!(FQYAZqSf-{)9I+b&kwbl5zrncIoqEG7{ZfB8=6Z50maUz(6UfYIJZS*k ze4;aKZT#oAYhp+6JCSq6d{%xUDOElf3R0VYqwc@{EdN}yAzisQ!JjMk{$nG^_#a-g z|9#=a|L?ygQDyTVudnY-xD}(-7$)k5FpUUva6c9#-ZFnOXt{iFVS(ADY8{qjBj@_? z_VlnnVX|M4CrT$L5nbTn#qil4{zF>C{NvhY%RzvOHRZL z#QTw<$D!=!kGi@C(*5zZze2VTK+-uM1(P&P62Nyd{1lQbrscPsClHHGb^ZL003`cX_~qB~a(4(#)t8d6T2m>bgU*j;T+Ng`0YK+4sdmJ*&Ijks3pr!+oM0o^*XHD+v zfzcp0Tr8kCSfzL0S4T(1gAA_VEw>ugVyXS-%Fl>UsNGk9u(y8i+~lva!_ z<{O+X)|+2E31<<0m^+|L`WS4H@X*XafS6E(u;q09r|%@h>nP4P^SPjThWM{?^3&W3 z$mk@|2HglcS2gNSwu--}{dQ9ceGy=^d%2%qtdg^?Jw{f4=T|qFD%bd|q7oOAG*!v{ z&2ODUdlcTVt$fEH=SOhvpT-)}J?9HCay2_;0rm1x4ru$t9&M3Y!S+~Os zQG3!l2_&1rR23$x(MK=*T);f8Yi0wQP5*E(R5gw&!se_lyr!TNpq-6ArpnSBN0;F) z=J$R5s_1#Cf|>PR>cxDLI|$;jIsfp^2U~9SOT+x3kOyy6Tti#pRNf{u^^ z*y(9Y2qT*$u&6jgSp$2b&;bs^1&#v7kXZUPkvv%VOt~3$Nl&*Y#mstX4;#sd1cxo0 zHM&lbm6$I!QPcP~fxERAYUy>NF7GRB;AttNAqUh_G_WMu1HOP5UX)`3p5nVphE_Vr z=N&3tshc+5=R#~q{e%8qDVp+iYrfIvKF{$naym{&P6f^0;LH_qT6T_YTEXzipGi9R zLUSL;+kdwm`3IAZsZa#Fe&(kiKl4+T{}7WDj2&&A9Sn{C1xuMq+P0X&NZk94ol*6n zh{d=KxeM0wEKTuN;M?Nl)~9I9Y}@Ia&8m_Mm;6j*EjKpQXTOszux(F zY_1LYG!o)skoiMz#Qb2dvO1M!op}DH!jTbPzfs{nuu3{ao9QbG^Ih70%a6CsaxPX8 zDAV8Xb3Gl@U&;H-s>wB=JOj|!#6he54+`qLInd75K#djuO8}UjcqZpw8$qd;qN*DzU}!iO+yIjF-Vj_` zgv7(zmBkoG!>KFH_ zMsvgmp4!VW$WYplQjg;dvX|QR5^D7?;NaAL0SEn@kEV~qj^q_SiXv%VBt={Ae{o4> zar)+$N7pwKVvd4rLF-Lx7^@E)IDz$9LCgs8PsKVSbK`-K`TJ_r{I=)nv8TA{*7jTe zLscHrG`t(XHZ**Yn@ELtDWWfZMMy0O&sOVI~U4mpO7iq5?o@ttSlQar^lntP`o zB9j$HrS0y(zcDNSAOh_Ph0pp=-rsLr008>`5D^p&^=)kan@ng_hxF1iPW;X`GPyEx zh-dL@$ea_+spjIeCQpH-aJ~q_IZAva_zeR$aajc z?s`f!{bd!Gi@>DE<;%@xx|0gXaVgE0Hc~@CI@A59~!y~Qp3nlLthi~<+?Zct1^Y!(^hiJG?*( z2k)RhIn%gje|hKTd1(e^Z*)06n*F|K55JZDvy=8rUs_?h>2AgWn#vY5Z{w~yv3e+9 zl)-%>LjitE+)?N#nv((n#ww8aMMIO5(B7i$J%&do!3+N8{Tm;L0P{;jT;g$YA$KCi zK@bH@0>OoWC+(y;9?`{3v{x;~Fh|VH?u!V>oppw-fM6F`Rgd7?)lKxH!shYOAoRSG~ zxxT(@cf%}d5WB#_Z!dl6<5$egqeodRHgSc6eN~UxNl~3s$GBxH{Hz%o(q)RmU5eki zd}3da6N-6UAQF_(oF3p}ah*`jvam2U?r}gzH%*9YW)_X1A*ZNl#{W!hF$lWZpJ^{? zC`7H!l@r)uc;p9J9PY0LqSWxlR?4(YJuK0T`>Uo{8RE$f6^Hn+RNyy7h zB2SEK0Vi~=nl$#fNusoivK zKU9Y^HEaM>*)7pll!!ln2$3{}9!T-Ns}($>c_UteY@NL|l|HvDO&#E*DJXO2XYq9s z-tp;xu2_YjHckGIS(`bRJm(PfDIAh88#!jKVgZ&zG3p<4eFUBX-px3*33h{5CfiNM~W)K{iyk^qeN-xWzgT1F#-72ZKg z@<#sJFa}JX?GOu)w`Ec&U^>h5(owdZm+YgaNX4mD%qsJX*!sbxw6IZ^{!8=FahL}@w zRJ7xG#-R64YTyE3hV=k+wDwcj(?Fwg&t^JNyB@@h#^5q3ZiqHaL}V*o_@5#8lG3e0NwJYstoGO*(CYeQ5~VEmaI7f~AStX1z+2o@u5awM+c zw3vXxQs+o6NwRuyQyd~Mh%izrh#LB7T3Ia1A|$1u3`Pd}=fr#H3MEV15-nyY;0(uX zoUaWOpGKU6E|?2dpU~^J6V4BP$$uY$3c{q`k>Jm!gFqIi&kQKKrPaQ1py8{HMfHS< zfR<&xSS$dPyX>%PRcf%NJH(H<*SAf^@hH9-^Rc3#2OG=D@kX1}@C|Kxi;4{lq}Wy` zInO;nkf?Ds7mzAt>bgK^We0z&S93N$!VvEbZyFK9*2O!iiCxkv&fa<$-KL$ z7ZJHYo19f+w7g`;{gYlaYa02<@$jWYGm$hw0^1&Gs6ucAr#wjntKDEe1v6qP;Pv1p znLzF8$)id-+Q^~{FpSMu#%s$0N;vQ-*J=;yZTg;<{vBMQw+sTw)ql-TQPfC%mZDI` z0HP}i*=M66dm4SP<1GJ6Tc_C;N`2Jk-A$rb_0M-B<^l;d9n)&V{p{#ze15P+DdhQ(4bK)$?NYNu~Yjp(UEn(o|A*TG~^?!xiQ0 zM`a=?4U#G^#+NQX^r_;s@V{7l#~{(VCQZAlPT96?+qP}nHcr`9r*O))ZQHhO+n9Q$ z`<<`5Bc^9!;`_Jv{<&hWl`HSeyl&N$EU7Y98NgmrkN_1XQrYak4MIFbv*MJ8?yiS+ z1i7>EoF=8?$$2g#k`M5qHoilsBk|+4)*dwKg<)~VQhJQIF1%14GzFI=XjV_{%YM)OYF|2tG z5@XF%q#d5rX4;&unSuLc14v&O^FVTQp4NLt_O?jOn7X|^ZL=Qbx}MH(GvS_y`!ore zrb+zsY^dXd=|48dJdvO-oAvePL{8NwL0zzN2zEYgC?JFhrLwWd?a&V{iL^APGUc*J zTb|K!4&RF)7Ubd%mDl08!a-++urF*=pC#vuWUo-z8ZBp18$YMa4K$6xOC{G=QEtZ` z895}sCrz6bZ%DBi+;FpR!1Yo03#tG{>HxFiPYids>JhPKc)mD0V&z1_NTlI6kX@Ga zXcUf8%-~C0e64D8e3=e~n8_kLYUWRTf&+aCa?Vq3yQ5`uN=|QR@@h?O^*$5rJWR0) z&Lin4%;2Jve?GF)Tu#@pOy(pxvCIW$F7GUE=N#1fTH8~t{E4Lh=O;5E%|Sr)#g zAb@lkEazDx|CB3OHEhW7+r$xGZG^x&4y#s)`auGZa4t5V@ptF}JuhvbyJX0X$d!*s zUW~`K5RnhIlsz_?{E#?TShJ&PUTk~w+)SZ#_xg(y7t#(V=CjQUPLUa1rYD#gAdCGJ z3*CYCz2FcFXM4g&MCPiFI~U8%F2{xpCmrg(L`PtT&x%Buo8xj1Pl0wKhX>l0h^O1N z&c-~smA@Sj3aGCeP&v#7SNI`0%Z)89`U}smXAJjPrtam`4XVT=741vv&1XnVT~Xhl zw$=~buWml9Oc7tm^W(QtvzZ)>^%Wjay%Yr@z2Ko*g6L=ixfv(e^q_E@h1J7=X(Oi< zEwl&5&T8~@@9+jK?J_oUm4vA(<+943<`CtVxY6sg`ca1$iI*YL?yDE=plQY{Bs@E%WS+HWTb1U(-Iue-)=l{$HyW7;E{hP}7Gy2zY6r6pLC zED}WJE9%?81o9=}bl1qff>PqssAl(*!7zX5#S z$X!Q6XG!n|Y(1jF>>(9Auq8Zznn%R2zb^|V+fyasc8D5!Y2PG2kN0V?ZbK*Z=rCK( zJmbrh;)3>bwQj}G^O@hMN@EelA~G1?hh>M%cn+?72$e`!`_KJg%AvjIB$kFrF$j2v zfBD60?U(4jEC8#bvwt#nUXh-q2E^YL40Qtq@65~k_(IB=QSRsvD~=c}ZdPz~)JK}0 zvqRYRTU7Q>ROviI3CZoPF>_AmQAJy_=f`jBEkF2^ID+UU zekL2=|1thD;qX)+Byv|~{EQ&}EQ`SOmKj{Wg+WoL!0Fk1*Z18r)X?!1?|&$%pbG#SbC&;JzUaVNS4W7kzr#5QloB zkuUF!pS!dDv2Ighn#2Cxs!uHb*;h2rMvjsoQjvWn;PC z%1zH~I4efh-y}0`z}}ud4m}D(05%lqc88b82H34Q>dRc14d&`LI6u%~bD{v+|K{G- zoI)^;5!6t009uptVrepWErWHklG|W*Y3j+o#m>!Z8pP+4hi5aF2JO-LA(+dx*{%8c z;tW-tbG3HYnA$Qe$nFXW0Hg# zY9&fa<};J9-TY+GLrX-MF?u~LY6?@hF!b4jxjft7f~JIDE%k*d%2S3L^nqwDp=o3s zs&7*bHKk&(_W35brdl9!kR>>wgraj%bMGi0p&SM?^zFmi-MsS9{Sq19ck$tRIq!1$ z_LsHlv~ap_e!MmG2r9P?S;BSm?B-E8tB5HnJVgL;bc~)s{Pq!yv%~QXIlSi1r~OfM zCVHfp`7S6Q$q6)1!um4da|@hYBWl@uNu~J~qwF7qHC_au8GN(9H${mPB*owmyDVT+ zIx0Z(LXo*i=p(TlCyd=i3P;zA<8?_#rhey>2Y}I1gD>9fwv^(HiQrj`F_o6|JoNp> zZJrqgNzRgFfSYV_?u$)9IEF*mE0U&6BBP`m0NQh)7)4iE%uY6R*TANKqnnu*YJ$uv z$Rf<;UpE#mJR$^hBh%HP<;jU|)b zlney2ip(gEMF4(Y@oFMd(RJ=4Tb&P1qc*hm_n7|CK-NxBqX&+O2|9_nG-czB$qPRD9)n9r_; zkWSr-GFuUjTANyEMln-mQlym^rYe&`w#Gagvkpu-OuXJ`$9L+1BilH)GssulgXPj{ zPKdtt7i{pXR3`%jaV-S9adg00^JLsRXYp?mD8{-f&$yG+x)FkBK8K1GWW0=SbUF0t zDee9ri^3==_uYZY(F=ZG%X(c5;r<6}I zn9uati2G}!t0IWEUnNd3mT?3`jyY5Yt|o@H4r*ye2YIe~YK|&dY5}svau-w8wosXr zZhD?kRE(Zcb1G;^p}ZPZ&-Zs5s>&-AQin~F)>&m_2_YSc>5^^B!|2rD);#lebTSvl zfWZJOY2_A5a;c|VB^=DMle51{kMc%c3~CUv$66c?TbvoY@vDZH-FU}=T*Hs)0J>{5 zABdUm5QdmB$i4q)?our3*X02){VFF_E^)R9VGG7OIMUz!6o272jvM@-XvgwZz@Q6AZ7Mch$FQGESQ_u zRbCKfEFFs;Z)}CojXxUYP=b^^I>x(hn7_Z6z-4+H?{Isc7zSi=7r<3Kz_$K!SI5YJ z&B7IuaAe@6glVM^%nD#Tk$^%dc5h4q?2m(;oSWd36ub0BdvWv@y!7UIWrUNOf9^k& zREWN=TcthG71gQf2Xy!d<;@ zypNihFu+&pFAhC@&sJn5`ha{EC96;3!#fTAn5;okz%NKcxqQI>rB)yZUkG9xkiZNH z_>D)mUY7|${)nSmR4{4<>%b&g^Y$|&eo^MR+fkxp& zPN}N;S2qwDcX&0&W$854G(}HKttqN?`;iDhJk~$!i-}GPB~N24+Hs$IVy_G1OrbS`hog8)R}YvF{`UP^r^BQn z2P=^b+qSyVY#U;w?magLpp(-aUFr6}YKiyQ6~*imNzt;1N{8_HGljl85?HwLDVkQa z5h2Qz&|?2P#53~H`j}Ox^p4&4hiuwsZ-#u^HMNigG zn#aTY`W1PM#F$P8YO0cWd2ziiwrkj%{lEvRoPg3>Az+~cJeAYI$`|_KyAlvpQUZFn zJZVQ1kJh5pM7&-bB#J>`$%tg8)me}a=NQVXTLoBkc}sNv zt6K&o9J8W3p8o*n`iJ6C6Cl9G3JL%a0}lW|_TT0TBGx80CbrK1qIX=XA)6q7!$48D z!-AKT%s^36v`f*ZB>}~!3o20O;1hSTa6ymvTtH7vDmfWSRms zxHAtPT`@3b7=}Gw$uMJ@J_1TtTkU89J*-*PHg*c1Jdf%`9>Q`@m^Ar%M@?^D?dW&9 zu50Z(;$gk6fBiifYF$;=iaH>6@y!tVLL7C@aZiyx9q^*fUr9V3VNyyVgCQ+LRY#Lk z=%<;Mu$NX)ykEpvI%~|mdwYf~pQ^w}F^D{KvY+j|v{Ej$sM4<06SK59BPt4#h{s5Z z3~2SPqJuHQI2|U83v~7lqcJB+qICFuW!%bBs0q~cI4(+>#TwO6G;qpbbn;5hlNPVw zytGl1Vc`1&D5XyxHv(?x$B$~;=fNwlA+Lvej34Ov2U zhg7r7wTwcQ;vtUUhu)GRWJTbHy4 z!~O!U0mw4WtazoVNkpbf6k#8VqLCnNVu;bTM%d?VqM*!M>daIB9NVdf-)OdJ77k#E0?+y=cqv6@CG0sY2t8&1=59@TGy)XW!SXxMp&Ys>8 zn}u1^M04(^XwX*3>6WL+k^Yxiu{-xB1+O8;p}1810F7R8e#14wyQC6w#gn;w-BJ`o zB~u7JUV1FOGG$!0X%sMcUtm!5g9BhUc7!v8D|An3yKv4BpQ+#o(0w?NM&Bi zdEA8~Ous@V!HD(S^=y#kX3Nb`a5VW-8BUkcxYXV$%^x^SpD`V~Pxk97AItL9{Fr?7 z|NI)0pMDhFrh3#yV`iPB3t`pth|gkVPMU3Dcw-7$@kxvpF?xm%8}b!<#ce=Zyo18`_vqdT0pE8m~#tI(g86Xg|e! zR~AW@_rUArih&!ha6WS5U~uGCv5mr>=3Q{GXy*>RQWc!dh7Y63J#*Fdjxo3MUy;|f z2G2avBuz4dJs5OVf^Xv_2?)A!54iZo6F_{$pH_fxOMCG15G5Z$?AwaMz8MwA*|zli zz@+2djr^IlvSn0g87(3SbGrvNFv|_q?<8S;19}U45%Hugz9k_nBHgE}cxw_<&yJ<{ z*Gi?bj*Wyv>e@qF0Kc)N(ddEKRizdx2;$5vALwsrN;wUKQ^IMM@C(rd+}gyxH(^hj z4hhYzO4)6p>o1YxO_uk=JMVaz?*ijdh3wvnO!m2@JH8d7?FzraLap@=2@zSCsc}H) zy~9($z0vI}1sWqwzGMHSly7>)_Zh#z8rIt+t!|5|ZbK@(N$+%@NAs&g?wXD4K8fU0 zf!sbA)O#AtrVaKRi0s~rxa-jPPxwa{$1A1=K z%V*#>^16Uyru)4uF)6XPHYeImVy%-Cke@#P&y$wBygdksnj8;!j$*+yJ_4J?RT5Ht z>XL}{An@S9*J9SS-laUf1Z4|xIl>E;jX(h$q#ws$C}0nV8>H(-_4$R>WtL=hvHe~;pF86R(6}brI~x_ zbbmsZrJ&nY)Z^|+9Z51+cjOGIbo8{!k&mgyXsTB+w2qwU9Y?Q8<;-aj1hLH30eeN zsbyYj-U5S?8N(+9K~Dmr-q2A^6z)nwTtb{_gv5tMg=K=RgL;=Y@IVedG0NoDaczML zMb`j*8udak&wO1Zf$XH-Sj$*C0WCwgNV$yDbL&9vVbLI)-{eGxF(TN`IRfH2Xu$>w>h)Q;Ear+WaRzc*pM8ON5ME<`vMha+R3*+o1V)qg_*FK^->TID zL0SnMH!9?lqw8(LM1Dl08RQGv4DHCG4BWR`Csh2RrqW;P( zC`4TP-vTyhKI!hH$_@n1KIp~hoF@8V7Nw_0juK60fF7e&Nl@NX@R@$DW?NQ+(R7! z^COh*0maa4oDjMK*iZp}aRTddJPg8EPJ{L~cGp1tl~b^Pb{*+SJb&G5X(rH&yC$1m z8~%nZv~1Xph_P(bS$`aTS~ucY(su8qt=HM$(>^jRpIP%9DghT;W3}IGL}fQCdyfYh zaNT-M$>9@%8~|a&$Lw$9M}s92BzlDT*>GcolP6jJh~Gb+5o|$S_#fd%1laktvDAM= z(cQx7qW6JLcO8JpMqw8#GaOOm_MvMbpIp}H(BJm65pdr_M*hk;cZc~^K#TwbyIcrN zv>zOEx5&|UP0e9Cbx-XB<%XWg7h9G@vMkW&cIeZ!PHEeoPLLKXO;N`&wc=!AKpaR{ z1T*C~pbn>8OD8!}($C_Zcu-)k3DdnpzE-nsUR_r=9dfTF-j`ILQD}z;$g=KcUvO(6 z$OXwJ`B>&;x>$hm@YD2w50%=lu=EeTh9N-o%}CBUQ20R6!~ijG$DnI(rb{nBWiqp$GggbeFA?Li zO6@q~`rUOJm*)HHd3hUvS5QI(`WdC7-dNjL8Hk7<>xX5Rx- zTf**?%xO;;p@}tv6p85O8)*0scq-G$*@?V@)mr1fVFuS_ws$PeiaV~lDU8+!sK=_= zmhGBDGZT)coi~YwCdcc-V-jtWxm{(=>ru?q&%psU-_^+H{^!c=j%}q}_s~djZa&@# z2KtMXmP19R=eQBwDL7MboQDg_?d{HA=JE!+U{hI^Y)$!;Tn>g2e@`f!iebm-u|gJ+ ziMX~pat&Wkc>2W)z@bmYt?xbTV2T`HIRrQmdA2PwG~?A=;6}aRWpwM?%> zqzUNuaX&6bJ(Tv9@FZ{|&Q&_>F+XKY2~n_)&Y(O<@R2Qdh~(Ia#I)n%mUe&Hd{UfV zakjz?K-OTY^(Pu~nJ5q~QAz!MLNL*_VW^KYx5-)zb_S1jh>T+q_ z=rvtrGq)F{AG)I6L_ZN6N^I6>w~r*dD4f#b(Veu-^xB`sS#f#>SEsal%8>Pg%r{_9 z&e9}UUfYBJy6nNPAHktXAAql-->^2*K=J-NAY#pQAbbCcfZT;T$tKYeeGl0s^Fuhv z9-t|}7=mrOsMT;PR~awL(5`k|PjGnFh*KNnr=N`{&mqs7(TowOT~zH0V)fDTK{`@(7CAGQbN5tq;FklL4Gc0zFo>(25SXwoI<0(-*V zv;4qq)LHnIKlkY4_yLeyxc|pl`Xb*b@-nx6)<&=mW=@Dqx(%fyR-wA+2Tz*yf;0y8 zhVuL| zapN4e!!d?T=^Wn+qye5j^?)ajIrw$fOXl+ng3r@fl>gPh>0tv>0vl4Q^#A$SrA54VU}#_sF-o1Xakkg(z#BLc>s&EfkFrHk#^%LCIy{FU%^&V zaq5MTllYZnhcoc(oT{M?kh3!Mjsn{gJz>tPfNUH1Whwp&r;W4te{NRT8C^R zEiZzwn3b4PnB8jxTFKgWfTEk4r_V|iohe&S)wuaQh`if!p<{XoQNKG1aOqE1xhopIbP%FR z=E#kaGhfoKGS(moJTBofOZCU{U;HvvZixI^9H*O7(_w#2(h!3THXxYshjB(=gtXvv zHWbFs1L5~TBq0{b^b?sNf3{{L4g07(T_Ry4N!O?MX9_MzF+P}{e>S>u|siL#j z3d(^{kZzPBwv|f=##l4MR%vG_ooY8!xMLat^w8)-BleE_NU53`bNa~BU4nROu`GAW zVC67POWNlYhPtqSwL4tUr)N`Pfac@wB)Q5sM7GgMKT6Cf3WM)|GA;{mGK{h2jL>Ex z&oLd9K?o5BKZivScLl%j6#mVlwxnNv6ns;VHNXY(&c=vB51|)tAG7PfW(&jstUB^X zx^j^Cp=mL_DmeD4YtC4TCWfum1}CozRLBmCU^;;P&B~^*^eC5$pEvYXkf35Wj9UOY zxNIXJ*!sD$bNkOprY^b1?L!{kc-M@0OHbokhc*LtNFWxHmzM4FI2!qR660=}JoadpL)SL&W_aN2mIMX)ldL=Eeeax%4Q@Xr`5FoMY{%_G0e#{Ih~;P^HmZ1LS(hi@2j; z$D|`qA5jT1YbXJ-EA*P`#lPo6zBl%!EFd7o3#|n6N|VnOQCI07wr8(Wz-jSIYQXvn z2Sw!$+Dl;&$q%7N4O(p5^0jDVBZxw%XjXxtyp<8H#M6FO?q*tnpp~#{`8&-hx zT$VI*tdTKtSH6CHFdwVgdW*gxLD$D6?n^&G0id|#Hl`a?7 z2jr?0Bxs|IUkF;K)LFRkul2OQt*b6e{HMutZ{_)JE`#N7G&yEvgJatU$x!9&ZE;xj zHZHXnzGPE$x+$5YO0>+@h+p2ki$C%!74fs->aLSAuZjQ_`T3qgq2-wGY`cl&R>-}R z+K-e{3%D!Z_2O;{3@ud8(Yw z5P(m|b^bS)IHZD4DUY}v0(OA34I;%^acQvvR<5fQrxO@;<|_?h^}H1_hNr7M)JO1_ zzzbFCCya*Y`ST9?fY9&t`;*v;G%Uy?SP&^b>8cJGJ2KhYoAIz&x<8WNpm7(Bc~VMt zd53f9=AF)9@#xy39ql$4cZ^NYTmE-ogg|@dPB2zipP8ax0#~2&E_5_fY;&s+EaI0H@cAv ztjf{NAb$RkX;iyOqHRQY5u5=dda5~m}O|^k5nWUO6WM+IiFnWEeN`as27U zKvkTLZVODj9Tbg3drp&PA54vewZq&)nS02*?r=1<>kF$ashy#?l=SV_hC3kQwaf64 z5#d>0;_~%m+}Om=wBiS2M99DMPmG7-^odT)$Z9e(h0`)&aMo(^!G}MD*5#lntKLGF z%EOKPAAa7c5IfK+pW|}!J@Gyf84W$`5iI^!Tql+>aW=Oz{$KC^9_Ll0oYs|*zl^!!D$6_?2w-4n2yB%2B%x_w zm>F^jEHu%M1+0N&+@pR5&71!gMiHBh>5by)&x1_x>#NWFu#T9h)tzTSuzbP$Th$`= zR>pQL7&*l_W3My3ru+Rq-tXxEs`jX00?AG2e?PNK?EMn3g=8cf2@RNls>_KRr4c{{ zX{8y#fic-wyg{JsGnN>vi$DSCggN4~Z$ina zX3c*;KEk|DucD!i!6Z(PEbW|$n;yxPLsl#iuCcbQry4$?&)vsR96a_5$Jb)ensP7~ z+X)Q9?;%9K>$Lag1dA5TN~Nq`2gS*P<-PsJE$lFlO4!iKm2C6oI;k^eZ5Eg-vrCCh zips2cX51iZ=FnJbRJ3WUuc_a3E#T4sZ$#q$+Q{SvPl1}i@jT}8}K|xgy59dHv)ifmxGriakPsYr{Q5aC|!6+$~6P8{$rf7bwwcX-4pJ;D@Oj> z2Pf_=mMxJ%uqKA>9)Zgp7^24@sMqh$p*v{x+Z(Co!HNHx^OoN&>jgl!_(lT5G_a*- z?rxh%p`|YNpjjbN_w+Gc7!Rs~&>6-~U;FF_z%3HtgDwWOuN{vLA-%&`xAz-D@fiL? zK`fL^2cLFhjxgA#U=8U-hZLT_xF2{5CoUs7j2ZVfjOQ}U&o!Lg1KZG!Yfn#y05+^Q zT1i{I*AC9|467hsZiICa@%1`sWHn}FmHw{%;Q^n)ApunJqT(g;%x})M!mo`}m63Y| zMp}wDP+_$+0=vIn{QJL@9QCF;xEOxUl@-kYQ+winIZG zD*^$h86!3E_poa8*xOhGp)bw+w#l>(nfx;;-NrR8W7Sw$*|c@mSyE|ewWuo9N!&nQ z>85q<_WAiy;OD>n@!I>A!PI|oamAc!&UeAVblh?5vHi?(?J>>ue&(m!0jW>*h1pN) zO&T$52)-+boE=RNH9dIa!Hqj;!(cstl=mtKtv4WY`#>_wjnS|4;)pCaJQG$uV2{>C znN}U%Y8G@-zju0`_Zs5vLmMHbz>U{0>0J-IjriFta-YdL5$4Mpg3>}Q?IBR%A;8^9 zo<^1TYKy!bxo3$?N1@)d%nYg8l~OzL@!Mf7LwVRSE#T$1f%$7EN2B}QA5<bm(FzMwC(Za+rJ`L+hso1?9;GyX z@GBm#p-zqGqnJK4s3$WZbKDk({&#`1QAZ&n5Xv!z}P$rMX-9qAw6I5_E5_ zjYukvu8elF6erI_t6K?OF+0!@9w6nqcv8J1-{lmGr-1g{DBL(Vzn*~g^!ZRtBqNb4 zGQk%4@VOBUse*kxDL2oJUb$7*%L5UJ41a*9IcTuiOLrbV8!@eEPci#Z1f4zZ7t>}K zPmOKrL#0}4<?kt6_Xa9wZBt-!11@Pc*59j9tTv|)>=DWN zFI@qPml?NA{$PT=Z@YO0r%G#Kv_hX@X=)g5nqAxU(o%oRy0m&efcYvtc;<(iX+YV*M6#M=0H=t9kJ`2$#iOKw6rvj#2R}6Du6)b z*p6Rd|A7TO*Pot-%sW7IBK$<9Q`nk)7v*tAAurM@&q#!at?DrU1yJv4g$}X_xUq3k zL$G8Wt&NlgESJ`WHC2p;g^8m;c3haUIt58#gCH6gR@T}+SgO^_)}3>K&3wzhwHnUu zAc%&d>+X>)CX{4*h_)ExLXa~(vo~NeFg0r=-OM-z3an^*WHLoBSKi|+dNoXc?Ckyy z`CL@BcXErH^gN;mf-mWrIIvKK9#T~~rf{xbs{kZasb9-;(4czmDhzmf19nf}D<=%n zI~Ap8hE*0KV+bGqu9iex-zQbAWco$D|EW6Q8~7# zEt85-HnHCfnyZ-d1Ttmy$2#@tkwc$e4c#&ZEZrWArSCMA2xZmN#cLS*b*;XJak=7V z3)kd%T~rWM;$mEKXA8a`w;*l@OxaY=Zi5$Z+F?@19W)L zUA(6wV0*}5*Be_bE@t2Dg(tFhjue`{-)s@Pd^~Rjk1Yvf=r6&6Hml$y9&&}lro|#u zWkQI@ka^>TDi>Mv(5={q1hb!Mic4d>7pxCF9%AG-;&7*X?ERa8H*rkt-YkdCgSTE) zI@>_Yw}4@kMx&-Q`Pj%Qvz7j&l$aHZ*cJ z`6voQ?3aqTxt?|DT?(S*S#;uH}?D9ky;VteL=vc@6p%?a)V+w1AZ`f zOD`3wTqYOKGKyN;Z!n-#EyZh81`DfqA7 zA9%Su`j3vVw26VE4GW;D9(j#AIXv7)QD*~H5Kr;KCMOfoJo#5cH!w0Pf1Fg+ zCF=}7#*FP7poNV^!FKQ#l4?zIS+8&R$t^kT4t}4aN>U5U#ZM2iPO`!~V;)mUxw4yL znN=f*P8y~?6^z2c{EwTB%3p9Rdk7@Oz(mY=a{}x>gW(z?_i}pHfl&jBHsuW|Sde#i z%A9jfGkHIZTFHbWZs-LL(#OPTYc~vctT-|I34t#zGolMOM2}hg^p_bEX6&+61Y20L zD&2vQD=KsB%L6GVcPbXQ+VsIa3~G)ieszzx#%`Bs{Ze`|>d96>g{EQ%j}U(s)M)n5 zzwFcW9K$y)Vri@WtA)@r>kMNm%9rTaxdRRvIin1q)9VgkGS&wXT)A_ri0NE7ZWpZ# zQzkD<0W(%X(ZUS4Al*fBqP-Dt-$xcTpIJKUvQm}hNmQl6bhgiGLb zUPLqqoEuu{=A|y1pJI6vn<@u*EwOgbMl84ko~UFv-m-Pp2vu8>IOnfi!4i^HMWY;7 zDnSgb5TH6R4xy|)#0V_v6MxcN$xj`~A?net){EtWGNN6Z7uNUT4Wte!NW#d$!i}X`(|L@CEGXIBa``>?6+ZmvR3~BLeYnBLX@rhB9plD|_F$!G9AEE{p zsj+)!lE?&^3g~2P5-A z1Uz|@a zagkQ7{8HiyBH?@Wlz)W9JD(Op0RfYdh`F%25b<_Ktgw>pKQBdbEG6&F4_Hk4N6(i2 zZ?)|I?NX@N+SnOem|Fa!bBowIJ9_-96`@jD=YLk+p&Bft5*3lVQEDYM6BpiS8Y4hN zhw|W*b=@`R3PI^0BXr1T3(AY))j^+^##1FIv6ap5J4Cuw#j} zDWZ_3pcaV>_Dq4;V;Faviv2b$8?*Lm{X8MFJXZ(7Snf?X7(-|4-m&SKJ+2ch2op@i zR83Z3Dj^xOXjBzUQ47XOr zY)i-G5Bb3t{O;U;aQltnJW1}9rZQK0vRfPZY29(j49KGUMA_Ls{vJVv;v{j12o1Z9He#P5J(q#&ju*v1;+~G^D~HCE z{lGv<_8GEH)O$==q|e!d=b^{HkAE{xVAndr$YG#<50_zDE_|f;7>|JBx_#1|HYPve zg_QcQ^Vx@nz&sKfx0pa|PbW)~gybQ(0m8PT7)e?uP}*E%-`#C5kJ?uh6DOY3O3jy# z)M+fr*D=4Hvx{DjJJi`4h57OqvA-i!ykH1jTd)Q(U?wE~y1>UGOw8 z=q(6~Ac?^1*?RO}2kQw3_a>d-kmKc4Ly+Jgl!y!1r9(eGUghaYINNO%?xN6+8GEHU zLPGo`_KiXZ$%+wP$nO+KHRB^Fo#_Xg@gnf7OGn84>jL5tq4zmh!M!|kHkLk0JEx1m zaM$4L!4-HXXupfsyHHpaLTK85?Xm&h$uY4DtYKE#g?(idP@$|Y6HyV$o-F!x%Uga!9aGUI|g z?JK+c9;R;{`qJl)Kf7aCtIAwkwg;NYob38FYz4@@Y194k^5E#Y%G!(0n362syMI=d z=O6~E=(I1D*E#ce%)`^x{^TCbp{Q)7@%D1-kTVvzmmey{DL1e5S({{c@5^d=bs5bO zcCe#GDyE$jL}%{dUF(%2ENWZ}YYUb>)v2%3Rw){qj$4UWtpg4w8L~VE7&YSLr=1qP zYqMskJ^HK_ZgUJ1gbcisIB_!Ix*$ez1aQIyE7?k^c}XTsDZ3QShfUd*y6!~Oq1h~1 zgtnQRmkcizo|n%gM3>EYSq={oVq;+#)6B$Y=?OQZw*>?bL+3NB*+dye<$5#tjQ)A| z>c$}buH8*6_(j{VgTf3GYep;e<$i8$j$mII&=qs)4;}oiW@iv=!1OhhaU4&JHhF@6 zmT#oa0f&@i&a1&p18U(7Gb41#@0UE{cp?=DT>62qLdJ+#bD9~`1Bag1ya~}`64euh z&8Zu~I9eS?3^n2_vUkbN)z@R7yaU%i9A?mgv}i)V#9kHm?HRj?&oOTjIKTXUd7(ZGl67>Jh%IIG--~any@$Wyh>h?d>z%N>YRpWLV z3Pnj3>xNq5+<1PgMbbQ!FcHBLpxTqj@gu~h%?nf3bV)OBC9}7k1V0Hbqu@A<$5pAi^G;phbN-0DmKJA4p{_EKju4&7OMqZ7zIiz>Z5kbclQNY zZq|#|SL&`h6(@Zfgo_6CQ<>gv$C(E1y=90m;u35gtt#6`Pa)u01`Wm*WeN&5$x&p9 zF9;9fcysQ}y$M5cv(n9$yM7+vq;gPHZflYumP>V3>u{|{2ULJ{uM49!^JFk2^QZc& zyG>{6u4qwo#^_L}+tBdcYxmW~Qhg3MzzXgz@^JySXH(q$!jv^e^C)NJW@^Qt6iLkG zS(O^9lRFw|OEgSY_c(!sQ&mma-C`9c^`|98Lm-mdUj*5QOn_%AoR?%KXSS&OFXva8yxl&kVC{1?LeBHdSGUVuRoJY8*3CW~pQn8UIqwGucAt^xA?4#cvsoSVIsPMZvsTw%^n`jM$dPyk}yHsxgl$U8jmVwI3 z^r82mmFS#WEm*apLrl0j+LqwcwVNjjd7{|{giE@~cCkVR>%)?Eha@P6?9Z8bguM!` z^F?(qB*TvzdjYXC9h?~lKj29EC3jwNXFS&}6U-uMl#o)f9stE*YufFcCK=1yY6=06 zZIZ2G$C8w6F+lrYs}vb0GP&tSW?6_~9oo@RWcc?@JhA$K^B&p*mMy+OC6Z1og_7Y1 zU=h~FE{t9MQc`Uu0~ zKjwYU_*cQJ)&WffU=_pxZfJ0EgjY3M_}TQyZNT*9UhaByOF1GKu-{`%J;r;k2~b|NN;*pv`6x0G zk1IB=)xdEp&I*wy*53O);(yNx5S}H3875U#WD@7`Le#p>lQ~dzi4$)XKieX9?+em} zXYT(A6LUyE+YA|hvj;=>JbJ?de)cD4ZahZjy^EqMpcz9MmA($-frBQUUAplQ12@~y ziQR#{3%X(K2}}0>Gu-hzcGDs2>DLIaG>yWL$Qqadog9JP|KRMMf+S(PbkQ!`wyiGP zwr$&Hmu=g&ZQHhOcX8LZXXeDre@@IyoXgD1jFs=gqr|#M$vAYLLTAEPy#M+D$$<@+ zm;Ch8r61-6+yAd=_1~VGB2`aSBvIsVYd~VFA-Qlk~#sp5+>(8wdsjt5;FT4O+ zy)lHrw_<~aTxTQrJZN=zvcekPeIayzXKD~*6V#C6gn}GZg|Pu7^>LVaxFq@ZI%odY z#`&i6aRbl*X#WBh`w26O#45K+pOnfa*zET*%QV5D0|~WsFczG%crh|q z?YY(3PJED-lz$K+2S3%7w@9~Qh9TYcc(<|7%U^k5)~+d|mYry?K7whkt`AS5>#?e> z@9t|fsOC~krCkm1?at4qSZ?%n<7lAFJqgw^)~d*_8#3{Z!Z41O>fQC%iCa=$tBq?P z#Jxx}fNX6HS@)El;L)?pS&@=lrktcdwCfO?-V4q00&^E$$ySO|=QIK+FdyMBuUxus z-hoO(9iLx!j91?cj^zp$@y#fBoC`myuR3$8;~Gi=Rbqq2zy!hW+F7J7npQzkBv>Vp zUZ7c1aEjV=+2m5ZLgg>i7Ql{B-9 zWZ$xxthX9k?Mxfz}V~@4R->9EfvD>p_G{hIbR~UtLn5A{6~>hXH;aV zZM41lq3VO6OIK?yLnLTR>6OGGe?gkQuPXQYf~CRTn(-%7KJawsYQe-OSlxlYU)(Fz zm!L0@WDh-B(#$}yACXp4Z7?wqZ57eZWyKbbsbS6R6g0@HtPfgqeN!cf`Bk8|%s6R` z6w79QW&V31O+P4Es#?Y_i;iS-kOpFBcLTUPL2j@<@a8VSml2_J@-M`iHZ^$b?5D8g zu}~!YQ#q}_*i7hkU!+|BboW4Atm=xK7! zmTDHKZJgQ5R&1YJoBjN>W0+Eov?%wVQst*`V>z$OWOhA_dXwr4k*tggySxE&-IGUG z1%UT;E@4*wDAt_1*kh!5al34tVZldK99Sis8!q0Z-JhJAH!8oCLs1lJ;0AM?{r6w54He=bkPlR!(F=D2C)Tp+D`=Wn7PfI zsV)+1Ka}k%azWw66pVRwh z8SL@8y>{|-r9tepOnq*x_PpgG(12j14IXi#Y$gjXO1^D0Xw_d?H`~}wZDG9#GL2So z>S=vr%aW89eT~^t*Rlj@h-CR zwY}A$_N|#m>`x4#Ln*CI453_V>j#zi2-;;?8tFiJW_^z7>G#!jZ5D+5BY|rl|ImGc zHCD7r4r)TtN>!b`wcFkAXNO`7WfNm5g#mZzo)q67cN=^Ba>gm505?bD??)Ux>y=2} zaz>kabMX!LUmyQ~;yXmVAAw%W51IJCH}jCwchI*scKQ$Yf0C-EDv~Plmkc5XxZonb z8VUjm2^zgdoJO8mX91srm?&W87^5A!8+|aWWnCdsfh_s9HJvYvwCl?*mfUb#YuqR4~IEA zgN*yYp~3L(f&<_id2YemYFs5I_tw;mL@2{eFhMstS;_NOCArsa1kg!}A+>IFqD6A{ zwM3}I)#fBaJu~g|&=FhCj%x^*3QI16{)%fDWCE%TLzN9@;bhCL`{4-pg+|SqAZ+Z0 zV2QbU8%nA+s+{UpR%z4XbQDASp*Vl5(e$xeT7}?Yd1Z#k?o*K9S;F5e;FcAO=+CO- zZwJ{PUFM64^NfND+Z6YH<>*`(`}Qmdp%DVX*_dZ;r#-n!CWaLuKs-eWwGAi{#rdQP zi&ybwXq6__lP1*SdysBX1Zz25ZgxkTQd#y;K->AGaf z9FLH5D0NH(FVAZG%?jgq=h!iefAp29-+l0#jr5b9tygq;jRd{=}!{aA&a2nY$ohyb?{ z?^w1G?r66QXyNa8c;M}^@P5+80lWb4!d}sd2zmBEgXxL)6*H0UFnCN?ulFEPZ-YV? z(Dl`HA?D)p^Gy!@L+S2NlF9`sjo81L$#z2B08TKLm69XJo5(e8kAbO8qbnSy+g1CQ z3iMH;ZI)?c;K-U(HD+eAyZe8`rejhYlSE^(sLbLO~=xMAlgeyAJbCZ;q20JIf z!3<1mXlv8t>nLqvYodA7-D|*?`h^@}6@vib!Az}FUum!GpNB*FwyV=Cr0Yv)r1SQh zhXEn~PRwXTlHyh;7i)N2C?S<&Hkx3OU9(goJ9?;3)<4w&h#;X^Qq8-GJal-oj$1t7 zHKhCWu?8A20fs*Y67>T6IFpRA zj%0fNg=z{m#*Ujkv+w5X6LCR^1yB#r$g#6dfpTniMNGqa=}mmm=R|MjMU%_-gX&A*NT_14j7^zj9G=dX8^bbe`-x}ci zO)Cy)yd0m*%sCJnAr1a{7^1$mk=<(K+bWo>n&ak{XAvSUrb^z|mz6ArnA^nq_3P<` z{G%NaGuY)b5Ptx>8F69s7JlEZvm>yWJ=6;(Zg)HD&$q$L=I*6IHnD2SsBC!qp*rOV zJ^;572sTj{Y~_$VHqnf6~T~a7w0AJpA4_mNcM@^&g>=OD%=NA<$!X zjWb^G`(a8-h5qyL@XRuKgkfF4lUsuM;~fn)TozJGpCGmV^$>7XOwaB~wFt||Y_O8b z7V{&Rb)0XUDaX@rUZDqgjHjFYo*NoG9s_TZ$_&lYHf3i|iT)p%lVC510|Wnn%bde1 z|Bi5a2;*Vw!0J{1YE%QdGoR&tt}sX>j!8_V8h~G$UDSaViWc(XRycG~y4{@SF*eUp z@6s2P#`KOTRZbz|a!3xjK2VEl|1ctp@;+&by0vTN8@ad)*=>G-E5hr)beR>B2=L{f z8;9giViDzkyJ9H(TXNA)Qqg}9ytMymGg}F8p#7twkmSNv<+%j-@@1d+si+7{EQBDC zfK@IG82!6O!7`+%-q#V|d9vPj%DS;j)$1?aFFlRg+Uwq?galIU==VJN1OJWQ+d&jJJGL4Q&a3&gITBtZ$VIl?8{Il7`l;f zs2EfXTSJ)jbz|~?uo$}IXXWR&K$Ja8lONriDkafnj$4*QE!LH)6g-BNsFEf}2`1t% z&{Zgi2p9~}&bHH7slB^3Xiul>HGZ3iomfjVt16Aa-!L00F)oqG5<7wQk~}ioxOG0b zD9*^Alqn^DSxbtHDQuMsrWpBF-I`0hdNG(;pSuYlu{kO)JTfBM9uqH&bm?~>7Gk$h zw@vQhIFA_89#}%q4=`v6GDndGo=V#QH?;S6X>ocw8E?CsT$U?mZY@3HtklxPSufcK zi;;j2Fe|pSqB5|J;<|SA#{#IvVPF^{12z%vDa9tFaL!vaJ>H;Vd%n~KZt$~XGqAlC zms#3ym~tDyfUIbiD>FHl5Hz?#Z8#yOF;lC$vM5hgFs#}9-B#MF<0ENY#Z@tshrN9V z1k=!&1|O@GqLBq^bQWQy1WjVLR&TzT(@V@Fm0xTZd~3fh z#{hY`7Ad%s+hR-{fw-72&wmj_9} z`Zr-EX?3M8ezcpV09vk7C{MHxWw6IM4GF(@^HiL$pr9S%VGgCgLsXJQ4&Zcy$0gTTNH}Fp1y6xlbI?OW2y-o)I1ewdiKR zezbWHXP^`KCyXCKx7i_?yWxC3e3|ek31!uH+<_&aK75v3_t4g5x4pRePki(=PgDIRo(gA>KPZb0kyaY%wLRzD8H*e-JBz9zx1KPAe?;E_cuH=vg@2 zj2Y(f_WC;OjPdTz8J%QA{)lX7{COlX=<&fz&hGmA2{P9q{(%jLe8-lhuca5ftiEn* zZybGRODMgey!q^Af?=N;DH3a-(9tGZNG2eHgg%5$U(gyDafnN}&h{NL8jl^updwko zR?*`a%lX+PnHkchd&q2rkwS6?<5%EyuVZu^J}{_j_8ma*vH7QWQ}@V)7e`iHI-1wn?&czTjQP!V2!rLwFxI#S>VUXu$dSZ@24yAY6D1 z7e;7F%pJsxyWbvZoc?V)Q{c*?A5-<+NU~~zNIPk}**VF!`yTruN(rul7IKdMx@OOH z6ysvW4J*`t&LO(|0W|`jD*>^8K#k`gdG3FoL-db8Sy123$=Sj9-=4=PMQvL|eq?SS z&E$FOJmk7&l`;_ZT$cnMNCE=lH-ScoLh-AG+Q<#_6zzIE(zlAoA|GN*?`#g zj_AFxmge6;hPOV1?Ouq1*=7vLX!2&((N1oxq04%+R!Gqn)5p-99#yVmJN5&|(M@s! z<`}%0;4_VFvXm{hGn!YD6MKw&UCeH{6JFe%g@Y!Z>_WHRtdCN60wSEFLq@p5W0(wT z3%AJ1DDAvZxRGLtq8KCB-Ygh!qfJvRmuoU#~b;Zdk7$KWz!(n7nD;Q&Z?XX2v8EE~T z=WZ%&s4~5B3p;~q?|x)B74F@e2d5IKVQq$>1T6*J9|QQa+FdR_8)=jzmGfIM-N2tt zhc(*{^_3+F+BH`q+=TS}h9M_q`+C=G5k>t{# z#CE?HZ4|8!UBCVlJpWITxs>zbf&3Jh_s_CN^WV1Me~Rp1mc1yYD;cDpG82?+sfqvx zBm_^UGly~k5Drp7{!K~@5@sznsJmcnh1T5Bx`pTtjMwM78$udBEL8BvoBSYa3xpz< zDdRG$&G97D^SUeTNAK+e_B&w2zI1dDA)r`~GTa=5(SEaU3%$+cz-)*c>Ko zKE^emAbHxl9yr~Grc(>It(rlV4h=-fX@cvqbykL`E0F1G6*_aUl1@v7##-}4@vND8 zQx)j2^Yv}HT~I=j>S*8Wd(0tueo0(dCV*zKdb(C!YSMZ>icZC=zt|RJ7)s5>W?^JU z0@-U$QZoc$#`+_$eTv_j!fhIO@K~|pZTNxv;q za!*Aox`T%^F>mG?>_~Kw*4v4kHr5&Z0h`ZI@@}X(jy#mrnBvP0kJn6kxJ<)Y`vo5h zOCQhWqzj$uuNp1$v{QK~+1;z-P4N)!0g29L^v(nu56OH87cpS}2wp_Y3hhA=o`vCo zd;8z}^$VQl|AFh0;S2U<%1;x(E2fu%(`s=&?u+XZVG%LyYLzkaZd4q5GyOE;G~)DU z%8pGkoqH4|4++J^b`<9Nt_-=_i2+^phQY;);}H2kyrWr*jU?o*b3G+Qs8bH(Iinwh z6No3ew0DXJIp%|-JtTkL&l^d>2Ttk+zH4%eJ zMAwDNT2_2Wo8(MJgtvpjEdGDVQESor6o6>=>cdr)Ix&Tz7Z5s0pQ#MowW)1|=KNTd zJB#+q0j+gf+7&!Ftk)YbK%@;%p4`2EU!*PXwr1n1z@tKE7vv7~7@s{~=2~VpL>98T zSx{JmXMYx3dw?N75>pB(|x|m zWGqW5xS9fwK;9+Qi-`{%+A8rsu&;w#GXWNlQEkEGKK9~VlIQ)P>7&Xh;kx<( z1&z34nNW9&Jqn5|_%EZ@#d}L!V}(zB@d?Ac?6blU2!lV#Ug- zf2>{npp?SH(A#_h792ul0D;q-9YdznejvlqM5(iCkHf}nH5v!Ay;gC6_Cuj>n_0$x ze%gImEk6h{e3rFvzc|?Sw%VVjVx=ee#ZGeI{grQ^=GM<&x}dpN=!+Qf z*7W&OLzL6g(Ro>1eie4AWd&Ctv(B<%2vC;utg^_{p)dvwH!Ec2?Nak9O)VuBM!Pt4 z(P>%n*2o;}ZxExF^jS4&-O!`a{HRfTaBwg(m;Ba>rP2bMrJJ#1JL6o}xDwi>v0z69 z=Ds<%A#}DK4C-wpg@owj^I>LOXDl5h$W|DmVbT$kS99=8!jPD2gjj*oZejQCiK}70 zXA&#=fq_bkSw|J<=$5G(i;^?>S)91op?5*=^3sGzBd4&aglLsNHx>6xi0YmFdqD}u zd-SlwB4mcXO1b_F`Khc@!J4-4_|t_Q$e*bD(!&_HXj#OVSc~C3$k+#5DTC0P!Hw5w zY%?3w1f1RJJsFAA9&NWwx<3%v*#f_uH#0mudV=Q{UYG&7U*uj?3Bqm0rqP5mMd4JX zvomHR077T*r+^DFvuw8juCYA6K#u_Y6}w*G_t|e@`kmQm7MH}G<;P6&a45>^x6r6c zH+{FfYE*9n{Mq^c63Ft#(_S6D0cSsUsiL0g1SW1&$ptmNhkihvyWOyss@iqR+PwRB zMmoSf{q=19!;Y%;g*a6=>p(pjfcXL0*Pa|a%bP2`^dut%5>y@buBO_eYOVO5a)VF0 ze{QSzGU%^$U2s=k?)CKfedt}@77*o6fQpE{hZy~hO0*Nyeo^sJJ@vO`lTB>}qfba%f|S{vIYtv^^B# z4mmr{jNQA?*n?5Ck1xxwF}V*fORz4z_ghv!QqJSo-i>=%`D<7>(YWn6JN(J;c=J&n!2(}IU;RWz>ap3bW z?G?w_U?F%Az8XDb-Xve0!3Hjn(i8My;#|NbYH4bVd8k5J}%9%HI8|6Fb5c zb5?UPr}bDk`3<+7o`<+*FylgZB_TH<6QDjryP;YQGuTO+z#Fj*yNIioZfJt*3mP__ zz??neDiJeRe+)P=vNda>bx!Zb2N=qcf1sQSMQ%&OrubKM?f5S0Q3&P@I1i z@UYdYq~QN_*3=(7TIhe@S^pVZe=M8q%xz4?e+ZMdj&?r@*tY-SRitX^iZp`ZGpylm zZC=-R2ZFT^e+jSNe82}m(0l-B^9yaq9|s!4-G$I>$erDhz#ljsVG*AMi#41{XK`LNVMynJ|lidn8kQmF!Xy z@L1#TmxFpG&^eSIqKSo1l-JHL45epIiV-|`@F5Nv2(y6e%0q_B!pk`;hv8>Zl5oDQ zTFbOB<;BgyV>-6R3i13XU=!FPubHXBvVkHzxGuDDVR*4xm+faLm9lHG%0zw~;YD>D z0SIW41a;kcST4M#%|u&WrCGoYNdg9xOlH)s`|hM~-F|d+Cx+-6M3vm`*n;$ngrANG z@o;bKXN{!-g1Hi$QriZt z|1+2xrEh~jh^dovxn{Q|K7=%zd0gW1DE0?bm`rH%jD&EfnM@T8QY`z>mG(+%l6oz) z_oh;r))$|#6$@e(XDYSw=T<419Gy|DyaIMyTZ?L{e>`tW9$Cl%byqCWfD6fY2N7DB z(pOsss=2EXfRGw|UpVG%I>)_2_w@F?2a)-nO+Bm|xIAixX|+X4wW`n5$8az>Z9oFx zCOAP4&XpZVf_6v#q<{i@I(aGU?S3W+W>@bwW4fVVf&M7^v0g#D%MLU_yQ6N<-9S{K zz0h_R?!19&_8~9M+8r%-!Cv$H@Wj*buwEg2DD8H?v`C_GS#P0mw}CqR9ocFmCg(&m^R4 z9xg={p6Bfu8-5cqHV`b!+aa73|NI6qmA*D0Od!wJ4xWkBEc(u`z%IiQD#U5$!l%d` zK5j>vHgEH**g4E~&T#QBc7K*1Grox(eq@}CHwR=ug79jCPpok6~y`1tPZCKl5?1m68gAfrPnEPHa1u}Ook^{ zxev0ZLIx`jIBg`3qnh+I(bS&2|8j(9CEL@7vNsD=06A1;BT;AKOOmG>5AOfK%3zo6?T%hJwC)khU<5dho)?#xJ7-_Pa@m4X z_jgT7nr7#g;+m0Zk9cnPG))qz!y!l?VaYP~tQ{?`*K_J5`Q>+AZ=2e6&NnokG<@(O zTOaZ5K{-nZMc;F7G*&V#x?}}bzIrdRD}`q2!A?kmerE}PcTwtwl~*BApJ5%yJ?LY$ zkB^(6;79FIo8pb~t?BKHh?_45Q=$v>E&Z zhM7p4subtQu7a;-*}Fo$;|bHr8UwRx8@GK`TLo(vvgfXOTnG-_X-KDf&Od#09`K*m5q>Ne?j z88i<599zQP@90=2iW6y<-=T1Gx!}`#7?`?#8kxiL*aaQwc8DYNLRp{erXUKkCq+C` zWk_0<{?D}QPS6+VbMzi!oBV2yj3_Vw=R6TS+*(i zOuV$d+2N!R4^x6fUzwH!9BR46cm?I;DWj5eb746Jpz>&oAnffr%QQ6U@iSz% zZexXZ!PbplZi6StRE>eFYRz(GSAYq{LZ!Co1k7cro{rM9#f0m(v$Bk9#afnyi__oh z9Tcq<7%uew#XnhfU`s}B(dxzpBGkD$Y^xLsrzo^8l#S*8IUV+&-4;{s zz9{AAASw29EBfylVgEGU|7W-T=Y!J!HRhrJx9en+lI9Pi8u_c3hMFb<`EVbFpE8+7 zj;|A74`enLSvv4`cf*O3I${GO(6{-u<0g|JOAzre=N^7aKQQT(!??h9KXicd0e|r@^MIXx z%8DD$?)-#h9S%6_q;2;qlBU*sCweGIFs-3hl1|b^JUKn_)K~GEQSC}0vIqNaQh4d_ zNmMQ6X-^4vzfmM=D);cGu+q|8Qm5lk|JRKHoSyhJ(%Mr=UM&N+BpkfZxuGS36UescX^16mV%42(|5TkT)o(!m0fxW9qdzVR>N z5=jAeglHq;X9SV_ZQL}^Q0mBx#7ATGcN?z{B+#wnPx2d#EX;`xuN$1ZS8gS2Ub7GN zm624Y3Ngd~l(RJDm9L|~c_m29h<{TY2#(ZIZt*F5omEBHi6&W{H)yiVpEkz{l)!A{ z;!di!S|7k(YqXjk@Eluf4U(My_%`$clCW%*<25-IIH4bBBu`?9BF?1O<8fs8=ItQu z3G!FnbWrufv>xZx5DT)rb6)HIaEISkukGzqCQkw2XDYaIVb6If^13^IeyV%ANog%6Sv(hNS*7 zw<@#TYx=lgCfW)I)cR}T)@jSgxK)QxhF6dH1=kvST62)lF7$cDY~pGm#LZ?Oewhb@ zgmB+6ZUBw&E1cge0uXvd91{S#T}nVLusSvny&AVj|A+6Z%^2SYI<|JmB@l6efGJE0 znLG#s2|ABM#1%!$krf?^%lqrUGGIdX^Fcd*#?2;_|0xRj|GU`#z0}prU9o<||~6t*WN#eoolL|$8$$jfX3Yw zfJ#9^Uj%gJ(mwSz4zynV)FrY0auLXarB<+JuR;{IC2;%#J*n;)s#extC}@=Q)w?(V zok%a@+pZLDEnYojd~r9*c7J|l-17Xr^AZ07C_4;Ta{C2G=|=8b^&0Et)d~rBKm_20 zjF(`Fml7ijd<)J)Abh891t<85;Prb!sW^vY-jq2-5Ru%;r*l|#1q)3<~ zk?QdiJCHb(Vt)SPe@vA&$rk@v%CatE&n?nFpBX7_Z&`TCGsSXvm-PnXcgFy7MJHf- zF+iJz>>(gqGD*J$t6h>;^^h4C#NnR?=epnN(Q1rbGF~G?EQcCnSdE>hBUe2$Spr+v3HVP|$ z3ji{^hiFIJSjvniFCP~c8uuf6$f5*b3}DY&gT&k)@I4FWwoTdvIbbI;DNHsRhcLFw zF+-!4YhaMP&>{Gvl)Wo+N2BtJ(%78Si$UTV&KP$Xml!K5-?sJ|?j?;FsypYeu4(%% z+d<4VoR{SqVYsQ;06IsA>jBNEg+-dcoe3^-x2$)AAAE%hy)6$>CmKPaw~?M$rVNcY zFe&zGEuIt^w)+Bn^(hTw8pMIkB$8@mH8`B|MY}E8jq?=7oG-_kuy;=1po%3041O;? z^2t&fjyw$nUzT3n|8Is^o>Di?k|NNLJQL9b==T6Ic4$eppR&9T{%Bn=z@}R-MsBa_&-ivAMg*UdAyX zesNseyKV^>4UoqLpxNEsFK7T$j?(EauQlVrb*mrOiWQ z=;b!j-&9#jPeISr9gyUrG5q9r!R|X{^*$J+j@+H#huBce9TE!f(2t#d>Hf)U(9e=2 z>9-|$QIBnZtm`0k;LnEE)RL;ClSwg5h)BDP23X>Y+@!4o@!QF#4H^*AdjmBqFe5&T89{(mY<{_ ztgY^ce^M>6k-#N2pyV9ePHnB2PHQ5o=TEZwN=m02@`r?;9=l%BSlx&-UGC6<2M11j zS)2N9wZl?V5>rQ`Aod3uYBuZ;(+K*)!`-WUC)dbM!jrNk|(5HvU zM$b3B60HqsiZ;~F2EkJ@>PrP-mifQR41UOxuhI7vfKj)1Q)wZbQ(8@qvbR+tqy&VD zrEaL%C0gU$Ue&=NGdsNzJNcMBf)Rz2^9Q7zb43Soy(NiHD&17Cu&wp^?Bdy6;yopW zyt$BnoJf{T${gblDJ{>Y95oJQ4l=Ji>rh+tbX79gAb63lV`Te08wu{AxsYzN!es{N ze!~dkFSA8S^tD~1qbUQ@;m@AKc$CP~tXNdYR;!LZovZwrMSGOhn<63Kp1Ac`u6g2# zasJHCtuckXz^X67lF|0L8pBw8WR=o8AhxKH>sWcRA@c_O8m!?pMEMfP_?F=O9u~j9 zK_BF`gZ&N+`qQSfBUABWzZA|goS)G7ZcpWHZbZFqk7W#OkBGyzOUS|#GR+3N4_|j{ z5UJII1QMo*Q&yj;&Go|up%--~D{F7lgu9^vr(`R~f2Mq5iE)hS?!@kfI6 zaFd#+UhE2dBYt!6!zsv9aFaefg=TpY&4)>_Vu~|60QOg{hPvw+d%*L*t-r7$o?tx@ zf{~$@X2YbXd2dtYmjEegyFU!lR>(?&de`=HaGDJACL(!jGaL<_;k$~F*>^@-?I$0` z)Ez`1?Y;P$5$o6O0nvS$gkg1M3!l(RaGKTMtg^FE+7ZgkZ#(-FZ9^vk>CoxdUR;-@ z9ng_y$>n4>(nKzr8UxQ`1@B{p2-zGaaS5-yN>W~@8fY&hG)sbMC&JV*-Lf!i9eMrh zx;U^4oc};#IfouBG!96p8dRH)1>PkM;jb?`J72rD9aoJWT0jZ@m+t21$wcKNwUXdR zO-F_P<$g!f?y?@0qtur?)4S}ED-eq#Ss3ekg&jH(TmMIvgDlmLze3-`>c_tTJB8_o zabrI~DGB)h+$9saLiSJK%1-`Pt)VqGj{bRXEY+A$YRd?w#!gGR9jKjQpl z%FwDu!Sz^%V#N@SgUPXHCTi-A*0tXYl7B#Zda-EjMDos08(G)qpqx9;q&c_G-45{V zyk@RRZ2-X!gs0!He@tYuPd?fH?%mXMgZvH>hOzG~-gC}Wyc0nb&s4oTrXRdb)+%P6 z+_grzF>`X@AJ$3S?wHS5u!C@fu7kN|FdC=w3P7W=S&67_wS*X;+U{(jwXt70WR{d- zB(5;oI@Vc0fi{JO$QhfNkJ`pqVChnaoWTXn=@`nLWOoJcsIgklpVz8@cq!&G6idPh z(5zauQ@l%_0u>h3ua5A9e(SV`a-H6f3eNR?Fdk5+TE;1{2_tN?jNT&H^PaP-gxQOB z28jF0lhNUTYa4-^5Iv?-l%ReXc8FD>&d4Z<4~@y#Bvd~mABc{jI@$=CE0_SIM}5MgkMhnZ6Po7MmF5 zXGL$s$N4*Ccdlo~OV3OGbQ7gg7tMs%5~JY^xmYfHoEl>$NE~G z#g4iXuDS~*r)}@IyW}i3h@~$Vqi21#9eV_0RLx5=6vBYLK7`ph zc@4U;COvPn7#u5Qc65l1Qg*FbyT7OPBF%K}>DAJ;FsEW&!z&jPW6xdftU4rL4nnVm zz|;6p+it(|1Bo-Hd4;Tyymg7%5=&Sv1$Im}w4>Yv%5w~2KT!dsiDCfPMjDc{aLdG&={lZ*ZOd6a zft)x zjRe&I5agAZ!VPfs7U#=%3lQ*z{5AMW*Vkz?pr}cI-Ur|H@+yrgjV3r;?frW~46!aVf@CU0C4VEkn$?w-r_O;E%}Atg8pUEcXJx?9 zlf>;7*5!#a@9)_RoJQM2QsS~c){b=;Xf^d)kG#1-$)eZ!*wE&*A_8B*HcB>ZcSE1gz7s^9LKkGY0Q z{QlP3wj_2gKi=`NyXeR6%zzp+W!9)sT5|EKKkmc(Y*Ch z)-_|%g#2XJFmKut-%Fks{gz$*bZtbPY;jkgTxer%zgM+v&v8^e9~BZp!1Y;3>vheaigalX7Z?PJf$UU*#i^e7zBQ;_fJT66|4Cj5m9w zAzILvKW8Wi4dGkP*o*)pX0;eVA+2Ac{uj zQF@XWck-~pE)ZHsvbM~dng8DRPRz3@>et!LG4Y{I;{ia3odzRJBcMvi;RZS+8}bOV zmIqak!k|Z3lAxsT6P>&^%FKsH8syy~FU5yTfZxbd=WfOWwH}YiGw&y;$nij)vg<`t zfRtWqPyv57hVyO_$i!_DT`XL~O(mAdfn9GGTTo7j2p4)hm9be%VUX?>{u(};q%7{8 zq7`hYIQZ>^iSrfA7rmEKL|$E}laH>#!&>X8XYrAJuO1#*y=Aa$VWB~64DAK zrXam(^5#;21v%7*z~&zl+wuo^`ex6Aj{(f$^sI<=6@qPzqLNTY=8Q-RFJoVHfU^m$ z1BPsq*c}lwsDtPcs*t}`Kv2jn8{uyNITW{uk7Ml{m>Wj0{BKD0%1KNiUlo%zsvu}0 za>D%7J$hn-bQ&R&f>feJNicigM9BHP>kT3X=X6V32llAd1@?37;b^1ulOS(wL3=RcvIEfARdoC znSr5cJ`+=lcE`gfuH!l=wMp9icZ9vz&lFl~@SP8S(+AFwt&Ou{w*|~?6(<}Ha=uZiD7!bk5 zpu9UPsG;dg$@3TP)-_d^LSu?gds~NO*8UhQ&d}IXC~!{e%~|Qp;T7TVEpc02vr951 z<`e5`@Tje!%=2))QUjX5*4!B**PoxB&clB&)P23ByL<8^{zUwJ)S1LxwFfq*gEMC` zNXhE4Z8 zo%y;ys7r}Mf7#%o#UM)C3XFL=KcM;7RCD&pzleYB%XO%Le^~jjSigQz|F2uwzu&yn z-PM#Ur>vH)fy|Fp{a%Z48-=C`Rby|mRriW+a;_#=r*vOSn%j0}#;qiNh?%)M7aS>P{dqbdh)H#$M}ReT120lMM)D!cEkM z6=@gu&J>gmFwkW53z3u1QKnMOvXkyIQ*mAQD7~bI%`r@kGM)4Ie_8gn8F0~c>!MxI zg>FaCzTU=1+K#f(^=)|)=U=H505s8+Zk6K1)T+Vic`5y&g?X#o}u*_KtguI5v_hz@yc zES>7?lzge^3uJgM96*O2BzC(;ma<88{>4%HSPAV0|50I1azP>f+*tk-N!e{ zG~c&70yiRDd2ll7dR-zFnKXx?Dw2E$Z+QqYGJ0f`I(P6nub51;?xttkyO4 zhQIY*&kJB@stDYbK`@fnURd&fMh5>n4q$ft#Q2`ag3RWL2!D`f*7igRs*oa@ScVK4PuX(`Nt0-$REN92l!y*T zcLNn>=Z10%_Y`KXPfp=jOs;yZ)(A)X;*!o~if_87A!W8UG~8B>66N9cWSj_*V?TEy;)q1Ua^BpEd~ZL`J_d*kLtD9pZ0P5 zHQC?xfRjN-`4&^B6TF|@$SJ~mY|tBOVX4aQOc8+xHu5P zCvP|9HOXHW3Ze(0YbX5JwRLnb385X*Cx(~&wSX;LxQ$@~7|01UVBHr}>adY1e;ipp z2EkZ*0hdf*5AaWa&e@5xpBm0*y-XDn;~)83)eq@Dto*gm9>u&#VnY3=A{26|Mt7S@ zFNZsWOux~}8HN{M6C=9Idr$1wr(E$_49FpvyjbO{6&Y!9KneSxro1W(t5_nPhU~XS zjhSrJmS-bcZwo2Qb&RDCk5*niGL#|S(!X#n7b31)VyZtl_CxY{>!NDkU`VM8r!Fsj zo-k_Ld+NkPRif}d9inL zfhLzUA^goT#or^P+W7p-$|QMDn%hIlsxuXH=K=v*69OX`ZEVtuTu9jU$&?CoG6rCR zmDrKO&2}<9=yeih{2bLLZc( zfMV0C47JzS2dQFG^}0OGPv{z1vDK&~@;=JYp2x%ptkf=sXZMf>>yuKPpiBE@&TzsT zwoFe^0^WchT_hDB*v4AnFO9ukjn+EY3^s*I?$t;dQXEO(j2+Zy$XDmI4=;5#Yy6TZ zp(PWC^4d~snS3%i1x733k|{?R^FXc_HVN>VBOJjq@Wef0!;-d63Yc`P4ZDIe7qsRL zt8MW+SRb?~eHGUNTj++FzAZiPVYyT5Mt9U=zpgY+8-h_y>1`d$KZuuvPKx11&n~s9 zy-$>vgBh)^DN#e|XY_4#*#uF&^%)NWcMN&)FXqVaB62L@{)t|aCEZL!NhC+fX$*yh z(3Z!f&n_7(Yl4jRdJV>1Xu`#h8oEE(zSsc=i)`aB9#|suEB2VzT|wR12$M)7hrdZu zGBjXs!9m@nz~lnnrIDRc(G*$!4`<&Lo@u*e9ox2T+jcrmI<{?g+_7!jwr$(CJI0@H z_TJYu`}+@O&z$7oJ$>q~tXfrTt%)r@&9|Rxl4jX`N|t9ZYjP*Vi7P!eheYETZvt5j z-p1)1;k;ePj9(ZVMT}GWpAb~RoGR`xVafYr3d*7Ojl5NOgFuWrX3^+T2D3Hv#(ea$ z06YSV_#_3t-5}r%8Ke3G#AgD)8X z6~{%X$b|7d%Mve>+ArkdV;OVR0=%tKGayn@JhO)x!$^D$cum#vHQ0;BwPcA_2423? zB+c+faorD)+7hQL&`5$tAD$4$Fphnyr{x#tuZW57IRCc5VNsYUN(Wh`Hp*tLpzWN7 z0c=AUq$_ly=dCJgw}(+P8snDLF=c=@oj*t31KQgGAAE=*;L;%(Gyng>y;1kE6R&MV|$rof@(j=G0QT#0emG7J)W1 z*#WKdiZ$_ul(xhBuPdra`#okK%Mk!5|r9U zJZ|6Au%;0iVpW)J71f9*#4=|fS{E4ZP8b7m6R9pb+NKP*ZraIEcnI@@dqFbF@M#kR z?FJ>`cs>4#(v6b(6y^+$UrGFc@6t-V_4 z1pG2lgDv3rsTDMtW?aV2B#EeiS|QPC5BUAVm$=ysPa$9Coc6TLmlj2V=P%mA{8qco zix0y{I_-PEl=g~K+~jx5OJ4tmCXGgq%Ob!1A1S`Io{aw^n*6t@#eYD`#CT2lJ_eLw zd3*m5ime|HkrF_JwW07>7=(z($V56s;nzV6#_C*k&LZ7u@ICPC~A0r8nvp5-$+wh4<;B(C->a8+$7fZ zNM7?0VjSrkTkHe@(C7IobhVBI4W^iR&Aro{0z0Z_Q(sLGsD)KlZ59_ai`>-VSWl2hBq8nWZPBAdkX>&Wo5U3GzXwSEbrd2Dp5@K)&5PTA^Wy)rN=@0;(%9x- zYKKe}_rLByzF^gIBhaXlDMB0?4=H|=iz38GkF84ie>Tz>YOGwvUHU&)vdkK=+yXya zM}&rkDr{d=;ee(^%DNn1a{F|%+is=%e0-cj`x5e03(;PIArA4rwBeI%0>5}r@Z(FG zi%5k6hy|4N?GwC2OPY5e$sceLPR1*yLG73WFvFleHYJ^7=$*)vnXqLsPDaq}k(kI5 z+k~pM{kU{{oy?L*Z|{@%(Nkh#_K4AMG@vHpAkO(?ug$(=H);YM2(ovcr zFfNTS>9Ib&Pl`I7%e+rgN#((LaPFYFm?nOd$=7chJGiFEi8L9x;Pf$GYM7u<*FnP5 zx{HT0IJka-Y0daabdFx~jHxdRH6f>{3et0%sUX#icosUOFw!7R&OjAKdK4<%LXd22 zGg9KAu)60|Smk0h&D_l|LuR}h7CnSb;QbS>m8#GfCWxuHMCX@6{;88egb=kgv$1Ac zY%WvAYIQkjbd2Vi`+m=cGc~tj;Lb{AKEVaPK7;X<<~MmpGPf8X5HlgdW?j;jN^HW; zIXozYF zQ=tn*8HM-2MUO?LYmF(8rvJ<@)iZMy;A_HmKENm=5*Cr4Eu7=gjMASITh$~owE!Qu z?zoTc&YgMQj1IgoK&SdcK_xbS-NM(zt$+KE*U!PwQBUo2Rv|lwYyJJajy3Crt43UjXH$v6a$_puB&~a@K2N3se$v5|+-?r@?E~ zuMwrTW=$#6aMau_efpi_ut#DyW+KpfVt?9)J6V%Bo*u8*aI>Ys!29^|6wso0%Abf+ zOy<)>-!+4xY~wNZ@=1I zi&X1xv(fybnCofEt|dpWN<7`v;g#r?dN{qASvY+Rc1fuCDzq#52=j;BJNkb=ROw<&IuFY%WezPwVjpJPv6fHx#>|GVF`nk*l#}B6K~sfy7M^WF#Ff`7witygg(yj zGGxIGEPoi}#sCd}*Wn?K^gWF?djBOzusylpCp3*W{xDH@@}9cf4xQ=>)9_p;$5nkH zN`C-`Drj)WvMMbvv0azZS*DQ6d08bC$(330PMKO0Q>W0&vbM^SZGuvPuf}+72dCem zOi9RGQ>`hARexzy1oT>|yUpf9gXTmPv!$S z8!knDhan)u26}+$;7Pvw4kN{L z5ZWVIBB95|QtXEga7k+%kYw$pir{hjjZPU|Ezo*Ox8igVGDb=xP1jNqFwu16v}N!i z_e+Q3-^LG2=V*si48U~dJ;JE0Gb)4Fcwh8FWI*>4F&N;1K+_mUS==(P4|Y0`AWViK zsx3Bj7QZ89UZc*@Jk%6o=chf@A_be5VNLd7V!>hW2Csv^Rp^4l8F9oC8oH`+Y62y% zIjUD$#hcc)Bl@pVx;%qx&rN?hxe}q~7ePI-L~6EmhZIqFt|2$rk_d`7OYRBQVv+?J zY`$Qgu*eNx7;A@%}viaWgU6FSU)i$>(e0lk)-3gv}G z_E<(K9Z1-{qUimKoY0OXlKG6dx9hac&Pqyw^WGZBSRxKT39`IlSP-oBZkplhX30_? zw1Mj$2qWbM_Xz>IumQ#a+)i)}GE0Wnei);dS>+z_hhSa%aUnvf+}IJZh;_d;urkc~%J|Inm^obF4oTWq_>s`_ z7m5QTXC8cOZ(r!{yae!IPpbER-h1P+r>&*8h$e!ONV?*D>O#SvepNmH`uCU3e$Frm z@eP?q{}(Tt`5%BOQq@`wTNK5I3=$+MQAkQaT26aw49O~>$%0k_G%&2F5UP;qk8vGl z-<}D%4co$NHII1iTE5RU{K;*A$3p(E{{76!ICLz6(b1{R)MLKs%v4X)yN7Q4Utl*_ zBJ5N9varA{c*C0Z8#4&~&al;nsv3^kZkmnvXZA|MDAx~qfZ?V^1LuZ z8tQx8z)ZO68i*9=s3NTIZ%y&dEy>#uL>8Dn#3VOXsIJH%N$dpO zB-HsWYBZT4C3UXOX~CK84uU3WZbi;NtHQ))MpfZ=(j&Kt@vo4%*2NlUv{8Jd&>_heYyCxoS09JAVJ5jr`-4X-7wKFPxmN^3(hNFYZ71G| zj|$y-&QkLjBh?Vru9sCuoo}kfu7Zmg+$mkB9!Gatf{5WH4mU$O{`#s+8owymP1qr^ zJS}ZhNg$*vAT9q3K8a7{K+_|94~Ul=GGK%mCccsy8%xnG^=E#mDaaXf7^8t=hVCqD zC5LzxLE9gY+Dc)kf^J~Xh$-L!WNq*hK3|uREZr!{4=f2-)l6YZ<48mQp~#}z*tHc> ztaK7?p!h5$iQh`~eWj%H^ZWv)96iuuXRsBoG@hlR2kd6C+l&Y=`GkQ+w1Fg}GQSCx zk25QRZlLIX`+GJtjnNkxO{styen%ZqOI?4!oYOjek!*G|;Jma8va8I?#$F|oZ7R#M z2c-UZ5-dqCDJP98H-|!e0sn~og`I%JS_nefxmJ(>k(l=YE=zl*qLt4k_G@gbXV5n` zsZooG^w&JnnR2d)hEB$9-9l%@wcqMi@W+qL6yknS_gJbunUiZsGj+ zZ8~$6xZUw_jp}QTu{mR}Aq>w4w~y>qHhXBQKcUYTF9ylHZ?!8k#xW8nM$GUuRjuRRo+{A}IHic=j; z*1cl+pusA$3r$yVXNo+-@C>W%T2XTk1M)B3;{h~b@wHLM;C;;bBlfXD+$$5%2*Nmf zhu}uzmZFx&NZc*r_&$(+H(hSL%n z!P+H`yF^0eB#pAp6PPwS z1ZgCwffCbVkc)m4gpyr0En=~r8?3($x`aAn`v@}kKE@>G zfLkXTWbq9As8m;m(%xUVGO?L;j{K04+mCeMf{2Hyb@5G@4OVh-^cqB=ozXlWl-!kx z?6NwhDK=UQV!h&ZxTC5%e}=-u?F>2L@MA?~ciI?ei>kJl9t@76SyHh&Tj^s%#2Jwv zw%$;%R~zQFf}Ze3-9C9ngFhi`VExV}*35H&v&MzTB-^$fDy3cz@oOppda}Xfhk*Xm zt60yNBHhqBJmdIdZ!Z@XpI4s6r=a5?;gaVxD~kMzRmtQe0e64_#TLpUPo2NGv!JE5 zeSEX*!VEiK$oo%~2u$%_=#d|l7~ixVtNK7XcQoXT%L~xkTkDdnyrFpQ%Tj~VhO?E8 zXCgPUIL}zWlK0VxN$$@-F>xr5%@OJWwE2Ly>Yna~VLBDO4`asO-UbBbi=x}e7&&Tk z399uFv*0sv$kRP>^a!uNtAsETBs`cY`M;%%&b7h8@ODsp9Fc@VkioLqgc%vn=urKR zP7qL{ie`IBcg!q@=#tFpeoJP3&j|e@-bG}DG{g;D)cqXd-T5Iey+r|vnXIKh1kTjr zUMou%+$kA@?Xz#% zRfdX58iY}xdXab+F$y2USwu^pBufULe61v(1U&DPMH&A6@eeMN^&5Ws`Qm*$6EOV; zB+Orfy0DeLqob0s(?5DZrJBZf55V9>azmCfkN`5D4`L%>WLpu4vq6Ah4CZ1@!P=+M zE@40y7fI5RloM)p%9O)@oh$zSGlM@P$s8GPZn`!+^}z1T^-)C=QJYKb3dKCvIoF(d zPpkHMf352S%-}ao@~|%zLRT$`QBuuBNMj(GC!M65MA{Lh1wlP>zev@M(lVj~xonpi zz7cZ+wgt0ONwAfKFogB%9*(`l?(G~91$YGkfx;rpm{D4QM2TfAG)_N(B`L>vb>_6l zyuyrp?$BXTb&0j9??MtV7qzi~+GWuQNR_ut_LA7NPF9?*TU+0KA8o!^?EYoc{1qLc zDW#O^r(bH4#Yy=oCtx2c;P1F#o7FHIbd<_5FS{?0=gagmRu;0I26XX*9{$3!GG5u9 zC*iFsMlFPyOcpkX``C!G`a%o$%v5(cc>&!a3dI_zAQ{gmeRgtIOS~DtFEgyQ%;xWNeN)O82gL+7zhRlF~AX1g))Yejz);GL(N^DLO z%r)!1yKhqfamMy8QH7YHP~M~XKPM%^?jq&6T!(VHZq$Y_Ee7 zo|eu`TEyVtQ}eYY>*iDlPY7!)k#)Y(lX$LMpXJk?!6W7y)OKh1b9pWnTQEiFNp-CW z@!^eqR&>0cobf;NNwj56kK*b%xweOSlr-7LgE3%#aw%jLWQN2${eqI8|HL%?vf`L1 zW~>x$$lsN*m7BNmb0OOF%&Yy4kY6i)@;b`s8eHXrVY5_aYgKz6*1SD zJ}t*I82Ksjs;x!!%G}0W%g^ut(1rEhfNBXrBPNbV{0xwbReYDV{ zeTIolI)#hqI)Aj*kKwe#?MEK|w*Ja@WJAGy3b2EkM`;(?Zor{lFLS61 zyJQZg9$cdQ8i7sc_9n(TwK?sqNLIwGgO(dh8BROo^cO- zD7t)2n*T-XkKA0G9~BITn(S0?D>BUHLSYf5IsA>om0I4Ln2e4*4OiaP9HFw97Lrs9 z)o-84PxB2^Xp@GJu|SioBj`msDCGZ?9m>}UMLe3E^EcE;F01A4cLF7ij>OLLM$e}Y zVdY}h!6D>>&x|G7>K$H(c*7djJ;*A+7_cpkE)~MUCf5pnZNS9+?hshEP3xQ@oLn12^!#xyLWg@ z$l!`qGG}rnZnej^AW04}y3(h9N4Mh_Vdcq@K+ue^0xmZy6ry_v{db0<0gb!w^P8c7 zg!@lKa{qsU{tH)ZE3Jzme3CE#5k?66vYF2d2qPPU!;qM-2}wfmD@=Gd>0pu2=^~!zFfc25*ny{%TfDK8k&Hd&q zM^eR=T`){+SOZ++;Ql7Qrgwyu+&IUAD~-%uhA@jX1s!t={ap4-*2nZo4e@>R*37Kk zLpb9c1@&kAfVT}y+;2uew7o%m9b>Q!vs_u#RpZ{Zfh=JU|;apAp?@o|}GT}#S1ru4_5;BGNZg`z1pkQipm zyn*6qMT&jTccG|NzU_1(icR0WCP>SQi`r!#!9dNIo5FyuhAn~ija**4^E&WCgp7G; ztf9!}@>a@lMUvGV!Y!p8@59$q6CcPp`JCe35IQa{!1SoU^-TF(G>sPZ9aRdu7Ll3* zjUCJqER`h38>#X7kRX_*v4^~{hQ^fjO`U8{R@}|4Z4^7IX2r^kBQchQ2`3!Nkw^oW zscAXqtjJ6&eV)RQ2ZDf|%MLxPNsD%_Y9FLy@rF4r#}$_6CcWMBP!sHM$PWhW0@c`; z&#CBa9+%HCVnkIt;yU|f`-ECU417hmthPKz;kR)TA9AnJh6zTHXO{}=V%9XVJpM5f zc)~IpJVNXAB$mQ)SqgmgCWPUf4`Jsml68V}M7R<98=fzr?oA;Qi<7d-$5k;C&6aUA z#e1k1pUC?6i~XUxvsrSVq0*3Njh&(guv}CzR3{r;LT~2>meEY?#nC@QrV$a@XGv{# z%bxRw3U+%6Ago>29mUIRZ1T9+MI2puTp@nlx9`sP^t6){BVl83NE7>wBUhKho$eqh z+`Fi}uj(x;X9iv$8v4l9(U%pB5A@U@!?uM~-k>>vZl03V`hXiV+ehGKzn&&BsUbLv z3`h%Gdrx|M!mCImEUb|Gg?# z|E6g;|HCOw$=uq`%J?tY(SLQ=e>BxhrFE%(0R&!6!+^%hMvF?-**t%A2A!M1BqCLi zLW;SSCu{9BO8=Phn%>STjG^N}1bS)Gekfu6MwfB?mVNt07ccwE zP}P%`=%>7fCB2%mS1E>w#R4SLO*y4!I$ICr(Iuzw1CCI|PmP8?Y|J07+Ade65+qe! z$YF%;c?mb=csfXXE)8e#QAJ6=Y7=1iNnu{PahMNYty5RC8b7`y zlC+zZ372Bqtf=u^yotCd+TZverqi266v|+PzC@Et&a1YOhUYM(f8pC=Es==T^whk; zH^WE+%dDy!nE=9lyap# zZ0k+y$%FikDe&w|s1zNjBvMQ`_OO;Pjmb?R zHKK`(&3)OTzXkmFFKvJYpE>^x?vB3~=l|)K{_7hH+ge%umxa;4&|RkLKkXE(C~3z< zK~NBEe^6A`9Tw@04&d?n0CCVPtIU{GQyU-X_9u@9`nIJ zVPmstQYr`;8-`kRoD!RKm~wT4pzcDV|8Q8U=SSb$lqp@Yrd|=c157B=lgngvSZ_@l zR6txhbyk|LOh23P=#BLVrLcFP5d}c-tg0z$@sS+`^xY|JU&wW697|`Jv;lVR;U{w! z*pj$Cg+z4wa8aR9nk7F9Xq>7XLfXkl2DPsjS;a%*q30s=)z2~PU<38>eq)PfST&(y z8>?n2UWFs@Jfe}^Wks&6Q%Lc+4`d&aDcE{@vkPVGcD&V8Wu+cIyeuR)X_#|ynArP@ zvr+)LGqjK*9x~fj50#JXwd*b~Zce!iPL<_7+aQbBPcTm%4Wasj$OfxoBBN8_C%Ft_ z+)nj*Mt?Ofhmmu2@W|{^gjXk?A!OWmw~_&I%p|T9Di~;M>A{-O7&sLRmZk-q&U7fL z0S4B7Zn=5|^~uc)Nl?^cm3bSKvBR=rCLI*iYSe<(S`%PFe-ARuF<7HhTOziGaxQ!CrF9VMVwe6 zO}%$#*MfrWP@e3vpABL4oSEbn0;}HvE0vJ}q1vjb)vqLaiGP;fL7cV$UAFl*MxpQw zDu3TbVQdf?k9yQBhnCmuole+_(9e1!VqB;7xe4pzFsFbLmq-@a_=Yt?v--DU=Xk97 z`>VQgM@Dq>_dBk!cCQ7W;1fMa{@r&3O)jWn=li9^eA_Yn-(JeU z_T4I)e}$xeM>!V23epLoBG{swh)M$9F8MqC7>+_U_1z6B{*i-yqq_2DTSpC6Ehuvlo27?qGmwH848r#Wai6_I*ee;rO1 zg}TB`L@vK2)V#LgNjSL+ra$&0peY7biodPu_}j)R<0I`|1lmQO{v}ov<+iu!3@;Nk zOaQkjxmSM^jgFJ`Z^3cs-b~o>5@n8{-Wo-UHRDdBb<*&2qa^EG?)M*LCrs|cp97*5 zp=3=7`ah&MHkrCc0EB6DIN12G+l)ivu4+w@tnoAwe&d}Ygt5^JK`o;(EkR9@Ekoe1 zvPt*ZmBR_fS)U=zs|wKC$DB<;Cv*Q6Q?TiM@0OlMRzwp@ZKXD*>s?hQKPY^4`4h-3 zdTN}qQU&a%!Wu4l2y^2fpb1A{vE0pAX)%s?74I$CP~pvqiE`z9Iv46;F9*)$c=N2@Ly<2v@G&RLcc1tmU78a}T^q zgukG8foDzvm?c!P0PB1|N#4L76Dt60MqE!}tMo&xDua6%hIqiZsD(x^Tu~rLG8Q-^ zygq;0;qzjZ7Bf@(H|L(cr3Y~mT@03y)MU^b_A$0Ql zypMX*MvhnjB@WR?izq2#Tn>^tO|-zd*DmSfRUkZ}=Z*?wCy&kJJaJy9;Eiu6q{=cN zq4-j=B!AdQzx^AO0CNIh{``g!ci%dW|J$?q=Q6ocb<<&972z|=8wpY4#r!N-i12*? zVHHk6g5XC6m{eK=7&)L-9MUWKcv!wjEQSW%4aFt&Ly``Q0R1a~cd*VAVM^{L-l&;G z9@@InwE9}T>C>BwnyK3BN44%RUX6iA%G)etzlTq>^&1G=x3TBQJT>4W2RIu z!u$|TCNg_XEvY_3jlQrzm0+D;;}%9mBpb#j)jZxtbS+KRSY79g6r#h7ouHbwEE8b; zGNX2`jcw;k)=I?o%g!v*8z@U@Hx(`1Me(b@6$tz}$7|o+!K5$yx}lRVuz+>#EXn%y zMja*+k8Bnns5}Ul2da@kmZXo#2yWy?-9D87bN{W z8Xdb^$1eMLS|68XyHB2rnoF_wR!c3+HNSM0tu{+7%NMPg=!~`%QAd?QG!YgF1Qbez z;b0{FO;4yboyDKh@lrDtB~gE~B-;k%Vd&ct$%P%XVTq?lN;V!Aqq@4Lchyj7z#@wD zjWHAmCluMP5=yzPdA!Gv;%28STmN*Kd?4A#ADp!7wX4;Blo=1oiTYBTs?P)xo36Y# zADXKBq~PE}DGFrjuWU(c99gT{zz)lou6j~`vPe?mpSgBzgZ-Kmm%dpb<(%FP}QMbRxAw1{aA?+Wk-uUE@H zMwGgOvG{`3J49U5!%)~uU`V`$OTbYnGR>R?n@!#rOUdyla-m66OXvK2l;(q5A^7m z2ZT_8__4!Zfa9_};(NzECluPAqYz%G_;EZ!!A8M`&kzs=$RNo*qu!qRvs=#0QXs+(0w7 zhatPb603#x;Ta~`{d4FM6Da~A5|#G$M~Kjs8xTkp1@MqjXogX->Xa(;4$W{qOeCN# z#fjg-V?S6{r(;|YMwcZdTS#{AR;U$&Tc_hRD6|KMdq1!MLvDUE{ML_~0=vWQ7#?i4 zcup^%*NB7wH#>$p`1LniB>pjx^}mvqkH1-;|65b}=R)~=K9O7ho=?(KQa~Kd1s=$dsv_Hs)k5ObA@_PiOx85=ueFLUm|Rk{o569rJcPrx7Y%ceL&96~+nt*+f3 zCsLWY_pkZ8zE?-l=8ds5 zdBGchMwKco#b3FZ?w;Q^%t^p?toqPStZ~>SYp;w4+Gl&g=W3i+Oxr5uY_A06$k5#)6KQD+luO@*~O-jIehIZt^w_@+V@f7$>>U} zd31WwDI~3cJbMc6BH^Cbx=;J)MxBvz|LrgGa@E%%l?-zt~$`6@)JTWQepS*-g$VNre zdPY4O~ome*`?1x;;Fc^kgJ$^ zMx$%Q^nVMMJ;Sc)*B!Zem2Ykw3T|#VQ^r@mB%NNR_z`by7NB&woTL}CzwgYzU`3fe z;hNrGSRMrX&K}GDxgt2?_UvfkNXu7B5^K>jRn1Unbbp@XK~V`F^s?Uevc#%7T^+jL z^gg3SjVdI%Oc-Fzf4tCR7mmxpG`Twf6B}<+=a5ZMp+D%&GKVBQlGm$LEN{V!ochy` zw>UO<#R~H5^5zSkL|~-O1<14I$>SfDv`uBphi#>SuYGyev<*kowF?1hw0C6On@bp= z0=u6w!w{eW>zJ}^hYk(12t6Mb!5W;%+&}6z008!#zo8k5(r6c^8n;#oz$pLAnP~t{ z!=C64>-$_@m?*oKWH6bcZiIY9{^SBZMd#gbfZc=4p3_1aXwEZ25WV!Eg*RW>Qv!fT;C` zU0{PbK#+naLBphfF5?Xl3?-Q)%!ZKKq_NqrvsAVhg|}Z{?KMem8icH~Y`*7q=WM^$ zey45CJ#2923nJAa-tbIp9A-Rac}}%n^XC8hyq;_ZaN3RX2Uh+_4{=`h!;Xgg*rqWC26&3BJ)2rg;*W6XI zBmK-|>m4-hlNjDbwr>fQcH_MD0`~i*D8drz(NG^8(norz8MUD$^LpetE8<$ZBvWhZ zV2eSr8S(oHK`|FfhT!#;_$wD@{w$m6D{8KqDu z`GV&57l2{rOV(WD}M zsJEV`?A;q>NqC0`N~u7rEAbNU$%ZXfNe@ZusZ9EZ7lC|cH_&#)(QYZ>Wo{^$1NWL; zaX+K&7PCj5OT)5r#YNfW##^fXGPH}(Eqg|_L0~O=X7$P6Yj(?&ju>+j9=x_w8oYin z#F|D5D0>E`lUnKY<5I5JNeTloF|H_6-6z@(ZW>3~W|@$F#MzL>GUd z`^?*`eohbT-hXHk;8GDm*i5oW4(ksYd;T3bMQf>asg7ksHP~b`pj|${M&ywzrN18} zlkh{~QHp_z8)Fc3o=y3=l}nj$cowqZh=j+@)qagV(_?S}J$tF{z7HC9w+YDqPjLJF z7G)kOS6%RR$q-Sef0$U-a$Wvw9I@1vX(=7EXfdBwQVHJHI~AeCEn!X}2cW9MiygI< zw_tOl zQIUYc{cD%)5?;%w1BW4?I8<32GPc_7fUe1L;W#14juO@(WW*toJFoUt?=jg_eM_x+ zlzC*9cj5y#Bk|xp)3%H-T}1NAA*yoPP+t9gZJdI5%(l3Kbkg`$SzI@=&+k9(Ie1Uy zZj;{7^}%1Jfy!gV^DIkZ8P;lpagnNWW3iyTHEJc0ExUteR?n|LioH?4m+oq{@#}+u z+L1VZrw3!4EcGNmS9#zVg;(4Yj?xr}D-2OmO?do#e#U}86C-K&dQ-1B!ZNkPp>Yg7OLX3hj_N7R+>iNe?b(#t5DY6j4p-#u zVzhs5b+>vEqjv^udNG~IH;H3owAX}nTDI`})^|AeKk1?ug4!bsO$gz7!u_EM53m9R zwn9Xg4?JYKm^(NB)mr{5KQth>47a5wdR!(BoVUT!DSicI0rotPWVvHayxwjqMeG*-DOKF%6E#x!`RJTC07WV>&SY!()R|1 zYNvA9+M^1^6>Q*(h>p>Qy1c@<9GlE>F1_zs0M(Turd%$-l%g*SdPmMv${r)^=9l*_ z3-Nl9mT)g-oOJhV8M+OYo1%x6BIPM70oZw)s@kTmF`PnD` zR&2Z5o9=eP_Os+qSGrpYJqhY_X~4TvSdvTSWFO)+&LFl38`JHH>n(&5g#$PO*p~*J zK`X#UH(GV~wrBd)&DY;H56H>y4_x0E80`D3gzbNU8N|%3zHdwZwRT8U9=G`>Q+f9} zoUJy%gOY#>dC~;%5Q)`hj8HVL^jiafcoAc!L+c zJ_5V!8?;6(mD>~j9RbOH+c8_h@T8|v2eKw z17>+H!_lL#Lw$RBZg>zc+Ie6=PkU;#n?JG^Z$F}_Y5aM&>w#{UP+g29r;D~xbsl-d zT*}8{jy}3P$6}_*Z>!L@Ml8(6W26rRaNgHr7b4oE66}jx#2JsU5u4k8cksI`V#^Kh z&k_)5N#Tg2bu;nCs#PL0g&mH)g^_&m_gptknHA`Pm{$3$4e))s^+ez`e{*mIAJ(x(+#?6M3SZ&m}hze zzKN*&NnUf-`Q9Pk2g-(yev=z9=#kH4)Ti5pnL^vxh1EZNh@6ARi3_p>mG}i@VI|Au zL~(`?)xKB6AxM=m5xZ+7=?N8xZE_s2#+5@7B;oC?4+&7}`0O>(NZ%EnDZr& z8*z6U@5N=KAMilA5p{XJW204kU`9EWMU*kL$NZw3uQHy4;koy>5Ll4No$0?~4pY7v zh5th}{*&5IRF?hg#K}9o#eOdh>=iL5A$krZ17t78a;>by7lo1*Db(Y{df!GH-4vG- zZsuzN*bd@fH%@tM0`OIZji#nYlM`L3f2y~)e*u`~*a!?017j`0@(cw><@v!#ab=yj zjm4}!6rfu(qf|Une)U*qOD|uEh4;C}xYE_`)_FWN8J#WkLtrhJ<1q+% z6>1fB3tFQiLcxj!^XOS`C!0}S70IdItE4QKR+tjem*e?OWQ>VZB`+d9(K;;l+^y`$q@v*_b5HiK5=2qAHMkx?`{prr(A=Zi+CcRh*74dhu# zJ0qg-x=^SxuB=qID6D=l|5q6rgV0=`%_PQ!D)3o-W-D#h-=RZ?qDqnFyJ07|Un`N= z-A0L~d4tFj4ToO}j1!*yNd-_*t->V@g=X}mW35WX>jlER=07zK%sL{U&&-i!3)_ae z{JaS{gWNq#M}SMG86?>fWlFGHK%E&w%t#>cBJ$~2Q)VEU~%m2Fj{c~JWvHY)m&Hj97 zC+XO=rKPe(MQG*RALr0vg#xgUeqac~?*eFTgO%e|8acE4yVndpXT-HbV)N6V6#KXY zjgca~q^->38{fIZt|nKX&o6(teHof?Y77?Tj{JZv-6-_LdJMs}-1;V!01>gtaBG}1 z^MIDDQ(Octx`sh`kZXE(D7t=8+frIcvtbN06pe}rC8o)?jsgU~JltE+WtX9hua`AI&*ks#lC#p#nO&13hrRV}M)TJ^7>`)Fe(<^?bznAZxianAxPJ&i@cz*#llRV(2>ht8AIW%pSjEO0f zl|4ky>`q=Xk#wf=n(IQ9#i_!h{S3}qB<|WJZe{k6Rg{j)y#eT?K$Eo?@w$wLNYGH8 zO;C-{FN^kVs1`X{vJ7HsMo(xXYg_|kOzrH7^X2IG;GYpF6Goh}_Gs>t4e={{A(^OQ zA;{=O`%bI9#itvQFuxRYS{WN8@)#VtAJeNWZ4>)c>+FI~Pb?2U>}LPVVxJh>kifA{bEhw z3Ympe|IlS{0HX#^p#wZJr*qk~OBcFvUNf!BAOd0j0O;-JaRu7Fp|=AJ*W$i%@k-Jn zz|xhMjFO-^W~tzh>^`5%-(~(qZwxrzA`ZdV9t{w?iZGxU&9mMM=%=(YX4C!x5@i^X zB}CIcOhaymXSneSyHxiAksnld2(cezm;yH~eSCnK#-~5w^i+o*n*u`}d!iI{c+4_=_?7Z*l_bzs~-A zrfh*!$UrD$Uzvh{0M~tC39YdpLK#yy80lGu5*~t}h`E6@^6GG;*5p69KjIi*_198; zE@gfx70>f(u<3C}@F4S?TsgH*^R+iOyS^TG^M3*{MCx+QhPQ<9(Lku9?20P()P0{3 zdL7x5XA#iO8Hx^2EpgRGRlCvm<70cVQ4{&e(#0Xy233nHuA|*3_pk$X8Q*9Q|CUPC zr^#fOn$6QkVI`H?jLTKZH<#K9E0QVMIxR=r65|`g_JZ$+5o)qZ z4|g&8L$C#n2*7e~pW@2rbSul&{>)$YkY*mRVDn@J~5V z&eqDM8<}jFGi#vUv0QUKp-5AVq1|@NsJ-7gaA?#j(P*Gv*vE;jj;q|)C$<&|NtPQ| z;ZT=gai}g&wk}$+N%~_aW$>!S!e1sL+~D?mZ0HD zO$KbydhEy9=KTq0C6InxEV3MI-1JP#U0y@Qi4SrkPIoWUvE+hNRxINWaKn|;wN-Un zv&KMWswP&>deL_36sM)#RfG}47XcHd0UaiL9% zhb|W%A7Uk5j!(XisRZbW1cwh3Spt}mLNB!M3amG&M-RO^Opj1+R%m5?xqB1jDT zJzjs|$C0D135vO&#>F_ZmurY>KL*;_QLTll(JC=dPNru%0w2)g8o_g{>RHh`lpTAJ zzLc2x$J^B+HS@4=u~3S#Hhxn_*P!Kct(Ozdxa(kGyA<|$IL*b7i^cvT3??^UxmlqB zIm5p~4~rxy7@cOxq`JWkGbBQ$&57F_-FEE?9UQpyaItYB4tFq9i#tAyt{~Z&yhF3} z!GI_$mrG#6$*er*gGkPHM^*E1x=KqW@7yt=#Er9j?S9Dy^9c>InVV|czBSIZ%VKY9gO+i=A7CDx+9*e{>cs9Z^*?{_GE(b_nKH@%c@4 zM~}ic*d`E9ODO#5Gh!rf({Q$<%RQ6t8_*~G9#a}-o=)5m_d?k2h(*l}wyVzUNVxuA zFfp(!`3O1PJXX=vJWD&AY4EAXvMGR=w{pqkBEyBJ4VU1VLyDet8?-fZ%RSP;jdD?VBRV-fU46 zD1u~n1>G?ANxxgpe?G7PO~ZU-ah*JD2xlMTiSXRBCISLo<{zdFS#j+U1}9`Qn_dJ$ z>&CSyCWkE)TE{IMGoJyxqvr#4+2XWFUUye;$vGx9JcDRwJY!a6=5gV2^grH{hiVPP z3nd@NN>_K6?ZuoC`Dd6VF1%_L{C26%GOynZN9p7s%ideKgLv;RJ~7uy$b}Byv(Z5D zUi5)=`OfT(6-hki##^}*j9A4_0K6mjm5+N=Xb-@f6Wc*-th=Xq3>XTNEub3(c@Vz+ zhorj9z{?(_uZJyAp@ZPpm#pFFjgQgST_{xtux%eULh`z_$mJUCv+dfX8k{aJSQg zoA(fbDQ{STZHAxkZ@^#f__JOJhd%YaI{kI855~1$bM{4FPV+gvsPWHkt-W4b07&9z|(c3d*w_*B5J57@#>x0bq9a9+cJ(3QbL-B-c6{~5<>>3GNzm5Di5qT`;eg_D z-kapOIUNavlvo^Lg@QGog!A8n1ZW=EaUu&U#ij}pvy^wm*lWS~E!668dmDdqij{=5 z^~K6fpWI~0RnWDVhKNYC=K=TTUiPY`Y%k_e)$&Sd(Pe;TqJZwEWy1M)tJ!|E0;nx6 zFV_a;pgfTJ0joNLiyjy-N(89G!p(}EI@2=+`sex*_Mxqk4I@a9O8v5e0TD&Yubmn`#q0uO`==-9gH5{oeU1J{Y(A2 zi3~j`8a$FnNeYo8UaQQ481QL@w!6m6je`XPj!YPs5HYeH6S)OQMcOdqHw%JI`f4lc zESq8U$23Y&Ra$^PzT>y)T9IEK@_rIX`TRgUqT>embMOkbNHH{?iz1D6r&F_fP2whTo9j$snZYm+ipJ=al0%u$q`NEL2| z@7Gs2;dtCcJ!2Rlw)A@=b%J|L`mmpXug~S_i=6|6Pm!S5E3>6;-^(WoIwq1 z|F*#f5;-F4x1G3)^b7iDNF~jVbDo3ht5>C*FCyjb)TLIbvj9`bUlETv=6qP1UKylf z0*y%)`t4`h6=ShV?Upjl$Yupp+CxIa_bGpat}q$Tm9rWNY{#W@EtWIp`S+__+0}3~ zP7r5A(KqNDAgwa{Q!}2j1qHMX`<+HcU&(uw4afVp3Mc#cEvNDzXCp@J(WlC0)VnK8 z52+>0g$891Sq;Z&U);5V8E5ebd-CZz*@EQS zfxQ|1f*W?3X+wlV%$f}W%}-gV`OV3V6d6E7xk!Z}<~^NtBvZHUYDTw(k2^6VYH#2C z!Ct7sDhwx7tz_5n*B${!LWcw>Nir$GpUDSs%?PPhzPxTb1$OprAtGZnl?xUp;8k(D zM#y89`9aF`*&Il&X%|wP1q+AhnaU=G9Ep{W^2T3@S3dz80NDiL@HD+KGqLb;ZR@l5 z#jCuU&qO*kh7Ivj+E#rkvAw>hMug)9CnB))2r5!7RrQS;+g+V{K-MyRv9?Z@oNOwr3@CdvV7XcrSPNZQ8cJjf6kQ|}ssU!*7 zLuWlZ7B_Ixao3}}giDGwVoYqQUY4c1|fx zRP_jLJc@g>OrrkmhO0l*P2`(xWV#u=W9{dhiTG)^%odaQVR%xWFb6_fb@7WC@0J$P zCGxu|2A)Z06q>#zaNk$OPG*8V!z=3&x-E7nGrxRE?kZiHzkU zIvdmQ>X4v{6DA{|GQM$))hKXDy1<|nl9mybtuRQ#Ds#PQc0k6aKd&9C60GYF6aZG+ z>ekg3=q<1DyNa^c>I%qOtz+6v$QMY5=~)vy$}tj?*@Q}O7)9&=D8Jpl6-p+@6&|Zp zeu{2#*_l!3CKbvxF^`ei3vjS4!+T>2Z|b^Ni5avHWITiKU0i;Wuzdjm*$+BqY#J~7W>lloUt6I}v?OR5F;w_)G= zjtVlKPdupyeAl$$HJdO8w?ymmf*snf%{hrwwl?9L-|uv!?Jcv2t<@z@@P#;&d|u8o z>`>w7nRWebTXGEX7bN*@K3lU9(WOj{&OiDd(!k04mS?b%NiQu2d2Wc=_G(xVg}})W z@S;Dfc+&2#SJ)9q6EitN2+*L&xy*NY?o6c?50Nl|ez!3;3113Gkyln~d(g7na(;C*?e z%f(YYst2sKTcszHgp?Oyj3SQmhG81=qF}#{P7G*oDLqKJNskcwSEOZcNRXp?tcp_T z&}xXUn066e7f>Dzav{6@-s`YZnA({KiL(CU3`x7jsq{sw$Ar()?}EM*(_%@vs!%iR zVy2ON5b1@9yxp833t{|~ z*7Ea04&N;%J<87wHzrNXTSOTbPN$t>9E7T1s*Mq+M5=6KPd_qfrd3JX!->Q3y&*`T zYrv?F`WhvB!XcGX>N`XkRg<`EI~lR_qMFtXtRV;s($ATTnF9!GKOQvL5G)_Dyj%%J#r5=Xz6igLj)IGgBG)7F z=%01%6BQ4aE&BU=)iyczD#sqx-0bqVq9wxdt?@5$B=kDCsbb<^r*h&s@BZL(y<-ED zKHELhm14J92d@ zJl8XPW&weM_IB(b^=Xd8K|g+97;xv z7=I2Fx|@w#tztpTqcLEp2)8oS@G{#P(-l%Rn27gRg>KGlBHvR^O-i-akfrS)%dMf; zJK5H=NTbWruyL`M;3pQ^=U8@jMua)_8i^P41XE1c14XEX;q+0|f_Xnwl~t`hYRBcJs=7CtQEJ;JsNNG*!6(jxr$#rKnV!CQ6At z@cmhL`mLFt`lzVdGn%A@czAurF8w$l5od}#S5l!-MPTLQZHN&`?5F?q+^SfQBfBm; zKiymr)e{u4&0IAu9j2I(7VB|d#H}H~{>>{A=WNjASvDV80nTr2Z4?J$QOxeNZ4F6E z^LLN~L;6fUDuyN9oeVg1b|X;Fn`3 zlvD^m09`Bk8IHdIQK*OliZU`UfK6_5vjAQPY}oFl9OSjnpzV*D zn`y6d!tMO#ja?oM{81m7n2dk|SNhdbMf-*N^9*%Sd&FrKNaV@VZagQBvC3~@d=QVc zFKeHEASG@=!N6#CJS$zh?;`nuS4D-$C1m5rJTYa8z}- z4LAiLu4sbW<_=`JIoTJ9=v6W5&#j{wNj%>V*EAj10|&?Em6r|>&upMhZfvt%fX`f* zndUX0p`3tq8mJkG?Qbb0R}eg9v{`YNq_}iDlRqa6!5Ev!+{2X!3AVqaYHtV)5V8X}Aa^Sou<=<)anhsfdlXvYxJ0QCR z4E;>d`c+30n1eUcEy;FYb?cA4HUEib zqp25%1fZLJH1_jKqkh_!12)B3SXy6LqN-*gC#W3=5KMfGA~*r%hGpUOSboCjwQ}HM zZztK{v~sfAImo2vk~@cAXi`|g_IK-KgXnmlzz3oLGG-Qm?KttXZ(Gh8CY9ks{Q&SH zSJp9&R|n@M0=5N9<^;EMBard$NhV)|v`(Tt9Xy#*LVXt(3fzpO=8aP;qRR)wW6ni@ z#z9KMSmq|q&lWqEa8qRLQ{R?Z)xgQ8lZ|Wq6Bnf@5w5xD>;z&W3Hux5?UO#+K>FNH z&358VE&EN)o0qzQH>x*}L2U!o6=%bB0-qfYRz<1~q%A}UfE^ts1KgszD!AM$w#;#5Mo8wl2 z3H{Y1z1B!~HpIOR^N7eU1+DI_M4M?&V_AFAY*||Qm9~lPXII2b)Gm!p?VrllbH?pta)+4y zMYwD~FrF+@2P>J;Az2`B?(772K)10#5ErJ39%}_#_=jDU7Lev%0G{Al*|Bq=yeFi$ zcOLNpV9y5qZ{LGMQf0az-Z*r~wSefcfhYwAq_qky2xt6T}SZ0 zX);x|=2RPpSN6-9Gc!t8)>h9-ZX) z`!#{TB}C+d9^VmJNX6PV*!B>0vpx+$_t0WV>EAH{CDv*Tv^&>=%f@{+|o=oDMB zV#ph9S?ie%pL@+TSmRq^k0~grXTC{is#iEx#zB0wjmY&@59{VsnkUkMJ3nc8Nv6iF zBT4wMmU0t+7WWTZK%!S!A@Vj@73piF~~PcV$}GErtHKLfeB%}kzb1^%5oc~0)-<|7P+wYTCWz{~4CkWQ1B%VWJl``uX~baz ze}I}2Q2QPLj{ccjzpEdG)MMT|M@fnge^h+MeVygl#9kVQ zLx{Rzd4^}CLr;-XQr0NQ-?9n|Gs)Km?(Yr9^)84*MQScsCN5|t#HAI8V93!)fwN4q zvP=e)Q_{>ZulojdE0;$EWE7cMF&-@d+_|+A-I6M!D}mz$Ssj%72J30ES=7mkbZq6r z=_X2`kny4Gf+%tWB<}HZ;iVTWaWFpFbCHSbu}leP`}0{WQMf1dw@^}O7u!Ziq>k`{ z%S|=#2clFfBRm_w#JVo*if%!A9VolT$PU!=;{=B@-9g^E${=XBgq%S^8${c`C@3$L zuW57mB0n|b)JT%`&??u2muiUr{ghE4@Gj>DT<7>)<>#`iJ-dkPmGKUG4a4uXyo~^s zJOrUmG#An2JAFWU(9FombIRL z8DmeK9C4bz@r7#wd0H^s6;UO`yBF-1(X!~RSvJFW(`d;bt1mIlC!na8B@Nnoh8s?_ z4H3BRdQdi!@j?wXbD2Dir99+|u$5WAe(q+oAt?T9(987aaWRor+1kLS5+#XR)9ai- zYso?5_r#o3$vl)EEf3v77zv>T!~u2KUqJOl2(_FtBsPvjZfwG(sGK%e!QI} z_|dc!tPArz(MvN!MU67zassR0p6UQ@8axLU;W=uWQW9o9t7+TvQp;-~3zR?`4eD7m z>tll`)hcuGNtRyOK^|*fGXA~kF}=KS3Oe-)WnoCvc~uqd^5XBT;;R?|e}SI+bpo7| zv#B_moB9;5%sJi2sLSlx65TZ_v)EN#m1+Ot27B5c!s0O&X16FHwj?$HYA|_P5Lzb* zlrBM`uGuq|vND#|=Ll=UmN&B4<~q|l&c3r+Wolnn7BT1eyUynNvL81gX*y(2dg9x4 zOW1b@j(J=yD);=+`c>ZBs+5``DNCycLDQ0y7rGvGy7b|GGWzBmCZeVh-s6NN;q-EV zNe-TQP-s|u(aB5q{Z5YA=a*d2TGjt3F}$tRE?=xW6xxcyCS{$Fk%)5O6=#Uyt85jR zBmqaW8EMb_I9Y2xiX^!X(dPU+WerrW$jZ;&iivurt*6>4e&p|tmQ}eG0x5;JzfrbO z#PP0(d0}Q#3a7XfHg1*vWVdJ{GO1Z{ZpMlSB-Edf#`{~K!L|6XMp`P6F^Cd1Dr;*0 z4x>M|3v{h|I;qH11S$9D#M_FQ(Y{w*7jzpc=jE!uafFOkfaX-V>1HhK>| zHi%m-$!O`6w4C*QviN?p6dmd>eGn%L@BD^!2$8gxA3Qla_#&i|22&Z&9J+WP4%lIb z(4hedYJ!(&_>`;E-i1Ig|1t;XK|d76$!@RF+`UwA{~Owfc=%3Ix5MBq60R5?laMD@ zpnbSPB)NbXA|XOO!UJ_T84-C!^=WT-4wd2Pi4ox=;`Mj1wnw}yM%;T?rYG@}OfQ7> zdv|UGL&*FY2h+biO7Ma|9l&j-FcJw6Jco}X`LsoerMK7mp)}v<}0(|X)TkwBnZ_<-IPn1o?Ms@qgOG& zo+8u^Dbe91u}^ahz?KA%EB1mJ8y84T9~vLD4zoN!7Bge#2eO%Rc!g3Qc>z6_1q_lQ zy@Yj=-BV%bGNG@)@hbY0K{g9Coyo{Y`=9nPJIT4D*VhMq95}~JAOFvUDtv`e3}b`f z(Vc3UQ0<~|EYYfUbLhXk3xBemZ`frCr}B+1)Gu6K(pc)ow=7*u5u6}5%0vE&3?`s@ zty+{ljOW-jO_*1o*0oJ+L_@}Q{T36*ja@F|uR>$W8~!Xvq?5Dc7KeKwkbkG2n8))K zUNc1b)eSS=P%U=0E{1?IeXDR9w%8+T>M~+RVYDuI22U4nns}dsv%GT{#umk8-(}e~ z@_IL#_RZn`Wufp^WgKWI2WcRiMgZ~+r}-$S3Bgii%6E)`4Hs#K8-7F{ek)9Z<254&8qS<4NP^Ab}wK%KB`z2BtzE>XQqZcMj z0F5MczalGG`Qe(4s!zvV0F&rMJV)O4Ro$M>+j=qzQHK~kN1%E(;XqgfDRby?n_=o+ zn-`Luy37r6=(#CzRdJ5adtqkm0%EUtFUp=5Ny=-J-qDI*X)S2|7TUz$#mD{PaLZm> z8p_=`^V2_H+D{(`(|}NX#Dlj)s|6&H^q<=L&;0nrKp4A>R|$zHH*ZN4qfx<;3^EZV(Bs_f^n?sG@>V9){OoI4l&gQ~H9k z=S59Z-B79n6{L+>v5H!S{j&I?NW`C2DN8%Y$hTs)J|?d$licY<-x9;=pfEJGSLS+$ zt3w4F)REdL(b%rCr-Ek-(@O0=ZP}>pbiMI081)BtgC=1QzNzt>2O8aG#sR0{!gz!R zgNC8$!m3WKQTrq?Xd47*-nUrXyZkdAhog6<$}+W>6vNY`kdmx<=&}c@3qIxG7VX(* zH2SXbf$!$s*{P}pp3!v!=}OoUxHqM#4OVJ_-I0m&ZPM0l=nr^Z@J@43eVzB-e!3;_ z{EYD7kJO!9()6`jcC~r-h2sVFC1BEt{4M^>&3J6@fv*(i@e#Drwe{ z`p(tOqx-y3|9ZJNJq_S!I0?>6>e1pm3YF0_`Ku+c#*YG@M~W&1@vg~_OJGZxp6VdO z&s|_k^`_QO)}v%dh~qb^0`ho=nj?N00^(7NA1J6inDL?*23$0~QY4Lexd#0yMy*~7 z7hzCX4I&E*nYlyIQ|DUOgrO8uK7TshK+6?KF<#Y;9B=3GC6iSDsVO;h!!&&hcqIh- z6KuRJ@&5fr*4&X{z(Rz28(R9Tr69NIkJQ7A7-Mb7kqR$DLxp+Bzadid2v3xW$a0+2 z1}_z`f3!!dHb)2rHMF400S~dXPJK6+8HOyZQxImdNfYBkcoKarir8gysKt-Eix^BRzAR>-KB}djQMYl!&d~<4waNTsAySLU{DzbZ)9v* zWRPB@ggN*G0QGtwIF0dLLub(Vfj)y~vx@S~HV~|j)`1{)r>UfeWxdI=O|HGH#t_@& z;ZK~wVF3rH6>a)b+A8&xw@rN*DmOxSB@v)#0!68Tazf#woMGgY)$(%WD~ZCqF=tC2 zOk+C~CyoWp{JV5umLnCZZa$z4*(KBKT1b*w0T~vg?+0XdU}-AlbA%_>sRl98isAb{ zbmP3-;~y%j4dT8)4}l`J+$SJ%&F-1sUQ;_3FNaZyz5^&U#6e*JV(23l_brWMo0AW< z5A(-KzXkK`#Ip*>&}H}u#XY6Pm@fZ98WJx?!PZ3K@Ba0xa~kCqERQC(1+_lws`pFW z-NVrk^NLi-m|oGR3sIC=>CW8Oo_-tuyYYCXxV;x$_1DFvdiZ*^&tw>${NCNmZ#_`- zrs&2~J$m{26*bF7ZgKbd14ve*C#fd^r>HyY1Cjc&v%J%VYbq`pPbV+GiBdVkc^)1+gXGm)O=&W z^UdFYAObw44?Vym5R>u{*FzKyZyzrU!7%>dnpiic(>rH$FM4KHn?MB{=q4_irXe04 ze(;`+b5?lHzdOV(c8_8>8)9yXCW_cy%ix*x7Go>VlWRehTy{O&r6CebMY4Mc z6V%2gKWHi0wv#v?K`>|{+zT_QlOMdRE52EkHSlL0X@uN`o3X>+#oW`T*bQW^eLjj% z!<^PQ{nozAPBrUROn(1ULAJg&0a9mSz-M8;gEnzbKpq(%t-#faY>?30zCg)iHg8DO z+-djMXm?cY1@?Z=_y1J2x>_<=P5)5P{*SK>+5fsGQ_N?$Heqmlq>VvGPs!5J!trpx&sL(z6@p>I?z06V^nSNV`zlfXD;W%#EE z(=G1z)&2iMVch`9dMw<|3I;w81JX_&;~e_t7nf3Bi2H<2TtR-we+g#CrE?6)9Au@ZNJq3(L=`Z| zUMCrLe*(&25Gk|SDjOg%t1As??!3krd38XfW|k3CVV>VP#}a3`l5wx{a#f7U`@{QbF$|I~L^)7{R)dUrRZhYjJV_>3X0{AnN0rA?dB^p;fzpayhCZ>AeG6 zLPHP@1b(prd#)Trl{xWRz|s`4S% zO{vSNy#|{M9I$!iUKv$B>d3Qj0mcl@H+!Vz?qTOQD9v@4hVnWdBezSu{F!7LS%eNh zi|^R&)9>MqpgwRnXfAj*OwVsjfs0&UB1%zFBmYrs+qCC+NPpsC{YUNmpTxw!g(1oo zit};^JjtpA0e3OMes|PzVRAaZ`B5kdGYxrVXR+3S+E>QZ+4|IWIryiw5jGkO{k4%1=l1K-r(N-^kt=>3oxAQC9bnnU zC8C*ORctL+ff*lXz36M6(rG|Wtx+~ zZc0N5h34H6GTznsLGi&@#d!oOR!bZ9Iz8@J^xPN&4boE}ec|U|@DUO($LF$SYroYc z>f9hTtR!C=4TA>VJC~-*46(e_Q6vc`)-%xNF#Ah3>2qY67caGRUlXHp&(cR1W1Z!i zoAoe(LSvyJF5lotLM5?O>;(EL!_pzD-be@nSwJlbuYd{auBIAcbYRufwC%OP@EEsX zq$zAfbDatf7tthZ7nUk8F>@)LfeIQ6HI%-e?dGeKvND%j7S!tCRpm&pTU<(|H*_`<$3aDyg)%2`H_u_X}QSB`@oG`I+yLQ{JFe z3YZ>*jbVikCG3g-a&sL!1})F(%Yf@D#;1tXm7Om8Am9c@8cpW-b@^c7enOyq282C7 zDEX4MEg^uh3o~i6n3tRJV-FPL;szkWZ~+QBJOHnpP*7t2&OZZL^ea(7Dn+_Uys(L@ z;K7dhWiceZLF7A?5p&}h>!eBQ5L~r+0;!-wgH$n!UNM5q{p;ObyjO=}A^6M3nIi`l zv;nH0B!joah4-FakYftL4o+-}9?XBs5ksxDa@*CM=|$@QQKd}1WKcT4bofdI zXHb=&8AU41Thh-Tm*bo%_RF11lE69qM2^L|k57qdZGv;#I1FX}22~sT%V?a!5#pBS z)uBWr?tbUj%d2FhsT6|`!*wb5>@Rjsjs}?OS?MQ~F-SDww_lA;RJj=;zius`B4&if z028$Km`BsOh#`QH5umFBX(H-c&h}2AGdtdAb!Y7m{W6b>Ns)C3DW4_?iZLYztJ*gx z+d5{X>u5|#(Q8rYIK)(nYBf@q=mGfx026h`&KejqcYeYRIml%`c6V`QiS;}3uoB8J zbFSfcNJX)%XTt3U|Ku>I4!z~3Q#5Xe(Mm`97=PyOV#z&|^T0Zd!vJM-Q}~gP1D>Ob z-u80j+ zU@#_jzTbNRxBRb<|GocQs4yl*m6Ibkk;MK(gnaV7#2dJ0#kvlU@$6E7_AwKp}y2+ zD!^)^!Z=D(2rb{u`Q?%B!fkLTeQA50_Rh!|J*u=4@9PU2v>G(*pW{>W7Fr2gMR`x$vE< z*?1`tIZ$tPN{I*OIY*^@nQxLE-EwGms8K1Coj}=mjnY|N8Qk@2%IKg!f{semn0ZX` z(3LZ0tP@3F*2Q6EKn0GX05j_ADp~)l92R&T=5Sk_k=jvMOqWi?-*9&SSE*-E|J)Xx zsQ9my*IeLsv6*ai8j*A`J`TYW84iQFcUiq?kT`mB6N5WIMHB~o&=G^AyA2Q~{BRmM zDT3%hb~=3y6KRwZqyaLBYQwhyVvq@d>;HMIkkXQ1#6RLW)&GB);omh`as5X+jKH(5 zm4U&Qiw@MuM*%Vdx);ZmP)12fpe&&os^qp~l}KOvVKbp?>{el(_dT3H&T+=5{NXve~bm6IL zv!;S7IAeVpw+cGQ@}|VNlP(?Dt??%EGxXX+tXp~D+OW9iJ9B~|&Ci0tw0FmY@6UH2 z@v9*NhneakTF>$O&?{l%^4h+9^IArxP4(1m^?f-Bl{vuk#to@)RnAwliIGwj0-J>i z+WQv9{+rM3ORomViw{aIb&FPYjZ6n-q|LOy8pwUFq9wyrFb1^2w z&uNlZ6gxBao*QPQ+h9yCe%h$uHSp_{iZh1=*?#wq;RFwkN7l4Jto;z)KgyNN$!k4B zMf$!}+D3W!Uhr(oH{|bEsXud;hU-yIK%GBS8H^?yk1O;v<{!53x*NaU#fIFp)#qeb z9+y`OQ<2H!Tyy0Psf027l6+>weV*a0!np>Dm6X_IeFqccc1^K4;kjv?PIEQp(H}`~ zoY)MnVrf-VZ1-Ex8xJe8e(`B1INjME0&>BG~} zsWyo$RP=5~Eo7l7n?D(;{Lw$s$*e7anaNK&Is1vd|6L^f|Efs;0vTp1jLP)WBX|bQ z@rA5BKh6p6&eUuGJn{iTqM((QxUjL5${VQ4Xbhy%?F9_@!tdlGAo~Zf=h6qK-rlD# zdVRZk0@nn?qW7!W)|}{t=6Vn(PMpE?FIJ)nmgaK#=`+SiXg$U^(KmPCA~PbN#0=9| z8+mMB{E@LyoMo^@AD$P~%c=2&R&8THd$UhdObulw1$xrQWdw57dRgf)odC=L6cd0(p!Y#2Vx1dId6a}Ca47kEQoSIB5F)^q)VP<>^ zJwez!L}`}k@E~T^u0jo~$2jvdtF&}_@q(KXr07tyqHP8!b(9PRpqWo-suZ>W;0zhE z<7tDtGkBfYkdvgv$fI&bq&Sf@LPv2-yL!|^`s5i?#~-O4zw;@)){gGlw&j*sNUYve zvn?q>r^R*mjc9N(A%m=dM_=`*F+)jH{ZYdV8M-nu;3mQMq2)QDvRvss$b_tco~fP{ z8%ZpLlcqwNuW1%uQ$N!Bb_LWH6U7*k6(W>53K2zXE<~0&CjRzg-z8lv8}aN%rv{ao z4!u)8FPQ1$Cc`Fjkh|?VaTM3IGvSffLn^CIio;bJ1F4;a$2X-aQ{11Wq|F-Fo5he6 zCu@sg4mNnytFgOAVb=iVgUC3rzf6TlzmQH#Fp>sGCFWU|agbD@DM^r&oVzKqE_TQO zYBwn1y&wK6;#F8+PGU4?t)L*?ZD>hMSE;*8N@HV(ao+}#cR3TwPKNCl3@lzXZ@T(u^?>1kgZK{|>;ZfS}BhCVJ2js-1 zABT^jJK& z$&^}i-5E9Nw7l1_A6X~66i%eK>Dp5-gTS6+}=_t!!n6TTelU2l5jDKBX!9f05H zh&D^r_@M>+mX4*{foXAXM@fX9Mkt+qK)UuaoRD} ze51{q=aLhMkLTdjk|x(24*l7klhrRj#CV7Y>$i{O~Iy8a#?@jk&LFa_bC!GtapH?;WFdl)6A>Q+!h>$H)YXKVU-IH1`$tcJGZzqRAmWLw&?V?K1Xg01NZ<* zHeGcge{Yo+eSrFGuH8>a*Q;Ny@%;XWzjJi%AhqaE7rphvE8zSOI%!ekpL>|OA-}!7 zzT5xNTZ{jg1N9`z7&#(c~?{Zvh^ zC7p_uq}tYmf0^Ejg4)iHH|v24$$kh|5xG028`Id#A=L2BQH8Bme^b>lMVd5%z*Lh~ zwB{Byn*|ZfcmIs@Tn)@MbN|wSM$V{ukla*O{y-*ZKayhOV4SUq>nO2ggdy70P2(l)Ld zY>>ufImC4L7|k(RmRQxK+(3PJmZ2IdrERKiKPAsmE7!Iedy3dmD6w7jkaSt2DTTPI z1T+X&T1P3?5ng`}rMhM~*+-7HM$AN|Po4|q-wqF#I8{&5eBt(^gh5b2TohbEMk!I8 zV-~F$J4iQNbh%uv;)I5c%+nQMp2H7^r>SPl?KhIhwM`|wf*7N!K<6;vG zxC*LT65j`?O%~OOLz?cuprSg9@83&HYf(;jj4)rwmWpXs9U7=hIE@KvZk>#M-X2gJ zU3GCtE`i@rN@8l}8T#LpNV?Jw7)5rAkpPqB7?lhZylLci4>`$468M+ED}FU~RwRd^i96aVphfUMV2< zJc!@~-d%7A$YS1IOSmofo5hCv4HJL&>_0rJxiz>=H}N*F4~@i-d1JL>7CuZ*`X>^ia&p=N+*1;C>Qc%E=1TH6#+G zdg6hTkis8``K!$bf958h-dkR{8}&=3Z8>y~84NY>QyS{s4nQ!0DxY30qbgWA6uedv z5G>>n5h!FHe+7azO7!a={S9h*UlH3+XUhN6nKJzczo&%0v%bpDpv2t9`u`r3$dAha zF`)1qvd|;Qd$im6hen^2XhLEyfcRSzSZXEa!m$WSu3;kcjwgmf^Y&EVNJcd0L%WEf zcOGYDxc^=A^62aYW*?4<=3e5ia9`0QZ~S?YN+<00rZ*yYd{Coba90RzcjQDe=@DgM zh|Gd><312+`%0!JMmFcMWKgnsLB@wNEL4GMtWxN6G_bC$fzgBbo0|m|yChEyurTFvpxStHbZK6cZ zPP-QtmEk}MMnILmAP=s8k2Nn3FUU_G)DUKrV!g2+Gw8|p74|;SoV`esF-c(CSu)VT zI*^dzxY91D$Zh>F{IF8_iY~nzPF>@OXWUUmY8&nQmm!f>GjLGQ@PNjym!3PVzlx*w z)ij3*g6$fJKZA{%rpV~M1RR@L>tSoqv@YicRODf%6`m0#K&po?2CcW}^z$Tc?IgWo zs&%0$p{n6NV)09p(}iq@NLbrt>jrGJ4{q@-#@wM#HR>jWJ@Irll@~~uCR}266~ags ziqJZ7avTYkeebVj~$ID z^qE=O8{19I`5B*ds3FXuY0juKIJD*_T#51|bvYY~mdahYD}|Y|2^J|m1wlYXEZV$G z{THqLo}6sKYP~f5yd|@24j)5MhEE>T5sWsOY>>O@kL&I~U>pAzYu^~0Yq(_@p4j$@ zZQHhO^Tf7o+qP}nw(Xoane^N{)!nxSJyreVtNQ-FRr^_6Ypv~i?l9r7av2*>6lzlC zVCgUig*E~E#H=~yS>Mh-isXQjhK|e`+f}lLIohRXMssI-eW=$0duRczwUc%<6Fu)D z5cEQPYT+w#V_opkPXu3LY9V)H0;YFkhBE-#PKvK{Eyy&dQ7Rr_(kT85$LWw)dYj&T z*+=NI&D-}y2W7Vcq!BMH8t|z#5Eh~$b;BsGY1|M>+R#$z zAfYl`nfn+b*aXvzLe)27W+4oq80`7Gm@=BXn!MRPn-HQGgAn$of)5NvS}R)wYWv#} zN5tbNGINl31G$1RJ)itTeC!+4e|{@}*>gONf8Gl44|n1J_pSW1l}=LJ`M0<7b**wn z6%B z;+r!U)!GApVAo;4{Py=_p&ng?z^&evOMmPF0s3V;C6=@Hc>9dCJ(j{MpwEE=YkkY# zbgs!K_`_?oP{CW582{e2h!l+bu8pfHs>!UTUOFKOY4X<4b)vNIKpTXldbQICH35jYna=fZ(>`tR zc-><>`b?!9F-lwINziRN%t2Xf2-bo6AD0h;^=&@J6*8k&DS$3TrEUmIA{xaVQ(Ig0 zk>k`k!*mN1ulenQiKLC3@B>Oa`zy(@`4?Ec;_fie^F{PaUCYSv=`AFyfU98lNa*=D z0Q(tFFaw7fb+XXrTJqQht?Oex(rXa)7#C28H}qyW_;#U(U!-O=mB3o7s^RoIwv_|j zf~LH&CcG#&YMd<-8Tf~o^rlLvk_m0wNgBjhAtjZ9(AfMt-HRRmX@jld zIla>L=@!G_T?^wg`|}6LL-P&E1Vj-ViL5&&FaKh7Y`2J$SMoDSkosZU{J#x{9Ekoy zru|3#Tcxt`!?{8K&N5;pRZot$N6Jr1R)ARHgLn5+=r5vX@2EwYj~c*Xsou_QZ1LKeZ3+;;g{B!5MfW(Q z*k(nPFkvjkEihp<9lrV&Tvh@ZcQm5u-dzA~)>!D0<|kW4MLk7DwNP%zjH;U^PWM=& z3~}sHnkLL|_Ip#gs+uWD@&ek)ZeSiQe9dV~XL(tAeGm3@|Cb;Y_6|{2XqkGNSiT;X zib-RI1mn}4mIR|J^9KAWF;aYyv6G!MNVX>?BUJ(2^sHy((^|FiJk2KS=m}r{sG3He z8B#ne6|9n^4|0R`Ro(A?cxo`R6EPVjHa#}Y$%`}fi)5Ks76qDFN7pKb`8nG{`(i@6 zj44#8{=L>X+R#um?8fBrVdAM~PIL{*bV3Bh7O}u723Kf}QJ}>9zLkjJv}J4909=wS zu;9Lh`wOzN*s$XPa>5UV^=l<47L~CWI|juJGP5$UhxOzD8P&9d@PV)GZ}{sKwc}Nz zR(CDCEVcE3g8WIY9Jo+@IcWLdh!Q!&+nAzB1^pc|Ms7ot218|Sas&?IILdYM&tm-g zd^UzpAVp!?Hzh6jtUB!>;8bk&;B1OpWygMdTQ+-&YD38(_83ftXstFsSp9ef7jPk=*|h`bM1Qy1Ws) zTa>7OBwD*V?{WJ+BJX>B!$$Gg4a16cBkje1&~ZhJNCO{Uo8IE^p+aU0LTWdvXwy3u zjIftri4^#v2c~=h++4d^!hK|{lsY_e@(5w40g97}j){kIN_g<6?@;%BN#$l9`1gvfY z#Z5feFuH#4*I!uqC$1T0%r*Wk9{;hohI!m`m)YMw zVC-jGBH9Gx)&=-=z%x9U2_9za!Vk}`2b3UY?+~6u^#RGMALpPf?|@C0q>%T3Z>zL2 z06@1NQDx%yIisz(wENtq-gtjFbO(9DuP6i-yx-h|6vz1KrC-RiueoG)23b#WH=Sp` z|HWoa`Hnn;$X(3~*oTzVZ0af8E!r8{ zfjQ%*D-^^}*1mSw&dzkO@%jAxLh5BmW+M9Wpw0}|Y{ePDK{1DENQJxYfDp2k9r6lR zDpI3dk(^pT7AaGw?WRD>Nh>;bAKEn1(}b?;bS%`>lVe!p5OiGfB19jSIt!JkSwPf@ zYOxZCFSfMnnC8aFeAip_q3nQWM7f^emVa-hgvF7#@z^9u&~e7zt6J~eKylQfr*1K9 z)NZkc3RsN3K+j%n4m!f(cXj!yRALW4D?lDCl06s;YB;ux((+Rnc}U*688BNqS?);j zY{}u0PqGeq=Z<-l>aH`mzU8)A-89F#sKTL$qs$CMZ!F(jlQt3utE`

    zz{fpP3(ON7AP&AeAi_AF*5~t}1BWynrJFsf=yEtRfv9(d-QChrXIV}Clq9LkobV&uOO^C>8~$KrPU^7Jyd?; zK5KL^MVU69F-1oDq|O@8#MXC)l5~tfblfl-2*8a;%}Y5J9W|a0C&Czu3#!q3FC;@R z_(KJ-_9rrAIuDq{Ht28>!6@AbTlKp{QxLf?AzSDWAiQ3R0Ylka?-0uXOpcd7%3DO~ z)&IqN)L8BkjvhK*#3W~4T7-g0ci>5GyO&5j3Y+jTK+ND@cQLL$-B@uyT^2AL008HI zAtL4U?e(pVf1HEO-Hna@Wg?~es){TM|CO$txuq{B1d0L&pR@(4#YOK|3Z74v4>(xb z7Hk|iw}p|J_7pxmxcTg520LXAn@~zyP2@I{@)6&8vU4b@z|2{R-C$PF`{?N8qU@#o zsqAu7)#K9zp@&jErWPz}%oRLhTzYzbE$n!uG2uQy6& zVhls_9Nfm_V5)}`8Y z?5V~QD?FwUV~jt8-B8I~w$3s&oz1q4ZCHe;+2F{$R-)c)gXzJs4l?K*Ub)0%CCZ%1 z!<@DZx%UZD%zP1iZ3VxII2K|Y{{Z}|BJvL6Uv&(?pFLNGrJ>5PBx`{4r%~6w- zw=Gr!dcaXBq&W$w)Rr1MrlPISRh1*nNDsR|_qdTLvoZY=2hT;Ah(q|0q0A{J-o~3K z-KR)^(q*fxEY|QZTe1x_BJD_-v1r=lr#Ux!u6p8|_(Dd5qO>DVY#II%?zlY}e3&!5 zU=txSSb~vNxXTkB0h{#PCs0r^<6y8PscZ*`Vp)93Yal}yCCDx^ao&iOCPbC?$q$!E zqe{;h)bg%AP!+i|e8p@7r8AlpxihQB)Hj05G8KgU1oH1RgTAMY-~AJ!_xHpsLZvhq_GRCHu^u1bfP-7DWwog+h`_tNry2Q{@mCUCpzZwUi2N$hI|92zLUBk#jI z!bvFu7T{4(k>>IT)u~hZKGVnxyT;W}_qfkUmpg3*F(O4Ih^gk3Y6~-XHH0zE+=Pqp ztCel*h~|W37d&v}sD#30?yW7&c6ZS88~4U&`9r26YwO&B)$%!vT+({ZnUx+Qv*lxM2H-08(-0|V*weC(kwMr=3c#I?WYIhGoQq|OOo zx5CV*MU_zQB!eaQu1K`gms61|^@GkoAg{~`Ghj8Ch5f^ZGIjGcR_l}oc+51&{csEi zaI_a3RaNDAsr`Z!hlQ4GLpgvDbW6J56&zv`5!4b#T$)SCF9n`q@e_DTe7}nn>_eQW zlZ&!{6VBN^{#|~97Je@9)5)KZ}51mK$xzSRvu;TF-~4*}#t5=xYgTEzoL zq4JtTpw1F}#q_tX=$x_wi~)C(Bz%5~E;>IxAyv2>KC)7n0TtSUJf(?V7FnNHBTceX z$ork|yPB2b0K83%A6jb{%&J%~i@fgG)R1{~(AyE&OGtWd;1r?;aijPukQHWBD~{%w zCi3qt>ozcQZQeze_HX7uOM2vY3}HgK>Q)KtJ|~E0LcH`+ zEgq3Jx{}TXRrR0$dlgcuwI!Z$3?pl2Z!kmeHhS))Sg%M8mam-t7#N9(m7{vcI=JA* za^t{LOmzP0YkHc8LMfEOEgVBJ(UjGf8$u|A z#J8isAXFnL!!}A2XQdgsP`Dc5;(m!LOr3uDBe#O2bzn>y(_u_M{J9R{MqG)T8Ie_X}z!FZfWH zh!z!{|A;*?K}+}^F}Y&KO{xdDAd#H{^LJR%;L%bl&2nojMMJm!ruBeMcml44lFWPU z&VeZc(B6g`?H+(#Jpf$C#s_%1_5i5T0A_kAh11)QmHgYkTu>}b*NB|^sk?T5I?n$J z>)_v#+yAP%{(bF|^s~LjR7L)Z&LuReOa`G9$24b#bmf;`P-|L-GBbm>CStPCV2mXE zxi%BjXRPy1>w2lE>uJ_b!R&P^q5GcDUf4gs+b7x6herhZZ z9GyI8cQ-T1He=CbDoiXMT=eJXkBEAk*5c#1JLXHvJ}NU^%(R$fAo_?}Qkn6&VEEvR zAJN(RIqiK+%*J5Rzjp+yI6dfIfwgBrHvV zjC`Nkn)`CT8T9o4uVgt>B!$6Yc{ZCbeKr=wI5pepW;ya{v{|cN-Dp6yYS4NDr^UZ2 znf-L2fBOy`72ddpM^{7+ue7Ojl9j$2&Z7ylRX;W<78J>>7{Uur3`ow4N*s0SUIE&e zzFyF{;3w@+9N)LwQJB~;Esy!*?Owr+&jLMgkRgjdYC7v8tuj$zy%l@-iE`GP$-af; zh(lLs(yyo(^<>|i{ooX49oM?@WT2yxtW?e1qCQR*gM5e4jL|-s(brOO;`Qt5752&& zutr!+3?f$e(%0Y}3!fq%%;n58E2l10_Li@=I+Tflzt%NeXfmEe=%N^0Jr_ z{*E0t;ssHWV3@w|cK5tE^^5tj(j;A@U}4S!2Jk$WXhI@ymY1GonC`si@nf+f^Wb^q zprp_rQDcI#K6^vn4T?OB%oN#;w;Jm%Uqp4GSGd1NY%l;uXVtOP=yP}KoMymE8Up2Z zxChY`#%&Ob!G@6b4M#bIgFW`+qbg!%qeiumWTidC4ub3|=vwkmk(yI8YJ%*}E9|=6C*|aml zj-1Mzv$I0e-!EXRp(SU?(Yv$cnKyHu{>i(w=8&XjFwvR)PC(C^_RhQbpWDJvz5TZJ z;G0$uI?d2{9+12d2EKm-Q0ab+`J1bQv<;Opr>W2ega1jrl<_czCq(&vN7*kh3M$nz znTK6SAZ+^O6Y`GS;$2m1v3Egb!T?W=m(gcC1v%6AV%~s7|A&wT$zZ~*wTYtjn4{GM zYntFKbotbEU8q7|b7p`9)8F_dpT0E(rhm@Zcwi`$cIRSOI0fH+kzw7NgD2#p9I~wd zwynTliZwN85*M*PU^&`*K$LhA?lbByB1y=0fmaYI22DXhWQ^qLLE71r;_ww>r)TEC zqv~)LBFG7?Ek`uY2=W!Reqw%?$|I*EL+YKj$p@$7-SdVred30>3LOC2om&)YvH(`X zo<66V9!B6APc}V_B~^r=vs_$dh!Bgk3ewAB3BBR?eJQ~Kp=XeKdHl)^;|$L8cl$oC z>Kz_E*su7yTR;aO)Z^72p(9`cAXMp$e(JeE1o|AwLU(VYj8i?)y^@Fc!jjMLgJX+^BdGluT7v7!;WnPVG-k=OduDMtJp6zv_43cR)~z7l~kcBSa9_ z55@o8!#6VYcfDuT;sKGpCpuE@FS=vL0#kDoY2!#wE>m=N>9B-UR>yQE>9N&2Bc7X8dksZ}a^q*ZMVK;n z?PeTBeKD@8t?I>APmyTL`s|2|aq;Kg+rz;51xehCtgtY4Dt<|NWpylNDM{wXI3qk@ z&cRwH{nKRXi@&9n?Bj^8yus_*<<;w5(3}LMZzNr0p|DwF!K z8Tg3|3?M=zY>j^ty*;Fk$YRPhSO_!JuSwE!X3+}^t0_$c5~wBfkg`zh72R8wn07#m z478OCp(pIavnZ<8-^3i_4hW0Fs+46o>qYv@#ln{M9@#LSgkn1K##jVf{bv+P4>wE; zN8G$oTk|+z*6fd!dbswEBRJCV=}0sUgNWV<=7`9x3`bd%xkqXl5UKAJX5-Q9s<|x#j4Xdlr0~-bL$w-P^`@G&EHMt)fLF9l2@dxM`#{rX8 zG#xFQf;PlL`|#Olnr+iLVRM)!Z`Enpfu_aSA{-nCyW02T#39gZ<@<@Xl5YuEB+QNn zP&!9y_r}6fYJs(Zwo`0T@W5Z>`eiz)_J|$DR|C4BEz5;OXw6u`zT*NdUs4ScZy|V+ zY;jo8Ra9kYim0sExga4}@6rOjUbOnDJ@I!X3H)m9r&UU;`aKEzX74JeWMs{}pXG?P zlPm^9v|#0CJmBo~y|z^HM>bkVyOj9Y6XdBX${Gp+^d+65)mDQyeXQzQVdIiUln0HB zDe>v;4@bZJ^n?Ejx8)ATYPbX$lCKqd%i#;iGX~i|Du;YgJ$|y`Y`AhXi%4Y4ez zaD}P*JD_?F63OZm6k1YPwxnTK6gGd|u~& zAx~Jhv=bF&;#w_?-5W9~)+x2slbF!g36?Gt!qz*19PfY{lh@m4$?q9D^6&2$$rkbh zzL=QugTHVC_XI;3A-#}T=Tho^NjKWiXtL@tYM9~Jt;jFVV+&%LuZyP>!SSSPYTWn@ z2{1R@HU)h!HGf4C*I_JvLHb2lSEIj-In@UZ|GEy%3dzy-9i<@{rP1f^h@85F+;7CA zX(g`R*o<+8>f4k_u`f$2#EcJH=R(h7dg$W2poKS)cWH5zrCw>MsFp3W9ex;NgHox5 zQ>yJznaeI+Z0M0LVc))9&4Dke<^Bs`z&kSUjQ0fH5NlHF2nn;vU6wpm2J(&b;ojlUwA#R?y$-4dK3*q2rT;mU@#~uVG7lX&4q_U*u_wQcCEx9F{!*%0?zDH<2gifmn# zQELA$L=}3j-g7@SvnlB1<{1MVY0;aHXBYe-nCG(1Qmb3fHo&GiD3^${H8D_t4r%EJ znDjN|=DI&~L)`;p@3`uJf$c9v(R^ry7b1;M2fTllDL>>v@@e_`uJdz5VVt4;A##E! zB3QREE#Plna0pjvzH@vQZhs~C(ZU_+bpR*W8Z{X1GJdNejW<)C&<8KSe?@E_=&H|p zXaIo6-v9u_|L+0LKPHDw8W5h?${620m-HD^MAGR2MAE0pg;ypC&I^wK3q>r_3oOK< z;`58X3Zxn447F=89*xNI^73~)@I}7%ns>g9V(mq85oF3-07r;Jns?p8a%P{~8DrTA zR`(5mQ>Hs#w_S8^JbDi66ydPJX8Si~UT%*(-8X0O6h9uoeFk3-N&~?lfA6IN!*Sff zM?37Qz8rvn@m}_-zK#&Su7=jIpW*-Qo|eaRGJufbxP^h(Ioyd6e@RA4dU57y-shBY z_x$mgN6fa(|0OH&l8qE`=LI2a*ItrU+RKQT?Uau@BmUxtG;z!2^ARiPJy_J)i{PW> zo3mT;amNS|AoGFUvm2w!aYy;F?uVB30^>cA_8H9^x^R=F7IK395`g40n1lVo=<_Yy zuS@(9l~*qsX5q2q_lb0#i@2P)=eus_CIumcemJcs2h#$UC?*so_QEOH=WJZVP#R3A zK{hJaDG3$%l5`7BdX1d}4o{X8152@!7no$nTprv+xdc)k=tGxitt{?){0Ax|>2oa0 zhXEO)tn1y3lc89e&Q}jukdwn1?(zB>@ATqwZM?Q{0uS>!I#{3pa7l9FPHvX7Qb_40 zS#1`N7-fa=@Y%9}pBNLW0(z_M)=N7j-fP;8RmN_%0lEL4b-)wdK7xhto3v(iXe}enc|J6YOQQ2#tA5j7Z)_kX_DH_K98nKP0eH~Wy z(3f+kchFZR@dwUarcw-qM(}3o+Km)6j6wn%IlmUeYM|YvN`g&Gw#FB;5beTfbm81w zA)f{tCX6rv=v;=rjT?D4(run)(!PAH^*&!PBc6dN!)Efl25RytHOPboM)I#2;JFf~ z;*7bhg}>8$^(i`xN$(>g325g$2v>!AN-9LwROu@u8QvU$gs+8#s2bKvafr;k zO-V4ng^f2)*192rQ(@Hce2H0kZa<>BL7}qO-?qhA(6L*G{nD}iML6pYStyG+7^3Z| zq*{@Y#?V*jbPFJ~1EmjdX2dexrA;X}FJTA7`FueYV*H8>#padU7!H>K?Bh-I_@+#w zu}Pw^AHPvO98%kt55NHqQy((azZIHH-gF#65R`4aMxKZ{@pAz>7#ntekum#*3^x5! z4BHWw7}MEZE)%X8HF9mz16tm55!#01I!nyBkQLRZsfdp9e{935FXmpoV}5IZEW{YIW%lP6DTmiXy!-FOg*?W^K!)V1mb}V${(s z1|!e*wfmb$k)4N1Szm$i$Ej8n!fov4OSktV$4KUb)G?Ni!QH#gvP6e*CP^4M6O4{~ ztq-HLtm^+Lq8umntDnsH=^sZ$EwG=l#Kqk)Q0mo3w!~%3vc)(AukOi=_h?x(+O`ET zP#QoPsZ2^3btdFbpw=sdC5=^PD$9A-H4v$gH&CchHwgd4QxgMc26eHLBojQh?L>-5 za)&FcEja>Y#-J91X8&}YIu4wjjB)APeYzH6Mar5&b0nM^)AP6$yDsfC|D>%B&0ofy z8Z3vn;;rVD!+w?yDMgnl;bgak>YRzfR29qx2YCdiz3N4eJ%VQ|Qr%Bz>Yr#R62h8` zL@1o)EqPQ zpGz}9QkTyaM#PbfghN9pUjrBKA{77&?#)A3y<(9BM@ltM$fzztn5q$SD~VUycKIa$ zeIfP0js}Hjm`9kQAHm6bow>SXeDLCAN<<>Tb9#ovAeeHd#)YOWMS9p!e_+1J1nGa? zJ*`JnE{AHQ)T3jPRcz;cdy%E{*whfM>$rQXSL2*9+0q8a%5io&KhBAiz9$Ik%cb;? z2YpC*wtmCxhqJCFY^x-ZS?=R|vei#|~IlaYu#?y(K+T<-%8w8@NUW*y=LspidI@@^Mq7KXwxxc54 zyVv6YzpK=T9A>9$?k93GwOX2YtG z!Qy|q@1eRx&8V^9K`E+QzY3Eb`i9R^ulmTkpr{(ze|_#Wd1@6=+YHet_;Th3TDqVw z9i9tkiwKHt?KtE2(K?pT#s!hUQ&vMr&J_xo0SUet6H)ov39b?u!?cwBMYm|BjNS<~ zu$Q}vEkZ{5JfyRqUK2k#^{MT{Y7Xi4f#=c-vWN* z)HGhJD|9bm_)NXqUoCOFWp!J1>{;SQvSrx+IgNb1iX+%q zFi~uxggVVXL!w|0#3G>|HN4p_@brLeP(J+r#~;=K%O9!^{HC9o+`L$DTe{*Io#J8B z`JS?%8tEW99(;N4%!13i+gQ+g>dMTz(%QU9Mg8EmalPCsCck=|BvW3;nD9^Idc~!p z85e-Ntje0}P1|rkY&OqWJbBr3_6YezPHv@pyuuYZ)zE@jKciZJsU1yrNuoz4$2?Sj ztaYIf667sUIU1)t6^hre$fL9?Z&hWX2^P<9i&2rZCw@;cvg?5m^C87VqB;Os1FKBUDtc78%;l^yE{CWYr=!Y$zwj%} zCRWtQhhwlM0$bD70=5DeoM|n{9-S`XS>~QuoP7uiozx;_BVv=~6IwL_ncy^qem|IP z(Eyp}QLK>xjWu*8Y%-I%tCI2%y00{rakQMp()eE?V~dETgvD;x$94H5;wpjJ3|R-q za6;pqcu?6@X7{H{J@cgQZ+l8~?lC>vi`C2T$b6s0Teq%QGC^gWfG^`p+;ChfL26=M z_nZ0|fWa!986%G9&seEbn-At3;NtIhAo*DnTj{(z%Nk-g3l=ZByVPDR8a%mO%kDpb zj^A4mSGFa#%8=a&dyf6CM&L|@57FOiq)JMryXos%OLa3zO;AEugRIkn-1?pVoF~M! z3?AV(Zm1?Y^|bk}r|znQU8A|m5%lzoe{BVAEouGEan}<2rWG#wVfXv-bS=GBR}Y$aZ_zdqQ49~~*TK7aOhq&9u4%SB zf%iH-+U7K=Drx2kz6N-^Ota{&4WN|iK$1fd*VP_uYiG$TiY)pj6t z##ZZE)l*No?(AK_^h=#jpilUL8!dh;I?+BG^!xR;%XY^}r^n4k=i5VyF5u?y0J6@& z7P10aDp|2yzv+2hC09?Esy?%o*Jl*#VN z!RV9Oy9{>le9S#c3y%2C_S2yT_D~*`i3>=iy<7?q8f7(Y%l>gSv?U}yojL^e#zvi> zYL`ovNaIN}=yf!_wQ&nhP%~1}b72GR#a1lP$@zQ&4ClU$q$xf%-PX)y$TEIMQo}sO zl5==d$b$t7b-);j z%FSM)?%7pxBYSImw@YaAKPrTiinyyw-datL7OPMhuvl-nC6>Br!IpZiraw)M#Fh@O zq3Iimva1wBc@|Tl3;dG@@EMhNseFEIip~sny1R2{fGBMV^pWm`?Sur1P8rlHLh#;y zLY!9qK&wDh7!EuetNp!n)~v_TO>&0xS$S%tYXnagEuBa(oXHWXR_rGnWGe$yT>1@* z({@}QosF|z-I7S-M;T+NYiu*%bKR`Xpmz89dtP}&Fb%K2j|b@RW^9zE*bWzMeziBV zcgcsw1u4VaGe`mxt~O~HrIR`qtLp>QCQ|Jqd>W|ck#XCYq#3mPRo8(k_B-VjB^6U4 z0%%3l0^08`xV@4F=SqG9s!02Uc~0BmW!opmsq@^#8IEzhi^{1l`D+3KVYwKwjM!?t?%HUq;5agA+LN+nf}EC z=;^yM^d3p5RRV(yXk3L0!hGC>KS`ySCU-)VV+c9BR=-w8jl!LSE!R5M-D6PK9Gxhf z&ay?zGETlhBOjh8pTfhQSEM$5i_&gA=9E(xAko?(zh^4}DOp_}0LD^43n=Y}<=P>K zbMsJ0N^2NpEQ=tr)q3W=-nfb8jF59meNDFs&N3 zMD+hl?^30x{bzv=nfqGR46~VG_{Agu#f;O81w=N3WO$XNkO7zBYD>CmQPDy+n(?lI z4^wd853e^yV3Wx!l>-FMx^i`7WaZ>-{rT(d^MKS>^;Ai|j}Q$uxx%(?f1f_Pb+C%V zjLr3Y7ejCe)@Xj!_BIm`dK;`La4pI$J~VL8i*-?ucb+3WNY=JADMteXNk!ixQf_(Y zjClEW_Sy>-zslU{XY2h8tUql;hKZGNXe3Et-hu&}-T-ff!)keU}$5+f|pQ4B@z6I;fe>U6d7o&X4TwI`Vsj~uNsG^MyTA#F79)l6*`Nk z4P#W;Dh-o$vRmG#8@+rGb{p{c$due~rR~%tU2c=Bh!pOX7S#53GvLAi+TOs8GR%P= z6w?puxFd)}4X3R2OqY_!vW(q%dy6QEYoi}_uZQ|PESD3RuK&ub&)Au<%^I+<;&&8` zjhdnUc4*!sbFNqd!ri}N&Wvs$9u4~{rxz5ym}k-XOQpsXPVh;q&3&qsj}`IeH&dLYIVSnO1z! zKI{!vd=ppl#W2kN9q4FmD&;d}8(N9JYV!Obf(CN{ z)O~7a*3u*)W2<9Q%ab6NvS+lrYcvtnJd4j?g*;|G333XWr%*(cCztQ9f7jkGKkklO zb^x^o;Oq)xW%WRi>@xd}{Oij=$}TKkwdz=zq$)m(gEcLBa7Lg_!0br<*f*6;9xT+w zc5xvwQJImM6G49E2O~vGTeQ*w0D6r*7|GdA(Iw{f8m!%CxNSUJs~(H9c+u`eW2ZEl zHU;px%X{aciujoe51G#APd_hX`7vFfU|6vyV`pUU;WtE|2sr>fFN`42DWZg;e6%C8 z$vbnk&D$&+)!Hm;NhlcaFl?1$u!Zj+4J#!B6&bR5U1B1g!>!}4Gz#RiH=lsj)7aL3 zEN(J9RG+QA?lVd@CvsK^KUPO0d|HD>w&zJ0Y4FlyRKY5s)+uIa0)>U|z*4E(BY#PL z$5?0$9UCKaPdo{ZG^7|W-d=EY_X^{X+G&hn2vhI*1&45qhpVehK&m)t^$PpN0pFgz z-0PNqHadC+F~gwXT(}a^sX_zs(luiRTBgbqWi;Mf5#C4D&P7MI_grDf3u5Y{)#=-a zFwn6`k644*YY8fk7H8E>RKY0 z0i*C+F!?~`o=*XbWSelQ%yiPP($EJiRi@^;`6D>)n?*AOUB~8izCht0H2O(8%F*?t zuA_7EB2f)f#Y#un#=#4nev;@1Q%0#z#-8JstaOc{^zU66uaP|u=w@bOJw@%Zg26(K|V5-Be!FHcA)hZc#ZSCnU zX7vUcXKfu@AhFWqi7^%>iw&J`pBGipYzKY}0Rlbr;MH%6DtfNc*Ybm=M2nz)!j^)< zltF&6?nk7mpvbQGD6-|vn2JAvvO9@fW|n;!PI)oFx|i_lS$x0lw1X|$d|HbHe_5(B zgAUkI$L@>In}d7xV&P9kE+@_m2v!3#PLoh4Ko98bY!*354BM2uPdZJ;(qd7A#tlE>ZPf2C7#^qi42DG}7Y!64~uvYpnQ{R9_{*t0ezh^PRw^;>TG7ZGfyD zy)QAs+%?hgn>=|LW;Y$C9&7c3Hx-MeS!;8!IYKivzy2IALH~1yzg`*o`Hk2lm6G=9 zV;1Sdx^_5 zqv@~NzB63p^}aDF=~3eek7P0PY4h|e+sXhH$y0aEu#EGjLK3845 zUIO2f*6P4dx5=WHQs?xt1oWFiAKQj|@+j9yT(HuI{9INMLL)XrCu~}16~acP`QBeA zv2;Xk*P15JPpIa}{rdP|?FxdXj!9#>hcp?}XrvSY4#k&!U+B7=)X;wT56Y!~OL831 z3oS4|fgJo(O8vJ4@;_5tQR0-%kKg6Ux6M4&8Wj;m-cbdgxvwM$dyb$MK7Ueve}A@H04`*MOQOV>a%_9G8&|G}42+F~8{Tej;8}r+P@rTl z*Vg?5#Ok-!U=+NSy7Ro_z2J}xXi!G6`gM+h1n0_NdEGK^3IfCs2@%4CLZS)R!lqaf z_syxuLIVv&dzW0$8>c`XF@rk(MzAocNx|SMTW2k=82p|xcmKRinZi{Jm=1xP zdmD-LpyqJ5_7Nw86C~qp)B%9t-JnE)KgC=VAm-WAnbK9lM{fO9@`XjUT{Cd5iS}zT zI#Gp<5Ur8i5hwK{a@^B_eK)0X(L)V`CO>B}7nvn@ftc+#hj0Qe!@H@$*`mR4EUrzMlwv2{)pyVu4AfpK`4kL;7h&K|VW#XQz6fhV zTwEam&sQG{bi5W>U3L$I1eVHtYF*w}H6^ydG9e-K6Aq3$7k?GmJpo+2fqq&5iC zW6yNqL9>nfa&yjGM1N7ZE*w{B0_{93eju1V4n}tQ7eDqRfo({OSU?^D~jJtS2w3jdrVT2~-Ri z9yEcdbNlV7glhYKJW>0 zrs`ZMRHd6v9~4D?Yc8KE!T@_xA|n^0f!LkE{k{RTIj(8O97IBpkzLqO1Qiu31}Y0w zh;Z_d^4A?QbI$KAaA#QK}7BNF5Rro9SXC_XhUwT1MFg)E(y6 zP4W3cAZe*zwXi{D4J9p9a>mfZ0!Y!xH$)HvGEkM8bS;kIru>qq(#5Q44OhK^1P&s4 zD0dG<{;Fo_Kl+Uu;vM6Wc1~M@QxonaiPUV`vt*P`2`f|;papJ904-ZAjr~r~8v2Tt zD6j7$Bp}U{$Z}_S)~ZZO(Wgw&IrSd0ddID4E>jqc@;+ra4^=Bcy%h=nQPzW38J5ST zN4KrV2(+aoMxBhq#I!h4@~HqhGM=i;OxoYW!|K?A zv=M>9;@Q&om(-nAyErg626DTzT?#9=xW7<3YxaOW$!0Y;hQiV$=W~@Vw4IxwDyiGh zGV=L6gQP|E^p1#WYpZO;<(?AfFf?TrH1fY4^hKVmRMyFDAeN}x+9g9?>6G+!!5_4* z49(BLzH5+of9R`n@%)lO5_-&SL{n1BkdoSYPWsJxI&q2>1O-8_*KelfOTP)S9+yvZ zSNKRVYvUx7vZ=4MbeO6I122-D-_4jMDBam|t8Pdz-)su*n4}3;_V zr{niz8s}RRR5bb^I%+e9!S_K{;Q{KwZo&}xnB*oC*~4e+cx_Qvk-}yh!r4)niJoa- z+@EZ6iJnp5G|=`nU_!xh`wH?7bU1i!n72d{0}8Zi0A5<5bIC#AHzfpo4~(Wfv|A83 zy^y56+)CY;S}cjox;bK)uc(=33Yrk#5*SXa;oGCIl)$@UM79;*y9dfO&5&N|f%X;{ zK$=4Nv};%dI{1h~W-JKge4r6X$ape;V-jAjx0 z05*%z;}Kr4*mN|lRaKZgD@!{sHV6iO;`^)cwaV@)?L0v`vzkq&?3oE?-np|quk^ph z4RbQvMWZa(+TMjNN0h653W+~DOexOk%BsO3CFaF}vS_+&^#_ZgOxGYk?3@pNu;C-4 zXZJETcE~Zz%&U@I*m>oqU)&5n#iVPIUN~&2O+Cr(zpaF~iM-5k9df|iN68CYj~hA| zXMbo9GpO+WiPDE875tv+gT?m&w&Nz-jlXfePo)tt)--E#r*1yH+kIYrv(76^?0AHq zQv?h;vE^9Ih6qP@4Gk5Qe_;+j0JK<=#kT3k#|$Bq{{9!Y5wv$AqMV;rxf}lfq`mq- zjdK4n!zEI5voZV!mS?GIIv}qgd`(|hnlz;+sr2_VF#JA%sz9k-rDx-Z1^aaR`=)hfjQuB zBXnBwSynOO>z6uUkrD0eYqZ@01I5>U=bqGqNN{7tpr4FXEH(wopD{=Cbd82`AdR(p z=n|y`?UmnGPzTB$ZLMY-5zGZ*F%!+okK7F+Gb&3i*aP?B0}s_Fr^+{(Gv2&I&Z8w= zQEHZyny!LyruLz$Y|_pS*$pgOUQ?_%h8E&3k)Zb6y4SRd{@5aTrW30R> zaLEfsUMyl><1hf4QZ9qd&}ppp#Z!)w?aIs+%ztY?gRhgRXKb;3h75)0VKz4)`a_1C zoP%Q3*qF{Vv)imD)2qdywH9%_)_yAvBpV|!z0=H6!c?I?iK$nVasx4^%{;z zYCk_1uYT))u=bAKm9X2kXjM?rjAv4@ZQHhuifucoXjW|7M#Zeywry1^Hcr-g-*wJf z``&h2+js3x&mZW|Kp$iDj=w#KCAS0V-zys#U4^BZT`6|3+}A3m`$)X^#DYl*Y^rWm zwHQ=sFW)AADDCRzGBVN90@#U-O^cs$7xDby;XO@nfb2zfH=T2^K9tDDCa#*SKjOdT zcFL7cdMV|D=kJ~LcnAh@KNNzfHRdj;U$k${r0ll*R+W^rP#SR7I|2hmhNh$4-k$%itVVGzQ0d?q z5Z#=@3b+AWwfK0xDD0uTfEsdWZEibxnx@xnxiGoj42DVg%EqtUhHsLjTK~*|Qpx1l z-EtoHZM5)T1i-aaMpA@O{6P0gRWa@G_RhNPuz!C2B93b3ecxXDeLN*Y9l3JZ$KDnP+5+ znE+i<8j%h%oaO4{YOdWG`@BM<>OMD2wfPq~vcnP(&m+bVp}OF(_9!ZDfbu~cT^M|l zYD?|1`e#n^gbw!LBW*()!j@I#Ca5PqL^Q9yM%F?f?$L(PL;Vb1L}PdnqY;aYURXw} zfiTCdLTh&)a?~m9a5JUhxynWb+r6nmhTxUjwtYS5&y;82HESlWdvvH^@(!9a6 zJl{`ox*_U1r7z9i4t;5*bn#-pI3n{r7x%`?@fN@-61W-)2MaU&6u3h%5pu{tCO7cF z+OwtPj;6foXxaBr*z<^(dZMIdGDqv2lD`p#`C^G!exfvFA7wPru&MQZPayrv(U=qv!*Tc0U@q;e>9gh%=>8oh+eI$g8oyk0S)Q6#Iq1 zCCnl|gumPcPJ&>4X=hWUc(?QmDSuRf( zvxH(jl?VnBHGPpcqO!PiAO_JVytfYPGZPYC}@}opAxZ>$+ z{{P#~{r+GOJe_!X{(Q7^7a#51|NAA{|99U1JLRkCD$kh$eZRR9S`P&fSR*6xQ?(Mb zTE3R$(1JB8h)_e%H!dLUpe)Op$EhBK)zW9a;Yq?1UcDvNn0IR(cJ4?vb1zGl4_WkC@vX)|4+wKK72AyaD z!?B?>s!8aZ4jidJ4tsm5oOOEGMm7UzbvCx`p z=UYze7%G?ba4{Hic3GtxYY|qTK$DqesM|xRBpuXIP3NtgfW#t?ER5VOW2RQ{(shwC z!)zDJ%sK!}Q{F=&6bq{{G34KfcpZ_anB3cQsUAvUL@FW~^Bi6<2h;h-LLfjjQU21R zckQ@JOQUwTz#=qDtmF>H$&7j|D?0A~(HM`5a|_eUIFwdbR(arpk~_<A1-pHFZKb zVKz5oY+4^P3VA?ntV#(Ek=A<iW&f!rdUvyNynkx$tzhjlK~sbzn( z^~ms+Vx|1uD-SdO_AI*RaBuQ7D&KSz0st+cJ6a{KN% zblA75{rxIM^(X6VLN}J3jwbOPQ)~e45faCZlB&8OcO$g%f~FCg^4%Lxmy2jl{cri+hde2hmQ2K42G2*9s9*`e(@& z+d1@^b~OSR_QOp~nEA{p*%Nou#{w+em8Mfp7vi&~u7g8#n?3>r02k>Y;K-syEJ8AD{neg{cTu^oC`YwIP}o9mL-Yd z8Bab}>P8c^X65XBjN|c$@oEGr>Wb|6hUSfMyDtZ>OF7jue&7H0<+=TqT&CWlg1b{nbQVaOv}loO z>ziYRDLwv+DJht>2AYm|Iz)E22*}drw%j3n0fDU#)x%a0~zv{j`Uic?DWP#j-YQZ1#wteM`lya$7uunnP)uHUeIT-u_3JqiR#emaZ73y!&FJUL zKfA;`J~E#lBZ2NHJMxJS%FgogsM-OpkxCNYzWh3+-#0g1K(4osRIlL!g*y)De`d4| zB_}=hZfszUTQE~r4pN^mu-`?DkYy)XALyy@{EUdRl*C?9nVKt&?Xf3}0x(Y0FwWo> z&_@U-$Izd+dr3C(b*-n3kxHJ(C3JJj?naJn<9>S7K6f0#r7MnN_YtA&u$}Z}#=zV* ze-F=sxpm)UCKO!0_^et9D<5bqn&ZDY0On7(P5j3PGyPW#?1>$bbo%?hOj`euLflyP zfT|xPwC+b5`R{E3Ng7+5{GTEI-rN|I@6KJ=__?Y- zsj<#FGrZieVB3;TooFN9SFcKb!%9P#MbVatC_3?oFJRtnnY!n{2RR(>Jfi(;vV)xgpffN`v(-oZ2r3HQn}B87~BmYmLx=v~*JN^d&=m z5Aap@+zMTAFWAmN(zG9x&qFb|f53XL&}{UVvZ!!>YbwG|%5c=Dw@Yh;-Fx;}F;}3I zuX4Av%SnU};`QYIS2H@=?CyjA!jso+ZUUQ3Jq{DDQzM*asFcerWag z*_6af7%>}~$2C2vJw!bWI+2X%bv;Sk#g15zfJ|GXW$>Sh8P7)`&wFCH+vL~W#Mj7v z%{LjhM5kVEg$I+02b0>{ZMoo&2D;%PemR027WH%t!o>JCsn|bJK4$mtCC|=A5Rc9W zUQa%TCj9>`2K!&}%Jk2rlS~y|c~n6lFL+|ZDO-I%Q3=6RS)ppu6+9^!NI*!5r6%$I z*p()HHPzHD?CIR^G8JO_A?ME<#crkzJmZdZ`q^0vyW3=o-fVVfhY!@x0811}nx&ty z@4Eh`_0 zwe2!lwaExN$(+t>R?&6(^Beikz|NfEm$oX;Tyg~O_^~-w6lqY{$a3{0I*XP3tB6O(WqE&h}Uh3J7ua7bm{kQKX-xdou zQ*qd$-1=GHOXrF#UT8VRN|!Oaitffi8jJe7uF&h6$v|Hj8JvBSrUE{26}swBdWefav_@(T)(FWNy!^Qv&_o%FeS^WTAs zV+r+Y@IL_DzlVJP7r2EVz!gPOQQ(`Kp&Bg?AtejTF`w>3*(hGE(OsKhX{-Cd>(^{a zq)5c4^N(ru@&XcZyK{Ud=l#Js=l#U5x=vre_s{w;`z$jljRr*rLR+e}<_^4P zCcIZc;x}KZDA!)rMk!PtRgdr{YMr!+;l@Q_H9oU7(9<+^)l9;stW_VQ>_MqLN}Cn= z{8CFG%UjfgXX!B4?yQR0;e%by$EtiW)3z%GL zdH!p2|F=j+R7!VM8OKduqg@;(x47Ykf+DB(44lf|=s?w!tg743?+#E1wFr)1Xbp#Z zY6H=XDhx9W9x_O9c)HSpe;_PehCIzX%>$O1pV%9~KY;tlytt|{G67S4TOx?6sIFSM z;`hVWzuD6Y75CLr9-j#yHmu z6%UG;B8&gAYspG`H)|-Jo`CA(p?AY3iZ(va^g>6R$y#2y^=x80AZa|UI|qA1+z!Fx z3ISD%aMk_H@EA_xlKLqsK83m-K>=_9B(CRzX=Ds5XGr!2?COH#bwQ~+FiS8`^07=u zz+^sRb;ggg*76(pK>lddIGk9-9RAppAkkBFWV`rx(#Nd$H8>f4s9EPkb%GTyF*C-XFx1~S<${yvuJ_ar0XNu0Jl zyhy##KJocJ#H}Ap6FrX-Br_Rq%bCmTsheZxJRLsoFK7a&h>k<~#yve{p{E+Nv+$_w zifs0yBIu_cYhwKZ^CAeRUo5|{VRY%^N>aXnM??8TW7KYkVkevexM{`V&pMQRz2YUC#{LGdl$7Z)NANA_p@d(%SZ3CvjeXOPAQ1&Fr%TFNLSCBp%j;lC#JapXH9%}{Ccnr`! zc7Q2!kMYfsaXe}m@!vzMq5Ww%*9SPSKWc*i|26DC-GEg7vO@r&C((tgC{cbxnkxH6 zq1_UqU}OkQLL!PH?S5h7>NZ2SJQ267dt;aCE{Gp7`B4$17A8t#Nk09oGwaCs!=22@ z-1+|U0HcqY&KY5}A%Xx$cJPzKAIjZ4$9M-BFWo($)<4X@?4zgGSi8(u$~5?O4AO1G z1^pISGIkZVAg{rXpNb5gpd!G zJyfzo!xrxn)fP&p@wZ!O0+(f4Q7&uC4F+tW4#t>T3WfUF1K0TS=iDTgNZ9oxTO_d# z>p!8*sGeUw9Hl^{aHv0NWO^DE2A#l1(bayA#PB07hM`>oDm2~wUBKySt-Fetacb|R zcb+F=?TtV!z}AsXIc*>ns3A9iF(TX#C467%x>KU$fLX4)Zf8UH*f`^HWm5n=yM=#*=8hL3332LIok$^A>A`cH!H zV=ITr(>x)0(Xf)oJ<1Y;oJ<D1pPihozb++T zTu)pcMKEnJv8ZHNbfNwJbQbJqz3#XG6G&=+{uG&YdfRT&xyPE3L^x#f=_9pgtl6v5 zFjLFu6rTx4zf89SEc#@Omh+j6+`YT$$EqMHv zG*<)n1co>d+sgnt=sa?;p07ostu_x;qc*X_j&8#&9Gq-XDUFn3n1-3Ub%09;a(N7| zVwrTk%W%%~i6hQ%wHf88Tn~?)ayX+NJ@fF4u}u$8$6@5o>N@m{ zC12G5-%yH-ykO6#gWDnXGTf4ElpbN(y|;(#U0oCZ=)w6Bvc%>h$#F6Oo)^c;dqqF9 z|FYO@1V?SX;}H&UhpyV#kk~)JlDZ`9Xx0w z6GE{gf;>a%sQh@em68h4rQV4tZ7)J|Z;|rH$A(3KX%s!i63KqC{Av0|)lSKlvee^N zGv+zEER|SRansF6yRqo(FX!H^ti|cY#X*M7%;E^C#}fOwyFd^cm*6;8ht)-RQAJ%K zvI6;jCI*7y_q|N=Gtyb+W0(Q!)m-C*;Jztjhl~!}7|y|9zKUG%K^EuyA5tFbizghU z>-?(?UY#I0=ie(n->+&K$0i?(5)Z3DG+$V~qv$EBY}i==Mk;dn3IS^i_G-2r{)F&$ z+Zmv6ck$k~lqm+ve$pEW#zF%v%ULC_5PCH4!fh*nQqu;S9_YZOQQawgEeGfKifbyv znYLTCvn*%~p$$#=eZmW}w?@_~bfhY5Vya3yXrx(@KCwA78NQ&yfARk2qUMLy*=WtH z-m|fP_!fRfUTbb4WVrFqCeu&@#1`Xm!(mt~;r7f9hLt0$99(#bQ7NKV4xeV0E!H$; zt@w?AW*YhxPQf~w@gs0B@z(6T+-FWhr-Huh@3C1ip1Y_Neh^5%NM?-@bcmOOO>edt zj>#=VsRIdwtwIJJs5o-67f4<{Rc3573ta)eAxZ+K+!Ai&dBv5oQayDze=;r&sp7^_ z;R|u0$w1quR_t#~A1WMX<&}D&tx(++=n)7$ZK$#oYfI>fwxWC1z&@EnuM>?j1o6q{ zuPL{^2VDW4G4SRImQMHxhx)*YdzLq(P^Z$knLup28>aH``RD`@e$kCEEE>%OBRoV$Uj5mXXFzq| zsl9Je%6qNk7(J>`>b7dTc$-zKU!+{>M#O2ZXH_T4;wDjxoZZB&J@2A;-|aoFQ{-r8 zMU0i-5UV7bi!oaD!ojd5+Nd$+FV0X*9mH4WT)zN~TCKxf)d`rfFLQ>?$Qr+*Tc&LJ zD3lc5rKXVg^@wncwmF2>|BPQ#w#)8n@Z946dms+nHvUucaZB*|BM|@h)+}W#oSaQ; zEo{yHI$g1I{G0CjD=Pm|({)-E0rFy#t5v44CB&dhS)j(nE#+FGViCB4KRR}a(S_7ZPl+4^T`P0Q#(7U&rZ@5A^urh28SG6~X=xo#D# z*J^`aY0G=vb>DQ#R;ts04fjf?#4G98I=y3jvc^e+w~ia^)MeBPn|9KQb0)`P)hSY7 z8DU(P`oia!%BXNzvBRRYbzO0$VSQnssvd0rQF~^yhE@}KO83#L_v}UM+S@|}Br zch+8}$>as8nT}aasbg^ba7HO{nXj2x?n?rj<#Q3;c*gs?F1i=z~qMoYuk+M4W zAv;K|*z}BM2Y;p6GElG@td-ucXO^fV)*q=1;CF0R;Tow@)hYE+Y%D6!?;z9Fq*Cl~ z*}{!=`ZU?^fu(C(1K3E}vcEdSI?(ULb)5|Bje$9(=DF@7*yx=!CDBy%ciTF(w$bRN zNg>Ej-H&rleFgXsXBNgnkbC)O0k9w=i3@o{_|2Ju5Qh$g4_zW+X~nQF2nQ^1jNmQ4 zLfOrx?5^*(EMj;{*6C2S0>$*gUHhhao}ux7oOAB_d-KtqajlGo8a??8e3V5Ui#8WAI=X(SD|A z#3!mGApx5La~euuCOm{fIv68wzISq~~Q4n313 z4V<4MPd>O}zQUoRHE3J>{~itE5>jmb5e@b})}=)LTl}H2k-3Sni?zxB^Kz|F^<5oX z6zQEtAu8jCtg;8B&24~+k~wEigP|bJRiT)$LcrD{K3g&=XY<+R-JQUD-jnweu<-kv zzTbUx?F5-mLFFEAw&cd|iLr?>UsG4tyXwyO2h=W>4#{m4+vOqso`Fw1*zqY+$gDQI zZ08tvHgIn6*HOWk%$?~yykmC;69Zl;>}r2jo1-D&@HI5*fA&q4TM6(itN_d7M2;~)KQ;-(ip^wz4tu2yvl2J)gP?6@|f$K%c zjK@8<2z>F(G9X+`Eyqp=@P;djGU(7iC;{U=HA~>XAxOqiitr(_x4;74RhEp1jG8y6 zJ0b~MRf#OdFac@`iLoeXApahO&BJd)CiB{F3tzpsLP#u_Utd zKYjxz&Q#kaF~vAjN}$lIfcWy*;Ob5mp)S=`d(%sSVClx4kBiNl5v5ks2s#&G~?%r|~e;t^SbK?&>N4I7Yu} zxQe%EsrMlB3 z8CgV`Y8idCK%D}_;RvUdps4$)+;9Wrnm; zg3s%mlwGzbHWs0=Q#-enJ=2h3QH}Ze&r6aAjh5D2w~`mt%C2e^Wnt55GZl~eAFh&c zHR%9pL~&5sv&m2Al^a-3`PL)sp7IYDh7#^R>`-2|H)!iK2;Cp>ndK~ZaR?W@Rntc- z=GfJ{@F|BqqK(J?h10@*`c`MqXTbHrBgQ#oI-LA_8B^XqnQfUY&ybrF%5P6-az*b4 zjNjO(cL$p}e8X;b4M$HFc7+{nQEzCT7$VXyLYTd?8po8fnVsCg&vkERAHXZ$Bu>d8 zZWCC1iOREw&)I8Vg1?Ojk8MLsyNe`|&&B)N1s%pkOTs#0*ePA~V)R2-u?uZ@VqIz9 z=ng{K8r;Cx%$X31lcWS=PoT!*p`;kheK=P|;zZ3h5c)DcsRdK+nDK$n`R5yLYYhu>xWBzqK`*A@uNdIZUKBb2NuLPsJJpdAoajcjD zR1t=AHKU8uC!82VdQ3Aas7`4t+FcgF3V8~Ubl3^PbY#cq%K3G{gLl?qig6W_t5WmQ z`tABPZPbP7w4+$O$6@%cf&#jk{Kk(B*m1a;VNk#0{_C`T3l%Y%$#`~?$X+Lw9x~sopE7hn zReX?I+E%1K3y;k4t#S&!vni;HS^IKgvx?S&vDvfcUO3(E->VQ zJo7(;G2tPBm`fQTv!&Q?n!Qzhc19rJjGi0j%=#~blwWzAfPUXvCW=NoXyzQ1nhK!W zGr0!g24A00w%O@>J|?KA(ZzUSSUN58%e^(I(7GDv8NBr9s3J@REZTy-8)hjO{was@ ztF<=!)dCW&6~)c?xwtQ|$4(d)0prF`W+>+Q6nbo$kWHv~oG2j@#0{vnXz*_O=mnd;h8#|I zPsExNEeA32Nd$_dNwDU!G2T>#znzjk1+)3I%G|hd-EfUx=@M-QE#P{$G>Q~Aa+qqD zAJ{jsZuY*SbAbR=v8=MV7{bq3=VPR2244KP|8i#Z59*f11X4NqBjatr{14##Z<4G* z?bJzG6!=aH^J}j*b_F(&0J_0^#c=j3qGTm)VWK$LN_{s}b$UAMuiw9IJ@G?c@L%A4 zO}_~LKxF7;faN&K&d-jg8nOKbIg+(N7uaW1d$xl#nYA(_e~pE8xJdN(g4ROVmv}9-&@! zlukM{Z{bXxOJ$T9xLW0wk|b$YKp8*6(CGTf+-a=aR9i(_zWgXE?^BK&_pKE}4PrzfY_&q48eZxg3kMPER#E0uS9I7>2Jy-#gNCu37EjSV0M!IyWKojgPab z9UKgeH2W*_n6vYmk;<8CMTVAww?yBGxjx;#<3uMNjKLfH@W1-z;-}JCE#ly43c7bZ#r&=aMTp)O5i zW_D{uI2=+Z4gvWP+mmxUe;3yiUm^N%+MD0q-_m@3G&9ECMlADRfNQ+#TDRaHpAoMJ za&-xxk&h5>^tBl)cYa04E4J8nvla~)n1AEex00BPom<1TuFMy9q8&DOv|3u2l4bo; z7xmj}>uZCGc&o`_Oy}mE~tfzgFqp#-xq4~;z{5M~bIc6(%H7z1RYl}mjgSE-j-RzC_7vwGswm9>_Vlu86 z#_7<{sDVS4XPzj+7z+iNB#wQ36azQ?@Zh^x8!QfR*_aP&T|xemAT`yyo;OACrjHE` zTG;MD%}p3#JSLe#offO)0-DD)GG}#IZlx^wX8U}CEum%RUdX#4Y%&7x1@YYQAV{5X@yk^E4J|-dBco zCxon&;#x|rq#)|_D#p~+ILM%Fx~8o0suQcj*-gkR6BUm`Xxja^f*V&V3+Q4Dlq zKE=IA2dtg(mnh^vo!k9VP4Ih|XQ-Bp_518lEs-a3qs#-#-~yz0=LHIf zxAuNmDKi;xDmh&d^7bagj69!v@xq~fD~MDr{EFjgD3Udb^T=^K`}@@o0+M{sg>nUb zSc-sJu5_UyUv_^Z)pq~))uT9FHHAFvh||_m!vJ}GKezdDQTL3+>zG9g`}AV4?M@c4 zb%yykBUIgF*O%;k3;HBZc{A$aPyD-JnQ9T~%^}iLRxeDRmgpOEG}iEZkY4@=KK16- z_@U(Hub+S0Ee~XgW#`%84|82J&a`kP@|K*WMLTern%x_i=n=U5`~lJOX8@w*r1us> zPM--RK(FQy_8`q@9o5?z49x6|S*R{>lW6LU-5|X5Bd-+JvZ|JNqn~k?4L?Ej4&=Y2 zeT$m?otLm6@oq$wE9YIFyI}4O-!BA_t%!plE_+wTS)0D0F{;{ zJI!UK(zvE}>XCjVV5~$D{o$ahO_&xZ@5SaXs0Ktc1X@TJ@mvgHGhfg@zysWD24VW) z9U!wV&o|b257)dJybAT+UM|T$F*j!qAh%PeaZc-?jeF&#CNoA^p`aT}!N7hE5 zpp&-K3nLFeH4|=EzFOxUo^G(^ zsd~;^F9UY`DyZrdxG0>yIO+$5B;MmHdnI#<2n_G&7_&ITlv5y7)(>!HF~W_o;ehu^ z?O|E4=}v)Vqv6-nr%;t?DrMJcGH@cYVbeXt2fIGyV@wyE?A4uAA|0&>-~^Rh0`rDd z9o@Stm0fGmMz@=K4!G{sg6aUoz*vK7tSr*Ab7LWhE{3myta=5X3R<<{0rdJI1(&& z_?MRs!On*CkgllTBVVr7g{oR}&8|eHajMtCFU%m5w%H2)~KWA3c-+wEP{QT|LB z`gmL)D{9!r^R}d67>n#E-#DW~Gp?DeirYsugMb>eI8=lsu#2qtd4(74i@v)C5WJT3 zDZ4v8$UR(4l>{0xW2Q(;!ZJE`rjf9ccR&FS2CHb%T+Y_tXR%1VlsAZ@A^HgX$SPtR zTPCg$2{%@t7kF#rjyH;f;%3?kyt^9T^8?K5X;jI2n(^bPA}lA;hAPr@_w23B}&+@K^$`Gl6%j&lN>K$Al5=LrMwjk8b@7-Qk2yPcW5&Ch)d+3lG z{k100!vQ(@>HG5MuDu)X-@3_^pA;OW=Q^bPB3*F=57}3K*R6j$zB`t?{}-vH|6RC$ zvdq2xkXlms7;FEBk>UTer+-OYfS)GOqN#N?ZH2)(yG5$*kQ0;;#>CL1Gza~un;o{5 zbR$b`%z2kW)w>Mj@4`1}pRE*9iyW|-xtlotb;x%h)9L&C0@=ldr(zG|rjt-}w1b|c zvnD#;%?mY(aL$}C>zgo#&uHBcj0eG6=~V+5!ZAlPwgARgikL>ISX{KH7l6X+iJzFp z3^82`I3t7BNU|y=M332emHlw?1{j4c#DByYG~!Zvq`F1vhA zvIYm}U)&|enUWt!62UCv-b;^!+nS2+ zDU!KNHQ06&1lWq3i4FZ4dZKwN1^r-48u(c*QV}n4i(tI6m>byo1Fga{MW{b8oE4D| z3n2~fU^*`nr`QH`;xSC$O0M)_fWXNj#boUsZC>v&{`2zP!ou__5r~P*$a5E78YT7~ zu|n%T+0TBgy)Hv8ycL6ZcJ>180ne34h`4SuGT)+K3avg0b5Q(6dT5$Yb zwcNG$NJehzx8VwGQU!VaM6Bs4uf{bo*~S51^05VRcM^keqnS-udOuFZ(qWAP0}nMu z`vLb)#1v~Eq2qCAaoWRXwi{}W3YSC%Ec~j&H+K8@4bmsswShz)?EI(eQ|^B+3Jrdu z>~Mdu9%mn;>HiQ^fA@lgDyz1$0!X~+>FIqjB~xI*LjIpZXZvJVzvh%d6iOt5(U(4* zbFB7#q{W5PgiWD5p^Gl43&jvka-;&Vuu@X5!Cg)>vx&2Z)q8rq&(=mwAv}0#;*~*Q zc!`%7@-%a_9Dut%II9=ldm~!3z*V0^SswNU!J{XohZ-dv^QOb-2Lgo0EqnCkT}zaQ z7fxZp=zx;O{-2At`%Ab|oB&RPK_g1Ki}oXNEsu`3{(J1nZvklt~8xnREIl{iR!}oJ9VCm`}Wz)Y+W~5fi6=vt>42b5+9IKbT$g`vHt%|S z;v$(EX`HRoK0EQz&*H&x16ISWrs0XkkDVE4#%0+HlK_)%{AMd2d<&VL#JBopr$ttk zDhw+uSpA*^lMup2+m1DY{Ka6e6-@JG$2bDi4Y53$t)o9J)~aG|fvJ7U4rzz_69=43 z6XeGH7!*}Ab)T5iTvUeG2w+9g7WEHqxopSGzs;oOHtcze956cqoIr7pJvcy3W&_Pk zu?dX`7t|)`$)BKA<_@~bWxuP2km}3}8yRBy3(Ql5g?O+(WJg{=xIKG(#Gf(?SU$r> zo|QTN^Xj5yP5!1;|JBL)LaZz1`2&`v9}beH|5+s@?Be8XXY)_S-jPJf#OW{g{vXb# z!UopX|9Jndmel{Uf5w%lMM??)TEbNpur?3^h3HqbJi)c7Sc0XXf0ddn(-^E8v!4ft zYc*`p)AK!_1Tt%7s==Xg6X(nMOet>S43fVi<961y!B}Abblx(Ue4OCie0808d-?Mr z54IGENIf02O~6J>sZSE(Nb)#=$(OO;%gL8f-2=(I!VLO(R%QLa^S5Cd78g zTS8T^n?qa@E(KbspESxvQ=kZJnSf1TSH_ud52Br-3rU}8P6ktnuDAeXEgL_;1S{&lHywweQA_NtIwB+DN;uAJT%+SZHckTQ%HhK#_(fJ%lPXGC@(gi)SjtNT!;K z3ReWjbQU`5$(FQm>nujNW39G$ZZyYgss$p^4!`M$pwlxANkSh(9AAnN`blV^mXRc) z{2TXvCCMgckG3%MLu|NOro=+l(INTgR6noAUJkOZtP39537KPJp=lzYjS{P>qh@l^ zaguRqtJt@V?HHNCf*w=GRn$h~f&`U&z~!a96lOXLv<7M!<~fqSa)hV#>`a}0H}MuC6EPCueJi`!LEXtIhJutTf{t}!6Q=XaC8{S99i=bTZ21b& zd@~HfWnxnY=HFM%_jG(AueXSlj7#s5X!;ibCkxNq21MJbXgC;M~Rg+T7(u@SjRC>GDWe zXD9ZZdzF*|Is5Ioj0g*1oD@dKg4Q5lN=-|?<6x!3TvEYDa(5i4b<*zuzlb>R5cD2t zB~$dCCl*79+Ajl;EEipMCn zQY>67K(i7^ZA4$r&YjUo2cabxYch^sbVMP5>dHO#X{9WV^%Cl`M^kl(ISakU7=Fpb zITyz_*ig4BVa~+vud127zlZ1u6$bPP^&%{#J&&z6?EC=x6>?-y7&Un#RTeLbO-yP> z;7iB`#3!W*9GU%KcrGq;7M4Z+xR=>MC=9ky{<=7I7j`i{DV>n1OgdoNkg)PFAi6WI7mB^g*XW1&2xgTJ%#K(<)C~Hlj{&;Z99fW)kTqCB7EYQ z?Y)_n-Cce}q#O&5LNR*BDKkg$bL!m&#0tJ8A`dIj0KLh+t`%_z7-#+T8VkpbqLkDrYRjoXL+zj?1z|*t{XlhT51y*`^Qy;Lc24uq20I< zUqT(flbCfJ_xWmsa(y&3qP z-Mm$A##RD8H^9UuXEK{jxTQMPUYp$Sl7DL2j?{;qy>lx31f>p_BDmbm3RQHDb=l+kN`nkKr$)d-GNmd94?AQ_X+m!# zHK?zuwswimiSA#$?v0a;6{kxq*bup!nEs*cD|cWUI=YHeZWi zM`Ivp`wiLP*ZB`zJ7xeo_^=pPrUE`w!&;auiTA8{Lpsw5m0l9!QNlB_UIT%*-hjj7 z#17H6=Dvo?LGyiTa`>~MTcyT*O5Yc`rYS)DP;zv_@6)|aAUX}a!HY#6ypg)IdVd&H zbA^j}kYet^=frn=$Qr#Z-UKn47K*K)aD#|udqo%f-hSD!x;y?%l(fMqd?7|v_@Ip& zyr#xNI~*D$wfAgvLhYJP(MJXo>Ao2+6iHK?@^6T`1CR7rxfUdX0x6Yqh*)QnH}}Bp zjcMFn^bh{G6CX3-OoxMNneZ|VlDkLpEo*1pY2(nHSKBAr+Qkwo_2dO=kB_($+%p{| zqDY@E&u(biEnx$f|weeHqL;D&QYkxnCaxzyxUOw1~GoE zv0W|0rVr0_yk&+52%E^(MDmTi=N8UlvkgKHsRL20@=21VK%b0)nz+ z=xEU;GjZXzay5f_?>0mA19eE`h1zvIh|j6}eZM?wtPi>M*Z#ORaav~He4NP0Or_`N z_Xe}azK=iZm&JV~F{B6*RvZk9k`yY!c^I)#sg$ij=I9|VP%8j_TW0jpd*A{HZJw(O zxynAs_EvD_S#!mb+)S*_sKEtgc^hQrB(B5XnNl?Z%LVhv+6Tv*{llzMCt8n}bJra$ zEobjw62tb{B3e%ua1DO0*cT#GtQzQQ`5(fRM)apu^UNx>MX;6itk%-TuBwZLYChX6 zR9{2++Y%*FO^(xEN0+$n6xtX-j@5tLzb{oi?tsmX%>`?r zt(MghXYIiaw(zxK9ZJ#JXzvu(>JG17ps%X3U(nQ8|F95$2XUY+2w-fNC9ES+JC5Gj zRM{#@siz`i5iSPTF2gW}G&I;P_4^m~f5oWl~QSfl}_Y{!2d3XZF;%l+doe4GU& ziBhQn(U2>()bt-O$!mfnzKf-w1dFy$e_Ui(h&R;@zY*v>V36^F$dK~C@_k1%;i;o# zHB=1Kaj!YdNaeg9cbmvy{!1hDz=1xPPiJulgw8(85QE=ELId6ekYP4%Y)+4t0>!nJ z_v~{6D*9q(X6Fx@^;VHv7$TDOE@^GWbDeDlmH%<85`5Qc9b&eppns%2r!Ng?@h-jj z`ezs(v=^q11`swW?Tas|p?q=aIG!1^Uv_G4>-H%ftQbNf!WuXzBjOze}n86-go;k$$H~?;tK!WgpvG$I^ zxpw=Ocd~*N+qP}nwr$&3S+Q*!E4FRhwr!{LoM-RueNK1PdwTa{I$^LP7-xRtve&PFWw^C84ZH8lQ7hmC^8A}3BzFJ!HB_J0d2*o zGZ2LZobc*PW$E#5mYL{;(0UXgI%z0_$?o=0kaZKXEGc%3=DunV1T`qrL^s8RwLFX_ zuR`tpTQF%)f(>OlyJY>AvOG307F1rmIqe0ozTsbzyvh0>rZ8wahnx#j@V7UnKQ2T% zeBR~IQND;}Qwp25a&QF*;%5>eVq}__7APz3r&&W3?>%5*9{|8t0VCA*JoOg)aXiXr zHo1wY9>GVVYkY!?a9@Bp*`#M9F5sc&igkA!*<^JvE|z?^PAzSOus9G294?wI}A5i(eRZq%w&|6Ql(2U*ju8|9`^%k2>LhhMkFwfsn@n_Lal20cZ8nCTz1TlOBBB~+D;S-ODiNu?MjscI0QXrq;Kwrqhk})iQf;!#Qgs9ws955Dzzj~5fO}mB zhxIKr-eD~ubfDf}|6x3b%M=WCb(h(VlY_j9nuF}*t;!~U{LGG&2nzT|AwzJssyJLBxqO&PJSTKb;Qn4n?+Knl@6g|%AG0KN%5Y{Og> z$Q5m|)mQjuQU6)qI`V=vPMAa4&;j_Rl`4&DPq%hZVwA@&*|OLBuW_e&0w}^@Ru5t; z>kh1ub4y(=o^IqCr*lrRkISX-u`TYv`292 zurWE<-6hO5uqM)%`9m0I8=}1i*|G0PZ>Ha?-MrT*rs8Qe++q5!_mEyNMwP^h~PR5ZH^<1FF!S|nMB^u5TnB!*`c zm9a7k<5(}hABl&v2E`bVkAO?NwaWk1y7aGVcrFYJzv?&dTi@ea|96(~|J3sTIk@@H zKREp3ne&eV<{6v40lJ2SCfR*l5`g&c)(cFcFr@||f-pV{31S><(?pvCNQd*dPoOHX zYt(Bca3Y@H(E{Tf$))(n35ULk=c(A)?2aoppU*E3oWH59j;F8r`UJ5dZZRM@l=htq z3U6YAhM-b|yoWVo`+z|A0*`L=hH5ylH}wJfGKRL4g_E0HS`0Ixa-axw%NC-`4aXt` zc2XLzR^;LAXqlb@$88j7|_|`41x7C)pSfxt) zb1t8$A=s5saeUBQq;bwQrBnN*Hkzo9x*-DApCW^DwtF4EC&knv@mEeyEQGSrR6b+a z`p$DsxheNeg^M?D`JSnRoJ`H$V!EVKJ5D9`5Ybq6+>_VjkAEKRL>)9tbPV4aWzKKZ zU@eeE{LqOTqFBu$W`)B28p0YIfGA9*7~3nQBf1R);>f+0o8DF?W#qufqO;O1eU`7C zh?9~$v7u9{9PG7=D(2No zKK^rb4|}XT*VR4uMk0tHkS8?C-fn&Qap`*Hd9|7BWApLA`dj54p%>*i4?SK!8WLfb z;fI(QolycleqVocKsbXywb8PjQJiz&c|e4?)L(v1QIG~N;Pf60A;tasaVcEb{l+u8 zu{Tgz$P>gf&3W!JOjF^9AT#Y`X~{x&wPrf8*QIpVX%R~|K>@79?Zi9QLANkVF5^N< zmhCKzd!>g#sB7k!O}f6@>S76U5ne~_(JVYWKP z=!*;P0SM;wMZl}L3$Z@av(k@O@Hn%{P%6VKD((T57KXQUq1lNzr|bLBCwY?^qC*@c zSz@ueHT6+1%t-t5U#87IH=`++TSkWIA_W@#svttkm!hFVxacq(qOy8 z%kvB{FVTZH1j;eiO#P4ma(bynH|-U+q-s#?Gqms%XmwaL(JJ(g;y|%((mP1`L;q5- zMyl0!Jy>sEj4naW1(SS@1D!8(N=HS8XZ{r!myePN|7rWF_(P?oU++nN4SSAce+OO7icJ;zs z&~RBr3T~}G)M?yaS5=-=c|+V*$y!kMSDd$p-_soQy#PKt6Qg#p@5A(kgLy}etGO^Z z?lku8_=7!VE@pi){jJaflg*lQ1*Z$0(iHp1UF~rBISsz2JwB%PH3zCQ>|88mDnVb* zhsL_Bh{L=SbtLYLaMFt0@UqJeLZ3%iEtpmleeN2^g<+e1N>s808T-Nket`*aZ*WU~ zBRQC1u%GpEWe!M1!YoRxvk5|3gIk0q1WdkQ59@Q1OYvcZU+^?x(bmigS6L1sHbSTBbRZ#w3|?st z><0v>kRw7x9($plSVWLrnEuuVXYTe-{c}+e-W}7RFsPlqK0~d1%-QB`$JSvW0lw=gLHtTllq@pqn!|M?;Y<>^j z2o0^s3Cc964``6u++w=`sq{rB%^Tx2wFFn;G{hdY?#stCl&LV8L}}Q7gzQu|EG@ZE zi3=8Cm(IPO@0UQ897m92X>g3GiOADCgVqEfU1cb2UV}|s6R4In@@`MO{ zgj)sY#XF6+73~+ShF~GCp$a`e&`9FH`jsYP~gNX`e zIH7n3CwB91CP@|DNkkU5IhU>pT4Ob?QECpb&s-w!3-YI!CqB4D>yj^R_;3P<4-@mj zF|U+&Z@;&23!%0)(DRCWf|7DHtueiAVbJT8t@AubV#yjl)cNf?{lb-&*xe66m zzWc>U-0{mde!`Mw>Z3Y8i~!eB;1HmZ$?_250G0W@vzzms!WfeV_rkVz3&ptbvR=sg z8`cUG2y>a1Z^tv+G8|E-u6TKW{aEfs#ARN8kRRaw`Q*L)o$s{04KG+hnaHFGH8yel z8~2uO#{%s!GRdNOW!1Ra<0MN@Eu;Ve_il#oc*-j#rU<8yUe={0Y2Zc3Jk>ju{x`l` zRl;;ffN3h;L^zp@=nkE9a448KRw2cBq?DM7ePx3ji5KVaccQ@wq&J!2jM|n_iI+BI zNs$5}g@G*Ex|oRw9CF{-Arz6}wY{2pLAn%Q)|9_}k#{!ePXZQV2XBpu?S}(7`*_RK zl(l>YP_EBjJ(C<9MHG3?mSJH-tgTGa8|u-)tKycZfkrCOW+xLc+3exS_enz9We$CMYJviRY)-&`qs4Ko>&MI48u)MGa#Om@6ZtyyYFo;XWa`Qz_*4>J1?mJ`E-lmL!=b=}=heM29+TWluKCbG&syf$_%-NE$A@kU4}mMzOTuQH&e0+c z3%@xxI}uxFvtb7NJ%dh8V;#?rv-Vh>8LL~{8!jNK^aJ$aDj6f>xj%yl9uKFt42ISC zS@#Xr5-s<~9%PU>xHu+QX;t%qgQhxi_FgB_LNxdVdw@Wqm5$Zq=z}CFP-+Tx>66fl zK5_U4!n~}MdlA89iMjd^`WPO>ubQO3f63Hy!PIk8LUSmn-+Lq~Ub+G4S#u{LFoG^> zzlwhmx%F4O?KB{l(;pwna^9hc%CNhiyJ@4FxK}!AUR2()rAQ#4AUkbD&Q>_+Z|c8KqH z*CM8ZnLp)22Qr3LGR&!*QU2|bBNw%b+nvDYY#fPJX&A=liy1)N>cGT8q0J(!n;e|7 zCGiFNpW#*9gIWIip3pk^w>9yfgIS9In4x)&`j*6&1Ww>#5Ib-@B8*Z2;BQIH&FNgb zq}bRkFMMd-ZE_<=fDJL_fuMIu|BV4&*puXHYU(rZ++t-%~N%gqNp zLUV)Gn6BvMoiPHo4CRfz9cH``vtm(xxheutEURl!gLrE@P?EVZ@7nZHEw5+;y zNkS(s1wt)64j3M)``^P>TVf*%c#*dm@kin*Mtgb*#`y_9jiMOQku(a7#tP)ZB(d8= z94qpKU|UvE!EGN|&@8f-Bui80L&BC7K}nHX4uuA;>zRL!0DFB;A)XW{#ten)VZ~p0 zw+|s|CGf%{O8 zf>vT#_WCn;TYOQb7N~!RmLGVquGP%k>i6BuhzyA&=ejz$;6j(vacOK%Roh4Be(^fc zb8*qr`d2`Zi-QDtlv&w&UX~t}I+AFY&lxw!@i@PV*|%!Ys87k|qgHclRO#ssm-bLD z)x%otAVnU*$aW7Y1nTLdo0fXdet;dZPaKffdH!C-MXPe?4DjvIl{-Wl?WcHIzD42B z%oe~d+IMN?mE-+=Q&qlBo*=2No#PFJT6ULg*OFGXO)&vlIpdbr$*j;_PJmTwvs=D{ zaQSVeHfj5xsd6{hGSK*z#Q5*e#eeUn{pVzsvbF839MUhEv*YkgK?W}$)WqZ#hUJVA zyVe{@DY^V{Z`y;=ODb!srv5JDJjNUUn>yZ6x7BVuLi&W*=`7F7mMQniwTtX7ULU}c z-Owl|95lI`>EC{SVR8IvwPDK0mQbtRE_b*jb;s~mMlj2 z+%_)y-3EX_3wK;Y)*KYw-ldl<@AS58+6qQkyoX$1&-sMTaus5O{Yw1x9YJl|E;^yC zM5Edl$^7P%B?7pGv#LijC0i`RI`(lscLn}?k=yH(Ep&|0EIkVCBp(;gb@)fTHaBkm^y}WUDIr|6AUi7!Gx#5+q4wT>* z30{@1lC$<+y+_|IX<$F1!ootGm88w+q^WXE41m%pa2S>1@96BoRnaUQ??b|d<&aKUQr+R*ZQhZD?YdXzyqk@gx{EFP)u6H+^l%3X{aFB!X~U^`h+ zyTV&rvLUs1+&b|RESu?0zx0|9>-EqrSNrHqh}&k_bAHP}t8h9Up{?}e;@F~)u`n5O z&j8J^$A8(R{Ob-6OV}U&%abws-v;)7ZkPN+23sFMl7mWiev$Ig6w1sc5HKT^@(~vR z2=IIJU02&D&kxjucSJo?6OsKx2^-^BEQpYblg=|UGr1j2TueTWuBLPWEZhnVVV`<%L)9q=g6K!i+&HrZ#$qy089JqnWJ5N%rVbCJg3AwP zLyID)6}i`+KNETlhqC9C&U3(Jm5E3xou{S6VWCdsVWs%P;Uo}k(~e7q^7s;Iq!VqF zk|qY7MQ5Qp?${(z$A5^+#)vbSj!JIzj3(j^dlj04s=rRg!e7H29eZXu8GWab`U;K4 z)94g)VEwj^m9{EW9o_1Np?8EbCW5>Q?F)uy`v8;q-fF{7k_Ep!1-QI{tJHddK7gzH zGGu{B9Aef`wd1bo3e_BO!*n%MlIzwsfK8(`()7Eb`dsRd7D+>(q2MSy2ectu{TCa6 zzmV1H3BLVnwtDd2zPXwI`RdgCE4B7>odnvP@t6gT&c+bw*qEuizLi%&Y)k;rcsB13OFd( z7WCa($CO!45j%{Ofm!CO$?l1ncVEbz6oxQy*o_PBkS`L8iHnVGr)R(!mUY@``f<7k z6nme3nZ0>n8`WgdjpHB@ZDyc>||z&no7Y z{A&V;JCiCI7+4M8okWsapE%Wz)W!hgTY1u5DVRs9I^Tmw)M{HYpP&bvs0Tom7s8e? zQ9fbN(}`ZkX=Dr*iEvnRTzi(XU98FY`eXVZr%Wm*(UB{vJ<3{jv#h0o>Cqeig{9cD zj798k`Fr`dSz`GoOJje38MD#bYiX=rQ&jx`+%1@|hqv-`E2&o&iUT3nu1;qY+k6ga0wJu~qNkr3Qq`^_ z08_2TtkrxsDU?Exel=PD0Z_1R?@tYC97>x7da!LBxq6}V?12Oozj+=Dj4}_Q4 zPA@z4GG$c;7opavXo+7eI-Wz(Z1S5BT)Ke_XwJg*RY4?|t8D&p(2!47^Kz^;7JJ{> z-pyh%cSuOm<&4d#C(5n{m7&V|6icR?ar)F_73}UH5c>UuKTuu~SIXJZ8Qu$1{4_{d z7;fHw4(N4yY@9WCa`rnNQlm>CxehlhD?>>($T*Z&PWi{SA@}bk&6(ISe1%HY%>Aeq z!0s+E=|(|`!xYqr3JP?%r4#d%aLF=i*?b07(fx>8KVmYAIwSxAL@+h)jQKH^GDHw# zAz2a=y~9-@9oHdc9aiB3!YT3z8DWUT)6K-wJM5E}_#WE+(_F{XFXga9EdRIG0XjFT zmIP!=gmE0`1MN0eq_GCM!EI`DB&W#iB8Ht#!sowqfB(`ir-vA2oc|~0SpPqmGl1_G zEUX}iqY^vu+vrE11sqZwbQ$Qn2DDoKog+r|48Q|ne*yfb+QGv7kmoRq^V_}cvTEzE znhalE00E6Ao&7*Bu@?0Xh6+_$WqPxI-l$x}qp@1Y(Db>R#d%Z$#!D};bNLU}r~+A! z?E#H&Jcn$UUNJ}7)9=a(_YA?aAo}nzJWy38KsMm4a)RzjQr(cARcWqX%GEI6{q7Cl zu{O{3NZqnL&eKzKQYg1G1~?-q-SPzcY>4G0_eaqn6fmA~E5WL&AYzks zhQLTrASa7ONxE8tJ*p*(7E!VLk1&!&^!4%kQcn7%{!+TcGe+By>ZF53tgat{bi43? zkRPE|iy2Vpp9)g^)QFg=ZlC@Jbh_>5533#61{`-uP{d)J+ZyK-L4_Km>?%t~J;NIi zyY^$|jBKf2LPg8wfNHrgdJ2qskdPyh_|&3(0_^T+1>7W@vb9>aUO;74zeFz`F_=Uh zWBmXE=a{l3eT~Nr;l&z=m4=7xk`_ruvWi&-7Q6hg@xMR@;URGKFmUzvd1oX()iz!K zhK^hIFX+I(p%a5_3Hcj3sDDBis`($#WhMSs=&(+Ds@A?QO_zUL=-B=V-9JBf{Sbk2 zegbdL2}rFx0;udR_pyfoPl}emv|A^;s)7 z8Fh|aZEt5!(b)hvJHG(FWy`I3{hK)R9g51A=F2@2f72)9Mepuvc8PngEOTy2VW~^4 zGPWiLVqM}EdV!Va7oxf#QWvUmU#b3>ZP|jjM{=MmY#?2r+Wb)6bp86FZL70CdTiWr z673U5i25!sM1{knVx(Lfdm<=z6vs%TXx(s~@)9W*38twz!;80xF1YcFgQTz0{=^n0 zW@A?472}(d^u}h7d9F|uHIvc=IwN_*j-n{5&)u+W;$DB^luQ*STmm+h6mgpbpV{CE z_*na~*YDs1j|~$sT%nkGK%wldi8q$mS&6zU&ie|Jjh0L5_&+Zi)75RjkE2js>QEQ- zo+)d9p}otOW?yi_G>Gc7^$!(p67Wm4T`JZs$k%fOPi9_>GG%7eZ!wsD)SLA+j(CdP zk*v7*Ttk<4ePTz_8Y_s|M#ufeB0cf$1a7p4F#SEN*`ppdbJ%Mk+$fxsXr$W%Gs6{d z_X4&u6i201pll>fKwC?*O`sl31Dhjg7}?pZ#)U)Pascd9d~f$8{I5Cgf63Hh=apU3 zw@lst+g}Fke-l%v{I{{nVsW0K$`F^JO|<901)bSR^H|IuNg5FUmdiH+t%v_GYA-qjrfx$AmX=+vw+89N zmR!p3xa!v@^DvW|X}_B14g(zyvLcB*w4iVQOj zTA{(>vJzt0kFw%aI86s@EdnSRW=5G9FCD9n9?@s>@l_igaZ}wNKjWDhG7~lS1pP% z)S3|C8bjR+(re@}5?$EcY4~VuX9L16?B05a>`BiF*LJ+TQC?&R(&gD2y>5QJ3 zP%fEtG@+h;y2~@XX^E?zl;(&sCVFqCuqX<_2cOa*y(cz8C--|Sa_L8wVh&sS@~7GI zFSJqJv?^}AFy5Jl;L6coc^=IosFnOr4y|%>+yHQeEMjELL2=WZ5%8^mBIZxPV-gbmZt#ZXYDS(>zQ9*RyE@a=tL}0PG_GZ>LilgEVzRq`D)ujB*CLs3nSY^ej%CW z7+oOl^UMYhzXyy_;=lcf_vQv=w*zM93)T8b$%QwJX+3N_E3Xlx{2FqOf8Ql+ip7tP zv>_d5Nk;P8WKWvAmx5Q?BM`doyKcr7$S^K?%KErBGW&!)ffvEPKI^ar_@C=GDOcoK z4BygN`#p{;{BM=A6`k~*j1_J4?HtW)o&Ev7%9z5p;Q}{z9GW;3>UKSA^{T=Nuc4q})KB*Lp(q zl<}(yR+I5WTo^5yL8Ymi)&N8xGCG5qFn)8L6?)~Ec2J>hU2)>m7t2IB^UQg7#++; z&;>oxreCX^Gxt!5dofWx{xN}f(RDK+6lKQv;LBB=tBLCYb>a4EALpRH9V`P-D&GJ_ z-@#lYEoRire!<>6@ayxQ;%ud<>8HPJ{WQo}&=tZknQw-5kkPc9+oQp;_Taccl_y7U%gGgAa1A+9CHB7MIc3GG*S;zJs~lcw6%nQ~>@`rO2u z$2HGMQJHEZq-#@n`q|xU>&3}jr47W=o``pr{`G#G=EBeR!#~dog7BCaopA|mAlz0^ z^m3+7xBj*ZZE8^Rw(yGQ%+KIuTtjDf9_dObF7}pa{V_rM5oTxuoEQ>uwhf+8E9jw! zzj4u%)UV{~(<)daSjHA)qF|)jFfR232T1xZzRbOmHKAS{S3`Gt(Kq!&j0)HGF6`-y zHi0WKXr_{}WtN@mF0M8FmvB%rfV#xBpcq#!UH|N|7qO|m7u~;-`MZ{xR>)CRR07v) z9ysu&LtP8}fjqi|19v+M+6H>9iJsXC0gFrrm6^%OaIcma5r3em$IVv? zvTbh0Nw@5XLE8JgxZx?FoOxGVib7FaD3vA;E#X(I4)C2X?d^U;Qap-T2VXXmv7(xY zhw$f^d^ghI=YJ6;t69G^_3xP@S{eWV)_+Ho{+6K*4M;bogVbMLT5RznfN^%g0RF&W z;&i^he}E^${Q!;sEsh7upCSdyK$i;c2uPq)wov-8iK(_RKx4Azj0}fhrD0yyP_brH z(PX{U>g+kwy5@Xhvvk?oc=?v?c(`vAXNHhv>Yl~^b@9IS<$dM))`h6^ez%kjQZ0nD zaGe$8<4OpEs`cDq@g>OpITy%V^4PTw_no~QP4nJ_Y14i+DBYa1DXUk z!r<#4C2jaZpf=2=yitk;#*j81*4hiP+h0K5VG2XfG3C(p!Q}->~fo_xQfUhuEBxYr56oWU8Rs9L(%l z{=oOqZtobtHD{8>FD5y^18s6A1Y~X`nR^ua9(7}^|MY@r{pJ7&SZBC;UF zl=kuX1Rpf*Mfzh}Z|SEP{Jy=YVtP`ataCzo6b9A)?8E+*&F>7gfb;|kjmo2&c`_fXzfgQymbbRQDEgVhSe6CGD0MCJWd{1l*h{KBL_|HGV8tRHg5~8jcLBR z?oufv%`PcwfYbPNk_47W@U;zp{e;+``Q@$+k$gu`?P}N{AoZLlu-|M)szZ* z0zPP0%0qB9-WyLhYG#fAG!5}B)Mk>Rn04gE@)aQi__<6)oe$lwMm?M;VOIhe9K&*4 zKh5w_O`;N~g&W2kxza&*8iMaK$c}6G&K9i1j*FhWRjU*X>=u;0h4w@^eCfqdCrpdu zHbO;WP8`%$n+wkBLDY#WFy0T`TW=p%exPSFn_&OYpBoSEP#jhPl!-^ z=IA^#_z6N147Tndp&v7<`^d}zK$cw6wKsP34rQwlQK_WV#0LhcGuK3Lzw%W!v>|%` zwsU(x_H;2X{`4$46->#SInJgg_oiO|mG#Aa{qqOD>^#(_g#J(G_MjzacA{YClY}!T z_B=EXQTmqzt*Sli$9>Srkw}Z32m@=2trujfCW6!PQZb>xbm1th#L+DhLRDSF@ zSrx?!92pNKlLB0~#{j~9{UTD7N1^$T4MfX3&+^)St}BJg=q3ddKOhwjZ_aj{F=zi! z=+^ZxQn#{73A)M<5$gGtDq;O>&3$ux!b#%72x#O5X5};Icc5RTaLtjiV_r9KsLn6- zwZ2P854{qEOzy7->+gYCg4XkS@fLg+ZQ7U9H<*Pv``#jr*aq1o*)s<+E#cFt>?yV& z3AX|$2pqq{U7cGrQ%5py)wM5s%KB~_0GDKm&pXoAi^o20f78H@3Z{9cyI0zp_=pqtzW-sb~W*Xk>yEVpsst)#C*yDL<*5$^Li~f0&Di87-dA>b0 z3F{{Al`i3yQkzrbXzg_snx4zXG+Uhb*dTh%1($hHKry^ff@-r5> zr2Ec4A<^DG-wu7E&V^4fM~8`8$&uTT5gdjJx+RrRjJz-98pM(d3R1?o-Oj)EaHyM! zcwYoZdVO_e6wXT1+&Yv(2^Bg_Qx>GYY}rf2?1(#EYIML}JANuNv!$$(^^CR$3Hqi~ zMLy`^oE)W!9(@1)ecS6AAkG1Vi!Vg>r?P7LW#$VeB4LVlULaZ;QdmZ$5`uvEtAEBI=i%ej zIpm3`#<8en1E>)Rt<5*-6*y0L1*Xk>^r^rD!x+ z$dLN=ISrTy#}ce$efd7j7h=7z#aY_za>MTorYV)~k7K?d>OY%1FR-BB<3aEcd$g4Ub;Ak&&bvd zS!lUpAjD4~6qD|XOT6`mC9PHjb1i_wdx131*x7ae`HXs-0#qkMsi;92RxJ?jVK#HD zdu5&>G|bZ*W*%op#!pb$YUb1zO`Pj}y`Rk&Kny=|a!7HjKMY~S6ouJU=K%}!+7XFj zYd|{Ch7bp{g;Cm8CO|+;V;1}~>QcII`up8x)uj&IBn-G7sEX{lxaqU(QChI3i2kS_ z(Y;Y|VNICxL`r(lJyG4tth7&xf@VL(64DO#1+ReRpy`+MW2Kvma@w;#I(En=;mPbU z#UvG#ihS>&Xc+BL8PglZY0XL=XcZd-cY$xDxFRv5Al^xnkX`-oOR3sC85DqlY^AFz z%BjW_{y40)#O}+x(@t3n7jC4Xkv`5_o)?Cdm_*GW0@{lSCMIKAg+8rnRkNwbtp0X! zga%l|51*>KsUVG!TyQIS;|fy|s|h2YMSxJ1h)s61fj**OZ}R=%cub%67jzp0Fl7Lw zE~N0ZoBaJ}E+Dk5TdhEp$*aS+tA@NTRH-U*{;VD)aQ+QNAs)J5vyd;`QpOOxhO9#= zwhNVRIBLfh$EWPsa+fykS$&zNp_*B#qa1Pv_|SaTe{39i*T)^TQG;^q0-KU;%3sw* zUzm2(>i1YEwY~-VLyJ3A%+9Ulez}CLz z5k25muZCAJg&T}!%b7*{ZDakY{y@m`;_O<(G?8$A_egve;#5~kPlEffV@YQUD<#9 z80tDY1xeVBUiO8xdLGFk4n6fwhd|AL!b(iF5KH!DqAeVgBJX!)SMv41Cid1B+jo@S zPmV%(;kADt+y}cti}TZJyd!>ykM;TMf7rvc*z~uUqJixZ{7KDp!s{u-si$3uIYPBH zf+RXrx8$eksl?`0iGYoin-<{^vN@f{OqFg}kQp^?t6{k8>E&Fjk(8ctj=!c|Emp`S zLew2Tm3$6{nF_|7nvFqgjY*P1e@-wg;m^8g7F<00?kt={;Lz448-ym@;wQ}{AHlRc zN*SG3TZNgX#BCT;ltf8yqFb4$ar+98?rA2Nj0>k*GLoQVu^v@%g#8hhUk2-nFCRg6 z$t(YArYl9N%*7TRUVzuKt&iF#5uPppMl`0ECm)bd4|8b2!Zc#XD1=%XrT{i#UM>7V zuO8f|5K4HyHTs!ZyD4Kc<~9h6E}uxgen98MIy+`+yo4cdOYpflXijA>vFFjuE5jU! z^axC!<3>t11+M1Ln4U0?BDW$eh46u>i9e^|LwAbRCyavjuso6PdZ$pg25Lwg|Fa-U zZ{Dz-Nw0{>pv9_>!n_y5T%^KEwBtNy<-A{}4%GD+jU48bjHSs!?csK>CbmSjH>%me$0+bw~nYoZ|u@ovJC8p5h0)1S@-x{Vg5I2w@6!v_UA=5QKX~%^sWKkSbQJbAClZWV`UkI-EY? zmC~1yunMX|vJz&C+WAWo; zq^Xy(`uJ-G?1n>vnSUOV+at(fB(NF{_u;j9x{19`mW+m_LMW;18D;aOu{R?5bdifb zCCT@(raT7mRf~k3`8XuxeJs$$T({tyy2M+jV4^SATz+&-{IH`3dUzj-b;fw3zSU0A zHhV@o@_W=O3M1z>!;MMq5|s3aS~+qbkGUey?HoEAgtbC)|83139!a521uK=w#*Y~> z;A(}^WnI&}rcQRVWg@yf-ZVHCfoJ@fS|-S{bti*~K8hv99T^oJKYSmFEANNP7~R=F zf5X5sO1Vr_MW5UmMdA+Bwl5v*)MkC+!dWmEqmy^`nsfV+l_T(Xgz*jjXQ-db{7-wfxI@dU=wd74>Jj zBh170^_IUE( zTtu4uN4h}+Vg<{Z#m3;AaY)swOc}RXL(|=?r)XOEQ)aros|ILiH)TKSO4j!C%>(+s zrcqyh_lqWeXAz!#SE=g1yNt~Ly=s-CyN#iUvyGvXxvkAVx{EOz5`BDdfm8GKH4jzC zlJl6T?M(RFfw_TvG^?n~G?HQ~mqA9V=Vk6YK+kf!Li{rj0zZ?!x0GEU4RyA%bOF|P z2?ot07<=VdB3IxK>kJ5S3+ZN6^1e0kcEmY%T}5e9Sp+gk(^UAnLEl>0Ow+o9>~zwS za!KT6vV5Bd8HnJ-7!XN{2aICeq))t|5#ln7i-AS1Q9aeU3V1vi}B{=y)bG*?h zSDB*;VDoEZXA(UD9O$t>K`%T(WssKec{E%d z#&*h7F^1u7tnB8$)cXEfk!3z!L~Z^)HKgy;`)}qT{&jka#!gOu`Jst8J2^WT|I_dw zGjhU0fFCMQ_Py(sT|^|G}+8e>z!0eMM}a~_EtM4Yp@E_{9CmCgmw3YU5N;)m32ItEHFGNULm$l&vXP*0mm1^_QXXmYuIy! zodX&#MpZZ1rBh464FJIopa>`4qssdOA*4q8;}*>4aomy_|yO4 zNMww^gP@H5KA*oCt4Pq4o##Uu`l@T{RiN?P4l|RJf67ZJ18a-H3kqo7?TcgXDM_V{ zZ&1^im66}{zK49q_PPPdhy9-Xil@&qhm_a`EcH%d?%ojzep`w{*#k>$ND-+I_tC5 z(xGjHTk>OQGQ!LH1?si+x^P(o+GsmgRo4+~r(${i38aFjH2pGa#$}_C8Y=CwISO8E ztf<8hG>a6=oa*f@Y6VV#!lobn4O7DyjU%i3^HLwd^2=9u%}gbkOstr8KR2Rf7rom# z9B&fWqM?2yW@FEVFCdi&z#^3Ny*mjiLJbletwDmSxDCJMb0Hw;XEj*sW@_A;cPr<_@G_XI9g?u4BP<^1T5!iy)S+PHt)3KL%UBJnNu^;`8d{murx6j zyocyuv8eQ7a)EDrEYdE`TI_rtHD15RMemh{O}Yq@d+TCl>(jsu@8dyqgGU1kI&_QsA~;DYw(hDV+S{f)=X~-=#o(hFLZ|MNE~CR-#fqm%Sysuz^@9wo#THu zA+i4Zv6KHh@c&?3<;@XM8R;|WutC3}P|y+tssD#KM7dHERAYhvJUnfd&y3Q^4FB!PdMly7Y=Mflb8hC1^xYgMXY) z(Jd`tkleu^dhXmJ>|^H-FyngOQS+gcHh9I_C6d&w7{1zRyLmc79oO>Hy~8ETB@w1L zbBi6b%xQ5fI*?#q=m8^W)};Z{tFy3`IjusQs0L~YG{|X^Uzy7?FU-41ZdjbtZ%m-( zD+J1*LfJG6gCnL|N%uOf%re&%tpv$Iml$4F@(0!+y~x#ll+b25#X=4_@+=sUSh~}9 zajW2o7;)i_RG;~t(>1M;OQw?H7~v`);QWN6l-E)R^LpWe@X@1g7n@PHNL#_@HDTy0 zBvIOx^?tdpPN4{iIi^C#2)G=0!@k6@R$;{QKW=2!v}8<{3QhX-$NaND*sjMRvz|*f>Dm$&T=DxcJP929?FcGncy$cdF-dE;O&nRy9^zes= zpxkp(&HqYyn2BT)IcKGMOEqDI-sC9FnB`O%T3iXjPcyU;I?zS!N3apLzyv|PsR`g5 z>T&{6knW+{l-%_Mft6FW12v6zE7|_}PNskJrJCng)?Bnr`d+>b|4Tk6w*)U7OB-=0 zl$zP39%u`1*IvV-z*=X$Xodd$@%|5@%;Wnn@#S!rWTCbnN5K^sX?^q7>9P8AU>?dd zuBo4v0}jH$63twvQD_Tv@gi*#X`tG38v*Os<`^SSse*Qqtt4KJ>zuolA%k&r8F2&X zJh?}+_zJM8ELwIYvl1 z^G#>L6kj?+$u$YB702fyclEcCsOMY?tVsp*CI6^yA5n<;Q%ZxBB;nUz?d!p7dO%R) zbU%ZuWpkMweS1KRAov#7dlj%0{VD8*OX`h@r+NcnDJJ^ z&MHkroD=-zSQD7Y53g_)+ab&)o7JDTGcNfo3AgI{V8$PR%bEF$yHP{W)1`fR=OKI{ z597bb-M&0pP4xw>9skRWwL(eC8CeP7RcIPZk|I9KUjmwgT5nnkf*@#7@!+Q?VH!{` zB->+34+}h(k}A3C+iG87^$bivLEtqX`s=9q28)H-@o2I^#2Ke6)7_X}Y7Qkpf9hl+ zv5@~>f8BHnH(b_@&HjGL9o91xwKG=yRt`S}t2vE@$<3KWMiG4n_+V}rT(TjTM@+rB`n z!$M8PC|}XRVU1J;ifD@mYBIN>+6PT`>or#eQWLAm#zn;DVf;2m{ZlSaMvPM?%Dxi? z*(|Kn)WfOljJ$U#{lJ2#q(h@Wz4^jgpi=ryiE1;+m|pI^Zb$8Miq((OR6k_{)MAWS zT%qc)M4`ZeTsLCe@ySCy{R(K@%(;(uK2e13#bx^JK;~qY*D9Tb*DyE<#DfCp|`TzOu2-5Y?1b8!nm@awiBS)I2wL zu*m{#eYWC{Mt?XdY5-~$F_xXu?r5p$PdCd?8nhYplc3Z*ml0Yd6q!eH_;U3~V|9}$ z4s}XQ1j3*&?LwZ$Q#%#VLM7E7k-*&?YKsBH<>* z$X6dtwki*dxdhzlHuztH>gtZw80{a^Qny)7YyOCmd}>jg?hM6cY|yh^cM80SO(>Hs zq1{O(Nz%9!d(CeoqyG54gR+rm?A|XWLvNaNe-@XwOMl*VN0*yTtTt0<_3S1bkWtY9 zCp>Vl$}eJe@3b~ZH5d~+XWS5bl3seQ)f6|TyWXaYR-?fAG!ohwFQpD9!p8cREv@oG zjl5O2xl`GevVOdcJU5=C!vJ(XNoBI*^>Ztby?z&SrfR(@M7ZFMn|#ZMQ|p>%WV9>W5Sb7$6HDBa4 z_zle0*C~OTB4j~UeY4@ENqXGu zLZMHP@1rOZQ9LQXgVkS0S-e_6c_@O~CqQ3{2g^O444l8UH}~jj3SGdSgjf!D%_(Oj zRLRe6KCCZgV|ISuOfMN^!-TK(9-WRo22mBVQa~kVnbW)CFOzniq2y`&NEcM;W1ET! zw(F|_INANA$Ji_zJuydJx6R_1)N>lWV}-LJZHE8Abk0wG9rZr+nwJ@8($jyt_`yXx z-4l)l*9gW@7t~iFDYKCiJgy|+pQFiF%;d6ny2T^Ug*S1@n|!9>a7iJyNpi!a9qMfI zq~&ztcp{zU;DrV^5x4Ap-eeVI z-rT`Y%1t;zh2$+w+L^sWbMmnCS+@p-TiWT!Vue0~+Rt5Fy4}QNmF`P=6Cbp7wj%)a z>E`&}RmB_R;lKlCmb2BY9q^Gu;uh^!0`@ZTST@bGAc%WoEVU{C4%+HA{idleyI_li zbD)lsZHMDTBXIEpX3V4lE?zW*{;LKU0##9B89cm zXAAPp5A0)oy1UsJufI+|SqC!frs&?PWQr^e(OSGb`-ITnYLuwrFem8@()51+Z<>d{ zXr_%BojLQD^OyqMzpYXH8`$&N+3C9elVmn1n_FP1png<3x7TUQ#NH1^5qS~SH)~a8 zB!2}C%!?K4lUAUSn(ob$NC9JCNi(OF8z*k8tU^X5#sX1AC5rg)$54Fi!^>-gR0=4( zU_wFkqK?^@#{Nu?N#jW>La*%5y{F`!sMCAdNg*p=VqfvLh*NW3{$Ns53pySCG=BkO-henO^!*icng$p?9-Tbi?A6<+mxDoxbc3}gOo$=SuQ3&RpExEMGjNDm zDTv*xb#jy6Thjg*JV?9E z@af)(K`qb`*D`T#<;U1eUV>~7n&QXRcsAlDNvjSp4@g^HPqSgbNs<_SRv&dSW`nbF zL;!R4Y5aqv_=1!g=}3cr3l*N!pr(!~$a5_{uGrwEN=e zbA~(3pP6*A>vnz5#Z}dS6M9a|9-euX?P(rFx2(JFggEh-!7?B4(|d7QBMAYvnh@ia zq@VRNugEr;GDG=Xgrm%uq3gXFtw~q@t|dd%d}iRD*71PLigs;s3z43_#F@i6?RZal z-3ME6dE}j%Q7gx^E`&qsT%P1ozS|It3_k)a$6_hxd(EFmop~KE7D;Kvv8yGb@>c0@ z8zlGW%Ue>GV#&l08%+Jwxd#JE+>uqH<*2hw4x;Ulvz$QI%mU$1{GlgnrY2b#`KZ4< zjo=ofZ^v&}9o3DE4pJ7h#?Gz6XXr=Q&-V)G$k5?;NLqeKFl=O$<~X7gRkkFW9Gd^8 z!kCBoK90~0^KI3|{}s3i9$c=zDzvwig2gdhq~v)y6mL}^`~e}43r5cp(EoiMIh#wg zC7YNjlGlosb-vo@UX8mBh!lO7NFbf4Y9rYw!N6>gQTmW)uUsp_en)HD18;nj*sbOX z+jPA+LzvV@-ARZ=P+>)@29|EbjC0t`INgUE{IbJkXLPFX^mMQ1TNUjH6ZQOSKY@@vrt++abL`k)x3h}uz=xI1OSEbuGF#s^CWm&$c)%`YjZplQ z$TFTcB3N6564YDl&Rb~8E7Rgmlf`RSpZg6--zyi#8t!uQ$1u!i$e&G^sue02LH-zm z4A@=!{&j~)zm;$<#BE+z+| zhlko4Qt&w#GXYpkrn9d0_S5hW@wu)XP;b(HjpJ?}GVic?njl7GJ}Kylk86|{+wg_~ zZr=X@7*;D$(I`7dEGS2=E$|75;Z-De^OxoO?Tq?a3Q@dkxhi$J9tC3rb;3x z`IY5go1CD|-8Z6NP0rt6)z`l{?77X3b1plSV0kbO>Bp7>e;k=tT zzry}}yT9Q0?bt4#vt1KNDULDglH0?p#wSGRtkk0bI)zeBXYhvXE?Z7FuaUUM&{nzT z=r3k8m0+~J2DdT`#VI4YW$|P+)u>*1-g)p&CBE5MaB)Rzfnjf)6a|oPyR6YsHCvI# z0_ljn-n@wv$Sk8;+MPsvJilghD(qE8@6PUuk#}i>!-WBHWj>_RE?2mFzQH(p=W#q7 ztO#gkyn4*A4_p#Hi_f|#fx$5hC$dTi@_|dzVz7(O?js9K!G|H%_n*5=hZ@5b7@`jB z4^l5aC$^p!X#3fM>r(%+>CjE==J3RuJi)8pc`hP}29H#!TR&FwJs}Ta6!S@z2zW_Pa zL8jJUxOe-AlT;_z4DfnJjcz{sD*4>f2oi{NJmDcBIgZdxC+|E?PQ#N-!Jec>P5O=M zB_F&mKq+D_x*(Mw0cBswVfr>qR-6H^4pKS^{ZLo%H)OXzWc$VIdF9#kw*TAa?7?$~ z8TiV!+rs|0uXO&tIseHL2UN`+zS3Jir0L_*M%EE<@BxSrx8n4W-;HUl z!Ss|77|ZI`)CShaN!Rm^uCL!?OZ%TH(kvjGA6^Q9BxP;9z>VK$OUW$Ey4ORX93|(NhsQdO@ z_%AUM`taGX68n;|GUH#P08f$MK*l3g$EE9q$_-|vp-@CB_CI-?}&^FBqc4us=OO&|S_i8>C z%uD*riQDqkP}PF4E}-p=>3s>6%e%y&$<&Y|0~E|bf#QUfmws-Wh6P!aFk{ty4X0x} z?dq9}_%qCL?D74aH7D-9ZQ?i)yMUVW8{_c1F;Vd5+{CRZA;5?jx}7(?W}_{&JJ4cd zrM4d^fr`V44sMeAaa=OM?^ZyRTwQ?@!O_-usikwFUFWK#9Nu`oYzeMVwv^dgZd-h` zB%M9bRwFJ5NvTUZ7ZcyT3t0{&tB{RQB~RKz-*R__VQbqZ_0xFqu&i>ef8qP9xY$g) z5P^f9+bqZwJllX=39qZnC=}c@n2_Wm8&ugrsG=%jWDJrVlu1MYv*;WJ|ARkz7AjOk zmkKJaM;wYGMwGu>g=p$J(pPt8^X%hK;JN515^cV8Lz6Fec6X%hf}2rCg|Ww^q&b-& zz|V9t-o_$A@HmrmHhM)nQ+(Qa)9Hxq%k_<)Ny-={01Zmfh{`Gd9K5;iPZS#Hvpv}XaThZ^^9iRcXdOMlmc)Q9#dgvJ zh@qF0aa;X(JY(fjqh@xe#!Jys8w^NyT0Ky5XJvda%h=kY)mO0RF*wT^MGB>Kxw3$i zr6SiaJH1|VEwZ#xx7`!L=}x?Ib$;nW>V!2=qhIln1-)`@gpH)>FbuZp`ZX?JPWXFt zf#o&49~vpJQkV~gtGhFNAG;$9B$Gnp-E$<7yXb+|b_W~##D^9>g$m`2@+%a`ma5iz z;JzfxS(?V$Gtq72JMtEBdYMeNT%E?dc~6}oN7wBkV>J;ljJ7Z|0GFA5373=*on2H- z%Uz{*652doxRj^w+6*@WE!@OOg(O}?sOs{%AXRBDz%cKyxE`zT+B-B4+^h;`noe|Ai?r#fLMq@uW_%bnp z6Vos}A6`_)I?V+@ru_))rM4X3rsiOs#+Gp`G9=c}Bm;$>Sx{&bOAJl`eUOpwZHZ%7 zZzhNbCr&^f|1BG30ko-3N-Uu?p`_3f5UNmS?~(ryAK36(YS(C-prfCZaNhW6+eBK3 z)3QK32fKo!i2Cy&OoP$`F>urK7d@K{q9CM3C4H6Pf+pBWJ=WgpZVbdDy_cefnu+#y z`l>=_&}&ge(~C3MIU@;_=ik*+0BLJAoYkVY-*hC zh0@vW1F3AC{|1M%8gJNui+K!hGqC;Q%BDQl0N1ftTCv&RG;!>J>K!UW-qHGD>jIQV z#sTH6(nkmA#0S9U(Tc=FmD<+eQBDtpJNKZ||qwav!B7Yr}JYe;4GTDQC zTrdUEI-<<|32idUU+qh-cPVS{T)XN%F*9x;t#f|)K#p1nS9CQm|B<(ggFJO6Td5QLdjktRSs&4kB^0c`8io9pV}i@w^obknh5hBgZTWn$%_h&TTfH?e z1-&-os6m-*E!LAaXO$ZZ4=ncV?Td>SiyPCoi}3alf~?bL;&^|zL^WO?4ER_a}0)a9L8fb z#$zl7JpDPm?NlG*8>0N4+{?kY65Hr`m$y%8Sc$f(SPa<7piS^cv7rTn=L@BaraINf z-$lXqrY{#{?+-BV50vi@K%Tb*kL{9JRnyj0bC}lCn=A=alQ~7HEps<&Y$05iCD9Lx zqV5#=oT(Ro{XOP!Ddikf;81LeY4?h3%P&;&p&Lg52qf^T^Z|?@&xepY(@BE!TiZHq zVT$fv4PfdH`qA@}8A4mu0;StsW%sfwiQeJvuHEg9;Vo*d$vy7Vvx3y>twy z`)m_tgRWCTDOi}m(5Sl%b#&FLQPVe{4AlY+jnZ$0+JFh1%u*uEEuZ1vai4(Qa5H@- zGgCZg2evv-1XVn5-PiL2?rghpRb)bH&3A55H;H!{*^xw$F$NMq(TyY%&bZbIxYo;{ zohA`y8fOPe;0>h%hel~8m^BZ8D$751LwjMBG+t5$b?Jas?PVk$w+p;3cWx#@7|IT_ zOjb8IPkdfvJ3frsk@UF~M$>Z48p5sa=n z+DjX$`@PRCK)enrR!W`PuW`JgJy;CW7!R926>6atYb@*|1S(2zOS7_)x7To^A)e57 zGIs--9e7BTa#INHfy)O}fN1&q{(3<_mdn6;`6AsIQ@2E>$)#Z-3<>0Lo9JqCTfK93RE>+5Xwx?4$z5pTWmHJRV~E+RUv z#uf$d{>k!(RR1bxMt(I)h87lX^Hl{6!8Z2c~M56Um4ugnKMns8_3 zCla+cK;7?Jb*cte)0D)PA2uGp9*Vea#0nj5A=-gGBkPA4{hIK zrLrx>G+ZI%>>EJOmNs$aLutngZIdIv+-unOQa%Q+mgOAIr1Mw4fp8xTcKQ}EUA@M1 z?zFhgy}+g1>XRjPBE8K3XR-umGG+UF=-GjDQk-+b0s9&PgX=>3e^vwqUjsN_c`QSpbF+zy z6fAt8RojNpqx>^yYmBCn#L=Pt%u*0CbB>e(jdeyVO3%tqg1I5M-CtQO3?0juAp>8d zH||ECUG^y%&-bsdGT+qNCGkTffy&4Qqi6cmfugt|7$e=5!?)XR*JB%M-v{ zQI~}Ls8U?K{iM~Y$y9%(4HSj5Sn)YvHzk0 zc=@J~Op?|QV{}qhuNDQ^--j23qe0**Vmq7BNM`6y6K0AkmP;5uUC39KTZW_xdl;_e z(v4H?rmAgv<#ZlyoDNeZNShY=>Qg`3bY*NTZn4(%4M6u#fsc+o4!H6jI21?0n6$uB z-20O4^y~Dld1j+>;)uF{%CsIA?YkQpE&k2__^%rengvYB{I9_}(yy#`hJS0n3j9aT zsQrI6Smf8tFzFDuYL~R#+r%_kPN-~S8@;Yq8P_m9OK!qU@wbWKnZ1%&^au$hs?oev zps9Q~_kmyJ3i71Lh|vTlf3sn0*Z~ z2-q_oN#Iaa?p+%&qscu4@fbPbnf!3TjHZ z5>$9uI@B_x(Esk?nO7$g7?@LxCdLvnLL40I7xyQk4u`vwq=faW8D{Dp*4Nw zqO&J!)muIXalWaHGAwsZB#p11g(N|)_3XTGF>Ilc%hCY`a?_6^jd>!mggpB+!BVA7 z_)roV&6gh%A>d#rqJHpf?={C&YUVa`>AQa5TcBgKqBk_D$RC|{=Y=|zAt+``6=m>f zKQmWx4osE51W{+El z=*i(F;9M6LcKO*QoWykn0^jtZV)h;K;T^2`5x3b6)=U1$0;%SwDYQ)3D|+VK#Wtw6 zUY@A1Qg`L*uYc{VjpL_w!F?^b@)t<`PZ#|^tX&fn%@zK#yOvPkmp}n=01*O_d-*1h zD2IqxKA_TrK6V_w#lKA66HO}?`hofxF!}V6?e);~gyxYh<*F1PnKHtCnd$zp-sb$c zHYJnwT~dcUfRRMeo;<=yvd|V?p|oW-@@uR{pFIMovZ=2-JQ9=L$Z;Lzc)fOAcWN~{ zVfC=^Y?xQ4+Ts<{XyLJ}l96rwn#=wxsG|kAg<6M{b`_`uP8jNUwEZ?><_ zoDZ*Kn9>UPc$$6BMVj%a>^NhAHGiTfWj5-&(&d_*6K9L!nrcjsotBu&N>TZc@^cxy6m@k~DS%(VR`1)k;ncFJQz8%QHoRVx%H~N)U@ul0+!@dMZQxQ$B+Kc-3 zAEM?;B`d%SmLMmcZLR&`EYvEw-8ZG0R`3RZXPU*vm(YwGASEZ-`@=5d412*NISVr0TP2mL-D-H-MAJUgvs^ zkBV_Cav`3XT`4&Q)tQRjv0v={1hh7=+47op^pRoF+_D3VRd=aKaee-Rz@+V8L3tkue3kN1^-71 zp)Y@!`glZiF7?<F zh;p~#@0+f+!vJ}kD?cQ2Aah1GTkMak)Vn?sCP+inIkf>OC+59$9ISVM#)rwN1tty}E$m6DPHwD^4RQ7%hftvry}( ztC0KL0%7Ziw$4d8Kb!gmA^`GfFge6+WB@(3 zJ|y!5J3dxSyNDb@RPS(>oK>DPX*OwwDHlY)=McKK?H=n5L^qjnC^3_SkYkP|TCGweRzX>>QBx!< z+0e8Fq$IGs7vU6B|JW9_$1t z+juQL+gf25NiqH4rlpt#9@4Zr8w^JzC3*-|?OtdH4*WY*T4+SdByKwwD4Ua&d7k{kiv%jfBKKZ33EOigz7joQZhQ|^dq@Nr<2LkzQ8$2lY;p|Pa@Wn~{Z$T_(kShTm-ZiU9x0zU znFoCZ!f34$B%5^SwVJG;{R&~1=+u1-=ho>oGD*|B$?Vn=`98n|W|8^E>?w;Tt24sB<>^98gye=4?Dk0h%kSP))ft0$2DE z0=j#TOZelOxr^hH&=7$>cgsb#S+M5*RiZPR{56Gf6;m$0o3i?6c|YmTiNypk?5sVw z9S=mSd1TmMlO#4xeQr^2hJu_TS!2?#rFt!AZM#pU5$Hu^A?P{S(I23i**CGX-x{)R z9ssaIpMO*P{N=4zlZ%Bc_f?Rbe0@OwJ*||0iJ`vvzv@^LcDFtU<6H*$db;E^uo@)!M_aHUToyrX3Qf##RH<_dux&|Tg+IBGtoF~ z@jNnE(s&|>@O>Xz#V{wG@&atp4m~CEtJll=fqrc39#GX&{yT#DG|EpAY50%!;(?=| zLk48yH_`}l{#r3B<`t)vS$K5}sCo~Scsm^*bACi|@=%n~93^)rX64<*nx9o@C^tph zK*7K~zkm7lW7BPZ%e7<$Rlc1(KW}H5!kJ3C%Hjrg@oz&MZN}Kas1$*y{-MX!4;v^h zV0O|75O0_O4$L-f_0_GUYFM5C$JTvx6_GQjv6QcbYfkuhHKw)sM`VtbDV2r74J9&) z>#Xzy-U<4g0s+3WjzcU*$?%e?RmC*5DVzfFS3qn@T&u{RAr4N*K{yti#gOT-*v{P1 zl38)fI?w)JH;7{j=Fins3?d;6?zKfNV-*m#ak`7hTupEJT^i^495~C#qT3}H_f+yV zf6BslTa(()u@HlMtv?_xA1k&ub^(~5zhco)FH+VE^+aB@E8bDvx59EVdFD#!(cj(i zHMblD)gwbmdthMZ)Bxk{(&dZYm8f z?`_sWv-fFl{zbEh&Fbb6T_rBO`YM6m;`PTmrWS=G62r4FIUZNQ%N%xvvHVvazM&Ke^xgeVn&pfKZs1AK@?H@>@Y{I^Xvq{h6gcNa#;+^2|3H9r z{0Q1$8(vYU2Zl17s&o(aamz_Wq+Xo}fgQ<9qE6*^$8UX70fSvl{AR~9vp(ncYIKaBxZjJ{*r9i_*oP(Mi3CF9~O>) zNLs_>o|KS8H1FSI;GY3Bob~2vC$~K><)0%5+;L(MAm{2}N!V2~hMwa(FEasN>vkXO!hLemf8O(}9J8*q@;YJrD{asZ&x)og=}R>@=DZGOi-HUMaR@e)*0o%40OjtB3uXO) zWh|h3DkxopvGBvM?b~3es75$zn?G$jos54_l5To_c<*!gcsi||Sg-^mUlbwo4SXEU zm!&pW(NtQ~kcDrz7*RDcLHJ;sJ7~<{u(_w&i^k`C=ikd$EhN+r;B&g@^EhnPze_nf zT{1&IQ1Z;;Df|!%Nv@ShO|U12z3aylaSEJt#>$5qPw@>8R|2DbyZJon3#|@RAh`EI z6RUvNCn<|n9W|zz(3093nLpf$?tjOe zV$i;UKrd~H%SLSI9Qmb+O}e;?a(l7+ZMH*OE^7K|pxwN_2+K&q(M50M(7(RIeNNiD ztX`|~!jOt3jR7VQvt}H!YoOu?1%E-sN>5a&J2pqm8OJW~4GOv}br8GAm{F|nuFu;A zH{QKHhx!^*f+Qv%J_tff0~TT$VjAIFOmH&u%V9A-CM>S&n&_)rQ*c!|4u!1J~FtXFoj@NqNPuy`J6C)&K9G*+op9ToO@ z-(XAkhKg?vuA_>_Q1(BXs!a5m_(BXCWJ~)MZuuMJXhr*q6NR%yad%4@Lw~qAiRlyX zw7p-`y^KJVj~zqD`B`BBbq0^Qe}+qhHcKKTiS61&HA^BTl{nj;kP?etet&`eG3U;k zBS_UIu1dZKN->ic;LCcwNT}ovSHkXtCxu+1HZN{ZEZ8a@EIR;#Nb?e%6?YXZC;AjN z!vP*8$ALj9XbFY0Q9?mhq2vmONMjaXooCESi5O%kn76EQ#-|Lg^yI{9K*XOFI$Y%v^#x zNL1MT}4lY3xK>ATA7#OtZ_4sbE(4UOFW_G z@8Rwy$jzq<;)3FPQ2ji3rVi6(>kl&+qMt-4AJG4bfQdnsdu3nMrpi~fsr$c!fbxdA z27g1r1PyCsk*|xKy%m>`I#VpnUM4g@(+JCISjKuWvH)JP;cSY0JfG-g3t?T|y0FDF zU!Lz(38mUNvJ1DevctfNd?lfH)(}s!N>kxz#tO6fN*EzQ8EnSX#$HGCb=Dtmd!WDl zo^r9Vm$QER0LxPl%L)sXf)_Z5iU%3q)mVTT+6xYmvIhd#J$0qEZZCKhxy}kB5d+Un z`t16}5Fvh6Z=BfTuXnR-=y0~i_OR}?_ToB@t4qxTNXimf6jC4BO-15G({I-0xvH^a zwaPAE4f5;Ps~H)L)P0UvJ{Ds7U~aZswZ;O-=fpF18s0Ut1j2R$Yo7wG5_( zJIH&cl^V2cJGmLi-yrR0b7D}a=rY0zttGgy<_)3&FDi6f z$_&BB46%z&kUHBEchVjYwM<>#6JJGBaHdDSBeD9PKhZ)fg}~oKe*}-?r!fUB;!dIA1RX;|Ll{HL^5v0pZ<0^*1-rhQ9_$kF{rpY+LD)Fs0zWaw zZ80RxD|VX>SSc7oSMQQ&)l?dvio0>W-pV;Zn{Lb>#LaHQkb@4BF%bc89R@o-Q{Yk| z;vnMa3WEDUmU|1wena~s|7-gZHHNQfRt;Yc*OOgO#qp2xEJz2kfeR{`Czos&(!79g zDsiz02$O`Yy*Zzu=!}UQi{~HT06KGjbaKj}HAbZGt8C8Hxu|HUT6UnV@cHB)$;Vy- zu~Q8v#$wcx1_dYUD36oky3c2u)cW4vbc>-hWnZv-`ll9F-f3cre^aiwdEXl?o zcUY#K#X4Z|RSC+dO4s<@^1o5{tD}qrcol$z2@|cARx)UF(4iFcDk#N)$(0sO7g%Q8 zriFJUOx{opZ~Z}^F@2W~+mHYIYs*Zk= zJX&Ma71X{NZ;#+7vG9bw!r>tjOOl}nnLgiOE^jZxz4{1~G6)>n66_kM`AgxBhO}o7 zBlgxDws#JfK!!cm+|O0FJY8lGt3()QrLs1w4Q8g(%GSumKU8Tiku!fdd(G3>QjC;Y zJeD-3-u#+;d2j8fZYL7Yc8VmsUJOPn`26P%i(H&miKbj%R_#_QQu33S&(L0>bdb?q z!(PXf3FFXM7vQOoGwQL%vXGvr*U;veD=X>kgz(g1oGhJ3?8fcv8_e7!+!jbAQc2Dp zP&evS;UnZW;e3n>q(rC{!4pz5o)O*^n>fGA#oQonAHrBuC^57yf@nYtQT8g(rD(oosEB1YE|qPEh6 zby}5=pPBE(;J7~2_I5N=eDmS?%(xQtWbRdYzo)SXms zZwbm|e*|2$gzC0e?jpe1U+JSSfmFg*r`IKghT@;2Hq#BWSL`aCC)sKZz^UE&m3qh-L01Dt9#pnq4+yGE) zuWaK}{NW?K?(^nCb3ArbiZGm0C2#X;FlyQ0xjtuO%pW%bFvkPVR*sPf-JzpTFlI51h3H^-W2}24|0}`&9Xwg{ucS z8Kwt~|62AE(P`6Par{E^=#V3uI;Bo-4puN(p1Z8xgvupXYp=aGCwaGC=V#~vtPJGsRf zsVJDmx8(N)qc%R9zyn#ROA00Zh$oSAH0QUEA&Olx(8N4O93dp@I8Nc)jp;QUj9;NY zz5gaM{|j^kmV2Y>zCcIwi=OEH?|{yK2b=^cYfK@)7eCo>!88`YYJ;sOrYWRuZq!%< zl`mGv&WEkH`xzfdfX{2eoab<2)TCaO^8un6^8}{Z{71e-2?5;gDj`WA;5RUT05JbL z0?TiA`qO0+{@iB(3Bf~+K&$mAe--2##@d9mVfiZ*P700q81Lfg=o`?~1 z6{Hp^F;t`y{>ZGcQPg3Lot!m~K^s#()~=@|luf^A?c~JQKN-}n=A2e8#NuB4o7pju?NCUXf!Z=&EU4t?oNkI%I_8(gWg}69L){?kuH=)$VP4Z zb|<}0-oav0iU%pVG2}rIU~LKRMgOa?YKl&LG;GJdW>1@QPjfc?M9YbKWnQs8 z`Bz9sCGX+Bp^7}DUn8i|aA=;@S!Bu*=tF{Z)28jF<0Zbt7SYL_4S|=*j8^kuf2eCg5SmJ;DNHF;*bu%mwVfpCSH}UC#h;Bm1c17 z<6@}m?xjhW^uBzTAV{GECh0w&_Nm0ey01hz{E(wzn^t<|5>J(Axx-Qynu6Li7^ht608aTVWg4a`~7#G4ZO_m4glsU(16{eJTVE>Q)+f(qp z-r|K}el3pmkR*`FRRRNKg`2>fAxpNqXbQa-$p+0ZMi)si1!OLxKfx^E)m`o-+N4ww zLo9s6uMCjRjBI>GUxg)AX#d!aA*t=IlHJq0rQ=07el?8gZIVoWVV?I(2$nOFlu-wm z7;D=Cep>GLNN~cdl2c34G*Dms3T4% z*zXGb*+kQ`r4DL=)zvEzX%XO&+%GcoBEMeNACi^19-hv<_rvZdNpLWN7wmucO|HLh zv^;)XW^mL!?^XTM21*XZ-vj0WaR14}#f3c4$3@c1yxXJaz9IB?MbCPP>8IlH6@9Mx z?Eu~r#@|GgKgAK#W66^klR!tLFC;8ISQ^g6bE%^xoS8$~QLDVXI*Arra&Xb>MxS5= zaE<;Vta5vSW`((Q#~9PCQ2i% z`tLL;&xg;16dX&Ljgw6lCz%GS9qW>lNy8r4Hs&*219=x`;gT#G+Oz7MMl?r~NtzS_ z)l06S`tod)>%?zz4N+lnNNWsI9Jf*p&6L(i3UB6XjIKd1Z6@$Pdv|h6*%CcHDn?v) zfwY8}(c8(BY*mz5Tr1UAcbxb(=parC8cJ(QR$E=He@hmT3Pgz|PIhV|rrG5uj)L)& zaP^(Gh-TV~7FaQa97+WqKudP*IHvBz8lDX-Awx9N{4`scXxj{e>13NQId3MV3_Y6C zP}0~7Yc2jito>tfEo`$c3dgpc8Qb=ZZQHhO+s2G-+qRv|*tT=>eEVH{?RR~3s@AEs zf22lL#@`-&clV{K(VpRKq^$vZyY_G!WoN_G4JZ+Yf?PjX(9BlJWZcN9Sc+CMKY1&P z)>v>D%j2<+>Z^;A*zu6+)9G?)esNjT0#xdKXi(jVRb73-;pTu)IaC+}u|7Cv(1BJ$ zLsh^~N<&$G#CMnhTlQd>a7Q~+wYFIsgHbIt__0}3oSiuR2jcH2{hNFXIib*!SY{m; zr^snZ(|E3a_L7t^L0xu-CxtvJVVcyowh092Kgxfa%$yJ~-*7767=kp?6LnVGQQd(z`F zg%_rz!WXJJ%57A>@^;D-nyc`T7t7QS_m{ey??k@}q`$C*7}Ld|ll1SbQq9n;tBwYl ziWHU**#aki*FRz4HH+PT|B6RL*QlU}jG9xuWAwHo!8)Z+I6xMS=WVcUJAvTIecz)b zKnCc5qFaZ2rG2AXU3L^(vAkK_xwJ0W716HF`{Xzq0*g(4r`O(E+{^GQ_ z84=h%#p1M-!y`cOj`$6mibwQ>q76GWbCPlcEHIZ=>*=5KckaCU^ksVjujlO)a_D&n zD_Ze{IAIGT)q|em(Le;sK>SQp2CEm>93g`lL=#IS+3BwYkz1zKQMfP2dDK~M^q+b@z%GF$OIYb7qKjFXK1=d z7riLjp6%p4cEAh*M1HIUg3u`LySbOYzv&4Q2Ll^fPiZT$U`o(KcL#I>Mv1!6wJ82& z`iuWUDESmFvu{XW&woLR+*i?4c7B3`qA&pfWdDa<>Yr^%)Is0QOvcveUma>n-P{gk z1of-^8N-~V{`W6Ejsq4wb@WlejF790TH#d0hy33ek}9GhRJEdF$Na{WUsgd z0`M5e9So`+_IM;U0!4c}IIp3$SP9CpSR7?>lClF+IGp1yow{WSNlImn@)ri4t(p$q zp69NDzZczae~xtlZdgCKgFJ|tFQEAe`=TeL>oJOMTE&BF@jtP^-00N;Ja6%At`_Wk z!^q*y+-xC?#ZY#=KYZfC;q9+~*?Rdx!tLtY;LY8bLEPV9u!Ty_M!^T&@Oy==_^J(v z3X~3ty6^6jykNxGUGHzc3qkUR%i23C4Iq=0_LsD|C#?8}WX?F;bHM&VPcvU_Ua%cr z*PgJ~%r>)C$gOM|S+!*@{iQuZNZrv@?Qp`qk!b7z^Bx*ySpR*4~JH^p$u2ESWw%!<#l#Sbv;4YW`_sVT>n(@N97_lL| z)#sN5DfdJ;bXL0nOK0Px#1bKC6Q;LO!Ce$sGvc+y$&J>Y;C-KFW$R%TQfX-pr}hHH zj;#u>+_J^cRI}1wyoD{3i#k*;GKtC}3r>B(aA0Q5!;aan$1Y7Y&u*FtAHNDQf{ zKdsdW;0o+m$jL})4C-M19Bs`QQd*58TZzkP^VVx!63RyM+);m?9}WT9Y6TjGOl0iQ z{70aPJa&bQ`6H)V7-zLpsbu9s*c@^p$g~`L4hs|9?{fLfGj2Dr3kQtwAIM;8H1#C? z@0)tBHVdH6VVwXi-6EeVDhjDU#T)wLR2^?9*%h0sBK?BA)^ z_lB44*dT6a^Cwk?iOyAw)O25 z>bQ?7rZU0fvhADu4=EPKayCnQu4=MkcNJIcv**k)1ks(Tg&cCK7_@~TbIR#?)l*Z~V+;`zF*`Iic2+{XX3GlDphqFRW<9gj`qL_$DukMYus}8gpN{A?daJ<7Olv zJ5u2$J>q)X-do9CCOGnZ(;jo}cn|y`Hxheeh|AX}>!_tak%NaMtatf9XG*E+(4QJH zT;?v@t2)JIE8k=OV8aMbp;TUeAADqVTwFT$Rw}qZnbP7Wo5Zj&<>g9~J?<78&y2mU zo#--Dd26<$+&6#ZhEp)v?aU}3&7vp{q5r3fqX=EakWeT-hpjuj`E~!f>tnfF9jQMLO zXphMNWnH+uT?qn3eQl6~3_J=lxNzB;c;hEZ@@;J_xCraOXUsGfLcy;bf;L~KM8D*P zjN(itYEjI2sya)_!QP_F`YGP-!#rbh%R&0_dpnP}dw&1OKkO<0O&C=`v?nA(rLtdp(K&7$wIsslk&84ip z7-cosQanliw&=(#drYj8sifbR6hR>kR)JDU@RY0`Cj2Q=8kHr=ov)ZL$r8%l%8!QR zh^>7+rTyP1M@!2~bXbA3_Hae!TF$d%A=@8B(3h&46Q{7R^d_UCb}U^r$+2aLDoAYM zB&&YWAkq-frD2<+mh#CwT~IV`B?+ZanX?k-Y^KIW64>(1a(p1KU;+Xk$oC^tvobVG zF_=R`{PXfe<74Y@`?DW{H}BK=Q2>ABd6}Z`-k441sG`?Q<@i@Y#QQjqM0fG?;zbJD zDz`eDjgRYYsE;m7YqV2D)S?W03VLWS@CSgx<%K?iD&l1yf8-&sMrZ~72Rxw5jo|gW?1*UKv2ukjg;!${!H$9 zBe^0;&o4yEXdDOfJ8sycUtSWVuKQ;j^+Ya@PG07>(Tt-84z+}rLzgbqzQZn>wQ3IV zM22H8wGM{U%nMpZnqBU`tuts5-GTrar0tetgLfqK!BHzVGEk!_vC<)$Jut052z#Mu zwz*d27AZ$PVN~z?m>bgLR9287-+XZn^WqrYU^mqcSCqRe8)LDUFNUx%8g4z+vT{Eh zi8Evcd!dd)-0A)z_7(T}q?%0a`7sZJCA@3-G2IBQx_e%w`1bQW_ycjrx6k{E&Q1I+ zQTq)WJKkfud(|fZnj}(?3^H#K;0f&C0?q(*?UBJ$r`q zg6A-`n}tr<+%L90>asCGyCTsvBZ z@&@*f#-#XTJPqJOxZi;F2$R?vU7O}==NjZY{oSj!&iM`fN=0}~mrrCgYr-&c3%MD& z>^#gNo>kQpMB47cVTQYlONC2QK{pXzV9!{EMt ze0@T`5x3IJ4&cHH zhYX4O?2O1_I227|AFtL0A-k!t!F~2xUL8_*7UWU_hh znus;f1%s)PbTnazY|j%iBp#}WZ1?Ls8J9n~Ypx;wn&!6QGU2NBqAK#ZM2r5c;~Z!?sO~oOP9x0O0AT!ai+utrt1Ee!HIU%D3%2bT}fAX zTe*hhSIjUDijvoevpWi^r81>xw-VlQ8UnGv>oeys^KC!wU;m@R_)gy$#1c!gBvo$ z4~Z~`{T;~odIvRvaugNhNvvgaX|gifg-wYI?&?OyB!p;f+!Zt5Y{F|2n799;GRt)h zAg=uBT)F=@JJ-LY5>1NoKaxp=FRGRR2VWy-dBBN!m~eN;m+wW6$OBtM8&@FU#=aD&nT?@;Bg>b_3K8$tBe_3Alpv?F zYG#4tgwSZvD}^2SB{*nCq8D=b2IJL$x6i2WTaJ92@C$D6v?mpmK~&Lg_?SE=^aDN1 zKR?L6`Or@{Uke{v%8D#a@0()7OHS;+wk>jQ4_JX8)MMf2Kp^pd={@_8%jJf`f*gu= zNlPIC1lr;*A(V*YG-(O!4dVg@J{MkLBV$?}Jm43e}@*=T7 zZL~>=wZsLo{u+PiBwI-eboouaeKZAh`f? zu>_51IvoB)9o-dO2~E^cY@tCsDl90$P}_s{fPgyrr|GEtv*uCEBXPGPKR- zLIJ&i*3zjSk_fvwUZN_#;b|kEvPV+U?_6_)q`;o6lWdo|D^FBZY=F5EG&MUh5fH^x z+le7XKgj|q`N?d(%3sUCXS@MZ1NYi9Xt{K{jAEc-iD#Orr6M6S#WHCunPk7y17%1E z5z?KE^;}t=eyq7%EL=3>aOKu+%8>CHkvD&!fGVFt{;dVQ&*dPQI51@`2(= zBOVp?SndIKR(%et_nKOSlYXU1#pJm`9s z3b7ZI)vq6%HXwkT#6IKS4B_%aM|O5c7K6&mR z4hhrz^zVN{@Be#w6aW95-2Wha|Nkb>|FB7o>y!E6>4$s+)d%E;fftbGucV3DA zMnXc0#-PoSz)UqTpR!r$t#H2q^djHC=o8D&3X?9rZ&`RXDaQX}dks)+hoZ;#TX4sX z^m1`F``)N4rC8L#BFh8Lj@<6;{LQ57WXRGK)B@O&;uI^rI0=foIdq(+f3$==CJc<)%6 z=~ZLLNN1~kkjKmRa@Ah{<+3{Ffo&A~(>x)6OvtqU$Ia8}hsJBJZzc4@VYB);m|K2s2oA^%s}2I(97r2fY>PhTz?lhK(;E2~?B5U2 zZi{4rWR=&Gz#gIR0A)O$%tzu|5;fyw`1GsO)7S2toU5_!_m4AJKY41A*%&57ryVP7 z^W%eu&WOrJt*~5FbQZ0II|mTe!b7Ox11GJapa}60n}ND(jpE&O7yG&W;ZKrO>;MAJ zwrNRY$q%aqQ!C9@j!0F?{C+zkTlONUIs1r|(Kro<3#lb0ntAJjv-bWc#x~Iq64D?t zuYgX&%|Ck~$E~qo%{!);{peB~542@z24<<#3$%1KQ=An-U%cBWTXbe?zMvMCNMNa$ z8V+CKKf(|ilZqnLUD{jJNNR@li7Ml(3 zw3f(p;TaNuJAFLoDOqSq%j$bM9nh+>BHK*Q7AxGEjOB8>v5Ku@>YIAsz{M)cVr4C3 z0K<{*SVmhYo55=&V{bJ$A_t7*0mzUE={*HdYEI=91jS;jsz6xp(1T0H3(Zmm!=%Be z&)&*3r*y;SOE;}%u%?6G*=8^Bp_8pQZYm=(7byc#F*1WrS_94@Ibcf#`w(wMt~oMU zXAAPZ)XK3j*l7z4u|BBKFcZEd8<#_B~>jyo? zF{)Hf(@LFJiOj1zd1o=U-s{9hX{i(aI>urvjxPh5#bcrEXcDrWh!sa1P2MnTqze9s zZ{w%A*Z6OuNj!oY&?sx7MyGje+Cig0gGghGq)9?=Bm&_NU>Y{OWEBBC4$>avh7eTy zt9b_q%A~WBPeRsYPX>HDmf&`Ac112>%tI^0mSL6N>^OENViGmWgU~@a-X)Nd1&o)1 z=PaQB8DlDNtbC-k2xGe|W?k8WXw z;$|8$?eZr1RgdPXsB`}qDX8DMzmJkhR06Y~h4SGDSTs+{(Kur^h8c!WD7#( zT^G-Sx{*nYn!kpqa`_cXD^we4#CC9O4fh^Kqi*;D_3yozhfmXy@n^19g8vcp{|_61 zs=1Syu$$dKrvWEf2P0#LAF8WC2Q7~3s zft9Rd7A(=$Whc$Kn*nG$m>k1AqP5kSzKTBmSiqH$k`ita5({zKR2P??t8h@UUHZv0 zFKTOzblgblFhMr(^Af;32i3nxB!+RwlF|*E_$E|3jh!QlFk!5PLXFKYDs3_IyvWLT z7^0_pc>rhMMY9g20ykD{Xf4orVpuv4$iq;TrB%FM+}uA~f)#qq(657c_Ha*{Un{~R zoetN$b)bh}S76pC9(T+jhd%yxJTOMg)PM7h8NzBwQbIu{7q!PS%@@<-jX-Ch+5IG^ zeDNdjnLj|F$5$x3bGYg7^ng1)Ao3vbLKzxqosPp-+eL(KM;t<>R`5RMg2b@l1|;zi z$g*2~%C&_LNdgxOVYzmV0U5WY_u@^1o`fC_@a8w>UYH$})EYfBxf@z)5?~c{o_Z&Q zRM3LBjrhg2>8!u-sdR`o5Y^#fbNQFJFw}WM83| ziYSA(^J>kP5@e~{zuuWYQ_K=xi1A8(LKw*c_1~GfW!>=!GeZYFc~WGwnEX&`N67&I`2S~J>R&P=4R<}1758s%&uAA+0s?|r0~-{zDiG*Z zG!Z2Bc7UOTUt+?bdxHf_zm_XqlDCp!*+sY5r?Xq77bZBeQO*j%hr@g2&k_pEGvB+B zkL|7+ogF!2tnWOT3YK*GNvRS(^4wRRyU)E>JS$?kU$?;lt&+O{-EMszU;W;^W@lzX znLk3YywqU77Gn87QbWGsdSheFUP?n^L38)_0jYb*P*%xUyeR!FnqE!;EEW$;Z`7Oa zejrfWNSM*xl&8 z&$qx!?|FNBqUFzq!XIRSAMjtQ1K*$s!$g1|d_Lv$A5yTsI{vz)>AK~8H9#l*L|Ay* ze!L$Vb+>8&J$?IFIdV+0lu_ufh-QR zb5e}X`2@1x#LbBcFMDHk3{1kw$8jo-o7krf%P5OM1KNd1ycN!C{KWfn+9EBM17AWFWgSxc6TZbkNo#}XeL@7V(zjI%Tr`x!H&>r zyLsOdB>^3pGxd?2qP7~8 zBNOG=8w$u}7W@LW+6W3|{$V$TV^`*|=}Ri9Qsz+=n*{}!G1OD-wB!t+)x}fkYMLn& ziL*$0_i3kMQ$x|%em&YPeTgq`@0-}}rKoWZo2|!-5i^C9ce^WSO2{#p01|><@ch_z z5G*)&8h61Ec&}OgMWAFZ99DS!JAmUxZ7J5U4oQW_hO#HOKr;8TZWyj+Qj)xIOf-$B zr^6_ckeHrl6skQ01vVk5-DwbCHeHpFj7aI*FrMgrFC8<8VuB`)*>Fz&Xc}|JN&|s0 zSDG%vX0_I-Udx?i=_#BV#C0s(W4ya+a60Ae)$nGe52;SttPa{p4!WtF5_A~O8X7%$ z(;|JVI)@j{HGBo9UJ*DprnI<;s)#x_&Jk~`P*U!2SH#n?Fo~fQe(65qnBqWEOJ^Q9 zjMyMOg87jc<61V;A`E%Be&0 z;yqGo>Z?;HP|JC}mWo-uLaK7PcGU!y`ou%|1gH7z0cLw;DlF%=zwaywar9(+dr*-$ zfz`5c!Qx51IAOb03QdO9(xFA0NNpp1w3E#6o{?nw?K^XuN-Ek~@q}}|cB)FANj`pi_ZIE>=Ct*oAVB+fdS)!XQ3hSlzE>siJEUle`S`SDy!f8 ze7qWEHl`S<6-~0=On6BUJn^JvLviQV{54_2v)*HIz6gp6&k;qxbKdYk5xWix8#pDf zohgs{s0m22WJeTaU|CYj>zkbIz80IMp;Ke8pb3g=ScOt+ZqZ5c6Z4W*YEdTNHST(Y z?{)2ON!gfHwv3^?ZEiH&D+_AF%hB(2J-2R}IYJZAh_yCa&9>$lC27*(#DY4a<@0>! z!3x3P6s?DwCVE}dC=c#S8zw9^B>)FPee2S?Q5Cga1PA)!{yJ}E9URJ^gB&U8BuK37 z{^s@K&|zdmBqX%8FsXSBL_pm`R0@}@(;8=^rQ11@y_pDGa8EDFT?)^h#c}nYXnQHy zygMB-Xx(z|(^c^WgPPQKvGn~h%_O;&jA4d%Wpi)wfZ$*R2J`(3_G+$?0|{gQAD&9o-}urV{0w}*l*+2w2fzyT_eXNv{}A6S@$ zXU!Hobl?aLj!5uKNqC`_sIbOSmmmmDI3tN8#z#i;R^4h~;r;_nfkaCpuIx{&@Q9Ld zgXTgZUY<-GNiA-1M^Z+UMC|sOAa!SD(^r+H1k;&jlE(@@a9rosD(<~nasFpGAy9hi zxYjAf0G6LX->nD|a4n27{6G$Vk6lJ>F>rZ~X_>(92bv7hiCYQ@@F39iycEuAu)Z9^ zx!*pff5bCTVka_{$M*r?N2k?O*IfwRwdNGOsy_t1Xn%vj6fGNw6iJNnT%)^YTSr? z#jbG-Io&Y~UBafM{K1G*H^A{<;cnHZ;F8)iAeCn}zE;N}_e%3e<`$2@ZE#JmE3_(^ ziuak@%n6TLDzsW2SWc$OfuBz@*erX+u#5=UC~eM* zO}PVnc@er~Aw1&g2ps0`*oz^65y5(Vw((!2YulvYb|o~1m?$pv8J$Qq z`M1KgP&LDrrNzH+Pn+Cul^c<0TA_XW3^fPX?^7?#qm*IYcszC1#Ya!&2b=Z%sZ}>RLxHw_dRO+sv(Pd;jiTlZSGST0&SWetIf2*>}=M?q5;IupxzZ-Aiwl z!L?v^M;et03}mu&3J+M!-KZ?hw&4vekL)Il)K1&5vV+~QZtlMvZ>)hWYWf?lu+=N; zw3%S-1|H7}Ihy744^vo`hu;kBny@OaDx4h6WsSCnNcDtVLf@IlG&GHU6MbI|ab*K6 zjKn*1T7X?t=^y?@w|n%=-AaX3hfYqO7`PdAJ)QqM0ja&T=BIGk+9=7>&5`zZ*c%1{ zf{n+|GAKja6>UW(?+~c@(eaFP+m)@nR0L9R3Oo66`^T}PT6f^u1E#6^uU`7OeWfFh zzsQPkq)(b%)4|>!_aIsURrTWiW)%}RsD0g=nge4Ic-D_hoEoEY3!`VLl&u>3!iy5e zkgaAym$6fq8MDZeX-75{<`wr7a%|bW`LiatKR*-t%+LZleh#W3PZj1B)XSF7Vmq+f zQS~6$vw)So>Mo}%%R2j&9bL1K0&8muYw3j=WD5n=W=N%7w)#&pRM18ekrvCQtU;A= z__O$D!HtUQ4)v8Qv9=8+s5>|G3?>!m%+ac%(~0M;4S0R#3yQXG8sspKB@&#KOzFc< zm;wVQ--^bwKGg9J;pM$sZ{O-!T4wN^GFE}L7Ss&PFa-(KZD$KJUK=&{!;N|8OkcxB z03fSWK{Vb9Z!oUnsypAAWgolSr#tt(k6ZCvU(@uv{iV0M^O{aw2EjD}b*d=)8(U;J zIL$F!?en!2-Hk2!w}_kA7WWR`^tDMxs5R_{4&D+_^Nc}7Lzh3-`|8s>5QbhyDuEsT zhNW(dz zPfvb5hb5#wH{dS?QA`^RVics?BuotrOf%dwo1Y(#pWpyi{7Qk8)QRc@4H8H45S9eo zCiL0j6+-igtcoJOSDnVay!2*`(bHM8)no};D!FbLO0G#NHmUp+9_xm3HkpQFdgT?3 zn==bU=I}%E0qJYi;fN}~*mEL{*0M{Z`c&9hDXy^>WQj-USu&1gNHEUXTU0DYo~MnY zI0~LCSzI#vycRzRWk6+vuI_31N#A@9l7YY~{y1DJQF>A;j_wxJ5+=*6 zvuR+HnE@ba++`nYMJ0Ig$s!R(Bb+0XekWrh5mP3s9bh7*w>eDc(PpeFaM8C#A94ww zo9m!;iNlIj%gxS}2*Re8^8KlufX2l1^*vfA{fr<(QViu}9%UY@Omy$x8T$5t``9rw zz-avHDjGnxoc<6He==~ILaqD_>MQ%Ua3ui2Hv4x_5rBn!Kk|aX5t<2yM^M)s*3bK% zMA58*7qgFf{jC|k!*vc^X=@$hx80of{hIW}E}p)=n({9>X7Ky4c0YTu zdt1+9XEka+F1dbmI!){uFgYwypKyp8?z_8Ms~{Y-QIswIQ~y765F$)pQW_b=dEC5a z;3S>hB0zny;t)GIEzi6BbpxRQ|0iku9}6gOIjisHAGFE#2j2Ma;llsB%%sd6oro2j zZEXHYe*a(pwRMowH~&}ZRVip&{$s0{SSXIYlCk_Ur&1LG?_8yQT0tn*^ov?q>5f-D zl-<|`%*B)h{!`Qk1wUZ+=UVwiemhC3925be{iFB0&hotaF;+YnnPc#?-n`6@P6nOS zXR)%>@0jbWf?EbXiX7MAV3x@Jb2Smm$S@z1z}9eLNVxcef4BzszM;swTPIAeRZ>D3 zd*2y={c1H{T1`A-{(d-VTAYm4(Wr>PC7Mu32I??Bx-&Z193{UyY-{k{U7jv(e|VnG zH(o*=?wVfuotjZHQ|YV|LX4(f!4ix7N|kn@JUp3U$v3C+UIGM;ZR-3T>oX(z{Rwz& zJ<@dyL0hz5-bIODzPIH>K2bJNh&d_{`mJ7j$Y<8P?0sHNsMygC_9bsl1rb{tw1LQ( z7F+9Q69lbxu@lpKe?Lnz`|fR66Y@^EzmtibmwCYVdK)HNKQ*#0L^oQr0v&05=tIv>w4IfU$(NP;7<~)&wpmjTbQ3;0WAr63T{Fo$ zh$^yg&dU(#Jmgcwzo;WOSK5_ZApZRmWQ>b$-XS!#OG;Sz1@fOw=%4B!YyjL1{UJJu z{{UbAJ%g}+tB(I52w48;tucI>Q>_wgC>op4X_2T>SyP8qgnwxj775eCib>XP8fD_l z2OG86uv+sc&1};Z;5$787BG3y3h<}LV{#3E`$X=;+sS!NlbUN}?48^Yyyx&7^IX64 z&b((exZgbg*wvhjDD$xztVRm@bcPJ*;N0dR*HnZ_a_xnJL-L7=dgI_G#H+NW9r0*_LBG8)m~eORO*4*$+oH%>Rg@XtGrE-WmLpyu>RIpfqC9r4;{+M&zl- zQ?jRcOR-sjuIn$LJn5;-91H94TQ853tKs*Q%AU^!7#bC1jbfOPVwIq}NcDk%IYec# zTghO%2Li&U6(63&=%>TXqRXncnGM%7sv{oKo2JWm?IB2`J;P`|rHyjIOos7xC}BOr ztFB!y$Jb9P^)&~d3PnO-(Apei(=6FBoVcJ5TqGPw3gS?nxM&oD(=IglXw0CE%4IW| z*8Q`3Cah9lnQc%%)L45@NRuZQki=R>`8v+QUlp%%wb9ziN>Q4( zmXwwtG)V4}(ngj{BY%zG1mz+DgH1a(0dbzJ&kTaNCxL0CCo%&*DZsi>L0F)VG`z<; zQB7@eA`%-AC@W}>l{12-J|YbJK3B4v;B`3?iKWv&L0OOGLNHR$#AyYai73Z!>7UiC z$}NhUNoJg@XS9&ev$M|y%#>J2Do31=<6jR3gtZ+)gOB2(s5fj!3Ve9wIK|ID)Humi z@aqlVT#lh)mk|o9dIuNOlIjpIyOmraNl?<*!fL+RB%*w?o^d892Yt@4S+BfNzFn+w zu~1A~LQN*1N}<;A)Sa9(tSakNoug>y?3+VE_87~-7DjP0Axc_ya>PZoN&(EQ#sTv_ zD;{O$M9$&lB`#pv0=@Zxz$=!Qg+xk+BEASSB0)oBl`(k;@4iOhX8%iPgi_}A=v3!a zEH-9|mkJ83Lp8XTQK2)UR;xUN68efPnoU`R9g;_M>y@3-^jteT!UCV?;dY@T{_l;3 z)2JX6=*;bu;D)d!(TtCIwZ99M@5bHgG^h^!651KZPV$gxnxwo&a5JwP_IMUHy#f^c zg)rS8jX8hKf<`DEJ@KI__!Cvx4!%V#NAM=Hfhp&CkP+k_P}}@3>_+hGekMGqd+9FN zYnsyd;I`3z=NH!%VKmP3tKfduolK%;6R-=@Qi#Ndj&C)W*5+jzQ*1A<9KQ(SPEL}*eInX~nq5e`Nzikfcrt--a8v()D09OjX z=UT`Wh)eIMC*U_9u{eCh<&nxSQQb(M|0FgBl52?jV7Ub+Dd~#U!U2R34+vFS#32=H(sE z03xOVS|B&AE;!q0rkBM9UlCk7ElNT>q<45&i84I!MIuf$&zmjI#6&7nR_U%OVs z+5qvrGjfuc3eMLXTYr&W37GJ^Q6c^G^pw~8ZSvyd?Q@^ZkAr%6F2)K+G3{y?rV;~h zh#q?YM{p#;sYt^l%!srZGoNZZNAF}zQq>CNF#iU+^CXTe``PNs%2D^s`6Q~`TU|eG zW|nVf$3qYHEk( zqPJwWUqQdFF7gm2m{r!cEUj!ya4-wE>unHC^sSMSVUnq{N2tx0-*T%$o}v2?w3|kysCZr1 zb;FbyWMFoqcj?(=iYEniYY}?oF{w=%bxU(!b#Ml#GF9MK3y8sKxHhiWkUMSC?z6T@)4bcmD0KhvpF#D(yQ?5<% zhWS{(9TQAKEKl;tvp*<;q)dDAtW72011~)$eOQB;6*44%k(2nut2a4Z)=?@qQT z%bOKWSd!--&I_Q{&qkd4=avC%WC>EQSGiOREMq*j!*@PD-=`Tg({$-hTK|WMug^WP-vDZTz_{v_=d<=?(7>**t2>5? zu~7J$UYq;-K442Q%}g)CdYx7sF14g_zKICCB| z4s7#ajK%dV5MBiO5OwTk@SiBo z?uqehH%o1?S-XxPvu9pIZ`|OBYWQEa6MRoNwSbz zK!z@I0X;Yh25hrhpbkd){fZMH7ATPpd6N8`Vr5@$%UF7QKmSO6YDPn;u;cM1cU+i7 zhlf`@FWJ;uJrgF( zmc7FS+ycCRm`v5O=Vu9-Y2w`f##(8+%x6gPAgXhs=`eAWoWr4~n~FKp%WwcAwTlgG zdP{?U4@SF_?~iY{)XSp9c0*)?^#WM|RH6Ifj6fcxRnz;i+XR)hac#Z?TX-E>^?TWq zsXQCpHy6~~i{BSZRiYKC(dDaMSI#=syNeFrclY&$_ow)PyV{2QOo#`r~A>zJH2nJgC3!F5eJU( zQZdeG%cMESdh@NP8QLa>>fP8puW|6kKMf~8e`1e3UM-&kn^c7hDMFicA?trI2fn;c z#~Y`=>2YpAvR#Pz_#IB!#7aJ+z&xq2tg=rx*a;2b>(_^GZI?9!T)mw`bY24V)Z;> z{qs-;{Y2IO_xwEn^QZrBZpp-o=KmN!{J(trFXoSu_CJwCJc2DrDX0j5d;o}5t7yji zqEd~pi1Ankfg)llrdK@2)7hE- zWD>yxxYj28hEYXs4KadQ*~b`G2uQ(ZC^Qgbib@J5qSS&8*#OV(-tlo>ES! zDH8NFe$OFGYF@7B_aPd0*L}|!WgKiV7QXG(cbm2Ku_;O0TAQjynz56iEK|k2DtfCX z)Hb4D-eOFq*NKy`dTmO$ad8_XFsk2K-=uJm1@nPsc2Z`=IBGGjx(e$&?>f{`FPA{4 z3v4S(x>?5EHiLlj^^O{k*^&5C4Zq@B&^~&9<1hPY6ynPGbKY@$d64_;s(1=WO19yv zB0BaQo2(rNOQSS9+I#^-a&_yyy)hUVRu%{mS`qQs*+^z3ZO5bPwHkTtVt{>ZCBHJS zytdS*TeY7MZoTqs6`$JoYZ4c+2kC@qvil)9g{7|S$yjhcdL_w$1-?9QP8v@E{u^75 z2Q9-?I&E~Y)@qN`hC$7{J0=`)Fz^s)ph6K#HQ^iGQ3Xgk7bmP&YOFHPn>idTadhvzFgqUtWQ)N0eJ_~t;h1j({ejnJ+025Q8fv{um2WP0;q|ECxDKXrcdTRyYxr_P~&1OoqGpSXXk^M5V< z|EgqQ$(0o4IJ#tbXsGr4S}3!8YpgmsU~^`PDsGHKV=juw4fXmh;ZO1I(?~G<55O<- z{p>9T3CV>3?u*H6&+Dw8RE@3I`{xx~07*9#L6B#IlYvj4Qnk2&d?@W9U{rWzY6dB5 z^OBy#g# zwvb=*H5Ya*dKaq)nB!c<`slDL3FjG#w=OjOVu#Wt`Kh=iR*u<|5kyXZ8?5SsPdjMQ zbGD0fPzF}T59r=SPuA`SilK*;e%wt6UeYkZbnIgFiQ^})F~LJ@u=6W>*4Orn$sCvY zGQIvb;K(c2O(Ja7kM~17Mvx|eJo(RJs32wTJ{>VasRZ|s;3}5%SKtNX{&`s=4L?#O z6zl{}h(HZl$%ZtxzjO?1@@ZZtpiOR_ng|g!)gbwoM%7eAnQ>H1`SB4m23h*&b<0*pLXXp2w<{>J|!_Nr8+?=NmkmrbE;^ugUACCLN zf5muUk{G$U+8mm8aYG7~J%tZxtM;KZ4#C@pI3X(m*C{cMAcmZ={C|Y?Zj5g`A2USD}nsOnONWdc-hCIF|%x>RW%{D#GD#`BGM0Fb7inALI)F52p8)O?i$F! z|NoHoPSKUN+tz4Rj2YXuRk3Xw729?ywr$&~*tTt_V%sO*{?tIv z-r4NGbAAR?Htg4w;5QA%ob{nuX$T76m}$&H_X=1F3IkTfO%>CbQxfK_$*sr}6aDj5 zk{Ig}3ZlF7>H9#}yHlWXe+BC=bI0MV#OWu`>T&5*Mm-$9KAfo^S9g6rA$>#jE#6`F z%nX8D9__|xmdz8%liB?qYK6EJ<0`hRi5M-$MOrJk%ZVtfaODM+Rm7(kLv0phTumQx z_@@y=%;FENiEUXKhUc6aOS7^nCP!69XE`9tO#AB5O&Br%4)I(ebu@zSnjvv5{zS!7WCiL9>vHY!` z1vg$2^D_MYJD3#S7pZv@+Ei~SPpsDm%HN?pe<$6+(n>lR#nrUQw#nE6HMhMG_= zkE)#-+n1%2Wl^10lJ`jaso_EU=lw1WV9; z+p}LbmMg=jA`$oOkcRYa4cCRB>GtazokFfcs$dQ<3|Qcpde^lXD|c-$&stDnRqIT( zHgAw4dW9BJ2ZA9uIKBx->O@s$cdv|SPtczvsu-IA;uxF0E=I0!o5?$fTBNo3eahr9 zY6&|?%>;eL#7VkuNx!3!avmj2=sg6mnXlA!qB6Lj$hWo z9-KK%&X(BD#Q2M-Pe}NkEh|XK) zEvp}QkuXSGr0I*t*^hPpi2-d?GfJJb1z+YBwHy!;!?XpRX*!{4C%PlpUSuL+5bdMx zQrB;uocedo^5SjbMAU!s`Kf;HhNahX*ntOcs``e8Vt_-AgOQP*r1zd|^8OF<{fqpc zIJ>w){z3!-Ujo3tmnZZ;vrojy(aGNE{{wmd{`Ef)f}-YMmz_U~ELQ}UP%U~SD?7xf zbazR;>I3@cW0(uUGJlxZ0qJ`TUdbj3zT|CZ9W* z4#(f#?$0@Y0V{nipr#9_u}ohc!H?Xarg@Y`mOf*kb_yiZ!i5N$7-aY9JExDyIyXHC z=%iE9UFyTX8z2xYBGDco3f6PcvAnPFQp*o;RHnq3M{ksLC>^r`+Y@sMb!i|-G!1%> zx|(twA~LMZ#kpu`p(FBvz~q;OMTeqU>ADiqezj@YN*tAjz^E`N4Di{%?%|VL{~eV7 z+F0Ij3ORfE*pOCf6jtEM&Z=EbuRhZjF0WjyO2%Zqv$;M=A}{~iC~?3mRn5k$Pu$D{ zb=z!z9zWS)3*;wTc0Tmm^_-WM3vsm3@rW~zHh=PJ1_=!1+=bZ6s=~ouUhTNcb*I#4?Z$^a+CB~-+Fw}PHW6Zdqh0Fc%z_YS!eai)Jj6!B;<;t1#rE36>a zB~Q%eBlHb;aK50J+02a>U!79RDDwJHtuH0G2D=z^Mq<@xKz($Y7=8o$KMT-BY%_QN zs{oC^UcK1}$^zoFs|~4q2z{8T@0=J(<#y)eEkX1a-zx zbJ`{lWQxLIMsu|C3O+r^Z;7hx+ml(|y7GoKx>&8s^Eis$;QRycrigdI=u|9$}Cp%igsI|W{c@k^AJl` zMlvs)E>clGqUy(;g_X2d8@clgIhEQ)L+5j$W0WlE$F-!6&{Q<2s+<|CU1nx$N{K|u zgZS;~fcjmmrWjl&6XF@ydBC6%`TLabESi1OF-7b|``AdCr6e5S6laMsQ0aIL0LPnj zee~{=R_Hg$huJ)**|?lm9uBB(rR;(L2W`m}p4}iaBn?KB$%M3^;?!cPSw&>vQvNAL z#69lo%VY(vEQPkL5|K*NWuE$B=sm3lwag&>sn5pi1sMA~Pd#&u{5s?|D<4*j zGx7WYDVy!7KWCDblgeX#sU#4#XWD9u2Cw%Rt!k(dH509y0)K-B)+GK^8e&H9;k>q_ zn-d~C>BhhWwD9zzbbY_$L24=L|M;gnq<@X>II|*5%CF98{$lqH{=?4sOV&5~FHQgd zGQ|J&3;#`BSp1jVKWF({y0x*k@!Cowl102HkT8rC%)EdwfV=?Y4WDrZkY1X;Qn#Y~ zrV7=0<^QyTN3yvw0XC~vQEH@jVelu*q1naR`{U&Sr~5}^-L(9$J`NT~l}XHCBsGmN z4y%(T<5$QCk>v$+5U2DQPDuiMrKEM!%uSc5FXQJV623F9Ks7(wBJ-V~-ulrkw@AykF_2+D?ztEXnxk>Vg9WXo3WzlVEdP@)+NoOyTVFvE=EML1Z4Hj)sCFpK)JyYCuY?XE6<6rx58zc zzmUVFV`;qlyfFs97WU+hbt%`HcG;v-N(rspJÏ=yO%H7OZ(mF2Cv%TG0)!k_aT za7DNGNcS8FiB@gCCZXCGQPsA0&uau--+`MP695VFddnY=I_PSAq*}D}?OY3O0!{nG zPk>SdSJkjNd~F`&KMu0+GO{nT%6C&3DnHe#HLJFuu!Hq}Gjmt-MyRaiG|3bP$7KDg zVKDrSJfVkx=>;|!(!ObYD~*f9E?vs)tLE)Jt6?sq2PS=FV&O#TI^U1~aLJ z64Dv3{ZX5YcS#fVJf#RaVcOp*=qBRad4sU}%3#DH!4p~%@zfn+ZbgWM*k6O@5Doc& zcrMlJJ@}@#96aP3xlQ}Y%2pQQq|>u7tkc&b#u+|XpJ(L#PjSqDmFgpVko;dLt$6QnNmJz-t5dO)Bi$-Z2J-P#}y zmW$Oq`eK`XGg`>GT-TvHe&SYaz8Lu?8FiFC4SL3*1mp(nlPR$XpruHO(VW51{2teT z0Tx_H<3fx?r@yarnv*nDuK~%O>&T8~!W;0l`9K`AG71e=n-}oT*NhA+crX|XAXm|; zXpoEb@Dzs$YUta=dn5%r4@^ks><|gxzXe8s$QC7jDpAQ6v=<2tthz&y64EO=+|c4BkS?9Fj$=W>UdenFo#qJgZju;oYM-eo_qVwFFk1ngw~ z*)}0912bBSF+j7}#B^-FK9}G6M#rF`Xsor8AiM-&EcG{n7qfkh!-) zJfD=%h-^KXwUKq(?jhscAfEM3Q!pp^EEQ7nCu#{``s^@q>l66HG0DN4A?phQ%zW?QR8m|H!$8@O?1t{P)T znu=3K*#L{ZMO5W;mRYO~R_Cex+FV%FtFp_Zbejg_DQ?rq3eTUQOZE#`muM;fLv*mm zmVxqC(IdasY2XH6$*R}Hv||QO105q>Dm%v~9$M;i!Iqf3= zQf1}q!$F0YL#E>GfqfOR;>fO?X(YQtlqptWm@Kr*7B0mPYhw`Us z+oAayZlZ{K=pKrm3dSPc6K>{hTjoI3H{}j|LhqrWDFIE7>{UC@rEOtFt-9w6x~V$d zg4n@GW@`hkNX`^^V}%rqpvqI%O?3O@p8h)47ay2Hb@w|(-8 zG0%_>{uv-5!=pXB)FLBAec#r5(ecIe1es0p#F1(6@l2(r*)rJq2|dCLfws)jECoux zn-c<{<$Yby9*-VhVK8cMezgbpsNjM!#>bAAJ1{Dc&$aIrLK_ufP9J~cK;nNiO&2G? z<3p2Wh>5WBrpcKMu!Aw@$b+&$jShY60@U6Fs0a+S%q$f=F`GX-7nB&*g_FfhCDShu z7cuuEbA|UKk3-jfD-{`zEMc-I^#Cg5X0Qxf#~&qN*ru-E13XOT+OV|>gA*ZfD$mb9 zq$DY#5SzS8k@_%%XuSN3=J9cM`}^Z-7KeQq1OGkm>EBS{uXXkMU%A$Q&tW4OX~}+i zcrW#(MeQzBA^3K;GBhGwZ3Lksaiz1_SLT2;7HNFx`K>=ac-zs4a}aqKTE>4mST84r z4%aw;F^$`w?Jpaps40RH7;Z70p|MK3lU9w?zg4MA>>Lg`%`26$?EA+9)N4zST<_o` zR5L4-t1)RVN94&m990L^WOdY$aNy#1sEYAow!kVWaK{y$#U;qL{I^!ZMNNLjnTk=; zp4=`B(W(*znHl*b)hTgkTqNo}J*U-Mi*aQF+=CSLI5#!c%t!W?2a^3%IVMFw4hyc| zE^+$Kd=v(|>3ik!8Tv2>?KJUz7!Dguf%kyHk3bfMJ{7UnCcZrUOPri~Cp8@6*VBaj znmYf<6BYSCo@k|l&V(qeU(Xf^K1K!|7)GO`vt8nUMQR8UQkF_QT2%B~52 z-fldSPOF|5P@VCEiFAO?pN^%bL$q(j%aS$my2%7dI-xn}RUXem;~=cPNuG|E8(PRB zg`zEvD0G=rk-H#NCT=+O1eQkU9d*8k?wAQy`|3F6)e1qA2k}bL{G6Q9(?+InPG-Wl zBet(TGVe2NI5FDQygaYWcSR}W7_&XHVR10p=Y^y7x#X{745{=*@HacnGfdd)3qOt| zv{zEI%o#bG7C~#5gLbZxGxSNe(I_Eq*q=SptN#EtF6}6`!(N(A$GfKmZq@p0fhlC_vivudWR9H>;^PM_pGlWnXLTUaRIJ}DqLyxI}Xq%4Ghk|V7d|9;M zrPo_g+1`XgDLh5D-ud&t4TkYX&y9Ny4HuxD*yV*$i(4^QtkN+`!7748X6Yb%qY@XVY=X8TIFLS9 zNy=Irmo>umz4KqpNHpiSy4k_AS&BxB*drm|g{%}Q5UN1A!a&SW!9ca2FD0l7WjdDB*U%w% znvRx;r+1%bnGcf+V`o-Xt4_g-wc0E4>${B1REEv4g<$+FkY^LZJjr|>D4CR>6$&tU zF?lG?PS`K{f*O<7FOq0hAe6hUH^4aJ3oD3!#PIgzT^OQ4(elw9d2B4ahU6{CnE;2>}a|!3B&dG37^c!P-GC{;O`LssJ2cZ>!0@iY^pyOGnoYm2ssr z(+L3NBt2`*D|r27^O^I2?>=dyFNr&wJ#&y-jlxJ$@+MMnCs3F(o4C99p^##^4^X*R z&@I7r3x9bBB55+RX zBpq_*7UW`lr%#ws;aUpmIALvvV4QzjL8gqW`dWui<7Ku&70}Ge6^`~fd!*A^Ul>1tD{Q^_cy?o?%Gil)KL2#R8bC9_p6XDa z6G#>bHnjK2bm+R>aOm{7eY-5~0&Wg@1xD|!u(bZe5YYl8H9qzSdc~6>T_dXk+TOAJ z7YC{n^|9JyU$+&`&*SENgFwCQ-1Eq`JRDH~*$LcPuro`PR`tnKZ>ayT@DdI@QM>M9 zbii>N1~i$ySC4J$#Z#sE++#W}*{8}F+JY13etqtqfTsOim2Eyo5Y}SuHg~Q>IbcQI z$DawXq}`LeyT}2D`Oqp#MdY+q+o8;9d%&eWE~05Y{B2ho$q)Q@7EVxx3aO%B;T+Tu z-6#`VqiwTj$fAZ>WbSfZlLg@}KYUaE>Yq$C2vueb^c5&;w(@rF&Yqas0-s43n-@QH zqqK}V&v{BGg`Jf=b!{D=?#z(9{X<;#cA6>76H_@omGz<;66heF@_9AV?6E}wcT_Cv z@U222*+PL+gw!v4StDO@$VjYS1$bOk8^FXJT&X{5`Mj}d1Hux)`h|b&0%E_yDMp%- zU&J%)6%bk3{mHKqYv~orCOZ2gs#ELf{Gn@LirL%{S1Z)=@Kw02Qso$k{!Y_Syv_~& znm$ryt_VZD1cetCo9A+rO@uJv)}Bb*L53|0FAf{kt^UB~NR8!+rIX<4mN1y0A>Qyx{$nIl4mf{-P9~(CM^!x*P;~X5Z#P4*6!j&Ea){P_l#$5 zLjQ9DvhP|juGiMyM(|PLDv}m*cG?0|C~o~w^<|2yv?l9)FKZqBqU-o{cJClRT8?}3%7_~!-_ro2FqH%{lA>AVuihXYwrM*N~vk58_DBr{ejt$n@p z!gHsmTOiHU2ikTu#e{b&@6hBbD6>Gt`3C28a$Znw46BPiV6t@ez+HWZC~g1M54@Wi zEik@HfI=)5I^geOY;u@^fpa+-o&6OZy3F4vfba;zRU_A3B;er@I}xed(D@#cqsfx~wKZ*oFCK2;jd8#3w2gCb_{cF;iyp zU0$9*v{v6W2}b8#G4}eXiE;zrX=SqA>14H)==JJk)6M-Ad4u^U_efHejJ|y=Z$fL6 z+WkGh$J**g*0syNOw&C}dagkYtPD4g0%1(7FJ|BCN&%?Eg|NY~lm4+;-os~{ZYTAk z9(*wFC4?8=XngvIQ1R>Q07@ZpuP^3hPAARLRb! zM$Fq+Oua=fm~OrlLdo!yIYQE^9gfT`{4Tx+(n^YVnsu2ooOS8Riy8M=p71&-Naurp z!k&NC){Szq^V<;!!7KzR>%5``sYZp>*YU7bKE4~ch(UanhIjTiY z<}>*OY!?TQTh?uK34{9l6bTLt&B9vYKz-G`9!>prL|0muzry(Kh=v zOe`I@LoASuu#%gJvQHoXh0z_)9!0DcCE9iTiVZIS;H-G9)>qZ^+0#td7jt9#BcFVt zY>tMkk@GhkB8=`h5j(+wWBK`qI-##JVinkP#FkB_>BXjQVwQgDV2PhVWswJDOo8*P z1I={TFUpNYF%Q01!V&Xgk8g{|I62eL5xYa*=V1oGtdmz5loByorSpF`%4kgXMxRj4ZZ80-{WFfh3&g4dXP!JSQn}&OV z9t{4?IY*kF8ogPe9lR%5Ph%0Kj2W`aN4$NuEa`H;96vZ?(zdNEhljP>%#5?OYT2ys z=)FQX`eNmJ_)s|h@^v^%^w`2MBKmB;@t87Z=*n01K}?u~%n?jNm*~!iG+VdYJ@gr@ znSqWYb`p(ZNLsdrtB=&_HOyX1D6^7>m33qV@-@P=%T7W3s@O$(YoLAY6ZG{kNu!%m zPH=YfQR=fdlZRvZ4Z{SF zN_51n85@OQ4CwzE`n12~b$ZKgjldLk+MC`Iw~>%^?{)H`WHb^qPm}0fGu1Xmm$LNI zVtL(H=|CsQi`YpnO{)yOM__WOa!@rZ&hgDWF)nd1oUA$94qHoKj#CXSt})wU7EWb8 z7q^t5XAl40`qQcP+X+J0kTMl8vm)yp4t8D>WZTG^lxf1EUK*A{N4aikr*eQoG`tQZ z(Brh4r0=%ujDVWF0=dQvm{V7Me!f6ouX5V;JaEm>_VcTlG$QOhx6nCeJ-iC#*o0co zCW{ax7&5|W2WiUMk+K8pNw>eDObp@GVaQc<$TiyZv*g)c_4MG+{LC(XG@o$m4_NLu zZm?%?z_l#;Ubg>!aH#V8;;Y@SIICjChdun?YoCU!-L>K<8+hp-QkXAPRigg4{7TBrYmA zWuCr}2wbtRK1dYP7`+ZfbJaXHm*}UOi5Oj*reAKcx#aZ^)A@kMtR?I^t;$wZm&F#7 z;M3(470$+~Z(w^33B8)m&6m)1QYth}dW+gk7ZCCDK~xibE3n72P+YQNMpYn`R{^{~ zRE>wPjOSKNQYKVgo^e@mXitmC8gcX}999xLZ-69QbXsh!KMPMe{Knv|$Bc8(MOJe# zf;6IQx476xj}E3K>|&=|SlVda#M1RTVHV(H$DMb%>>C;-yHTf>`(s|%a8P;lOdj(X za(7uSpecXXC!CK;c(g)V_9>oPSZ}NA55S%p_AmWFc~Qu3k4xHnX{_i%Fdy2Oy;}a| zO9f_pE!3Cc>&9ht#2wyV#C5ZHHQw!zz@h}8{`F$>q~Hz)#?UYK65VJ%;;uz}67xe@ zpZv`MD(EYr=dyVSOJF8Pjw#j(|K~E7>aZ#CD4ABCm}J(_;|SB(d)YZs>Gj*6pPYmO z0oKU*Z415A;swY}B%oMQ=4CK>t~)Xq_1qUA`cCPC1YNQ7`6)%J0>!l#d8~#0JgxE? zPVvTZ1)-uvPZ(!N6cl&UyjYk_yfawrqOeDO-+G&Tt)tonuE66c;@%4d3!J$P zD33X>DIsqx$rsG4tTHoO_fc7i`)7(On-Y*X1NRWapRoNBgvuOwsLUsnRIgK-McC@m zs2H%AHcL$i`W}t|?ET9|@0;Gw5y+^$sv-b!rpEyU_JQZm$Ea!C&R&!tWivZJ~=SmRF^#3(V|UCq=ww3IcbB-bG1M9CpM!T7;5yl-}=I@S9Zp9HtyG=mbAW{yj%2FzM;yVrn|&47|mvR5iE7)d45g`7P~~A zmb*wwprl#7S)njW(w z-wKurvkghEl&fT6PCHK-Z7doV!UPtI?8?_KDAkg;4sg_?=PSqY^05+#jwzDGfdV^~ zSE8$@rIzpZlO_3ew`3vM(od}~{b5=$?O`ECaDkkpVGYKtRrh7kWhd7%0(IKi;!i!0 z9C=HGsw8VROs^CUqx=%$Yd-}NHdOiODac@ zK<&yHLC^TW*d>Fa$oQkFD)EjLq3{FgTb3ZIx%+SS(7amoKQ1w?y9Nb|#?B1*a;a;9 zq*p9OIagasA(TKq<5Eg z(x2aNU!v_`mzr6986x)F@|aQvpj{bwBx>W6Y`ab3||;&1;7K-C(TJe&iuQkA8$V$5)%KKf9qX-(4qKDmw2_Gw8Nz3 z(EICW{rUR#l=Yjs)Pi7-cI{p83VVZz2Ni%Ln`M)=wcYBo+Gw{r zcb7;}iTxF3EG13tPs`3_^%^xf1c*(o!*lNXR||}g zsLEqrPqfUX(@2?8MHl_qB^odxy3Ir~q*HyT^e{F3JK)f6=(-fqF{qVWV}DcpoV1T` z_pOl)y|VY%Q<$hVW7b+cV?&ZwF5I+rQk#`0WrWf5!za4;XJ?`Nw9B0kF{;oHC#Cv~ zKW$2Pi~ZN;*qdND3MKf#(xNuDyIP#zliO`sOkI&*%ILL3q!r`Q@qdv^BYAn6AK?j7 zoi`$|iq{D-$DOQwmn?LVi+=$!3s*v{n$eI9iV16$X(x2`vlxQOW0f_v=I07!Za~pR zT?5aOwnDo2Vg3NWI#B3FP{%z#>C3!75>>D1TV;c`qs@%X8YP7Tb$qFbtTIrE zEtkj>=NC1%8kO~{3>}s{(vDA%pFh9;yXH4B^RoWd>z6g$p3CC{eMd<|F@?6M@y<{+ajx@ zd|Wt+$r^J&@FNndkJAE68OKQ>+6p87_Wgz^4ipEEPZge-CBsO69Q6(yI$U*Bb(Y=L z+}d1Kb!uK?KE|kw$X7OB2ZdYVbuFA-(Tn!eGqH*0K7%t;4_`22L?f-N<#6-XWs3Xp zZG95&%hQ~tCKVAZGud|BbF)Krf4sMDaTNJZe^bvLPn=X)v;x6HM878O z7+Ff@bZpfWDxzvJ|););|BnZrYJnWiZi%R`B4*3ANMUEkT=F8$-v?}N5= zd7H<0)Y*jJwu-A{xg#;i8pAk=3k}Z-6Ge@;aOy!l>zM7Meu>q)ziHX|JAeHNfh_AJ z;AqYl4L2GsI=$N`U*Xdgz9yPxjB2_WyMwC7I*g_b?{=6b8$Z8eJb^vVj>+&)Z)2ud zietultd2XgLli-QPI;o>j*F4y$mF*t{i?W~CndW?#sVZ`=Q9E%p;vO^?yE7tfun>| zdSK;oA|>dPzWUEIj6C^ z>ul{*?M|RM=&{C6{3MgzxtVjt*y7o$U5j~0L#IySvAZQuo!6~>XAF#aS|S$axj{ir zI2<4vBMSJCqaeLjYfBF-$j`h4rjH?@+Pt{Ny2Txr`*RIUjNq{CR>_tQh9w8bK22(& zx`_3qesR122}3cF!w(wTqB=``u5ur&XGE|+P`cz1!T1YIqz>hpvZrES)0LI4 zQtC`mE+nLH)XjTIZlLtVpd!~@S#!lMC#FuH3n*eCS#!|kwOdnS${wc95DLuJ5EiEQ zFV<2XZrcnI%H~KVe@vWs%X&z8Oze?l#8^| zz9@0~W2tFrW`kMgNx&-ZBfM|rb)nmeQbo-Y-Q1J})OG&;V2-*&HIbq@snjL^88vrS z^5wj+RXHQ7V)EurLA~muHe(s>=3Pi*UQ3ZGJUP~`@bgn_tweT~@o!k<`?)Zv{Yk&k=}(vN7he({@wHE&mnY*QW4nYs8lMR#y-96+5F&k>yu;Q3O<*1 z$IH0qa6iE!haUzt$@%UanMCOY7bC8j9!@0W75`LzkJsf5gQCXjmK!(0+w zLi6*wCusu`i)&Pldqj*_F%xvmOsr%SHz%c!daPH2E9VMG(t%DNh8@De5OZ|I6@M57 zsdxsQ?BfW`j5CoG*J7+io#vH(NN-}vT?YjJ#}CsZrai@u0Z z(Sxnc7XcKb2WJUMw_6t=)fGuboJlZ;!T9xYIXmnaBxUmT;gFJi^MWnyZKTm9bINM=9(6yf5^d6r0tY6j8_@b?cc48RC2FsFZdQ1& zMm}q(8%$VD6%PD~m6_(|=Db>8r7ri!rlPaIN$GYVX*cKL`<6qw(=UoE>h!Qg3?1LK zrjQz~!<(?~h3q8Jry$PNM_^$5W`qL7H5s+0S}^{>KooA%VQQ(ZJ@V)@pf4ergef*P ztFmYYFd1!B9kN<^%rV{&FIr_ia?cT_o_6k`ua5;+Sr?(0Cjp^IS-T?}(XR1~4`T|} zo7%`(Zy3$eJ>RG8a4ndlnz@fPR;gR08H9NWVxZhJ{K}nnULI#V$hH>t>2N^K^;&1} zUE6ue_)|eH?LLF=eZxyXR&a+uFX+2Oqf+7maz+9O4Ld1%AzMZxnNj3G%v zVz&O)U+SxBIh|hgThnE2S}qH0&@sF0H0J_Ll2q7Kpw2TyBu|03M_7UIDs*HVmKR*o z>#t$WRi|y{3B(n?lU|HCWdcEdUNBScwLFXfSLk4JjgaR=cuv#GKbyWdIR_ z-(?a+;RqPc3}Qf1cbN1OsdDuW2@)U{x87bzAI`Y*B3U-olw&oShtIj*U-?da3GWH1 zGW(?|0?m$@FC>7;#Rb)3gZ$frDdMT^Y@@gcm0ZBkOhd-Yr5g&4sq0(OYviqzoI*vg zWATpS?VdSXpy>H`Anf@mxzPv2<6e#nz#WcA1X|%g%Ibe6CT#uBeVV_TGCl^Z8|{lI z2Kyq4|5r`<-@cTD|I!76J|q35BgCc1g#(iW8Dg55VU_9ND@TRrC1M5mf4TQ1?o}wL zPSW1wQbq?RK=gycbqnTBa^zb53LjOwnLImAe|H)D0_9(E1z4^+zER2xTndo}z1;># z%3KUr^L%}L@wxVAqB7)QZvnne7-eO6f#RcqThVNN#&j`6HslBNySObx6z$Y7L^r}Q z0}N=TOPrcr$%X3UP3U)b^imm(zAXCA`z3f#JSks_j5dMmdgvSR4rJe$WI&3wbcS03 zR6R}@{f1r$*1*^9Zo+hMz(EvtOpZph?(0g))E?ZNMfs!QwkWtacG-tzO$BY>cfeZU z)QM%x(SX~_p==is@?j&gYB&?Wm7qA&))+PHlTJzVqNU>LFzM_+iJ z9XV@R1iA`VN5=bM;|3D0VQIu|MY=cq6|voqHRRhppM?!xe{J%bKZPr%+CgpLs0`{1 z6uzN3nA==aBlIw_-ltVEqBA&%s5)?HGoj&h6dWfjn z(W%tcgCv@7xg z%7=~f!=$kb5CI%MykXC`bQpqP=z@rZ@CZaZ1XzOn7M!U#alRAQ>zOdVW%u8Cu7%Hu zmdzI$#kO*Y`77Zp2TU~2`x+Y?8w%B4dlwt?$hlpNT~-2Mh;`%X94^;ACR+~Q9y1)K zGPyo?h@yd0CW>0*{pp(JgRL>vHf(b^(?u>&qv^tik`34Q20NbWuxQuGL@v;x!PlRl zIw{?MA|W~tyG}=HojLBEJ_Vsa7wNtvVQme%aH)k|hSh50o(&4>@9M!l?ef=dm-pohTp3tGXS}>DccDKgDA44vy*fs0RGuwc9E7`(wiBP3x+Ycn!@u*+VxlR&Cf$y2onW9<>EE z(-nX15rl9b`+!PR0X`L-eqAz|!yM4(Ue8l7sPFzo3~?cwSuNxP_Ar-9GtGt9nFUbv z$03?jm^B<&05=+v-)fbZ&0`~%|YYe&zJvlE!Abmw2osEz|Dou-Z7A#lOWr5LCY?8M%`;j4!VH0EP(E`#RpnDIW z(BP&|^6n=7(5q-%MdFZtLgV39j2RZLJu3ZMa$C?r892zCiF!G2@Gk5C2gsd8Dcz5O zuIO|}SUb&nq92oJ)g80`AW-Qh{($Dxv=3zaodQFos1kD;bY%X6sKHD>ZS@Oo>l0ZS zn486qa|Bg(>bYR_cNTiKNL#r}ecND#R;F=wP)*1=>imFQe5-3P#ptpJ zYuEuFFyCkbGTpM(mqPR4gYS$V-SnhI>7{Ji@UXPXtc^zr7Z`&tj3Nc}9BWdYjL60X zggu!ehuy5^i}M_kEC288KHc2JGsPr&ubuV~-JHMJA}~)j=%W$O?f!C>n-yW|7?b zzG;YD^evH|W!efXh+oIx2X-`2)fxx(Efvyrz2xukmfhNo~u#TMp*Y_B{>@A1Tb;Fypl zE%BQ=kUga!2cz8Zj}p2`-ME%x2JV`l@Qf*OnJ&SJQBoy6>#dvyb8mt~yR)U+Qdxa= z4+f(ma#EiNxn)5O1==P3cpciUwVc7GE^&p2=3N7Vd$Ghc);y=9#FE~`w1LiS2T?(~ zyPR=8a?;REC12VKGRs}gQiLl7f?K8iXj_tky8Qu+RnX!e7X3}z{`&o~3O>C+%lh#_ za!YC|!s!*Zz{sI=LSVT9w}~GtXPL*+%9)Vz47H{V{ys-5VtPo+7|3UWQesf)!|hPC z;0HZ#fE5kn_!4Tah4X|J!@$fD3FIGv(j?nKSh;-~?z*L!E^h?l116t9$$D>)jL3q| zHBji3aQcI!8>89@aKu0Tzy2n8GJ#S~J5Lg94(Lott9*Mk<9MTcgWv+dA)n0*YZfjU z8Ktn&tvEI%PzQzVP)9;OmfB1|Z%}p3$sR@<2DhB?)bs2A$2t5vKH@v~s+s8`MlqOw zWaw^UE@MZ%8U~!ETcI(;LXuRXfJbn5#B?#$`j?wM^BhPWVf42V#>DV2!9{DRCaz$p z%{EIJ^IYK&f2ki7;nuZ-fGRjYUvPG;{oG9F>^Mu-deLCgu{N;PYcoF8pg_fr? zImUij2Voh~1wWCUy0e8kgY^ zFri<;;lve=tbE!C%=whGbzws6=7cQ8SQxfw0ejp*F^%$Hig!2E zPtCwg%>gazp&XOfc6pfwbdh6MkdiYFNTlIe^gqTkwvAU+6uP=Y>?+qx(1QSYtf(}$rt_> zb4Nx}d4(>W3uhXA(9Z+rjOrxBkEb4{j0L{J_OqbmXMyp)5X8uiqST3UH^*{CNxEwJ ze@J`B;7Y(PZL~YKZQHhOcWm2M$F^N?lyp$|)p#p#=Sh_(|=L=>}rwR(JS)egU?`xm!F_B;KVwNca0N@xDsV zBT1K_$jxXfKMndWAd=%VOAGww#3#VzHQ<0Zjbs}lhPhGU7YT1SaE@ib$tlq>vWa}Y zG54J{qESREv7ZpT*wt{-R@%2ew)RYGBpThoT3Nwi1;dP`4TG65Aww!bB)ia_^zJS- zLqsi!KJd*QnauvwH$uaJPcP8ams0b^1TD^YLZ22iE(Ak{i6&A%LaT>jPKNvu2Tdj7 z&_)wW;MLwY%pxjotxia6#VZb)cTnt?BKLC9dsuQnU^mI8d3rB+@djb)^@zK{iEBVH z_^0jYJe)*KR|B6+ZV&ol(vDe}Ek0F6@ts+m7GICV8DO$I?XZt(@8Ln;wOEB>EBk;a zaumAwk^;3yCXOq&AH#6+8J%-N*|!^@SB&X-z+}D}D7c|NNP;BYEFx;fp`TFMdydXQP(%NC5A|2$fqY^P`W)W3Kk2$ff9&q|V#o57ovWultoTa#awoR*Pg z5~SZW{)}I#TeiptsR<+&S789^MmNR6^rE(e8o3z~GvXe0H16tinzb1V` z;%QmY$~@;px;&3$r4xCsObucV8ZTHA@(kf3H9+=dYs=_l zYu|Pzy@F;2K~DvdQLV(@+~~KD(B9)7pmUOS%MSFaM_-}2Pe=GeX9QRLX_u7Wd4{kL zx_$FFeO+pQ0+rukmNA$aqWmcD~Pn?H3ue$M}NzSCD)u{H=v(BkmHyR2#r{??jJr zkfn1FR&>e5Wr-FI5|X+mv?h8n!aY^;Y12v6h9koQ$2-W}%%x1F%LYrX}xIbe3%{tPTSB=ao8a&YerWB>RU3gG^> zIw6s50VHel8!^N*^jkmA1!ovVx?KRW#u#)Dyc@DO z&awpuFcUXNm>0(OY5iNd+9qKKmt^(KN-Q)E?cHk#a>48}^HHca*_oA_j0ayeOhf>a zQP3wQM(N!g9*B=yHF!RbtEj=~HMREY^8r%yk;Ea`o~Z@0R?SoDXxMx&->wn!g$-Z# z&`Frx@rocyY}!b-2C@v2MqHTfw!m)C>1bNqZ>wLVL36U zLcprYAF|)W8?;al6?{bX<_wwZ#55g+kzxeA=Fu^D&&%t4%S9rmL~+`Sx+$Gr2|}|6 zZ9iF$%*@))+v)7$Dw42GH;=3J?}d8J%-jgxy{`L?KidZw3n~-8ytkZX$U?GG>|#%8Qut- z5XE_1z>tQM9)E=fCv>9-razgm1g?uni#yv?Xqa#lUqO% z>MzL^n@#%Ne8+8{VlJ69qcXbBOT{YW)k&Bl1KDo4LAejAo1LSN7x_9J^Bsd z(eezsu3Sf?qLoqA!eEDZ*!RXk-c`)iq1YKtQi$8DFJ-k=Hi1^u5ki?nc7M&5;fr7o zTshV1YHzhP>_Q^GXLgZRM0hn&X^UM>!U7)N1*Kj~LAdP7Ia!a`H#u$giJ>WUcZN|V zA>>piN{N8bGk|D%Bi2{!QjgXWO?ttIjA?Kl5t!TD#oQI-A= zgqp41LJAQ*w3MoX;`j&uM5P~RQ48|}>)Ci&oVGN{< zCXiiaWoOt>WKMn(2WMzbi(>Fiw4Hph!V<77<~j7tp$|oVFrzqhbeE_ z6|0IYawp}LyO!cIW2*!kj0V%gi3p3a40Tl#^!iZ*Ej7!GlYyBRe~Lpjsv!-ah$Ix* zdQ(iiq7MoS!)WaGUx|hu!d>*AXwE*;Db~{L5$RCE=DK=?U0mZ4WIJ{2l@0X+l$ae8 z9V8W~a|$o5$1oahsEzGZZAz2*f!HFd5Y(DmEf@vo+c3iUkBjEr7l-`}H?bm^p75rP zIy)2Q({5CxcE3us(00tjLVe%*v@TPd!*jwU3dqK&Y}`Cq8^_}|QCiVirP*LQZE0(E z*16@Qj@DCY2Xv9nb$Ry-NXAMyS@_iS-REU|{VY)U$w~IF{lQy?U#z@)J?|F3guCTQ zrHjX-It44rmhRXqu^Wt0%`$&M_CshS@W9lv22q&PU^sqw8pHq-a!p+14Te4*^~ZW;2`$*wO{Z>#2nU~N+wJ@(y7F^ZTz_V+KoytdBs>CY;JxX zhQE%Z_kTsB^A|c7VvtyIg8A#%J-iV%4EF|=hfIjoIV{Z90vZQAc|6fsw3Em$%u&?j7yTgJo-js(nBsFsMVNWA zIRZEir8y6O|C=$t&HesMLX;fTosLq!J{z@o{-h^2EL?{j3FR>9O>!RTD?G2>0rHv$AYi4QnE~tb;$! z{}he$3^Q}AAtz{Mc3xwX47)eeh*O8rQ(%%78+Zh_EG%j35m zw-2VgwK7B&84QWoKMG>rL>yieycR_o>iwU$L2}9HKFjZS$nE!SP~zWuhe+Dkm>63a zIGYF?*czEwTmRST{yz&^wTiUeH!t;*Etbnc7Wy<$C?A9(u1IwrjYFV90wGL=GC)|E zs?BDT)WzXqTvz!;UOP@el%OA!<6(ebX!4septK0C-eBhHdh~AEyY=|_eYXEu^`|9< zgwCohp-&YTagsc~uNkD~yzO^XNLC1F2x9wTdnX*=o9NJc5G0`oskBvbsNOJ$FlBrWQ{T`@i7{N6LW~Dm9dcvYWuQ!=>LP2q(r#An zK#q~9l`_N7xNI3N8!0_!fS8#q0ETCRVHHE%)iC9wr*ITlaoPeUyJE8*&|%fAZC1A6 zTF(E)u3+iuS(m=Ty%n#KOP$rRN4bgMumzY2ci2A2H_tn@9NS1U%57 zWh8;Eld32;G|waW7ek&=l0m`n2l}bb)tB6al{!;h6e=t`=GE7G48ta8Jr|ZOqyIM# z1|~Q)@{CT#fwoiOU$L3iW zdgDmv_8KvLhQTfd5TPu8K1osor3=Dnb!Y91j zR)aeZpOJxr+OU1>e(#Y}1R@#$rc6RMR+vm^kQw6wA!WR(Q~YWs-jM{x+BF~o#z53l z{n$Q7460H{ZR)f@H|B&seDC1iyxTqXdKpg`RdXWg3E(6&Xop)*8(&>0R^7~b;^y9lo5JqK^V(^w5% zEK0X);5EHDeLeX#DbxG+^#-yJg^7uTWCLNSENFvC2qTdZPIaIth!WBbqu{EotJ9L)l+5ACY zzr<`<EaU{?b-AF z*AGBH?(AKTb*%5nSvZ-i(5)oPnIH{l5f85;tq2rH#srHA8;s+~Kr>!$Czq*?t6g|q z8#Z1x%gia6ESEwk%aO!2`Y>otSh1d&^H@eO6D(I87EOWTvX>XcHV%m|k(#`=-$Lew zXdznOOl2t4N27$a2)S6xq6mQz?lr&t#s6hYR_aE_K0tY|-Xu>l50S2@3hqZ*1J*`+j1J{@JE>NNap>Mr^@Lb=QY(3-W z_5itqjEKOto|Wyj{8mNAT87zVv`@`X!7UlH8mn97z0-TOJ(!riEYI4BePLs53PRDy zG+5(n2HaviWE=Nk9(4%ap?ho|TgWeAU~Q4y5YNa5M@$su;6@N4UJWtgL-6n8>WO&I zjy3WWH#C!z%DWNyaU3i@Rbi9VW0Of@IHYcJ#M|bChk0WjSd5z-#fXPuml7p}6rZwg z<9ulrJ1O3%&1~2r2cq3Y8T7k;w#`j^BEmCKWptAN?J6SR7GyCuU_6d3Cq1o0x?ghtanf?*O`nGDRpvAf_`04;JZ5p9so_Fc=2Lw}&Juz3*C~0}3VIPvt%fLv3{rdI*FDDLBVN zUTL{(W)42(Ru+}#mwB@ov7QR#7iEzA5?wy&-4B0~G-qFp(8zPEW?xvx?ht$dby)d5 zaxUghbJd)au|-6i`Th&TplzZZ0pff5kopFT{Qoqd_$OrW|D8bodr)PoX}KY*qI}9_ zxXxR&VL*W%ASFw$&x0W#O3)^2HX%UGE73tQW#c6L9+SzMoF$@o+ta%p0`G5zI@9dw zNZ}tpbTdt0X$3MdF_}(pd|un>@ixo-_F3Zp0<*{AKf@5w9YMH*)ShPyoq*KF>`QH{ zFzCr02=>(m6oi~}ITt$%N3$>Os{!ei-&*0eI*4C>h-q|I8c2qQ2WX~XU0F~-J*?8@ zcHTcnhl;V?&~i@%7aXEAdc@36Kt9N-#~jKlu`_p3AmqA2E9pybJ055&=q79j)EhgI zCcDW3bXj<$yI0Wmea9-4yjrwVKqqbvU;E&Bpb{Emh`TK|%G5|v9X%Fk%_3{GnoLp_ z8qP(o(rS#ra>#M{v2CjH%o|0~-I|2>D;9T4x3@0_2Mlc!TEL@(2<=pTB;7#eObb-j zz?7X??Qwz=t)%o4chgZVzy1xkyNPJ&thlrln$q%uv$HnDn0>$|S)16p&7GTO(o+Ra@AZCl?{JMzv3__JQ_$#H0>8GL}^|H~m-l zfN){U+H9L(rGdcpV$nQV^;Js&B&!VwN*Vc28cQ?Up_C0E1okYAKbLW!E3vgWsTf-F zZK{rfELLJt80+0jm@yNxrR{zo#;Y!MC6B&!VY`>`*p&yyS8+1cASAe>d%63c%Sh8> zFEt^rKDC9sOY;1{Osrt8)KHfj_&xDi&sUqc8oY%?CFu=4?`kgVwEZm6;`G}D9pzAb z-K`{5+L;wsF(<>K_DUB?_2mq)uCXYUwl}E;A7&iSPy-M#;8W!NMHi0zA^|Y^yi^_UDFrnt^#%BDn7atc=t?PuXj%Z2SUM-ch(83Z70< zKc(nZfBNxQUGBGXI-U2q`l+Y+b58^2t%CTY!Kknfb{Utju+A01tAa~q&ujWndL=VZ zXUCSZl(>$vSTPZ9&S|}AP?#~TT@1V-e?znD`&v<+`dN(mWg4eJl{L}3kI^FiLFJEFj(EN-4{_m9JKn0z5 z1h|#Sk3bH;zD4tjW755q*dkAW!2|rm&<(WMQ4aAf&WE31?<){+`2iJMbd8~tB{aD> zhsMxyy=vEe)DxQ#H|~nLyhl?kv%sB4Yyy%ATrpZ;g9DoF$ti@3+gv702qt)U*=v<4 zF$QdR&H!Q*BdC>w%+emlv7YcnNXP}D3+k>qZ5chsFvqZ`uZ^?i3+gs*PdUk%5q*3IUqggVFRT3{!Z~B&7s;Sp z=beEDUJIm}CWS?4g9S;FN!K)amQt*aJ) zZ+LYzfwGxp3*B->UK&*gGb@#d9WiD%N9>Fil;W{wEO&Jqsnpx@7XTqVNH;s2^LbiLt9JO4cvn|zPO3jb&QTiM0P z$i&IX)W!OL8;w=}V>JFOK}SmwMfnM;g79<0QA4CFg@sTArbv*e`OcVWE5^j3Q~F8h zW~2Y*Rg`p?qdF8`xnAcQP*4L^Vl#Hza0&+4YzKwz81MpcnDr3=6WNZlT>I zjr7XNi}K#Kukajlph}q?t4f&cW2bGfA-2~sc=t>?i^c_&TRF2sd3H3@)89q$Kr4F+ zp0bupVH9nlSur;vUv8hM96+}fmfl0%Wqv4`pX$hzDF)`Ttm@VkOTL2-zi$!x)Y=g(h`fp>En)a)Tav4-K~dy!5Iw3&Yh2v%Vtf z=AiJQ^NRZW#VWI9543_XQGx?iJLJQi8sU~k{i*c3xvIpZC znW|9d8Jq|9cuUlp9#arAPhV~}S4l)#cX{ZRkNAk&hE zOZ-qob~M`U-^_K!2uDtiK?n3&;UXBAcYEzuv>uX z9<*NG<+Ek>mF-}uz#q%bFHpQe6eo4m?bW^RS}UYmDbPoZTSL_4jeAcXyMCz-1fSx| zD2yK|MWH%XdWhjw-CSpgA{)=X0yb;qgr;Gb5wT`vPWqhS6*+CdW7Kb+GKy4XGGz7g zUu{!?oOOPne&^5O_xvmQf15x5eO#$l`KMcYt?b^qxoly*Z&ULL8R#z`W#K#!=wzj0 z%6GoC7>DtzstfTs{(Qa{VHA{pa6f;3sV?SBuoSA*`P5CXneU%;W@EpP&s*d^;)jf~ zKd!(gRqE=E_M!QngMl&(G*>ux#NVROvRmkh!n>vNm{>-fsytJMmK4`sLC()i$>R#{ zO!0{V)>Np)JjwA=7%5W`t#rA8SGH&%S#RbIY;jU0!Xc!`B&st;Wl;sddlr`xq^^zj zM0-BG6~&@_@H}|ZIx~GzZ<w0)lDTOyqKQ2)#Oj8(8$L@}`z_xiZQBo?!8*&3Q|;tSwZ%0 zpE7E!l^em0#jhIK(~g+9+QsJe>2TjRr$|+*)&0na+GftlwKlw3rx$V+!TcE>C zCpc>sjB~d7WRdOSF&W%3E8Ac`NVSF>i^E+C>p%bH(h!c0E93PYd#m3{=_3DD?8zF~ z+keyI|Cf4Q{4M>0toZFjO5a&rb*PI<@2_?ty9^y3&lVlBs;@K`RI=;R$@}fn);OiB zg7;S*YX}-X#LO?rL9X@Np+#U^n7PrZC;d7zec}H2dd}`gY<-RhP&&z#f$Go)WZ8EO zh{%fQiYSNxhmjgNac!TdQ)14J*>=rpnR0RDj+xC28F{oMklAq*2{$ktv4jS|Yfme1 z!RysrVqe2Bhg=mJ1~(HIUNu4%B7hDv{sNW_lZd)l3A}uF%XJ516la zVM#nWwM(~y30p5%#Lt#zkiNLiS~#}SNi$3?<1Ex+hggkW`!XC|Yv2L?T4jWiu4j5} zdXH!k;s-uSL0s9cha5Wy@%H+kFf2{LP)i_7G__4_gvbxAj9~s0esjhK-%3<#p)0S^ zw#&LWUBj3+?wI^wn6?BQNN>`%dqmSc5=<&g!UZ3Ph+$$x+Zzn7?S(0cOc9JnM}Nia zuspY)rn<6+l&H`#WTDH>xWO*qH)kKjAh(g#YC4{4`W0Ix$O2HS%4b=528lz8osP;4 zfFz@JVFspQ6)V4m&<-72BX&>IaFvhLYlFI=(h;+JT{w$dXx4B)@>!LUY`H&O^*3ND z*BZShvtbzr%N5`K3Eg(r^wV>8L3qFQxE;@o$xo?)qJ8t4i$~?+pTn(_E@XOcfNAvp zhL189gogR#>n9}$DgaUFA^w76to9y(8A<_=Od9??@vzV)MLL!2fT+n9(!tL|1E-)Q zMR5UU+#Ia#DdN(gWJ>-DQQt-1L&On&<(VxUg&J3s7v~azb1t&SmUgCFYsOQqn89O` z6wPl9;O6y0zc)VgS3zM2J>dVJ`{&Da;-stZ;P&|*OqBku;Fhzq{paS{z}dpiR>9HE z-oWhpqpjJ0A!Gh)6aAmwnvGgonrLOJ2>tM7s?vf`VFdv%iiCpD8A$>Ifn(0!j)W7o zjre8sJulRMLHRNv#Qxz*h>Pqqi*RlI3*@)DOs4bIR=e8_=krzeYs1GWvp?hH@LT}3 zBc>cdj5p9FhQ$!YaFLrT-9Dps~1=|(7recO|W3#RLTA;S411#-ktINnEH4Z}T zRhGQD62~;s9H5DvHTIYhuyMTf>s?yL}0!u30AJU;b=Nb;B@}3#g?{MHZU+ zKeegBjTFonN}^iFM@VikuQ;}1#^jiNb+aP3>56C4E4n?Y%{y6B##kvb4jWXj9dz0i zMa){-``A2oj+GgH+PcUc=uMy1D7*DJ=()Abb^{S)4+u=Hl(rVGe;h@)_t44kg%;qeX@-*=E@{?8Fk2{8*a{wRucNO z)*E$$rI=~;&fj};jr#$uW@;>@w&Hx)5!NQ5#Mnfv5_|3t3)pY`41jlYMWGLvi*yPH zJmg@9lsO8g`3S=l1CLD}9Uww1{?unwVj8%Fx=qO3I>6xSY#pKofEA6D5)c+phgvk&=`W)`SsBMHn>8+u zW8^LzjM&=|d~&B{o}Z$gM~Y-F86W%xobiUdb;kBayjo1zT}T-n*@j|S@hcmSRR^vv z=?YEryrKaE!Wu46unJdL0!$m~mAy<4@=c)s`d`*|4VAk`n%~*g{M|bKy|MrQE4%)g zTdK1Exbpa97P(l#1pf$5sr`{p0=sA
    ^Q5m5#rC9GIT5QA-&+_80`X4M(MjQ$B% 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%0As%mEn~(?!t*q%Gf6 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

    ~D~3WP;-5=qMJo39PY7IWz3<3` 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 z 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
  1. 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 z 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�GE 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 z�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

    LUl{E`$-odTly`lR(N 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

    a?$fp^z*-VRV+O7DFI&|cnehRita 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�!$o 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 literal 0 HcmV?d00001 diff --git a/third_party/closure/deps/depswriter.py b/third_party/closure/deps/depswriter.py new file mode 100755 index 0000000000..dfecc4bf74 --- /dev/null +++ b/third_party/closure/deps/depswriter.py @@ -0,0 +1,202 @@ +#!/usr/bin/env python +# +# Copyright 2009 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Generates out a Closure deps.js file given a list of JavaScript sources. + +Paths can be specified as arguments or (more commonly) specifying trees +with the flags (call with --help for descriptions). + +Usage: depswriter.py [path/to/js1.js [path/to/js2.js] ...] +""" + +import logging +import optparse +import os +import posixpath +import shlex +import sys + +import source +import treescan + + +__author__ = 'nnaze@google.com (Nathan Naze)' + + +def MakeDepsFile(source_map): + """Make a generated deps file. + + Args: + source_map: A dict map of the source path to source.Source object. + + Returns: + str, A generated deps file source. + """ + + # Write in path alphabetical order + paths = sorted(source_map.keys()) + + lines = [] + + for path in paths: + js_source = source_map[path] + + # We don't need to add entries that don't provide anything. + if js_source.provides: + lines.append(_GetDepsLine(path, js_source)) + + return ''.join(lines) + + +def _GetDepsLine(path, js_source): + """Get a deps.js file string for a source.""" + + provides = sorted(js_source.provides) + requires = sorted(js_source.requires) + + return 'goog.addDependency(\'%s\', %s, %s);\n' % (path, provides, requires) + + +def _GetOptionsParser(): + """Get the options parser.""" + + parser = optparse.OptionParser(__doc__) + + parser.add_option('--output_file', + dest='output_file', + action='store', + help=('If specified, write output to this path instead of ' + 'writing to standard output.')) + parser.add_option('--root', + dest='roots', + default=[], + action='append', + help='A root directory to scan for JS source files. ' + 'Paths of JS files in generated deps file will be ' + 'relative to this path. This flag may be specified ' + 'multiple times.') + parser.add_option('--root_with_prefix', + dest='roots_with_prefix', + default=[], + action='append', + help='A root directory to scan for JS source files, plus ' + 'a prefix (if either contains a space, surround with ' + 'quotes). Paths in generated deps file will be relative ' + 'to the root, but preceded by the prefix. This flag ' + 'may be specified multiple times.') + parser.add_option('--path_with_depspath', + dest='paths_with_depspath', + default=[], + action='append', + help='A path to a source file and an alternate path to ' + 'the file in the generated deps file (if either contains ' + 'a space, surround with whitespace). This flag may be ' + 'specified multiple times.') + return parser + + +def _NormalizePathSeparators(path): + """Replaces OS-specific path separators with POSIX-style slashes. + + Args: + path: str, A file path. + + Returns: + str, The path with any OS-specific path separators (such as backslash on + Windows) replaced with URL-compatible forward slashes. A no-op on systems + that use POSIX paths. + """ + return path.replace(os.sep, posixpath.sep) + + +def _GetRelativePathToSourceDict(root, prefix=''): + """Scans a top root directory for .js sources. + + Args: + root: str, Root directory. + prefix: str, Prefix for returned paths. + + Returns: + dict, A map of relative paths (with prefix, if given), to source.Source + objects. + """ + # Remember and restore the cwd when we're done. We work from the root so + # that paths are relative from the root. + start_wd = os.getcwd() + os.chdir(root) + + path_to_source = {} + for path in treescan.ScanTreeForJsFiles('.'): + prefixed_path = _NormalizePathSeparators(os.path.join(prefix, path)) + path_to_source[prefixed_path] = source.Source(source.GetFileContents(path)) + + os.chdir(start_wd) + + return path_to_source + + +def _GetPair(s): + """Return a string as a shell-parsed tuple. Two values expected.""" + try: + # shlex uses '\' as an escape character, so they must be escaped. + s = s.replace('\\', '\\\\') + first, second = shlex.split(s) + return (first, second) + except: + raise Exception('Unable to parse input line as a pair: %s' % s) + + +def main(): + """CLI frontend to MakeDepsFile.""" + logging.basicConfig(format=(sys.argv[0] + ': %(message)s'), + level=logging.INFO) + options, args = _GetOptionsParser().parse_args() + + path_to_source = {} + + # Roots without prefixes + for root in options.roots: + path_to_source.update(_GetRelativePathToSourceDict(root)) + + # Roots with prefixes + for root_and_prefix in options.roots_with_prefix: + root, prefix = _GetPair(root_and_prefix) + path_to_source.update(_GetRelativePathToSourceDict(root, prefix=prefix)) + + # Source paths + for path in args: + path_to_source[path] = source.Source(source.GetFileContents(path)) + + # Source paths with alternate deps paths + for path_with_depspath in options.paths_with_depspath: + srcpath, depspath = _GetPair(path_with_depspath) + path_to_source[depspath] = source.Source(source.GetFileContents(srcpath)) + + # Make our output pipe. + if options.output_file: + out = open(options.output_file, 'w') + else: + out = sys.stdout + + out.write('// This file was autogenerated by %s.\n' % sys.argv[0]) + out.write('// Please do not edit.\n') + + out.write(MakeDepsFile(path_to_source)) + + +if __name__ == '__main__': + main() diff --git a/third_party/closure/deps/source.py b/third_party/closure/deps/source.py new file mode 100644 index 0000000000..64e748587d --- /dev/null +++ b/third_party/closure/deps/source.py @@ -0,0 +1,118 @@ +# Copyright 2009 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Scans a source JS file for its provided and required namespaces. + +Simple class to scan a JavaScript file and express its dependencies. +""" + +__author__ = 'nnaze@google.com' + + +import re + +_BASE_REGEX_STRING = '^\s*goog\.%s\(\s*[\'"](.+)[\'"]\s*\)' +_PROVIDE_REGEX = re.compile(_BASE_REGEX_STRING % 'provide') +_REQUIRES_REGEX = re.compile(_BASE_REGEX_STRING % 'require') + + +class Source(object): + """Scans a JavaScript source for its provided and required namespaces.""" + + # Matches a "/* ... */" comment. + # Note: We can't definitively distinguish a "/*" in a string literal without a + # state machine tokenizer. We'll assume that a line starting with whitespace + # and "/*" is a comment. + _COMMENT_REGEX = re.compile( + r""" + ^\s* # Start of a new line and whitespace + /\* # Opening "/*" + .*? # Non greedy match of any characters (including newlines) + \*/ # Closing "*/""", + re.MULTILINE | re.DOTALL | re.VERBOSE) + + def __init__(self, source): + """Initialize a source. + + Args: + source: str, The JavaScript source. + """ + + self.provides = set() + self.requires = set() + + self._source = source + self._ScanSource() + + def GetSource(self): + """Get the source as a string.""" + return self._source + + @classmethod + def _StripComments(cls, source): + return cls._COMMENT_REGEX.sub('', source) + + @classmethod + def _HasProvideGoogFlag(cls, source): + """Determines whether the @provideGoog flag is in a comment.""" + for comment_content in cls._COMMENT_REGEX.findall(source): + if '@provideGoog' in comment_content: + return True + + return False + + def _ScanSource(self): + """Fill in provides and requires by scanning the source.""" + + stripped_source = self._StripComments(self.GetSource()) + + source_lines = stripped_source.splitlines() + for line in source_lines: + match = _PROVIDE_REGEX.match(line) + if match: + self.provides.add(match.group(1)) + match = _REQUIRES_REGEX.match(line) + if match: + self.requires.add(match.group(1)) + + # Closure's base file implicitly provides 'goog'. + # This is indicated with the @provideGoog flag. + if self._HasProvideGoogFlag(self.GetSource()): + + if len(self.provides) or len(self.requires): + raise Exception( + 'Base file should not provide or require namespaces.') + + self.provides.add('goog') + + +def GetFileContents(path): + """Get a file's contents as a string. + + Args: + path: str, Path to file. + + Returns: + str, Contents of file. + + Raises: + IOError: An error occurred opening or reading the file. + + """ + fileobj = open(path) + try: + return fileobj.read() + finally: + fileobj.close() diff --git a/third_party/closure/deps/treescan.py b/third_party/closure/deps/treescan.py new file mode 100644 index 0000000000..6694593aab --- /dev/null +++ b/third_party/closure/deps/treescan.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python +# +# Copyright 2010 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Shared utility functions for scanning directory trees.""" + +import os +import re + + +__author__ = 'nnaze@google.com (Nathan Naze)' + + +# Matches a .js file path. +_JS_FILE_REGEX = re.compile(r'^.+\.js$') + + +def ScanTreeForJsFiles(root): + """Scans a directory tree for JavaScript files. + + Args: + root: str, Path to a root directory. + + Returns: + An iterable of paths to JS files, relative to cwd. + """ + return ScanTree(root, path_filter=_JS_FILE_REGEX) + + +def ScanTree(root, path_filter=None, ignore_hidden=True): + """Scans a directory tree for files. + + Args: + root: str, Path to a root directory. + path_filter: A regular expression filter. If set, only paths matching + the path_filter are returned. + ignore_hidden: If True, do not follow or return hidden directories or files + (those starting with a '.' character). + + Yields: + A string path to files, relative to cwd. + """ + + def OnError(os_error): + raise os_error + + for dirpath, dirnames, filenames in os.walk(root, onerror=OnError): + # os.walk allows us to modify dirnames to prevent decent into particular + # directories. Avoid hidden directories. + for dirname in dirnames: + if ignore_hidden and dirname.startswith('.'): + dirnames.remove(dirname) + + for filename in filenames: + + # nothing that starts with '.' + if ignore_hidden and filename.startswith('.'): + continue + + fullpath = os.path.join(dirpath, filename) + + if path_filter and not path_filter.match(fullpath): + continue + + yield os.path.normpath(fullpath) diff --git a/third_party/closure/goog/base.js b/third_party/closure/goog/base.js new file mode 100644 index 0000000000..34983943e0 --- /dev/null +++ b/third_party/closure/goog/base.js @@ -0,0 +1,843 @@ +// Copyright 2006 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview Bootstrap for the Google JS Library (Closure). + * + * In uncompiled mode base.js will write out Closure's deps file, unless the + * global CLOSURE_NO_DEPS is set to true. This allows projects to + * include their own deps file(s) from different locations. + * + * + * @provideGoog + */ + + +/** + * @define {boolean} Overridden to true by the compiler when --closure_pass + * or --mark_as_compiled is specified. + */ +var COMPILED = false; + + +/** + * Base namespace for the Closure library. Checks to see goog is already + * defined in the current scope before assigning to prevent clobbering if + * base.js is loaded more than once. + * + * @const + */ +var goog = goog || {}; + + +/** + * Reference to the global context. In most cases this will be 'window'. + */ +goog.global = this; + + +/** + * A hook for overriding the define values in uncompiled mode. + * + * In uncompiled mode, {@code CLOSURE_UNCOMPILED_DEFINES} may be defined before + * loading base.js. If a key is defined in {@code CLOSURE_UNCOMPILED_DEFINES}, + * {@code goog.define} will use the value instead of the default value. This + * allows flags to be overwritten without compilation (this is normally + * accomplished with the compiler's "define" flag). + * + * Example: + *

    + *   var CLOSURE_UNCOMPILED_DEFINES = {'goog.DEBUG': false};
    + * 
    + * + * @type {Object.|undefined} + */ +goog.global.CLOSURE_UNCOMPILED_DEFINES; + + +/** + * A hook for overriding the define values in uncompiled or compiled mode, + * like CLOSURE_UNCOMPILED_DEFINES but effective in compiled code. In + * uncompiled code CLOSURE_UNCOMPILED_DEFINES takes precedence. + * + * Also unlike CLOSURE_UNCOMPILED_DEFINES the values must be number, boolean or + * string literals or the compiler will emit an error. + * + * While any @define value may be set, only those set with goog.define will be + * effective for uncompiled code. + * + * Example: + *
    + *   var CLOSURE_DEFINES = {'goog.DEBUG': false};
    + * 
    + * + * @type {Object.|undefined} + */ +goog.global.CLOSURE_DEFINES; + + +/** + * Returns true if the specified value is not undefined. + * WARNING: Do not use this to test if an object has a property. Use the in + * operator instead. + * + * @param {?} val Variable to test. + * @return {boolean} Whether variable is defined. + */ +goog.isDef = function(val) { + // void 0 always evaluates to undefined and hence we do not need to depend on + // the definition of the global variable named 'undefined'. + return val !== void 0; +}; + + +/** + * Builds an object structure for the provided namespace path, ensuring that + * names that already exist are not overwritten. For example: + * "a.b.c" -> a = {};a.b={};a.b.c={}; + * Used by goog.provide and goog.exportSymbol. + * @param {string} name name of the object that this file defines. + * @param {*=} opt_object the object to expose at the end of the path. + * @param {Object=} opt_objectToExportTo The object to add the path to; default + * is |goog.global|. + * @private + */ +goog.exportPath_ = function(name, opt_object, opt_objectToExportTo) { + var parts = name.split('.'); + var cur = opt_objectToExportTo || goog.global; + + // Internet Explorer exhibits strange behavior when throwing errors from + // methods externed in this manner. See the testExportSymbolExceptions in + // base_test.html for an example. + if (!(parts[0] in cur) && cur.execScript) { + cur.execScript('var ' + parts[0]); + } + + // Certain browsers cannot parse code in the form for((a in b); c;); + // This pattern is produced by the JSCompiler when it collapses the + // statement above into the conditional loop below. To prevent this from + // happening, use a for-loop and reserve the init logic as below. + + // Parentheses added to eliminate strict JS warning in Firefox. + for (var part; parts.length && (part = parts.shift());) { + if (!parts.length && goog.isDef(opt_object)) { + // last part and we have an object; use it + cur[part] = opt_object; + } else if (cur[part]) { + cur = cur[part]; + } else { + cur = cur[part] = {}; + } + } +}; + + +/** + * Defines a named value. In uncompiled mode, the value is retreived from + * CLOSURE_DEFINES or CLOSURE_UNCOMPILED_DEFINES if the object is defined and + * has the property specified, and otherwise used the defined defaultValue. + * When compiled, the default can be overridden using compiler command-line + * options. + * + * @param {string} name The distinguished name to provide. + * @param {string|number|boolean} defaultValue + */ +goog.define = function(name, defaultValue) { + var value = defaultValue; + if (!COMPILED) { + if (goog.global.CLOSURE_UNCOMPILED_DEFINES && + Object.prototype.hasOwnProperty.call( + goog.global.CLOSURE_UNCOMPILED_DEFINES, name)) { + value = goog.global.CLOSURE_UNCOMPILED_DEFINES[name]; + } else if (goog.global.CLOSURE_DEFINES && + Object.prototype.hasOwnProperty.call( + goog.global.CLOSURE_DEFINES, name)) { + value = goog.global.CLOSURE_DEFINES[name]; + } + } + goog.exportPath_(name, value); +}; + + +/** + * @define {boolean} DEBUG is provided as a convenience so that debugging code + * that should not be included in a production js_binary can be easily stripped + * by specifying --define goog.DEBUG=false to the JSCompiler. For example, most + * toString() methods should be declared inside an "if (goog.DEBUG)" conditional + * because they are generally used for debugging purposes and it is difficult + * for the JSCompiler to statically determine whether they are used. + */ +goog.DEBUG = true; + + +/** + * @define {string} LOCALE defines the locale being used for compilation. It is + * used to select locale specific data to be compiled in js binary. BUILD rule + * can specify this value by "--define goog.LOCALE=" as JSCompiler + * option. + * + * Take into account that the locale code format is important. You should use + * the canonical Unicode format with hyphen as a delimiter. Language must be + * lowercase, Language Script - Capitalized, Region - UPPERCASE. + * There are few examples: pt-BR, en, en-US, sr-Latin-BO, zh-Hans-CN. + * + * See more info about locale codes here: + * http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers + * + * For language codes you should use values defined by ISO 693-1. See it here + * http://www.w3.org/WAI/ER/IG/ert/iso639.htm. There is only one exception from + * this rule: the Hebrew language. For legacy reasons the old code (iw) should + * be used instead of the new code (he), see http://wiki/Main/IIISynonyms. + */ +goog.define('goog.LOCALE', 'en'); // default to en + + +/** + * @define {boolean} Whether this code is running on trusted sites. + * + * On untrusted sites, several native functions can be defined or overridden by + * external libraries like Prototype, Datejs, and JQuery and setting this flag + * to false forces closure to use its own implementations when possible. + * + * If your JavaScript can be loaded by a third party site and you are wary about + * relying on non-standard implementations, specify + * "--define goog.TRUSTED_SITE=false" to the JSCompiler. + */ +goog.define('goog.TRUSTED_SITE', true); + + +/** + * @define {boolean} Whether a project is expected to be running in strict mode. + * + * This define can be used to trigger alternate implementations compatible with + * running in EcmaScript Strict mode or warn about unavailable functionality. + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode + */ +goog.define('goog.STRICT_MODE_COMPATIBLE', false); + + +/** + * Creates object stubs for a namespace. The presence of one or more + * goog.provide() calls indicate that the file defines the given + * objects/namespaces. Provided objects must not be null or undefined. + * Build tools also scan for provide/require statements + * to discern dependencies, build dependency files (see deps.js), etc. + * @see goog.require + * @param {string} name Namespace provided by this file in the form + * "goog.package.part". + */ +goog.provide = function(name) { + if (!COMPILED) { + // Ensure that the same namespace isn't provided twice. + // A goog.module/goog.provide maps a goog.require to a specific file + if (goog.isProvided_(name)) { + throw Error('Namespace "' + name + '" already declared.'); + } + delete goog.implicitNamespaces_[name]; + + var namespace = name; + while ((namespace = namespace.substring(0, namespace.lastIndexOf('.')))) { + if (goog.getObjectByName(namespace)) { + break; + } + goog.implicitNamespaces_[namespace] = true; + } + } + + goog.exportPath_(name); +}; + + +/** + * Forward declares a symbol. This is an indication to the compiler that the + * symbol may be used in the source yet is not required and may not be provided + * in compilation. + * + * The most common usage of forward declaration is code that takes a type as a + * function parameter but does not need to require it. By forward declaring + * instead of requiring, no hard dependency is made, and (if not required + * elsewhere) the namespace may never be required and thus, not be pulled + * into the JavaScript binary. If it is required elsewhere, it will be type + * checked as normal. + * + * + * @param {string} name The namespace to forward declare in the form of + * "goog.package.part". + */ +goog.forwardDeclare = function(name) {}; + + +if (!COMPILED) { + + /** + * Check if the given name has been goog.provided. This will return false for + * names that are available only as implicit namespaces. + * @param {string} name name of the object to look for. + * @return {boolean} Whether the name has been provided. + * @private + */ + goog.isProvided_ = function(name) { + return (!goog.implicitNamespaces_[name] && + goog.isDefAndNotNull(goog.getObjectByName(name))); + }; + + /** + * Namespaces implicitly defined by goog.provide. For example, + * goog.provide('goog.events.Event') implicitly declares that 'goog' and + * 'goog.events' must be namespaces. + * + * @type {Object.} + * @private + */ + goog.implicitNamespaces_ = {}; +} + + +/** + * Returns an object based on its fully qualified external name. The object + * is not found if null or undefined. If you are using a compilation pass that + * renames property names beware that using this function will not find renamed + * properties. + * + * @param {string} name The fully qualified name. + * @param {Object=} opt_obj The object within which to look; default is + * |goog.global|. + * @return {?} The value (object or primitive) or, if not found, null. + */ +goog.getObjectByName = function(name, opt_obj) { + var parts = name.split('.'); + var cur = opt_obj || goog.global; + for (var part; part = parts.shift(); ) { + if (goog.isDefAndNotNull(cur[part])) { + cur = cur[part]; + } else { + return null; + } + } + return cur; +}; + + +/** + * Globalizes a whole namespace, such as goog or goog.lang. + * + * @param {Object} obj The namespace to globalize. + * @param {Object=} opt_global The object to add the properties to. + * @deprecated Properties may be explicitly exported to the global scope, but + * this should no longer be done in bulk. + */ +goog.globalize = function(obj, opt_global) { + var global = opt_global || goog.global; + for (var x in obj) { + global[x] = obj[x]; + } +}; + + +/** + * Adds a dependency from a file to the files it requires. + * @param {string} relPath The path to the js file. + * @param {Array} provides An array of strings with the names of the objects + * this file provides. + * @param {Array} requires An array of strings with the names of the objects + * this file requires. + */ +goog.addDependency = function(relPath, provides, requires) { + if (goog.DEPENDENCIES_ENABLED) { + var provide, require; + var path = relPath.replace(/\\/g, '/'); + var deps = goog.dependencies_; + for (var i = 0; provide = provides[i]; i++) { + deps.nameToPath[provide] = path; + } + for (var j = 0; require = requires[j]; j++) { + if (!(path in deps.requires)) { + deps.requires[path] = {}; + } + deps.requires[path][require] = true; + } + } +}; + + + + +// NOTE(nnaze): The debug DOM loader was included in base.js as an original way +// to do "debug-mode" development. The dependency system can sometimes be +// confusing, as can the debug DOM loader's asynchronous nature. +// +// With the DOM loader, a call to goog.require() is not blocking -- the script +// will not load until some point after the current script. If a namespace is +// needed at runtime, it needs to be defined in a previous script, or loaded via +// require() with its registered dependencies. +// User-defined namespaces may need their own deps file. See http://go/js_deps, +// http://go/genjsdeps, or, externally, DepsWriter. +// https://developers.google.com/closure/library/docs/depswriter +// +// Because of legacy clients, the DOM loader can't be easily removed from +// base.js. Work is being done to make it disableable or replaceable for +// different environments (DOM-less JavaScript interpreters like Rhino or V8, +// for example). See bootstrap/ for more information. + + +/** + * @define {boolean} Whether to enable the debug loader. + * + * If enabled, a call to goog.require() will attempt to load the namespace by + * appending a script tag to the DOM (if the namespace has been registered). + * + * If disabled, goog.require() will simply assert that the namespace has been + * provided (and depend on the fact that some outside tool correctly ordered + * the script). + */ +goog.define('goog.ENABLE_DEBUG_LOADER', true); + + +/** + * @param {string} msg + * @private + */ +goog.logToConsole_ = function(msg) { + if (goog.global.console) { + goog.global.console['error'](msg); + } +}; + + +/** + * Implements a system for the dynamic resolution of dependencies that works in + * parallel with the BUILD system. Note that all calls to goog.require will be + * stripped by the JSCompiler when the --closure_pass option is used. + * @see goog.provide + * @param {string} name Namespace to include (as was given in goog.provide()) in + * the form "goog.package.part". + * @return {?} If called within a goog.module file, the associated namespace or + * module otherwise null. + */ +goog.require = function(name) { + + // If the object already exists we do not need do do anything. + if (!COMPILED) { + if (goog.isProvided_(name)) { + return null; + } + + if (goog.ENABLE_DEBUG_LOADER) { + var path = goog.getPathFromDeps_(name); + if (path) { + goog.included_[path] = true; + goog.writeScripts_(); + return null; + } + } + + var errorMessage = 'goog.require could not find: ' + name; + goog.logToConsole_(errorMessage); + + throw Error(errorMessage); + } +}; + + +/** + * Path for included scripts. + * @type {string} + */ +goog.basePath = ''; + + +/** + * A hook for overriding the base path. + * @type {string|undefined} + */ +goog.global.CLOSURE_BASE_PATH; + + +/** + * Whether to write out Closure's deps file. By default, the deps are written. + * @type {boolean|undefined} + */ +goog.global.CLOSURE_NO_DEPS; + + +/** + * A function to import a single script. This is meant to be overridden when + * Closure is being run in non-HTML contexts, such as web workers. It's defined + * in the global scope so that it can be set before base.js is loaded, which + * allows deps.js to be imported properly. + * + * The function is passed the script source, which is a relative URI. It should + * return true if the script was imported, false otherwise. + * @type {(function(string): boolean)|undefined} + */ +goog.global.CLOSURE_IMPORT_SCRIPT; + + +/** + * True if goog.dependencies_ is available. + * @const {boolean} + */ +goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER; + + +if (goog.DEPENDENCIES_ENABLED) { + /** + * Object used to keep track of urls that have already been added. This record + * allows the prevention of circular dependencies. + * @type {Object} + * @private + */ + goog.included_ = {}; + + + /** + * This object is used to keep track of dependencies and other data that is + * used for loading scripts. + * @private + * @type {Object} + */ + goog.dependencies_ = { + nameToPath: {}, // many to 1 + requires: {}, // 1 to many + // Used when resolving dependencies to prevent us from visiting file twice. + visited: {}, + written: {} // Used to keep track of script files we have written. + }; + + + /** + * Tries to detect whether is in the context of an HTML document. + * @return {boolean} True if it looks like HTML document. + * @private + */ + goog.inHtmlDocument_ = function() { + var doc = goog.global.document; + return typeof doc != 'undefined' && + 'write' in doc; // XULDocument misses write. + }; + + + /** + * Tries to detect the base path of base.js script that bootstraps Closure. + * @private + */ + goog.findBasePath_ = function() { + if (goog.global.CLOSURE_BASE_PATH) { + goog.basePath = goog.global.CLOSURE_BASE_PATH; + return; + } else if (!goog.inHtmlDocument_()) { + return; + } + var doc = goog.global.document; + var scripts = doc.getElementsByTagName('script'); + // Search backwards since the current script is in almost all cases the one + // that has base.js. + for (var i = scripts.length - 1; i >= 0; --i) { + var src = scripts[i].src; + var qmark = src.lastIndexOf('?'); + var l = qmark == -1 ? src.length : qmark; + if (src.substr(l - 7, 7) == 'base.js') { + goog.basePath = src.substr(0, l - 7); + return; + } + } + }; + + + /** + * Imports a script if, and only if, that script hasn't already been imported. + * (Must be called at execution time) + * @param {string} src Script source. + * @param {string=} opt_sourceText The optionally source text to evaluate + * @private + */ + goog.importScript_ = function(src, opt_sourceText) { + var importScript = goog.global.CLOSURE_IMPORT_SCRIPT || + goog.writeScriptTag_; + if (importScript(src, opt_sourceText)) { + goog.dependencies_.written[src] = true; + } + }; + + + /** + * The default implementation of the import function. Writes a script tag to + * import the script. + * + * @param {string} src The script url. + * @param {string=} opt_sourceText The optionally source text to evaluate + * @return {boolean} True if the script was imported, false otherwise. + * @private + */ + goog.writeScriptTag_ = function(src, opt_sourceText) { + if (goog.inHtmlDocument_()) { + var doc = goog.global.document; + + // If the user tries to require a new symbol after document load, + // something has gone terribly wrong. Doing a document.write would + // wipe out the page. + if (doc.readyState == 'complete') { + // Certain test frameworks load base.js multiple times, which tries + // to write deps.js each time. If that happens, just fail silently. + // These frameworks wipe the page between each load of base.js, so this + // is OK. + var isDeps = /\bdeps.js$/.test(src); + if (isDeps) { + return false; + } else { + throw Error('Cannot write "' + src + '" after document load'); + } + } + + if (opt_sourceText === undefined) { + doc.write( + ' tag, strip the whitespace. + if data.rstrip(' \t') != data.rstrip(' \t\n\r\f'): + data = data.rstrip(' \t') + self._text += data + else: + self._AppendNewlines(data) + + def handle_comment(self, data): + """Internal handler for HTML comments. + + Args: + data: The text of the comment. + """ + self._AppendNewlines(data) + + def _AppendNewlines(self, data): + """Count the number of newlines in the given string and append them. + + This ensures line numbers are correct for reported errors. + + Args: + data: The data to count newlines in. + """ + # We append 'x' to both sides of the string to ensure that splitlines + # gives us an accurate count. + for i in xrange(len(('x' + data + 'x').splitlines()) - 1): + self._text += '\n' + + def GetScriptLines(self): + """Return the extracted script lines. + + Returns: + The extracted script lines as a list of strings. + """ + return self._text.splitlines() + + +def GetScriptLines(f): + """Extract script tag contents from the given HTML file. + + Args: + f: The HTML file. + + Returns: + Lines in the HTML file that are from script tags. + """ + extractor = ScriptExtractor() + + # The HTML parser chokes on text like Array., so we patch + # that bug by replacing the < with < - escaping all text inside script + # tags would be better but it's a bit of a catch 22. + contents = f.read() + contents = re.sub(r'<([^\s\w/])', + lambda x: '<%s' % x.group(1), + contents) + + extractor.feed(contents) + extractor.close() + return extractor.GetScriptLines() + + +def StripTags(str): + """Returns the string with HTML tags stripped. + + Args: + str: An html string. + + Returns: + The html string with all tags stripped. If there was a parse error, returns + the text successfully parsed so far. + """ + # Brute force approach to stripping as much HTML as possible. If there is a + # parsing error, don't strip text before parse error position, and continue + # trying from there. + final_text = '' + finished = False + while not finished: + try: + strip = _HtmlStripper() + strip.feed(str) + strip.close() + str = strip.get_output() + final_text += str + finished = True + except HTMLParser.HTMLParseError, e: + final_text += str[:e.offset] + str = str[e.offset + 1:] + + return final_text + + +class _HtmlStripper(HTMLParser.HTMLParser): + """Simple class to strip tags from HTML. + + Does so by doing nothing when encountering tags, and appending character data + to a buffer when that is encountered. + """ + def __init__(self): + self.reset() + self.__output = cStringIO.StringIO() + + def handle_data(self, d): + self.__output.write(d) + + def get_output(self): + return self.__output.getvalue() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/lintrunner.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/lintrunner.py new file mode 100755 index 0000000000..07842c7bfe --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/lintrunner.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python +# +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Interface for a lint running wrapper.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + + +class LintRunner(object): + """Interface for a lint running wrapper.""" + + def __init__(self): + if self.__class__ == LintRunner: + raise NotImplementedError('class LintRunner is abstract') + + def Run(self, filenames, error_handler): + """Run a linter on the given filenames. + + Args: + filenames: The filenames to check + error_handler: An ErrorHandler object + + Returns: + The error handler, which may have been used to collect error info. + """ diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/matcher.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/matcher.py new file mode 100755 index 0000000000..9b4402c671 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/matcher.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Regular expression based JavaScript matcher classes.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + +from closure_linter.common import position +from closure_linter.common import tokens + +# Shorthand +Token = tokens.Token +Position = position.Position + + +class Matcher(object): + """A token matcher. + + Specifies a pattern to match, the type of token it represents, what mode the + token changes to, and what mode the token applies to. + + Modes allow more advanced grammars to be incorporated, and are also necessary + to tokenize line by line. We can have different patterns apply to different + modes - i.e. looking for documentation while in comment mode. + + Attributes: + regex: The regular expression representing this matcher. + type: The type of token indicated by a successful match. + result_mode: The mode to move to after a successful match. + """ + + def __init__(self, regex, token_type, result_mode=None, line_start=False): + """Create a new matcher template. + + Args: + regex: The regular expression to match. + token_type: The type of token a successful match indicates. + result_mode: What mode to change to after a successful match. Defaults to + None, which means to not change the current mode. + line_start: Whether this matcher should only match string at the start + of a line. + """ + self.regex = regex + self.type = token_type + self.result_mode = result_mode + self.line_start = line_start diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/position.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/position.py new file mode 100755 index 0000000000..cebf17ef36 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/position.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python +# +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Classes to represent positions within strings.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + + +class Position(object): + """Object representing a segment of a string. + + Attributes: + start: The index in to the string where the segment starts. + length: The length of the string segment. + """ + + def __init__(self, start, length): + """Initialize the position object. + + Args: + start: The start index. + length: The number of characters to include. + """ + self.start = start + self.length = length + + def Get(self, string): + """Returns this range of the given string. + + Args: + string: The string to slice. + + Returns: + The string within the range specified by this object. + """ + return string[self.start:self.start + self.length] + + def Set(self, target, source): + """Sets this range within the target string to the source string. + + Args: + target: The target string. + source: The source string. + + Returns: + The resulting string + """ + return target[:self.start] + source + target[self.start + self.length:] + + def AtEnd(string): + """Create a Position representing the end of the given string. + + Args: + string: The string to represent the end of. + + Returns: + The created Position object. + """ + return Position(len(string), 0) + AtEnd = staticmethod(AtEnd) + + def IsAtEnd(self, string): + """Returns whether this position is at the end of the given string. + + Args: + string: The string to test for the end of. + + Returns: + Whether this position is at the end of the given string. + """ + return self.start == len(string) and self.length == 0 + + def AtBeginning(): + """Create a Position representing the beginning of any string. + + Returns: + The created Position object. + """ + return Position(0, 0) + AtBeginning = staticmethod(AtBeginning) + + def IsAtBeginning(self): + """Returns whether this position is at the beginning of any string. + + Returns: + Whether this position is at the beginning of any string. + """ + return self.start == 0 and self.length == 0 + + def All(string): + """Create a Position representing the entire string. + + Args: + string: The string to represent the entirety of. + + Returns: + The created Position object. + """ + return Position(0, len(string)) + All = staticmethod(All) + + def Index(index): + """Returns a Position object for the specified index. + + Args: + index: The index to select, inclusively. + + Returns: + The created Position object. + """ + return Position(index, 1) + Index = staticmethod(Index) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/simplefileflags.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/simplefileflags.py new file mode 100755 index 0000000000..3402bef3a1 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/simplefileflags.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python +# +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Determines the list of files to be checked from command line arguments.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + +import glob +import os +import re + +import gflags as flags + + +FLAGS = flags.FLAGS + +flags.DEFINE_multistring( + 'recurse', + None, + 'Recurse in to the subdirectories of the given path', + short_name='r') +flags.DEFINE_list( + 'exclude_directories', + ('_demos'), + 'Exclude the specified directories (only applicable along with -r or ' + '--presubmit)', + short_name='e') +flags.DEFINE_list( + 'exclude_files', + ('deps.js'), + 'Exclude the specified files', + short_name='x') + + +def MatchesSuffixes(filename, suffixes): + """Returns whether the given filename matches one of the given suffixes. + + Args: + filename: Filename to check. + suffixes: Sequence of suffixes to check. + + Returns: + Whether the given filename matches one of the given suffixes. + """ + suffix = filename[filename.rfind('.'):] + return suffix in suffixes + + +def _GetUserSpecifiedFiles(argv, suffixes): + """Returns files to be linted, specified directly on the command line. + + Can handle the '*' wildcard in filenames, but no other wildcards. + + Args: + argv: Sequence of command line arguments. The second and following arguments + are assumed to be files that should be linted. + suffixes: Expected suffixes for the file type being checked. + + Returns: + A sequence of files to be linted. + """ + files = argv[1:] or [] + all_files = [] + lint_files = [] + + # Perform any necessary globs. + for f in files: + if f.find('*') != -1: + for result in glob.glob(f): + all_files.append(result) + else: + all_files.append(f) + + for f in all_files: + if MatchesSuffixes(f, suffixes): + lint_files.append(f) + return lint_files + + +def _GetRecursiveFiles(suffixes): + """Returns files to be checked specified by the --recurse flag. + + Args: + suffixes: Expected suffixes for the file type being checked. + + Returns: + A list of files to be checked. + """ + lint_files = [] + # Perform any request recursion + if FLAGS.recurse: + for start in FLAGS.recurse: + for root, subdirs, files in os.walk(start): + for f in files: + if MatchesSuffixes(f, suffixes): + lint_files.append(os.path.join(root, f)) + return lint_files + + +def GetAllSpecifiedFiles(argv, suffixes): + """Returns all files specified by the user on the commandline. + + Args: + argv: Sequence of command line arguments. The second and following arguments + are assumed to be files that should be linted. + suffixes: Expected suffixes for the file type + + Returns: + A list of all files specified directly or indirectly (via flags) on the + command line by the user. + """ + files = _GetUserSpecifiedFiles(argv, suffixes) + + if FLAGS.recurse: + files += _GetRecursiveFiles(suffixes) + + return FilterFiles(files) + + +def FilterFiles(files): + """Filters the list of files to be linted be removing any excluded files. + + Filters out files excluded using --exclude_files and --exclude_directories. + + Args: + files: Sequence of files that needs filtering. + + Returns: + Filtered list of files to be linted. + """ + num_files = len(files) + + ignore_dirs_regexs = [] + for ignore in FLAGS.exclude_directories: + ignore_dirs_regexs.append(re.compile(r'(^|[\\/])%s[\\/]' % ignore)) + + result_files = [] + for f in files: + add_file = True + for exclude in FLAGS.exclude_files: + if f.endswith('/' + exclude) or f == exclude: + add_file = False + break + for ignore in ignore_dirs_regexs: + if ignore.search(f): + # Break out of ignore loop so we don't add to + # filtered files. + add_file = False + break + if add_file: + # Convert everything to absolute paths so we can easily remove duplicates + # using a set. + result_files.append(os.path.abspath(f)) + + skipped = num_files - len(result_files) + if skipped: + print 'Skipping %d file(s).' % skipped + + return set(result_files) + + +def GetFileList(argv, file_type, suffixes): + """Parse the flags and return the list of files to check. + + Args: + argv: Sequence of command line arguments. + suffixes: Sequence of acceptable suffixes for the file type. + + Returns: + The list of files to check. + """ + return sorted(GetAllSpecifiedFiles(argv, suffixes)) + + +def IsEmptyArgumentList(argv): + return not (len(argv[1:]) or FLAGS.recurse) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokenizer.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokenizer.py new file mode 100755 index 0000000000..9420ea3267 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokenizer.py @@ -0,0 +1,185 @@ +#!/usr/bin/env python +# +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Regular expression based lexer.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + +from closure_linter.common import tokens + +# Shorthand +Type = tokens.TokenType + + +class Tokenizer(object): + """General purpose tokenizer. + + Attributes: + mode: The latest mode of the tokenizer. This allows patterns to distinguish + if they are mid-comment, mid-parameter list, etc. + matchers: Dictionary of modes to sequences of matchers that define the + patterns to check at any given time. + default_types: Dictionary of modes to types, defining what type to give + non-matched text when in the given mode. Defaults to Type.NORMAL. + """ + + def __init__(self, starting_mode, matchers, default_types): + """Initialize the tokenizer. + + Args: + starting_mode: Mode to start in. + matchers: Dictionary of modes to sequences of matchers that defines the + patterns to check at any given time. + default_types: Dictionary of modes to types, defining what type to give + non-matched text when in the given mode. Defaults to Type.NORMAL. + """ + self.__starting_mode = starting_mode + self.matchers = matchers + self.default_types = default_types + + def TokenizeFile(self, file): + """Tokenizes the given file. + + Args: + file: An iterable that yields one line of the file at a time. + + Returns: + The first token in the file + """ + # The current mode. + self.mode = self.__starting_mode + # The first token in the stream. + self.__first_token = None + # The last token added to the token stream. + self.__last_token = None + # The current line number. + self.__line_number = 0 + + for line in file: + self.__line_number += 1 + self.__TokenizeLine(line) + + return self.__first_token + + def _CreateToken(self, string, token_type, line, line_number, values=None): + """Creates a new Token object (or subclass). + + Args: + string: The string of input the token represents. + token_type: The type of token. + line: The text of the line this token is in. + line_number: The line number of the token. + values: A dict of named values within the token. For instance, a + function declaration may have a value called 'name' which captures the + name of the function. + + Returns: + The newly created Token object. + """ + return tokens.Token(string, token_type, line, line_number, values, + line_number) + + def __TokenizeLine(self, line): + """Tokenizes the given line. + + Args: + line: The contents of the line. + """ + string = line.rstrip('\n\r\f') + line_number = self.__line_number + self.__start_index = 0 + + if not string: + self.__AddToken(self._CreateToken('', Type.BLANK_LINE, line, line_number)) + return + + normal_token = '' + index = 0 + while index < len(string): + for matcher in self.matchers[self.mode]: + if matcher.line_start and index > 0: + continue + + match = matcher.regex.match(string, index) + + if match: + if normal_token: + self.__AddToken( + self.__CreateNormalToken(self.mode, normal_token, line, + line_number)) + normal_token = '' + + # Add the match. + self.__AddToken(self._CreateToken(match.group(), matcher.type, line, + line_number, match.groupdict())) + + # Change the mode to the correct one for after this match. + self.mode = matcher.result_mode or self.mode + + # Shorten the string to be matched. + index = match.end() + + break + + else: + # If the for loop finishes naturally (i.e. no matches) we just add the + # first character to the string of consecutive non match characters. + # These will constitute a NORMAL token. + if string: + normal_token += string[index:index + 1] + index += 1 + + if normal_token: + self.__AddToken( + self.__CreateNormalToken(self.mode, normal_token, line, line_number)) + + def __CreateNormalToken(self, mode, string, line, line_number): + """Creates a normal token. + + Args: + mode: The current mode. + string: The string to tokenize. + line: The line of text. + line_number: The line number within the file. + + Returns: + A Token object, of the default type for the current mode. + """ + type = Type.NORMAL + if mode in self.default_types: + type = self.default_types[mode] + return self._CreateToken(string, type, line, line_number) + + def __AddToken(self, token): + """Add the given token to the token stream. + + Args: + token: The token to add. + """ + # Store the first token, or point the previous token to this one. + if not self.__first_token: + self.__first_token = token + else: + self.__last_token.next = token + + # Establish the doubly linked list + token.previous = self.__last_token + self.__last_token = token + + # Compute the character indices + token.start_index = self.__start_index + self.__start_index += token.length diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokens.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokens.py new file mode 100755 index 0000000000..4703998752 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokens.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python +# +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Classes to represent tokens and positions within them.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + + +class TokenType(object): + """Token types common to all languages.""" + NORMAL = 'normal' + WHITESPACE = 'whitespace' + BLANK_LINE = 'blank line' + + +class Token(object): + """Token class for intelligent text splitting. + + The token class represents a string of characters and an identifying type. + + Attributes: + type: The type of token. + string: The characters the token comprises. + length: The length of the token. + line: The text of the line the token is found in. + line_number: The number of the line the token is found in. + values: Dictionary of values returned from the tokens regex match. + previous: The token before this one. + next: The token after this one. + start_index: The character index in the line where this token starts. + attached_object: Object containing more information about this token. + metadata: Object containing metadata about this token. Must be added by + a separate metadata pass. + """ + + def __init__(self, string, token_type, line, line_number, values=None, + orig_line_number=None): + """Creates a new Token object. + + Args: + string: The string of input the token contains. + token_type: The type of token. + line: The text of the line this token is in. + line_number: The line number of the token. + values: A dict of named values within the token. For instance, a + function declaration may have a value called 'name' which captures the + name of the function. + orig_line_number: The line number of the original file this token comes + from. This should be only set during the tokenization process. For newly + created error fix tokens after that, it should be None. + """ + self.type = token_type + self.string = string + self.length = len(string) + self.line = line + self.line_number = line_number + self.orig_line_number = orig_line_number + self.values = values + self.is_deleted = False + + # These parts can only be computed when the file is fully tokenized + self.previous = None + self.next = None + self.start_index = None + + # This part is set in statetracker.py + # TODO(robbyw): Wrap this in to metadata + self.attached_object = None + + # This part is set in *metadatapass.py + self.metadata = None + + def IsFirstInLine(self): + """Tests if this token is the first token in its line. + + Returns: + Whether the token is the first token in its line. + """ + return not self.previous or self.previous.line_number != self.line_number + + def IsLastInLine(self): + """Tests if this token is the last token in its line. + + Returns: + Whether the token is the last token in its line. + """ + return not self.next or self.next.line_number != self.line_number + + def IsType(self, token_type): + """Tests if this token is of the given type. + + Args: + token_type: The type to test for. + + Returns: + True if the type of this token matches the type passed in. + """ + return self.type == token_type + + def IsAnyType(self, *token_types): + """Tests if this token is any of the given types. + + Args: + token_types: The types to check. Also accepts a single array. + + Returns: + True if the type of this token is any of the types passed in. + """ + if not isinstance(token_types[0], basestring): + return self.type in token_types[0] + else: + return self.type in token_types + + def __repr__(self): + return '' % (self.type, self.string, + self.values, self.line_number, + self.metadata) + + def __iter__(self): + """Returns a token iterator.""" + node = self + while node: + yield node + node = node.next + + def __reversed__(self): + """Returns a reverse-direction token iterator.""" + node = self + while node: + yield node + node = node.previous diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokens_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokens_test.py new file mode 100644 index 0000000000..01ec89d01b --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/common/tokens_test.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python +# Copyright 2011 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +__author__ = 'nnaze@google.com (Nathan Naze)' + +import unittest as googletest +from closure_linter.common import tokens + + +def _CreateDummyToken(): + return tokens.Token('foo', None, 1, 1) + + +def _CreateDummyTokens(count): + dummy_tokens = [] + for _ in xrange(count): + dummy_tokens.append(_CreateDummyToken()) + return dummy_tokens + + +def _SetTokensAsNeighbors(neighbor_tokens): + for i in xrange(len(neighbor_tokens)): + prev_index = i - 1 + next_index = i + 1 + + if prev_index >= 0: + neighbor_tokens[i].previous = neighbor_tokens[prev_index] + + if next_index < len(neighbor_tokens): + neighbor_tokens[i].next = neighbor_tokens[next_index] + + +class TokensTest(googletest.TestCase): + + def testIsFirstInLine(self): + + # First token in file (has no previous). + self.assertTrue(_CreateDummyToken().IsFirstInLine()) + + a, b = _CreateDummyTokens(2) + _SetTokensAsNeighbors([a, b]) + + # Tokens on same line + a.line_number = 30 + b.line_number = 30 + + self.assertFalse(b.IsFirstInLine()) + + # Tokens on different lines + b.line_number = 31 + self.assertTrue(b.IsFirstInLine()) + + def testIsLastInLine(self): + # Last token in file (has no next). + self.assertTrue(_CreateDummyToken().IsLastInLine()) + + a, b = _CreateDummyTokens(2) + _SetTokensAsNeighbors([a, b]) + + # Tokens on same line + a.line_number = 30 + b.line_number = 30 + self.assertFalse(a.IsLastInLine()) + + b.line_number = 31 + self.assertTrue(a.IsLastInLine()) + + def testIsType(self): + a = tokens.Token('foo', 'fakeType1', 1, 1) + self.assertTrue(a.IsType('fakeType1')) + self.assertFalse(a.IsType('fakeType2')) + + def testIsAnyType(self): + a = tokens.Token('foo', 'fakeType1', 1, 1) + self.assertTrue(a.IsAnyType(['fakeType1', 'fakeType2'])) + self.assertFalse(a.IsAnyType(['fakeType3', 'fakeType4'])) + + def testRepr(self): + a = tokens.Token('foo', 'fakeType1', 1, 1) + self.assertEquals('', str(a)) + + def testIter(self): + dummy_tokens = _CreateDummyTokens(5) + _SetTokensAsNeighbors(dummy_tokens) + a, b, c, d, e = dummy_tokens + + i = iter(a) + self.assertListEqual([a, b, c, d, e], list(i)) + + def testReverseIter(self): + dummy_tokens = _CreateDummyTokens(5) + _SetTokensAsNeighbors(dummy_tokens) + a, b, c, d, e = dummy_tokens + + ri = reversed(e) + self.assertListEqual([e, d, c, b, a], list(ri)) + + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/ecmalintrules.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/ecmalintrules.py new file mode 100755 index 0000000000..0db4d34374 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/ecmalintrules.py @@ -0,0 +1,828 @@ +#!/usr/bin/env python +# +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Core methods for checking EcmaScript files for common style guide violations. +""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)', + 'jacobr@google.com (Jacob Richman)') + +import re + +import gflags as flags + +from closure_linter import checkerbase +from closure_linter import ecmametadatapass +from closure_linter import error_check +from closure_linter import errorrules +from closure_linter import errors +from closure_linter import indentation +from closure_linter import javascripttokenizer +from closure_linter import javascripttokens +from closure_linter import statetracker +from closure_linter import tokenutil +from closure_linter.common import error +from closure_linter.common import position + + +FLAGS = flags.FLAGS +flags.DEFINE_list('custom_jsdoc_tags', '', 'Extra jsdoc tags to allow') + +# TODO(robbyw): Check for extra parens on return statements +# TODO(robbyw): Check for 0px in strings +# TODO(robbyw): Ensure inline jsDoc is in {} +# TODO(robbyw): Check for valid JS types in parameter docs + +# Shorthand +Context = ecmametadatapass.EcmaContext +Error = error.Error +Modes = javascripttokenizer.JavaScriptModes +Position = position.Position +Rule = error_check.Rule +Type = javascripttokens.JavaScriptTokenType + + +class EcmaScriptLintRules(checkerbase.LintRulesBase): + """EmcaScript lint style checking rules. + + Can be used to find common style errors in JavaScript, ActionScript and other + Ecma like scripting languages. Style checkers for Ecma scripting languages + should inherit from this style checker. + Please do not add any state to EcmaScriptLintRules or to any subclasses. + + All state should be added to the StateTracker subclass used for a particular + language. + """ + + # It will be initialized in constructor so the flags are initialized. + max_line_length = -1 + + # Static constants. + MISSING_PARAMETER_SPACE = re.compile(r',\S') + + EXTRA_SPACE = re.compile(r'(\(\s|\s\))') + + ENDS_WITH_SPACE = re.compile(r'\s$') + + ILLEGAL_TAB = re.compile(r'\t') + + # Regex used to split up complex types to check for invalid use of ? and |. + TYPE_SPLIT = re.compile(r'[,<>()]') + + # Regex for form of author lines after the @author tag. + AUTHOR_SPEC = re.compile(r'(\s*)[^\s]+@[^(\s]+(\s*)\(.+\)') + + # Acceptable tokens to remove for line too long testing. + LONG_LINE_IGNORE = frozenset( + ['*', '//', '@see'] + + ['@%s' % tag for tag in statetracker.DocFlag.HAS_TYPE]) + + JSDOC_FLAGS_DESCRIPTION_NOT_REQUIRED = frozenset([ + '@param', '@return', '@returns']) + + def __init__(self): + """Initialize this lint rule object.""" + checkerbase.LintRulesBase.__init__(self) + if EcmaScriptLintRules.max_line_length == -1: + EcmaScriptLintRules.max_line_length = errorrules.GetMaxLineLength() + + def Initialize(self, checker, limited_doc_checks, is_html): + """Initialize this lint rule object before parsing a new file.""" + checkerbase.LintRulesBase.Initialize(self, checker, limited_doc_checks, + is_html) + self._indentation = indentation.IndentationRules() + + def HandleMissingParameterDoc(self, token, param_name): + """Handle errors associated with a parameter missing a @param tag.""" + raise TypeError('Abstract method HandleMissingParameterDoc not implemented') + + def _CheckLineLength(self, last_token, state): + """Checks whether the line is too long. + + Args: + last_token: The last token in the line. + state: parser_state object that indicates the current state in the page + """ + # Start from the last token so that we have the flag object attached to + # and DOC_FLAG tokens. + line_number = last_token.line_number + token = last_token + + # Build a representation of the string where spaces indicate potential + # line-break locations. + line = [] + while token and token.line_number == line_number: + if state.IsTypeToken(token): + line.insert(0, 'x' * len(token.string)) + elif token.type in (Type.IDENTIFIER, Type.NORMAL): + # Dots are acceptable places to wrap. + line.insert(0, token.string.replace('.', ' ')) + else: + line.insert(0, token.string) + token = token.previous + + line = ''.join(line) + line = line.rstrip('\n\r\f') + try: + length = len(unicode(line, 'utf-8')) + except LookupError: + # Unknown encoding. The line length may be wrong, as was originally the + # case for utf-8 (see bug 1735846). For now just accept the default + # length, but as we find problems we can either add test for other + # possible encodings or return without an error to protect against + # false positives at the cost of more false negatives. + length = len(line) + + if length > EcmaScriptLintRules.max_line_length: + + # If the line matches one of the exceptions, then it's ok. + for long_line_regexp in self.GetLongLineExceptions(): + if long_line_regexp.match(last_token.line): + return + + # If the line consists of only one "word", or multiple words but all + # except one are ignoreable, then it's ok. + parts = set(line.split()) + + # We allow two "words" (type and name) when the line contains @param + max_parts = 1 + if '@param' in parts: + max_parts = 2 + + # Custom tags like @requires may have url like descriptions, so ignore + # the tag, similar to how we handle @see. + custom_tags = set(['@%s' % f for f in FLAGS.custom_jsdoc_tags]) + if (len(parts.difference(self.LONG_LINE_IGNORE | custom_tags)) + > max_parts): + self._HandleError( + errors.LINE_TOO_LONG, + 'Line too long (%d characters).' % len(line), last_token) + + def _CheckJsDocType(self, token): + """Checks the given type for style errors. + + Args: + token: The DOC_FLAG token for the flag whose type to check. + """ + flag = token.attached_object + flag_type = flag.type + if flag_type and flag_type is not None and not flag_type.isspace(): + pieces = self.TYPE_SPLIT.split(flag_type) + if len(pieces) == 1 and flag_type.count('|') == 1 and ( + flag_type.endswith('|null') or flag_type.startswith('null|')): + self._HandleError( + errors.JSDOC_PREFER_QUESTION_TO_PIPE_NULL, + 'Prefer "?Type" to "Type|null": "%s"' % flag_type, token) + + # TODO(user): We should do actual parsing of JsDoc types to report an + # error for wrong usage of '?' and '|' e.g. {?number|string|null} etc. + + if error_check.ShouldCheck(Rule.BRACES_AROUND_TYPE) and ( + flag.type_start_token.type != Type.DOC_START_BRACE or + flag.type_end_token.type != Type.DOC_END_BRACE): + self._HandleError( + errors.MISSING_BRACES_AROUND_TYPE, + 'Type must always be surrounded by curly braces.', token) + + def _CheckForMissingSpaceBeforeToken(self, token): + """Checks for a missing space at the beginning of a token. + + Reports a MISSING_SPACE error if the token does not begin with a space or + the previous token doesn't end with a space and the previous token is on the + same line as the token. + + Args: + token: The token being checked + """ + # TODO(user): Check if too many spaces? + if (len(token.string) == len(token.string.lstrip()) and + token.previous and token.line_number == token.previous.line_number and + len(token.previous.string) - len(token.previous.string.rstrip()) == 0): + self._HandleError( + errors.MISSING_SPACE, + 'Missing space before "%s"' % token.string, + token, + position=Position.AtBeginning()) + + def _CheckOperator(self, token): + """Checks an operator for spacing and line style. + + Args: + token: The operator token. + """ + last_code = token.metadata.last_code + + if not self._ExpectSpaceBeforeOperator(token): + if (token.previous and token.previous.type == Type.WHITESPACE and + last_code and last_code.type in (Type.NORMAL, Type.IDENTIFIER)): + self._HandleError( + errors.EXTRA_SPACE, 'Extra space before "%s"' % token.string, + token.previous, position=Position.All(token.previous.string)) + + elif (token.previous and + not token.previous.IsComment() and + token.previous.type in Type.EXPRESSION_ENDER_TYPES): + self._HandleError(errors.MISSING_SPACE, + 'Missing space before "%s"' % token.string, token, + position=Position.AtBeginning()) + + # Check that binary operators are not used to start lines. + if ((not last_code or last_code.line_number != token.line_number) and + not token.metadata.IsUnaryOperator()): + self._HandleError( + errors.LINE_STARTS_WITH_OPERATOR, + 'Binary operator should go on previous line "%s"' % token.string, + token) + + def _ExpectSpaceBeforeOperator(self, token): + """Returns whether a space should appear before the given operator token. + + Args: + token: The operator token. + + Returns: + Whether there should be a space before the token. + """ + if token.string == ',' or token.metadata.IsUnaryPostOperator(): + return False + + # Colons should appear in labels, object literals, the case of a switch + # statement, and ternary operator. Only want a space in the case of the + # ternary operator. + if (token.string == ':' and + token.metadata.context.type in (Context.LITERAL_ELEMENT, + Context.CASE_BLOCK, + Context.STATEMENT)): + return False + + if token.metadata.IsUnaryOperator() and token.IsFirstInLine(): + return False + + return True + + def CheckToken(self, token, state): + """Checks a token, given the current parser_state, for warnings and errors. + + Args: + token: The current token under consideration + state: parser_state object that indicates the current state in the page + """ + # Store some convenience variables + first_in_line = token.IsFirstInLine() + last_in_line = token.IsLastInLine() + last_non_space_token = state.GetLastNonSpaceToken() + + token_type = token.type + + # Process the line change. + if not self._is_html and error_check.ShouldCheck(Rule.INDENTATION): + # TODO(robbyw): Support checking indentation in HTML files. + indentation_errors = self._indentation.CheckToken(token, state) + for indentation_error in indentation_errors: + self._HandleError(*indentation_error) + + if last_in_line: + self._CheckLineLength(token, state) + + if token_type == Type.PARAMETERS: + # Find missing spaces in parameter lists. + if self.MISSING_PARAMETER_SPACE.search(token.string): + fix_data = ', '.join([s.strip() for s in token.string.split(',')]) + self._HandleError(errors.MISSING_SPACE, 'Missing space after ","', + token, position=None, fix_data=fix_data.strip()) + + # Find extra spaces at the beginning of parameter lists. Make sure + # we aren't at the beginning of a continuing multi-line list. + if not first_in_line: + space_count = len(token.string) - len(token.string.lstrip()) + if space_count: + self._HandleError(errors.EXTRA_SPACE, 'Extra space after "("', + token, position=Position(0, space_count)) + + elif (token_type == Type.START_BLOCK and + token.metadata.context.type == Context.BLOCK): + self._CheckForMissingSpaceBeforeToken(token) + + elif token_type == Type.END_BLOCK: + # This check is for object literal end block tokens, but there is no need + # to test that condition since a comma at the end of any other kind of + # block is undoubtedly a parse error. + last_code = token.metadata.last_code + if last_code.IsOperator(','): + self._HandleError( + errors.COMMA_AT_END_OF_LITERAL, + 'Illegal comma at end of object literal', last_code, + position=Position.All(last_code.string)) + + if state.InFunction() and state.IsFunctionClose(): + is_immediately_called = (token.next and + token.next.type == Type.START_PAREN) + if state.InTopLevelFunction(): + # A semicolons should not be included at the end of a function + # declaration. + if not state.InAssignedFunction(): + if not last_in_line and token.next.type == Type.SEMICOLON: + self._HandleError( + errors.ILLEGAL_SEMICOLON_AFTER_FUNCTION, + 'Illegal semicolon after function declaration', + token.next, position=Position.All(token.next.string)) + + # A semicolon should be included at the end of a function expression + # that is not immediately called. + if state.InAssignedFunction(): + if not is_immediately_called and ( + last_in_line or token.next.type != Type.SEMICOLON): + self._HandleError( + errors.MISSING_SEMICOLON_AFTER_FUNCTION, + 'Missing semicolon after function assigned to a variable', + token, position=Position.AtEnd(token.string)) + + if state.InInterfaceMethod() and last_code.type != Type.START_BLOCK: + self._HandleError(errors.INTERFACE_METHOD_CANNOT_HAVE_CODE, + 'Interface methods cannot contain code', last_code) + + elif (state.IsBlockClose() and + token.next and token.next.type == Type.SEMICOLON): + if (last_code.metadata.context.parent.type != Context.OBJECT_LITERAL + and last_code.metadata.context.type != Context.OBJECT_LITERAL): + self._HandleError( + errors.REDUNDANT_SEMICOLON, + 'No semicolon is required to end a code block', + token.next, position=Position.All(token.next.string)) + + elif token_type == Type.SEMICOLON: + if token.previous and token.previous.type == Type.WHITESPACE: + self._HandleError( + errors.EXTRA_SPACE, 'Extra space before ";"', + token.previous, position=Position.All(token.previous.string)) + + if token.next and token.next.line_number == token.line_number: + if token.metadata.context.type != Context.FOR_GROUP_BLOCK: + # TODO(robbyw): Error about no multi-statement lines. + pass + + elif token.next.type not in ( + Type.WHITESPACE, Type.SEMICOLON, Type.END_PAREN): + self._HandleError( + errors.MISSING_SPACE, + 'Missing space after ";" in for statement', + token.next, + position=Position.AtBeginning()) + + last_code = token.metadata.last_code + if last_code and last_code.type == Type.SEMICOLON: + # Allow a single double semi colon in for loops for cases like: + # for (;;) { }. + # NOTE(user): This is not a perfect check, and will not throw an error + # for cases like: for (var i = 0;; i < n; i++) {}, but then your code + # probably won't work either. + for_token = tokenutil.CustomSearch( + last_code, + lambda token: token.type == Type.KEYWORD and token.string == 'for', + end_func=lambda token: token.type == Type.SEMICOLON, + distance=None, + reverse=True) + + if not for_token: + self._HandleError(errors.REDUNDANT_SEMICOLON, 'Redundant semicolon', + token, position=Position.All(token.string)) + + elif token_type == Type.START_PAREN: + # Ensure that opening parentheses have a space before any keyword + # that is not being invoked like a member function. + if (token.previous and token.previous.type == Type.KEYWORD and + (not token.previous.metadata or + not token.previous.metadata.last_code or + not token.previous.metadata.last_code.string or + token.previous.metadata.last_code.string[-1:] != '.')): + self._HandleError(errors.MISSING_SPACE, 'Missing space before "("', + token, position=Position.AtBeginning()) + elif token.previous and token.previous.type == Type.WHITESPACE: + before_space = token.previous.previous + # Ensure that there is no extra space before a function invocation, + # even if the function being invoked happens to be a keyword. + if (before_space and before_space.line_number == token.line_number and + before_space.type == Type.IDENTIFIER or + (before_space.type == Type.KEYWORD and before_space.metadata and + before_space.metadata.last_code and + before_space.metadata.last_code.string and + before_space.metadata.last_code.string[-1:] == '.')): + self._HandleError( + errors.EXTRA_SPACE, 'Extra space before "("', + token.previous, position=Position.All(token.previous.string)) + + elif token_type == Type.START_BRACKET: + self._HandleStartBracket(token, last_non_space_token) + elif token_type in (Type.END_PAREN, Type.END_BRACKET): + # Ensure there is no space before closing parentheses, except when + # it's in a for statement with an omitted section, or when it's at the + # beginning of a line. + if (token.previous and token.previous.type == Type.WHITESPACE and + not token.previous.IsFirstInLine() and + not (last_non_space_token and last_non_space_token.line_number == + token.line_number and + last_non_space_token.type == Type.SEMICOLON)): + self._HandleError( + errors.EXTRA_SPACE, 'Extra space before "%s"' % + token.string, token.previous, + position=Position.All(token.previous.string)) + + if token.type == Type.END_BRACKET: + last_code = token.metadata.last_code + if last_code.IsOperator(','): + self._HandleError( + errors.COMMA_AT_END_OF_LITERAL, + 'Illegal comma at end of array literal', last_code, + position=Position.All(last_code.string)) + + elif token_type == Type.WHITESPACE: + if self.ILLEGAL_TAB.search(token.string): + if token.IsFirstInLine(): + if token.next: + self._HandleError( + errors.ILLEGAL_TAB, + 'Illegal tab in whitespace before "%s"' % token.next.string, + token, position=Position.All(token.string)) + else: + self._HandleError( + errors.ILLEGAL_TAB, + 'Illegal tab in whitespace', + token, position=Position.All(token.string)) + else: + self._HandleError( + errors.ILLEGAL_TAB, + 'Illegal tab in whitespace after "%s"' % token.previous.string, + token, position=Position.All(token.string)) + + # Check whitespace length if it's not the first token of the line and + # if it's not immediately before a comment. + if last_in_line: + # Check for extra whitespace at the end of a line. + self._HandleError(errors.EXTRA_SPACE, 'Extra space at end of line', + token, position=Position.All(token.string)) + elif not first_in_line and not token.next.IsComment(): + if token.length > 1: + self._HandleError( + errors.EXTRA_SPACE, 'Extra space after "%s"' % + token.previous.string, token, + position=Position(1, len(token.string) - 1)) + + elif token_type == Type.OPERATOR: + self._CheckOperator(token) + elif token_type == Type.DOC_FLAG: + flag = token.attached_object + + if flag.flag_type == 'bug': + # TODO(robbyw): Check for exactly 1 space on the left. + string = token.next.string.lstrip() + string = string.split(' ', 1)[0] + + if not string.isdigit(): + self._HandleError(errors.NO_BUG_NUMBER_AFTER_BUG_TAG, + '@bug should be followed by a bug number', token) + + elif flag.flag_type == 'suppress': + if flag.type is None: + # A syntactically invalid suppress tag will get tokenized as a normal + # flag, indicating an error. + self._HandleError( + errors.INCORRECT_SUPPRESS_SYNTAX, + 'Invalid suppress syntax: should be @suppress {errortype}. ' + 'Spaces matter.', token) + else: + for suppress_type in re.split(r'\||,', flag.type): + if suppress_type not in state.GetDocFlag().SUPPRESS_TYPES: + self._HandleError( + errors.INVALID_SUPPRESS_TYPE, + 'Invalid suppression type: %s' % suppress_type, token) + + elif (error_check.ShouldCheck(Rule.WELL_FORMED_AUTHOR) and + flag.flag_type == 'author'): + # TODO(user): In non strict mode check the author tag for as much as + # it exists, though the full form checked below isn't required. + string = token.next.string + result = self.AUTHOR_SPEC.match(string) + if not result: + self._HandleError(errors.INVALID_AUTHOR_TAG_DESCRIPTION, + 'Author tag line should be of the form: ' + '@author foo@somewhere.com (Your Name)', + token.next) + else: + # Check spacing between email address and name. Do this before + # checking earlier spacing so positions are easier to calculate for + # autofixing. + num_spaces = len(result.group(2)) + if num_spaces < 1: + self._HandleError(errors.MISSING_SPACE, + 'Missing space after email address', + token.next, position=Position(result.start(2), 0)) + elif num_spaces > 1: + self._HandleError( + errors.EXTRA_SPACE, 'Extra space after email address', + token.next, + position=Position(result.start(2) + 1, num_spaces - 1)) + + # Check for extra spaces before email address. Can't be too few, if + # not at least one we wouldn't match @author tag. + num_spaces = len(result.group(1)) + if num_spaces > 1: + self._HandleError(errors.EXTRA_SPACE, + 'Extra space before email address', + token.next, position=Position(1, num_spaces - 1)) + + elif (flag.flag_type in state.GetDocFlag().HAS_DESCRIPTION and + not self._limited_doc_checks): + if flag.flag_type == 'param': + if flag.name is None: + self._HandleError(errors.MISSING_JSDOC_PARAM_NAME, + 'Missing name in @param tag', token) + + if not flag.description or flag.description is None: + flag_name = token.type + if 'name' in token.values: + flag_name = '@' + token.values['name'] + + if flag_name not in self.JSDOC_FLAGS_DESCRIPTION_NOT_REQUIRED: + self._HandleError( + errors.MISSING_JSDOC_TAG_DESCRIPTION, + 'Missing description in %s tag' % flag_name, token) + else: + self._CheckForMissingSpaceBeforeToken(flag.description_start_token) + + if flag.flag_type in state.GetDocFlag().HAS_TYPE: + if flag.type_start_token is not None: + self._CheckForMissingSpaceBeforeToken( + token.attached_object.type_start_token) + + if flag.type and not flag.type.isspace(): + self._CheckJsDocType(token) + + if token_type in (Type.DOC_FLAG, Type.DOC_INLINE_FLAG): + if (token.values['name'] not in state.GetDocFlag().LEGAL_DOC and + token.values['name'] not in FLAGS.custom_jsdoc_tags): + self._HandleError( + errors.INVALID_JSDOC_TAG, + 'Invalid JsDoc tag: %s' % token.values['name'], token) + + if (error_check.ShouldCheck(Rule.NO_BRACES_AROUND_INHERIT_DOC) and + token.values['name'] == 'inheritDoc' and + token_type == Type.DOC_INLINE_FLAG): + self._HandleError(errors.UNNECESSARY_BRACES_AROUND_INHERIT_DOC, + 'Unnecessary braces around @inheritDoc', + token) + + elif token_type == Type.SIMPLE_LVALUE: + identifier = token.values['identifier'] + + if ((not state.InFunction() or state.InConstructor()) and + state.InTopLevel() and not state.InObjectLiteralDescendant()): + jsdoc = state.GetDocComment() + if not state.HasDocComment(identifier): + # Only test for documentation on identifiers with .s in them to + # avoid checking things like simple variables. We don't require + # documenting assignments to .prototype itself (bug 1880803). + if (not state.InConstructor() and + identifier.find('.') != -1 and not + identifier.endswith('.prototype') and not + self._limited_doc_checks): + comment = state.GetLastComment() + if not (comment and comment.lower().count('jsdoc inherited')): + self._HandleError( + errors.MISSING_MEMBER_DOCUMENTATION, + "No docs found for member '%s'" % identifier, + token) + elif jsdoc and (not state.InConstructor() or + identifier.startswith('this.')): + # We are at the top level and the function/member is documented. + if identifier.endswith('_') and not identifier.endswith('__'): + # Can have a private class which inherits documentation from a + # public superclass. + # + # @inheritDoc is deprecated in favor of using @override, and they + if (jsdoc.HasFlag('override') and not jsdoc.HasFlag('constructor') + and ('accessControls' not in jsdoc.suppressions)): + self._HandleError( + errors.INVALID_OVERRIDE_PRIVATE, + '%s should not override a private member.' % identifier, + jsdoc.GetFlag('override').flag_token) + if (jsdoc.HasFlag('inheritDoc') and not jsdoc.HasFlag('constructor') + and ('accessControls' not in jsdoc.suppressions)): + self._HandleError( + errors.INVALID_INHERIT_DOC_PRIVATE, + '%s should not inherit from a private member.' % identifier, + jsdoc.GetFlag('inheritDoc').flag_token) + if (not jsdoc.HasFlag('private') and + ('underscore' not in jsdoc.suppressions) and not + ((jsdoc.HasFlag('inheritDoc') or jsdoc.HasFlag('override')) and + ('accessControls' in jsdoc.suppressions))): + self._HandleError( + errors.MISSING_PRIVATE, + 'Member "%s" must have @private JsDoc.' % + identifier, token) + if jsdoc.HasFlag('private') and 'underscore' in jsdoc.suppressions: + self._HandleError( + errors.UNNECESSARY_SUPPRESS, + '@suppress {underscore} is not necessary with @private', + jsdoc.suppressions['underscore']) + elif (jsdoc.HasFlag('private') and + not self.InExplicitlyTypedLanguage()): + # It is convention to hide public fields in some ECMA + # implementations from documentation using the @private tag. + self._HandleError( + errors.EXTRA_PRIVATE, + 'Member "%s" must not have @private JsDoc' % + identifier, token) + + # These flags are only legal on localizable message definitions; + # such variables always begin with the prefix MSG_. + for f in ('desc', 'hidden', 'meaning'): + if (jsdoc.HasFlag(f) + and not identifier.startswith('MSG_') + and identifier.find('.MSG_') == -1): + self._HandleError( + errors.INVALID_USE_OF_DESC_TAG, + 'Member "%s" should not have @%s JsDoc' % (identifier, f), + token) + + # Check for illegaly assigning live objects as prototype property values. + index = identifier.find('.prototype.') + # Ignore anything with additional .s after the prototype. + if index != -1 and identifier.find('.', index + 11) == -1: + equal_operator = tokenutil.SearchExcept(token, Type.NON_CODE_TYPES) + next_code = tokenutil.SearchExcept(equal_operator, Type.NON_CODE_TYPES) + if next_code and ( + next_code.type in (Type.START_BRACKET, Type.START_BLOCK) or + next_code.IsOperator('new')): + self._HandleError( + errors.ILLEGAL_PROTOTYPE_MEMBER_VALUE, + 'Member %s cannot have a non-primitive value' % identifier, + token) + + elif token_type == Type.END_PARAMETERS: + # Find extra space at the end of parameter lists. We check the token + # prior to the current one when it is a closing paren. + if (token.previous and token.previous.type == Type.PARAMETERS + and self.ENDS_WITH_SPACE.search(token.previous.string)): + self._HandleError(errors.EXTRA_SPACE, 'Extra space before ")"', + token.previous) + + jsdoc = state.GetDocComment() + if state.GetFunction().is_interface: + if token.previous and token.previous.type == Type.PARAMETERS: + self._HandleError( + errors.INTERFACE_CONSTRUCTOR_CANNOT_HAVE_PARAMS, + 'Interface constructor cannot have parameters', + token.previous) + elif (state.InTopLevel() and jsdoc and not jsdoc.HasFlag('see') + and not jsdoc.InheritsDocumentation() + and not state.InObjectLiteralDescendant() and not + jsdoc.IsInvalidated()): + distance, edit = jsdoc.CompareParameters(state.GetParams()) + if distance: + params_iter = iter(state.GetParams()) + docs_iter = iter(jsdoc.ordered_params) + + for op in edit: + if op == 'I': + # Insertion. + # Parsing doc comments is the same for all languages + # but some languages care about parameters that don't have + # doc comments and some languages don't care. + # Languages that don't allow variables to by typed such as + # JavaScript care but languages such as ActionScript or Java + # that allow variables to be typed don't care. + if not self._limited_doc_checks: + self.HandleMissingParameterDoc(token, params_iter.next()) + + elif op == 'D': + # Deletion + self._HandleError(errors.EXTRA_PARAMETER_DOCUMENTATION, + 'Found docs for non-existing parameter: "%s"' % + docs_iter.next(), token) + elif op == 'S': + # Substitution + if not self._limited_doc_checks: + self._HandleError( + errors.WRONG_PARAMETER_DOCUMENTATION, + 'Parameter mismatch: got "%s", expected "%s"' % + (params_iter.next(), docs_iter.next()), token) + + else: + # Equality - just advance the iterators + params_iter.next() + docs_iter.next() + + elif token_type == Type.STRING_TEXT: + # If this is the first token after the start of the string, but it's at + # the end of a line, we know we have a multi-line string. + if token.previous.type in ( + Type.SINGLE_QUOTE_STRING_START, + Type.DOUBLE_QUOTE_STRING_START) and last_in_line: + self._HandleError(errors.MULTI_LINE_STRING, + 'Multi-line strings are not allowed', token) + + # This check is orthogonal to the ones above, and repeats some types, so + # it is a plain if and not an elif. + if token.type in Type.COMMENT_TYPES: + if self.ILLEGAL_TAB.search(token.string): + self._HandleError(errors.ILLEGAL_TAB, + 'Illegal tab in comment "%s"' % token.string, token) + + trimmed = token.string.rstrip() + if last_in_line and token.string != trimmed: + # Check for extra whitespace at the end of a line. + self._HandleError( + errors.EXTRA_SPACE, 'Extra space at end of line', token, + position=Position(len(trimmed), len(token.string) - len(trimmed))) + + # This check is also orthogonal since it is based on metadata. + if token.metadata.is_implied_semicolon: + self._HandleError(errors.MISSING_SEMICOLON, + 'Missing semicolon at end of line', token) + + def _HandleStartBracket(self, token, last_non_space_token): + """Handles a token that is an open bracket. + + Args: + token: The token to handle. + last_non_space_token: The last token that was not a space. + """ + if (not token.IsFirstInLine() and token.previous.type == Type.WHITESPACE and + last_non_space_token and + last_non_space_token.type in Type.EXPRESSION_ENDER_TYPES): + self._HandleError( + errors.EXTRA_SPACE, 'Extra space before "["', + token.previous, position=Position.All(token.previous.string)) + # If the [ token is the first token in a line we shouldn't complain + # about a missing space before [. This is because some Ecma script + # languages allow syntax like: + # [Annotation] + # class MyClass {...} + # So we don't want to blindly warn about missing spaces before [. + # In the the future, when rules for computing exactly how many spaces + # lines should be indented are added, then we can return errors for + # [ tokens that are improperly indented. + # For example: + # var someVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariableName = + # [a,b,c]; + # should trigger a proper indentation warning message as [ is not indented + # by four spaces. + elif (not token.IsFirstInLine() and token.previous and + token.previous.type not in ( + [Type.WHITESPACE, Type.START_PAREN, Type.START_BRACKET] + + Type.EXPRESSION_ENDER_TYPES)): + self._HandleError(errors.MISSING_SPACE, 'Missing space before "["', + token, position=Position.AtBeginning()) + + def Finalize(self, state): + """Perform all checks that need to occur after all lines are processed. + + Args: + state: State of the parser after parsing all tokens + + Raises: + TypeError: If not overridden. + """ + last_non_space_token = state.GetLastNonSpaceToken() + # Check last line for ending with newline. + if state.GetLastLine() and not ( + state.GetLastLine().isspace() or + state.GetLastLine().rstrip('\n\r\f') != state.GetLastLine()): + self._HandleError( + errors.FILE_MISSING_NEWLINE, + 'File does not end with new line. (%s)' % state.GetLastLine(), + last_non_space_token) + + try: + self._indentation.Finalize() + except Exception, e: + self._HandleError( + errors.FILE_DOES_NOT_PARSE, + str(e), + last_non_space_token) + + def GetLongLineExceptions(self): + """Gets a list of regexps for lines which can be longer than the limit. + + Returns: + A list of regexps, used as matches (rather than searches). + """ + return [] + + def InExplicitlyTypedLanguage(self): + """Returns whether this ecma implementation is explicitly typed.""" + return False diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/ecmametadatapass.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/ecmametadatapass.py new file mode 100755 index 0000000000..a8657d2f4d --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/ecmametadatapass.py @@ -0,0 +1,579 @@ +#!/usr/bin/env python +# +# Copyright 2010 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Metadata pass for annotating tokens in EcmaScript files.""" + +__author__ = ('robbyw@google.com (Robert Walker)') + +from closure_linter import javascripttokens +from closure_linter import tokenutil + + +TokenType = javascripttokens.JavaScriptTokenType + + +class ParseError(Exception): + """Exception indicating a parse error at the given token. + + Attributes: + token: The token where the parse error occurred. + """ + + def __init__(self, token, message=None): + """Initialize a parse error at the given token with an optional message. + + Args: + token: The token where the parse error occurred. + message: A message describing the parse error. + """ + Exception.__init__(self, message) + self.token = token + + +class EcmaContext(object): + """Context object for EcmaScript languages. + + Attributes: + type: The context type. + start_token: The token where this context starts. + end_token: The token where this context ends. + parent: The parent context. + """ + + # The root context. + ROOT = 'root' + + # A block of code. + BLOCK = 'block' + + # A pseudo-block of code for a given case or default section. + CASE_BLOCK = 'case_block' + + # Block of statements in a for loop's parentheses. + FOR_GROUP_BLOCK = 'for_block' + + # An implied block of code for 1 line if, while, and for statements + IMPLIED_BLOCK = 'implied_block' + + # An index in to an array or object. + INDEX = 'index' + + # An array literal in []. + ARRAY_LITERAL = 'array_literal' + + # An object literal in {}. + OBJECT_LITERAL = 'object_literal' + + # An individual element in an array or object literal. + LITERAL_ELEMENT = 'literal_element' + + # The portion of a ternary statement between ? and : + TERNARY_TRUE = 'ternary_true' + + # The portion of a ternary statment after : + TERNARY_FALSE = 'ternary_false' + + # The entire switch statment. This will contain a GROUP with the variable + # and a BLOCK with the code. + + # Since that BLOCK is not a normal block, it can not contain statements except + # for case and default. + SWITCH = 'switch' + + # A normal comment. + COMMENT = 'comment' + + # A JsDoc comment. + DOC = 'doc' + + # An individual statement. + STATEMENT = 'statement' + + # Code within parentheses. + GROUP = 'group' + + # Parameter names in a function declaration. + PARAMETERS = 'parameters' + + # A set of variable declarations appearing after the 'var' keyword. + VAR = 'var' + + # Context types that are blocks. + BLOCK_TYPES = frozenset([ + ROOT, BLOCK, CASE_BLOCK, FOR_GROUP_BLOCK, IMPLIED_BLOCK]) + + def __init__(self, context_type, start_token, parent=None): + """Initializes the context object. + + Args: + context_type: The context type. + start_token: The token where this context starts. + parent: The parent context. + + Attributes: + type: The context type. + start_token: The token where this context starts. + end_token: The token where this context ends. + parent: The parent context. + children: The child contexts of this context, in order. + """ + self.type = context_type + self.start_token = start_token + self.end_token = None + + self.parent = None + self.children = [] + + if parent: + parent.AddChild(self) + + def __repr__(self): + """Returns a string representation of the context object.""" + stack = [] + context = self + while context: + stack.append(context.type) + context = context.parent + return 'Context(%s)' % ' > '.join(stack) + + def AddChild(self, child): + """Adds a child to this context and sets child's parent to this context. + + Args: + child: A child EcmaContext. The child's parent will be set to this + context. + """ + + child.parent = self + + self.children.append(child) + self.children.sort(EcmaContext._CompareContexts) + + def GetRoot(self): + """Get the root context that contains this context, if any.""" + context = self + while context: + if context.type is EcmaContext.ROOT: + return context + context = context.parent + + @staticmethod + def _CompareContexts(context1, context2): + """Sorts contexts 1 and 2 by start token document position.""" + return tokenutil.Compare(context1.start_token, context2.start_token) + + +class EcmaMetaData(object): + """Token metadata for EcmaScript languages. + + Attributes: + last_code: The last code token to appear before this one. + context: The context this token appears in. + operator_type: The operator type, will be one of the *_OPERATOR constants + defined below. + aliased_symbol: The full symbol being identified, as a string (e.g. an + 'XhrIo' alias for 'goog.net.XhrIo'). Only applicable to identifier + tokens. This is set in aliaspass.py and is a best guess. + is_alias_definition: True if the symbol is part of an alias definition. + If so, these symbols won't be counted towards goog.requires/provides. + """ + + UNARY_OPERATOR = 'unary' + + UNARY_POST_OPERATOR = 'unary_post' + + BINARY_OPERATOR = 'binary' + + TERNARY_OPERATOR = 'ternary' + + def __init__(self): + """Initializes a token metadata object.""" + self.last_code = None + self.context = None + self.operator_type = None + self.is_implied_semicolon = False + self.is_implied_block = False + self.is_implied_block_close = False + self.aliased_symbol = None + self.is_alias_definition = False + + def __repr__(self): + """Returns a string representation of the context object.""" + parts = ['%r' % self.context] + if self.operator_type: + parts.append('optype: %r' % self.operator_type) + if self.is_implied_semicolon: + parts.append('implied;') + if self.aliased_symbol: + parts.append('alias for: %s' % self.aliased_symbol) + return 'MetaData(%s)' % ', '.join(parts) + + def IsUnaryOperator(self): + return self.operator_type in (EcmaMetaData.UNARY_OPERATOR, + EcmaMetaData.UNARY_POST_OPERATOR) + + def IsUnaryPostOperator(self): + return self.operator_type == EcmaMetaData.UNARY_POST_OPERATOR + + +class EcmaMetaDataPass(object): + """A pass that iterates over all tokens and builds metadata about them.""" + + def __init__(self): + """Initialize the meta data pass object.""" + self.Reset() + + def Reset(self): + """Resets the metadata pass to prepare for the next file.""" + self._token = None + self._context = None + self._AddContext(EcmaContext.ROOT) + self._last_code = None + + def _CreateContext(self, context_type): + """Overridable by subclasses to create the appropriate context type.""" + return EcmaContext(context_type, self._token, self._context) + + def _CreateMetaData(self): + """Overridable by subclasses to create the appropriate metadata type.""" + return EcmaMetaData() + + def _AddContext(self, context_type): + """Adds a context of the given type to the context stack. + + Args: + context_type: The type of context to create + """ + self._context = self._CreateContext(context_type) + + def _PopContext(self): + """Moves up one level in the context stack. + + Returns: + The former context. + + Raises: + ParseError: If the root context is popped. + """ + top_context = self._context + top_context.end_token = self._token + self._context = top_context.parent + if self._context: + return top_context + else: + raise ParseError(self._token) + + def _PopContextType(self, *stop_types): + """Pops the context stack until a context of the given type is popped. + + Args: + *stop_types: The types of context to pop to - stops at the first match. + + Returns: + The context object of the given type that was popped. + """ + last = None + while not last or last.type not in stop_types: + last = self._PopContext() + return last + + def _EndStatement(self): + """Process the end of a statement.""" + self._PopContextType(EcmaContext.STATEMENT) + if self._context.type == EcmaContext.IMPLIED_BLOCK: + self._token.metadata.is_implied_block_close = True + self._PopContext() + + def _ProcessContext(self): + """Process the context at the current token. + + Returns: + The context that should be assigned to the current token, or None if + the current context after this method should be used. + + Raises: + ParseError: When the token appears in an invalid context. + """ + token = self._token + token_type = token.type + + if self._context.type in EcmaContext.BLOCK_TYPES: + # Whenever we're in a block, we add a statement context. We make an + # exception for switch statements since they can only contain case: and + # default: and therefore don't directly contain statements. + # The block we add here may be immediately removed in some cases, but + # that causes no harm. + parent = self._context.parent + if not parent or parent.type != EcmaContext.SWITCH: + self._AddContext(EcmaContext.STATEMENT) + + elif self._context.type == EcmaContext.ARRAY_LITERAL: + self._AddContext(EcmaContext.LITERAL_ELEMENT) + + if token_type == TokenType.START_PAREN: + if self._last_code and self._last_code.IsKeyword('for'): + # for loops contain multiple statements in the group unlike while, + # switch, if, etc. + self._AddContext(EcmaContext.FOR_GROUP_BLOCK) + else: + self._AddContext(EcmaContext.GROUP) + + elif token_type == TokenType.END_PAREN: + result = self._PopContextType(EcmaContext.GROUP, + EcmaContext.FOR_GROUP_BLOCK) + keyword_token = result.start_token.metadata.last_code + # keyword_token will not exist if the open paren is the first line of the + # file, for example if all code is wrapped in an immediately executed + # annonymous function. + if keyword_token and keyword_token.string in ('if', 'for', 'while'): + next_code = tokenutil.SearchExcept(token, TokenType.NON_CODE_TYPES) + if next_code.type != TokenType.START_BLOCK: + # Check for do-while. + is_do_while = False + pre_keyword_token = keyword_token.metadata.last_code + if (pre_keyword_token and + pre_keyword_token.type == TokenType.END_BLOCK): + start_block_token = pre_keyword_token.metadata.context.start_token + is_do_while = start_block_token.metadata.last_code.string == 'do' + + # If it's not do-while, it's an implied block. + if not is_do_while: + self._AddContext(EcmaContext.IMPLIED_BLOCK) + token.metadata.is_implied_block = True + + return result + + # else (not else if) with no open brace after it should be considered the + # start of an implied block, similar to the case with if, for, and while + # above. + elif (token_type == TokenType.KEYWORD and + token.string == 'else'): + next_code = tokenutil.SearchExcept(token, TokenType.NON_CODE_TYPES) + if (next_code.type != TokenType.START_BLOCK and + (next_code.type != TokenType.KEYWORD or next_code.string != 'if')): + self._AddContext(EcmaContext.IMPLIED_BLOCK) + token.metadata.is_implied_block = True + + elif token_type == TokenType.START_PARAMETERS: + self._AddContext(EcmaContext.PARAMETERS) + + elif token_type == TokenType.END_PARAMETERS: + return self._PopContextType(EcmaContext.PARAMETERS) + + elif token_type == TokenType.START_BRACKET: + if (self._last_code and + self._last_code.type in TokenType.EXPRESSION_ENDER_TYPES): + self._AddContext(EcmaContext.INDEX) + else: + self._AddContext(EcmaContext.ARRAY_LITERAL) + + elif token_type == TokenType.END_BRACKET: + return self._PopContextType(EcmaContext.INDEX, EcmaContext.ARRAY_LITERAL) + + elif token_type == TokenType.START_BLOCK: + if (self._last_code.type in (TokenType.END_PAREN, + TokenType.END_PARAMETERS) or + self._last_code.IsKeyword('else') or + self._last_code.IsKeyword('do') or + self._last_code.IsKeyword('try') or + self._last_code.IsKeyword('finally') or + (self._last_code.IsOperator(':') and + self._last_code.metadata.context.type == EcmaContext.CASE_BLOCK)): + # else, do, try, and finally all might have no () before {. + # Also, handle the bizzare syntax case 10: {...}. + self._AddContext(EcmaContext.BLOCK) + else: + self._AddContext(EcmaContext.OBJECT_LITERAL) + + elif token_type == TokenType.END_BLOCK: + context = self._PopContextType(EcmaContext.BLOCK, + EcmaContext.OBJECT_LITERAL) + if self._context.type == EcmaContext.SWITCH: + # The end of the block also means the end of the switch statement it + # applies to. + return self._PopContext() + return context + + elif token.IsKeyword('switch'): + self._AddContext(EcmaContext.SWITCH) + + elif (token_type == TokenType.KEYWORD and + token.string in ('case', 'default') and + self._context.type != EcmaContext.OBJECT_LITERAL): + # Pop up to but not including the switch block. + while self._context.parent.type != EcmaContext.SWITCH: + self._PopContext() + if self._context.parent is None: + raise ParseError(token, 'Encountered case/default statement ' + 'without switch statement') + + elif token.IsOperator('?'): + self._AddContext(EcmaContext.TERNARY_TRUE) + + elif token.IsOperator(':'): + if self._context.type == EcmaContext.OBJECT_LITERAL: + self._AddContext(EcmaContext.LITERAL_ELEMENT) + + elif self._context.type == EcmaContext.TERNARY_TRUE: + self._PopContext() + self._AddContext(EcmaContext.TERNARY_FALSE) + + # Handle nested ternary statements like: + # foo = bar ? baz ? 1 : 2 : 3 + # When we encounter the second ":" the context is + # ternary_false > ternary_true > statement > root + elif (self._context.type == EcmaContext.TERNARY_FALSE and + self._context.parent.type == EcmaContext.TERNARY_TRUE): + self._PopContext() # Leave current ternary false context. + self._PopContext() # Leave current parent ternary true + self._AddContext(EcmaContext.TERNARY_FALSE) + + elif self._context.parent.type == EcmaContext.SWITCH: + self._AddContext(EcmaContext.CASE_BLOCK) + + elif token.IsKeyword('var'): + self._AddContext(EcmaContext.VAR) + + elif token.IsOperator(','): + while self._context.type not in (EcmaContext.VAR, + EcmaContext.ARRAY_LITERAL, + EcmaContext.OBJECT_LITERAL, + EcmaContext.STATEMENT, + EcmaContext.PARAMETERS, + EcmaContext.GROUP): + self._PopContext() + + elif token_type == TokenType.SEMICOLON: + self._EndStatement() + + def Process(self, first_token): + """Processes the token stream starting with the given token.""" + self._token = first_token + while self._token: + self._ProcessToken() + + if self._token.IsCode(): + self._last_code = self._token + + self._token = self._token.next + + try: + self._PopContextType(self, EcmaContext.ROOT) + except ParseError: + # Ignore the "popped to root" error. + pass + + def _ProcessToken(self): + """Process the given token.""" + token = self._token + token.metadata = self._CreateMetaData() + context = (self._ProcessContext() or self._context) + token.metadata.context = context + token.metadata.last_code = self._last_code + + # Determine the operator type of the token, if applicable. + if token.type == TokenType.OPERATOR: + token.metadata.operator_type = self._GetOperatorType(token) + + # Determine if there is an implied semicolon after the token. + if token.type != TokenType.SEMICOLON: + next_code = tokenutil.SearchExcept(token, TokenType.NON_CODE_TYPES) + # A statement like if (x) does not need a semicolon after it + is_implied_block = self._context == EcmaContext.IMPLIED_BLOCK + is_last_code_in_line = token.IsCode() and ( + not next_code or next_code.line_number != token.line_number) + is_continued_identifier = (token.type == TokenType.IDENTIFIER and + token.string.endswith('.')) + is_continued_operator = (token.type == TokenType.OPERATOR and + not token.metadata.IsUnaryPostOperator()) + is_continued_dot = token.string == '.' + next_code_is_operator = next_code and next_code.type == TokenType.OPERATOR + next_code_is_dot = next_code and next_code.string == '.' + is_end_of_block = ( + token.type == TokenType.END_BLOCK and + token.metadata.context.type != EcmaContext.OBJECT_LITERAL) + is_multiline_string = token.type == TokenType.STRING_TEXT + is_continued_var_decl = (token.IsKeyword('var') and + next_code and + (next_code.type in [TokenType.IDENTIFIER, + TokenType.SIMPLE_LVALUE]) and + token.line_number < next_code.line_number) + next_code_is_block = next_code and next_code.type == TokenType.START_BLOCK + if (is_last_code_in_line and + self._StatementCouldEndInContext() and + not is_multiline_string and + not is_end_of_block and + not is_continued_var_decl and + not is_continued_identifier and + not is_continued_operator and + not is_continued_dot and + not next_code_is_dot and + not next_code_is_operator and + not is_implied_block and + not next_code_is_block): + token.metadata.is_implied_semicolon = True + self._EndStatement() + + def _StatementCouldEndInContext(self): + """Returns if the current statement (if any) may end in this context.""" + # In the basic statement or variable declaration context, statement can + # always end in this context. + if self._context.type in (EcmaContext.STATEMENT, EcmaContext.VAR): + return True + + # End of a ternary false branch inside a statement can also be the + # end of the statement, for example: + # var x = foo ? foo.bar() : null + # In this case the statement ends after the null, when the context stack + # looks like ternary_false > var > statement > root. + if (self._context.type == EcmaContext.TERNARY_FALSE and + self._context.parent.type in (EcmaContext.STATEMENT, EcmaContext.VAR)): + return True + + # In all other contexts like object and array literals, ternary true, etc. + # the statement can't yet end. + return False + + def _GetOperatorType(self, token): + """Returns the operator type of the given operator token. + + Args: + token: The token to get arity for. + + Returns: + The type of the operator. One of the *_OPERATOR constants defined in + EcmaMetaData. + """ + if token.string == '?': + return EcmaMetaData.TERNARY_OPERATOR + + if token.string in TokenType.UNARY_OPERATORS: + return EcmaMetaData.UNARY_OPERATOR + + last_code = token.metadata.last_code + if not last_code or last_code.type == TokenType.END_BLOCK: + return EcmaMetaData.UNARY_OPERATOR + + if (token.string in TokenType.UNARY_POST_OPERATORS and + last_code.type in TokenType.EXPRESSION_ENDER_TYPES): + return EcmaMetaData.UNARY_POST_OPERATOR + + if (token.string in TokenType.UNARY_OK_OPERATORS and + last_code.type not in TokenType.EXPRESSION_ENDER_TYPES and + last_code.string not in TokenType.UNARY_POST_OPERATORS): + return EcmaMetaData.UNARY_OPERATOR + + return EcmaMetaData.BINARY_OPERATOR diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_check.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_check.py new file mode 100755 index 0000000000..9e2ac01cc6 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_check.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python +# +# Copyright 2011 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Specific JSLint errors checker.""" + + + +import gflags as flags + +FLAGS = flags.FLAGS + + +class Rule(object): + """Different rules to check.""" + + # Documentations for specific rules goes in flag definition. + BLANK_LINES_AT_TOP_LEVEL = 'blank_lines_at_top_level' + INDENTATION = 'indentation' + WELL_FORMED_AUTHOR = 'well_formed_author' + NO_BRACES_AROUND_INHERIT_DOC = 'no_braces_around_inherit_doc' + BRACES_AROUND_TYPE = 'braces_around_type' + OPTIONAL_TYPE_MARKER = 'optional_type_marker' + VARIABLE_ARG_MARKER = 'variable_arg_marker' + UNUSED_PRIVATE_MEMBERS = 'unused_private_members' + UNUSED_LOCAL_VARIABLES = 'unused_local_variables' + + # Rule to raise all known errors. + ALL = 'all' + + # All rules that are to be checked when using the strict flag. E.g. the rules + # that are specific to the stricter Closure style. + CLOSURE_RULES = frozenset([BLANK_LINES_AT_TOP_LEVEL, + INDENTATION, + WELL_FORMED_AUTHOR, + NO_BRACES_AROUND_INHERIT_DOC, + BRACES_AROUND_TYPE, + OPTIONAL_TYPE_MARKER, + VARIABLE_ARG_MARKER]) + + +flags.DEFINE_boolean('strict', False, + 'Whether to validate against the stricter Closure style. ' + 'This includes ' + (', '.join(Rule.CLOSURE_RULES)) + '.') +flags.DEFINE_multistring('jslint_error', [], + 'List of specific lint errors to check. Here is a list' + ' of accepted values:\n' + ' - ' + Rule.ALL + ': enables all following errors.\n' + ' - ' + Rule.BLANK_LINES_AT_TOP_LEVEL + ': validates' + 'number of blank lines between blocks at top level.\n' + ' - ' + Rule.INDENTATION + ': checks correct ' + 'indentation of code.\n' + ' - ' + Rule.WELL_FORMED_AUTHOR + ': validates the ' + '@author JsDoc tags.\n' + ' - ' + Rule.NO_BRACES_AROUND_INHERIT_DOC + ': ' + 'forbids braces around @inheritdoc JsDoc tags.\n' + ' - ' + Rule.BRACES_AROUND_TYPE + ': enforces braces ' + 'around types in JsDoc tags.\n' + ' - ' + Rule.OPTIONAL_TYPE_MARKER + ': checks correct ' + 'use of optional marker = in param types.\n' + ' - ' + Rule.UNUSED_PRIVATE_MEMBERS + ': checks for ' + 'unused private variables.\n') + + +def ShouldCheck(rule): + """Returns whether the optional rule should be checked. + + Computes different flags (strict, jslint_error, jslint_noerror) to find out if + this specific rule should be checked. + + Args: + rule: Name of the rule (see Rule). + + Returns: + True if the rule should be checked according to the flags, otherwise False. + """ + if rule in FLAGS.jslint_error or Rule.ALL in FLAGS.jslint_error: + return True + # Checks strict rules. + return FLAGS.strict and rule in Rule.CLOSURE_RULES diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_fixer.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_fixer.py new file mode 100755 index 0000000000..fb2db5035e --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_fixer.py @@ -0,0 +1,525 @@ +#!/usr/bin/env python +# +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Main class responsible for automatically fixing simple style violations.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + +__author__ = 'robbyw@google.com (Robert Walker)' + +import re + +import gflags as flags +from closure_linter import errors +from closure_linter import javascriptstatetracker +from closure_linter import javascripttokens +from closure_linter import requireprovidesorter +from closure_linter import tokenutil +from closure_linter.common import errorhandler + +# Shorthand +Token = javascripttokens.JavaScriptToken +Type = javascripttokens.JavaScriptTokenType + +END_OF_FLAG_TYPE = re.compile(r'(}?\s*)$') + +# Regex to represent common mistake inverting author name and email as +# @author User Name (user@company) +INVERTED_AUTHOR_SPEC = re.compile(r'(?P\s*)' + r'(?P[^(]+)' + r'(?P\s+)' + r'\(' + r'(?P[^\s]+@[^)\s]+)' + r'\)' + r'(?P.*)') + +FLAGS = flags.FLAGS +flags.DEFINE_boolean('disable_indentation_fixing', False, + 'Whether to disable automatic fixing of indentation.') + + +class ErrorFixer(errorhandler.ErrorHandler): + """Object that fixes simple style errors.""" + + def __init__(self, external_file=None): + """Initialize the error fixer. + + Args: + external_file: If included, all output will be directed to this file + instead of overwriting the files the errors are found in. + """ + errorhandler.ErrorHandler.__init__(self) + + self._file_name = None + self._file_token = None + self._external_file = external_file + + def HandleFile(self, filename, first_token): + """Notifies this ErrorPrinter that subsequent errors are in filename. + + Args: + filename: The name of the file about to be checked. + first_token: The first token in the file. + """ + self._file_name = filename + self._file_is_html = filename.endswith('.html') or filename.endswith('.htm') + self._file_token = first_token + self._file_fix_count = 0 + self._file_changed_lines = set() + + def _AddFix(self, tokens): + """Adds the fix to the internal count. + + Args: + tokens: The token or sequence of tokens changed to fix an error. + """ + self._file_fix_count += 1 + if hasattr(tokens, 'line_number'): + self._file_changed_lines.add(tokens.line_number) + else: + for token in tokens: + self._file_changed_lines.add(token.line_number) + + def HandleError(self, error): + """Attempts to fix the error. + + Args: + error: The error object + """ + code = error.code + token = error.token + + if code == errors.JSDOC_PREFER_QUESTION_TO_PIPE_NULL: + iterator = token.attached_object.type_start_token + if iterator.type == Type.DOC_START_BRACE or iterator.string.isspace(): + iterator = iterator.next + + leading_space = len(iterator.string) - len(iterator.string.lstrip()) + iterator.string = '%s?%s' % (' ' * leading_space, + iterator.string.lstrip()) + + # Cover the no outer brace case where the end token is part of the type. + while iterator and iterator != token.attached_object.type_end_token.next: + iterator.string = iterator.string.replace( + 'null|', '').replace('|null', '') + iterator = iterator.next + + # Create a new flag object with updated type info. + token.attached_object = javascriptstatetracker.JsDocFlag(token) + self._AddFix(token) + + elif code == errors.JSDOC_MISSING_OPTIONAL_TYPE: + iterator = token.attached_object.type_end_token + if iterator.type == Type.DOC_END_BRACE or iterator.string.isspace(): + iterator = iterator.previous + + ending_space = len(iterator.string) - len(iterator.string.rstrip()) + iterator.string = '%s=%s' % (iterator.string.rstrip(), + ' ' * ending_space) + + # Create a new flag object with updated type info. + token.attached_object = javascriptstatetracker.JsDocFlag(token) + self._AddFix(token) + + elif code == errors.JSDOC_MISSING_VAR_ARGS_TYPE: + iterator = token.attached_object.type_start_token + if iterator.type == Type.DOC_START_BRACE or iterator.string.isspace(): + iterator = iterator.next + + starting_space = len(iterator.string) - len(iterator.string.lstrip()) + iterator.string = '%s...%s' % (' ' * starting_space, + iterator.string.lstrip()) + + # Create a new flag object with updated type info. + token.attached_object = javascriptstatetracker.JsDocFlag(token) + self._AddFix(token) + + elif code in (errors.MISSING_SEMICOLON_AFTER_FUNCTION, + errors.MISSING_SEMICOLON): + semicolon_token = Token(';', Type.SEMICOLON, token.line, + token.line_number) + tokenutil.InsertTokenAfter(semicolon_token, token) + token.metadata.is_implied_semicolon = False + semicolon_token.metadata.is_implied_semicolon = False + self._AddFix(token) + + elif code in (errors.ILLEGAL_SEMICOLON_AFTER_FUNCTION, + errors.REDUNDANT_SEMICOLON, + errors.COMMA_AT_END_OF_LITERAL): + self._DeleteToken(token) + self._AddFix(token) + + elif code == errors.INVALID_JSDOC_TAG: + if token.string == '@returns': + token.string = '@return' + self._AddFix(token) + + elif code == errors.FILE_MISSING_NEWLINE: + # This error is fixed implicitly by the way we restore the file + self._AddFix(token) + + elif code == errors.MISSING_SPACE: + if error.fix_data: + token.string = error.fix_data + self._AddFix(token) + elif error.position: + if error.position.IsAtBeginning(): + tokenutil.InsertSpaceTokenAfter(token.previous) + elif error.position.IsAtEnd(token.string): + tokenutil.InsertSpaceTokenAfter(token) + else: + token.string = error.position.Set(token.string, ' ') + self._AddFix(token) + + elif code == errors.EXTRA_SPACE: + if error.position: + token.string = error.position.Set(token.string, '') + self._AddFix(token) + + elif code == errors.MISSING_LINE: + if error.position.IsAtBeginning(): + tokenutil.InsertBlankLineAfter(token.previous) + else: + tokenutil.InsertBlankLineAfter(token) + self._AddFix(token) + + elif code == errors.EXTRA_LINE: + self._DeleteToken(token) + self._AddFix(token) + + elif code == errors.WRONG_BLANK_LINE_COUNT: + if not token.previous: + # TODO(user): Add an insertBefore method to tokenutil. + return + + num_lines = error.fix_data + should_delete = False + + if num_lines < 0: + num_lines *= -1 + should_delete = True + + for unused_i in xrange(1, num_lines + 1): + if should_delete: + # TODO(user): DeleteToken should update line numbers. + self._DeleteToken(token.previous) + else: + tokenutil.InsertBlankLineAfter(token.previous) + self._AddFix(token) + + elif code == errors.UNNECESSARY_DOUBLE_QUOTED_STRING: + end_quote = tokenutil.Search(token, Type.DOUBLE_QUOTE_STRING_END) + if end_quote: + single_quote_start = Token( + "'", Type.SINGLE_QUOTE_STRING_START, token.line, token.line_number) + single_quote_end = Token( + "'", Type.SINGLE_QUOTE_STRING_START, end_quote.line, + token.line_number) + + tokenutil.InsertTokenAfter(single_quote_start, token) + tokenutil.InsertTokenAfter(single_quote_end, end_quote) + self._DeleteToken(token) + self._DeleteToken(end_quote) + self._AddFix([token, end_quote]) + + elif code == errors.MISSING_BRACES_AROUND_TYPE: + fixed_tokens = [] + start_token = token.attached_object.type_start_token + + if start_token.type != Type.DOC_START_BRACE: + leading_space = ( + len(start_token.string) - len(start_token.string.lstrip())) + if leading_space: + start_token = tokenutil.SplitToken(start_token, leading_space) + # Fix case where start and end token were the same. + if token.attached_object.type_end_token == start_token.previous: + token.attached_object.type_end_token = start_token + + new_token = Token('{', Type.DOC_START_BRACE, start_token.line, + start_token.line_number) + tokenutil.InsertTokenAfter(new_token, start_token.previous) + token.attached_object.type_start_token = new_token + fixed_tokens.append(new_token) + + end_token = token.attached_object.type_end_token + if end_token.type != Type.DOC_END_BRACE: + # If the start token was a brace, the end token will be a + # FLAG_ENDING_TYPE token, if there wasn't a starting brace then + # the end token is the last token of the actual type. + last_type = end_token + if not fixed_tokens: + last_type = end_token.previous + + while last_type.string.isspace(): + last_type = last_type.previous + + # If there was no starting brace then a lone end brace wouldn't have + # been type end token. Now that we've added any missing start brace, + # see if the last effective type token was an end brace. + if last_type.type != Type.DOC_END_BRACE: + trailing_space = (len(last_type.string) - + len(last_type.string.rstrip())) + if trailing_space: + tokenutil.SplitToken(last_type, + len(last_type.string) - trailing_space) + + new_token = Token('}', Type.DOC_END_BRACE, last_type.line, + last_type.line_number) + tokenutil.InsertTokenAfter(new_token, last_type) + token.attached_object.type_end_token = new_token + fixed_tokens.append(new_token) + + self._AddFix(fixed_tokens) + + elif code == errors.GOOG_REQUIRES_NOT_ALPHABETIZED: + require_start_token = error.fix_data + sorter = requireprovidesorter.RequireProvideSorter() + sorter.FixRequires(require_start_token) + + self._AddFix(require_start_token) + + elif code == errors.GOOG_PROVIDES_NOT_ALPHABETIZED: + provide_start_token = error.fix_data + sorter = requireprovidesorter.RequireProvideSorter() + sorter.FixProvides(provide_start_token) + + self._AddFix(provide_start_token) + + elif code == errors.UNNECESSARY_BRACES_AROUND_INHERIT_DOC: + if token.previous.string == '{' and token.next.string == '}': + self._DeleteToken(token.previous) + self._DeleteToken(token.next) + self._AddFix([token]) + + elif code == errors.INVALID_AUTHOR_TAG_DESCRIPTION: + match = INVERTED_AUTHOR_SPEC.match(token.string) + if match: + token.string = '%s%s%s(%s)%s' % (match.group('leading_whitespace'), + match.group('email'), + match.group('whitespace_after_name'), + match.group('name'), + match.group('trailing_characters')) + self._AddFix(token) + + elif (code == errors.WRONG_INDENTATION and + not FLAGS.disable_indentation_fixing): + token = tokenutil.GetFirstTokenInSameLine(token) + actual = error.position.start + expected = error.position.length + + # Cases where first token is param but with leading spaces. + if (len(token.string.lstrip()) == len(token.string) - actual and + token.string.lstrip()): + token.string = token.string.lstrip() + actual = 0 + + if token.type in (Type.WHITESPACE, Type.PARAMETERS) and actual != 0: + token.string = token.string.lstrip() + (' ' * expected) + self._AddFix([token]) + else: + # We need to add indentation. + new_token = Token(' ' * expected, Type.WHITESPACE, + token.line, token.line_number) + # Note that we'll never need to add indentation at the first line, + # since it will always not be indented. Therefore it's safe to assume + # token.previous exists. + tokenutil.InsertTokenAfter(new_token, token.previous) + self._AddFix([token]) + + elif code in [errors.MALFORMED_END_OF_SCOPE_COMMENT, + errors.MISSING_END_OF_SCOPE_COMMENT]: + # Only fix cases where }); is found with no trailing content on the line + # other than a comment. Value of 'token' is set to } for this error. + if (token.type == Type.END_BLOCK and + token.next.type == Type.END_PAREN and + token.next.next.type == Type.SEMICOLON): + current_token = token.next.next.next + removed_tokens = [] + while current_token and current_token.line_number == token.line_number: + if current_token.IsAnyType(Type.WHITESPACE, + Type.START_SINGLE_LINE_COMMENT, + Type.COMMENT): + removed_tokens.append(current_token) + current_token = current_token.next + else: + return + + if removed_tokens: + self._DeleteTokens(removed_tokens[0], len(removed_tokens)) + + whitespace_token = Token(' ', Type.WHITESPACE, token.line, + token.line_number) + start_comment_token = Token('//', Type.START_SINGLE_LINE_COMMENT, + token.line, token.line_number) + comment_token = Token(' goog.scope', Type.COMMENT, token.line, + token.line_number) + insertion_tokens = [whitespace_token, start_comment_token, + comment_token] + + tokenutil.InsertTokensAfter(insertion_tokens, token.next.next) + self._AddFix(removed_tokens + insertion_tokens) + + elif code in [errors.EXTRA_GOOG_PROVIDE, errors.EXTRA_GOOG_REQUIRE]: + tokens_in_line = tokenutil.GetAllTokensInSameLine(token) + self._DeleteTokens(tokens_in_line[0], len(tokens_in_line)) + self._AddFix(tokens_in_line) + + elif code in [errors.MISSING_GOOG_PROVIDE, errors.MISSING_GOOG_REQUIRE]: + is_provide = code == errors.MISSING_GOOG_PROVIDE + is_require = code == errors.MISSING_GOOG_REQUIRE + + missing_namespaces = error.fix_data[0] + need_blank_line = error.fix_data[1] + + if need_blank_line is None: + # TODO(user): This happens when there are no existing + # goog.provide or goog.require statements to position new statements + # relative to. Consider handling this case with a heuristic. + return + + insert_location = token.previous + + # If inserting a missing require with no existing requires, insert a + # blank line first. + if need_blank_line and is_require: + tokenutil.InsertBlankLineAfter(insert_location) + insert_location = insert_location.next + + for missing_namespace in missing_namespaces: + new_tokens = self._GetNewRequireOrProvideTokens( + is_provide, missing_namespace, insert_location.line_number + 1) + tokenutil.InsertLineAfter(insert_location, new_tokens) + insert_location = new_tokens[-1] + self._AddFix(new_tokens) + + # If inserting a missing provide with no existing provides, insert a + # blank line after. + if need_blank_line and is_provide: + tokenutil.InsertBlankLineAfter(insert_location) + + def _GetNewRequireOrProvideTokens(self, is_provide, namespace, line_number): + """Returns a list of tokens to create a goog.require/provide statement. + + Args: + is_provide: True if getting tokens for a provide, False for require. + namespace: The required or provided namespaces to get tokens for. + line_number: The line number the new require or provide statement will be + on. + + Returns: + Tokens to create a new goog.require or goog.provide statement. + """ + string = 'goog.require' + if is_provide: + string = 'goog.provide' + line_text = string + '(\'' + namespace + '\');\n' + return [ + Token(string, Type.IDENTIFIER, line_text, line_number), + Token('(', Type.START_PAREN, line_text, line_number), + Token('\'', Type.SINGLE_QUOTE_STRING_START, line_text, line_number), + Token(namespace, Type.STRING_TEXT, line_text, line_number), + Token('\'', Type.SINGLE_QUOTE_STRING_END, line_text, line_number), + Token(')', Type.END_PAREN, line_text, line_number), + Token(';', Type.SEMICOLON, line_text, line_number) + ] + + def _DeleteToken(self, token): + """Deletes the specified token from the linked list of tokens. + + Updates instance variables pointing to tokens such as _file_token if + they reference the deleted token. + + Args: + token: The token to delete. + """ + if token == self._file_token: + self._file_token = token.next + + tokenutil.DeleteToken(token) + + def _DeleteTokens(self, token, token_count): + """Deletes the given number of tokens starting with the given token. + + Updates instance variables pointing to tokens such as _file_token if + they reference the deleted token. + + Args: + token: The first token to delete. + token_count: The total number of tokens to delete. + """ + if token == self._file_token: + for unused_i in xrange(token_count): + self._file_token = self._file_token.next + + tokenutil.DeleteTokens(token, token_count) + + def FinishFile(self): + """Called when the current file has finished style checking. + + Used to go back and fix any errors in the file. It currently supports both + js and html files. For js files it does a simple dump of all tokens, but in + order to support html file, we need to merge the original file with the new + token set back together. This works because the tokenized html file is the + original html file with all non js lines kept but blanked out with one blank + line token per line of html. + """ + if self._file_fix_count: + # Get the original file content for html. + if self._file_is_html: + f = open(self._file_name, 'r') + original_lines = f.readlines() + f.close() + + f = self._external_file + if not f: + print 'Fixed %d errors in %s' % (self._file_fix_count, self._file_name) + f = open(self._file_name, 'w') + + token = self._file_token + # If something got inserted before first token (e.g. due to sorting) + # then move to start. Bug 8398202. + while token.previous: + token = token.previous + char_count = 0 + line = '' + while token: + line += token.string + char_count += len(token.string) + + if token.IsLastInLine(): + # We distinguish if a blank line in html was from stripped original + # file or newly added error fix by looking at the "org_line_number" + # field on the token. It is only set in the tokenizer, so for all + # error fixes, the value should be None. + if (line or not self._file_is_html or + token.orig_line_number is None): + f.write(line) + f.write('\n') + else: + f.write(original_lines[token.orig_line_number - 1]) + line = '' + if char_count > 80 and token.line_number in self._file_changed_lines: + print 'WARNING: Line %d of %s is now longer than 80 characters.' % ( + token.line_number, self._file_name) + + char_count = 0 + + token = token.next + + if not self._external_file: + # Close the file if we created it + f.close() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_fixer_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_fixer_test.py new file mode 100644 index 0000000000..49f449de42 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/error_fixer_test.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for the error_fixer module.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + + + +import unittest as googletest +from closure_linter import error_fixer +from closure_linter import testutil + + +class ErrorFixerTest(googletest.TestCase): + """Unit tests for error_fixer.""" + + def setUp(self): + self.error_fixer = error_fixer.ErrorFixer() + + def testDeleteToken(self): + start_token = testutil.TokenizeSourceAndRunEcmaPass(_TEST_SCRIPT) + second_token = start_token.next + self.error_fixer.HandleFile('test_file', start_token) + + self.error_fixer._DeleteToken(start_token) + + self.assertEqual(second_token, self.error_fixer._file_token) + + def testDeleteTokens(self): + start_token = testutil.TokenizeSourceAndRunEcmaPass(_TEST_SCRIPT) + fourth_token = start_token.next.next.next + self.error_fixer.HandleFile('test_file', start_token) + + self.error_fixer._DeleteTokens(start_token, 3) + + self.assertEqual(fourth_token, self.error_fixer._file_token) + +_TEST_SCRIPT = """\ +var x = 3; +""" + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrecord.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrecord.py new file mode 100644 index 0000000000..ce9fb908c7 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrecord.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""A simple, pickle-serializable class to represent a lint error.""" + +__author__ = 'nnaze@google.com (Nathan Naze)' + +import gflags as flags + +from closure_linter import errors +from closure_linter.common import erroroutput + +FLAGS = flags.FLAGS + + +class ErrorRecord(object): + """Record-keeping struct that can be serialized back from a process. + + Attributes: + path: Path to the file. + error_string: Error string for the user. + new_error: Whether this is a "new error" (see errors.NEW_ERRORS). + """ + + def __init__(self, path, error_string, new_error): + self.path = path + self.error_string = error_string + self.new_error = new_error + + +def MakeErrorRecord(path, error): + """Make an error record with correctly formatted error string. + + Errors are not able to be serialized (pickled) over processes because of + their pointers to the complex token/context graph. We use an intermediary + serializable class to pass back just the relevant information. + + Args: + path: Path of file the error was found in. + error: An error.Error instance. + + Returns: + _ErrorRecord instance. + """ + new_error = error.code in errors.NEW_ERRORS + + if FLAGS.unix_mode: + error_string = erroroutput.GetUnixErrorOutput( + path, error, new_error=new_error) + else: + error_string = erroroutput.GetErrorOutput(error, new_error=new_error) + + return ErrorRecord(path, error_string, new_error) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrules.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrules.py new file mode 100755 index 0000000000..b1b72aab6d --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrules.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python +# +# Copyright 2010 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Linter error rules class for Closure Linter.""" + +__author__ = 'robbyw@google.com (Robert Walker)' + +import gflags as flags +from closure_linter import errors + + +FLAGS = flags.FLAGS +flags.DEFINE_boolean('jsdoc', True, + 'Whether to report errors for missing JsDoc.') +flags.DEFINE_list('disable', None, + 'Disable specific error. Usage Ex.: gjslint --disable 1,' + '0011 foo.js.') +flags.DEFINE_integer('max_line_length', 80, 'Maximum line length allowed ' + 'without warning.', lower_bound=1) + +disabled_error_nums = None + + +def GetMaxLineLength(): + """Returns allowed maximum length of line. + + Returns: + Length of line allowed without any warning. + """ + return FLAGS.max_line_length + + +def ShouldReportError(error): + """Whether the given error should be reported. + + Returns: + True for all errors except missing documentation errors and disabled + errors. For missing documentation, it returns the value of the + jsdoc flag. + """ + global disabled_error_nums + if disabled_error_nums is None: + disabled_error_nums = [] + if FLAGS.disable: + for error_str in FLAGS.disable: + error_num = 0 + try: + error_num = int(error_str) + except ValueError: + pass + disabled_error_nums.append(error_num) + + return ((FLAGS.jsdoc or error not in ( + errors.MISSING_PARAMETER_DOCUMENTATION, + errors.MISSING_RETURN_DOCUMENTATION, + errors.MISSING_MEMBER_DOCUMENTATION, + errors.MISSING_PRIVATE, + errors.MISSING_JSDOC_TAG_THIS)) and + (not FLAGS.disable or error not in disabled_error_nums)) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrules_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrules_test.py new file mode 100644 index 0000000000..cb903785e6 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/errorrules_test.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python +# Copyright 2013 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Medium tests for the gjslint errorrules. + +Currently its just verifying that warnings can't be disabled. +""" + + + +import gflags as flags +import unittest as googletest + +from closure_linter import errors +from closure_linter import runner +from closure_linter.common import erroraccumulator + +flags.FLAGS.strict = True +flags.FLAGS.limited_doc_files = ('dummy.js', 'externs.js') +flags.FLAGS.closurized_namespaces = ('goog', 'dummy') + + +class ErrorRulesTest(googletest.TestCase): + """Test case to for gjslint errorrules.""" + + def testNoMaxLineLengthFlagExists(self): + """Tests that --max_line_length flag does not exists.""" + self.assertTrue('max_line_length' not in flags.FLAGS.FlagDict()) + + def testGetMaxLineLength(self): + """Tests warning are reported for line greater than 80. + """ + + # One line > 100 and one line > 80 and < 100. So should produce two + # line too long error. + original = [ + 'goog.require(\'dummy.aa\');', + '', + 'function a() {', + ' dummy.aa.i = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13' + ' + 14 + 15 + 16 + 17 + 18 + 19 + 20;', + ' dummy.aa.j = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13' + ' + 14 + 15 + 16 + 17 + 18;', + '}', + '' + ] + + # Expect line too long. + expected = [errors.LINE_TOO_LONG, errors.LINE_TOO_LONG] + + self._AssertErrors(original, expected) + + def testNoDisableFlagExists(self): + """Tests that --disable flag does not exists.""" + self.assertTrue('disable' not in flags.FLAGS.FlagDict()) + + def testWarningsNotDisabled(self): + """Tests warnings are reported when nothing is disabled. + """ + original = [ + 'goog.require(\'dummy.aa\');', + 'goog.require(\'dummy.Cc\');', + 'goog.require(\'dummy.Dd\');', + '', + 'function a() {', + ' dummy.aa.i = 1;', + ' dummy.Cc.i = 1;', + ' dummy.Dd.i = 1;', + '}', + ] + + expected = [errors.GOOG_REQUIRES_NOT_ALPHABETIZED, + errors.FILE_MISSING_NEWLINE] + + self._AssertErrors(original, expected) + + def _AssertErrors(self, original, expected_errors, include_header=True): + """Asserts that the error fixer corrects original to expected.""" + if include_header: + original = self._GetHeader() + original + + # Trap gjslint's output parse it to get messages added. + error_accumulator = erroraccumulator.ErrorAccumulator() + runner.Run('testing.js', error_accumulator, source=original) + error_nums = [e.code for e in error_accumulator.GetErrors()] + + error_nums.sort() + expected_errors.sort() + self.assertListEqual(error_nums, expected_errors) + + def _GetHeader(self): + """Returns a fake header for a JavaScript file.""" + return [ + '// Copyright 2011 Google Inc. All Rights Reserved.', + '', + '/**', + ' * @fileoverview Fake file overview.', + ' * @author fake@google.com (Fake Person)', + ' */', + '' + ] + + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/errors.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/errors.py new file mode 100755 index 0000000000..7bdfecd9f3 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/errors.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Error codes for JavaScript style checker.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + + +def ByName(name): + """Get the error code for the given error name. + + Args: + name: The name of the error + + Returns: + The error code + """ + return globals()[name] + + +# "File-fatal" errors - these errors stop further parsing of a single file +FILE_NOT_FOUND = -1 +FILE_DOES_NOT_PARSE = -2 + +# Spacing +EXTRA_SPACE = 1 +MISSING_SPACE = 2 +EXTRA_LINE = 3 +MISSING_LINE = 4 +ILLEGAL_TAB = 5 +WRONG_INDENTATION = 6 +WRONG_BLANK_LINE_COUNT = 7 + +# Semicolons +MISSING_SEMICOLON = 10 +MISSING_SEMICOLON_AFTER_FUNCTION = 11 +ILLEGAL_SEMICOLON_AFTER_FUNCTION = 12 +REDUNDANT_SEMICOLON = 13 + +# Miscellaneous +ILLEGAL_PROTOTYPE_MEMBER_VALUE = 100 +LINE_TOO_LONG = 110 +LINE_STARTS_WITH_OPERATOR = 120 +COMMA_AT_END_OF_LITERAL = 121 +MULTI_LINE_STRING = 130 +UNNECESSARY_DOUBLE_QUOTED_STRING = 131 +UNUSED_PRIVATE_MEMBER = 132 +UNUSED_LOCAL_VARIABLE = 133 + +# Requires, provides +GOOG_REQUIRES_NOT_ALPHABETIZED = 140 +GOOG_PROVIDES_NOT_ALPHABETIZED = 141 +MISSING_GOOG_REQUIRE = 142 +MISSING_GOOG_PROVIDE = 143 +EXTRA_GOOG_REQUIRE = 144 +EXTRA_GOOG_PROVIDE = 145 + +# JsDoc +INVALID_JSDOC_TAG = 200 +INVALID_USE_OF_DESC_TAG = 201 +NO_BUG_NUMBER_AFTER_BUG_TAG = 202 +MISSING_PARAMETER_DOCUMENTATION = 210 +EXTRA_PARAMETER_DOCUMENTATION = 211 +WRONG_PARAMETER_DOCUMENTATION = 212 +MISSING_JSDOC_TAG_TYPE = 213 +MISSING_JSDOC_TAG_DESCRIPTION = 214 +MISSING_JSDOC_PARAM_NAME = 215 +OUT_OF_ORDER_JSDOC_TAG_TYPE = 216 +MISSING_RETURN_DOCUMENTATION = 217 +UNNECESSARY_RETURN_DOCUMENTATION = 218 +MISSING_BRACES_AROUND_TYPE = 219 +MISSING_MEMBER_DOCUMENTATION = 220 +MISSING_PRIVATE = 221 +EXTRA_PRIVATE = 222 +INVALID_OVERRIDE_PRIVATE = 223 +INVALID_INHERIT_DOC_PRIVATE = 224 +MISSING_JSDOC_TAG_THIS = 225 +UNNECESSARY_BRACES_AROUND_INHERIT_DOC = 226 +INVALID_AUTHOR_TAG_DESCRIPTION = 227 +JSDOC_PREFER_QUESTION_TO_PIPE_NULL = 230 +JSDOC_ILLEGAL_QUESTION_WITH_PIPE = 231 +JSDOC_MISSING_OPTIONAL_TYPE = 232 +JSDOC_MISSING_OPTIONAL_PREFIX = 233 +JSDOC_MISSING_VAR_ARGS_TYPE = 234 +JSDOC_MISSING_VAR_ARGS_NAME = 235 +# TODO(robbyw): Split this in to more specific syntax problems. +INCORRECT_SUPPRESS_SYNTAX = 250 +INVALID_SUPPRESS_TYPE = 251 +UNNECESSARY_SUPPRESS = 252 + +# File ending +FILE_MISSING_NEWLINE = 300 +FILE_IN_BLOCK = 301 + +# Interfaces +INTERFACE_CONSTRUCTOR_CANNOT_HAVE_PARAMS = 400 +INTERFACE_METHOD_CANNOT_HAVE_CODE = 401 + +# Comments +MISSING_END_OF_SCOPE_COMMENT = 500 +MALFORMED_END_OF_SCOPE_COMMENT = 501 + +# goog.scope - Namespace aliasing +# TODO(nnaze) Add additional errors here and in aliaspass.py +INVALID_USE_OF_GOOG_SCOPE = 600 +EXTRA_GOOG_SCOPE_USAGE = 601 + +# ActionScript specific errors: +# TODO(user): move these errors to their own file and move all JavaScript +# specific errors to their own file as well. +# All ActionScript specific errors should have error number at least 1000. +FUNCTION_MISSING_RETURN_TYPE = 1132 +PARAMETER_MISSING_TYPE = 1133 +VAR_MISSING_TYPE = 1134 +PARAMETER_MISSING_DEFAULT_VALUE = 1135 +IMPORTS_NOT_ALPHABETIZED = 1140 +IMPORT_CONTAINS_WILDCARD = 1141 +UNUSED_IMPORT = 1142 +INVALID_TRACE_SEVERITY_LEVEL = 1250 +MISSING_TRACE_SEVERITY_LEVEL = 1251 +MISSING_TRACE_MESSAGE = 1252 +REMOVE_TRACE_BEFORE_SUBMIT = 1253 +REMOVE_COMMENT_BEFORE_SUBMIT = 1254 +# End of list of ActionScript specific errors. + +NEW_ERRORS = frozenset([ + # Errors added after 2.0.2: + WRONG_INDENTATION, + MISSING_SEMICOLON, + # Errors added after 2.3.9: + JSDOC_MISSING_VAR_ARGS_TYPE, + JSDOC_MISSING_VAR_ARGS_NAME, + # Errors added after 2.3.13: + ]) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/fixjsstyle.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/fixjsstyle.py new file mode 100755 index 0000000000..1b5905b131 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/fixjsstyle.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Automatically fix simple style guide violations.""" + +__author__ = 'robbyw@google.com (Robert Walker)' + +import sys + +import gflags as flags + +from closure_linter import error_fixer +from closure_linter import runner +from closure_linter.common import simplefileflags as fileflags + +FLAGS = flags.FLAGS +flags.DEFINE_list('additional_extensions', None, 'List of additional file ' + 'extensions (not js) that should be treated as ' + 'JavaScript files.') + + +def main(argv=None): + """Main function. + + Args: + argv: Sequence of command line arguments. + """ + if argv is None: + argv = flags.FLAGS(sys.argv) + + suffixes = ['.js'] + if FLAGS.additional_extensions: + suffixes += ['.%s' % ext for ext in FLAGS.additional_extensions] + + files = fileflags.GetFileList(argv, 'JavaScript', suffixes) + + fixer = error_fixer.ErrorFixer() + + # Check the list of files. + for filename in files: + runner.Run(filename, fixer) + + +if __name__ == '__main__': + main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/fixjsstyle_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/fixjsstyle_test.py new file mode 100755 index 0000000000..27b15eca9e --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/fixjsstyle_test.py @@ -0,0 +1,375 @@ +#!/usr/bin/env python +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Medium tests for the gpylint auto-fixer.""" + +__author__ = 'robbyw@google.com (Robby Walker)' + +import StringIO + +import gflags as flags +import unittest as googletest +from closure_linter import error_fixer +from closure_linter import runner + + +_RESOURCE_PREFIX = 'closure_linter/testdata' + +flags.FLAGS.strict = True +flags.FLAGS.limited_doc_files = ('dummy.js', 'externs.js') +flags.FLAGS.closurized_namespaces = ('goog', 'dummy') + + +class FixJsStyleTest(googletest.TestCase): + """Test case to for gjslint auto-fixing.""" + + def testFixJsStyle(self): + test_cases = [ + ['fixjsstyle.in.js', 'fixjsstyle.out.js'], + ['indentation.js', 'fixjsstyle.indentation.out.js'], + ['fixjsstyle.html.in.html', 'fixjsstyle.html.out.html']] + for [running_input_file, running_output_file] in test_cases: + input_filename = None + golden_filename = None + current_filename = None + try: + input_filename = '%s/%s' % (_RESOURCE_PREFIX, running_input_file) + current_filename = input_filename + + golden_filename = '%s/%s' % (_RESOURCE_PREFIX, running_output_file) + current_filename = golden_filename + except IOError as ex: + raise IOError('Could not find testdata resource for %s: %s' % + (current_filename, ex)) + + if running_input_file == 'fixjsstyle.in.js': + with open(input_filename) as f: + for line in f: + # Go to last line. + pass + self.assertTrue(line == line.rstrip(), '%s file should not end ' + 'with a new line.' % (input_filename)) + + # Autofix the file, sending output to a fake file. + actual = StringIO.StringIO() + runner.Run(input_filename, error_fixer.ErrorFixer(actual)) + + # Now compare the files. + actual.seek(0) + expected = open(golden_filename, 'r') + + self.assertEqual(actual.readlines(), expected.readlines()) + + def testUnsortedRequires(self): + """Tests handling of unsorted goog.require statements without header. + + Bug 8398202. + """ + original = [ + 'goog.require(\'dummy.aa\');', + 'goog.require(\'dummy.Cc\');', + 'goog.require(\'dummy.Dd\');', + '', + 'function a() {', + ' dummy.aa.i = 1;', + ' dummy.Cc.i = 1;', + ' dummy.Dd.i = 1;', + '}', + ] + + expected = [ + 'goog.require(\'dummy.Cc\');', + 'goog.require(\'dummy.Dd\');', + 'goog.require(\'dummy.aa\');', + '', + 'function a() {', + ' dummy.aa.i = 1;', + ' dummy.Cc.i = 1;', + ' dummy.Dd.i = 1;', + '}', + ] + + self._AssertFixes(original, expected, include_header=False) + + def testMissingExtraAndUnsortedRequires(self): + """Tests handling of missing extra and unsorted goog.require statements.""" + original = [ + 'goog.require(\'dummy.aa\');', + 'goog.require(\'dummy.Cc\');', + 'goog.require(\'dummy.Dd\');', + '', + 'var x = new dummy.Bb();', + 'dummy.Cc.someMethod();', + 'dummy.aa.someMethod();', + ] + + expected = [ + 'goog.require(\'dummy.Bb\');', + 'goog.require(\'dummy.Cc\');', + 'goog.require(\'dummy.aa\');', + '', + 'var x = new dummy.Bb();', + 'dummy.Cc.someMethod();', + 'dummy.aa.someMethod();', + ] + + self._AssertFixes(original, expected) + + def testUnsortedProvides(self): + """Tests handling of unsorted goog.provide statements without header. + + Bug 8398202. + """ + original = [ + 'goog.provide(\'dummy.aa\');', + 'goog.provide(\'dummy.Cc\');', + 'goog.provide(\'dummy.Dd\');', + '', + 'dummy.aa = function() {};' + 'dummy.Cc = function() {};' + 'dummy.Dd = function() {};' + ] + + expected = [ + 'goog.provide(\'dummy.Cc\');', + 'goog.provide(\'dummy.Dd\');', + 'goog.provide(\'dummy.aa\');', + '', + 'dummy.aa = function() {};' + 'dummy.Cc = function() {};' + 'dummy.Dd = function() {};' + ] + + self._AssertFixes(original, expected, include_header=False) + + def testMissingExtraAndUnsortedProvides(self): + """Tests handling of missing extra and unsorted goog.provide statements.""" + original = [ + 'goog.provide(\'dummy.aa\');', + 'goog.provide(\'dummy.Cc\');', + 'goog.provide(\'dummy.Dd\');', + '', + 'dummy.Cc = function() {};', + 'dummy.Bb = function() {};', + 'dummy.aa.someMethod = function();', + ] + + expected = [ + 'goog.provide(\'dummy.Bb\');', + 'goog.provide(\'dummy.Cc\');', + 'goog.provide(\'dummy.aa\');', + '', + 'dummy.Cc = function() {};', + 'dummy.Bb = function() {};', + 'dummy.aa.someMethod = function();', + ] + + self._AssertFixes(original, expected) + + def testNoRequires(self): + """Tests positioning of missing requires without existing requires.""" + original = [ + 'goog.provide(\'dummy.Something\');', + '', + 'dummy.Something = function() {};', + '', + 'var x = new dummy.Bb();', + ] + + expected = [ + 'goog.provide(\'dummy.Something\');', + '', + 'goog.require(\'dummy.Bb\');', + '', + 'dummy.Something = function() {};', + '', + 'var x = new dummy.Bb();', + ] + + self._AssertFixes(original, expected) + + def testNoProvides(self): + """Tests positioning of missing provides without existing provides.""" + original = [ + 'goog.require(\'dummy.Bb\');', + '', + 'dummy.Something = function() {};', + '', + 'var x = new dummy.Bb();', + ] + + expected = [ + 'goog.provide(\'dummy.Something\');', + '', + 'goog.require(\'dummy.Bb\');', + '', + 'dummy.Something = function() {};', + '', + 'var x = new dummy.Bb();', + ] + + self._AssertFixes(original, expected) + + def testOutputOkayWhenFirstTokenIsDeleted(self): + """Tests that autofix output is is correct when first token is deleted. + + Regression test for bug 4581567 + """ + original = ['"use strict";'] + expected = ["'use strict';"] + + self._AssertFixes(original, expected, include_header=False) + + def testGoogScopeIndentation(self): + """Tests Handling a typical end-of-scope indentation fix.""" + original = [ + 'goog.scope(function() {', + ' // TODO(brain): Take over the world.', + '}); // goog.scope', + ] + + expected = [ + 'goog.scope(function() {', + '// TODO(brain): Take over the world.', + '}); // goog.scope', + ] + + self._AssertFixes(original, expected) + + def testMissingEndOfScopeComment(self): + """Tests Handling a missing comment at end of goog.scope.""" + original = [ + 'goog.scope(function() {', + '});', + ] + + expected = [ + 'goog.scope(function() {', + '}); // goog.scope', + ] + + self._AssertFixes(original, expected) + + def testMissingEndOfScopeCommentWithOtherComment(self): + """Tests handling an irrelevant comment at end of goog.scope.""" + original = [ + 'goog.scope(function() {', + "}); // I don't belong here!", + ] + + expected = [ + 'goog.scope(function() {', + '}); // goog.scope', + ] + + self._AssertFixes(original, expected) + + def testMalformedEndOfScopeComment(self): + """Tests Handling a malformed comment at end of goog.scope.""" + original = [ + 'goog.scope(function() {', + '}); // goog.scope FTW', + ] + + expected = [ + 'goog.scope(function() {', + '}); // goog.scope', + ] + + self._AssertFixes(original, expected) + + def testEndsWithIdentifier(self): + """Tests Handling case where script ends with identifier. Bug 7643404.""" + original = [ + 'goog.provide(\'xyz\');', + '', + 'abc' + ] + + expected = [ + 'goog.provide(\'xyz\');', + '', + 'abc;' + ] + + self._AssertFixes(original, expected) + + def testFileStartsWithSemicolon(self): + """Tests handling files starting with semicolon. + + b/10062516 + """ + original = [ + ';goog.provide(\'xyz\');', + '', + 'abc;' + ] + + expected = [ + 'goog.provide(\'xyz\');', + '', + 'abc;' + ] + + self._AssertFixes(original, expected, include_header=False) + + def testCodeStartsWithSemicolon(self): + """Tests handling code in starting with semicolon after comments. + + b/10062516 + """ + original = [ + ';goog.provide(\'xyz\');', + '', + 'abc;' + ] + + expected = [ + 'goog.provide(\'xyz\');', + '', + 'abc;' + ] + + self._AssertFixes(original, expected) + + def _AssertFixes(self, original, expected, include_header=True): + """Asserts that the error fixer corrects original to expected.""" + if include_header: + original = self._GetHeader() + original + expected = self._GetHeader() + expected + + actual = StringIO.StringIO() + runner.Run('testing.js', error_fixer.ErrorFixer(actual), original) + actual.seek(0) + + expected = [x + '\n' for x in expected] + + self.assertListEqual(actual.readlines(), expected) + + def _GetHeader(self): + """Returns a fake header for a JavaScript file.""" + return [ + '// Copyright 2011 Google Inc. All Rights Reserved.', + '', + '/**', + ' * @fileoverview Fake file overview.', + ' * @author fake@google.com (Fake Person)', + ' */', + '' + ] + + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/full_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/full_test.py new file mode 100755 index 0000000000..37f99b489a --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/full_test.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python +# +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Full regression-type (Medium) tests for gjslint. + +Tests every error that can be thrown by gjslint. Based heavily on +devtools/javascript/gpylint/full_test.py +""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + +import os +import sys +import unittest + +import gflags as flags +import unittest as googletest + +from closure_linter import error_check +from closure_linter import errors +from closure_linter import runner +from closure_linter.common import filetestcase + +_RESOURCE_PREFIX = 'closure_linter/testdata' + +flags.FLAGS.strict = True +flags.FLAGS.custom_jsdoc_tags = ('customtag', 'requires') +flags.FLAGS.closurized_namespaces = ('goog', 'dummy') +flags.FLAGS.limited_doc_files = ('externs.js', 'dummy.js', + 'limited_doc_checks.js') +flags.FLAGS.jslint_error = error_check.Rule.ALL + +# List of files under testdata to test. +# We need to list files explicitly since pyglib can't list directories. +# TODO(user): Figure out how to list the directory. +_TEST_FILES = [ + 'all_js_wrapped.js', + 'blank_lines.js', + 'ends_with_block.js', + 'externs.js', + 'externs_jsdoc.js', + 'goog_scope.js', + 'html_parse_error.html', + 'indentation.js', + 'interface.js', + 'jsdoc.js', + 'limited_doc_checks.js', + 'minimal.js', + 'other.js', + 'provide_blank.js', + 'provide_extra.js', + 'provide_missing.js', + 'require_all_caps.js', + 'require_blank.js', + 'require_extra.js', + 'require_function.js', + 'require_function_missing.js', + 'require_function_through_both.js', + 'require_function_through_namespace.js', + 'require_interface.js', + 'require_interface_base.js', + 'require_lower_case.js', + 'require_missing.js', + 'require_numeric.js', + 'require_provide_blank.js', + 'require_provide_missing.js', + 'require_provide_ok.js', + 'semicolon_missing.js', + 'simple.html', + 'spaces.js', + 'tokenizer.js', + 'unparseable.js', + 'unused_local_variables.js', + 'unused_private_members.js', + 'utf8.html', +] + + +class GJsLintTestSuite(unittest.TestSuite): + """Test suite to run a GJsLintTest for each of several files. + + If sys.argv[1:] is non-empty, it is interpreted as a list of filenames in + testdata to test. Otherwise, _TEST_FILES is used. + """ + + def __init__(self, tests=()): + unittest.TestSuite.__init__(self, tests) + + argv = sys.argv and sys.argv[1:] or [] + if argv: + test_files = argv + else: + test_files = _TEST_FILES + for test_file in test_files: + resource_path = os.path.join(_RESOURCE_PREFIX, test_file) + self.addTest( + filetestcase.AnnotatedFileTestCase( + resource_path, + runner.Run, + errors.ByName)) + +if __name__ == '__main__': + # Don't let main parse args; it happens in the TestSuite. + googletest.main(argv=sys.argv[0:1], defaultTest='GJsLintTestSuite') diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/gjslint.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/gjslint.py new file mode 100755 index 0000000000..ca4069a881 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/gjslint.py @@ -0,0 +1,284 @@ +#!/usr/bin/env python +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Checks JavaScript files for common style guide violations. + +gjslint.py is designed to be used as a PRESUBMIT script to check for javascript +style guide violations. As of now, it checks for the following violations: + + * Missing and extra spaces + * Lines longer than 80 characters + * Missing newline at end of file + * Missing semicolon after function declaration + * Valid JsDoc including parameter matching + +Someday it will validate to the best of its ability against the entirety of the +JavaScript style guide. + +This file is a front end that parses arguments and flags. The core of the code +is in tokenizer.py and checker.py. +""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)', + 'nnaze@google.com (Nathan Naze)',) + +import errno +import itertools +import platform +import sys +import time + +import gflags as flags + +from closure_linter import errorrecord +from closure_linter import runner +from closure_linter.common import erroraccumulator +from closure_linter.common import simplefileflags as fileflags + +# Attempt import of multiprocessing (should be available in Python 2.6 and up). +try: + # pylint: disable=g-import-not-at-top + import multiprocessing +except ImportError: + multiprocessing = None + +FLAGS = flags.FLAGS +flags.DEFINE_boolean('unix_mode', False, + 'Whether to emit warnings in standard unix format.') +flags.DEFINE_boolean('beep', True, 'Whether to beep when errors are found.') +flags.DEFINE_boolean('time', False, 'Whether to emit timing statistics.') +flags.DEFINE_boolean('check_html', False, + 'Whether to check javascript in html files.') +flags.DEFINE_boolean('summary', False, + 'Whether to show an error count summary.') +flags.DEFINE_list('additional_extensions', None, 'List of additional file ' + 'extensions (not js) that should be treated as ' + 'JavaScript files.') +flags.DEFINE_boolean('multiprocess', + platform.system() is 'Linux' and bool(multiprocessing), + 'Whether to attempt parallelized linting using the ' + 'multiprocessing module. Enabled by default on Linux ' + 'if the multiprocessing module is present (Python 2.6+). ' + 'Otherwise disabled by default. ' + 'Disabling may make debugging easier.') + + +GJSLINT_ONLY_FLAGS = ['--unix_mode', '--beep', '--nobeep', '--time', + '--check_html', '--summary'] + + +def _MultiprocessCheckPaths(paths): + """Run _CheckPath over mutltiple processes. + + Tokenization, passes, and checks are expensive operations. Running in a + single process, they can only run on one CPU/core. Instead, + shard out linting over all CPUs with multiprocessing to parallelize. + + Args: + paths: paths to check. + + Yields: + errorrecord.ErrorRecords for any found errors. + """ + + pool = multiprocessing.Pool() + + path_results = pool.imap(_CheckPath, paths) + for results in path_results: + for result in results: + yield result + + # Force destruct before returning, as this can sometimes raise spurious + # "interrupted system call" (EINTR), which we can ignore. + try: + pool.close() + pool.join() + del pool + except OSError as err: + if err.errno is not errno.EINTR: + raise err + + +def _CheckPaths(paths): + """Run _CheckPath on all paths in one thread. + + Args: + paths: paths to check. + + Yields: + errorrecord.ErrorRecords for any found errors. + """ + + for path in paths: + results = _CheckPath(path) + for record in results: + yield record + + +def _CheckPath(path): + """Check a path and return any errors. + + Args: + path: paths to check. + + Returns: + A list of errorrecord.ErrorRecords for any found errors. + """ + + error_handler = erroraccumulator.ErrorAccumulator() + runner.Run(path, error_handler) + + make_error_record = lambda err: errorrecord.MakeErrorRecord(path, err) + return map(make_error_record, error_handler.GetErrors()) + + +def _GetFilePaths(argv): + suffixes = ['.js'] + if FLAGS.additional_extensions: + suffixes += ['.%s' % ext for ext in FLAGS.additional_extensions] + if FLAGS.check_html: + suffixes += ['.html', '.htm'] + return fileflags.GetFileList(argv, 'JavaScript', suffixes) + + +# Error printing functions + + +def _PrintFileSummary(paths, records): + """Print a detailed summary of the number of errors in each file.""" + + paths = list(paths) + paths.sort() + + for path in paths: + path_errors = [e for e in records if e.path == path] + print '%s: %d' % (path, len(path_errors)) + + +def _PrintFileSeparator(path): + print '----- FILE : %s -----' % path + + +def _PrintSummary(paths, error_records): + """Print a summary of the number of errors and files.""" + + error_count = len(error_records) + all_paths = set(paths) + all_paths_count = len(all_paths) + + if error_count is 0: + print '%d files checked, no errors found.' % all_paths_count + + new_error_count = len([e for e in error_records if e.new_error]) + + error_paths = set([e.path for e in error_records]) + error_paths_count = len(error_paths) + no_error_paths_count = all_paths_count - error_paths_count + + if error_count or new_error_count: + print ('Found %d errors, including %d new errors, in %d files ' + '(%d files OK).' % ( + error_count, + new_error_count, + error_paths_count, + no_error_paths_count)) + + +def _PrintErrorRecords(error_records): + """Print error records strings in the expected format.""" + + current_path = None + for record in error_records: + + if current_path != record.path: + current_path = record.path + if not FLAGS.unix_mode: + _PrintFileSeparator(current_path) + + print record.error_string + + +def _FormatTime(t): + """Formats a duration as a human-readable string. + + Args: + t: A duration in seconds. + + Returns: + A formatted duration string. + """ + if t < 1: + return '%dms' % round(t * 1000) + else: + return '%.2fs' % t + + +def main(argv=None): + """Main function. + + Args: + argv: Sequence of command line arguments. + """ + if argv is None: + argv = flags.FLAGS(sys.argv) + + if FLAGS.time: + start_time = time.time() + + suffixes = ['.js'] + if FLAGS.additional_extensions: + suffixes += ['.%s' % ext for ext in FLAGS.additional_extensions] + if FLAGS.check_html: + suffixes += ['.html', '.htm'] + paths = fileflags.GetFileList(argv, 'JavaScript', suffixes) + + if FLAGS.multiprocess: + records_iter = _MultiprocessCheckPaths(paths) + else: + records_iter = _CheckPaths(paths) + + records_iter, records_iter_copy = itertools.tee(records_iter, 2) + _PrintErrorRecords(records_iter_copy) + + error_records = list(records_iter) + _PrintSummary(paths, error_records) + + exit_code = 0 + + # If there are any errors + if error_records: + exit_code += 1 + + # If there are any new errors + if [r for r in error_records if r.new_error]: + exit_code += 2 + + if exit_code: + if FLAGS.summary: + _PrintFileSummary(paths, error_records) + + if FLAGS.beep: + # Make a beep noise. + sys.stdout.write(chr(7)) + + if FLAGS.time: + print 'Done in %s.' % _FormatTime(time.time() - start_time) + + sys.exit(exit_code) + + +if __name__ == '__main__': + main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/indentation.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/indentation.py new file mode 100755 index 0000000000..0abb25b149 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/indentation.py @@ -0,0 +1,581 @@ +#!/usr/bin/env python +# Copyright 2010 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Methods for checking EcmaScript files for indentation issues.""" + +__author__ = ('robbyw@google.com (Robert Walker)') + +import gflags as flags + +from closure_linter import ecmametadatapass +from closure_linter import errors +from closure_linter import javascripttokens +from closure_linter import tokenutil +from closure_linter.common import error +from closure_linter.common import position + + +flags.DEFINE_boolean('debug_indentation', False, + 'Whether to print debugging information for indentation.') + + +# Shorthand +Context = ecmametadatapass.EcmaContext +Error = error.Error +Position = position.Position +Type = javascripttokens.JavaScriptTokenType + + +# The general approach: +# +# 1. Build a stack of tokens that can affect indentation. +# For each token, we determine if it is a block or continuation token. +# Some tokens need to be temporarily overwritten in case they are removed +# before the end of the line. +# Much of the work here is determining which tokens to keep on the stack +# at each point. Operators, for example, should be removed once their +# expression or line is gone, while parentheses must stay until the matching +# end parentheses is found. +# +# 2. Given that stack, determine the allowable indentations. +# Due to flexible indentation rules in JavaScript, there may be many +# allowable indentations for each stack. We follows the general +# "no false positives" approach of GJsLint and build the most permissive +# set possible. + + +class TokenInfo(object): + """Stores information about a token. + + Attributes: + token: The token + is_block: Whether the token represents a block indentation. + is_transient: Whether the token should be automatically removed without + finding a matching end token. + overridden_by: TokenInfo for a token that overrides the indentation that + this token would require. + is_permanent_override: Whether the override on this token should persist + even after the overriding token is removed from the stack. For example: + x([ + 1], + 2); + needs this to be set so the last line is not required to be a continuation + indent. + line_number: The effective line number of this token. Will either be the + actual line number or the one before it in the case of a mis-wrapped + operator. + """ + + def __init__(self, token, is_block=False): + """Initializes a TokenInfo object. + + Args: + token: The token + is_block: Whether the token represents a block indentation. + """ + self.token = token + self.overridden_by = None + self.is_permanent_override = False + self.is_block = is_block + self.is_transient = not is_block and token.type not in ( + Type.START_PAREN, Type.START_PARAMETERS) + self.line_number = token.line_number + + def __repr__(self): + result = '\n %s' % self.token + if self.overridden_by: + result = '%s OVERRIDDEN [by "%s"]' % ( + result, self.overridden_by.token.string) + result += ' {is_block: %s, is_transient: %s}' % ( + self.is_block, self.is_transient) + return result + + +class IndentationRules(object): + """EmcaScript indentation rules. + + Can be used to find common indentation errors in JavaScript, ActionScript and + other Ecma like scripting languages. + """ + + def __init__(self): + """Initializes the IndentationRules checker.""" + self._stack = [] + + # Map from line number to number of characters it is off in indentation. + self._start_index_offset = {} + + def Finalize(self): + if self._stack: + old_stack = self._stack + self._stack = [] + raise Exception('INTERNAL ERROR: indentation stack is not empty: %r' % + old_stack) + + def CheckToken(self, token, state): + """Checks a token for indentation errors. + + Args: + token: The current token under consideration + state: Additional information about the current tree state + + Returns: + An error array [error code, error string, error token] if the token is + improperly indented, or None if indentation is correct. + """ + + token_type = token.type + indentation_errors = [] + stack = self._stack + is_first = self._IsFirstNonWhitespaceTokenInLine(token) + + # Add tokens that could decrease indentation before checking. + if token_type == Type.END_PAREN: + self._PopTo(Type.START_PAREN) + + elif token_type == Type.END_PARAMETERS: + self._PopTo(Type.START_PARAMETERS) + + elif token_type == Type.END_BRACKET: + self._PopTo(Type.START_BRACKET) + + elif token_type == Type.END_BLOCK: + start_token = self._PopTo(Type.START_BLOCK) + # Check for required goog.scope comment. + if start_token: + goog_scope = tokenutil.GoogScopeOrNoneFromStartBlock(start_token.token) + if goog_scope is not None: + if not token.line.endswith('; // goog.scope\n'): + if (token.line.find('//') > -1 and + token.line.find('goog.scope') > + token.line.find('//')): + indentation_errors.append([ + errors.MALFORMED_END_OF_SCOPE_COMMENT, + ('Malformed end of goog.scope comment. Please use the ' + 'exact following syntax to close the scope:\n' + '}); // goog.scope'), + token, + Position(token.start_index, token.length)]) + else: + indentation_errors.append([ + errors.MISSING_END_OF_SCOPE_COMMENT, + ('Missing comment for end of goog.scope which opened at line ' + '%d. End the scope with:\n' + '}); // goog.scope' % + (start_token.line_number)), + token, + Position(token.start_index, token.length)]) + + elif token_type == Type.KEYWORD and token.string in ('case', 'default'): + self._Add(self._PopTo(Type.START_BLOCK)) + + elif is_first and token.string == '.': + # This token should have been on the previous line, so treat it as if it + # was there. + info = TokenInfo(token) + info.line_number = token.line_number - 1 + self._Add(info) + + elif token_type == Type.SEMICOLON: + self._PopTransient() + + not_binary_operator = (token_type != Type.OPERATOR or + token.metadata.IsUnaryOperator()) + not_dot = token.string != '.' + if is_first and not_binary_operator and not_dot and token.type not in ( + Type.COMMENT, Type.DOC_PREFIX, Type.STRING_TEXT): + if flags.FLAGS.debug_indentation: + print 'Line #%d: stack %r' % (token.line_number, stack) + + # Ignore lines that start in JsDoc since we don't check them properly yet. + # TODO(robbyw): Support checking JsDoc indentation. + # Ignore lines that start as multi-line strings since indentation is N/A. + # Ignore lines that start with operators since we report that already. + # Ignore lines with tabs since we report that already. + expected = self._GetAllowableIndentations() + actual = self._GetActualIndentation(token) + + # Special case comments describing else, case, and default. Allow them + # to outdent to the parent block. + if token_type in Type.COMMENT_TYPES: + next_code = tokenutil.SearchExcept(token, Type.NON_CODE_TYPES) + if next_code and next_code.type == Type.END_BLOCK: + next_code = tokenutil.SearchExcept(next_code, Type.NON_CODE_TYPES) + if next_code and next_code.string in ('else', 'case', 'default'): + # TODO(robbyw): This almost certainly introduces false negatives. + expected |= self._AddToEach(expected, -2) + + if actual >= 0 and actual not in expected: + expected = sorted(expected) + indentation_errors.append([ + errors.WRONG_INDENTATION, + 'Wrong indentation: expected any of {%s} but got %d' % ( + ', '.join( + ['%d' % x for x in expected]), actual), + token, + Position(actual, expected[0])]) + self._start_index_offset[token.line_number] = expected[0] - actual + + # Add tokens that could increase indentation. + if token_type == Type.START_BRACKET: + self._Add(TokenInfo( + token=token, + is_block=token.metadata.context.type == Context.ARRAY_LITERAL)) + + elif token_type == Type.START_BLOCK or token.metadata.is_implied_block: + self._Add(TokenInfo(token=token, is_block=True)) + + elif token_type in (Type.START_PAREN, Type.START_PARAMETERS): + self._Add(TokenInfo(token=token, is_block=False)) + + elif token_type == Type.KEYWORD and token.string == 'return': + self._Add(TokenInfo(token)) + + elif not token.IsLastInLine() and ( + token.IsAssignment() or token.IsOperator('?')): + self._Add(TokenInfo(token=token)) + + # Handle implied block closes. + if token.metadata.is_implied_block_close: + self._PopToImpliedBlock() + + # Add some tokens only if they appear at the end of the line. + is_last = self._IsLastCodeInLine(token) + if is_last: + if token_type == Type.OPERATOR: + if token.string == ':': + if stack and stack[-1].token.string == '?': + # When a ternary : is on a different line than its '?', it doesn't + # add indentation. + if token.line_number == stack[-1].token.line_number: + self._Add(TokenInfo(token)) + elif token.metadata.context.type == Context.CASE_BLOCK: + # Pop transient tokens from say, line continuations, e.g., + # case x. + # y: + # Want to pop the transient 4 space continuation indent. + self._PopTransient() + # Starting the body of the case statement, which is a type of + # block. + self._Add(TokenInfo(token=token, is_block=True)) + elif token.metadata.context.type == Context.LITERAL_ELEMENT: + # When in an object literal, acts as operator indicating line + # continuations. + self._Add(TokenInfo(token)) + pass + else: + # ':' might also be a statement label, no effect on indentation in + # this case. + pass + + elif token.string != ',': + self._Add(TokenInfo(token)) + else: + # The token is a comma. + if token.metadata.context.type == Context.VAR: + self._Add(TokenInfo(token)) + elif token.metadata.context.type != Context.PARAMETERS: + self._PopTransient() + + elif (token.string.endswith('.') + and token_type in (Type.IDENTIFIER, Type.NORMAL)): + self._Add(TokenInfo(token)) + elif token_type == Type.PARAMETERS and token.string.endswith(','): + # Parameter lists. + self._Add(TokenInfo(token)) + elif token.IsKeyword('var'): + self._Add(TokenInfo(token)) + elif token.metadata.is_implied_semicolon: + self._PopTransient() + elif token.IsAssignment(): + self._Add(TokenInfo(token)) + + return indentation_errors + + def _AddToEach(self, original, amount): + """Returns a new set with the given amount added to each element. + + Args: + original: The original set of numbers + amount: The amount to add to each element + + Returns: + A new set containing each element of the original set added to the amount. + """ + return set([x + amount for x in original]) + + _HARD_STOP_TYPES = (Type.START_PAREN, Type.START_PARAMETERS, + Type.START_BRACKET) + + _HARD_STOP_STRINGS = ('return', '?') + + def _IsHardStop(self, token): + """Determines if the given token can have a hard stop after it. + + Args: + token: token to examine + + Returns: + Whether the token can have a hard stop after it. + + Hard stops are indentations defined by the position of another token as in + indentation lined up with return, (, [, and ?. + """ + return (token.type in self._HARD_STOP_TYPES or + token.string in self._HARD_STOP_STRINGS or + token.IsAssignment()) + + def _GetAllowableIndentations(self): + """Computes the set of allowable indentations. + + Returns: + The set of allowable indentations, given the current stack. + """ + expected = set([0]) + hard_stops = set([]) + + # Whether the tokens are still in the same continuation, meaning additional + # indentation is optional. As an example: + # x = 5 + + # 6 + + # 7; + # The second '+' does not add any required indentation. + in_same_continuation = False + + for token_info in self._stack: + token = token_info.token + + # Handle normal additive indentation tokens. + if not token_info.overridden_by and token.string != 'return': + if token_info.is_block: + expected = self._AddToEach(expected, 2) + hard_stops = self._AddToEach(hard_stops, 2) + in_same_continuation = False + elif in_same_continuation: + expected |= self._AddToEach(expected, 4) + hard_stops |= self._AddToEach(hard_stops, 4) + else: + expected = self._AddToEach(expected, 4) + hard_stops |= self._AddToEach(hard_stops, 4) + in_same_continuation = True + + # Handle hard stops after (, [, return, =, and ? + if self._IsHardStop(token): + override_is_hard_stop = (token_info.overridden_by and + self._IsHardStop( + token_info.overridden_by.token)) + if not override_is_hard_stop: + start_index = token.start_index + if token.line_number in self._start_index_offset: + start_index += self._start_index_offset[token.line_number] + if (token.type in (Type.START_PAREN, Type.START_PARAMETERS) and + not token_info.overridden_by): + hard_stops.add(start_index + 1) + + elif token.string == 'return' and not token_info.overridden_by: + hard_stops.add(start_index + 7) + + elif token.type == Type.START_BRACKET: + hard_stops.add(start_index + 1) + + elif token.IsAssignment(): + hard_stops.add(start_index + len(token.string) + 1) + + elif token.IsOperator('?') and not token_info.overridden_by: + hard_stops.add(start_index + 2) + + return (expected | hard_stops) or set([0]) + + def _GetActualIndentation(self, token): + """Gets the actual indentation of the line containing the given token. + + Args: + token: Any token on the line. + + Returns: + The actual indentation of the line containing the given token. Returns + -1 if this line should be ignored due to the presence of tabs. + """ + # Move to the first token in the line + token = tokenutil.GetFirstTokenInSameLine(token) + + # If it is whitespace, it is the indentation. + if token.type == Type.WHITESPACE: + if token.string.find('\t') >= 0: + return -1 + else: + return len(token.string) + elif token.type == Type.PARAMETERS: + return len(token.string) - len(token.string.lstrip()) + else: + return 0 + + def _IsFirstNonWhitespaceTokenInLine(self, token): + """Determines if the given token is the first non-space token on its line. + + Args: + token: The token. + + Returns: + True if the token is the first non-whitespace token on its line. + """ + if token.type in (Type.WHITESPACE, Type.BLANK_LINE): + return False + if token.IsFirstInLine(): + return True + return (token.previous and token.previous.IsFirstInLine() and + token.previous.type == Type.WHITESPACE) + + def _IsLastCodeInLine(self, token): + """Determines if the given token is the last code token on its line. + + Args: + token: The token. + + Returns: + True if the token is the last code token on its line. + """ + if token.type in Type.NON_CODE_TYPES: + return False + start_token = token + while True: + token = token.next + if not token or token.line_number != start_token.line_number: + return True + if token.type not in Type.NON_CODE_TYPES: + return False + + def _Add(self, token_info): + """Adds the given token info to the stack. + + Args: + token_info: The token information to add. + """ + if self._stack and self._stack[-1].token == token_info.token: + # Don't add the same token twice. + return + + if token_info.is_block or token_info.token.type == Type.START_PAREN: + token_info.overridden_by = ( + tokenutil.GoogScopeOrNoneFromStartBlock(token_info.token)) + index = 1 + while index <= len(self._stack): + stack_info = self._stack[-index] + stack_token = stack_info.token + + if stack_info.line_number == token_info.line_number: + # In general, tokens only override each other when they are on + # the same line. + stack_info.overridden_by = token_info + if (token_info.token.type == Type.START_BLOCK and + (stack_token.IsAssignment() or + stack_token.type in (Type.IDENTIFIER, Type.START_PAREN))): + # Multi-line blocks have lasting overrides, as in: + # callFn({ + # a: 10 + # }, + # 30); + # b/11450054. If a string is not closed properly then close_block + # could be null. + close_block = token_info.token.metadata.context.end_token + stack_info.is_permanent_override = close_block and ( + close_block.line_number != token_info.token.line_number) + elif (token_info.token.type == Type.START_BLOCK and + token_info.token.metadata.context.type == Context.BLOCK and + (stack_token.IsAssignment() or + stack_token.type == Type.IDENTIFIER)): + # When starting a function block, the override can transcend lines. + # For example + # long.long.name = function( + # a) { + # In this case the { and the = are on different lines. But the + # override should still apply. + stack_info.overridden_by = token_info + stack_info.is_permanent_override = True + else: + break + index += 1 + + self._stack.append(token_info) + + def _Pop(self): + """Pops the top token from the stack. + + Returns: + The popped token info. + """ + token_info = self._stack.pop() + if token_info.token.type not in (Type.START_BLOCK, Type.START_BRACKET): + # Remove any temporary overrides. + self._RemoveOverrides(token_info) + else: + # For braces and brackets, which can be object and array literals, remove + # overrides when the literal is closed on the same line. + token_check = token_info.token + same_type = token_check.type + goal_type = None + if token_info.token.type == Type.START_BRACKET: + goal_type = Type.END_BRACKET + else: + goal_type = Type.END_BLOCK + line_number = token_info.token.line_number + count = 0 + while token_check and token_check.line_number == line_number: + if token_check.type == goal_type: + count -= 1 + if not count: + self._RemoveOverrides(token_info) + break + if token_check.type == same_type: + count += 1 + token_check = token_check.next + return token_info + + def _PopToImpliedBlock(self): + """Pops the stack until an implied block token is found.""" + while not self._Pop().token.metadata.is_implied_block: + pass + + def _PopTo(self, stop_type): + """Pops the stack until a token of the given type is popped. + + Args: + stop_type: The type of token to pop to. + + Returns: + The token info of the given type that was popped. + """ + last = None + while True: + last = self._Pop() + if last.token.type == stop_type: + break + return last + + def _RemoveOverrides(self, token_info): + """Marks any token that was overridden by this token as active again. + + Args: + token_info: The token that is being removed from the stack. + """ + for stack_token in self._stack: + if (stack_token.overridden_by == token_info and + not stack_token.is_permanent_override): + stack_token.overridden_by = None + + def _PopTransient(self): + """Pops all transient tokens - i.e. not blocks, literals, or parens.""" + while self._stack and self._stack[-1].is_transient: + self._Pop() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptlintrules.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptlintrules.py new file mode 100755 index 0000000000..0be01ee26b --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptlintrules.py @@ -0,0 +1,738 @@ +#!/usr/bin/env python +# Copyright 2011 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Methods for checking JS files for common style guide violations. + +These style guide violations should only apply to JavaScript and not an Ecma +scripting languages. +""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)', + 'jacobr@google.com (Jacob Richman)') + +import re + +from closure_linter import ecmalintrules +from closure_linter import error_check +from closure_linter import errors +from closure_linter import javascripttokenizer +from closure_linter import javascripttokens +from closure_linter import requireprovidesorter +from closure_linter import tokenutil +from closure_linter.common import error +from closure_linter.common import position + +# Shorthand +Error = error.Error +Position = position.Position +Rule = error_check.Rule +Type = javascripttokens.JavaScriptTokenType + + +class JavaScriptLintRules(ecmalintrules.EcmaScriptLintRules): + """JavaScript lint rules that catch JavaScript specific style errors.""" + + def __init__(self, namespaces_info): + """Initializes a JavaScriptLintRules instance.""" + ecmalintrules.EcmaScriptLintRules.__init__(self) + self._namespaces_info = namespaces_info + self._declared_private_member_tokens = {} + self._declared_private_members = set() + self._used_private_members = set() + # A stack of dictionaries, one for each function scope entered. Each + # dictionary is keyed by an identifier that defines a local variable and has + # a token as its value. + self._unused_local_variables_by_scope = [] + + def HandleMissingParameterDoc(self, token, param_name): + """Handle errors associated with a parameter missing a param tag.""" + self._HandleError(errors.MISSING_PARAMETER_DOCUMENTATION, + 'Missing docs for parameter: "%s"' % param_name, token) + + def __ContainsRecordType(self, token): + """Check whether the given token contains a record type. + + Args: + token: The token being checked + + Returns: + True if the token contains a record type, False otherwise. + """ + # If we see more than one left-brace in the string of an annotation token, + # then there's a record type in there. + return ( + token and token.type == Type.DOC_FLAG and + token.attached_object.type is not None and + token.attached_object.type.find('{') != token.string.rfind('{')) + + def CheckToken(self, token, state): + """Checks a token, given the current parser_state, for warnings and errors. + + Args: + token: The current token under consideration + state: parser_state object that indicates the current state in the page + """ + + # For @param don't ignore record type. + if (self.__ContainsRecordType(token) and + token.attached_object.flag_type != 'param'): + # We should bail out and not emit any warnings for this annotation. + # TODO(nicksantos): Support record types for real. + state.GetDocComment().Invalidate() + return + + # Call the base class's CheckToken function. + super(JavaScriptLintRules, self).CheckToken(token, state) + + # Store some convenience variables + namespaces_info = self._namespaces_info + + if error_check.ShouldCheck(Rule.UNUSED_LOCAL_VARIABLES): + self._CheckUnusedLocalVariables(token, state) + + if error_check.ShouldCheck(Rule.UNUSED_PRIVATE_MEMBERS): + # Find all assignments to private members. + if token.type == Type.SIMPLE_LVALUE: + identifier = token.string + if identifier.endswith('_') and not identifier.endswith('__'): + doc_comment = state.GetDocComment() + suppressed = (doc_comment and doc_comment.HasFlag('suppress') and + (doc_comment.GetFlag('suppress').type == 'underscore' or + doc_comment.GetFlag('suppress').type == + 'unusedPrivateMembers')) + if not suppressed: + # Look for static members defined on a provided namespace. + if namespaces_info: + namespace = namespaces_info.GetClosurizedNamespace(identifier) + provided_namespaces = namespaces_info.GetProvidedNamespaces() + else: + namespace = None + provided_namespaces = set() + + # Skip cases of this.something_.somethingElse_. + regex = re.compile(r'^this\.[a-zA-Z_]+$') + if namespace in provided_namespaces or regex.match(identifier): + variable = identifier.split('.')[-1] + self._declared_private_member_tokens[variable] = token + self._declared_private_members.add(variable) + elif not identifier.endswith('__'): + # Consider setting public members of private members to be a usage. + for piece in identifier.split('.'): + if piece.endswith('_'): + self._used_private_members.add(piece) + + # Find all usages of private members. + if token.type == Type.IDENTIFIER: + for piece in token.string.split('.'): + if piece.endswith('_'): + self._used_private_members.add(piece) + + if token.type == Type.DOC_FLAG: + flag = token.attached_object + + if flag.flag_type == 'param' and flag.name_token is not None: + self._CheckForMissingSpaceBeforeToken( + token.attached_object.name_token) + + if flag.type is not None and flag.name is not None: + if error_check.ShouldCheck(Rule.VARIABLE_ARG_MARKER): + # Check for variable arguments marker in type. + if (flag.type.startswith('...') and + flag.name != 'var_args'): + self._HandleError(errors.JSDOC_MISSING_VAR_ARGS_NAME, + 'Variable length argument %s must be renamed ' + 'to var_args.' % flag.name, + token) + elif (not flag.type.startswith('...') and + flag.name == 'var_args'): + self._HandleError(errors.JSDOC_MISSING_VAR_ARGS_TYPE, + 'Variable length argument %s type must start ' + 'with \'...\'.' % flag.name, + token) + + if error_check.ShouldCheck(Rule.OPTIONAL_TYPE_MARKER): + # Check for optional marker in type. + if (flag.type.endswith('=') and + not flag.name.startswith('opt_')): + self._HandleError(errors.JSDOC_MISSING_OPTIONAL_PREFIX, + 'Optional parameter name %s must be prefixed ' + 'with opt_.' % flag.name, + token) + elif (not flag.type.endswith('=') and + flag.name.startswith('opt_')): + self._HandleError(errors.JSDOC_MISSING_OPTIONAL_TYPE, + 'Optional parameter %s type must end with =.' % + flag.name, + token) + + if flag.flag_type in state.GetDocFlag().HAS_TYPE: + # Check for both missing type token and empty type braces '{}' + # Missing suppress types are reported separately and we allow enums + # and const without types. + if (flag.flag_type not in ('suppress', 'enum', 'const') and + (not flag.type or flag.type.isspace())): + self._HandleError(errors.MISSING_JSDOC_TAG_TYPE, + 'Missing type in %s tag' % token.string, token) + + elif flag.name_token and flag.type_end_token and tokenutil.Compare( + flag.type_end_token, flag.name_token) > 0: + self._HandleError( + errors.OUT_OF_ORDER_JSDOC_TAG_TYPE, + 'Type should be immediately after %s tag' % token.string, + token) + + elif token.type == Type.DOUBLE_QUOTE_STRING_START: + next_token = token.next + while next_token.type == Type.STRING_TEXT: + if javascripttokenizer.JavaScriptTokenizer.SINGLE_QUOTE.search( + next_token.string): + break + next_token = next_token.next + else: + self._HandleError( + errors.UNNECESSARY_DOUBLE_QUOTED_STRING, + 'Single-quoted string preferred over double-quoted string.', + token, + position=Position.All(token.string)) + + elif token.type == Type.END_DOC_COMMENT: + doc_comment = state.GetDocComment() + + # When @externs appears in a @fileoverview comment, it should trigger + # the same limited doc checks as a special filename like externs.js. + if doc_comment.HasFlag('fileoverview') and doc_comment.HasFlag('externs'): + self._SetLimitedDocChecks(True) + + if (error_check.ShouldCheck(Rule.BLANK_LINES_AT_TOP_LEVEL) and + not self._is_html and + state.InTopLevel() and + not state.InNonScopeBlock()): + + # Check if we're in a fileoverview or constructor JsDoc. + is_constructor = ( + doc_comment.HasFlag('constructor') or + doc_comment.HasFlag('interface')) + # @fileoverview is an optional tag so if the dosctring is the first + # token in the file treat it as a file level docstring. + is_file_level_comment = ( + doc_comment.HasFlag('fileoverview') or + not doc_comment.start_token.previous) + + # If the comment is not a file overview, and it does not immediately + # precede some code, skip it. + # NOTE: The tokenutil methods are not used here because of their + # behavior at the top of a file. + next_token = token.next + if (not next_token or + (not is_file_level_comment and + next_token.type in Type.NON_CODE_TYPES)): + return + + # Don't require extra blank lines around suppression of extra + # goog.require errors. + if (doc_comment.SuppressionOnly() and + next_token.type == Type.IDENTIFIER and + next_token.string in ['goog.provide', 'goog.require']): + return + + # Find the start of this block (include comments above the block, unless + # this is a file overview). + block_start = doc_comment.start_token + if not is_file_level_comment: + token = block_start.previous + while token and token.type in Type.COMMENT_TYPES: + block_start = token + token = token.previous + + # Count the number of blank lines before this block. + blank_lines = 0 + token = block_start.previous + while token and token.type in [Type.WHITESPACE, Type.BLANK_LINE]: + if token.type == Type.BLANK_LINE: + # A blank line. + blank_lines += 1 + elif token.type == Type.WHITESPACE and not token.line.strip(): + # A line with only whitespace on it. + blank_lines += 1 + token = token.previous + + # Log errors. + error_message = False + expected_blank_lines = 0 + + # Only need blank line before file overview if it is not the beginning + # of the file, e.g. copyright is first. + if is_file_level_comment and blank_lines == 0 and block_start.previous: + error_message = 'Should have a blank line before a file overview.' + expected_blank_lines = 1 + elif is_constructor and blank_lines != 3: + error_message = ( + 'Should have 3 blank lines before a constructor/interface.') + expected_blank_lines = 3 + elif (not is_file_level_comment and not is_constructor and + blank_lines != 2): + error_message = 'Should have 2 blank lines between top-level blocks.' + expected_blank_lines = 2 + + if error_message: + self._HandleError( + errors.WRONG_BLANK_LINE_COUNT, error_message, + block_start, position=Position.AtBeginning(), + fix_data=expected_blank_lines - blank_lines) + + elif token.type == Type.END_BLOCK: + if state.InFunction() and state.IsFunctionClose(): + is_immediately_called = (token.next and + token.next.type == Type.START_PAREN) + + function = state.GetFunction() + if not self._limited_doc_checks: + if (function.has_return and function.doc and + not is_immediately_called and + not function.doc.HasFlag('return') and + not function.doc.InheritsDocumentation() and + not function.doc.HasFlag('constructor')): + # Check for proper documentation of return value. + self._HandleError( + errors.MISSING_RETURN_DOCUMENTATION, + 'Missing @return JsDoc in function with non-trivial return', + function.doc.end_token, position=Position.AtBeginning()) + elif (not function.has_return and + not function.has_throw and + function.doc and + function.doc.HasFlag('return') and + not state.InInterfaceMethod()): + return_flag = function.doc.GetFlag('return') + if (return_flag.type is None or ( + 'undefined' not in return_flag.type and + 'void' not in return_flag.type and + '*' not in return_flag.type)): + self._HandleError( + errors.UNNECESSARY_RETURN_DOCUMENTATION, + 'Found @return JsDoc on function that returns nothing', + return_flag.flag_token, position=Position.AtBeginning()) + + # b/4073735. Method in object literal definition of prototype can + # safely reference 'this'. + prototype_object_literal = False + block_start = None + previous_code = None + previous_previous_code = None + + # Search for cases where prototype is defined as object literal. + # previous_previous_code + # | previous_code + # | | block_start + # | | | + # a.b.prototype = { + # c : function() { + # this.d = 1; + # } + # } + + # If in object literal, find first token of block so to find previous + # tokens to check above condition. + if state.InObjectLiteral(): + block_start = state.GetCurrentBlockStart() + + # If an object literal then get previous token (code type). For above + # case it should be '='. + if block_start: + previous_code = tokenutil.SearchExcept(block_start, + Type.NON_CODE_TYPES, + reverse=True) + + # If previous token to block is '=' then get its previous token. + if previous_code and previous_code.IsOperator('='): + previous_previous_code = tokenutil.SearchExcept(previous_code, + Type.NON_CODE_TYPES, + reverse=True) + + # If variable/token before '=' ends with '.prototype' then its above + # case of prototype defined with object literal. + prototype_object_literal = (previous_previous_code and + previous_previous_code.string.endswith( + '.prototype')) + + if (function.has_this and function.doc and + not function.doc.HasFlag('this') and + not function.is_constructor and + not function.is_interface and + '.prototype.' not in function.name and + not prototype_object_literal): + self._HandleError( + errors.MISSING_JSDOC_TAG_THIS, + 'Missing @this JsDoc in function referencing "this". (' + 'this usually means you are trying to reference "this" in ' + 'a static function, or you have forgotten to mark a ' + 'constructor with @constructor)', + function.doc.end_token, position=Position.AtBeginning()) + + elif token.type == Type.IDENTIFIER: + if token.string == 'goog.inherits' and not state.InFunction(): + if state.GetLastNonSpaceToken().line_number == token.line_number: + self._HandleError( + errors.MISSING_LINE, + 'Missing newline between constructor and goog.inherits', + token, + position=Position.AtBeginning()) + + extra_space = state.GetLastNonSpaceToken().next + while extra_space != token: + if extra_space.type == Type.BLANK_LINE: + self._HandleError( + errors.EXTRA_LINE, + 'Extra line between constructor and goog.inherits', + extra_space) + extra_space = extra_space.next + + # TODO(robbyw): Test the last function was a constructor. + # TODO(robbyw): Test correct @extends and @implements documentation. + + elif (token.string == 'goog.provide' and + not state.InFunction() and + namespaces_info is not None): + namespace = tokenutil.GetStringAfterToken(token) + + # Report extra goog.provide statement. + if not namespace or namespaces_info.IsExtraProvide(token): + if not namespace: + msg = 'Empty namespace in goog.provide' + else: + msg = 'Unnecessary goog.provide: ' + namespace + + # Hint to user if this is a Test namespace. + if namespace.endswith('Test'): + msg += (' *Test namespaces must be mentioned in the ' + 'goog.setTestOnly() call') + + self._HandleError( + errors.EXTRA_GOOG_PROVIDE, + msg, + token, position=Position.AtBeginning()) + + if namespaces_info.IsLastProvide(token): + # Report missing provide statements after the last existing provide. + missing_provides = namespaces_info.GetMissingProvides() + if missing_provides: + self._ReportMissingProvides( + missing_provides, + tokenutil.GetLastTokenInSameLine(token).next, + False) + + # If there are no require statements, missing requires should be + # reported after the last provide. + if not namespaces_info.GetRequiredNamespaces(): + missing_requires = namespaces_info.GetMissingRequires() + if missing_requires: + self._ReportMissingRequires( + missing_requires, + tokenutil.GetLastTokenInSameLine(token).next, + True) + + elif (token.string == 'goog.require' and + not state.InFunction() and + namespaces_info is not None): + namespace = tokenutil.GetStringAfterToken(token) + + # If there are no provide statements, missing provides should be + # reported before the first require. + if (namespaces_info.IsFirstRequire(token) and + not namespaces_info.GetProvidedNamespaces()): + missing_provides = namespaces_info.GetMissingProvides() + if missing_provides: + self._ReportMissingProvides( + missing_provides, + tokenutil.GetFirstTokenInSameLine(token), + True) + + # Report extra goog.require statement. + if not namespace or namespaces_info.IsExtraRequire(token): + if not namespace: + msg = 'Empty namespace in goog.require' + else: + msg = 'Unnecessary goog.require: ' + namespace + + self._HandleError( + errors.EXTRA_GOOG_REQUIRE, + msg, + token, position=Position.AtBeginning()) + + # Report missing goog.require statements. + if namespaces_info.IsLastRequire(token): + missing_requires = namespaces_info.GetMissingRequires() + if missing_requires: + self._ReportMissingRequires( + missing_requires, + tokenutil.GetLastTokenInSameLine(token).next, + False) + + elif token.type == Type.OPERATOR: + last_in_line = token.IsLastInLine() + # If the token is unary and appears to be used in a unary context + # it's ok. Otherwise, if it's at the end of the line or immediately + # before a comment, it's ok. + # Don't report an error before a start bracket - it will be reported + # by that token's space checks. + if (not token.metadata.IsUnaryOperator() and not last_in_line + and not token.next.IsComment() + and not token.next.IsOperator(',') + and token.next.type not in (Type.WHITESPACE, Type.END_PAREN, + Type.END_BRACKET, Type.SEMICOLON, + Type.START_BRACKET)): + self._HandleError( + errors.MISSING_SPACE, + 'Missing space after "%s"' % token.string, + token, + position=Position.AtEnd(token.string)) + elif token.type == Type.WHITESPACE: + first_in_line = token.IsFirstInLine() + last_in_line = token.IsLastInLine() + # Check whitespace length if it's not the first token of the line and + # if it's not immediately before a comment. + if not last_in_line and not first_in_line and not token.next.IsComment(): + # Ensure there is no space after opening parentheses. + if (token.previous.type in (Type.START_PAREN, Type.START_BRACKET, + Type.FUNCTION_NAME) + or token.next.type == Type.START_PARAMETERS): + self._HandleError( + errors.EXTRA_SPACE, + 'Extra space after "%s"' % token.previous.string, + token, + position=Position.All(token.string)) + elif token.type == Type.SEMICOLON: + previous_token = tokenutil.SearchExcept(token, Type.NON_CODE_TYPES, + reverse=True) + if not previous_token: + self._HandleError( + errors.REDUNDANT_SEMICOLON, + 'Semicolon without any statement', + token, + position=Position.AtEnd(token.string)) + elif (previous_token.type == Type.KEYWORD and + previous_token.string not in ['break', 'continue', 'return']): + self._HandleError( + errors.REDUNDANT_SEMICOLON, + ('Semicolon after \'%s\' without any statement.' + ' Looks like an error.' % previous_token.string), + token, + position=Position.AtEnd(token.string)) + + def _CheckUnusedLocalVariables(self, token, state): + """Checks for unused local variables in function blocks. + + Args: + token: The token to check. + state: The state tracker. + """ + # We don't use state.InFunction because that disregards scope functions. + in_function = state.FunctionDepth() > 0 + if token.type == Type.SIMPLE_LVALUE or token.type == Type.IDENTIFIER: + if in_function: + identifier = token.string + # Check whether the previous token was var. + previous_code_token = tokenutil.CustomSearch( + token, + lambda t: t.type not in Type.NON_CODE_TYPES, + reverse=True) + if previous_code_token and previous_code_token.IsKeyword('var'): + # Add local variable declaration to the top of the unused locals + # stack. + self._unused_local_variables_by_scope[-1][identifier] = token + elif token.type == Type.IDENTIFIER: + # This covers most cases where the variable is used as an identifier. + self._MarkLocalVariableUsed(token) + elif token.type == Type.SIMPLE_LVALUE and '.' in identifier: + # This covers cases where a value is assigned to a property of the + # variable. + self._MarkLocalVariableUsed(token) + elif token.type == Type.START_BLOCK: + if in_function and state.IsFunctionOpen(): + # Push a new map onto the stack + self._unused_local_variables_by_scope.append({}) + elif token.type == Type.END_BLOCK: + if state.IsFunctionClose(): + # Pop the stack and report any remaining locals as unused. + unused_local_variables = self._unused_local_variables_by_scope.pop() + for unused_token in unused_local_variables.values(): + self._HandleError( + errors.UNUSED_LOCAL_VARIABLE, + 'Unused local variable: %s.' % unused_token.string, + unused_token) + + def _MarkLocalVariableUsed(self, token): + """Marks the local variable as used in the relevant scope. + + Marks the local variable as used in the scope nearest to the current + scope that matches the given token. + + Args: + token: The token representing the potential usage of a local variable. + """ + + identifier = token.string.split('.')[0] + # Find the first instance of the identifier in the stack of function scopes + # and mark it used. + for unused_local_variables in reversed( + self._unused_local_variables_by_scope): + if identifier in unused_local_variables: + del unused_local_variables[identifier] + break + + def _ReportMissingProvides(self, missing_provides, token, need_blank_line): + """Reports missing provide statements to the error handler. + + Args: + missing_provides: A dictionary of string(key) and integer(value) where + each string(key) is a namespace that should be provided, but is not + and integer(value) is first line number where it's required. + token: The token where the error was detected (also where the new provides + will be inserted. + need_blank_line: Whether a blank line needs to be inserted after the new + provides are inserted. May be True, False, or None, where None + indicates that the insert location is unknown. + """ + + missing_provides_msg = 'Missing the following goog.provide statements:\n' + missing_provides_msg += '\n'.join(['goog.provide(\'%s\');' % x for x in + sorted(missing_provides)]) + missing_provides_msg += '\n' + + missing_provides_msg += '\nFirst line where provided: \n' + missing_provides_msg += '\n'.join( + [' %s : line %d' % (x, missing_provides[x]) for x in + sorted(missing_provides)]) + missing_provides_msg += '\n' + + self._HandleError( + errors.MISSING_GOOG_PROVIDE, + missing_provides_msg, + token, position=Position.AtBeginning(), + fix_data=(missing_provides.keys(), need_blank_line)) + + def _ReportMissingRequires(self, missing_requires, token, need_blank_line): + """Reports missing require statements to the error handler. + + Args: + missing_requires: A dictionary of string(key) and integer(value) where + each string(key) is a namespace that should be required, but is not + and integer(value) is first line number where it's required. + token: The token where the error was detected (also where the new requires + will be inserted. + need_blank_line: Whether a blank line needs to be inserted before the new + requires are inserted. May be True, False, or None, where None + indicates that the insert location is unknown. + """ + + missing_requires_msg = 'Missing the following goog.require statements:\n' + missing_requires_msg += '\n'.join(['goog.require(\'%s\');' % x for x in + sorted(missing_requires)]) + missing_requires_msg += '\n' + + missing_requires_msg += '\nFirst line where required: \n' + missing_requires_msg += '\n'.join( + [' %s : line %d' % (x, missing_requires[x]) for x in + sorted(missing_requires)]) + missing_requires_msg += '\n' + + self._HandleError( + errors.MISSING_GOOG_REQUIRE, + missing_requires_msg, + token, position=Position.AtBeginning(), + fix_data=(missing_requires.keys(), need_blank_line)) + + def Finalize(self, state): + """Perform all checks that need to occur after all lines are processed.""" + # Call the base class's Finalize function. + super(JavaScriptLintRules, self).Finalize(state) + + if error_check.ShouldCheck(Rule.UNUSED_PRIVATE_MEMBERS): + # Report an error for any declared private member that was never used. + unused_private_members = (self._declared_private_members - + self._used_private_members) + + for variable in unused_private_members: + token = self._declared_private_member_tokens[variable] + self._HandleError(errors.UNUSED_PRIVATE_MEMBER, + 'Unused private member: %s.' % token.string, + token) + + # Clear state to prepare for the next file. + self._declared_private_member_tokens = {} + self._declared_private_members = set() + self._used_private_members = set() + + namespaces_info = self._namespaces_info + if namespaces_info is not None: + # If there are no provide or require statements, missing provides and + # requires should be reported on line 1. + if (not namespaces_info.GetProvidedNamespaces() and + not namespaces_info.GetRequiredNamespaces()): + missing_provides = namespaces_info.GetMissingProvides() + if missing_provides: + self._ReportMissingProvides( + missing_provides, state.GetFirstToken(), None) + + missing_requires = namespaces_info.GetMissingRequires() + if missing_requires: + self._ReportMissingRequires( + missing_requires, state.GetFirstToken(), None) + + self._CheckSortedRequiresProvides(state.GetFirstToken()) + + def _CheckSortedRequiresProvides(self, token): + """Checks that all goog.require and goog.provide statements are sorted. + + Note that this method needs to be run after missing statements are added to + preserve alphabetical order. + + Args: + token: The first token in the token stream. + """ + sorter = requireprovidesorter.RequireProvideSorter() + first_provide_token = sorter.CheckProvides(token) + if first_provide_token: + new_order = sorter.GetFixedProvideString(first_provide_token) + self._HandleError( + errors.GOOG_PROVIDES_NOT_ALPHABETIZED, + 'goog.provide classes must be alphabetized. The correct code is:\n' + + new_order, + first_provide_token, + position=Position.AtBeginning(), + fix_data=first_provide_token) + + first_require_token = sorter.CheckRequires(token) + if first_require_token: + new_order = sorter.GetFixedRequireString(first_require_token) + self._HandleError( + errors.GOOG_REQUIRES_NOT_ALPHABETIZED, + 'goog.require classes must be alphabetized. The correct code is:\n' + + new_order, + first_require_token, + position=Position.AtBeginning(), + fix_data=first_require_token) + + def GetLongLineExceptions(self): + """Gets a list of regexps for lines which can be longer than the limit. + + Returns: + A list of regexps, used as matches (rather than searches). + """ + return [ + re.compile(r'goog\.require\(.+\);?\s*$'), + re.compile(r'goog\.provide\(.+\);?\s*$'), + re.compile(r'[\s/*]*@visibility\s*{.*}[\s*/]*$'), + ] diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptstatetracker.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptstatetracker.py new file mode 100755 index 0000000000..1b051d3bf6 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptstatetracker.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Parser for JavaScript files.""" + + + +from closure_linter import javascripttokens +from closure_linter import statetracker +from closure_linter import tokenutil + +# Shorthand +Type = javascripttokens.JavaScriptTokenType + + +class JsDocFlag(statetracker.DocFlag): + """Javascript doc flag object. + + Attribute: + flag_type: param, return, define, type, etc. + flag_token: The flag token. + type_start_token: The first token specifying the flag JS type, + including braces. + type_end_token: The last token specifying the flag JS type, + including braces. + type: The JavaScript type spec. + name_token: The token specifying the flag name. + name: The flag name + description_start_token: The first token in the description. + description_end_token: The end token in the description. + description: The description. + """ + + # Please keep these lists alphabetized. + + # Some projects use the following extensions to JsDoc. + # TODO(robbyw): determine which of these, if any, should be illegal. + EXTENDED_DOC = frozenset([ + 'class', 'code', 'desc', 'final', 'hidden', 'inheritDoc', 'link', + 'meaning', 'provideGoog', 'throws']) + + LEGAL_DOC = EXTENDED_DOC | statetracker.DocFlag.LEGAL_DOC + + def __init__(self, flag_token): + """Creates the JsDocFlag object and attaches it to the given start token. + + Args: + flag_token: The starting token of the flag. + """ + statetracker.DocFlag.__init__(self, flag_token) + + +class JavaScriptStateTracker(statetracker.StateTracker): + """JavaScript state tracker. + + Inherits from the core EcmaScript StateTracker adding extra state tracking + functionality needed for JavaScript. + """ + + def __init__(self): + """Initializes a JavaScript token stream state tracker.""" + statetracker.StateTracker.__init__(self, JsDocFlag) + + def Reset(self): + self._scope_depth = 0 + self._block_stack = [] + super(JavaScriptStateTracker, self).Reset() + + def InTopLevel(self): + """Compute whether we are at the top level in the class. + + This function call is language specific. In some languages like + JavaScript, a function is top level if it is not inside any parenthesis. + In languages such as ActionScript, a function is top level if it is directly + within a class. + + Returns: + Whether we are at the top level in the class. + """ + return self._scope_depth == self.ParenthesesDepth() + + def InFunction(self): + """Returns true if the current token is within a function. + + This js-specific override ignores goog.scope functions. + + Returns: + True if the current token is within a function. + """ + return self._scope_depth != self.FunctionDepth() + + def InNonScopeBlock(self): + """Compute whether we are nested within a non-goog.scope block. + + Returns: + True if the token is not enclosed in a block that does not originate from + a goog.scope statement. False otherwise. + """ + return self._scope_depth != self.BlockDepth() + + def GetBlockType(self, token): + """Determine the block type given a START_BLOCK token. + + Code blocks come after parameters, keywords like else, and closing parens. + + Args: + token: The current token. Can be assumed to be type START_BLOCK + Returns: + Code block type for current token. + """ + last_code = tokenutil.SearchExcept(token, Type.NON_CODE_TYPES, reverse=True) + if last_code.type in (Type.END_PARAMETERS, Type.END_PAREN, + Type.KEYWORD) and not last_code.IsKeyword('return'): + return self.CODE + else: + return self.OBJECT_LITERAL + + def GetCurrentBlockStart(self): + """Gets the start token of current block. + + Returns: + Starting token of current block. None if not in block. + """ + if self._block_stack: + return self._block_stack[-1] + else: + return None + + def HandleToken(self, token, last_non_space_token): + """Handles the given token and updates state. + + Args: + token: The token to handle. + last_non_space_token: The last non space token encountered + """ + if token.type == Type.START_BLOCK: + self._block_stack.append(token) + if token.type == Type.IDENTIFIER and token.string == 'goog.scope': + self._scope_depth += 1 + if token.type == Type.END_BLOCK: + start_token = self._block_stack.pop() + if tokenutil.GoogScopeOrNoneFromStartBlock(start_token): + self._scope_depth -= 1 + super(JavaScriptStateTracker, self).HandleToken(token, + last_non_space_token) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptstatetracker_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptstatetracker_test.py new file mode 100644 index 0000000000..76dabd2c70 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascriptstatetracker_test.py @@ -0,0 +1,278 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for the javascriptstatetracker module.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + +__author__ = ('nnaze@google.com (Nathan Naze)') + + +import unittest as googletest + +from closure_linter import javascripttokens +from closure_linter import testutil +from closure_linter import tokenutil + + +_FUNCTION_SCRIPT = """\ +var a = 3; + +function foo(aaa, bbb, ccc) { + var b = 4; +} + + +/** + * JSDoc comment. + */ +var bar = function(ddd, eee, fff) { + +}; + + +/** + * Verify that nested functions get their proper parameters recorded. + */ +var baz = function(ggg, hhh, iii) { + var qux = function(jjj, kkk, lll) { + }; + // make sure that entering a new block does not change baz' parameters. + {}; +}; + +""" + + +class FunctionTest(googletest.TestCase): + + def testFunctionParse(self): + functions, _ = testutil.ParseFunctionsAndComments(_FUNCTION_SCRIPT) + self.assertEquals(4, len(functions)) + + # First function + function = functions[0] + self.assertEquals(['aaa', 'bbb', 'ccc'], function.parameters) + + start_token = function.start_token + end_token = function.end_token + + self.assertEquals( + javascripttokens.JavaScriptTokenType.FUNCTION_DECLARATION, + function.start_token.type) + + self.assertEquals('function', start_token.string) + self.assertEquals(3, start_token.line_number) + self.assertEquals(0, start_token.start_index) + + self.assertEquals('}', end_token.string) + self.assertEquals(5, end_token.line_number) + self.assertEquals(0, end_token.start_index) + + self.assertEquals('foo', function.name) + + self.assertIsNone(function.doc) + + # Second function + function = functions[1] + self.assertEquals(['ddd', 'eee', 'fff'], function.parameters) + + start_token = function.start_token + end_token = function.end_token + + self.assertEquals( + javascripttokens.JavaScriptTokenType.FUNCTION_DECLARATION, + function.start_token.type) + + self.assertEquals('function', start_token.string) + self.assertEquals(11, start_token.line_number) + self.assertEquals(10, start_token.start_index) + + self.assertEquals('}', end_token.string) + self.assertEquals(13, end_token.line_number) + self.assertEquals(0, end_token.start_index) + + self.assertEquals('bar', function.name) + + self.assertIsNotNone(function.doc) + + # Check function JSDoc + doc = function.doc + doc_tokens = tokenutil.GetTokenRange(doc.start_token, doc.end_token) + + comment_type = javascripttokens.JavaScriptTokenType.COMMENT + comment_tokens = filter(lambda t: t.type is comment_type, doc_tokens) + + self.assertEquals('JSDoc comment.', + tokenutil.TokensToString(comment_tokens).strip()) + + # Third function + function = functions[2] + self.assertEquals(['ggg', 'hhh', 'iii'], function.parameters) + + start_token = function.start_token + end_token = function.end_token + + self.assertEquals( + javascripttokens.JavaScriptTokenType.FUNCTION_DECLARATION, + function.start_token.type) + + self.assertEquals('function', start_token.string) + self.assertEquals(19, start_token.line_number) + self.assertEquals(10, start_token.start_index) + + self.assertEquals('}', end_token.string) + self.assertEquals(24, end_token.line_number) + self.assertEquals(0, end_token.start_index) + + self.assertEquals('baz', function.name) + self.assertIsNotNone(function.doc) + + # Fourth function (inside third function) + function = functions[3] + self.assertEquals(['jjj', 'kkk', 'lll'], function.parameters) + + start_token = function.start_token + end_token = function.end_token + + self.assertEquals( + javascripttokens.JavaScriptTokenType.FUNCTION_DECLARATION, + function.start_token.type) + + self.assertEquals('function', start_token.string) + self.assertEquals(20, start_token.line_number) + self.assertEquals(12, start_token.start_index) + + self.assertEquals('}', end_token.string) + self.assertEquals(21, end_token.line_number) + self.assertEquals(2, end_token.start_index) + + self.assertEquals('qux', function.name) + self.assertIsNone(function.doc) + + + +class CommentTest(googletest.TestCase): + + def testGetDescription(self): + comment = self._ParseComment(""" + /** + * Comment targeting goog.foo. + * + * This is the second line. + * @param {number} foo The count of foo. + */ + target;""") + + self.assertEqual( + 'Comment targeting goog.foo.\n\nThis is the second line.', + comment.description) + + def testCommentGetTarget(self): + self.assertCommentTarget('goog.foo', """ + /** + * Comment targeting goog.foo. + */ + goog.foo = 6; + """) + + self.assertCommentTarget('bar', """ + /** + * Comment targeting bar. + */ + var bar = "Karate!"; + """) + + self.assertCommentTarget('doThing', """ + /** + * Comment targeting doThing. + */ + function doThing() {}; + """) + + self.assertCommentTarget('this.targetProperty', """ + goog.bar.Baz = function() { + /** + * Comment targeting targetProperty. + */ + this.targetProperty = 3; + }; + """) + + self.assertCommentTarget('goog.bar.prop', """ + /** + * Comment targeting goog.bar.prop. + */ + goog.bar.prop; + """) + + self.assertCommentTarget('goog.aaa.bbb', """ + /** + * Comment targeting goog.aaa.bbb. + */ + (goog.aaa.bbb) + """) + + self.assertCommentTarget('theTarget', """ + /** + * Comment targeting symbol preceded by newlines, whitespace, + * and parens -- things we ignore. + */ + (theTarget) + """) + + self.assertCommentTarget(None, """ + /** + * @fileoverview File overview. + */ + (notATarget) + """) + + self.assertCommentTarget(None, """ + /** + * Comment that doesn't find a target. + */ + """) + + self.assertCommentTarget('theTarget.is.split.across.lines', """ + /** + * Comment that addresses a symbol split across lines. + */ + (theTarget.is.split + .across.lines) + """) + + self.assertCommentTarget('theTarget.is.split.across.lines', """ + /** + * Comment that addresses a symbol split across lines. + */ + (theTarget.is.split. + across.lines) + """) + + def _ParseComment(self, script): + """Parse a script that contains one comment and return it.""" + _, comments = testutil.ParseFunctionsAndComments(script) + self.assertEquals(1, len(comments)) + return comments[0] + + def assertCommentTarget(self, target, script): + comment = self._ParseComment(script) + self.assertEquals(target, comment.GetTargetIdentifier()) + + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascripttokenizer.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascripttokenizer.py new file mode 100755 index 0000000000..a0e9dca8a4 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascripttokenizer.py @@ -0,0 +1,363 @@ +#!/usr/bin/env python +# +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Regular expression based JavaScript parsing classes.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + +import copy +import re + +from closure_linter import javascripttokens +from closure_linter.common import matcher +from closure_linter.common import tokenizer + +# Shorthand +Type = javascripttokens.JavaScriptTokenType +Matcher = matcher.Matcher + + +class JavaScriptModes(object): + """Enumeration of the different matcher modes used for JavaScript.""" + TEXT_MODE = 'text' + SINGLE_QUOTE_STRING_MODE = 'single_quote_string' + DOUBLE_QUOTE_STRING_MODE = 'double_quote_string' + BLOCK_COMMENT_MODE = 'block_comment' + DOC_COMMENT_MODE = 'doc_comment' + DOC_COMMENT_LEX_SPACES_MODE = 'doc_comment_spaces' + LINE_COMMENT_MODE = 'line_comment' + PARAMETER_MODE = 'parameter' + FUNCTION_MODE = 'function' + + +class JavaScriptTokenizer(tokenizer.Tokenizer): + """JavaScript tokenizer. + + Convert JavaScript code in to an array of tokens. + """ + + # Useful patterns for JavaScript parsing. + IDENTIFIER_CHAR = r'A-Za-z0-9_$.' + + # Number patterns based on: + # http://www.mozilla.org/js/language/js20-2000-07/formal/lexer-grammar.html + MANTISSA = r""" + (\d+(?!\.)) | # Matches '10' + (\d+\.(?!\d)) | # Matches '10.' + (\d*\.\d+) # Matches '.5' or '10.5' + """ + DECIMAL_LITERAL = r'(%s)([eE][-+]?\d+)?' % MANTISSA + HEX_LITERAL = r'0[xX][0-9a-fA-F]+' + NUMBER = re.compile(r""" + ((%s)|(%s)) + """ % (HEX_LITERAL, DECIMAL_LITERAL), re.VERBOSE) + + # Strings come in three parts - first we match the start of the string, then + # the contents, then the end. The contents consist of any character except a + # backslash or end of string, or a backslash followed by any character, or a + # backslash followed by end of line to support correct parsing of multi-line + # strings. + SINGLE_QUOTE = re.compile(r"'") + SINGLE_QUOTE_TEXT = re.compile(r"([^'\\]|\\(.|$))+") + DOUBLE_QUOTE = re.compile(r'"') + DOUBLE_QUOTE_TEXT = re.compile(r'([^"\\]|\\(.|$))+') + + START_SINGLE_LINE_COMMENT = re.compile(r'//') + END_OF_LINE_SINGLE_LINE_COMMENT = re.compile(r'//$') + + START_DOC_COMMENT = re.compile(r'/\*\*') + START_BLOCK_COMMENT = re.compile(r'/\*') + END_BLOCK_COMMENT = re.compile(r'\*/') + BLOCK_COMMENT_TEXT = re.compile(r'([^*]|\*(?!/))+') + + # Comment text is anything that we are not going to parse into another special + # token like (inline) flags or end comments. Complicated regex to match + # most normal characters, and '*', '{', '}', and '@' when we are sure that + # it is safe. Expression [^*{\s]@ must come first, or the other options will + # match everything before @, and we won't match @'s that aren't part of flags + # like in email addresses in the @author tag. + DOC_COMMENT_TEXT = re.compile(r'([^*{}\s]@|[^*{}@]|\*(?!/))+') + DOC_COMMENT_NO_SPACES_TEXT = re.compile(r'([^*{}\s]@|[^*{}@\s]|\*(?!/))+') + + # Match the prefix ' * ' that starts every line of jsdoc. Want to include + # spaces after the '*', but nothing else that occurs after a '*', and don't + # want to match the '*' in '*/'. + DOC_PREFIX = re.compile(r'\s*\*(\s+|(?!/))') + + START_BLOCK = re.compile('{') + END_BLOCK = re.compile('}') + + REGEX_CHARACTER_CLASS = r""" + \[ # Opening bracket + ([^\]\\]|\\.)* # Anything but a ] or \, + # or a backslash followed by anything + \] # Closing bracket + """ + # We ensure the regex is followed by one of the above tokens to avoid + # incorrectly parsing something like x / y / z as x REGEX(/ y /) z + POST_REGEX_LIST = [ + ';', ',', r'\.', r'\)', r'\]', '$', r'\/\/', r'\/\*', ':', '}'] + + REGEX = re.compile(r""" + / # opening slash + (?!\*) # not the start of a comment + (\\.|[^\[\/\\]|(%s))* # a backslash followed by anything, + # or anything but a / or [ or \, + # or a character class + / # closing slash + [gimsx]* # optional modifiers + (?=\s*(%s)) + """ % (REGEX_CHARACTER_CLASS, '|'.join(POST_REGEX_LIST)), + re.VERBOSE) + + ANYTHING = re.compile(r'.*') + PARAMETERS = re.compile(r'[^\)]+') + CLOSING_PAREN_WITH_SPACE = re.compile(r'\)\s*') + + FUNCTION_DECLARATION = re.compile(r'\bfunction\b') + + OPENING_PAREN = re.compile(r'\(') + CLOSING_PAREN = re.compile(r'\)') + + OPENING_BRACKET = re.compile(r'\[') + CLOSING_BRACKET = re.compile(r'\]') + + # We omit these JS keywords from the list: + # function - covered by FUNCTION_DECLARATION. + # delete, in, instanceof, new, typeof - included as operators. + # this - included in identifiers. + # null, undefined - not included, should go in some "special constant" list. + KEYWORD_LIST = ['break', 'case', 'catch', 'continue', 'default', 'do', 'else', + 'finally', 'for', 'if', 'return', 'switch', 'throw', 'try', 'var', + 'while', 'with'] + # Match a keyword string followed by a non-identifier character in order to + # not match something like doSomething as do + Something. + KEYWORD = re.compile('(%s)((?=[^%s])|$)' % ( + '|'.join(KEYWORD_LIST), IDENTIFIER_CHAR)) + + # List of regular expressions to match as operators. Some notes: for our + # purposes, the comma behaves similarly enough to a normal operator that we + # include it here. r'\bin\b' actually matches 'in' surrounded by boundary + # characters - this may not match some very esoteric uses of the in operator. + # Operators that are subsets of larger operators must come later in this list + # for proper matching, e.g., '>>' must come AFTER '>>>'. + OPERATOR_LIST = [',', r'\+\+', '===', '!==', '>>>=', '>>>', '==', '>=', '<=', + '!=', '<<=', '>>=', '<<', '>>', '>', '<', r'\+=', r'\+', + '--', '\^=', '-=', '-', '/=', '/', r'\*=', r'\*', '%=', '%', + '&&', r'\|\|', '&=', '&', r'\|=', r'\|', '=', '!', ':', '\?', + r'\^', r'\bdelete\b', r'\bin\b', r'\binstanceof\b', + r'\bnew\b', r'\btypeof\b', r'\bvoid\b'] + OPERATOR = re.compile('|'.join(OPERATOR_LIST)) + + WHITESPACE = re.compile(r'\s+') + SEMICOLON = re.compile(r';') + # Technically JavaScript identifiers can't contain '.', but we treat a set of + # nested identifiers as a single identifier. + NESTED_IDENTIFIER = r'[a-zA-Z_$][%s.]*' % IDENTIFIER_CHAR + IDENTIFIER = re.compile(NESTED_IDENTIFIER) + + SIMPLE_LVALUE = re.compile(r""" + (?P%s) # a valid identifier + (?=\s* # optional whitespace + \= # look ahead to equal sign + (?!=)) # not follwed by equal + """ % NESTED_IDENTIFIER, re.VERBOSE) + + # A doc flag is a @ sign followed by non-space characters that appears at the + # beginning of the line, after whitespace, or after a '{'. The look-behind + # check is necessary to not match someone@google.com as a flag. + DOC_FLAG = re.compile(r'(^|(?<=\s))@(?P[a-zA-Z]+)') + # To properly parse parameter names, we need to tokenize whitespace into a + # token. + DOC_FLAG_LEX_SPACES = re.compile(r'(^|(?<=\s))@(?P%s)\b' % + '|'.join(['param'])) + + DOC_INLINE_FLAG = re.compile(r'(?<={)@(?P[a-zA-Z]+)') + + # Star followed by non-slash, i.e a star that does not end a comment. + # This is used for TYPE_GROUP below. + SAFE_STAR = r'(\*(?!/))' + + COMMON_DOC_MATCHERS = [ + # Find the end of the comment. + Matcher(END_BLOCK_COMMENT, Type.END_DOC_COMMENT, + JavaScriptModes.TEXT_MODE), + + # Tokenize documented flags like @private. + Matcher(DOC_INLINE_FLAG, Type.DOC_INLINE_FLAG), + Matcher(DOC_FLAG_LEX_SPACES, Type.DOC_FLAG, + JavaScriptModes.DOC_COMMENT_LEX_SPACES_MODE), + + # Encountering a doc flag should leave lex spaces mode. + Matcher(DOC_FLAG, Type.DOC_FLAG, JavaScriptModes.DOC_COMMENT_MODE), + + # Tokenize braces so we can find types. + Matcher(START_BLOCK, Type.DOC_START_BRACE), + Matcher(END_BLOCK, Type.DOC_END_BRACE), + Matcher(DOC_PREFIX, Type.DOC_PREFIX, None, True)] + + + # The token matcher groups work as follows: it is an list of Matcher objects. + # The matchers will be tried in this order, and the first to match will be + # returned. Hence the order is important because the matchers that come first + # overrule the matchers that come later. + JAVASCRIPT_MATCHERS = { + # Matchers for basic text mode. + JavaScriptModes.TEXT_MODE: [ + # Check a big group - strings, starting comments, and regexes - all + # of which could be intertwined. 'string with /regex/', + # /regex with 'string'/, /* comment with /regex/ and string */ (and so + # on) + Matcher(START_DOC_COMMENT, Type.START_DOC_COMMENT, + JavaScriptModes.DOC_COMMENT_MODE), + Matcher(START_BLOCK_COMMENT, Type.START_BLOCK_COMMENT, + JavaScriptModes.BLOCK_COMMENT_MODE), + Matcher(END_OF_LINE_SINGLE_LINE_COMMENT, + Type.START_SINGLE_LINE_COMMENT), + Matcher(START_SINGLE_LINE_COMMENT, Type.START_SINGLE_LINE_COMMENT, + JavaScriptModes.LINE_COMMENT_MODE), + Matcher(SINGLE_QUOTE, Type.SINGLE_QUOTE_STRING_START, + JavaScriptModes.SINGLE_QUOTE_STRING_MODE), + Matcher(DOUBLE_QUOTE, Type.DOUBLE_QUOTE_STRING_START, + JavaScriptModes.DOUBLE_QUOTE_STRING_MODE), + Matcher(REGEX, Type.REGEX), + + # Next we check for start blocks appearing outside any of the items + # above. + Matcher(START_BLOCK, Type.START_BLOCK), + Matcher(END_BLOCK, Type.END_BLOCK), + + # Then we search for function declarations. + Matcher(FUNCTION_DECLARATION, Type.FUNCTION_DECLARATION, + JavaScriptModes.FUNCTION_MODE), + + # Next, we convert non-function related parens to tokens. + Matcher(OPENING_PAREN, Type.START_PAREN), + Matcher(CLOSING_PAREN, Type.END_PAREN), + + # Next, we convert brackets to tokens. + Matcher(OPENING_BRACKET, Type.START_BRACKET), + Matcher(CLOSING_BRACKET, Type.END_BRACKET), + + # Find numbers. This has to happen before operators because scientific + # notation numbers can have + and - in them. + Matcher(NUMBER, Type.NUMBER), + + # Find operators and simple assignments + Matcher(SIMPLE_LVALUE, Type.SIMPLE_LVALUE), + Matcher(OPERATOR, Type.OPERATOR), + + # Find key words and whitespace. + Matcher(KEYWORD, Type.KEYWORD), + Matcher(WHITESPACE, Type.WHITESPACE), + + # Find identifiers. + Matcher(IDENTIFIER, Type.IDENTIFIER), + + # Finally, we convert semicolons to tokens. + Matcher(SEMICOLON, Type.SEMICOLON)], + + # Matchers for single quote strings. + JavaScriptModes.SINGLE_QUOTE_STRING_MODE: [ + Matcher(SINGLE_QUOTE_TEXT, Type.STRING_TEXT), + Matcher(SINGLE_QUOTE, Type.SINGLE_QUOTE_STRING_END, + JavaScriptModes.TEXT_MODE)], + + # Matchers for double quote strings. + JavaScriptModes.DOUBLE_QUOTE_STRING_MODE: [ + Matcher(DOUBLE_QUOTE_TEXT, Type.STRING_TEXT), + Matcher(DOUBLE_QUOTE, Type.DOUBLE_QUOTE_STRING_END, + JavaScriptModes.TEXT_MODE)], + + # Matchers for block comments. + JavaScriptModes.BLOCK_COMMENT_MODE: [ + # First we check for exiting a block comment. + Matcher(END_BLOCK_COMMENT, Type.END_BLOCK_COMMENT, + JavaScriptModes.TEXT_MODE), + + # Match non-comment-ending text.. + Matcher(BLOCK_COMMENT_TEXT, Type.COMMENT)], + + # Matchers for doc comments. + JavaScriptModes.DOC_COMMENT_MODE: COMMON_DOC_MATCHERS + [ + Matcher(DOC_COMMENT_TEXT, Type.COMMENT)], + + JavaScriptModes.DOC_COMMENT_LEX_SPACES_MODE: COMMON_DOC_MATCHERS + [ + Matcher(WHITESPACE, Type.COMMENT), + Matcher(DOC_COMMENT_NO_SPACES_TEXT, Type.COMMENT)], + + # Matchers for single line comments. + JavaScriptModes.LINE_COMMENT_MODE: [ + # We greedy match until the end of the line in line comment mode. + Matcher(ANYTHING, Type.COMMENT, JavaScriptModes.TEXT_MODE)], + + # Matchers for code after the function keyword. + JavaScriptModes.FUNCTION_MODE: [ + # Must match open paren before anything else and move into parameter + # mode, otherwise everything inside the parameter list is parsed + # incorrectly. + Matcher(OPENING_PAREN, Type.START_PARAMETERS, + JavaScriptModes.PARAMETER_MODE), + Matcher(WHITESPACE, Type.WHITESPACE), + Matcher(IDENTIFIER, Type.FUNCTION_NAME)], + + # Matchers for function parameters + JavaScriptModes.PARAMETER_MODE: [ + # When in function parameter mode, a closing paren is treated specially. + # Everything else is treated as lines of parameters. + Matcher(CLOSING_PAREN_WITH_SPACE, Type.END_PARAMETERS, + JavaScriptModes.TEXT_MODE), + Matcher(PARAMETERS, Type.PARAMETERS, JavaScriptModes.PARAMETER_MODE)]} + + # When text is not matched, it is given this default type based on mode. + # If unspecified in this map, the default default is Type.NORMAL. + JAVASCRIPT_DEFAULT_TYPES = { + JavaScriptModes.DOC_COMMENT_MODE: Type.COMMENT, + JavaScriptModes.DOC_COMMENT_LEX_SPACES_MODE: Type.COMMENT + } + + def __init__(self, parse_js_doc = True): + """Create a tokenizer object. + + Args: + parse_js_doc: Whether to do detailed parsing of javascript doc comments, + or simply treat them as normal comments. Defaults to parsing JsDoc. + """ + matchers = self.JAVASCRIPT_MATCHERS + if not parse_js_doc: + # Make a copy so the original doesn't get modified. + matchers = copy.deepcopy(matchers) + matchers[JavaScriptModes.DOC_COMMENT_MODE] = matchers[ + JavaScriptModes.BLOCK_COMMENT_MODE] + + tokenizer.Tokenizer.__init__(self, JavaScriptModes.TEXT_MODE, matchers, + self.JAVASCRIPT_DEFAULT_TYPES) + + def _CreateToken(self, string, token_type, line, line_number, values=None): + """Creates a new JavaScriptToken object. + + Args: + string: The string of input the token contains. + token_type: The type of token. + line: The text of the line this token is in. + line_number: The line number of the token. + values: A dict of named values within the token. For instance, a + function declaration may have a value called 'name' which captures the + name of the function. + """ + return javascripttokens.JavaScriptToken(string, token_type, line, + line_number, values, line_number) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascripttokens.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascripttokens.py new file mode 100755 index 0000000000..f46d4e17bc --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/javascripttokens.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python +# +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Classes to represent JavaScript tokens.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + +from closure_linter.common import tokens + +class JavaScriptTokenType(tokens.TokenType): + """Enumeration of JavaScript token types, and useful sets of token types.""" + NUMBER = 'number' + START_SINGLE_LINE_COMMENT = '//' + START_BLOCK_COMMENT = '/*' + START_DOC_COMMENT = '/**' + END_BLOCK_COMMENT = '*/' + END_DOC_COMMENT = 'doc */' + COMMENT = 'comment' + SINGLE_QUOTE_STRING_START = "'string" + SINGLE_QUOTE_STRING_END = "string'" + DOUBLE_QUOTE_STRING_START = '"string' + DOUBLE_QUOTE_STRING_END = 'string"' + STRING_TEXT = 'string' + START_BLOCK = '{' + END_BLOCK = '}' + START_PAREN = '(' + END_PAREN = ')' + START_BRACKET = '[' + END_BRACKET = ']' + REGEX = '/regex/' + FUNCTION_DECLARATION = 'function(...)' + FUNCTION_NAME = 'function functionName(...)' + START_PARAMETERS = 'startparams(' + PARAMETERS = 'pa,ra,ms' + END_PARAMETERS = ')endparams' + SEMICOLON = ';' + DOC_FLAG = '@flag' + DOC_INLINE_FLAG = '{@flag ...}' + DOC_START_BRACE = 'doc {' + DOC_END_BRACE = 'doc }' + DOC_PREFIX = 'comment prefix: * ' + SIMPLE_LVALUE = 'lvalue=' + KEYWORD = 'keyword' + OPERATOR = 'operator' + IDENTIFIER = 'identifier' + + STRING_TYPES = frozenset([ + SINGLE_QUOTE_STRING_START, SINGLE_QUOTE_STRING_END, + DOUBLE_QUOTE_STRING_START, DOUBLE_QUOTE_STRING_END, STRING_TEXT]) + + COMMENT_TYPES = frozenset([START_SINGLE_LINE_COMMENT, COMMENT, + START_BLOCK_COMMENT, START_DOC_COMMENT, + END_BLOCK_COMMENT, END_DOC_COMMENT, + DOC_START_BRACE, DOC_END_BRACE, + DOC_FLAG, DOC_INLINE_FLAG, DOC_PREFIX]) + + FLAG_DESCRIPTION_TYPES = frozenset([ + DOC_INLINE_FLAG, COMMENT, DOC_START_BRACE, DOC_END_BRACE]) + + FLAG_ENDING_TYPES = frozenset([DOC_FLAG, END_DOC_COMMENT]) + + NON_CODE_TYPES = COMMENT_TYPES | frozenset([ + tokens.TokenType.WHITESPACE, tokens.TokenType.BLANK_LINE]) + + UNARY_OPERATORS = ['!', 'new', 'delete', 'typeof', 'void'] + + UNARY_OK_OPERATORS = ['--', '++', '-', '+'] + UNARY_OPERATORS + + UNARY_POST_OPERATORS = ['--', '++'] + + # An expression ender is any token that can end an object - i.e. we could have + # x.y or [1, 2], or (10 + 9) or {a: 10}. + EXPRESSION_ENDER_TYPES = [tokens.TokenType.NORMAL, IDENTIFIER, NUMBER, + SIMPLE_LVALUE, END_BRACKET, END_PAREN, END_BLOCK, + SINGLE_QUOTE_STRING_END, DOUBLE_QUOTE_STRING_END] + + +class JavaScriptToken(tokens.Token): + """JavaScript token subclass of Token, provides extra instance checks. + + The following token types have data in attached_object: + - All JsDoc flags: a parser.JsDocFlag object. + """ + + def IsKeyword(self, keyword): + """Tests if this token is the given keyword. + + Args: + keyword: The keyword to compare to. + + Returns: + True if this token is a keyword token with the given name. + """ + return self.type == JavaScriptTokenType.KEYWORD and self.string == keyword + + def IsOperator(self, operator): + """Tests if this token is the given operator. + + Args: + operator: The operator to compare to. + + Returns: + True if this token is a operator token with the given name. + """ + return self.type == JavaScriptTokenType.OPERATOR and self.string == operator + + def IsAssignment(self): + """Tests if this token is an assignment operator. + + Returns: + True if this token is an assignment operator. + """ + return (self.type == JavaScriptTokenType.OPERATOR and + self.string.endswith('=') and + self.string not in ('==', '!=', '>=', '<=', '===', '!==')) + + def IsComment(self): + """Tests if this token is any part of a comment. + + Returns: + True if this token is any part of a comment. + """ + return self.type in JavaScriptTokenType.COMMENT_TYPES + + def IsCode(self): + """Tests if this token is code, as opposed to a comment or whitespace.""" + return self.type not in JavaScriptTokenType.NON_CODE_TYPES + + def __repr__(self): + return '' % (self.line_number, + self.type, self.string, + self.values, + self.metadata) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/not_strict_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/not_strict_test.py new file mode 100755 index 0000000000..c92c13ee03 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/not_strict_test.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# +# Copyright 2011 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tests for gjslint --nostrict. + +Tests errors that can be thrown by gjslint when not in strict mode. +""" + + + +import os +import sys +import unittest + +import gflags as flags +import unittest as googletest + +from closure_linter import errors +from closure_linter import runner +from closure_linter.common import filetestcase + +_RESOURCE_PREFIX = 'closure_linter/testdata' + +flags.FLAGS.strict = False +flags.FLAGS.custom_jsdoc_tags = ('customtag', 'requires') +flags.FLAGS.closurized_namespaces = ('goog', 'dummy') +flags.FLAGS.limited_doc_files = ('externs.js', 'dummy.js', + 'limited_doc_checks.js') + + +# List of files under testdata to test. +# We need to list files explicitly since pyglib can't list directories. +_TEST_FILES = [ + 'not_strict.js' + ] + + +class GJsLintTestSuite(unittest.TestSuite): + """Test suite to run a GJsLintTest for each of several files. + + If sys.argv[1:] is non-empty, it is interpreted as a list of filenames in + testdata to test. Otherwise, _TEST_FILES is used. + """ + + def __init__(self, tests=()): + unittest.TestSuite.__init__(self, tests) + + argv = sys.argv and sys.argv[1:] or [] + if argv: + test_files = argv + else: + test_files = _TEST_FILES + for test_file in test_files: + resource_path = os.path.join(_RESOURCE_PREFIX, test_file) + self.addTest(filetestcase.AnnotatedFileTestCase(resource_path, + runner.Run, + errors.ByName)) + +if __name__ == '__main__': + # Don't let main parse args; it happens in the TestSuite. + googletest.main(argv=sys.argv[0:1], defaultTest='GJsLintTestSuite') diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/requireprovidesorter.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/requireprovidesorter.py new file mode 100755 index 0000000000..20f0f93de9 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/requireprovidesorter.py @@ -0,0 +1,325 @@ +#!/usr/bin/env python +# +# Copyright 2011 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Contains logic for sorting goog.provide and goog.require statements. + +Closurized JavaScript files use goog.provide and goog.require statements at the +top of the file to manage dependencies. These statements should be sorted +alphabetically, however, it is common for them to be accompanied by inline +comments or suppression annotations. In order to sort these statements without +disrupting their comments and annotations, the association between statements +and comments/annotations must be maintained while sorting. + + RequireProvideSorter: Handles checking/fixing of provide/require statements. +""" + + + +from closure_linter import javascripttokens +from closure_linter import tokenutil + +# Shorthand +Type = javascripttokens.JavaScriptTokenType + + +class RequireProvideSorter(object): + """Checks for and fixes alphabetization of provide and require statements. + + When alphabetizing, comments on the same line or comments directly above a + goog.provide or goog.require statement are associated with that statement and + stay with the statement as it gets sorted. + """ + + def CheckProvides(self, token): + """Checks alphabetization of goog.provide statements. + + Iterates over tokens in given token stream, identifies goog.provide tokens, + and checks that they occur in alphabetical order by the object being + provided. + + Args: + token: A token in the token stream before any goog.provide tokens. + + Returns: + The first provide token in the token stream. + + None is returned if all goog.provide statements are already sorted. + """ + provide_tokens = self._GetRequireOrProvideTokens(token, 'goog.provide') + provide_strings = self._GetRequireOrProvideTokenStrings(provide_tokens) + sorted_provide_strings = sorted(provide_strings) + if provide_strings != sorted_provide_strings: + return provide_tokens[0] + return None + + def CheckRequires(self, token): + """Checks alphabetization of goog.require statements. + + Iterates over tokens in given token stream, identifies goog.require tokens, + and checks that they occur in alphabetical order by the dependency being + required. + + Args: + token: A token in the token stream before any goog.require tokens. + + Returns: + The first require token in the token stream. + + None is returned if all goog.require statements are already sorted. + """ + require_tokens = self._GetRequireOrProvideTokens(token, 'goog.require') + require_strings = self._GetRequireOrProvideTokenStrings(require_tokens) + sorted_require_strings = sorted(require_strings) + if require_strings != sorted_require_strings: + return require_tokens[0] + return None + + def FixProvides(self, token): + """Sorts goog.provide statements in the given token stream alphabetically. + + Args: + token: The first token in the token stream. + """ + self._FixProvidesOrRequires( + self._GetRequireOrProvideTokens(token, 'goog.provide')) + + def FixRequires(self, token): + """Sorts goog.require statements in the given token stream alphabetically. + + Args: + token: The first token in the token stream. + """ + self._FixProvidesOrRequires( + self._GetRequireOrProvideTokens(token, 'goog.require')) + + def _FixProvidesOrRequires(self, tokens): + """Sorts goog.provide or goog.require statements. + + Args: + tokens: A list of goog.provide or goog.require tokens in the order they + appear in the token stream. i.e. the first token in this list must + be the first goog.provide or goog.require token. + """ + strings = self._GetRequireOrProvideTokenStrings(tokens) + sorted_strings = sorted(strings) + + # Make a separate pass to remove any blank lines between goog.require/ + # goog.provide tokens. + first_token = tokens[0] + last_token = tokens[-1] + i = last_token + while i != first_token: + if i.type is Type.BLANK_LINE: + tokenutil.DeleteToken(i) + i = i.previous + + # A map from required/provided object name to tokens that make up the line + # it was on, including any comments immediately before it or after it on the + # same line. + tokens_map = self._GetTokensMap(tokens) + + # Iterate over the map removing all tokens. + for name in tokens_map: + tokens_to_delete = tokens_map[name] + for i in tokens_to_delete: + tokenutil.DeleteToken(i) + + # Save token to rest of file. Sorted token will be inserted before this. + rest_of_file = tokens_map[strings[-1]][-1].next + + # Re-add all tokens in the map in alphabetical order. + insert_after = tokens[0].previous + for string in sorted_strings: + for i in tokens_map[string]: + if rest_of_file: + tokenutil.InsertTokenBefore(i, rest_of_file) + else: + tokenutil.InsertTokenAfter(i, insert_after) + insert_after = i + + def _GetRequireOrProvideTokens(self, token, token_string): + """Gets all goog.provide or goog.require tokens in the given token stream. + + Args: + token: The first token in the token stream. + token_string: One of 'goog.provide' or 'goog.require' to indicate which + tokens to find. + + Returns: + A list of goog.provide or goog.require tokens in the order they appear in + the token stream. + """ + tokens = [] + while token: + if token.type == Type.IDENTIFIER: + if token.string == token_string: + tokens.append(token) + elif token.string not in [ + 'goog.provide', 'goog.require', 'goog.setTestOnly']: + # These 3 identifiers are at the top of the file. So if any other + # identifier is encountered, return. + break + token = token.next + + return tokens + + def _GetRequireOrProvideTokenStrings(self, tokens): + """Gets a list of strings corresponding to the given list of tokens. + + The string will be the next string in the token stream after each token in + tokens. This is used to find the object being provided/required by a given + goog.provide or goog.require token. + + Args: + tokens: A list of goog.provide or goog.require tokens. + + Returns: + A list of object names that are being provided or required by the given + list of tokens. For example: + + ['object.a', 'object.c', 'object.b'] + """ + token_strings = [] + for token in tokens: + name = tokenutil.GetStringAfterToken(token) + token_strings.append(name) + return token_strings + + def _GetTokensMap(self, tokens): + """Gets a map from object name to tokens associated with that object. + + Starting from the goog.provide/goog.require token, searches backwards in the + token stream for any lines that start with a comment. These lines are + associated with the goog.provide/goog.require token. Also associates any + tokens on the same line as the goog.provide/goog.require token with that + token. + + Args: + tokens: A list of goog.provide or goog.require tokens. + + Returns: + A dictionary that maps object names to the tokens associated with the + goog.provide or goog.require of that object name. For example: + + { + 'object.a': [JavaScriptToken, JavaScriptToken, ...], + 'object.b': [...] + } + + The list of tokens includes any comment lines above the goog.provide or + goog.require statement and everything after the statement on the same + line. For example, all of the following would be associated with + 'object.a': + + /** @suppress {extraRequire} */ + goog.require('object.a'); // Some comment. + """ + tokens_map = {} + for token in tokens: + object_name = tokenutil.GetStringAfterToken(token) + # If the previous line starts with a comment, presume that the comment + # relates to the goog.require or goog.provide and keep them together when + # sorting. + first_token = token + previous_first_token = tokenutil.GetFirstTokenInPreviousLine(first_token) + while (previous_first_token and + previous_first_token.IsAnyType(Type.COMMENT_TYPES)): + first_token = previous_first_token + previous_first_token = tokenutil.GetFirstTokenInPreviousLine( + first_token) + + # Find the last token on the line. + last_token = tokenutil.GetLastTokenInSameLine(token) + + all_tokens = self._GetTokenList(first_token, last_token) + tokens_map[object_name] = all_tokens + return tokens_map + + def _GetTokenList(self, first_token, last_token): + """Gets a list of all tokens from first_token to last_token, inclusive. + + Args: + first_token: The first token to get. + last_token: The last token to get. + + Returns: + A list of all tokens between first_token and last_token, including both + first_token and last_token. + + Raises: + Exception: If the token stream ends before last_token is reached. + """ + token_list = [] + token = first_token + while token != last_token: + if not token: + raise Exception('ran out of tokens') + token_list.append(token) + token = token.next + token_list.append(last_token) + + return token_list + + def GetFixedRequireString(self, token): + """Get fixed/sorted order of goog.require statements. + + Args: + token: The first token in the token stream. + + Returns: + A string for correct sorted order of goog.require. + """ + return self._GetFixedRequireOrProvideString( + self._GetRequireOrProvideTokens(token, 'goog.require')) + + def GetFixedProvideString(self, token): + """Get fixed/sorted order of goog.provide statements. + + Args: + token: The first token in the token stream. + + Returns: + A string for correct sorted order of goog.provide. + """ + return self._GetFixedRequireOrProvideString( + self._GetRequireOrProvideTokens(token, 'goog.provide')) + + def _GetFixedRequireOrProvideString(self, tokens): + """Sorts goog.provide or goog.require statements. + + Args: + tokens: A list of goog.provide or goog.require tokens in the order they + appear in the token stream. i.e. the first token in this list must + be the first goog.provide or goog.require token. + + Returns: + A string for sorted goog.require or goog.provide statements + """ + + # A map from required/provided object name to tokens that make up the line + # it was on, including any comments immediately before it or after it on the + # same line. + tokens_map = self._GetTokensMap(tokens) + sorted_strings = sorted(tokens_map.keys()) + + new_order = '' + for string in sorted_strings: + for i in tokens_map[string]: + new_order += i.string + if i.IsLastInLine(): + new_order += '\n' + + return new_order diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/requireprovidesorter_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/requireprovidesorter_test.py new file mode 100644 index 0000000000..fecb6d04da --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/requireprovidesorter_test.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for RequireProvideSorter.""" + + + +import unittest as googletest +from closure_linter import javascripttokens +from closure_linter import requireprovidesorter +from closure_linter import testutil + +# pylint: disable=g-bad-name +TokenType = javascripttokens.JavaScriptTokenType + + +class RequireProvideSorterTest(googletest.TestCase): + """Tests for RequireProvideSorter.""" + + def testGetFixedProvideString(self): + """Tests that fixed string constains proper comments also.""" + input_lines = [ + 'goog.provide(\'package.xyz\');', + '/** @suppress {extraprovide} **/', + 'goog.provide(\'package.abcd\');' + ] + + expected_lines = [ + '/** @suppress {extraprovide} **/', + 'goog.provide(\'package.abcd\');', + 'goog.provide(\'package.xyz\');' + ] + + token = testutil.TokenizeSourceAndRunEcmaPass(input_lines) + + sorter = requireprovidesorter.RequireProvideSorter() + fixed_provide_string = sorter.GetFixedProvideString(token) + + self.assertEquals(expected_lines, fixed_provide_string.splitlines()) + + def testGetFixedRequireString(self): + """Tests that fixed string constains proper comments also.""" + input_lines = [ + 'goog.require(\'package.xyz\');', + '/** This is needed for scope. **/', + 'goog.require(\'package.abcd\');' + ] + + expected_lines = [ + '/** This is needed for scope. **/', + 'goog.require(\'package.abcd\');', + 'goog.require(\'package.xyz\');' + ] + + token = testutil.TokenizeSourceAndRunEcmaPass(input_lines) + + sorter = requireprovidesorter.RequireProvideSorter() + fixed_require_string = sorter.GetFixedRequireString(token) + + self.assertEquals(expected_lines, fixed_require_string.splitlines()) + + def testFixRequires_removeBlankLines(self): + """Tests that blank lines are omitted in sorted goog.require statements.""" + input_lines = [ + 'goog.provide(\'package.subpackage.Whatever\');', + '', + 'goog.require(\'package.subpackage.ClassB\');', + '', + 'goog.require(\'package.subpackage.ClassA\');' + ] + expected_lines = [ + 'goog.provide(\'package.subpackage.Whatever\');', + '', + 'goog.require(\'package.subpackage.ClassA\');', + 'goog.require(\'package.subpackage.ClassB\');' + ] + token = testutil.TokenizeSourceAndRunEcmaPass(input_lines) + + sorter = requireprovidesorter.RequireProvideSorter() + sorter.FixRequires(token) + + self.assertEquals(expected_lines, self._GetLines(token)) + + def fixRequiresTest_withTestOnly(self, position): + """Regression-tests sorting even with a goog.setTestOnly statement. + + Args: + position: The position in the list where to insert the goog.setTestOnly + statement. Will be used to test all possible combinations for + this test. + """ + input_lines = [ + 'goog.provide(\'package.subpackage.Whatever\');', + '', + 'goog.require(\'package.subpackage.ClassB\');', + 'goog.require(\'package.subpackage.ClassA\');' + ] + expected_lines = [ + 'goog.provide(\'package.subpackage.Whatever\');', + '', + 'goog.require(\'package.subpackage.ClassA\');', + 'goog.require(\'package.subpackage.ClassB\');' + ] + input_lines.insert(position, 'goog.setTestOnly();') + expected_lines.insert(position, 'goog.setTestOnly();') + + token = testutil.TokenizeSourceAndRunEcmaPass(input_lines) + + sorter = requireprovidesorter.RequireProvideSorter() + sorter.FixRequires(token) + + self.assertEquals(expected_lines, self._GetLines(token)) + + def testFixRequires_withTestOnly(self): + """Regression-tests sorting even after a goog.setTestOnly statement.""" + + # goog.setTestOnly at first line. + self.fixRequiresTest_withTestOnly(position=0) + + # goog.setTestOnly after goog.provide. + self.fixRequiresTest_withTestOnly(position=1) + + # goog.setTestOnly before goog.require. + self.fixRequiresTest_withTestOnly(position=2) + + # goog.setTestOnly after goog.require. + self.fixRequiresTest_withTestOnly(position=4) + + def _GetLines(self, token): + """Returns an array of lines based on the specified token stream.""" + lines = [] + line = '' + while token: + line += token.string + if token.IsLastInLine(): + lines.append(line) + line = '' + token = token.next + return lines + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/runner.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/runner.py new file mode 100644 index 0000000000..76718c6706 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/runner.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Main lint function. Tokenizes file, runs passes, and feeds to checker.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + +__author__ = 'nnaze@google.com (Nathan Naze)' + +import traceback + +import gflags as flags + +from closure_linter import checker +from closure_linter import ecmametadatapass +from closure_linter import errors +from closure_linter import javascriptstatetracker +from closure_linter import javascripttokenizer + +from closure_linter.common import error +from closure_linter.common import htmlutil +from closure_linter.common import tokens + +flags.DEFINE_list('limited_doc_files', ['dummy.js', 'externs.js'], + 'List of files with relaxed documentation checks. Will not ' + 'report errors for missing documentation, some missing ' + 'descriptions, or methods whose @return tags don\'t have a ' + 'matching return statement.') +flags.DEFINE_boolean('error_trace', False, + 'Whether to show error exceptions.') + + +def _GetLastNonWhiteSpaceToken(start_token): + """Get the last non-whitespace token in a token stream.""" + ret_token = None + + whitespace_tokens = frozenset([ + tokens.TokenType.WHITESPACE, tokens.TokenType.BLANK_LINE]) + for t in start_token: + if t.type not in whitespace_tokens: + ret_token = t + + return ret_token + + +def _IsHtml(filename): + return filename.endswith('.html') or filename.endswith('.htm') + + +def _Tokenize(fileobj): + """Tokenize a file. + + Args: + fileobj: file-like object (or iterable lines) with the source. + + Returns: + The first token in the token stream and the ending mode of the tokenizer. + """ + tokenizer = javascripttokenizer.JavaScriptTokenizer() + start_token = tokenizer.TokenizeFile(fileobj) + return start_token, tokenizer.mode + + +def _IsLimitedDocCheck(filename, limited_doc_files): + """Whether this this a limited-doc file. + + Args: + filename: The filename. + limited_doc_files: Iterable of strings. Suffixes of filenames that should + be limited doc check. + + Returns: + Whether the file should be limited check. + """ + for limited_doc_filename in limited_doc_files: + if filename.endswith(limited_doc_filename): + return True + return False + + +def Run(filename, error_handler, source=None): + """Tokenize, run passes, and check the given file. + + Args: + filename: The path of the file to check + error_handler: The error handler to report errors to. + source: A file-like object with the file source. If omitted, the file will + be read from the filename path. + """ + if not source: + try: + source = open(filename) + except IOError: + error_handler.HandleFile(filename, None) + error_handler.HandleError( + error.Error(errors.FILE_NOT_FOUND, 'File not found')) + error_handler.FinishFile() + return + + if _IsHtml(filename): + source_file = htmlutil.GetScriptLines(source) + else: + source_file = source + + token, tokenizer_mode = _Tokenize(source_file) + + error_handler.HandleFile(filename, token) + + # If we did not end in the basic mode, this a failed parse. + if tokenizer_mode is not javascripttokenizer.JavaScriptModes.TEXT_MODE: + error_handler.HandleError( + error.Error(errors.FILE_IN_BLOCK, + 'File ended in mode "%s".' % tokenizer_mode, + _GetLastNonWhiteSpaceToken(token))) + + # Run the ECMA pass + error_token = None + + ecma_pass = ecmametadatapass.EcmaMetaDataPass() + error_token = RunMetaDataPass(token, ecma_pass, error_handler, filename) + + is_limited_doc_check = ( + _IsLimitedDocCheck(filename, flags.FLAGS.limited_doc_files)) + + _RunChecker(token, error_handler, + is_limited_doc_check, + is_html=_IsHtml(filename), + stop_token=error_token) + + error_handler.FinishFile() + + +def RunMetaDataPass(start_token, metadata_pass, error_handler, filename=''): + """Run a metadata pass over a token stream. + + Args: + start_token: The first token in a token stream. + metadata_pass: Metadata pass to run. + error_handler: The error handler to report errors to. + filename: Filename of the source. + + Returns: + The token where the error occurred (if any). + """ + + try: + metadata_pass.Process(start_token) + except ecmametadatapass.ParseError, parse_err: + if flags.FLAGS.error_trace: + traceback.print_exc() + error_token = parse_err.token + error_msg = str(parse_err) + error_handler.HandleError( + error.Error(errors.FILE_DOES_NOT_PARSE, + ('Error parsing file at token "%s". Unable to ' + 'check the rest of file.' + '\nError "%s"' % (error_token, error_msg)), error_token)) + return error_token + except Exception: # pylint: disable=broad-except + traceback.print_exc() + error_handler.HandleError( + error.Error( + errors.FILE_DOES_NOT_PARSE, + 'Internal error in %s' % filename)) + + +def _RunChecker(start_token, error_handler, + limited_doc_checks, is_html, + stop_token=None): + + state_tracker = javascriptstatetracker.JavaScriptStateTracker() + + style_checker = checker.JavaScriptStyleChecker( + state_tracker=state_tracker, + error_handler=error_handler) + + style_checker.Check(start_token, + is_html=is_html, + limited_doc_checks=limited_doc_checks, + stop_token=stop_token) diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/runner_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/runner_test.py new file mode 100644 index 0000000000..da5857d309 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/runner_test.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python +# +# Copyright 2008 The Closure Linter Authors. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for the runner module.""" + +__author__ = ('nnaze@google.com (Nathan Naze)') + +import StringIO + + +import mox + + +import unittest as googletest + +from closure_linter import errors +from closure_linter import runner +from closure_linter.common import error +from closure_linter.common import errorhandler +from closure_linter.common import tokens + + +class LimitedDocTest(googletest.TestCase): + + def testIsLimitedDocCheck(self): + self.assertTrue(runner._IsLimitedDocCheck('foo_test.js', ['_test.js'])) + self.assertFalse(runner._IsLimitedDocCheck('foo_bar.js', ['_test.js'])) + + self.assertTrue(runner._IsLimitedDocCheck( + 'foo_moo.js', ['moo.js', 'quack.js'])) + self.assertFalse(runner._IsLimitedDocCheck( + 'foo_moo.js', ['woof.js', 'quack.js'])) + + +class RunnerTest(googletest.TestCase): + + def setUp(self): + self.mox = mox.Mox() + + def testRunOnMissingFile(self): + mock_error_handler = self.mox.CreateMock(errorhandler.ErrorHandler) + + def ValidateError(err): + return (isinstance(err, error.Error) and + err.code is errors.FILE_NOT_FOUND and + err.token is None) + + mock_error_handler.HandleFile('does_not_exist.js', None) + mock_error_handler.HandleError(mox.Func(ValidateError)) + mock_error_handler.FinishFile() + + self.mox.ReplayAll() + + runner.Run('does_not_exist.js', mock_error_handler) + + self.mox.VerifyAll() + + def testBadTokenization(self): + mock_error_handler = self.mox.CreateMock(errorhandler.ErrorHandler) + + def ValidateError(err): + return (isinstance(err, error.Error) and + err.code is errors.FILE_IN_BLOCK and + err.token.string == '}') + + mock_error_handler.HandleFile('foo.js', mox.IsA(tokens.Token)) + mock_error_handler.HandleError(mox.Func(ValidateError)) + mock_error_handler.HandleError(mox.IsA(error.Error)) + mock_error_handler.FinishFile() + + self.mox.ReplayAll() + + source = StringIO.StringIO(_BAD_TOKENIZATION_SCRIPT) + runner.Run('foo.js', mock_error_handler, source) + + self.mox.VerifyAll() + + +_BAD_TOKENIZATION_SCRIPT = """ +function foo () { + var a = 3; + var b = 2; + return b + a; /* Comment not closed +} +""" + + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/scopeutil.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/scopeutil.py new file mode 100644 index 0000000000..a612d1a98f --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/scopeutil.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tools to match goog.scope alias statements.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + +__author__ = ('nnaze@google.com (Nathan Naze)') + +import itertools + +from closure_linter import ecmametadatapass +from closure_linter import tokenutil +from closure_linter.javascripttokens import JavaScriptTokenType + + + +def IsGoogScopeBlock(context): + """Whether the given context is a goog.scope block. + + This function only checks that the block is a function block inside + a goog.scope() call. + + TODO(nnaze): Implement goog.scope checks that verify the call is + in the root context and contains only a single function literal. + + Args: + context: An EcmaContext of type block. + + Returns: + Whether the context is a goog.scope block. + """ + + if context.type != ecmametadatapass.EcmaContext.BLOCK: + return False + + if not _IsFunctionLiteralBlock(context): + return False + + # Check that this function is contained by a group + # of form "goog.scope(...)". + parent = context.parent + if parent and parent.type is ecmametadatapass.EcmaContext.GROUP: + + last_code_token = parent.start_token.metadata.last_code + + if (last_code_token and + last_code_token.type is JavaScriptTokenType.IDENTIFIER and + last_code_token.string == 'goog.scope'): + return True + + return False + + +def _IsFunctionLiteralBlock(block_context): + """Check if a context is a function literal block (without parameters). + + Example function literal block: 'function() {}' + + Args: + block_context: An EcmaContext of type block. + + Returns: + Whether this context is a function literal block. + """ + + previous_code_tokens_iter = itertools.ifilter( + lambda token: token not in JavaScriptTokenType.NON_CODE_TYPES, + reversed(block_context.start_token)) + + # Ignore the current token + next(previous_code_tokens_iter, None) + + # Grab the previous three tokens and put them in correct order. + previous_code_tokens = list(itertools.islice(previous_code_tokens_iter, 3)) + previous_code_tokens.reverse() + + # There aren't three previous tokens. + if len(previous_code_tokens) is not 3: + return False + + # Check that the previous three code tokens are "function ()" + previous_code_token_types = [token.type for token in previous_code_tokens] + if (previous_code_token_types == [ + JavaScriptTokenType.FUNCTION_DECLARATION, + JavaScriptTokenType.START_PARAMETERS, + JavaScriptTokenType.END_PARAMETERS]): + return True + + return False + + +def IsInClosurizedNamespace(symbol, closurized_namespaces): + """Match a goog.scope alias. + + Args: + symbol: An identifier like 'goog.events.Event'. + closurized_namespaces: Iterable of valid Closurized namespaces (strings). + + Returns: + True if symbol is an identifier in a Closurized namespace, otherwise False. + """ + for ns in closurized_namespaces: + if symbol.startswith(ns + '.'): + return True + + return False + + +def MatchAlias(context): + """Match an alias statement (some identifier assigned to a variable). + + Example alias: var MyClass = proj.longNamespace.MyClass. + + Args: + context: An EcmaContext of type EcmaContext.STATEMENT. + + Returns: + If a valid alias, returns a tuple of alias and symbol, otherwise None. + """ + + if context.type != ecmametadatapass.EcmaContext.STATEMENT: + return + + # Get the tokens in this statement. + if context.start_token and context.end_token: + statement_tokens = tokenutil.GetTokenRange(context.start_token, + context.end_token) + else: + return + + # And now just those tokens that are actually code. + is_non_code_type = lambda t: t.type not in JavaScriptTokenType.NON_CODE_TYPES + code_tokens = filter(is_non_code_type, statement_tokens) + + # This section identifies statements of the alias form "var alias = symbol". + + # Pop off the semicolon if present. + if code_tokens and code_tokens[-1].IsType(JavaScriptTokenType.SEMICOLON): + code_tokens.pop() + + if not (len(code_tokens) == 4 and + code_tokens[0].IsKeyword('var') and + (code_tokens[0].metadata.context.type == + ecmametadatapass.EcmaContext.VAR)): + return + + # Verify the only code tokens in this statement are part of the var + # declaration. + var_context = code_tokens[0].metadata.context + for token in code_tokens: + if token.metadata.context is not var_context: + return + + # Verify that this is of the form "var lvalue = identifier;". + if not(code_tokens[0].IsKeyword('var') and + code_tokens[1].IsType(JavaScriptTokenType.SIMPLE_LVALUE) and + code_tokens[2].IsOperator('=') and + code_tokens[3].IsType(JavaScriptTokenType.IDENTIFIER)): + return + + alias, symbol = code_tokens[1], code_tokens[3] + # Mark both tokens as an alias definition to avoid counting them as usages. + alias.metadata.is_alias_definition = True + symbol.metadata.is_alias_definition = True + + return alias.string, symbol.string diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/scopeutil_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/scopeutil_test.py new file mode 100644 index 0000000000..9bb836e232 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/scopeutil_test.py @@ -0,0 +1,205 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for the scopeutil module.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + +__author__ = ('nnaze@google.com (Nathan Naze)') + + +import unittest as googletest + +from closure_linter import ecmametadatapass +from closure_linter import scopeutil +from closure_linter import testutil + + +def _FindContexts(start_token): + """Depth first search of all contexts referenced by a token stream. + + Includes contexts' parents, which might not be directly referenced + by any token in the stream. + + Args: + start_token: First token in the token stream. + + Yields: + All contexts referenced by this token stream. + """ + + seen_contexts = set() + + # For each token, yield the context if we haven't seen it before. + for token in start_token: + + token_context = token.metadata.context + contexts = [token_context] + + # Also grab all the context's ancestors. + parent = token_context.parent + while parent: + contexts.append(parent) + parent = parent.parent + + # Yield each of these contexts if we've not seen them. + for context in contexts: + if context not in seen_contexts: + yield context + + seen_contexts.add(context) + + +def _FindFirstContextOfType(token, context_type): + """Returns the first statement context.""" + for context in _FindContexts(token): + if context.type == context_type: + return context + + +class StatementTest(googletest.TestCase): + + def assertAlias(self, expected_match, script): + start_token = testutil.TokenizeSourceAndRunEcmaPass(script) + statement = _FindFirstContextOfType( + start_token, ecmametadatapass.EcmaContext.STATEMENT) + match = scopeutil.MatchAlias(statement) + self.assertEquals(expected_match, match) + + def testSimpleAliases(self): + self.assertAlias( + ('foo', 'goog.foo'), + 'var foo = goog.foo;') + + self.assertAlias( + ('foo', 'goog.foo'), + 'var foo = goog.foo') # No semicolon + + def testAliasWithComment(self): + self.assertAlias( + ('Component', 'goog.ui.Component'), + 'var Component = /* comment */ goog.ui.Component;') + + def testMultilineComment(self): + self.assertAlias( + ('Component', 'goog.ui.Component'), + 'var Component = \n goog.ui.Component;') + + def testNonSymbolAliasVarStatements(self): + self.assertAlias(None, 'var foo = 3;') + self.assertAlias(None, 'var foo = function() {};') + self.assertAlias(None, 'for(var foo = bar;;){}') + self.assertAlias(None, 'var foo = bar ? baz : qux;') + + +class ScopeBlockTest(googletest.TestCase): + + @staticmethod + def _GetBlocks(source): + start_token = testutil.TokenizeSourceAndRunEcmaPass(source) + for context in _FindContexts(start_token): + if context.type is ecmametadatapass.EcmaContext.BLOCK: + yield context + + def assertNoBlocks(self, script): + blocks = list(self._GetBlocks(script)) + self.assertEquals([], blocks) + + def testNotBlocks(self): + # Ensure these are not considered blocks. + self.assertNoBlocks('goog.scope(if{});') + self.assertNoBlocks('goog.scope(for{});') + self.assertNoBlocks('goog.scope(switch{});') + self.assertNoBlocks('goog.scope(function foo{});') + + def testNonScopeBlocks(self): + + blocks = list(self._GetBlocks('goog.scope(try{});')) + self.assertEquals(1, len(blocks)) + self.assertFalse(scopeutil.IsGoogScopeBlock(blocks.pop())) + + blocks = list(self._GetBlocks('goog.scope(function(a,b){});')) + self.assertEquals(1, len(blocks)) + self.assertFalse(scopeutil.IsGoogScopeBlock(blocks.pop())) + + blocks = list(self._GetBlocks('goog.scope(try{} catch(){});')) + # Two blocks: try and catch. + self.assertEquals(2, len(blocks)) + self.assertFalse(scopeutil.IsGoogScopeBlock(blocks.pop())) + self.assertFalse(scopeutil.IsGoogScopeBlock(blocks.pop())) + + blocks = list(self._GetBlocks('goog.scope(try{} catch(){} finally {});')) + self.assertEquals(3, len(blocks)) + self.assertFalse(scopeutil.IsGoogScopeBlock(blocks.pop())) + self.assertFalse(scopeutil.IsGoogScopeBlock(blocks.pop())) + self.assertFalse(scopeutil.IsGoogScopeBlock(blocks.pop())) + + +class AliasTest(googletest.TestCase): + + def setUp(self): + self.start_token = testutil.TokenizeSourceAndRunEcmaPass(_TEST_SCRIPT) + + def testMatchAliasStatement(self): + matches = set() + for context in _FindContexts(self.start_token): + match = scopeutil.MatchAlias(context) + if match: + matches.add(match) + + self.assertEquals( + set([('bar', 'baz'), + ('foo', 'this.foo_'), + ('Component', 'goog.ui.Component'), + ('MyClass', 'myproject.foo.MyClass'), + ('NonClosurizedClass', 'aaa.bbb.NonClosurizedClass')]), + matches) + + def testMatchAliasStatement_withClosurizedNamespaces(self): + + closurized_namepaces = frozenset(['goog', 'myproject']) + + matches = set() + for context in _FindContexts(self.start_token): + match = scopeutil.MatchAlias(context) + if match: + unused_alias, symbol = match + if scopeutil.IsInClosurizedNamespace(symbol, closurized_namepaces): + matches.add(match) + + self.assertEquals( + set([('MyClass', 'myproject.foo.MyClass'), + ('Component', 'goog.ui.Component')]), + matches) + +_TEST_SCRIPT = """ +goog.scope(function() { + var Component = goog.ui.Component; // scope alias + var MyClass = myproject.foo.MyClass; // scope alias + + // Scope alias of non-Closurized namespace. + var NonClosurizedClass = aaa.bbb.NonClosurizedClass; + + var foo = this.foo_; // non-scope object property alias + var bar = baz; // variable alias + + var component = new Component(); +}); + +""" + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/statetracker.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/statetracker.py new file mode 100644 index 0000000000..079950f0f5 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/statetracker.py @@ -0,0 +1,1212 @@ +#!/usr/bin/env python +# +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Light weight EcmaScript state tracker that reads tokens and tracks state.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + +import re + +from closure_linter import javascripttokenizer +from closure_linter import javascripttokens +from closure_linter import tokenutil + +# Shorthand +Type = javascripttokens.JavaScriptTokenType + + +class DocFlag(object): + """Generic doc flag object. + + Attribute: + flag_type: param, return, define, type, etc. + flag_token: The flag token. + type_start_token: The first token specifying the flag type, + including braces. + type_end_token: The last token specifying the flag type, + including braces. + type: The type spec. + name_token: The token specifying the flag name. + name: The flag name + description_start_token: The first token in the description. + description_end_token: The end token in the description. + description: The description. + """ + + # Please keep these lists alphabetized. + + # The list of standard jsdoc tags is from + STANDARD_DOC = frozenset([ + 'author', + 'bug', + 'classTemplate', + 'consistentIdGenerator', + 'const', + 'constructor', + 'define', + 'deprecated', + 'dict', + 'enum', + 'export', + 'expose', + 'extends', + 'externs', + 'fileoverview', + 'idGenerator', + 'implements', + 'implicitCast', + 'interface', + 'lends', + 'license', + 'ngInject', # This annotation is specific to AngularJS. + 'noalias', + 'nocompile', + 'nosideeffects', + 'override', + 'owner', + 'param', + 'preserve', + 'private', + 'protected', + 'public', + 'return', + 'see', + 'stableIdGenerator', + 'struct', + 'supported', + 'template', + 'this', + 'type', + 'typedef', + 'wizaction', # This annotation is specific to Wiz. + 'wizmodule', # This annotation is specific to Wiz. + ]) + + ANNOTATION = frozenset(['preserveTry', 'suppress']) + + LEGAL_DOC = STANDARD_DOC | ANNOTATION + + # Includes all Closure Compiler @suppress types. + # Not all of these annotations are interpreted by Closure Linter. + # + # Specific cases: + # - accessControls is supported by the compiler at the expression + # and method level to suppress warnings about private/protected + # access (method level applies to all references in the method). + # The linter mimics the compiler behavior. + SUPPRESS_TYPES = frozenset([ + 'accessControls', + 'ambiguousFunctionDecl', + 'checkRegExp', + 'checkStructDictInheritance', + 'checkTypes', + 'checkVars', + 'const', + 'constantProperty', + 'deprecated', + 'duplicate', + 'es5Strict', + 'externsValidation', + 'extraProvide', + 'extraRequire', + 'fileoverviewTags', + 'globalThis', + 'internetExplorerChecks', + 'invalidCasts', + 'missingProperties', + 'missingProvide', + 'missingRequire', + 'missingReturn', + 'nonStandardJsDocs', + 'strictModuleDepCheck', + 'tweakValidation', + 'typeInvalidation', + 'undefinedNames', + 'undefinedVars', + 'underscore', + 'unknownDefines', + 'unusedPrivateMembers', + 'uselessCode', + 'visibility', + 'with']) + + HAS_DESCRIPTION = frozenset([ + 'define', 'deprecated', 'desc', 'fileoverview', 'license', 'param', + 'preserve', 'return', 'supported']) + + HAS_TYPE = frozenset([ + 'define', 'enum', 'extends', 'implements', 'param', 'return', 'type', + 'suppress', 'const']) + + TYPE_ONLY = frozenset(['enum', 'extends', 'implements', 'suppress', 'type', + 'const']) + + HAS_NAME = frozenset(['param']) + + EMPTY_COMMENT_LINE = re.compile(r'^\s*\*?\s*$') + EMPTY_STRING = re.compile(r'^\s*$') + + def __init__(self, flag_token): + """Creates the DocFlag object and attaches it to the given start token. + + Args: + flag_token: The starting token of the flag. + """ + self.flag_token = flag_token + self.flag_type = flag_token.string.strip().lstrip('@') + + # Extract type, if applicable. + self.type = None + self.type_start_token = None + self.type_end_token = None + if self.flag_type in self.HAS_TYPE: + brace = tokenutil.SearchUntil(flag_token, [Type.DOC_START_BRACE], + Type.FLAG_ENDING_TYPES) + if brace: + end_token, contents = _GetMatchingEndBraceAndContents(brace) + self.type = contents + self.type_start_token = brace + self.type_end_token = end_token + elif (self.flag_type in self.TYPE_ONLY and + flag_token.next.type not in Type.FLAG_ENDING_TYPES and + flag_token.line_number == flag_token.next.line_number): + # b/10407058. If the flag is expected to be followed by a type then + # search for type in same line only. If no token after flag in same + # line then conclude that no type is specified. + self.type_start_token = flag_token.next + self.type_end_token, self.type = _GetEndTokenAndContents( + self.type_start_token) + if self.type is not None: + self.type = self.type.strip() + + # Extract name, if applicable. + self.name_token = None + self.name = None + if self.flag_type in self.HAS_NAME: + # Handle bad case, name could be immediately after flag token. + self.name_token = _GetNextPartialIdentifierToken(flag_token) + + # Handle good case, if found token is after type start, look for + # a identifier (substring to cover cases like [cnt] b/4197272) after + # type end, since types contain identifiers. + if (self.type and self.name_token and + tokenutil.Compare(self.name_token, self.type_start_token) > 0): + self.name_token = _GetNextPartialIdentifierToken(self.type_end_token) + + if self.name_token: + self.name = self.name_token.string + + # Extract description, if applicable. + self.description_start_token = None + self.description_end_token = None + self.description = None + if self.flag_type in self.HAS_DESCRIPTION: + search_start_token = flag_token + if self.name_token and self.type_end_token: + if tokenutil.Compare(self.type_end_token, self.name_token) > 0: + search_start_token = self.type_end_token + else: + search_start_token = self.name_token + elif self.name_token: + search_start_token = self.name_token + elif self.type: + search_start_token = self.type_end_token + + interesting_token = tokenutil.Search(search_start_token, + Type.FLAG_DESCRIPTION_TYPES | Type.FLAG_ENDING_TYPES) + if interesting_token.type in Type.FLAG_DESCRIPTION_TYPES: + self.description_start_token = interesting_token + self.description_end_token, self.description = ( + _GetEndTokenAndContents(interesting_token)) + + +class DocComment(object): + """JavaScript doc comment object. + + Attributes: + ordered_params: Ordered list of parameters documented. + start_token: The token that starts the doc comment. + end_token: The token that ends the doc comment. + suppressions: Map of suppression type to the token that added it. + """ + def __init__(self, start_token): + """Create the doc comment object. + + Args: + start_token: The first token in the doc comment. + """ + self.__flags = [] + self.start_token = start_token + self.end_token = None + self.suppressions = {} + self.invalidated = False + + @property + def ordered_params(self): + """Gives the list of parameter names as a list of strings.""" + params = [] + for flag in self.__flags: + if flag.flag_type == 'param' and flag.name: + params.append(flag.name) + return params + + def Invalidate(self): + """Indicate that the JSDoc is well-formed but we had problems parsing it. + + This is a short-circuiting mechanism so that we don't emit false + positives about well-formed doc comments just because we don't support + hot new syntaxes. + """ + self.invalidated = True + + def IsInvalidated(self): + """Test whether Invalidate() has been called.""" + return self.invalidated + + def AddSuppression(self, token): + """Add a new error suppression flag. + + Args: + token: The suppression flag token. + """ + #TODO(user): Error if no braces + brace = tokenutil.SearchUntil(token, [Type.DOC_START_BRACE], + [Type.DOC_FLAG]) + if brace: + end_token, contents = _GetMatchingEndBraceAndContents(brace) + for suppression in contents.split('|'): + self.suppressions[suppression] = token + + def SuppressionOnly(self): + """Returns whether this comment contains only suppression flags.""" + if not self.__flags: + return False + + for flag in self.__flags: + if flag.flag_type != 'suppress': + return False + + return True + + def AddFlag(self, flag): + """Add a new document flag. + + Args: + flag: DocFlag object. + """ + self.__flags.append(flag) + + def InheritsDocumentation(self): + """Test if the jsdoc implies documentation inheritance. + + Returns: + True if documentation may be pulled off the superclass. + """ + return self.HasFlag('inheritDoc') or self.HasFlag('override') + + def HasFlag(self, flag_type): + """Test if the given flag has been set. + + Args: + flag_type: The type of the flag to check. + + Returns: + True if the flag is set. + """ + for flag in self.__flags: + if flag.flag_type == flag_type: + return True + return False + + def GetFlag(self, flag_type): + """Gets the last flag of the given type. + + Args: + flag_type: The type of the flag to get. + + Returns: + The last instance of the given flag type in this doc comment. + """ + for flag in reversed(self.__flags): + if flag.flag_type == flag_type: + return flag + + def GetDocFlags(self): + """Return the doc flags for this comment.""" + return list(self.__flags) + + def _YieldDescriptionTokens(self): + for token in self.start_token: + + if (token is self.end_token or + token.type is javascripttokens.JavaScriptTokenType.DOC_FLAG or + token.type not in javascripttokens.JavaScriptTokenType.COMMENT_TYPES): + return + + if token.type not in [ + javascripttokens.JavaScriptTokenType.START_DOC_COMMENT, + javascripttokens.JavaScriptTokenType.END_DOC_COMMENT, + javascripttokens.JavaScriptTokenType.DOC_PREFIX]: + yield token + + @property + def description(self): + return tokenutil.TokensToString( + self._YieldDescriptionTokens()) + + def GetTargetIdentifier(self): + """Returns the identifier (as a string) that this is a comment for. + + Note that this uses method uses GetIdentifierForToken to get the full + identifier, even if broken up by whitespace, newlines, or comments, + and thus could be longer than GetTargetToken().string. + + Returns: + The identifier for the token this comment is for. + """ + token = self.GetTargetToken() + if token: + return tokenutil.GetIdentifierForToken(token) + + def GetTargetToken(self): + """Get this comment's target token. + + Returns: + The token that is the target of this comment, or None if there isn't one. + """ + + # File overviews describe the file, not a token. + if self.HasFlag('fileoverview'): + return + + skip_types = frozenset([ + Type.WHITESPACE, + Type.BLANK_LINE, + Type.START_PAREN]) + + target_types = frozenset([ + Type.FUNCTION_NAME, + Type.IDENTIFIER, + Type.SIMPLE_LVALUE]) + + token = self.end_token.next + while token: + if token.type in target_types: + return token + + # Handles the case of a comment on "var foo = ...' + if token.IsKeyword('var'): + next_code_token = tokenutil.CustomSearch( + token, + lambda t: t.type not in Type.NON_CODE_TYPES) + + if (next_code_token and + next_code_token.IsType(Type.SIMPLE_LVALUE)): + return next_code_token + + return + + # Handles the case of a comment on "function foo () {}" + if token.type is Type.FUNCTION_DECLARATION: + next_code_token = tokenutil.CustomSearch( + token, + lambda t: t.type not in Type.NON_CODE_TYPES) + + if next_code_token.IsType(Type.FUNCTION_NAME): + return next_code_token + + return + + # Skip types will end the search. + if token.type not in skip_types: + return + + token = token.next + + def CompareParameters(self, params): + """Computes the edit distance and list from the function params to the docs. + + Uses the Levenshtein edit distance algorithm, with code modified from + http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Levenshtein_distance#Python + + Args: + params: The parameter list for the function declaration. + + Returns: + The edit distance, the edit list. + """ + source_len, target_len = len(self.ordered_params), len(params) + edit_lists = [[]] + distance = [[]] + for i in range(target_len+1): + edit_lists[0].append(['I'] * i) + distance[0].append(i) + + for j in range(1, source_len+1): + edit_lists.append([['D'] * j]) + distance.append([j]) + + for i in range(source_len): + for j in range(target_len): + cost = 1 + if self.ordered_params[i] == params[j]: + cost = 0 + + deletion = distance[i][j+1] + 1 + insertion = distance[i+1][j] + 1 + substitution = distance[i][j] + cost + + edit_list = None + best = None + if deletion <= insertion and deletion <= substitution: + # Deletion is best. + best = deletion + edit_list = list(edit_lists[i][j+1]) + edit_list.append('D') + + elif insertion <= substitution: + # Insertion is best. + best = insertion + edit_list = list(edit_lists[i+1][j]) + edit_list.append('I') + edit_lists[i+1].append(edit_list) + + else: + # Substitution is best. + best = substitution + edit_list = list(edit_lists[i][j]) + if cost: + edit_list.append('S') + else: + edit_list.append('=') + + edit_lists[i+1].append(edit_list) + distance[i+1].append(best) + + return distance[source_len][target_len], edit_lists[source_len][target_len] + + def __repr__(self): + """Returns a string representation of this object. + + Returns: + A string representation of this object. + """ + return '' % ( + str(self.ordered_params), str(self.__flags)) + + +# +# Helper methods used by DocFlag and DocComment to parse out flag information. +# + + +def _GetMatchingEndBraceAndContents(start_brace): + """Returns the matching end brace and contents between the two braces. + + If any FLAG_ENDING_TYPE token is encountered before a matching end brace, then + that token is used as the matching ending token. Contents will have all + comment prefixes stripped out of them, and all comment prefixes in between the + start and end tokens will be split out into separate DOC_PREFIX tokens. + + Args: + start_brace: The DOC_START_BRACE token immediately before desired contents. + + Returns: + The matching ending token (DOC_END_BRACE or FLAG_ENDING_TYPE) and a string + of the contents between the matching tokens, minus any comment prefixes. + """ + open_count = 1 + close_count = 0 + contents = [] + + # We don't consider the start brace part of the type string. + token = start_brace.next + while open_count != close_count: + if token.type == Type.DOC_START_BRACE: + open_count += 1 + elif token.type == Type.DOC_END_BRACE: + close_count += 1 + + if token.type != Type.DOC_PREFIX: + contents.append(token.string) + + if token.type in Type.FLAG_ENDING_TYPES: + break + token = token.next + + #Don't include the end token (end brace, end doc comment, etc.) in type. + token = token.previous + contents = contents[:-1] + + return token, ''.join(contents) + + +def _GetNextPartialIdentifierToken(start_token): + """Returns the first token having identifier as substring after a token. + + Searches each token after the start to see if it contains an identifier. + If found, token is returned. If no identifier is found returns None. + Search is abandoned when a FLAG_ENDING_TYPE token is found. + + Args: + start_token: The token to start searching after. + + Returns: + The token found containing identifier, None otherwise. + """ + token = start_token.next + + while token and token.type not in Type.FLAG_ENDING_TYPES: + match = javascripttokenizer.JavaScriptTokenizer.IDENTIFIER.search( + token.string) + if match is not None and token.type == Type.COMMENT: + return token + + token = token.next + + return None + + +def _GetEndTokenAndContents(start_token): + """Returns last content token and all contents before FLAG_ENDING_TYPE token. + + Comment prefixes are split into DOC_PREFIX tokens and stripped from the + returned contents. + + Args: + start_token: The token immediately before the first content token. + + Returns: + The last content token and a string of all contents including start and + end tokens, with comment prefixes stripped. + """ + iterator = start_token + last_line = iterator.line_number + last_token = None + contents = '' + doc_depth = 0 + while not iterator.type in Type.FLAG_ENDING_TYPES or doc_depth > 0: + if (iterator.IsFirstInLine() and + DocFlag.EMPTY_COMMENT_LINE.match(iterator.line)): + # If we have a blank comment line, consider that an implicit + # ending of the description. This handles a case like: + # + # * @return {boolean} True + # * + # * Note: This is a sentence. + # + # The note is not part of the @return description, but there was + # no definitive ending token. Rather there was a line containing + # only a doc comment prefix or whitespace. + break + + # b/2983692 + # don't prematurely match against a @flag if inside a doc flag + # need to think about what is the correct behavior for unterminated + # inline doc flags + if (iterator.type == Type.DOC_START_BRACE and + iterator.next.type == Type.DOC_INLINE_FLAG): + doc_depth += 1 + elif (iterator.type == Type.DOC_END_BRACE and + doc_depth > 0): + doc_depth -= 1 + + if iterator.type in Type.FLAG_DESCRIPTION_TYPES: + contents += iterator.string + last_token = iterator + + iterator = iterator.next + if iterator.line_number != last_line: + contents += '\n' + last_line = iterator.line_number + + end_token = last_token + if DocFlag.EMPTY_STRING.match(contents): + contents = None + else: + # Strip trailing newline. + contents = contents[:-1] + + return end_token, contents + + +class Function(object): + """Data about a JavaScript function. + + Attributes: + block_depth: Block depth the function began at. + doc: The DocComment associated with the function. + has_return: If the function has a return value. + has_this: If the function references the 'this' object. + is_assigned: If the function is part of an assignment. + is_constructor: If the function is a constructor. + name: The name of the function, whether given in the function keyword or + as the lvalue the function is assigned to. + start_token: First token of the function (the function' keyword token). + end_token: Last token of the function (the closing '}' token). + parameters: List of parameter names. + """ + + def __init__(self, block_depth, is_assigned, doc, name): + self.block_depth = block_depth + self.is_assigned = is_assigned + self.is_constructor = doc and doc.HasFlag('constructor') + self.is_interface = doc and doc.HasFlag('interface') + self.has_return = False + self.has_throw = False + self.has_this = False + self.name = name + self.doc = doc + self.start_token = None + self.end_token = None + self.parameters = None + + +class StateTracker(object): + """EcmaScript state tracker. + + Tracks block depth, function names, etc. within an EcmaScript token stream. + """ + + OBJECT_LITERAL = 'o' + CODE = 'c' + + def __init__(self, doc_flag=DocFlag): + """Initializes a JavaScript token stream state tracker. + + Args: + doc_flag: An optional custom DocFlag used for validating + documentation flags. + """ + self._doc_flag = doc_flag + self.Reset() + + def Reset(self): + """Resets the state tracker to prepare for processing a new page.""" + self._block_depth = 0 + self._is_block_close = False + self._paren_depth = 0 + self._function_stack = [] + self._functions_by_name = {} + self._last_comment = None + self._doc_comment = None + self._cumulative_params = None + self._block_types = [] + self._last_non_space_token = None + self._last_line = None + self._first_token = None + self._documented_identifiers = set() + self._variables_in_scope = [] + + def InFunction(self): + """Returns true if the current token is within a function. + + Returns: + True if the current token is within a function. + """ + return bool(self._function_stack) + + def InConstructor(self): + """Returns true if the current token is within a constructor. + + Returns: + True if the current token is within a constructor. + """ + return self.InFunction() and self._function_stack[-1].is_constructor + + def InInterfaceMethod(self): + """Returns true if the current token is within an interface method. + + Returns: + True if the current token is within an interface method. + """ + if self.InFunction(): + if self._function_stack[-1].is_interface: + return True + else: + name = self._function_stack[-1].name + prototype_index = name.find('.prototype.') + if prototype_index != -1: + class_function_name = name[0:prototype_index] + if (class_function_name in self._functions_by_name and + self._functions_by_name[class_function_name].is_interface): + return True + + return False + + def InTopLevelFunction(self): + """Returns true if the current token is within a top level function. + + Returns: + True if the current token is within a top level function. + """ + return len(self._function_stack) == 1 and self.InTopLevel() + + def InAssignedFunction(self): + """Returns true if the current token is within a function variable. + + Returns: + True if if the current token is within a function variable + """ + return self.InFunction() and self._function_stack[-1].is_assigned + + def IsFunctionOpen(self): + """Returns true if the current token is a function block open. + + Returns: + True if the current token is a function block open. + """ + return (self._function_stack and + self._function_stack[-1].block_depth == self._block_depth - 1) + + def IsFunctionClose(self): + """Returns true if the current token is a function block close. + + Returns: + True if the current token is a function block close. + """ + return (self._function_stack and + self._function_stack[-1].block_depth == self._block_depth) + + def InBlock(self): + """Returns true if the current token is within a block. + + Returns: + True if the current token is within a block. + """ + return bool(self._block_depth) + + def IsBlockClose(self): + """Returns true if the current token is a block close. + + Returns: + True if the current token is a block close. + """ + return self._is_block_close + + def InObjectLiteral(self): + """Returns true if the current token is within an object literal. + + Returns: + True if the current token is within an object literal. + """ + return self._block_depth and self._block_types[-1] == self.OBJECT_LITERAL + + def InObjectLiteralDescendant(self): + """Returns true if the current token has an object literal ancestor. + + Returns: + True if the current token has an object literal ancestor. + """ + return self.OBJECT_LITERAL in self._block_types + + def InParentheses(self): + """Returns true if the current token is within parentheses. + + Returns: + True if the current token is within parentheses. + """ + return bool(self._paren_depth) + + def ParenthesesDepth(self): + """Returns the number of parens surrounding the token. + + Returns: + The number of parenthesis surrounding the token. + """ + return self._paren_depth + + def BlockDepth(self): + """Returns the number of blocks in which the token is nested. + + Returns: + The number of blocks in which the token is nested. + """ + return self._block_depth + + def FunctionDepth(self): + """Returns the number of functions in which the token is nested. + + Returns: + The number of functions in which the token is nested. + """ + return len(self._function_stack) + + def InTopLevel(self): + """Whether we are at the top level in the class. + + This function call is language specific. In some languages like + JavaScript, a function is top level if it is not inside any parenthesis. + In languages such as ActionScript, a function is top level if it is directly + within a class. + """ + raise TypeError('Abstract method InTopLevel not implemented') + + def GetBlockType(self, token): + """Determine the block type given a START_BLOCK token. + + Code blocks come after parameters, keywords like else, and closing parens. + + Args: + token: The current token. Can be assumed to be type START_BLOCK. + Returns: + Code block type for current token. + """ + raise TypeError('Abstract method GetBlockType not implemented') + + def GetParams(self): + """Returns the accumulated input params as an array. + + In some EcmasSript languages, input params are specified like + (param:Type, param2:Type2, ...) + in other they are specified just as + (param, param2) + We handle both formats for specifying parameters here and leave + it to the compilers for each language to detect compile errors. + This allows more code to be reused between lint checkers for various + EcmaScript languages. + + Returns: + The accumulated input params as an array. + """ + params = [] + if self._cumulative_params: + params = re.compile(r'\s+').sub('', self._cumulative_params).split(',') + # Strip out the type from parameters of the form name:Type. + params = map(lambda param: param.split(':')[0], params) + + return params + + def GetLastComment(self): + """Return the last plain comment that could be used as documentation. + + Returns: + The last plain comment that could be used as documentation. + """ + return self._last_comment + + def GetDocComment(self): + """Return the most recent applicable documentation comment. + + Returns: + The last applicable documentation comment. + """ + return self._doc_comment + + def HasDocComment(self, identifier): + """Returns whether the identifier has been documented yet. + + Args: + identifier: The identifier. + + Returns: + Whether the identifier has been documented yet. + """ + return identifier in self._documented_identifiers + + def InDocComment(self): + """Returns whether the current token is in a doc comment. + + Returns: + Whether the current token is in a doc comment. + """ + return self._doc_comment and self._doc_comment.end_token is None + + def GetDocFlag(self): + """Returns the current documentation flags. + + Returns: + The current documentation flags. + """ + return self._doc_flag + + def IsTypeToken(self, t): + if self.InDocComment() and t.type not in (Type.START_DOC_COMMENT, + Type.DOC_FLAG, Type.DOC_INLINE_FLAG, Type.DOC_PREFIX): + f = tokenutil.SearchUntil(t, [Type.DOC_FLAG], [Type.START_DOC_COMMENT], + None, True) + if (f and f.attached_object.type_start_token is not None and + f.attached_object.type_end_token is not None): + return (tokenutil.Compare(t, f.attached_object.type_start_token) > 0 and + tokenutil.Compare(t, f.attached_object.type_end_token) < 0) + return False + + def GetFunction(self): + """Return the function the current code block is a part of. + + Returns: + The current Function object. + """ + if self._function_stack: + return self._function_stack[-1] + + def GetBlockDepth(self): + """Return the block depth. + + Returns: + The current block depth. + """ + return self._block_depth + + def GetLastNonSpaceToken(self): + """Return the last non whitespace token.""" + return self._last_non_space_token + + def GetLastLine(self): + """Return the last line.""" + return self._last_line + + def GetFirstToken(self): + """Return the very first token in the file.""" + return self._first_token + + def IsVariableInScope(self, token_string): + """Checks if string is variable in current scope. + + For given string it checks whether the string is a defined variable + (including function param) in current state. + + E.g. if variables defined (variables in current scope) is docs + then docs, docs.length etc will be considered as variable in current + scope. This will help in avoding extra goog.require for variables. + + Args: + token_string: String to check if its is a variable in current scope. + + Returns: + true if given string is a variable in current scope. + """ + for variable in self._variables_in_scope: + if (token_string == variable + or token_string.startswith(variable + '.')): + return True + + return False + + def HandleToken(self, token, last_non_space_token): + """Handles the given token and updates state. + + Args: + token: The token to handle. + last_non_space_token: + """ + self._is_block_close = False + + if not self._first_token: + self._first_token = token + + # Track block depth. + type = token.type + if type == Type.START_BLOCK: + self._block_depth += 1 + + # Subclasses need to handle block start very differently because + # whether a block is a CODE or OBJECT_LITERAL block varies significantly + # by language. + self._block_types.append(self.GetBlockType(token)) + + # When entering a function body, record its parameters. + if self.InFunction(): + function = self._function_stack[-1] + if self._block_depth == function.block_depth + 1: + function.parameters = self.GetParams() + + # Track block depth. + elif type == Type.END_BLOCK: + self._is_block_close = not self.InObjectLiteral() + self._block_depth -= 1 + self._block_types.pop() + + # Track parentheses depth. + elif type == Type.START_PAREN: + self._paren_depth += 1 + + # Track parentheses depth. + elif type == Type.END_PAREN: + self._paren_depth -= 1 + + elif type == Type.COMMENT: + self._last_comment = token.string + + elif type == Type.START_DOC_COMMENT: + self._last_comment = None + self._doc_comment = DocComment(token) + + elif type == Type.END_DOC_COMMENT: + self._doc_comment.end_token = token + + elif type in (Type.DOC_FLAG, Type.DOC_INLINE_FLAG): + flag = self._doc_flag(token) + token.attached_object = flag + self._doc_comment.AddFlag(flag) + + if flag.flag_type == 'suppress': + self._doc_comment.AddSuppression(token) + + elif type == Type.FUNCTION_DECLARATION: + last_code = tokenutil.SearchExcept(token, Type.NON_CODE_TYPES, None, + True) + doc = None + # Only functions outside of parens are eligible for documentation. + if not self._paren_depth: + doc = self._doc_comment + + name = '' + is_assigned = last_code and (last_code.IsOperator('=') or + last_code.IsOperator('||') or last_code.IsOperator('&&') or + (last_code.IsOperator(':') and not self.InObjectLiteral())) + if is_assigned: + # TODO(robbyw): This breaks for x[2] = ... + # Must use loop to find full function name in the case of line-wrapped + # declarations (bug 1220601) like: + # my.function.foo. + # bar = function() ... + identifier = tokenutil.Search(last_code, Type.SIMPLE_LVALUE, None, True) + while identifier and identifier.type in ( + Type.IDENTIFIER, Type.SIMPLE_LVALUE): + name = identifier.string + name + # Traverse behind us, skipping whitespace and comments. + while True: + identifier = identifier.previous + if not identifier or not identifier.type in Type.NON_CODE_TYPES: + break + + else: + next_token = tokenutil.SearchExcept(token, Type.NON_CODE_TYPES) + while next_token and next_token.IsType(Type.FUNCTION_NAME): + name += next_token.string + next_token = tokenutil.Search(next_token, Type.FUNCTION_NAME, 2) + + function = Function(self._block_depth, is_assigned, doc, name) + function.start_token = token + + self._function_stack.append(function) + self._functions_by_name[name] = function + + # Add a delimiter in stack for scope variables to define start of + # function. This helps in popping variables of this function when + # function declaration ends. + self._variables_in_scope.append('') + + elif type == Type.START_PARAMETERS: + self._cumulative_params = '' + + elif type == Type.PARAMETERS: + self._cumulative_params += token.string + self._variables_in_scope.extend(self.GetParams()) + + elif type == Type.KEYWORD and token.string == 'return': + next_token = tokenutil.SearchExcept(token, Type.NON_CODE_TYPES) + if not next_token.IsType(Type.SEMICOLON): + function = self.GetFunction() + if function: + function.has_return = True + + elif type == Type.KEYWORD and token.string == 'throw': + function = self.GetFunction() + if function: + function.has_throw = True + + elif type == Type.KEYWORD and token.string == 'var': + function = self.GetFunction() + next_token = tokenutil.Search(token, [Type.IDENTIFIER, + Type.SIMPLE_LVALUE]) + + if next_token: + if next_token.type == Type.SIMPLE_LVALUE: + self._variables_in_scope.append(next_token.values['identifier']) + else: + self._variables_in_scope.append(next_token.string) + + elif type == Type.SIMPLE_LVALUE: + identifier = token.values['identifier'] + jsdoc = self.GetDocComment() + if jsdoc: + self._documented_identifiers.add(identifier) + + self._HandleIdentifier(identifier, True) + + elif type == Type.IDENTIFIER: + self._HandleIdentifier(token.string, False) + + # Detect documented non-assignments. + next_token = tokenutil.SearchExcept(token, Type.NON_CODE_TYPES) + if next_token and next_token.IsType(Type.SEMICOLON): + if (self._last_non_space_token and + self._last_non_space_token.IsType(Type.END_DOC_COMMENT)): + self._documented_identifiers.add(token.string) + + def _HandleIdentifier(self, identifier, is_assignment): + """Process the given identifier. + + Currently checks if it references 'this' and annotates the function + accordingly. + + Args: + identifier: The identifer to process. + is_assignment: Whether the identifer is being written to. + """ + if identifier == 'this' or identifier.startswith('this.'): + function = self.GetFunction() + if function: + function.has_this = True + + def HandleAfterToken(self, token): + """Handle updating state after a token has been checked. + + This function should be used for destructive state changes such as + deleting a tracked object. + + Args: + token: The token to handle. + """ + type = token.type + if type == Type.SEMICOLON or type == Type.END_PAREN or ( + type == Type.END_BRACKET and + self._last_non_space_token.type not in ( + Type.SINGLE_QUOTE_STRING_END, Type.DOUBLE_QUOTE_STRING_END)): + # We end on any numeric array index, but keep going for string based + # array indices so that we pick up manually exported identifiers. + self._doc_comment = None + self._last_comment = None + + elif type == Type.END_BLOCK: + self._doc_comment = None + self._last_comment = None + + if self.InFunction() and self.IsFunctionClose(): + # TODO(robbyw): Detect the function's name for better errors. + function = self._function_stack.pop() + function.end_token = token + + # Pop all variables till delimiter ('') those were defined in the + # function being closed so make them out of scope. + while self._variables_in_scope and self._variables_in_scope[-1]: + self._variables_in_scope.pop() + + # Pop delimiter + if self._variables_in_scope: + self._variables_in_scope.pop() + + elif type == Type.END_PARAMETERS and self._doc_comment: + self._doc_comment = None + self._last_comment = None + + if not token.IsAnyType(Type.WHITESPACE, Type.BLANK_LINE): + self._last_non_space_token = token + + self._last_line = token.line diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/statetracker_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/statetracker_test.py new file mode 100755 index 0000000000..1ec9e0bb4f --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/statetracker_test.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for the statetracker module.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + +__author__ = ('nnaze@google.com (Nathan Naze)') + + + +import unittest as googletest + +from closure_linter import javascripttokens +from closure_linter import statetracker +from closure_linter import testutil + + +class _FakeDocFlag(object): + + def __repr__(self): + return '@%s %s' % (self.flag_type, self.name) + + +class IdentifierTest(googletest.TestCase): + + def testJustIdentifier(self): + a = javascripttokens.JavaScriptToken( + 'abc', javascripttokens.JavaScriptTokenType.IDENTIFIER, 'abc', 1) + + st = statetracker.StateTracker() + st.HandleToken(a, None) + + +class DocCommentTest(googletest.TestCase): + + @staticmethod + def _MakeDocFlagFake(flag_type, name=None): + flag = _FakeDocFlag() + flag.flag_type = flag_type + flag.name = name + return flag + + def testDocFlags(self): + comment = statetracker.DocComment(None) + + a = self._MakeDocFlagFake('param', 'foo') + comment.AddFlag(a) + + b = self._MakeDocFlagFake('param', '') + comment.AddFlag(b) + + c = self._MakeDocFlagFake('param', 'bar') + comment.AddFlag(c) + + self.assertEquals( + ['foo', 'bar'], + comment.ordered_params) + + self.assertEquals( + [a, b, c], + comment.GetDocFlags()) + + def testInvalidate(self): + comment = statetracker.DocComment(None) + + self.assertFalse(comment.invalidated) + self.assertFalse(comment.IsInvalidated()) + + comment.Invalidate() + + self.assertTrue(comment.invalidated) + self.assertTrue(comment.IsInvalidated()) + + def testSuppressionOnly(self): + comment = statetracker.DocComment(None) + + self.assertFalse(comment.SuppressionOnly()) + comment.AddFlag(self._MakeDocFlagFake('suppress')) + self.assertTrue(comment.SuppressionOnly()) + comment.AddFlag(self._MakeDocFlagFake('foo')) + self.assertFalse(comment.SuppressionOnly()) + + def testRepr(self): + comment = statetracker.DocComment(None) + comment.AddFlag(self._MakeDocFlagFake('param', 'foo')) + comment.AddFlag(self._MakeDocFlagFake('param', 'bar')) + + self.assertEquals( + '', + repr(comment)) + + def testDocFlagParam(self): + comment = self._ParseComment(""" + /** + * @param {string} [name] Name of customer. + */""") + flag = comment.GetFlag('param') + self.assertEquals('string', flag.type) + self.assertEquals('[name]', flag.name) + + def _ParseComment(self, script): + """Parse a script that contains one comment and return it.""" + _, comments = testutil.ParseFunctionsAndComments(script) + self.assertEquals(1, len(comments)) + return comments[0] + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/strict_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/strict_test.py new file mode 100755 index 0000000000..75044e8a20 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/strict_test.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python +# Copyright 2013 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tests for gjslint --strict. + +Tests errors that can be thrown by gjslint when in strict mode. +""" + + + +import unittest + +import gflags as flags +import unittest as googletest + +from closure_linter import errors +from closure_linter import runner +from closure_linter.common import erroraccumulator + +flags.FLAGS.strict = True + + +class StrictTest(unittest.TestCase): + """Tests scenarios where strict generates warnings.""" + + def testUnclosedString(self): + """Tests warnings are reported when nothing is disabled. + + b/11450054. + """ + original = [ + 'bug = function() {', + ' (\'foo\'\');', + '};', + '', + ] + + expected = [errors.FILE_DOES_NOT_PARSE, errors.MULTI_LINE_STRING, + errors.FILE_IN_BLOCK] + self._AssertErrors(original, expected) + + def _AssertErrors(self, original, expected_errors): + """Asserts that the error fixer corrects original to expected.""" + + # Trap gjslint's output parse it to get messages added. + error_accumulator = erroraccumulator.ErrorAccumulator() + runner.Run('testing.js', error_accumulator, source=original) + error_nums = [e.code for e in error_accumulator.GetErrors()] + + error_nums.sort() + expected_errors.sort() + self.assertListEqual(error_nums, expected_errors) + +if __name__ == '__main__': + googletest.main() + diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/testutil.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/testutil.py new file mode 100644 index 0000000000..b106ff0258 --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/testutil.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Utility functions for testing gjslint components.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + +__author__ = ('nnaze@google.com (Nathan Naze)') + +import StringIO + +from closure_linter import ecmametadatapass +from closure_linter import javascriptstatetracker +from closure_linter import javascripttokenizer + + +def TokenizeSource(source): + """Convert a source into a string of tokens. + + Args: + source: A source file as a string or file-like object (iterates lines). + + Returns: + The first token of the resulting token stream. + """ + + if isinstance(source, basestring): + source = StringIO.StringIO(source) + + tokenizer = javascripttokenizer.JavaScriptTokenizer() + return tokenizer.TokenizeFile(source) + + +def TokenizeSourceAndRunEcmaPass(source): + """Tokenize a source and run the EcmaMetaDataPass on it. + + Args: + source: A source file as a string or file-like object (iterates lines). + + Returns: + The first token of the resulting token stream. + """ + start_token = TokenizeSource(source) + ecma_pass = ecmametadatapass.EcmaMetaDataPass() + ecma_pass.Process(start_token) + return start_token + + +def ParseFunctionsAndComments(source): + """Run the tokenizer and tracker and return comments and functions found. + + Args: + source: A source file as a string or file-like object (iterates lines). + + Returns: + The functions and comments as a tuple. + """ + start_token = TokenizeSourceAndRunEcmaPass(source) + + tracker = javascriptstatetracker.JavaScriptStateTracker() + + functions = [] + comments = [] + for token in start_token: + tracker.HandleToken(token, tracker.GetLastNonSpaceToken()) + + function = tracker.GetFunction() + if function and function not in functions: + functions.append(function) + + comment = tracker.GetDocComment() + if comment and comment not in comments: + comments.append(comment) + + tracker.HandleAfterToken(token) + + return functions, comments diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/tokenutil.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/tokenutil.py new file mode 100755 index 0000000000..8b5dbe1a9a --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/tokenutil.py @@ -0,0 +1,694 @@ +#!/usr/bin/env python +# +# Copyright 2007 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Token utility functions.""" + +__author__ = ('robbyw@google.com (Robert Walker)', + 'ajp@google.com (Andy Perelson)') + +import copy +import StringIO + +from closure_linter.common import tokens +from closure_linter.javascripttokens import JavaScriptToken +from closure_linter.javascripttokens import JavaScriptTokenType + +# Shorthand +Type = tokens.TokenType + + +def GetFirstTokenInSameLine(token): + """Returns the first token in the same line as token. + + Args: + token: Any token in the line. + + Returns: + The first token in the same line as token. + """ + while not token.IsFirstInLine(): + token = token.previous + return token + + +def GetFirstTokenInPreviousLine(token): + """Returns the first token in the previous line as token. + + Args: + token: Any token in the line. + + Returns: + The first token in the previous line as token, or None if token is on the + first line. + """ + first_in_line = GetFirstTokenInSameLine(token) + if first_in_line.previous: + return GetFirstTokenInSameLine(first_in_line.previous) + + return None + + +def GetLastTokenInSameLine(token): + """Returns the last token in the same line as token. + + Args: + token: Any token in the line. + + Returns: + The last token in the same line as token. + """ + while not token.IsLastInLine(): + token = token.next + return token + + +def GetAllTokensInSameLine(token): + """Returns all tokens in the same line as the given token. + + Args: + token: Any token in the line. + + Returns: + All tokens on the same line as the given token. + """ + first_token = GetFirstTokenInSameLine(token) + last_token = GetLastTokenInSameLine(token) + + tokens_in_line = [] + while first_token != last_token: + tokens_in_line.append(first_token) + first_token = first_token.next + tokens_in_line.append(last_token) + + return tokens_in_line + + +def CustomSearch(start_token, func, end_func=None, distance=None, + reverse=False): + """Returns the first token where func is True within distance of this token. + + Args: + start_token: The token to start searching from + func: The function to call to test a token for applicability + end_func: The function to call to test a token to determine whether to abort + the search. + distance: The number of tokens to look through before failing search. Must + be positive. If unspecified, will search until the end of the token + chain + reverse: When true, search the tokens before this one instead of the tokens + after it + + Returns: + The first token matching func within distance of this token, or None if no + such token is found. + """ + token = start_token + if reverse: + while token and (distance is None or distance > 0): + previous = token.previous + if previous: + if func(previous): + return previous + if end_func and end_func(previous): + return None + + token = previous + if distance is not None: + distance -= 1 + + else: + while token and (distance is None or distance > 0): + next_token = token.next + if next_token: + if func(next_token): + return next_token + if end_func and end_func(next_token): + return None + + token = next_token + if distance is not None: + distance -= 1 + + return None + + +def Search(start_token, token_types, distance=None, reverse=False): + """Returns the first token of type in token_types within distance. + + Args: + start_token: The token to start searching from + token_types: The allowable types of the token being searched for + distance: The number of tokens to look through before failing search. Must + be positive. If unspecified, will search until the end of the token + chain + reverse: When true, search the tokens before this one instead of the tokens + after it + + Returns: + The first token of any type in token_types within distance of this token, or + None if no such token is found. + """ + return CustomSearch(start_token, lambda token: token.IsAnyType(token_types), + None, distance, reverse) + + +def SearchExcept(start_token, token_types, distance=None, reverse=False): + """Returns the first token not of any type in token_types within distance. + + Args: + start_token: The token to start searching from + token_types: The unallowable types of the token being searched for + distance: The number of tokens to look through before failing search. Must + be positive. If unspecified, will search until the end of the token + chain + reverse: When true, search the tokens before this one instead of the tokens + after it + + Returns: + The first token of any type in token_types within distance of this token, or + None if no such token is found. + """ + return CustomSearch(start_token, + lambda token: not token.IsAnyType(token_types), + None, distance, reverse) + + +def SearchUntil(start_token, token_types, end_types, distance=None, + reverse=False): + """Returns the first token of type in token_types before a token of end_type. + + Args: + start_token: The token to start searching from. + token_types: The allowable types of the token being searched for. + end_types: Types of tokens to abort search if we find. + distance: The number of tokens to look through before failing search. Must + be positive. If unspecified, will search until the end of the token + chain + reverse: When true, search the tokens before this one instead of the tokens + after it + + Returns: + The first token of any type in token_types within distance of this token + before any tokens of type in end_type, or None if no such token is found. + """ + return CustomSearch(start_token, lambda token: token.IsAnyType(token_types), + lambda token: token.IsAnyType(end_types), + distance, reverse) + + +def DeleteToken(token): + """Deletes the given token from the linked list. + + Args: + token: The token to delete + """ + # When deleting a token, we do not update the deleted token itself to make + # sure the previous and next pointers are still pointing to tokens which are + # not deleted. Also it is very hard to keep track of all previously deleted + # tokens to update them when their pointers become invalid. So we add this + # flag that any token linked list iteration logic can skip deleted node safely + # when its current token is deleted. + token.is_deleted = True + if token.previous: + token.previous.next = token.next + + if token.next: + token.next.previous = token.previous + + following_token = token.next + while following_token and following_token.metadata.last_code == token: + following_token.metadata.last_code = token.metadata.last_code + following_token = following_token.next + + +def DeleteTokens(token, token_count): + """Deletes the given number of tokens starting with the given token. + + Args: + token: The token to start deleting at. + token_count: The total number of tokens to delete. + """ + for i in xrange(1, token_count): + DeleteToken(token.next) + DeleteToken(token) + + +def InsertTokenBefore(new_token, token): + """Insert new_token before token. + + Args: + new_token: A token to be added to the stream + token: A token already in the stream + """ + new_token.next = token + new_token.previous = token.previous + + new_token.metadata = copy.copy(token.metadata) + + if new_token.IsCode(): + old_last_code = token.metadata.last_code + following_token = token + while (following_token and + following_token.metadata.last_code == old_last_code): + following_token.metadata.last_code = new_token + following_token = following_token.next + + token.previous = new_token + if new_token.previous: + new_token.previous.next = new_token + + if new_token.start_index is None: + if new_token.line_number == token.line_number: + new_token.start_index = token.start_index + else: + previous_token = new_token.previous + if previous_token: + new_token.start_index = (previous_token.start_index + + len(previous_token.string)) + else: + new_token.start_index = 0 + + iterator = new_token.next + while iterator and iterator.line_number == new_token.line_number: + iterator.start_index += len(new_token.string) + iterator = iterator.next + + +def InsertTokenAfter(new_token, token): + """Insert new_token after token. + + Args: + new_token: A token to be added to the stream + token: A token already in the stream + """ + new_token.previous = token + new_token.next = token.next + + new_token.metadata = copy.copy(token.metadata) + + if token.IsCode(): + new_token.metadata.last_code = token + + if new_token.IsCode(): + following_token = token.next + while following_token and following_token.metadata.last_code == token: + following_token.metadata.last_code = new_token + following_token = following_token.next + + token.next = new_token + if new_token.next: + new_token.next.previous = new_token + + if new_token.start_index is None: + if new_token.line_number == token.line_number: + new_token.start_index = token.start_index + len(token.string) + else: + new_token.start_index = 0 + + iterator = new_token.next + while iterator and iterator.line_number == new_token.line_number: + iterator.start_index += len(new_token.string) + iterator = iterator.next + + +def InsertTokensAfter(new_tokens, token): + """Insert multiple tokens after token. + + Args: + new_tokens: An array of tokens to be added to the stream + token: A token already in the stream + """ + # TODO(user): It would be nicer to have InsertTokenAfter defer to here + # instead of vice-versa. + current_token = token + for new_token in new_tokens: + InsertTokenAfter(new_token, current_token) + current_token = new_token + + +def InsertSpaceTokenAfter(token): + """Inserts a space token after the given token. + + Args: + token: The token to insert a space token after + + Returns: + A single space token + """ + space_token = JavaScriptToken(' ', Type.WHITESPACE, token.line, + token.line_number) + InsertTokenAfter(space_token, token) + + +def InsertBlankLineAfter(token): + """Inserts a blank line after the given token. + + Args: + token: The token to insert a blank line after + + Returns: + A single space token + """ + blank_token = JavaScriptToken('', Type.BLANK_LINE, '', + token.line_number + 1) + InsertLineAfter(token, [blank_token]) + + +def InsertLineAfter(token, new_tokens): + """Inserts a new line consisting of new_tokens after the given token. + + Args: + token: The token to insert after. + new_tokens: The tokens that will make up the new line. + """ + insert_location = token + for new_token in new_tokens: + InsertTokenAfter(new_token, insert_location) + insert_location = new_token + + # Update all subsequent line numbers. + next_token = new_tokens[-1].next + while next_token: + next_token.line_number += 1 + next_token = next_token.next + + +def SplitToken(token, position): + """Splits the token into two tokens at position. + + Args: + token: The token to split + position: The position to split at. Will be the beginning of second token. + + Returns: + The new second token. + """ + new_string = token.string[position:] + token.string = token.string[:position] + + new_token = JavaScriptToken(new_string, token.type, token.line, + token.line_number) + InsertTokenAfter(new_token, token) + + return new_token + + +def Compare(token1, token2): + """Compares two tokens and determines their relative order. + + Args: + token1: The first token to compare. + token2: The second token to compare. + + Returns: + A negative integer, zero, or a positive integer as the first token is + before, equal, or after the second in the token stream. + """ + if token2.line_number != token1.line_number: + return token1.line_number - token2.line_number + else: + return token1.start_index - token2.start_index + + +def GoogScopeOrNoneFromStartBlock(token): + """Determines if the given START_BLOCK is part of a goog.scope statement. + + Args: + token: A token of type START_BLOCK. + + Returns: + The goog.scope function call token, or None if such call doesn't exist. + """ + if token.type != JavaScriptTokenType.START_BLOCK: + return None + + # Search for a goog.scope statement, which will be 5 tokens before the + # block. Illustration of the tokens found prior to the start block: + # goog.scope(function() { + # 5 4 3 21 ^ + + maybe_goog_scope = token + for unused_i in xrange(5): + maybe_goog_scope = (maybe_goog_scope.previous if maybe_goog_scope and + maybe_goog_scope.previous else None) + if maybe_goog_scope and maybe_goog_scope.string == 'goog.scope': + return maybe_goog_scope + + +def GetTokenRange(start_token, end_token): + """Returns a list of tokens between the two given, inclusive. + + Args: + start_token: Start token in the range. + end_token: End token in the range. + + Returns: + A list of tokens, in order, from start_token to end_token (including start + and end). Returns none if the tokens do not describe a valid range. + """ + + token_range = [] + token = start_token + + while token: + token_range.append(token) + + if token == end_token: + return token_range + + token = token.next + + +def TokensToString(token_iterable): + """Convert a number of tokens into a string. + + Newlines will be inserted whenever the line_number of two neighboring + strings differ. + + Args: + token_iterable: The tokens to turn to a string. + + Returns: + A string representation of the given tokens. + """ + + buf = StringIO.StringIO() + token_list = list(token_iterable) + if not token_list: + return '' + + line_number = token_list[0].line_number + + for token in token_list: + + while line_number < token.line_number: + line_number += 1 + buf.write('\n') + + if line_number > token.line_number: + line_number = token.line_number + buf.write('\n') + + buf.write(token.string) + + return buf.getvalue() + + +def GetPreviousCodeToken(token): + """Returns the code token before the specified token. + + Args: + token: A token. + + Returns: + The code token before the specified token or None if no such token + exists. + """ + + return CustomSearch( + token, + lambda t: t and t.type not in JavaScriptTokenType.NON_CODE_TYPES, + reverse=True) + + +def GetNextCodeToken(token): + """Returns the next code token after the specified token. + + Args: + token: A token. + + Returns: + The next code token after the specified token or None if no such token + exists. + """ + + return CustomSearch( + token, + lambda t: t and t.type not in JavaScriptTokenType.NON_CODE_TYPES, + reverse=False) + + +def GetIdentifierStart(token): + """Returns the first token in an identifier. + + Given a token which is part of an identifier, returns the token at the start + of the identifier. + + Args: + token: A token which is part of an identifier. + + Returns: + The token at the start of the identifier or None if the identifier was not + of the form 'a.b.c' (e.g. "['a']['b'].c"). + """ + + start_token = token + previous_code_token = GetPreviousCodeToken(token) + + while (previous_code_token and ( + previous_code_token.IsType(JavaScriptTokenType.IDENTIFIER) or + _IsDot(previous_code_token))): + start_token = previous_code_token + previous_code_token = GetPreviousCodeToken(previous_code_token) + + if _IsDot(start_token): + return None + + return start_token + + +def GetIdentifierForToken(token): + """Get the symbol specified by a token. + + Given a token, this function additionally concatenates any parts of an + identifying symbol being identified that are split by whitespace or a + newline. + + The function will return None if the token is not the first token of an + identifier. + + Args: + token: The first token of a symbol. + + Returns: + The whole symbol, as a string. + """ + + # Search backward to determine if this token is the first token of the + # identifier. If it is not the first token, return None to signal that this + # token should be ignored. + prev_token = token.previous + while prev_token: + if (prev_token.IsType(JavaScriptTokenType.IDENTIFIER) or + _IsDot(prev_token)): + return None + + if (prev_token.IsType(tokens.TokenType.WHITESPACE) or + prev_token.IsAnyType(JavaScriptTokenType.COMMENT_TYPES)): + prev_token = prev_token.previous + else: + break + + # A "function foo()" declaration. + if token.type is JavaScriptTokenType.FUNCTION_NAME: + return token.string + + # A "var foo" declaration (if the previous token is 'var') + previous_code_token = GetPreviousCodeToken(token) + + if previous_code_token and previous_code_token.IsKeyword('var'): + return token.string + + # Otherwise, this is potentially a namespaced (goog.foo.bar) identifier that + # could span multiple lines or be broken up by whitespace. We need + # to concatenate. + identifier_types = set([ + JavaScriptTokenType.IDENTIFIER, + JavaScriptTokenType.SIMPLE_LVALUE + ]) + + assert token.type in identifier_types + + # Start with the first token + symbol_tokens = [token] + + if token.next: + for t in token.next: + last_symbol_token = symbol_tokens[-1] + + # An identifier is part of the previous symbol if it has a trailing + # dot. + if t.type in identifier_types: + if last_symbol_token.string.endswith('.'): + symbol_tokens.append(t) + continue + else: + break + + # A dot is part of the previous symbol if it does not have a trailing + # dot. + if _IsDot(t): + if not last_symbol_token.string.endswith('.'): + symbol_tokens.append(t) + continue + else: + break + + # Skip any whitespace + if t.type in JavaScriptTokenType.NON_CODE_TYPES: + continue + + # This is the end of the identifier. Stop iterating. + break + + if symbol_tokens: + return ''.join([t.string for t in symbol_tokens]) + + +def GetStringAfterToken(token): + """Get string after token. + + Args: + token: Search will be done after this token. + + Returns: + String if found after token else None (empty string will also + return None). + + Search until end of string as in case of empty string Type.STRING_TEXT is not + present/found and don't want to return next string. + E.g. + a = ''; + b = 'test'; + When searching for string after 'a' if search is not limited by end of string + then it will return 'test' which is not desirable as there is a empty string + before that. + + This will return None for cases where string is empty or no string found + as in both cases there is no Type.STRING_TEXT. + """ + string_token = SearchUntil(token, JavaScriptTokenType.STRING_TEXT, + [JavaScriptTokenType.SINGLE_QUOTE_STRING_END, + JavaScriptTokenType.DOUBLE_QUOTE_STRING_END]) + if string_token: + return string_token.string + else: + return None + + +def _IsDot(token): + """Whether the token represents a "dot" operator (foo.bar).""" + return token.type is tokens.TokenType.NORMAL and token.string == '.' diff --git a/third_party/gjslint/closure_linter-2.3.13/closure_linter/tokenutil_test.py b/third_party/gjslint/closure_linter-2.3.13/closure_linter/tokenutil_test.py new file mode 100644 index 0000000000..d5af9fac4a --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/closure_linter/tokenutil_test.py @@ -0,0 +1,289 @@ +#!/usr/bin/env python +# +# Copyright 2012 The Closure Linter Authors. All Rights Reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for the scopeutil module.""" + +# Allow non-Google copyright +# pylint: disable=g-bad-file-header + +__author__ = ('nnaze@google.com (Nathan Naze)') + +import unittest as googletest + +from closure_linter import ecmametadatapass +from closure_linter import javascripttokens +from closure_linter import testutil +from closure_linter import tokenutil + + +class FakeToken(object): + pass + + +class TokenUtilTest(googletest.TestCase): + + def testGetTokenRange(self): + + a = FakeToken() + b = FakeToken() + c = FakeToken() + d = FakeToken() + e = FakeToken() + + a.next = b + b.next = c + c.next = d + + self.assertEquals([a, b, c, d], tokenutil.GetTokenRange(a, d)) + + # This is an error as e does not come after a in the token chain. + self.assertRaises(Exception, lambda: tokenutil.GetTokenRange(a, e)) + + def testTokensToString(self): + + a = FakeToken() + b = FakeToken() + c = FakeToken() + d = FakeToken() + e = FakeToken() + + a.string = 'aaa' + b.string = 'bbb' + c.string = 'ccc' + d.string = 'ddd' + e.string = 'eee' + + a.line_number = 5 + b.line_number = 6 + c.line_number = 6 + d.line_number = 10 + e.line_number = 11 + + self.assertEquals( + 'aaa\nbbbccc\n\n\n\nddd\neee', + tokenutil.TokensToString([a, b, c, d, e])) + + self.assertEquals( + 'ddd\neee\naaa\nbbbccc', + tokenutil.TokensToString([d, e, a, b, c]), + 'Neighboring tokens not in line_number order should have a newline ' + 'between them.') + + def testGetPreviousCodeToken(self): + + tokens = testutil.TokenizeSource(""" +start1. // comment + /* another comment */ + end1 +""") + + def _GetTokenStartingWith(token_starts_with): + for t in tokens: + if t.string.startswith(token_starts_with): + return t + + self.assertEquals( + None, + tokenutil.GetPreviousCodeToken(_GetTokenStartingWith('start1'))) + + self.assertEquals( + 'start1.', + tokenutil.GetPreviousCodeToken(_GetTokenStartingWith('end1')).string) + + def testGetNextCodeToken(self): + + tokens = testutil.TokenizeSource(""" +start1. // comment + /* another comment */ + end1 +""") + + def _GetTokenStartingWith(token_starts_with): + for t in tokens: + if t.string.startswith(token_starts_with): + return t + + self.assertEquals( + 'end1', + tokenutil.GetNextCodeToken(_GetTokenStartingWith('start1')).string) + + self.assertEquals( + None, + tokenutil.GetNextCodeToken(_GetTokenStartingWith('end1'))) + + def testGetIdentifierStart(self): + + tokens = testutil.TokenizeSource(""" +start1 . // comment + prototype. /* another comment */ + end1 + +['edge'][case].prototype. + end2 = function() {} +""") + + def _GetTokenStartingWith(token_starts_with): + for t in tokens: + if t.string.startswith(token_starts_with): + return t + + self.assertEquals( + 'start1', + tokenutil.GetIdentifierStart(_GetTokenStartingWith('end1')).string) + + self.assertEquals( + 'start1', + tokenutil.GetIdentifierStart(_GetTokenStartingWith('start1')).string) + + self.assertEquals( + None, + tokenutil.GetIdentifierStart(_GetTokenStartingWith('end2'))) + + def testInsertTokenBefore(self): + + self.AssertInsertTokenAfterBefore(False) + + def testInsertTokenAfter(self): + + self.AssertInsertTokenAfterBefore(True) + + def AssertInsertTokenAfterBefore(self, after): + + new_token = javascripttokens.JavaScriptToken( + 'a', javascripttokens.JavaScriptTokenType.IDENTIFIER, 1, 1) + + existing_token1 = javascripttokens.JavaScriptToken( + 'var', javascripttokens.JavaScriptTokenType.KEYWORD, 1, 1) + existing_token1.start_index = 0 + existing_token1.metadata = ecmametadatapass.EcmaMetaData() + + existing_token2 = javascripttokens.JavaScriptToken( + ' ', javascripttokens.JavaScriptTokenType.WHITESPACE, 1, 1) + existing_token2.start_index = 3 + existing_token2.metadata = ecmametadatapass.EcmaMetaData() + existing_token2.metadata.last_code = existing_token1 + + existing_token1.next = existing_token2 + existing_token2.previous = existing_token1 + + if after: + tokenutil.InsertTokenAfter(new_token, existing_token1) + else: + tokenutil.InsertTokenBefore(new_token, existing_token2) + + self.assertEquals(existing_token1, new_token.previous) + self.assertEquals(existing_token2, new_token.next) + + self.assertEquals(new_token, existing_token1.next) + self.assertEquals(new_token, existing_token2.previous) + + self.assertEquals(existing_token1, new_token.metadata.last_code) + self.assertEquals(new_token, existing_token2.metadata.last_code) + + self.assertEquals(0, existing_token1.start_index) + self.assertEquals(3, new_token.start_index) + self.assertEquals(4, existing_token2.start_index) + + def testGetIdentifierForToken(self): + + tokens = testutil.TokenizeSource(""" +start1.abc.def.prototype. + onContinuedLine + +(start2.abc.def + .hij.klm + .nop) + +start3.abc.def + .hij = function() {}; + +// An absurd multi-liner. +start4.abc.def. + hij. + klm = function() {}; + +start5 . aaa . bbb . ccc + shouldntBePartOfThePreviousSymbol + +start6.abc.def ghi.shouldntBePartOfThePreviousSymbol + +var start7 = 42; + +function start8() { + +} + +start9.abc. // why is there a comment here? + def /* another comment */ + shouldntBePart + +start10.abc // why is there a comment here? + .def /* another comment */ + shouldntBePart + +start11.abc. middle1.shouldNotBeIdentifier +""") + + def _GetTokenStartingWith(token_starts_with): + for t in tokens: + if t.string.startswith(token_starts_with): + return t + + self.assertEquals( + 'start1.abc.def.prototype.onContinuedLine', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start1'))) + + self.assertEquals( + 'start2.abc.def.hij.klm.nop', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start2'))) + + self.assertEquals( + 'start3.abc.def.hij', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start3'))) + + self.assertEquals( + 'start4.abc.def.hij.klm', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start4'))) + + self.assertEquals( + 'start5.aaa.bbb.ccc', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start5'))) + + self.assertEquals( + 'start6.abc.def', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start6'))) + + self.assertEquals( + 'start7', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start7'))) + + self.assertEquals( + 'start8', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start8'))) + + self.assertEquals( + 'start9.abc.def', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start9'))) + + self.assertEquals( + 'start10.abc.def', + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('start10'))) + + self.assertIsNone( + tokenutil.GetIdentifierForToken(_GetTokenStartingWith('middle1'))) + + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/closure_linter-2.3.13/setup.py b/third_party/gjslint/closure_linter-2.3.13/setup.py new file mode 100755 index 0000000000..0f0240153d --- /dev/null +++ b/third_party/gjslint/closure_linter-2.3.13/setup.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# +# Copyright 2010 The Closure Linter Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +try: + from setuptools import setup +except ImportError: + from distutils.core import setup + +setup(name='closure_linter', + version='2.3.13', + description='Closure Linter', + license='Apache', + author='The Closure Linter Authors', + author_email='opensource@google.com', + url='http://code.google.com/p/closure-linter', + install_requires=['python-gflags'], + package_dir={'closure_linter': 'closure_linter'}, + packages=['closure_linter', 'closure_linter.common'], + entry_points = { + 'console_scripts': [ + 'gjslint = closure_linter.gjslint:main', + 'fixjsstyle = closure_linter.fixjsstyle:main' + ] + } +) diff --git a/third_party/gjslint/gjslint b/third_party/gjslint/gjslint new file mode 100755 index 0000000000..da645069b2 --- /dev/null +++ b/third_party/gjslint/gjslint @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""A shim to wrap around gjslint.py without installing it.""" + +import os +import sys + +dir = os.path.dirname(__file__) + +gflags_path = os.path.join(dir, 'python-gflags-2.0') +linter_path = os.path.join(dir, 'closure_linter-2.3.13') + +sys.path.append(gflags_path) +sys.path.append(linter_path) + +from closure_linter import gjslint + +# Steal gjslint's doc string, which shows up in --help output. +sys.modules["__main__"].__doc__ = gjslint.__doc__ + +gjslint.main() diff --git a/third_party/gjslint/python-gflags-2.0/AUTHORS b/third_party/gjslint/python-gflags-2.0/AUTHORS new file mode 100644 index 0000000000..887918bd00 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/AUTHORS @@ -0,0 +1,2 @@ +google-gflags@googlegroups.com + diff --git a/third_party/gjslint/python-gflags-2.0/ChangeLog b/third_party/gjslint/python-gflags-2.0/ChangeLog new file mode 100644 index 0000000000..87732a2b97 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/ChangeLog @@ -0,0 +1,62 @@ +Wed Jan 18 13:57:39 2012 Google Inc. + + * python-gflags: version 2.0 + * No changes from version 1.8. + +Wed Jan 18 11:54:03 2012 Google Inc. + + * python-gflags: version 1.8 + * Don't raise DuplicateFlag when re-importing a module (mmcdonald) + * Changed the 'official' python-gflags email in setup.py/etc + * Changed copyright text to reflect Google's relinquished ownership + +Tue Dec 20 17:10:41 2011 Google Inc. + + * python-gflags: version 1.7 + * Prepare gflags for python 3.x, keeping 2.4 compatibility (twouters) + * If output is a tty, use terminal's width to wrap help-text (wiesmann) + * PORTING: Fix ImportError for non-Unix platforms (kdeus) + * PORTING: Run correctly when termios isn't available (shines) + * Add unicode support to flags (csilvers) + +Fri Jul 29 12:24:08 2011 Google Inc. + + * python-gflags: version 1.6 + * Document FlagValues.UseGnuGetOpt (garymm) + * replace fchmod with chmod to work on python 2.4 (mshields) + * Fix bug in flag decl reporting for dup flags (craigcitro) + * Add multi_float, and tests for multi_float/int (simonf) + * Make flagfiles expand in place, to follow docs (dmlynch) + * Raise exception if --flagfile can't be read (tlim) + +Wed Jan 26 13:50:46 2011 Google Inc. + + * python-gflags: version 1.5.1 + * Fix manifest and setup.py to include new files + +Mon Jan 24 16:58:10 2011 Google Inc. + + * python-gflags: version 1.5 + * Add support for flag validators (olexiy) + * Better reporting on UnrecognizedFlagError (sorenj) + * Cache ArgumentParser, to save space (tmarek) + +Wed Oct 13 17:40:12 2010 Google Inc. + + * python-gflags: version 1.4 + * Unregister per-command flags after running the command (dnr) + * Allow key-flags to work with special flags (salcianu) + * Allow printing flags of a specific module (mikecurtis) + * BUGFIX: Fix an error message for float flags (olexiy) + * BUGFIX: Can now import while defining flags (salcianu) + * BUGFIX: Fix flagfile parsing in python (chronos) + * DOC: Better explain the format of --helpxml output (salcianu) + * DOC: Better error message on parse failure (tstromberg) + * Better test coverage under python 2.2 (mshields) + * Added a Makefile for building the packages. + +Mon Jan 4 18:46:29 2010 Tim 'mithro' Ansell + + * python-gflags: version 1.3 + * Fork from the C++ package (google-gflags 1.3) + * Add debian packaging diff --git a/third_party/gjslint/python-gflags-2.0/LICENSE.txt b/third_party/gjslint/python-gflags-2.0/LICENSE.txt new file mode 100644 index 0000000000..d15b0c2413 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright (c) 2006, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/third_party/gjslint/python-gflags-2.0/MANIFEST.in b/third_party/gjslint/python-gflags-2.0/MANIFEST.in new file mode 100644 index 0000000000..17851bfa77 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/MANIFEST.in @@ -0,0 +1,19 @@ +include AUTHORS +include COPYING +include ChangeLog +include MANIFEST.in +include Makefile +include NEWS +include README +include debian/README +include debian/changelog +include debian/compat +include debian/control +include debian/copyright +include debian/docs +include debian/rules +include gflags.py +include gflags2man.py +include gflags_validators.py +include setup.py +recursive-include tests *.py diff --git a/third_party/gjslint/python-gflags-2.0/Makefile b/third_party/gjslint/python-gflags-2.0/Makefile new file mode 100644 index 0000000000..6627c32a5e --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/Makefile @@ -0,0 +1,69 @@ + +prep: + @echo + # Install needed packages + sudo apt-get install subversion fakeroot python-setuptools python-subversion + # + @echo + # Check that the person has .pypirc + @if [ ! -e ~/.pypirc ]; then \ + echo "Please create a ~/.pypirc with the following contents:"; \ + echo "[server-login]"; \ + echo "username:google_opensource"; \ + echo "password:"; \ + fi + # + @echo + # FIXME(tansell): Check that the person has .dputrc for PPA + +clean: + # Clean up any build files. + python setup.py clean --all + # + # Clean up the debian stuff + fakeroot ./debian/rules clean + # + # Clean up everything else + rm MANIFEST || true + rm -rf build-* + # + # Clean up the egg files + rm -rf *egg* + # + # Remove dist + rm -rf dist + +dist: + # Generate the tarball based on MANIFEST.in + python setup.py sdist + # + # Build the debian packages + fakeroot ./debian/rules binary + mv ../python-gflags*.deb ./dist/ + # + # Build the python Egg + python setup.py bdist_egg + # + @echo + @echo "Files to upload:" + @echo "--------------------------" + @ls -l ./dist/ + +push: + # Send the updates to svn + # Upload the source package to code.google.com + - /home/build/opensource/tools/googlecode_upload.py \ + -p python-gflags ./dist/* + # + # Upload the package to PyPi + - python setup.py sdist upload + - python setup.py bdist_egg upload + # + # Upload the package to the ppa + # FIXME(tansell): dput should run here + +check: + # Run all the tests. + for test in tests/*.py; do PYTHONPATH=. python $$test || exit 1; done + +.PHONY: prep dist clean push check diff --git a/third_party/gjslint/python-gflags-2.0/NEWS b/third_party/gjslint/python-gflags-2.0/NEWS new file mode 100644 index 0000000000..8aaa72bf30 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/NEWS @@ -0,0 +1,78 @@ +== 18 January 2012 == + +[Prependum:] I just realized I should have named the new version 2.0, +to reflect the new ownership and status as a community run project. +Not too late, I guess. I've just released python-gflags 2.0, which is +identical to python-gflags 1.8 except for the version number. + +I've just released python-gflags 1.8. This fixes a bug, allowing +modules defining flags to be re-imported without raising duplicate +flag errors. + +Administrative note: In the coming weeks, I'll be stepping down as +maintainer for the python-gflags project, and as part of that Google +is relinquishing ownership of the project; it will now be entirely +community run. The remaining +[http://python-gflags.googlecode.com/svn/tags/python-gflags-1.8/ChangeLog changes] +in this release reflect that shift. + + +=== 20 December 2011 === + +I've just released python-gflags 1.7. The major change here is +improved unicode support, in both flag default values and +help-strings. We've also made big steps toward making gflags work +with python 3.x (while keeping 2.4 compatibility), and improving +--help output in the common case where output is a tty. + +For a full list of changes since last release, see the +[http://python-gflags.googlecode.com/svn/tags/python-gflags-1.7/ChangeLog ChangeLog]. + +=== 29 July 2011 === + +I've just released python-gflags 1.6. This release has only minor +changes, including support for multi_float flags. The full list of +changes is in the +[http://python-gflags.googlecode.com/svn/tags/python-gflags-1.6/ChangeLog ChangeLog]. + +The major change with this release is procedural: I've changed the +internal tools used to integrate Google-supplied patches for gflags +into the opensource release. These new tools should result in more +frequent updates with better change descriptions. They will also +result in future `ChangeLog` entries being much more verbose (for +better or for worse). + +=== 26 January 2011 === + +I've just released python-gflags 1.5.1. I had improperly packaged +python-gflags 1.5, so it probably doesn't work. All users who have +updated to python-gflags 1.5 are encouraged to update again to 1.5.1. + +=== 24 January 2011 === + +I've just released python-gflags 1.5. This release adds support for +flag verifiers: small functions you can associate with flags, that are +called whenever the flag value is set or modified, and can verify that +the new value is legal. It also has other, minor changes, described +in the +[http://python-gflags.googlecode.com/svn/tags/python-gflags-1.5/ChangeLog ChangeLog]. + +=== 11 October 2010 === + +I've just released python-gflags 1.4. This release has only minor +changes from 1.3, including support for printing flags of a specific +module, allowing key-flags to work with special flags, somewhat better +error messaging, and +[http://python-gflags.googlecode.com/svn/tags/python-gflags-1.4/ChangeLog so forth]. +If 1.3 is working well for you, there's no particular reason to upgrade. + +=== 4 January 2010 === + +I just released python-gflags 1.3. This is the first python-gflags +release; it is version 1.3 because this code is forked from the 1.3 +release of google-gflags. + +I don't have a tarball or .deb file up quite yet, so for now you will +have to get the source files by browsing under the 'source' +tag. Downloadable files will be available soon. + diff --git a/third_party/gjslint/python-gflags-2.0/PKG-INFO b/third_party/gjslint/python-gflags-2.0/PKG-INFO new file mode 100644 index 0000000000..faab7198f2 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/PKG-INFO @@ -0,0 +1,10 @@ +Metadata-Version: 1.0 +Name: python-gflags +Version: 2.0 +Summary: Google Commandline Flags Module +Home-page: http://code.google.com/p/python-gflags +Author: Google Inc. and others +Author-email: google-gflags@googlegroups.com +License: BSD +Description: UNKNOWN +Platform: UNKNOWN diff --git a/third_party/gjslint/python-gflags-2.0/README b/third_party/gjslint/python-gflags-2.0/README new file mode 100644 index 0000000000..81daa7ab49 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/README @@ -0,0 +1,23 @@ +This repository contains a python implementation of the Google commandline +flags module. + + GFlags defines a *distributed* command line system, replacing systems like + getopt(), optparse and manual argument processing. Rather than an application + having to define all flags in or near main(), each python module defines flags + that are useful to it. When one python module imports another, it gains + access to the other's flags. + + It includes the ability to define flag types (boolean, float, interger, list), + autogeneration of help (in both human and machine readable format) and reading + arguments from a file. It also includes the ability to automatically generate + man pages from the help flags. + +Documentation for implementation is at the top of gflags.py file. + +To install the python module, run + python ./setup.py install + +When you install this library, you also get a helper application, +gflags2man.py, installed into /usr/local/bin. You can run gflags2man.py to +create an instant man page, with all the commandline flags and their docs, for +any C++ or python program you've written using the gflags library. diff --git a/third_party/gjslint/python-gflags-2.0/debian/README b/third_party/gjslint/python-gflags-2.0/debian/README new file mode 100644 index 0000000000..57becfda75 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/debian/README @@ -0,0 +1,7 @@ +The list of files here isn't complete. For a step-by-step guide on +how to set this package up correctly, check out + http://www.debian.org/doc/maint-guide/ + +Most of the files that are in this directory are boilerplate. +However, you may need to change the list of binary-arch dependencies +in 'rules'. diff --git a/third_party/gjslint/python-gflags-2.0/debian/changelog b/third_party/gjslint/python-gflags-2.0/debian/changelog new file mode 100644 index 0000000000..5e6457e2d7 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/debian/changelog @@ -0,0 +1,54 @@ +python-gflags (2.0-1) unstable; urgency=low + + * New upstream release. + + -- Google Inc. Wed, 18 Jan 2012 13:57:39 -0800 + +python-gflags (1.8-1) unstable; urgency=low + + * New upstream release. + + -- Google Inc. Wed, 18 Jan 2012 11:54:03 -0800 + +python-gflags (1.7-1) unstable; urgency=low + + * New upstream release. + + -- Google Inc. Tue, 20 Dec 2011 17:10:41 -0800 + +python-gflags (1.6-1) unstable; urgency=low + + * New upstream release. + + -- Google Inc. Fri, 29 Jul 2011 12:24:08 -0700 + +python-gflags (1.5.1-1) unstable; urgency=low + + * New upstream release (fixes manifest and setup.py files) + + -- Google Inc. Wed, 26 Jan 2011 13:50:46 -0800 + +python-gflags (1.5-1) unstable; urgency=low + + * New upstream release. + + -- Google Inc. Mon, 24 Jan 2011 16:58:10 -0800 + +python-gflags (1.4-1) unstable; urgency=low + + * New upstream release. + + -- Google Inc. Wed, 13 Oct 2010 17:40:12 -0700 + +python-gflags (1.3-2) unstable; urgency=low + + * Fixed man-page generation. + + -- Tim 'mithro' Ansell Mon, 07 Jan 2010 13:46:10 +1100 + +python-gflags (1.3-1) unstable; urgency=low + + * Initial release. + * Packaging based on gflags 1.3 + + -- Tim 'mithro' Ansell Mon, 04 Jan 2010 18:46:10 -0800 diff --git a/third_party/gjslint/python-gflags-2.0/debian/compat b/third_party/gjslint/python-gflags-2.0/debian/compat new file mode 100644 index 0000000000..7ed6ff82de --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/debian/compat @@ -0,0 +1 @@ +5 diff --git a/third_party/gjslint/python-gflags-2.0/debian/control b/third_party/gjslint/python-gflags-2.0/debian/control new file mode 100644 index 0000000000..4a9b15942a --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/debian/control @@ -0,0 +1,26 @@ +Source: python-gflags +Section: python +XS-Python-Version: all +Priority: optional +Maintainer: Craig Silverstein +Build-Depends-Indep: python-central (>= 0.5.6), python-setuptools (>= 0.6b3-1), python-all +Build-Depends: debhelper (>= 5.0.38) +Standards-Version: 3.7.2 + +Package: python-gflags +Architecture: all +Depends: ${python:Depends} +XB-Python-Version: ${python:Versions} +Description: A Python implementation of the Google commandline flags module + . + GFlags defines a *distributed* command line system, replacing systems like + getopt(), optparse and manual argument processing. Rather than an application + having to define all flags in or near main(), each Python module defines flags + that are useful to it. When one Python module imports another, it gains + access to the other's flags. + . + It includes the ability to define flag types (boolean, float, interger, list), + autogeneration of help (in both human and machine readable format) and reading + arguments from a file. It also includes the ability to automatically generate + man pages from the help flags. + diff --git a/third_party/gjslint/python-gflags-2.0/debian/copyright b/third_party/gjslint/python-gflags-2.0/debian/copyright new file mode 100644 index 0000000000..7d27d62fb4 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/debian/copyright @@ -0,0 +1,41 @@ +This package was debianized by Craig Silverstein on +Wed, 18 Jan 2012 13:57:39 -0800. + +It was downloaded from http://code.google.com/p/python-gflags/downloads/list + +Upstream Author: Google Inc. and others +Copyright: Google Inc. and others + +License: + +Copyright (c) 2006, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The Debian packaging is (C) 2011, Tim 'mithro' Ansell and +is licensed under the above. diff --git a/third_party/gjslint/python-gflags-2.0/debian/docs b/third_party/gjslint/python-gflags-2.0/debian/docs new file mode 100644 index 0000000000..6f12db5084 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/debian/docs @@ -0,0 +1,2 @@ +AUTHORS +README diff --git a/third_party/gjslint/python-gflags-2.0/debian/rules b/third_party/gjslint/python-gflags-2.0/debian/rules new file mode 100755 index 0000000000..0840b5ef8c --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/debian/rules @@ -0,0 +1,62 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +PYTHON := /usr/bin/python +#PYVER := $(shell $(PYTHON) -c 'import sys; print sys.version[:3]') +PYVERS = $(shell pyversions -vr) + +build: $(PYVERS:%=build-python%) + touch $@ + +build-python%: + dh_testdir + python$* setup.py build + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-python* + rm -rf build + -find . -name '*.py[co]' | xargs rm -f + dh_clean + +install: build $(PYVERS:%=install-python%) + +install-python%: + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + python$* setup.py install --root=$(CURDIR)/debian/python-gflags --prefix=/usr + # Scripts should not have a .py on the end of them + mv $(CURDIR)/debian/python-gflags/usr/bin/gflags2man.py $(CURDIR)/debian/python-gflags/usr/bin/gflags2man + # Generate a man file for gflags2man + mkdir -p $(CURDIR)/debian/python-gflags/usr/share/man/man1 + PYTHONPATH=$(CURDIR)/debian/.. python$* gflags2man.py --dest_dir $(CURDIR)/debian/python-gflags/usr/share/man/man1 $(CURDIR)/debian/python-gflags/usr/bin/gflags2man + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs -k ChangeLog + dh_installdocs + dh_pycentral + dh_compress -X.py + dh_fixperms + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture-dependent files here. +binary-arch: build install +# We have nothing to do by default. + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/third_party/gjslint/python-gflags-2.0/gflags.py b/third_party/gjslint/python-gflags-2.0/gflags.py new file mode 100644 index 0000000000..822256a6f8 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/gflags.py @@ -0,0 +1,2862 @@ +#!/usr/bin/env python +# +# Copyright (c) 2002, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# --- +# Author: Chad Lester +# Design and style contributions by: +# Amit Patel, Bogdan Cocosel, Daniel Dulitz, Eric Tiedemann, +# Eric Veach, Laurence Gonsalves, Matthew Springer +# Code reorganized a bit by Craig Silverstein + +"""This module is used to define and parse command line flags. + +This module defines a *distributed* flag-definition policy: rather than +an application having to define all flags in or near main(), each python +module defines flags that are useful to it. When one python module +imports another, it gains access to the other's flags. (This is +implemented by having all modules share a common, global registry object +containing all the flag information.) + +Flags are defined through the use of one of the DEFINE_xxx functions. +The specific function used determines how the flag is parsed, checked, +and optionally type-converted, when it's seen on the command line. + + +IMPLEMENTATION: DEFINE_* creates a 'Flag' object and registers it with a +'FlagValues' object (typically the global FlagValues FLAGS, defined +here). The 'FlagValues' object can scan the command line arguments and +pass flag arguments to the corresponding 'Flag' objects for +value-checking and type conversion. The converted flag values are +available as attributes of the 'FlagValues' object. + +Code can access the flag through a FlagValues object, for instance +gflags.FLAGS.myflag. Typically, the __main__ module passes the command +line arguments to gflags.FLAGS for parsing. + +At bottom, this module calls getopt(), so getopt functionality is +supported, including short- and long-style flags, and the use of -- to +terminate flags. + +Methods defined by the flag module will throw 'FlagsError' exceptions. +The exception argument will be a human-readable string. + + +FLAG TYPES: This is a list of the DEFINE_*'s that you can do. All flags +take a name, default value, help-string, and optional 'short' name +(one-letter name). Some flags have other arguments, which are described +with the flag. + +DEFINE_string: takes any input, and interprets it as a string. + +DEFINE_bool or +DEFINE_boolean: typically does not take an argument: say --myflag to + set FLAGS.myflag to true, or --nomyflag to set + FLAGS.myflag to false. Alternately, you can say + --myflag=true or --myflag=t or --myflag=1 or + --myflag=false or --myflag=f or --myflag=0 + +DEFINE_float: takes an input and interprets it as a floating point + number. Takes optional args lower_bound and upper_bound; + if the number specified on the command line is out of + range, it will raise a FlagError. + +DEFINE_integer: takes an input and interprets it as an integer. Takes + optional args lower_bound and upper_bound as for floats. + +DEFINE_enum: takes a list of strings which represents legal values. If + the command-line value is not in this list, raise a flag + error. Otherwise, assign to FLAGS.flag as a string. + +DEFINE_list: Takes a comma-separated list of strings on the commandline. + Stores them in a python list object. + +DEFINE_spaceseplist: Takes a space-separated list of strings on the + commandline. Stores them in a python list object. + Example: --myspacesepflag "foo bar baz" + +DEFINE_multistring: The same as DEFINE_string, except the flag can be + specified more than once on the commandline. The + result is a python list object (list of strings), + even if the flag is only on the command line once. + +DEFINE_multi_int: The same as DEFINE_integer, except the flag can be + specified more than once on the commandline. The + result is a python list object (list of ints), even if + the flag is only on the command line once. + + +SPECIAL FLAGS: There are a few flags that have special meaning: + --help prints a list of all the flags in a human-readable fashion + --helpshort prints a list of all key flags (see below). + --helpxml prints a list of all flags, in XML format. DO NOT parse + the output of --help and --helpshort. Instead, parse + the output of --helpxml. For more info, see + "OUTPUT FOR --helpxml" below. + --flagfile=foo read flags from file foo. + --undefok=f1,f2 ignore unrecognized option errors for f1,f2. + For boolean flags, you should use --undefok=boolflag, and + --boolflag and --noboolflag will be accepted. Do not use + --undefok=noboolflag. + -- as in getopt(), terminates flag-processing + + +FLAGS VALIDATORS: If your program: + - requires flag X to be specified + - needs flag Y to match a regular expression + - or requires any more general constraint to be satisfied +then validators are for you! + +Each validator represents a constraint over one flag, which is enforced +starting from the initial parsing of the flags and until the program +terminates. + +Also, lower_bound and upper_bound for numerical flags are enforced using flag +validators. + +Howto: +If you want to enforce a constraint over one flag, use + +gflags.RegisterValidator(flag_name, + checker, + message='Flag validation failed', + flag_values=FLAGS) + +After flag values are initially parsed, and after any change to the specified +flag, method checker(flag_value) will be executed. If constraint is not +satisfied, an IllegalFlagValue exception will be raised. See +RegisterValidator's docstring for a detailed explanation on how to construct +your own checker. + + +EXAMPLE USAGE: + +FLAGS = gflags.FLAGS + +gflags.DEFINE_integer('my_version', 0, 'Version number.') +gflags.DEFINE_string('filename', None, 'Input file name', short_name='f') + +gflags.RegisterValidator('my_version', + lambda value: value % 2 == 0, + message='--my_version must be divisible by 2') +gflags.MarkFlagAsRequired('filename') + + +NOTE ON --flagfile: + +Flags may be loaded from text files in addition to being specified on +the commandline. + +Any flags you don't feel like typing, throw them in a file, one flag per +line, for instance: + --myflag=myvalue + --nomyboolean_flag +You then specify your file with the special flag '--flagfile=somefile'. +You CAN recursively nest flagfile= tokens OR use multiple files on the +command line. Lines beginning with a single hash '#' or a double slash +'//' are comments in your flagfile. + +Any flagfile= will be interpreted as having a relative path from +the current working directory rather than from the place the file was +included from: + myPythonScript.py --flagfile=config/somefile.cfg + +If somefile.cfg includes further --flagfile= directives, these will be +referenced relative to the original CWD, not from the directory the +including flagfile was found in! + +The caveat applies to people who are including a series of nested files +in a different dir than they are executing out of. Relative path names +are always from CWD, not from the directory of the parent include +flagfile. We do now support '~' expanded directory names. + +Absolute path names ALWAYS work! + + +EXAMPLE USAGE: + + + FLAGS = gflags.FLAGS + + # Flag names are globally defined! So in general, we need to be + # careful to pick names that are unlikely to be used by other libraries. + # If there is a conflict, we'll get an error at import time. + gflags.DEFINE_string('name', 'Mr. President', 'your name') + gflags.DEFINE_integer('age', None, 'your age in years', lower_bound=0) + gflags.DEFINE_boolean('debug', False, 'produces debugging output') + gflags.DEFINE_enum('gender', 'male', ['male', 'female'], 'your gender') + + def main(argv): + try: + argv = FLAGS(argv) # parse flags + except gflags.FlagsError, e: + print '%s\\nUsage: %s ARGS\\n%s' % (e, sys.argv[0], FLAGS) + sys.exit(1) + if FLAGS.debug: print 'non-flag arguments:', argv + print 'Happy Birthday', FLAGS.name + if FLAGS.age is not None: + print 'You are a %d year old %s' % (FLAGS.age, FLAGS.gender) + + if __name__ == '__main__': + main(sys.argv) + + +KEY FLAGS: + +As we already explained, each module gains access to all flags defined +by all the other modules it transitively imports. In the case of +non-trivial scripts, this means a lot of flags ... For documentation +purposes, it is good to identify the flags that are key (i.e., really +important) to a module. Clearly, the concept of "key flag" is a +subjective one. When trying to determine whether a flag is key to a +module or not, assume that you are trying to explain your module to a +potential user: which flags would you really like to mention first? + +We'll describe shortly how to declare which flags are key to a module. +For the moment, assume we know the set of key flags for each module. +Then, if you use the app.py module, you can use the --helpshort flag to +print only the help for the flags that are key to the main module, in a +human-readable format. + +NOTE: If you need to parse the flag help, do NOT use the output of +--help / --helpshort. That output is meant for human consumption, and +may be changed in the future. Instead, use --helpxml; flags that are +key for the main module are marked there with a yes element. + +The set of key flags for a module M is composed of: + +1. Flags defined by module M by calling a DEFINE_* function. + +2. Flags that module M explictly declares as key by using the function + + DECLARE_key_flag() + +3. Key flags of other modules that M specifies by using the function + + ADOPT_module_key_flags() + + This is a "bulk" declaration of key flags: each flag that is key for + becomes key for the current module too. + +Notice that if you do not use the functions described at points 2 and 3 +above, then --helpshort prints information only about the flags defined +by the main module of our script. In many cases, this behavior is good +enough. But if you move part of the main module code (together with the +related flags) into a different module, then it is nice to use +DECLARE_key_flag / ADOPT_module_key_flags and make sure --helpshort +lists all relevant flags (otherwise, your code refactoring may confuse +your users). + +Note: each of DECLARE_key_flag / ADOPT_module_key_flags has its own +pluses and minuses: DECLARE_key_flag is more targeted and may lead a +more focused --helpshort documentation. ADOPT_module_key_flags is good +for cases when an entire module is considered key to the current script. +Also, it does not require updates to client scripts when a new flag is +added to the module. + + +EXAMPLE USAGE 2 (WITH KEY FLAGS): + +Consider an application that contains the following three files (two +auxiliary modules and a main module) + +File libfoo.py: + + import gflags + + gflags.DEFINE_integer('num_replicas', 3, 'Number of replicas to start') + gflags.DEFINE_boolean('rpc2', True, 'Turn on the usage of RPC2.') + + ... some code ... + +File libbar.py: + + import gflags + + gflags.DEFINE_string('bar_gfs_path', '/gfs/path', + 'Path to the GFS files for libbar.') + gflags.DEFINE_string('email_for_bar_errors', 'bar-team@google.com', + 'Email address for bug reports about module libbar.') + gflags.DEFINE_boolean('bar_risky_hack', False, + 'Turn on an experimental and buggy optimization.') + + ... some code ... + +File myscript.py: + + import gflags + import libfoo + import libbar + + gflags.DEFINE_integer('num_iterations', 0, 'Number of iterations.') + + # Declare that all flags that are key for libfoo are + # key for this module too. + gflags.ADOPT_module_key_flags(libfoo) + + # Declare that the flag --bar_gfs_path (defined in libbar) is key + # for this module. + gflags.DECLARE_key_flag('bar_gfs_path') + + ... some code ... + +When myscript is invoked with the flag --helpshort, the resulted help +message lists information about all the key flags for myscript: +--num_iterations, --num_replicas, --rpc2, and --bar_gfs_path. + +Of course, myscript uses all the flags declared by it (in this case, +just --num_replicas) or by any of the modules it transitively imports +(e.g., the modules libfoo, libbar). E.g., it can access the value of +FLAGS.bar_risky_hack, even if --bar_risky_hack is not declared as a key +flag for myscript. + + +OUTPUT FOR --helpxml: + +The --helpxml flag generates output with the following structure: + + + + PROGRAM_BASENAME + MAIN_MODULE_DOCSTRING + ( + [yes] + DECLARING_MODULE + FLAG_NAME + FLAG_HELP_MESSAGE + DEFAULT_FLAG_VALUE + CURRENT_FLAG_VALUE + FLAG_TYPE + [OPTIONAL_ELEMENTS] + )* + + +Notes: + +1. The output is intentionally similar to the output generated by the +C++ command-line flag library. The few differences are due to the +Python flags that do not have a C++ equivalent (at least not yet), +e.g., DEFINE_list. + +2. New XML elements may be added in the future. + +3. DEFAULT_FLAG_VALUE is in serialized form, i.e., the string you can +pass for this flag on the command-line. E.g., for a flag defined +using DEFINE_list, this field may be foo,bar, not ['foo', 'bar']. + +4. CURRENT_FLAG_VALUE is produced using str(). This means that the +string 'false' will be represented in the same way as the boolean +False. Using repr() would have removed this ambiguity and simplified +parsing, but would have broken the compatibility with the C++ +command-line flags. + +5. OPTIONAL_ELEMENTS describe elements relevant for certain kinds of +flags: lower_bound, upper_bound (for flags that specify bounds), +enum_value (for enum flags), list_separator (for flags that consist of +a list of values, separated by a special token). + +6. We do not provide any example here: please use --helpxml instead. + +This module requires at least python 2.2.1 to run. +""" + +import cgi +import getopt +import os +import re +import string +import struct +import sys +# pylint: disable-msg=C6204 +try: + import fcntl +except ImportError: + fcntl = None +try: + # Importing termios will fail on non-unix platforms. + import termios +except ImportError: + termios = None + +import gflags_validators +# pylint: enable-msg=C6204 + + +# Are we running under pychecker? +_RUNNING_PYCHECKER = 'pychecker.python' in sys.modules + + +def _GetCallingModuleObjectAndName(): + """Returns the module that's calling into this module. + + We generally use this function to get the name of the module calling a + DEFINE_foo... function. + """ + # Walk down the stack to find the first globals dict that's not ours. + for depth in range(1, sys.getrecursionlimit()): + if not sys._getframe(depth).f_globals is globals(): + globals_for_frame = sys._getframe(depth).f_globals + module, module_name = _GetModuleObjectAndName(globals_for_frame) + if module_name is not None: + return module, module_name + raise AssertionError("No module was found") + + +def _GetCallingModule(): + """Returns the name of the module that's calling into this module.""" + return _GetCallingModuleObjectAndName()[1] + + +def _GetThisModuleObjectAndName(): + """Returns: (module object, module name) for this module.""" + return _GetModuleObjectAndName(globals()) + + +# module exceptions: +class FlagsError(Exception): + """The base class for all flags errors.""" + pass + + +class DuplicateFlag(FlagsError): + """Raised if there is a flag naming conflict.""" + pass + +class CantOpenFlagFileError(FlagsError): + """Raised if flagfile fails to open: doesn't exist, wrong permissions, etc.""" + pass + + +class DuplicateFlagCannotPropagateNoneToSwig(DuplicateFlag): + """Special case of DuplicateFlag -- SWIG flag value can't be set to None. + + This can be raised when a duplicate flag is created. Even if allow_override is + True, we still abort if the new value is None, because it's currently + impossible to pass None default value back to SWIG. See FlagValues.SetDefault + for details. + """ + pass + + +class DuplicateFlagError(DuplicateFlag): + """A DuplicateFlag whose message cites the conflicting definitions. + + A DuplicateFlagError conveys more information than a DuplicateFlag, + namely the modules where the conflicting definitions occur. This + class was created to avoid breaking external modules which depend on + the existing DuplicateFlags interface. + """ + + def __init__(self, flagname, flag_values, other_flag_values=None): + """Create a DuplicateFlagError. + + Args: + flagname: Name of the flag being redefined. + flag_values: FlagValues object containing the first definition of + flagname. + other_flag_values: If this argument is not None, it should be the + FlagValues object where the second definition of flagname occurs. + If it is None, we assume that we're being called when attempting + to create the flag a second time, and we use the module calling + this one as the source of the second definition. + """ + self.flagname = flagname + first_module = flag_values.FindModuleDefiningFlag( + flagname, default='') + if other_flag_values is None: + second_module = _GetCallingModule() + else: + second_module = other_flag_values.FindModuleDefiningFlag( + flagname, default='') + msg = "The flag '%s' is defined twice. First from %s, Second from %s" % ( + self.flagname, first_module, second_module) + DuplicateFlag.__init__(self, msg) + + +class IllegalFlagValue(FlagsError): + """The flag command line argument is illegal.""" + pass + + +class UnrecognizedFlag(FlagsError): + """Raised if a flag is unrecognized.""" + pass + + +# An UnrecognizedFlagError conveys more information than an UnrecognizedFlag. +# Since there are external modules that create DuplicateFlags, the interface to +# DuplicateFlag shouldn't change. The flagvalue will be assigned the full value +# of the flag and its argument, if any, allowing handling of unrecognized flags +# in an exception handler. +# If flagvalue is the empty string, then this exception is an due to a +# reference to a flag that was not already defined. +class UnrecognizedFlagError(UnrecognizedFlag): + def __init__(self, flagname, flagvalue=''): + self.flagname = flagname + self.flagvalue = flagvalue + UnrecognizedFlag.__init__( + self, "Unknown command line flag '%s'" % flagname) + +# Global variable used by expvar +_exported_flags = {} +_help_width = 80 # width of help output + + +def GetHelpWidth(): + """Returns: an integer, the width of help lines that is used in TextWrap.""" + if (not sys.stdout.isatty()) or (termios is None) or (fcntl is None): + return _help_width + try: + data = fcntl.ioctl(sys.stdout, termios.TIOCGWINSZ, '1234') + columns = struct.unpack('hh', data)[1] + # Emacs mode returns 0. + # Here we assume that any value below 40 is unreasonable + if columns >= 40: + return columns + # Returning an int as default is fine, int(int) just return the int. + return int(os.getenv('COLUMNS', _help_width)) + + except (TypeError, IOError, struct.error): + return _help_width + + +def CutCommonSpacePrefix(text): + """Removes a common space prefix from the lines of a multiline text. + + If the first line does not start with a space, it is left as it is and + only in the remaining lines a common space prefix is being searched + for. That means the first line will stay untouched. This is especially + useful to turn doc strings into help texts. This is because some + people prefer to have the doc comment start already after the + apostrophe and then align the following lines while others have the + apostrophes on a separate line. + + The function also drops trailing empty lines and ignores empty lines + following the initial content line while calculating the initial + common whitespace. + + Args: + text: text to work on + + Returns: + the resulting text + """ + text_lines = text.splitlines() + # Drop trailing empty lines + while text_lines and not text_lines[-1]: + text_lines = text_lines[:-1] + if text_lines: + # We got some content, is the first line starting with a space? + if text_lines[0] and text_lines[0][0].isspace(): + text_first_line = [] + else: + text_first_line = [text_lines.pop(0)] + # Calculate length of common leading whitespace (only over content lines) + common_prefix = os.path.commonprefix([line for line in text_lines if line]) + space_prefix_len = len(common_prefix) - len(common_prefix.lstrip()) + # If we have a common space prefix, drop it from all lines + if space_prefix_len: + for index in xrange(len(text_lines)): + if text_lines[index]: + text_lines[index] = text_lines[index][space_prefix_len:] + return '\n'.join(text_first_line + text_lines) + return '' + + +def TextWrap(text, length=None, indent='', firstline_indent=None, tabs=' '): + """Wraps a given text to a maximum line length and returns it. + + We turn lines that only contain whitespace into empty lines. We keep + new lines and tabs (e.g., we do not treat tabs as spaces). + + Args: + text: text to wrap + length: maximum length of a line, includes indentation + if this is None then use GetHelpWidth() + indent: indent for all but first line + firstline_indent: indent for first line; if None, fall back to indent + tabs: replacement for tabs + + Returns: + wrapped text + + Raises: + FlagsError: if indent not shorter than length + FlagsError: if firstline_indent not shorter than length + """ + # Get defaults where callee used None + if length is None: + length = GetHelpWidth() + if indent is None: + indent = '' + if len(indent) >= length: + raise FlagsError('Indent must be shorter than length') + # In line we will be holding the current line which is to be started + # with indent (or firstline_indent if available) and then appended + # with words. + if firstline_indent is None: + firstline_indent = '' + line = indent + else: + line = firstline_indent + if len(firstline_indent) >= length: + raise FlagsError('First line indent must be shorter than length') + + # If the callee does not care about tabs we simply convert them to + # spaces If callee wanted tabs to be single space then we do that + # already here. + if not tabs or tabs == ' ': + text = text.replace('\t', ' ') + else: + tabs_are_whitespace = not tabs.strip() + + line_regex = re.compile('([ ]*)(\t*)([^ \t]+)', re.MULTILINE) + + # Split the text into lines and the lines with the regex above. The + # resulting lines are collected in result[]. For each split we get the + # spaces, the tabs and the next non white space (e.g. next word). + result = [] + for text_line in text.splitlines(): + # Store result length so we can find out whether processing the next + # line gave any new content + old_result_len = len(result) + # Process next line with line_regex. For optimization we do an rstrip(). + # - process tabs (changes either line or word, see below) + # - process word (first try to squeeze on line, then wrap or force wrap) + # Spaces found on the line are ignored, they get added while wrapping as + # needed. + for spaces, current_tabs, word in line_regex.findall(text_line.rstrip()): + # If tabs weren't converted to spaces, handle them now + if current_tabs: + # If the last thing we added was a space anyway then drop + # it. But let's not get rid of the indentation. + if (((result and line != indent) or + (not result and line != firstline_indent)) and line[-1] == ' '): + line = line[:-1] + # Add the tabs, if that means adding whitespace, just add it at + # the line, the rstrip() code while shorten the line down if + # necessary + if tabs_are_whitespace: + line += tabs * len(current_tabs) + else: + # if not all tab replacement is whitespace we prepend it to the word + word = tabs * len(current_tabs) + word + # Handle the case where word cannot be squeezed onto current last line + if len(line) + len(word) > length and len(indent) + len(word) <= length: + result.append(line.rstrip()) + line = indent + word + word = '' + # No space left on line or can we append a space? + if len(line) + 1 >= length: + result.append(line.rstrip()) + line = indent + else: + line += ' ' + # Add word and shorten it up to allowed line length. Restart next + # line with indent and repeat, or add a space if we're done (word + # finished) This deals with words that cannot fit on one line + # (e.g. indent + word longer than allowed line length). + while len(line) + len(word) >= length: + line += word + result.append(line[:length]) + word = line[length:] + line = indent + # Default case, simply append the word and a space + if word: + line += word + ' ' + # End of input line. If we have content we finish the line. If the + # current line is just the indent but we had content in during this + # original line then we need to add an empty line. + if (result and line != indent) or (not result and line != firstline_indent): + result.append(line.rstrip()) + elif len(result) == old_result_len: + result.append('') + line = indent + + return '\n'.join(result) + + +def DocToHelp(doc): + """Takes a __doc__ string and reformats it as help.""" + + # Get rid of starting and ending white space. Using lstrip() or even + # strip() could drop more than maximum of first line and right space + # of last line. + doc = doc.strip() + + # Get rid of all empty lines + whitespace_only_line = re.compile('^[ \t]+$', re.M) + doc = whitespace_only_line.sub('', doc) + + # Cut out common space at line beginnings + doc = CutCommonSpacePrefix(doc) + + # Just like this module's comment, comments tend to be aligned somehow. + # In other words they all start with the same amount of white space + # 1) keep double new lines + # 2) keep ws after new lines if not empty line + # 3) all other new lines shall be changed to a space + # Solution: Match new lines between non white space and replace with space. + doc = re.sub('(?<=\S)\n(?=\S)', ' ', doc, re.M) + + return doc + + +def _GetModuleObjectAndName(globals_dict): + """Returns the module that defines a global environment, and its name. + + Args: + globals_dict: A dictionary that should correspond to an environment + providing the values of the globals. + + Returns: + A pair consisting of (1) module object and (2) module name (a + string). Returns (None, None) if the module could not be + identified. + """ + # The use of .items() (instead of .iteritems()) is NOT a mistake: if + # a parallel thread imports a module while we iterate over + # .iteritems() (not nice, but possible), we get a RuntimeError ... + # Hence, we use the slightly slower but safer .items(). + for name, module in sys.modules.items(): + if getattr(module, '__dict__', None) is globals_dict: + if name == '__main__': + # Pick a more informative name for the main module. + name = sys.argv[0] + return (module, name) + return (None, None) + + +def _GetMainModule(): + """Returns: string, name of the module from which execution started.""" + # First, try to use the same logic used by _GetCallingModuleObjectAndName(), + # i.e., call _GetModuleObjectAndName(). For that we first need to + # find the dictionary that the main module uses to store the + # globals. + # + # That's (normally) the same dictionary object that the deepest + # (oldest) stack frame is using for globals. + deepest_frame = sys._getframe(0) + while deepest_frame.f_back is not None: + deepest_frame = deepest_frame.f_back + globals_for_main_module = deepest_frame.f_globals + main_module_name = _GetModuleObjectAndName(globals_for_main_module)[1] + # The above strategy fails in some cases (e.g., tools that compute + # code coverage by redefining, among other things, the main module). + # If so, just use sys.argv[0]. We can probably always do this, but + # it's safest to try to use the same logic as _GetCallingModuleObjectAndName() + if main_module_name is None: + main_module_name = sys.argv[0] + return main_module_name + + +class FlagValues: + """Registry of 'Flag' objects. + + A 'FlagValues' can then scan command line arguments, passing flag + arguments through to the 'Flag' objects that it owns. It also + provides easy access to the flag values. Typically only one + 'FlagValues' object is needed by an application: gflags.FLAGS + + This class is heavily overloaded: + + 'Flag' objects are registered via __setitem__: + FLAGS['longname'] = x # register a new flag + + The .value attribute of the registered 'Flag' objects can be accessed + as attributes of this 'FlagValues' object, through __getattr__. Both + the long and short name of the original 'Flag' objects can be used to + access its value: + FLAGS.longname # parsed flag value + FLAGS.x # parsed flag value (short name) + + Command line arguments are scanned and passed to the registered 'Flag' + objects through the __call__ method. Unparsed arguments, including + argv[0] (e.g. the program name) are returned. + argv = FLAGS(sys.argv) # scan command line arguments + + The original registered Flag objects can be retrieved through the use + of the dictionary-like operator, __getitem__: + x = FLAGS['longname'] # access the registered Flag object + + The str() operator of a 'FlagValues' object provides help for all of + the registered 'Flag' objects. + """ + + def __init__(self): + # Since everything in this class is so heavily overloaded, the only + # way of defining and using fields is to access __dict__ directly. + + # Dictionary: flag name (string) -> Flag object. + self.__dict__['__flags'] = {} + # Dictionary: module name (string) -> list of Flag objects that are defined + # by that module. + self.__dict__['__flags_by_module'] = {} + # Dictionary: module id (int) -> list of Flag objects that are defined by + # that module. + self.__dict__['__flags_by_module_id'] = {} + # Dictionary: module name (string) -> list of Flag objects that are + # key for that module. + self.__dict__['__key_flags_by_module'] = {} + + # Set if we should use new style gnu_getopt rather than getopt when parsing + # the args. Only possible with Python 2.3+ + self.UseGnuGetOpt(False) + + def UseGnuGetOpt(self, use_gnu_getopt=True): + """Use GNU-style scanning. Allows mixing of flag and non-flag arguments. + + See http://docs.python.org/library/getopt.html#getopt.gnu_getopt + + Args: + use_gnu_getopt: wether or not to use GNU style scanning. + """ + self.__dict__['__use_gnu_getopt'] = use_gnu_getopt + + def IsGnuGetOpt(self): + return self.__dict__['__use_gnu_getopt'] + + def FlagDict(self): + return self.__dict__['__flags'] + + def FlagsByModuleDict(self): + """Returns the dictionary of module_name -> list of defined flags. + + Returns: + A dictionary. Its keys are module names (strings). Its values + are lists of Flag objects. + """ + return self.__dict__['__flags_by_module'] + + def FlagsByModuleIdDict(self): + """Returns the dictionary of module_id -> list of defined flags. + + Returns: + A dictionary. Its keys are module IDs (ints). Its values + are lists of Flag objects. + """ + return self.__dict__['__flags_by_module_id'] + + def KeyFlagsByModuleDict(self): + """Returns the dictionary of module_name -> list of key flags. + + Returns: + A dictionary. Its keys are module names (strings). Its values + are lists of Flag objects. + """ + return self.__dict__['__key_flags_by_module'] + + def _RegisterFlagByModule(self, module_name, flag): + """Records the module that defines a specific flag. + + We keep track of which flag is defined by which module so that we + can later sort the flags by module. + + Args: + module_name: A string, the name of a Python module. + flag: A Flag object, a flag that is key to the module. + """ + flags_by_module = self.FlagsByModuleDict() + flags_by_module.setdefault(module_name, []).append(flag) + + def _RegisterFlagByModuleId(self, module_id, flag): + """Records the module that defines a specific flag. + + Args: + module_id: An int, the ID of the Python module. + flag: A Flag object, a flag that is key to the module. + """ + flags_by_module_id = self.FlagsByModuleIdDict() + flags_by_module_id.setdefault(module_id, []).append(flag) + + def _RegisterKeyFlagForModule(self, module_name, flag): + """Specifies that a flag is a key flag for a module. + + Args: + module_name: A string, the name of a Python module. + flag: A Flag object, a flag that is key to the module. + """ + key_flags_by_module = self.KeyFlagsByModuleDict() + # The list of key flags for the module named module_name. + key_flags = key_flags_by_module.setdefault(module_name, []) + # Add flag, but avoid duplicates. + if flag not in key_flags: + key_flags.append(flag) + + def _GetFlagsDefinedByModule(self, module): + """Returns the list of flags defined by a module. + + Args: + module: A module object or a module name (a string). + + Returns: + A new list of Flag objects. Caller may update this list as he + wishes: none of those changes will affect the internals of this + FlagValue object. + """ + if not isinstance(module, str): + module = module.__name__ + + return list(self.FlagsByModuleDict().get(module, [])) + + def _GetKeyFlagsForModule(self, module): + """Returns the list of key flags for a module. + + Args: + module: A module object or a module name (a string) + + Returns: + A new list of Flag objects. Caller may update this list as he + wishes: none of those changes will affect the internals of this + FlagValue object. + """ + if not isinstance(module, str): + module = module.__name__ + + # Any flag is a key flag for the module that defined it. NOTE: + # key_flags is a fresh list: we can update it without affecting the + # internals of this FlagValues object. + key_flags = self._GetFlagsDefinedByModule(module) + + # Take into account flags explicitly declared as key for a module. + for flag in self.KeyFlagsByModuleDict().get(module, []): + if flag not in key_flags: + key_flags.append(flag) + return key_flags + + def FindModuleDefiningFlag(self, flagname, default=None): + """Return the name of the module defining this flag, or default. + + Args: + flagname: Name of the flag to lookup. + default: Value to return if flagname is not defined. Defaults + to None. + + Returns: + The name of the module which registered the flag with this name. + If no such module exists (i.e. no flag with this name exists), + we return default. + """ + for module, flags in self.FlagsByModuleDict().iteritems(): + for flag in flags: + if flag.name == flagname or flag.short_name == flagname: + return module + return default + + def FindModuleIdDefiningFlag(self, flagname, default=None): + """Return the ID of the module defining this flag, or default. + + Args: + flagname: Name of the flag to lookup. + default: Value to return if flagname is not defined. Defaults + to None. + + Returns: + The ID of the module which registered the flag with this name. + If no such module exists (i.e. no flag with this name exists), + we return default. + """ + for module_id, flags in self.FlagsByModuleIdDict().iteritems(): + for flag in flags: + if flag.name == flagname or flag.short_name == flagname: + return module_id + return default + + def AppendFlagValues(self, flag_values): + """Appends flags registered in another FlagValues instance. + + Args: + flag_values: registry to copy from + """ + for flag_name, flag in flag_values.FlagDict().iteritems(): + # Each flags with shortname appears here twice (once under its + # normal name, and again with its short name). To prevent + # problems (DuplicateFlagError) with double flag registration, we + # perform a check to make sure that the entry we're looking at is + # for its normal name. + if flag_name == flag.name: + try: + self[flag_name] = flag + except DuplicateFlagError: + raise DuplicateFlagError(flag_name, self, + other_flag_values=flag_values) + + def RemoveFlagValues(self, flag_values): + """Remove flags that were previously appended from another FlagValues. + + Args: + flag_values: registry containing flags to remove. + """ + for flag_name in flag_values.FlagDict(): + self.__delattr__(flag_name) + + def __setitem__(self, name, flag): + """Registers a new flag variable.""" + fl = self.FlagDict() + if not isinstance(flag, Flag): + raise IllegalFlagValue(flag) + if not isinstance(name, type("")): + raise FlagsError("Flag name must be a string") + if len(name) == 0: + raise FlagsError("Flag name cannot be empty") + # If running under pychecker, duplicate keys are likely to be + # defined. Disable check for duplicate keys when pycheck'ing. + if (name in fl and not flag.allow_override and + not fl[name].allow_override and not _RUNNING_PYCHECKER): + module, module_name = _GetCallingModuleObjectAndName() + if (self.FindModuleDefiningFlag(name) == module_name and + id(module) != self.FindModuleIdDefiningFlag(name)): + # If the flag has already been defined by a module with the same name, + # but a different ID, we can stop here because it indicates that the + # module is simply being imported a subsequent time. + return + raise DuplicateFlagError(name, self) + short_name = flag.short_name + if short_name is not None: + if (short_name in fl and not flag.allow_override and + not fl[short_name].allow_override and not _RUNNING_PYCHECKER): + raise DuplicateFlagError(short_name, self) + fl[short_name] = flag + fl[name] = flag + global _exported_flags + _exported_flags[name] = flag + + def __getitem__(self, name): + """Retrieves the Flag object for the flag --name.""" + return self.FlagDict()[name] + + def __getattr__(self, name): + """Retrieves the 'value' attribute of the flag --name.""" + fl = self.FlagDict() + if name not in fl: + raise AttributeError(name) + return fl[name].value + + def __setattr__(self, name, value): + """Sets the 'value' attribute of the flag --name.""" + fl = self.FlagDict() + fl[name].value = value + self._AssertValidators(fl[name].validators) + return value + + def _AssertAllValidators(self): + all_validators = set() + for flag in self.FlagDict().itervalues(): + for validator in flag.validators: + all_validators.add(validator) + self._AssertValidators(all_validators) + + def _AssertValidators(self, validators): + """Assert if all validators in the list are satisfied. + + Asserts validators in the order they were created. + Args: + validators: Iterable(gflags_validators.Validator), validators to be + verified + Raises: + AttributeError: if validators work with a non-existing flag. + IllegalFlagValue: if validation fails for at least one validator + """ + for validator in sorted( + validators, key=lambda validator: validator.insertion_index): + try: + validator.Verify(self) + except gflags_validators.Error, e: + message = validator.PrintFlagsWithValues(self) + raise IllegalFlagValue('%s: %s' % (message, str(e))) + + def _FlagIsRegistered(self, flag_obj): + """Checks whether a Flag object is registered under some name. + + Note: this is non trivial: in addition to its normal name, a flag + may have a short name too. In self.FlagDict(), both the normal and + the short name are mapped to the same flag object. E.g., calling + only "del FLAGS.short_name" is not unregistering the corresponding + Flag object (it is still registered under the longer name). + + Args: + flag_obj: A Flag object. + + Returns: + A boolean: True iff flag_obj is registered under some name. + """ + flag_dict = self.FlagDict() + # Check whether flag_obj is registered under its long name. + name = flag_obj.name + if flag_dict.get(name, None) == flag_obj: + return True + # Check whether flag_obj is registered under its short name. + short_name = flag_obj.short_name + if (short_name is not None and + flag_dict.get(short_name, None) == flag_obj): + return True + # The flag cannot be registered under any other name, so we do not + # need to do a full search through the values of self.FlagDict(). + return False + + def __delattr__(self, flag_name): + """Deletes a previously-defined flag from a flag object. + + This method makes sure we can delete a flag by using + + del flag_values_object. + + E.g., + + gflags.DEFINE_integer('foo', 1, 'Integer flag.') + del gflags.FLAGS.foo + + Args: + flag_name: A string, the name of the flag to be deleted. + + Raises: + AttributeError: When there is no registered flag named flag_name. + """ + fl = self.FlagDict() + if flag_name not in fl: + raise AttributeError(flag_name) + + flag_obj = fl[flag_name] + del fl[flag_name] + + if not self._FlagIsRegistered(flag_obj): + # If the Flag object indicated by flag_name is no longer + # registered (please see the docstring of _FlagIsRegistered), then + # we delete the occurrences of the flag object in all our internal + # dictionaries. + self.__RemoveFlagFromDictByModule(self.FlagsByModuleDict(), flag_obj) + self.__RemoveFlagFromDictByModule(self.FlagsByModuleIdDict(), flag_obj) + self.__RemoveFlagFromDictByModule(self.KeyFlagsByModuleDict(), flag_obj) + + def __RemoveFlagFromDictByModule(self, flags_by_module_dict, flag_obj): + """Removes a flag object from a module -> list of flags dictionary. + + Args: + flags_by_module_dict: A dictionary that maps module names to lists of + flags. + flag_obj: A flag object. + """ + for unused_module, flags_in_module in flags_by_module_dict.iteritems(): + # while (as opposed to if) takes care of multiple occurrences of a + # flag in the list for the same module. + while flag_obj in flags_in_module: + flags_in_module.remove(flag_obj) + + def SetDefault(self, name, value): + """Changes the default value of the named flag object.""" + fl = self.FlagDict() + if name not in fl: + raise AttributeError(name) + fl[name].SetDefault(value) + self._AssertValidators(fl[name].validators) + + def __contains__(self, name): + """Returns True if name is a value (flag) in the dict.""" + return name in self.FlagDict() + + has_key = __contains__ # a synonym for __contains__() + + def __iter__(self): + return iter(self.FlagDict()) + + def __call__(self, argv): + """Parses flags from argv; stores parsed flags into this FlagValues object. + + All unparsed arguments are returned. Flags are parsed using the GNU + Program Argument Syntax Conventions, using getopt: + + http://www.gnu.org/software/libc/manual/html_mono/libc.html#Getopt + + Args: + argv: argument list. Can be of any type that may be converted to a list. + + Returns: + The list of arguments not parsed as options, including argv[0] + + Raises: + FlagsError: on any parsing error + """ + # Support any sequence type that can be converted to a list + argv = list(argv) + + shortopts = "" + longopts = [] + + fl = self.FlagDict() + + # This pre parses the argv list for --flagfile=<> options. + argv = argv[:1] + self.ReadFlagsFromFiles(argv[1:], force_gnu=False) + + # Correct the argv to support the google style of passing boolean + # parameters. Boolean parameters may be passed by using --mybool, + # --nomybool, --mybool=(true|false|1|0). getopt does not support + # having options that may or may not have a parameter. We replace + # instances of the short form --mybool and --nomybool with their + # full forms: --mybool=(true|false). + original_argv = list(argv) # list() makes a copy + shortest_matches = None + for name, flag in fl.items(): + if not flag.boolean: + continue + if shortest_matches is None: + # Determine the smallest allowable prefix for all flag names + shortest_matches = self.ShortestUniquePrefixes(fl) + no_name = 'no' + name + prefix = shortest_matches[name] + no_prefix = shortest_matches[no_name] + + # Replace all occurrences of this boolean with extended forms + for arg_idx in range(1, len(argv)): + arg = argv[arg_idx] + if arg.find('=') >= 0: continue + if arg.startswith('--'+prefix) and ('--'+name).startswith(arg): + argv[arg_idx] = ('--%s=true' % name) + elif arg.startswith('--'+no_prefix) and ('--'+no_name).startswith(arg): + argv[arg_idx] = ('--%s=false' % name) + + # Loop over all of the flags, building up the lists of short options + # and long options that will be passed to getopt. Short options are + # specified as a string of letters, each letter followed by a colon + # if it takes an argument. Long options are stored in an array of + # strings. Each string ends with an '=' if it takes an argument. + for name, flag in fl.items(): + longopts.append(name + "=") + if len(name) == 1: # one-letter option: allow short flag type also + shortopts += name + if not flag.boolean: + shortopts += ":" + + longopts.append('undefok=') + undefok_flags = [] + + # In case --undefok is specified, loop to pick up unrecognized + # options one by one. + unrecognized_opts = [] + args = argv[1:] + while True: + try: + if self.__dict__['__use_gnu_getopt']: + optlist, unparsed_args = getopt.gnu_getopt(args, shortopts, longopts) + else: + optlist, unparsed_args = getopt.getopt(args, shortopts, longopts) + break + except getopt.GetoptError, e: + if not e.opt or e.opt in fl: + # Not an unrecognized option, re-raise the exception as a FlagsError + raise FlagsError(e) + # Remove offender from args and try again + for arg_index in range(len(args)): + if ((args[arg_index] == '--' + e.opt) or + (args[arg_index] == '-' + e.opt) or + (args[arg_index].startswith('--' + e.opt + '='))): + unrecognized_opts.append((e.opt, args[arg_index])) + args = args[0:arg_index] + args[arg_index+1:] + break + else: + # We should have found the option, so we don't expect to get + # here. We could assert, but raising the original exception + # might work better. + raise FlagsError(e) + + for name, arg in optlist: + if name == '--undefok': + flag_names = arg.split(',') + undefok_flags.extend(flag_names) + # For boolean flags, if --undefok=boolflag is specified, then we should + # also accept --noboolflag, in addition to --boolflag. + # Since we don't know the type of the undefok'd flag, this will affect + # non-boolean flags as well. + # NOTE: You shouldn't use --undefok=noboolflag, because then we will + # accept --nonoboolflag here. We are choosing not to do the conversion + # from noboolflag -> boolflag because of the ambiguity that flag names + # can start with 'no'. + undefok_flags.extend('no' + name for name in flag_names) + continue + if name.startswith('--'): + # long option + name = name[2:] + short_option = 0 + else: + # short option + name = name[1:] + short_option = 1 + if name in fl: + flag = fl[name] + if flag.boolean and short_option: arg = 1 + flag.Parse(arg) + + # If there were unrecognized options, raise an exception unless + # the options were named via --undefok. + for opt, value in unrecognized_opts: + if opt not in undefok_flags: + raise UnrecognizedFlagError(opt, value) + + if unparsed_args: + if self.__dict__['__use_gnu_getopt']: + # if using gnu_getopt just return the program name + remainder of argv. + ret_val = argv[:1] + unparsed_args + else: + # unparsed_args becomes the first non-flag detected by getopt to + # the end of argv. Because argv may have been modified above, + # return original_argv for this region. + ret_val = argv[:1] + original_argv[-len(unparsed_args):] + else: + ret_val = argv[:1] + + self._AssertAllValidators() + return ret_val + + def Reset(self): + """Resets the values to the point before FLAGS(argv) was called.""" + for f in self.FlagDict().values(): + f.Unparse() + + def RegisteredFlags(self): + """Returns: a list of the names and short names of all registered flags.""" + return list(self.FlagDict()) + + def FlagValuesDict(self): + """Returns: a dictionary that maps flag names to flag values.""" + flag_values = {} + + for flag_name in self.RegisteredFlags(): + flag = self.FlagDict()[flag_name] + flag_values[flag_name] = flag.value + + return flag_values + + def __str__(self): + """Generates a help string for all known flags.""" + return self.GetHelp() + + def GetHelp(self, prefix=''): + """Generates a help string for all known flags.""" + helplist = [] + + flags_by_module = self.FlagsByModuleDict() + if flags_by_module: + + modules = sorted(flags_by_module) + + # Print the help for the main module first, if possible. + main_module = _GetMainModule() + if main_module in modules: + modules.remove(main_module) + modules = [main_module] + modules + + for module in modules: + self.__RenderOurModuleFlags(module, helplist) + + self.__RenderModuleFlags('gflags', + _SPECIAL_FLAGS.FlagDict().values(), + helplist) + + else: + # Just print one long list of flags. + self.__RenderFlagList( + self.FlagDict().values() + _SPECIAL_FLAGS.FlagDict().values(), + helplist, prefix) + + return '\n'.join(helplist) + + def __RenderModuleFlags(self, module, flags, output_lines, prefix=""): + """Generates a help string for a given module.""" + if not isinstance(module, str): + module = module.__name__ + output_lines.append('\n%s%s:' % (prefix, module)) + self.__RenderFlagList(flags, output_lines, prefix + " ") + + def __RenderOurModuleFlags(self, module, output_lines, prefix=""): + """Generates a help string for a given module.""" + flags = self._GetFlagsDefinedByModule(module) + if flags: + self.__RenderModuleFlags(module, flags, output_lines, prefix) + + def __RenderOurModuleKeyFlags(self, module, output_lines, prefix=""): + """Generates a help string for the key flags of a given module. + + Args: + module: A module object or a module name (a string). + output_lines: A list of strings. The generated help message + lines will be appended to this list. + prefix: A string that is prepended to each generated help line. + """ + key_flags = self._GetKeyFlagsForModule(module) + if key_flags: + self.__RenderModuleFlags(module, key_flags, output_lines, prefix) + + def ModuleHelp(self, module): + """Describe the key flags of a module. + + Args: + module: A module object or a module name (a string). + + Returns: + string describing the key flags of a module. + """ + helplist = [] + self.__RenderOurModuleKeyFlags(module, helplist) + return '\n'.join(helplist) + + def MainModuleHelp(self): + """Describe the key flags of the main module. + + Returns: + string describing the key flags of a module. + """ + return self.ModuleHelp(_GetMainModule()) + + def __RenderFlagList(self, flaglist, output_lines, prefix=" "): + fl = self.FlagDict() + special_fl = _SPECIAL_FLAGS.FlagDict() + flaglist = [(flag.name, flag) for flag in flaglist] + flaglist.sort() + flagset = {} + for (name, flag) in flaglist: + # It's possible this flag got deleted or overridden since being + # registered in the per-module flaglist. Check now against the + # canonical source of current flag information, the FlagDict. + if fl.get(name, None) != flag and special_fl.get(name, None) != flag: + # a different flag is using this name now + continue + # only print help once + if flag in flagset: continue + flagset[flag] = 1 + flaghelp = "" + if flag.short_name: flaghelp += "-%s," % flag.short_name + if flag.boolean: + flaghelp += "--[no]%s" % flag.name + ":" + else: + flaghelp += "--%s" % flag.name + ":" + flaghelp += " " + if flag.help: + flaghelp += flag.help + flaghelp = TextWrap(flaghelp, indent=prefix+" ", + firstline_indent=prefix) + if flag.default_as_str: + flaghelp += "\n" + flaghelp += TextWrap("(default: %s)" % flag.default_as_str, + indent=prefix+" ") + if flag.parser.syntactic_help: + flaghelp += "\n" + flaghelp += TextWrap("(%s)" % flag.parser.syntactic_help, + indent=prefix+" ") + output_lines.append(flaghelp) + + def get(self, name, default): + """Returns the value of a flag (if not None) or a default value. + + Args: + name: A string, the name of a flag. + default: Default value to use if the flag value is None. + """ + + value = self.__getattr__(name) + if value is not None: # Can't do if not value, b/c value might be '0' or "" + return value + else: + return default + + def ShortestUniquePrefixes(self, fl): + """Returns: dictionary; maps flag names to their shortest unique prefix.""" + # Sort the list of flag names + sorted_flags = [] + for name, flag in fl.items(): + sorted_flags.append(name) + if flag.boolean: + sorted_flags.append('no%s' % name) + sorted_flags.sort() + + # For each name in the sorted list, determine the shortest unique + # prefix by comparing itself to the next name and to the previous + # name (the latter check uses cached info from the previous loop). + shortest_matches = {} + prev_idx = 0 + for flag_idx in range(len(sorted_flags)): + curr = sorted_flags[flag_idx] + if flag_idx == (len(sorted_flags) - 1): + next = None + else: + next = sorted_flags[flag_idx+1] + next_len = len(next) + for curr_idx in range(len(curr)): + if (next is None + or curr_idx >= next_len + or curr[curr_idx] != next[curr_idx]): + # curr longer than next or no more chars in common + shortest_matches[curr] = curr[:max(prev_idx, curr_idx) + 1] + prev_idx = curr_idx + break + else: + # curr shorter than (or equal to) next + shortest_matches[curr] = curr + prev_idx = curr_idx + 1 # next will need at least one more char + return shortest_matches + + def __IsFlagFileDirective(self, flag_string): + """Checks whether flag_string contain a --flagfile= directive.""" + if isinstance(flag_string, type("")): + if flag_string.startswith('--flagfile='): + return 1 + elif flag_string == '--flagfile': + return 1 + elif flag_string.startswith('-flagfile='): + return 1 + elif flag_string == '-flagfile': + return 1 + else: + return 0 + return 0 + + def ExtractFilename(self, flagfile_str): + """Returns filename from a flagfile_str of form -[-]flagfile=filename. + + The cases of --flagfile foo and -flagfile foo shouldn't be hitting + this function, as they are dealt with in the level above this + function. + """ + if flagfile_str.startswith('--flagfile='): + return os.path.expanduser((flagfile_str[(len('--flagfile=')):]).strip()) + elif flagfile_str.startswith('-flagfile='): + return os.path.expanduser((flagfile_str[(len('-flagfile=')):]).strip()) + else: + raise FlagsError('Hit illegal --flagfile type: %s' % flagfile_str) + + def __GetFlagFileLines(self, filename, parsed_file_list): + """Returns the useful (!=comments, etc) lines from a file with flags. + + Args: + filename: A string, the name of the flag file. + parsed_file_list: A list of the names of the files we have + already read. MUTATED BY THIS FUNCTION. + + Returns: + List of strings. See the note below. + + NOTE(springer): This function checks for a nested --flagfile= + tag and handles the lower file recursively. It returns a list of + all the lines that _could_ contain command flags. This is + EVERYTHING except whitespace lines and comments (lines starting + with '#' or '//'). + """ + line_list = [] # All line from flagfile. + flag_line_list = [] # Subset of lines w/o comments, blanks, flagfile= tags. + try: + file_obj = open(filename, 'r') + except IOError, e_msg: + raise CantOpenFlagFileError('ERROR:: Unable to open flagfile: %s' % e_msg) + + line_list = file_obj.readlines() + file_obj.close() + parsed_file_list.append(filename) + + # This is where we check each line in the file we just read. + for line in line_list: + if line.isspace(): + pass + # Checks for comment (a line that starts with '#'). + elif line.startswith('#') or line.startswith('//'): + pass + # Checks for a nested "--flagfile=" flag in the current file. + # If we find one, recursively parse down into that file. + elif self.__IsFlagFileDirective(line): + sub_filename = self.ExtractFilename(line) + # We do a little safety check for reparsing a file we've already done. + if not sub_filename in parsed_file_list: + included_flags = self.__GetFlagFileLines(sub_filename, + parsed_file_list) + flag_line_list.extend(included_flags) + else: # Case of hitting a circularly included file. + sys.stderr.write('Warning: Hit circular flagfile dependency: %s\n' % + (sub_filename,)) + else: + # Any line that's not a comment or a nested flagfile should get + # copied into 2nd position. This leaves earlier arguments + # further back in the list, thus giving them higher priority. + flag_line_list.append(line.strip()) + return flag_line_list + + def ReadFlagsFromFiles(self, argv, force_gnu=True): + """Processes command line args, but also allow args to be read from file. + + Args: + argv: A list of strings, usually sys.argv[1:], which may contain one or + more flagfile directives of the form --flagfile="./filename". + Note that the name of the program (sys.argv[0]) should be omitted. + force_gnu: If False, --flagfile parsing obeys normal flag semantics. + If True, --flagfile parsing instead follows gnu_getopt semantics. + *** WARNING *** force_gnu=False may become the future default! + + Returns: + + A new list which has the original list combined with what we read + from any flagfile(s). + + References: Global gflags.FLAG class instance. + + This function should be called before the normal FLAGS(argv) call. + This function scans the input list for a flag that looks like: + --flagfile=. Then it opens , reads all valid key + and value pairs and inserts them into the input list between the + first item of the list and any subsequent items in the list. + + Note that your application's flags are still defined the usual way + using gflags DEFINE_flag() type functions. + + Notes (assuming we're getting a commandline of some sort as our input): + --> Flags from the command line argv _should_ always take precedence! + --> A further "--flagfile=" CAN be nested in a flagfile. + It will be processed after the parent flag file is done. + --> For duplicate flags, first one we hit should "win". + --> In a flagfile, a line beginning with # or // is a comment. + --> Entirely blank lines _should_ be ignored. + """ + parsed_file_list = [] + rest_of_args = argv + new_argv = [] + while rest_of_args: + current_arg = rest_of_args[0] + rest_of_args = rest_of_args[1:] + if self.__IsFlagFileDirective(current_arg): + # This handles the case of -(-)flagfile foo. In this case the + # next arg really is part of this one. + if current_arg == '--flagfile' or current_arg == '-flagfile': + if not rest_of_args: + raise IllegalFlagValue('--flagfile with no argument') + flag_filename = os.path.expanduser(rest_of_args[0]) + rest_of_args = rest_of_args[1:] + else: + # This handles the case of (-)-flagfile=foo. + flag_filename = self.ExtractFilename(current_arg) + new_argv.extend( + self.__GetFlagFileLines(flag_filename, parsed_file_list)) + else: + new_argv.append(current_arg) + # Stop parsing after '--', like getopt and gnu_getopt. + if current_arg == '--': + break + # Stop parsing after a non-flag, like getopt. + if not current_arg.startswith('-'): + if not force_gnu and not self.__dict__['__use_gnu_getopt']: + break + + if rest_of_args: + new_argv.extend(rest_of_args) + + return new_argv + + def FlagsIntoString(self): + """Returns a string with the flags assignments from this FlagValues object. + + This function ignores flags whose value is None. Each flag + assignment is separated by a newline. + + NOTE: MUST mirror the behavior of the C++ CommandlineFlagsIntoString + from http://code.google.com/p/google-gflags + """ + s = '' + for flag in self.FlagDict().values(): + if flag.value is not None: + s += flag.Serialize() + '\n' + return s + + def AppendFlagsIntoFile(self, filename): + """Appends all flags assignments from this FlagInfo object to a file. + + Output will be in the format of a flagfile. + + NOTE: MUST mirror the behavior of the C++ AppendFlagsIntoFile + from http://code.google.com/p/google-gflags + """ + out_file = open(filename, 'a') + out_file.write(self.FlagsIntoString()) + out_file.close() + + def WriteHelpInXMLFormat(self, outfile=None): + """Outputs flag documentation in XML format. + + NOTE: We use element names that are consistent with those used by + the C++ command-line flag library, from + http://code.google.com/p/google-gflags + We also use a few new elements (e.g., ), but we do not + interfere / overlap with existing XML elements used by the C++ + library. Please maintain this consistency. + + Args: + outfile: File object we write to. Default None means sys.stdout. + """ + outfile = outfile or sys.stdout + + outfile.write('\n') + outfile.write('\n') + indent = ' ' + _WriteSimpleXMLElement(outfile, 'program', os.path.basename(sys.argv[0]), + indent) + + usage_doc = sys.modules['__main__'].__doc__ + if not usage_doc: + usage_doc = '\nUSAGE: %s [flags]\n' % sys.argv[0] + else: + usage_doc = usage_doc.replace('%s', sys.argv[0]) + _WriteSimpleXMLElement(outfile, 'usage', usage_doc, indent) + + # Get list of key flags for the main module. + key_flags = self._GetKeyFlagsForModule(_GetMainModule()) + + # Sort flags by declaring module name and next by flag name. + flags_by_module = self.FlagsByModuleDict() + all_module_names = list(flags_by_module.keys()) + all_module_names.sort() + for module_name in all_module_names: + flag_list = [(f.name, f) for f in flags_by_module[module_name]] + flag_list.sort() + for unused_flag_name, flag in flag_list: + is_key = flag in key_flags + flag.WriteInfoInXMLFormat(outfile, module_name, + is_key=is_key, indent=indent) + + outfile.write('\n') + outfile.flush() + + def AddValidator(self, validator): + """Register new flags validator to be checked. + + Args: + validator: gflags_validators.Validator + Raises: + AttributeError: if validators work with a non-existing flag. + """ + for flag_name in validator.GetFlagsNames(): + flag = self.FlagDict()[flag_name] + flag.validators.append(validator) + +# end of FlagValues definition + + +# The global FlagValues instance +FLAGS = FlagValues() + + +def _StrOrUnicode(value): + """Converts value to a python string or, if necessary, unicode-string.""" + try: + return str(value) + except UnicodeEncodeError: + return unicode(value) + + +def _MakeXMLSafe(s): + """Escapes <, >, and & from s, and removes XML 1.0-illegal chars.""" + s = cgi.escape(s) # Escape <, >, and & + # Remove characters that cannot appear in an XML 1.0 document + # (http://www.w3.org/TR/REC-xml/#charsets). + # + # NOTE: if there are problems with current solution, one may move to + # XML 1.1, which allows such chars, if they're entity-escaped (&#xHH;). + s = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f]', '', s) + # Convert non-ascii characters to entities. Note: requires python >=2.3 + s = s.encode('ascii', 'xmlcharrefreplace') # u'\xce\x88' -> 'uΈ' + return s + + +def _WriteSimpleXMLElement(outfile, name, value, indent): + """Writes a simple XML element. + + Args: + outfile: File object we write the XML element to. + name: A string, the name of XML element. + value: A Python object, whose string representation will be used + as the value of the XML element. + indent: A string, prepended to each line of generated output. + """ + value_str = _StrOrUnicode(value) + if isinstance(value, bool): + # Display boolean values as the C++ flag library does: no caps. + value_str = value_str.lower() + safe_value_str = _MakeXMLSafe(value_str) + outfile.write('%s<%s>%s\n' % (indent, name, safe_value_str, name)) + + +class Flag: + """Information about a command-line flag. + + 'Flag' objects define the following fields: + .name - the name for this flag + .default - the default value for this flag + .default_as_str - default value as repr'd string, e.g., "'true'" (or None) + .value - the most recent parsed value of this flag; set by Parse() + .help - a help string or None if no help is available + .short_name - the single letter alias for this flag (or None) + .boolean - if 'true', this flag does not accept arguments + .present - true if this flag was parsed from command line flags. + .parser - an ArgumentParser object + .serializer - an ArgumentSerializer object + .allow_override - the flag may be redefined without raising an error + + The only public method of a 'Flag' object is Parse(), but it is + typically only called by a 'FlagValues' object. The Parse() method is + a thin wrapper around the 'ArgumentParser' Parse() method. The parsed + value is saved in .value, and the .present attribute is updated. If + this flag was already present, a FlagsError is raised. + + Parse() is also called during __init__ to parse the default value and + initialize the .value attribute. This enables other python modules to + safely use flags even if the __main__ module neglects to parse the + command line arguments. The .present attribute is cleared after + __init__ parsing. If the default value is set to None, then the + __init__ parsing step is skipped and the .value attribute is + initialized to None. + + Note: The default value is also presented to the user in the help + string, so it is important that it be a legal value for this flag. + """ + + def __init__(self, parser, serializer, name, default, help_string, + short_name=None, boolean=0, allow_override=0): + self.name = name + + if not help_string: + help_string = '(no help available)' + + self.help = help_string + self.short_name = short_name + self.boolean = boolean + self.present = 0 + self.parser = parser + self.serializer = serializer + self.allow_override = allow_override + self.value = None + self.validators = [] + + self.SetDefault(default) + + def __hash__(self): + return hash(id(self)) + + def __eq__(self, other): + return self is other + + def __lt__(self, other): + if isinstance(other, Flag): + return id(self) < id(other) + return NotImplemented + + def __GetParsedValueAsString(self, value): + if value is None: + return None + if self.serializer: + return repr(self.serializer.Serialize(value)) + if self.boolean: + if value: + return repr('true') + else: + return repr('false') + return repr(_StrOrUnicode(value)) + + def Parse(self, argument): + try: + self.value = self.parser.Parse(argument) + except ValueError, e: # recast ValueError as IllegalFlagValue + raise IllegalFlagValue("flag --%s=%s: %s" % (self.name, argument, e)) + self.present += 1 + + def Unparse(self): + if self.default is None: + self.value = None + else: + self.Parse(self.default) + self.present = 0 + + def Serialize(self): + if self.value is None: + return '' + if self.boolean: + if self.value: + return "--%s" % self.name + else: + return "--no%s" % self.name + else: + if not self.serializer: + raise FlagsError("Serializer not present for flag %s" % self.name) + return "--%s=%s" % (self.name, self.serializer.Serialize(self.value)) + + def SetDefault(self, value): + """Changes the default value (and current value too) for this Flag.""" + # We can't allow a None override because it may end up not being + # passed to C++ code when we're overriding C++ flags. So we + # cowardly bail out until someone fixes the semantics of trying to + # pass None to a C++ flag. See swig_flags.Init() for details on + # this behavior. + # TODO(olexiy): Users can directly call this method, bypassing all flags + # validators (we don't have FlagValues here, so we can not check + # validators). + # The simplest solution I see is to make this method private. + # Another approach would be to store reference to the corresponding + # FlagValues with each flag, but this seems to be an overkill. + if value is None and self.allow_override: + raise DuplicateFlagCannotPropagateNoneToSwig(self.name) + + self.default = value + self.Unparse() + self.default_as_str = self.__GetParsedValueAsString(self.value) + + def Type(self): + """Returns: a string that describes the type of this Flag.""" + # NOTE: we use strings, and not the types.*Type constants because + # our flags can have more exotic types, e.g., 'comma separated list + # of strings', 'whitespace separated list of strings', etc. + return self.parser.Type() + + def WriteInfoInXMLFormat(self, outfile, module_name, is_key=False, indent=''): + """Writes common info about this flag, in XML format. + + This is information that is relevant to all flags (e.g., name, + meaning, etc.). If you defined a flag that has some other pieces of + info, then please override _WriteCustomInfoInXMLFormat. + + Please do NOT override this method. + + Args: + outfile: File object we write to. + module_name: A string, the name of the module that defines this flag. + is_key: A boolean, True iff this flag is key for main module. + indent: A string that is prepended to each generated line. + """ + outfile.write(indent + '\n') + inner_indent = indent + ' ' + if is_key: + _WriteSimpleXMLElement(outfile, 'key', 'yes', inner_indent) + _WriteSimpleXMLElement(outfile, 'file', module_name, inner_indent) + # Print flag features that are relevant for all flags. + _WriteSimpleXMLElement(outfile, 'name', self.name, inner_indent) + if self.short_name: + _WriteSimpleXMLElement(outfile, 'short_name', self.short_name, + inner_indent) + if self.help: + _WriteSimpleXMLElement(outfile, 'meaning', self.help, inner_indent) + # The default flag value can either be represented as a string like on the + # command line, or as a Python object. We serialize this value in the + # latter case in order to remain consistent. + if self.serializer and not isinstance(self.default, str): + default_serialized = self.serializer.Serialize(self.default) + else: + default_serialized = self.default + _WriteSimpleXMLElement(outfile, 'default', default_serialized, inner_indent) + _WriteSimpleXMLElement(outfile, 'current', self.value, inner_indent) + _WriteSimpleXMLElement(outfile, 'type', self.Type(), inner_indent) + # Print extra flag features this flag may have. + self._WriteCustomInfoInXMLFormat(outfile, inner_indent) + outfile.write(indent + '\n') + + def _WriteCustomInfoInXMLFormat(self, outfile, indent): + """Writes extra info about this flag, in XML format. + + "Extra" means "not already printed by WriteInfoInXMLFormat above." + + Args: + outfile: File object we write to. + indent: A string that is prepended to each generated line. + """ + # Usually, the parser knows the extra details about the flag, so + # we just forward the call to it. + self.parser.WriteCustomInfoInXMLFormat(outfile, indent) +# End of Flag definition + + +class _ArgumentParserCache(type): + """Metaclass used to cache and share argument parsers among flags.""" + + _instances = {} + + def __call__(mcs, *args, **kwargs): + """Returns an instance of the argument parser cls. + + This method overrides behavior of the __new__ methods in + all subclasses of ArgumentParser (inclusive). If an instance + for mcs with the same set of arguments exists, this instance is + returned, otherwise a new instance is created. + + If any keyword arguments are defined, or the values in args + are not hashable, this method always returns a new instance of + cls. + + Args: + args: Positional initializer arguments. + kwargs: Initializer keyword arguments. + + Returns: + An instance of cls, shared or new. + """ + if kwargs: + return type.__call__(mcs, *args, **kwargs) + else: + instances = mcs._instances + key = (mcs,) + tuple(args) + try: + return instances[key] + except KeyError: + # No cache entry for key exists, create a new one. + return instances.setdefault(key, type.__call__(mcs, *args)) + except TypeError: + # An object in args cannot be hashed, always return + # a new instance. + return type.__call__(mcs, *args) + + +class ArgumentParser(object): + """Base class used to parse and convert arguments. + + The Parse() method checks to make sure that the string argument is a + legal value and convert it to a native type. If the value cannot be + converted, it should throw a 'ValueError' exception with a human + readable explanation of why the value is illegal. + + Subclasses should also define a syntactic_help string which may be + presented to the user to describe the form of the legal values. + + Argument parser classes must be stateless, since instances are cached + and shared between flags. Initializer arguments are allowed, but all + member variables must be derived from initializer arguments only. + """ + __metaclass__ = _ArgumentParserCache + + syntactic_help = "" + + def Parse(self, argument): + """Default implementation: always returns its argument unmodified.""" + return argument + + def Type(self): + return 'string' + + def WriteCustomInfoInXMLFormat(self, outfile, indent): + pass + + +class ArgumentSerializer: + """Base class for generating string representations of a flag value.""" + + def Serialize(self, value): + return _StrOrUnicode(value) + + +class ListSerializer(ArgumentSerializer): + + def __init__(self, list_sep): + self.list_sep = list_sep + + def Serialize(self, value): + return self.list_sep.join([_StrOrUnicode(x) for x in value]) + + +# Flags validators + + +def RegisterValidator(flag_name, + checker, + message='Flag validation failed', + flag_values=FLAGS): + """Adds a constraint, which will be enforced during program execution. + + The constraint is validated when flags are initially parsed, and after each + change of the corresponding flag's value. + Args: + flag_name: string, name of the flag to be checked. + checker: method to validate the flag. + input - value of the corresponding flag (string, boolean, etc. + This value will be passed to checker by the library). See file's + docstring for examples. + output - Boolean. + Must return True if validator constraint is satisfied. + If constraint is not satisfied, it should either return False or + raise gflags_validators.Error(desired_error_message). + message: error text to be shown to the user if checker returns False. + If checker raises gflags_validators.Error, message from the raised + Error will be shown. + flag_values: FlagValues + Raises: + AttributeError: if flag_name is not registered as a valid flag name. + """ + flag_values.AddValidator(gflags_validators.SimpleValidator(flag_name, + checker, + message)) + + +def MarkFlagAsRequired(flag_name, flag_values=FLAGS): + """Ensure that flag is not None during program execution. + + Registers a flag validator, which will follow usual validator + rules. + Args: + flag_name: string, name of the flag + flag_values: FlagValues + Raises: + AttributeError: if flag_name is not registered as a valid flag name. + """ + RegisterValidator(flag_name, + lambda value: value is not None, + message='Flag --%s must be specified.' % flag_name, + flag_values=flag_values) + + +def _RegisterBoundsValidatorIfNeeded(parser, name, flag_values): + """Enforce lower and upper bounds for numeric flags. + + Args: + parser: NumericParser (either FloatParser or IntegerParser). Provides lower + and upper bounds, and help text to display. + name: string, name of the flag + flag_values: FlagValues + """ + if parser.lower_bound is not None or parser.upper_bound is not None: + + def Checker(value): + if value is not None and parser.IsOutsideBounds(value): + message = '%s is not %s' % (value, parser.syntactic_help) + raise gflags_validators.Error(message) + return True + + RegisterValidator(name, + Checker, + flag_values=flag_values) + + +# The DEFINE functions are explained in mode details in the module doc string. + + +def DEFINE(parser, name, default, help, flag_values=FLAGS, serializer=None, + **args): + """Registers a generic Flag object. + + NOTE: in the docstrings of all DEFINE* functions, "registers" is short + for "creates a new flag and registers it". + + Auxiliary function: clients should use the specialized DEFINE_ + function instead. + + Args: + parser: ArgumentParser that is used to parse the flag arguments. + name: A string, the flag name. + default: The default value of the flag. + help: A help string. + flag_values: FlagValues object the flag will be registered with. + serializer: ArgumentSerializer that serializes the flag value. + args: Dictionary with extra keyword args that are passes to the + Flag __init__. + """ + DEFINE_flag(Flag(parser, serializer, name, default, help, **args), + flag_values) + + +def DEFINE_flag(flag, flag_values=FLAGS): + """Registers a 'Flag' object with a 'FlagValues' object. + + By default, the global FLAGS 'FlagValue' object is used. + + Typical users will use one of the more specialized DEFINE_xxx + functions, such as DEFINE_string or DEFINE_integer. But developers + who need to create Flag objects themselves should use this function + to register their flags. + """ + # copying the reference to flag_values prevents pychecker warnings + fv = flag_values + fv[flag.name] = flag + # Tell flag_values who's defining the flag. + if isinstance(flag_values, FlagValues): + # Regarding the above isinstance test: some users pass funny + # values of flag_values (e.g., {}) in order to avoid the flag + # registration (in the past, there used to be a flag_values == + # FLAGS test here) and redefine flags with the same name (e.g., + # debug). To avoid breaking their code, we perform the + # registration only if flag_values is a real FlagValues object. + module, module_name = _GetCallingModuleObjectAndName() + flag_values._RegisterFlagByModule(module_name, flag) + flag_values._RegisterFlagByModuleId(id(module), flag) + + +def _InternalDeclareKeyFlags(flag_names, + flag_values=FLAGS, key_flag_values=None): + """Declares a flag as key for the calling module. + + Internal function. User code should call DECLARE_key_flag or + ADOPT_module_key_flags instead. + + Args: + flag_names: A list of strings that are names of already-registered + Flag objects. + flag_values: A FlagValues object that the flags listed in + flag_names have registered with (the value of the flag_values + argument from the DEFINE_* calls that defined those flags). + This should almost never need to be overridden. + key_flag_values: A FlagValues object that (among possibly many + other things) keeps track of the key flags for each module. + Default None means "same as flag_values". This should almost + never need to be overridden. + + Raises: + UnrecognizedFlagError: when we refer to a flag that was not + defined yet. + """ + key_flag_values = key_flag_values or flag_values + + module = _GetCallingModule() + + for flag_name in flag_names: + if flag_name not in flag_values: + raise UnrecognizedFlagError(flag_name) + flag = flag_values.FlagDict()[flag_name] + key_flag_values._RegisterKeyFlagForModule(module, flag) + + +def DECLARE_key_flag(flag_name, flag_values=FLAGS): + """Declares one flag as key to the current module. + + Key flags are flags that are deemed really important for a module. + They are important when listing help messages; e.g., if the + --helpshort command-line flag is used, then only the key flags of the + main module are listed (instead of all flags, as in the case of + --help). + + Sample usage: + + gflags.DECLARED_key_flag('flag_1') + + Args: + flag_name: A string, the name of an already declared flag. + (Redeclaring flags as key, including flags implicitly key + because they were declared in this module, is a no-op.) + flag_values: A FlagValues object. This should almost never + need to be overridden. + """ + if flag_name in _SPECIAL_FLAGS: + # Take care of the special flags, e.g., --flagfile, --undefok. + # These flags are defined in _SPECIAL_FLAGS, and are treated + # specially during flag parsing, taking precedence over the + # user-defined flags. + _InternalDeclareKeyFlags([flag_name], + flag_values=_SPECIAL_FLAGS, + key_flag_values=flag_values) + return + _InternalDeclareKeyFlags([flag_name], flag_values=flag_values) + + +def ADOPT_module_key_flags(module, flag_values=FLAGS): + """Declares that all flags key to a module are key to the current module. + + Args: + module: A module object. + flag_values: A FlagValues object. This should almost never need + to be overridden. + + Raises: + FlagsError: When given an argument that is a module name (a + string), instead of a module object. + """ + # NOTE(salcianu): an even better test would be if not + # isinstance(module, types.ModuleType) but I didn't want to import + # types for such a tiny use. + if isinstance(module, str): + raise FlagsError('Received module name %s; expected a module object.' + % module) + _InternalDeclareKeyFlags( + [f.name for f in flag_values._GetKeyFlagsForModule(module.__name__)], + flag_values=flag_values) + # If module is this flag module, take _SPECIAL_FLAGS into account. + if module == _GetThisModuleObjectAndName()[0]: + _InternalDeclareKeyFlags( + # As we associate flags with _GetCallingModuleObjectAndName(), the + # special flags defined in this module are incorrectly registered with + # a different module. So, we can't use _GetKeyFlagsForModule. + # Instead, we take all flags from _SPECIAL_FLAGS (a private + # FlagValues, where no other module should register flags). + [f.name for f in _SPECIAL_FLAGS.FlagDict().values()], + flag_values=_SPECIAL_FLAGS, + key_flag_values=flag_values) + + +# +# STRING FLAGS +# + + +def DEFINE_string(name, default, help, flag_values=FLAGS, **args): + """Registers a flag whose value can be any string.""" + parser = ArgumentParser() + serializer = ArgumentSerializer() + DEFINE(parser, name, default, help, flag_values, serializer, **args) + + +# +# BOOLEAN FLAGS +# + + +class BooleanParser(ArgumentParser): + """Parser of boolean values.""" + + def Convert(self, argument): + """Converts the argument to a boolean; raise ValueError on errors.""" + if type(argument) == str: + if argument.lower() in ['true', 't', '1']: + return True + elif argument.lower() in ['false', 'f', '0']: + return False + + bool_argument = bool(argument) + if argument == bool_argument: + # The argument is a valid boolean (True, False, 0, or 1), and not just + # something that always converts to bool (list, string, int, etc.). + return bool_argument + + raise ValueError('Non-boolean argument to boolean flag', argument) + + def Parse(self, argument): + val = self.Convert(argument) + return val + + def Type(self): + return 'bool' + + +class BooleanFlag(Flag): + """Basic boolean flag. + + Boolean flags do not take any arguments, and their value is either + True (1) or False (0). The false value is specified on the command + line by prepending the word 'no' to either the long or the short flag + name. + + For example, if a Boolean flag was created whose long name was + 'update' and whose short name was 'x', then this flag could be + explicitly unset through either --noupdate or --nox. + """ + + def __init__(self, name, default, help, short_name=None, **args): + p = BooleanParser() + Flag.__init__(self, p, None, name, default, help, short_name, 1, **args) + if not self.help: self.help = "a boolean value" + + +def DEFINE_boolean(name, default, help, flag_values=FLAGS, **args): + """Registers a boolean flag. + + Such a boolean flag does not take an argument. If a user wants to + specify a false value explicitly, the long option beginning with 'no' + must be used: i.e. --noflag + + This flag will have a value of None, True or False. None is possible + if default=None and the user does not specify the flag on the command + line. + """ + DEFINE_flag(BooleanFlag(name, default, help, **args), flag_values) + + +# Match C++ API to unconfuse C++ people. +DEFINE_bool = DEFINE_boolean + + +class HelpFlag(BooleanFlag): + """ + HelpFlag is a special boolean flag that prints usage information and + raises a SystemExit exception if it is ever found in the command + line arguments. Note this is called with allow_override=1, so other + apps can define their own --help flag, replacing this one, if they want. + """ + def __init__(self): + BooleanFlag.__init__(self, "help", 0, "show this help", + short_name="?", allow_override=1) + def Parse(self, arg): + if arg: + doc = sys.modules["__main__"].__doc__ + flags = str(FLAGS) + print doc or ("\nUSAGE: %s [flags]\n" % sys.argv[0]) + if flags: + print "flags:" + print flags + sys.exit(1) +class HelpXMLFlag(BooleanFlag): + """Similar to HelpFlag, but generates output in XML format.""" + def __init__(self): + BooleanFlag.__init__(self, 'helpxml', False, + 'like --help, but generates XML output', + allow_override=1) + def Parse(self, arg): + if arg: + FLAGS.WriteHelpInXMLFormat(sys.stdout) + sys.exit(1) +class HelpshortFlag(BooleanFlag): + """ + HelpshortFlag is a special boolean flag that prints usage + information for the "main" module, and rasies a SystemExit exception + if it is ever found in the command line arguments. Note this is + called with allow_override=1, so other apps can define their own + --helpshort flag, replacing this one, if they want. + """ + def __init__(self): + BooleanFlag.__init__(self, "helpshort", 0, + "show usage only for this module", allow_override=1) + def Parse(self, arg): + if arg: + doc = sys.modules["__main__"].__doc__ + flags = FLAGS.MainModuleHelp() + print doc or ("\nUSAGE: %s [flags]\n" % sys.argv[0]) + if flags: + print "flags:" + print flags + sys.exit(1) + +# +# Numeric parser - base class for Integer and Float parsers +# + + +class NumericParser(ArgumentParser): + """Parser of numeric values. + + Parsed value may be bounded to a given upper and lower bound. + """ + + def IsOutsideBounds(self, val): + return ((self.lower_bound is not None and val < self.lower_bound) or + (self.upper_bound is not None and val > self.upper_bound)) + + def Parse(self, argument): + val = self.Convert(argument) + if self.IsOutsideBounds(val): + raise ValueError("%s is not %s" % (val, self.syntactic_help)) + return val + + def WriteCustomInfoInXMLFormat(self, outfile, indent): + if self.lower_bound is not None: + _WriteSimpleXMLElement(outfile, 'lower_bound', self.lower_bound, indent) + if self.upper_bound is not None: + _WriteSimpleXMLElement(outfile, 'upper_bound', self.upper_bound, indent) + + def Convert(self, argument): + """Default implementation: always returns its argument unmodified.""" + return argument + +# End of Numeric Parser + +# +# FLOAT FLAGS +# + + +class FloatParser(NumericParser): + """Parser of floating point values. + + Parsed value may be bounded to a given upper and lower bound. + """ + number_article = "a" + number_name = "number" + syntactic_help = " ".join((number_article, number_name)) + + def __init__(self, lower_bound=None, upper_bound=None): + super(FloatParser, self).__init__() + self.lower_bound = lower_bound + self.upper_bound = upper_bound + sh = self.syntactic_help + if lower_bound is not None and upper_bound is not None: + sh = ("%s in the range [%s, %s]" % (sh, lower_bound, upper_bound)) + elif lower_bound == 0: + sh = "a non-negative %s" % self.number_name + elif upper_bound == 0: + sh = "a non-positive %s" % self.number_name + elif upper_bound is not None: + sh = "%s <= %s" % (self.number_name, upper_bound) + elif lower_bound is not None: + sh = "%s >= %s" % (self.number_name, lower_bound) + self.syntactic_help = sh + + def Convert(self, argument): + """Converts argument to a float; raises ValueError on errors.""" + return float(argument) + + def Type(self): + return 'float' +# End of FloatParser + + +def DEFINE_float(name, default, help, lower_bound=None, upper_bound=None, + flag_values=FLAGS, **args): + """Registers a flag whose value must be a float. + + If lower_bound or upper_bound are set, then this flag must be + within the given range. + """ + parser = FloatParser(lower_bound, upper_bound) + serializer = ArgumentSerializer() + DEFINE(parser, name, default, help, flag_values, serializer, **args) + _RegisterBoundsValidatorIfNeeded(parser, name, flag_values=flag_values) + +# +# INTEGER FLAGS +# + + +class IntegerParser(NumericParser): + """Parser of an integer value. + + Parsed value may be bounded to a given upper and lower bound. + """ + number_article = "an" + number_name = "integer" + syntactic_help = " ".join((number_article, number_name)) + + def __init__(self, lower_bound=None, upper_bound=None): + super(IntegerParser, self).__init__() + self.lower_bound = lower_bound + self.upper_bound = upper_bound + sh = self.syntactic_help + if lower_bound is not None and upper_bound is not None: + sh = ("%s in the range [%s, %s]" % (sh, lower_bound, upper_bound)) + elif lower_bound == 1: + sh = "a positive %s" % self.number_name + elif upper_bound == -1: + sh = "a negative %s" % self.number_name + elif lower_bound == 0: + sh = "a non-negative %s" % self.number_name + elif upper_bound == 0: + sh = "a non-positive %s" % self.number_name + elif upper_bound is not None: + sh = "%s <= %s" % (self.number_name, upper_bound) + elif lower_bound is not None: + sh = "%s >= %s" % (self.number_name, lower_bound) + self.syntactic_help = sh + + def Convert(self, argument): + __pychecker__ = 'no-returnvalues' + if type(argument) == str: + base = 10 + if len(argument) > 2 and argument[0] == "0" and argument[1] == "x": + base = 16 + return int(argument, base) + else: + return int(argument) + + def Type(self): + return 'int' + + +def DEFINE_integer(name, default, help, lower_bound=None, upper_bound=None, + flag_values=FLAGS, **args): + """Registers a flag whose value must be an integer. + + If lower_bound, or upper_bound are set, then this flag must be + within the given range. + """ + parser = IntegerParser(lower_bound, upper_bound) + serializer = ArgumentSerializer() + DEFINE(parser, name, default, help, flag_values, serializer, **args) + _RegisterBoundsValidatorIfNeeded(parser, name, flag_values=flag_values) + + +# +# ENUM FLAGS +# + + +class EnumParser(ArgumentParser): + """Parser of a string enum value (a string value from a given set). + + If enum_values (see below) is not specified, any string is allowed. + """ + + def __init__(self, enum_values=None): + super(EnumParser, self).__init__() + self.enum_values = enum_values + + def Parse(self, argument): + if self.enum_values and argument not in self.enum_values: + raise ValueError("value should be one of <%s>" % + "|".join(self.enum_values)) + return argument + + def Type(self): + return 'string enum' + + +class EnumFlag(Flag): + """Basic enum flag; its value can be any string from list of enum_values.""" + + def __init__(self, name, default, help, enum_values=None, + short_name=None, **args): + enum_values = enum_values or [] + p = EnumParser(enum_values) + g = ArgumentSerializer() + Flag.__init__(self, p, g, name, default, help, short_name, **args) + if not self.help: self.help = "an enum string" + self.help = "<%s>: %s" % ("|".join(enum_values), self.help) + + def _WriteCustomInfoInXMLFormat(self, outfile, indent): + for enum_value in self.parser.enum_values: + _WriteSimpleXMLElement(outfile, 'enum_value', enum_value, indent) + + +def DEFINE_enum(name, default, enum_values, help, flag_values=FLAGS, + **args): + """Registers a flag whose value can be any string from enum_values.""" + DEFINE_flag(EnumFlag(name, default, help, enum_values, ** args), + flag_values) + + +# +# LIST FLAGS +# + + +class BaseListParser(ArgumentParser): + """Base class for a parser of lists of strings. + + To extend, inherit from this class; from the subclass __init__, call + + BaseListParser.__init__(self, token, name) + + where token is a character used to tokenize, and name is a description + of the separator. + """ + + def __init__(self, token=None, name=None): + assert name + super(BaseListParser, self).__init__() + self._token = token + self._name = name + self.syntactic_help = "a %s separated list" % self._name + + def Parse(self, argument): + if isinstance(argument, list): + return argument + elif argument == '': + return [] + else: + return [s.strip() for s in argument.split(self._token)] + + def Type(self): + return '%s separated list of strings' % self._name + + +class ListParser(BaseListParser): + """Parser for a comma-separated list of strings.""" + + def __init__(self): + BaseListParser.__init__(self, ',', 'comma') + + def WriteCustomInfoInXMLFormat(self, outfile, indent): + BaseListParser.WriteCustomInfoInXMLFormat(self, outfile, indent) + _WriteSimpleXMLElement(outfile, 'list_separator', repr(','), indent) + + +class WhitespaceSeparatedListParser(BaseListParser): + """Parser for a whitespace-separated list of strings.""" + + def __init__(self): + BaseListParser.__init__(self, None, 'whitespace') + + def WriteCustomInfoInXMLFormat(self, outfile, indent): + BaseListParser.WriteCustomInfoInXMLFormat(self, outfile, indent) + separators = list(string.whitespace) + separators.sort() + for ws_char in string.whitespace: + _WriteSimpleXMLElement(outfile, 'list_separator', repr(ws_char), indent) + + +def DEFINE_list(name, default, help, flag_values=FLAGS, **args): + """Registers a flag whose value is a comma-separated list of strings.""" + parser = ListParser() + serializer = ListSerializer(',') + DEFINE(parser, name, default, help, flag_values, serializer, **args) + + +def DEFINE_spaceseplist(name, default, help, flag_values=FLAGS, **args): + """Registers a flag whose value is a whitespace-separated list of strings. + + Any whitespace can be used as a separator. + """ + parser = WhitespaceSeparatedListParser() + serializer = ListSerializer(' ') + DEFINE(parser, name, default, help, flag_values, serializer, **args) + + +# +# MULTI FLAGS +# + + +class MultiFlag(Flag): + """A flag that can appear multiple time on the command-line. + + The value of such a flag is a list that contains the individual values + from all the appearances of that flag on the command-line. + + See the __doc__ for Flag for most behavior of this class. Only + differences in behavior are described here: + + * The default value may be either a single value or a list of values. + A single value is interpreted as the [value] singleton list. + + * The value of the flag is always a list, even if the option was + only supplied once, and even if the default value is a single + value + """ + + def __init__(self, *args, **kwargs): + Flag.__init__(self, *args, **kwargs) + self.help += ';\n repeat this option to specify a list of values' + + def Parse(self, arguments): + """Parses one or more arguments with the installed parser. + + Args: + arguments: a single argument or a list of arguments (typically a + list of default values); a single argument is converted + internally into a list containing one item. + """ + if not isinstance(arguments, list): + # Default value may be a list of values. Most other arguments + # will not be, so convert them into a single-item list to make + # processing simpler below. + arguments = [arguments] + + if self.present: + # keep a backup reference to list of previously supplied option values + values = self.value + else: + # "erase" the defaults with an empty list + values = [] + + for item in arguments: + # have Flag superclass parse argument, overwriting self.value reference + Flag.Parse(self, item) # also increments self.present + values.append(self.value) + + # put list of option values back in the 'value' attribute + self.value = values + + def Serialize(self): + if not self.serializer: + raise FlagsError("Serializer not present for flag %s" % self.name) + if self.value is None: + return '' + + s = '' + + multi_value = self.value + + for self.value in multi_value: + if s: s += ' ' + s += Flag.Serialize(self) + + self.value = multi_value + + return s + + def Type(self): + return 'multi ' + self.parser.Type() + + +def DEFINE_multi(parser, serializer, name, default, help, flag_values=FLAGS, + **args): + """Registers a generic MultiFlag that parses its args with a given parser. + + Auxiliary function. Normal users should NOT use it directly. + + Developers who need to create their own 'Parser' classes for options + which can appear multiple times can call this module function to + register their flags. + """ + DEFINE_flag(MultiFlag(parser, serializer, name, default, help, **args), + flag_values) + + +def DEFINE_multistring(name, default, help, flag_values=FLAGS, **args): + """Registers a flag whose value can be a list of any strings. + + Use the flag on the command line multiple times to place multiple + string values into the list. The 'default' may be a single string + (which will be converted into a single-element list) or a list of + strings. + """ + parser = ArgumentParser() + serializer = ArgumentSerializer() + DEFINE_multi(parser, serializer, name, default, help, flag_values, **args) + + +def DEFINE_multi_int(name, default, help, lower_bound=None, upper_bound=None, + flag_values=FLAGS, **args): + """Registers a flag whose value can be a list of arbitrary integers. + + Use the flag on the command line multiple times to place multiple + integer values into the list. The 'default' may be a single integer + (which will be converted into a single-element list) or a list of + integers. + """ + parser = IntegerParser(lower_bound, upper_bound) + serializer = ArgumentSerializer() + DEFINE_multi(parser, serializer, name, default, help, flag_values, **args) + + +def DEFINE_multi_float(name, default, help, lower_bound=None, upper_bound=None, + flag_values=FLAGS, **args): + """Registers a flag whose value can be a list of arbitrary floats. + + Use the flag on the command line multiple times to place multiple + float values into the list. The 'default' may be a single float + (which will be converted into a single-element list) or a list of + floats. + """ + parser = FloatParser(lower_bound, upper_bound) + serializer = ArgumentSerializer() + DEFINE_multi(parser, serializer, name, default, help, flag_values, **args) + + +# Now register the flags that we want to exist in all applications. +# These are all defined with allow_override=1, so user-apps can use +# these flagnames for their own purposes, if they want. +DEFINE_flag(HelpFlag()) +DEFINE_flag(HelpshortFlag()) +DEFINE_flag(HelpXMLFlag()) + +# Define special flags here so that help may be generated for them. +# NOTE: Please do NOT use _SPECIAL_FLAGS from outside this module. +_SPECIAL_FLAGS = FlagValues() + + +DEFINE_string( + 'flagfile', "", + "Insert flag definitions from the given file into the command line.", + _SPECIAL_FLAGS) + +DEFINE_string( + 'undefok', "", + "comma-separated list of flag names that it is okay to specify " + "on the command line even if the program does not define a flag " + "with that name. IMPORTANT: flags in this list that have " + "arguments MUST use the --flag=value format.", _SPECIAL_FLAGS) diff --git a/third_party/gjslint/python-gflags-2.0/gflags2man.py b/third_party/gjslint/python-gflags-2.0/gflags2man.py new file mode 100755 index 0000000000..3a50f9e19f --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/gflags2man.py @@ -0,0 +1,544 @@ +#!/usr/bin/env python + +# Copyright (c) 2006, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +"""gflags2man runs a Google flags base program and generates a man page. + +Run the program, parse the output, and then format that into a man +page. + +Usage: + gflags2man [program] ... +""" + +# TODO(csilvers): work with windows paths (\) as well as unix (/) + +# This may seem a bit of an end run, but it: doesn't bloat flags, can +# support python/java/C++, supports older executables, and can be +# extended to other document formats. +# Inspired by help2man. + + + +import os +import re +import sys +import stat +import time + +import gflags + +_VERSION = '0.1' + + +def _GetDefaultDestDir(): + home = os.environ.get('HOME', '') + homeman = os.path.join(home, 'man', 'man1') + if home and os.path.exists(homeman): + return homeman + else: + return os.environ.get('TMPDIR', '/tmp') + +FLAGS = gflags.FLAGS +gflags.DEFINE_string('dest_dir', _GetDefaultDestDir(), + 'Directory to write resulting manpage to.' + ' Specify \'-\' for stdout') +gflags.DEFINE_string('help_flag', '--help', + 'Option to pass to target program in to get help') +gflags.DEFINE_integer('v', 0, 'verbosity level to use for output') + + +_MIN_VALID_USAGE_MSG = 9 # if fewer lines than this, help is suspect + + +class Logging: + """A super-simple logging class""" + def error(self, msg): print >>sys.stderr, "ERROR: ", msg + def warn(self, msg): print >>sys.stderr, "WARNING: ", msg + def info(self, msg): print msg + def debug(self, msg): self.vlog(1, msg) + def vlog(self, level, msg): + if FLAGS.v >= level: print msg +logging = Logging() +class App: + def usage(self, shorthelp=0): + print >>sys.stderr, __doc__ + print >>sys.stderr, "flags:" + print >>sys.stderr, str(FLAGS) + def run(self): + main(sys.argv) +app = App() + + +def GetRealPath(filename): + """Given an executable filename, find in the PATH or find absolute path. + Args: + filename An executable filename (string) + Returns: + Absolute version of filename. + None if filename could not be found locally, absolutely, or in PATH + """ + if os.path.isabs(filename): # already absolute + return filename + + if filename.startswith('./') or filename.startswith('../'): # relative + return os.path.abspath(filename) + + path = os.getenv('PATH', '') + for directory in path.split(':'): + tryname = os.path.join(directory, filename) + if os.path.exists(tryname): + if not os.path.isabs(directory): # relative directory + return os.path.abspath(tryname) + return tryname + if os.path.exists(filename): + return os.path.abspath(filename) + return None # could not determine + +class Flag(object): + """The information about a single flag.""" + + def __init__(self, flag_desc, help): + """Create the flag object. + Args: + flag_desc The command line forms this could take. (string) + help The help text (string) + """ + self.desc = flag_desc # the command line forms + self.help = help # the help text + self.default = '' # default value + self.tips = '' # parsing/syntax tips + + +class ProgramInfo(object): + """All the information gleaned from running a program with --help.""" + + # Match a module block start, for python scripts --help + # "goopy.logging:" + module_py_re = re.compile(r'(\S.+):$') + # match the start of a flag listing + # " -v,--verbosity: Logging verbosity" + flag_py_re = re.compile(r'\s+(-\S+):\s+(.*)$') + # " (default: '0')" + flag_default_py_re = re.compile(r'\s+\(default:\s+\'(.*)\'\)$') + # " (an integer)" + flag_tips_py_re = re.compile(r'\s+\((.*)\)$') + + # Match a module block start, for c++ programs --help + # "google/base/commandlineflags": + module_c_re = re.compile(r'\s+Flags from (\S.+):$') + # match the start of a flag listing + # " -v,--verbosity: Logging verbosity" + flag_c_re = re.compile(r'\s+(-\S+)\s+(.*)$') + + # Match a module block start, for java programs --help + # "com.google.common.flags" + module_java_re = re.compile(r'\s+Flags for (\S.+):$') + # match the start of a flag listing + # " -v,--verbosity: Logging verbosity" + flag_java_re = re.compile(r'\s+(-\S+)\s+(.*)$') + + def __init__(self, executable): + """Create object with executable. + Args: + executable Program to execute (string) + """ + self.long_name = executable + self.name = os.path.basename(executable) # name + # Get name without extension (PAR files) + (self.short_name, self.ext) = os.path.splitext(self.name) + self.executable = GetRealPath(executable) # name of the program + self.output = [] # output from the program. List of lines. + self.desc = [] # top level description. List of lines + self.modules = {} # { section_name(string), [ flags ] } + self.module_list = [] # list of module names in their original order + self.date = time.localtime(time.time()) # default date info + + def Run(self): + """Run it and collect output. + + Returns: + 1 (true) If everything went well. + 0 (false) If there were problems. + """ + if not self.executable: + logging.error('Could not locate "%s"' % self.long_name) + return 0 + + finfo = os.stat(self.executable) + self.date = time.localtime(finfo[stat.ST_MTIME]) + + logging.info('Running: %s %s &1' + % (self.executable, FLAGS.help_flag)) + # --help output is often routed to stderr, so we combine with stdout. + # Re-direct stdin to /dev/null to encourage programs that + # don't understand --help to exit. + (child_stdin, child_stdout_and_stderr) = os.popen4( + [self.executable, FLAGS.help_flag]) + child_stdin.close() # ' start_line+1 + and '' == self.output[start_line+1].rstrip()): + start_line += 2 + logging.debug('Flags start (python): %s' % line) + return (start_line, 'python') + # SWIG flags just have the module name followed by colon. + if exec_mod_start == line: + logging.debug('Flags start (swig): %s' % line) + return (start_line, 'python') + # C++ flags begin after a blank line and with a constant string + if after_blank and line.startswith(' Flags from '): + logging.debug('Flags start (c): %s' % line) + return (start_line, 'c') + # java flags begin with a constant string + if line == 'where flags are': + logging.debug('Flags start (java): %s' % line) + start_line += 2 # skip "Standard flags:" + return (start_line, 'java') + + logging.debug('Desc: %s' % line) + self.desc.append(line) + after_blank = (line == '') + else: + logging.warn('Never found the start of the flags section for "%s"!' + % self.long_name) + return (-1, '') + + def ParsePythonFlags(self, start_line=0): + """Parse python/swig style flags.""" + modname = None # name of current module + modlist = [] + flag = None + for line_num in range(start_line, len(self.output)): # collect flags + line = self.output[line_num].rstrip() + if not line: # blank + continue + + mobj = self.module_py_re.match(line) + if mobj: # start of a new module + modname = mobj.group(1) + logging.debug('Module: %s' % line) + if flag: + modlist.append(flag) + self.module_list.append(modname) + self.modules.setdefault(modname, []) + modlist = self.modules[modname] + flag = None + continue + + mobj = self.flag_py_re.match(line) + if mobj: # start of a new flag + if flag: + modlist.append(flag) + logging.debug('Flag: %s' % line) + flag = Flag(mobj.group(1), mobj.group(2)) + continue + + if not flag: # continuation of a flag + logging.error('Flag info, but no current flag "%s"' % line) + mobj = self.flag_default_py_re.match(line) + if mobj: # (default: '...') + flag.default = mobj.group(1) + logging.debug('Fdef: %s' % line) + continue + mobj = self.flag_tips_py_re.match(line) + if mobj: # (tips) + flag.tips = mobj.group(1) + logging.debug('Ftip: %s' % line) + continue + if flag and flag.help: + flag.help += line # multiflags tack on an extra line + else: + logging.info('Extra: %s' % line) + if flag: + modlist.append(flag) + + def ParseCFlags(self, start_line=0): + """Parse C style flags.""" + modname = None # name of current module + modlist = [] + flag = None + for line_num in range(start_line, len(self.output)): # collect flags + line = self.output[line_num].rstrip() + if not line: # blank lines terminate flags + if flag: # save last flag + modlist.append(flag) + flag = None + continue + + mobj = self.module_c_re.match(line) + if mobj: # start of a new module + modname = mobj.group(1) + logging.debug('Module: %s' % line) + if flag: + modlist.append(flag) + self.module_list.append(modname) + self.modules.setdefault(modname, []) + modlist = self.modules[modname] + flag = None + continue + + mobj = self.flag_c_re.match(line) + if mobj: # start of a new flag + if flag: # save last flag + modlist.append(flag) + logging.debug('Flag: %s' % line) + flag = Flag(mobj.group(1), mobj.group(2)) + continue + + # append to flag help. type and default are part of the main text + if flag: + flag.help += ' ' + line.strip() + else: + logging.info('Extra: %s' % line) + if flag: + modlist.append(flag) + + def ParseJavaFlags(self, start_line=0): + """Parse Java style flags (com.google.common.flags).""" + # The java flags prints starts with a "Standard flags" "module" + # that doesn't follow the standard module syntax. + modname = 'Standard flags' # name of current module + self.module_list.append(modname) + self.modules.setdefault(modname, []) + modlist = self.modules[modname] + flag = None + + for line_num in range(start_line, len(self.output)): # collect flags + line = self.output[line_num].rstrip() + logging.vlog(2, 'Line: "%s"' % line) + if not line: # blank lines terminate module + if flag: # save last flag + modlist.append(flag) + flag = None + continue + + mobj = self.module_java_re.match(line) + if mobj: # start of a new module + modname = mobj.group(1) + logging.debug('Module: %s' % line) + if flag: + modlist.append(flag) + self.module_list.append(modname) + self.modules.setdefault(modname, []) + modlist = self.modules[modname] + flag = None + continue + + mobj = self.flag_java_re.match(line) + if mobj: # start of a new flag + if flag: # save last flag + modlist.append(flag) + logging.debug('Flag: %s' % line) + flag = Flag(mobj.group(1), mobj.group(2)) + continue + + # append to flag help. type and default are part of the main text + if flag: + flag.help += ' ' + line.strip() + else: + logging.info('Extra: %s' % line) + if flag: + modlist.append(flag) + + def Filter(self): + """Filter parsed data to create derived fields.""" + if not self.desc: + self.short_desc = '' + return + + for i in range(len(self.desc)): # replace full path with name + if self.desc[i].find(self.executable) >= 0: + self.desc[i] = self.desc[i].replace(self.executable, self.name) + + self.short_desc = self.desc[0] + word_list = self.short_desc.split(' ') + all_names = [ self.name, self.short_name, ] + # Since the short_desc is always listed right after the name, + # trim it from the short_desc + while word_list and (word_list[0] in all_names + or word_list[0].lower() in all_names): + del word_list[0] + self.short_desc = '' # signal need to reconstruct + if not self.short_desc and word_list: + self.short_desc = ' '.join(word_list) + + +class GenerateDoc(object): + """Base class to output flags information.""" + + def __init__(self, proginfo, directory='.'): + """Create base object. + Args: + proginfo A ProgramInfo object + directory Directory to write output into + """ + self.info = proginfo + self.dirname = directory + + def Output(self): + """Output all sections of the page.""" + self.Open() + self.Header() + self.Body() + self.Footer() + + def Open(self): raise NotImplementedError # define in subclass + def Header(self): raise NotImplementedError # define in subclass + def Body(self): raise NotImplementedError # define in subclass + def Footer(self): raise NotImplementedError # define in subclass + + +class GenerateMan(GenerateDoc): + """Output a man page.""" + + def __init__(self, proginfo, directory='.'): + """Create base object. + Args: + proginfo A ProgramInfo object + directory Directory to write output into + """ + GenerateDoc.__init__(self, proginfo, directory) + + def Open(self): + if self.dirname == '-': + logging.info('Writing to stdout') + self.fp = sys.stdout + else: + self.file_path = '%s.1' % os.path.join(self.dirname, self.info.name) + logging.info('Writing: %s' % self.file_path) + self.fp = open(self.file_path, 'w') + + def Header(self): + self.fp.write( + '.\\" DO NOT MODIFY THIS FILE! It was generated by gflags2man %s\n' + % _VERSION) + self.fp.write( + '.TH %s "1" "%s" "%s" "User Commands"\n' + % (self.info.name, time.strftime('%x', self.info.date), self.info.name)) + self.fp.write( + '.SH NAME\n%s \\- %s\n' % (self.info.name, self.info.short_desc)) + self.fp.write( + '.SH SYNOPSIS\n.B %s\n[\\fIFLAGS\\fR]...\n' % self.info.name) + + def Body(self): + self.fp.write( + '.SH DESCRIPTION\n.\\" Add any additional description here\n.PP\n') + for ln in self.info.desc: + self.fp.write('%s\n' % ln) + self.fp.write( + '.SH OPTIONS\n') + # This shows flags in the original order + for modname in self.info.module_list: + if modname.find(self.info.executable) >= 0: + mod = modname.replace(self.info.executable, self.info.name) + else: + mod = modname + self.fp.write('\n.P\n.I %s\n' % mod) + for flag in self.info.modules[modname]: + help_string = flag.help + if flag.default or flag.tips: + help_string += '\n.br\n' + if flag.default: + help_string += ' (default: \'%s\')' % flag.default + if flag.tips: + help_string += ' (%s)' % flag.tips + self.fp.write( + '.TP\n%s\n%s\n' % (flag.desc, help_string)) + + def Footer(self): + self.fp.write( + '.SH COPYRIGHT\nCopyright \(co %s Google.\n' + % time.strftime('%Y', self.info.date)) + self.fp.write('Gflags2man created this page from "%s %s" output.\n' + % (self.info.name, FLAGS.help_flag)) + self.fp.write('\nGflags2man was written by Dan Christian. ' + ' Note that the date on this' + ' page is the modification date of %s.\n' % self.info.name) + + +def main(argv): + argv = FLAGS(argv) # handles help as well + if len(argv) <= 1: + app.usage(shorthelp=1) + return 1 + + for arg in argv[1:]: + prog = ProgramInfo(arg) + if not prog.Run(): + continue + prog.Parse() + prog.Filter() + doc = GenerateMan(prog, FLAGS.dest_dir) + doc.Output() + return 0 + +if __name__ == '__main__': + app.run() diff --git a/third_party/gjslint/python-gflags-2.0/gflags_validators.py b/third_party/gjslint/python-gflags-2.0/gflags_validators.py new file mode 100755 index 0000000000..d83058d50f --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/gflags_validators.py @@ -0,0 +1,187 @@ +#!/usr/bin/env python + +# Copyright (c) 2010, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Module to enforce different constraints on flags. + +A validator represents an invariant, enforced over a one or more flags. +See 'FLAGS VALIDATORS' in gflags.py's docstring for a usage manual. +""" + +__author__ = 'olexiy@google.com (Olexiy Oryeshko)' + + +class Error(Exception): + """Thrown If validator constraint is not satisfied.""" + + +class Validator(object): + """Base class for flags validators. + + Users should NOT overload these classes, and use gflags.Register... + methods instead. + """ + + # Used to assign each validator an unique insertion_index + validators_count = 0 + + def __init__(self, checker, message): + """Constructor to create all validators. + + Args: + checker: function to verify the constraint. + Input of this method varies, see SimpleValidator and + DictionaryValidator for a detailed description. + message: string, error message to be shown to the user + """ + self.checker = checker + self.message = message + Validator.validators_count += 1 + # Used to assert validators in the order they were registered (CL/18694236) + self.insertion_index = Validator.validators_count + + def Verify(self, flag_values): + """Verify that constraint is satisfied. + + flags library calls this method to verify Validator's constraint. + Args: + flag_values: gflags.FlagValues, containing all flags + Raises: + Error: if constraint is not satisfied. + """ + param = self._GetInputToCheckerFunction(flag_values) + if not self.checker(param): + raise Error(self.message) + + def GetFlagsNames(self): + """Return the names of the flags checked by this validator. + + Returns: + [string], names of the flags + """ + raise NotImplementedError('This method should be overloaded') + + def PrintFlagsWithValues(self, flag_values): + raise NotImplementedError('This method should be overloaded') + + def _GetInputToCheckerFunction(self, flag_values): + """Given flag values, construct the input to be given to checker. + + Args: + flag_values: gflags.FlagValues, containing all flags. + Returns: + Return type depends on the specific validator. + """ + raise NotImplementedError('This method should be overloaded') + + +class SimpleValidator(Validator): + """Validator behind RegisterValidator() method. + + Validates that a single flag passes its checker function. The checker function + takes the flag value and returns True (if value looks fine) or, if flag value + is not valid, either returns False or raises an Exception.""" + def __init__(self, flag_name, checker, message): + """Constructor. + + Args: + flag_name: string, name of the flag. + checker: function to verify the validator. + input - value of the corresponding flag (string, boolean, etc). + output - Boolean. Must return True if validator constraint is satisfied. + If constraint is not satisfied, it should either return False or + raise Error. + message: string, error message to be shown to the user if validator's + condition is not satisfied + """ + super(SimpleValidator, self).__init__(checker, message) + self.flag_name = flag_name + + def GetFlagsNames(self): + return [self.flag_name] + + def PrintFlagsWithValues(self, flag_values): + return 'flag --%s=%s' % (self.flag_name, flag_values[self.flag_name].value) + + def _GetInputToCheckerFunction(self, flag_values): + """Given flag values, construct the input to be given to checker. + + Args: + flag_values: gflags.FlagValues + Returns: + value of the corresponding flag. + """ + return flag_values[self.flag_name].value + + +class DictionaryValidator(Validator): + """Validator behind RegisterDictionaryValidator method. + + Validates that flag values pass their common checker function. The checker + function takes flag values and returns True (if values look fine) or, + if values are not valid, either returns False or raises an Exception. + """ + def __init__(self, flag_names, checker, message): + """Constructor. + + Args: + flag_names: [string], containing names of the flags used by checker. + checker: function to verify the validator. + input - dictionary, with keys() being flag_names, and value for each + key being the value of the corresponding flag (string, boolean, etc). + output - Boolean. Must return True if validator constraint is satisfied. + If constraint is not satisfied, it should either return False or + raise Error. + message: string, error message to be shown to the user if validator's + condition is not satisfied + """ + super(DictionaryValidator, self).__init__(checker, message) + self.flag_names = flag_names + + def _GetInputToCheckerFunction(self, flag_values): + """Given flag values, construct the input to be given to checker. + + Args: + flag_values: gflags.FlagValues + Returns: + dictionary, with keys() being self.lag_names, and value for each key + being the value of the corresponding flag (string, boolean, etc). + """ + return dict([key, flag_values[key].value] for key in self.flag_names) + + def PrintFlagsWithValues(self, flag_values): + prefix = 'flags ' + flags_with_values = [] + for key in self.flag_names: + flags_with_values.append('%s=%s' % (key, flag_values[key].value)) + return prefix + ', '.join(flags_with_values) + + def GetFlagsNames(self): + return self.flag_names diff --git a/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/PKG-INFO b/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/PKG-INFO new file mode 100644 index 0000000000..faab7198f2 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/PKG-INFO @@ -0,0 +1,10 @@ +Metadata-Version: 1.0 +Name: python-gflags +Version: 2.0 +Summary: Google Commandline Flags Module +Home-page: http://code.google.com/p/python-gflags +Author: Google Inc. and others +Author-email: google-gflags@googlegroups.com +License: BSD +Description: UNKNOWN +Platform: UNKNOWN diff --git a/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/SOURCES.txt b/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/SOURCES.txt new file mode 100644 index 0000000000..e6068dfde1 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/SOURCES.txt @@ -0,0 +1,30 @@ +AUTHORS +COPYING +ChangeLog +MANIFEST.in +Makefile +NEWS +README +gflags.py +gflags2man.py +gflags_validators.py +setup.py +debian/README +debian/changelog +debian/compat +debian/control +debian/copyright +debian/docs +debian/rules +python_gflags.egg-info/PKG-INFO +python_gflags.egg-info/SOURCES.txt +python_gflags.egg-info/dependency_links.txt +python_gflags.egg-info/top_level.txt +tests/gflags_googletest.py +tests/gflags_helpxml_test.py +tests/gflags_unittest.py +tests/gflags_validators_test.py +tests/flags_modules_for_testing/__init__.py +tests/flags_modules_for_testing/module_bar.py +tests/flags_modules_for_testing/module_baz.py +tests/flags_modules_for_testing/module_foo.py \ No newline at end of file diff --git a/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/dependency_links.txt b/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/dependency_links.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/top_level.txt b/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/top_level.txt new file mode 100644 index 0000000000..93c1fcdc74 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/python_gflags.egg-info/top_level.txt @@ -0,0 +1,2 @@ +gflags +gflags_validators diff --git a/third_party/gjslint/python-gflags-2.0/setup.cfg b/third_party/gjslint/python-gflags-2.0/setup.cfg new file mode 100644 index 0000000000..861a9f5542 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/setup.cfg @@ -0,0 +1,5 @@ +[egg_info] +tag_build = +tag_date = 0 +tag_svn_revision = 0 + diff --git a/third_party/gjslint/python-gflags-2.0/setup.py b/third_party/gjslint/python-gflags-2.0/setup.py new file mode 100755 index 0000000000..573db2d410 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/setup.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +# Copyright (c) 2007, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from setuptools import setup + +setup(name='python-gflags', + version='2.0', + description='Google Commandline Flags Module', + license='BSD', + author='Google Inc. and others', + author_email='google-gflags@googlegroups.com', + url='http://code.google.com/p/python-gflags', + py_modules=["gflags", "gflags_validators"], + data_files=[("bin", ["gflags2man.py"])], + include_package_data=True, + ) diff --git a/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/__init__.py b/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_bar.py b/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_bar.py new file mode 100755 index 0000000000..230627f23a --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_bar.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python + +# Copyright (c) 2009, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +"""Auxiliary module for testing gflags.py. + +The purpose of this module is to define a few flags. We want to make +sure the unit tests for gflags.py involve more than one module. +""" + +__author__ = 'salcianu@google.com (Alex Salcianu)' + +__pychecker__ = 'no-local' # for unittest + +import gflags + +FLAGS = gflags.FLAGS + + +def DefineFlags(flag_values=FLAGS): + """Defines some flags. + + Args: + flag_values: The FlagValues object we want to register the flags + with. + """ + # The 'tmod_bar_' prefix (short for 'test_module_bar') ensures there + # is no name clash with the existing flags. + gflags.DEFINE_boolean('tmod_bar_x', True, 'Boolean flag.', + flag_values=flag_values) + gflags.DEFINE_string('tmod_bar_y', 'default', 'String flag.', + flag_values=flag_values) + gflags.DEFINE_boolean('tmod_bar_z', False, + 'Another boolean flag from module bar.', + flag_values=flag_values) + gflags.DEFINE_integer('tmod_bar_t', 4, 'Sample int flag.', + flag_values=flag_values) + gflags.DEFINE_integer('tmod_bar_u', 5, 'Sample int flag.', + flag_values=flag_values) + gflags.DEFINE_integer('tmod_bar_v', 6, 'Sample int flag.', + flag_values=flag_values) + + +def RemoveOneFlag(flag_name, flag_values=FLAGS): + """Removes the definition of one flag from gflags.FLAGS. + + Note: if the flag is not defined in gflags.FLAGS, this function does + not do anything (in particular, it does not raise any exception). + + Motivation: We use this function for cleanup *after* a test: if + there was a failure during a test and not all flags were declared, + we do not want the cleanup code to crash. + + Args: + flag_name: A string, the name of the flag to delete. + flag_values: The FlagValues object we remove the flag from. + """ + if flag_name in flag_values.FlagDict(): + flag_values.__delattr__(flag_name) + + +def NamesOfDefinedFlags(): + """Returns: List of names of the flags declared in this module.""" + return ['tmod_bar_x', + 'tmod_bar_y', + 'tmod_bar_z', + 'tmod_bar_t', + 'tmod_bar_u', + 'tmod_bar_v'] + + +def RemoveFlags(flag_values=FLAGS): + """Deletes the flag definitions done by the above DefineFlags(). + + Args: + flag_values: The FlagValues object we remove the flags from. + """ + for flag_name in NamesOfDefinedFlags(): + RemoveOneFlag(flag_name, flag_values=flag_values) + + +def GetModuleName(): + """Uses gflags._GetCallingModule() to return the name of this module. + + For checking that _GetCallingModule works as expected. + + Returns: + A string, the name of this module. + """ + # Calling the protected _GetCallingModule generates a lint warning, + # but we do not have any other alternative to test that function. + return gflags._GetCallingModule() + + +def ExecuteCode(code, global_dict): + """Executes some code in a given global environment. + + For testing of _GetCallingModule. + + Args: + code: A string, the code to be executed. + global_dict: A dictionary, the global environment that code should + be executed in. + """ + # Indeed, using exec generates a lint warning. But some user code + # actually uses exec, and we have to test for it ... + exec code in global_dict diff --git a/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_baz.py b/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_baz.py new file mode 100755 index 0000000000..2719c950ad --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_baz.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python + +# Copyright (c) 2009, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Auxiliary module for testing gflags.py. + +The purpose of this module is to test the behavior of flags that are defined +before main() executes. +""" + + + + +import gflags + +FLAGS = gflags.FLAGS + +gflags.DEFINE_boolean('tmod_baz_x', True, 'Boolean flag.') diff --git a/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_foo.py b/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_foo.py new file mode 100755 index 0000000000..760a37cc7b --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/tests/flags_modules_for_testing/module_foo.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python +# +# Copyright (c) 2009, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Auxiliary module for testing gflags.py. + +The purpose of this module is to define a few flags, and declare some +other flags as being important. We want to make sure the unit tests +for gflags.py involve more than one module. +""" + +__author__ = 'salcianu@google.com (Alex Salcianu)' + +__pychecker__ = 'no-local' # for unittest + +import gflags +from flags_modules_for_testing import module_bar + +FLAGS = gflags.FLAGS + + +DECLARED_KEY_FLAGS = ['tmod_bar_x', 'tmod_bar_z', 'tmod_bar_t', + # Special (not user-defined) flag: + 'flagfile'] + + +def DefineFlags(flag_values=FLAGS): + """Defines a few flags.""" + module_bar.DefineFlags(flag_values=flag_values) + # The 'tmod_foo_' prefix (short for 'test_module_foo') ensures that we + # have no name clash with existing flags. + gflags.DEFINE_boolean('tmod_foo_bool', True, 'Boolean flag from module foo.', + flag_values=flag_values) + gflags.DEFINE_string('tmod_foo_str', 'default', 'String flag.', + flag_values=flag_values) + gflags.DEFINE_integer('tmod_foo_int', 3, 'Sample int flag.', + flag_values=flag_values) + + +def DeclareKeyFlags(flag_values=FLAGS): + """Declares a few key flags.""" + for flag_name in DECLARED_KEY_FLAGS: + gflags.DECLARE_key_flag(flag_name, flag_values=flag_values) + + +def DeclareExtraKeyFlags(flag_values=FLAGS): + """Declares some extra key flags.""" + gflags.ADOPT_module_key_flags(module_bar, flag_values=flag_values) + + +def NamesOfDefinedFlags(): + """Returns: list of names of flags defined by this module.""" + return ['tmod_foo_bool', 'tmod_foo_str', 'tmod_foo_int'] + + +def NamesOfDeclaredKeyFlags(): + """Returns: list of names of key flags for this module.""" + return NamesOfDefinedFlags() + DECLARED_KEY_FLAGS + + +def NamesOfDeclaredExtraKeyFlags(): + """Returns the list of names of additional key flags for this module. + + These are the flags that became key for this module only as a result + of a call to DeclareExtraKeyFlags() above. I.e., the flags declared + by module_bar, that were not already declared as key for this + module. + + Returns: + The list of names of additional key flags for this module. + """ + names_of_extra_key_flags = list(module_bar.NamesOfDefinedFlags()) + for flag_name in NamesOfDeclaredKeyFlags(): + while flag_name in names_of_extra_key_flags: + names_of_extra_key_flags.remove(flag_name) + return names_of_extra_key_flags + + +def RemoveFlags(flag_values=FLAGS): + """Deletes the flag definitions done by the above DefineFlags().""" + for flag_name in NamesOfDefinedFlags(): + module_bar.RemoveOneFlag(flag_name, flag_values=flag_values) + module_bar.RemoveFlags(flag_values=flag_values) + + +def GetModuleName(): + """Uses gflags._GetCallingModule() to return the name of this module. + + For checking that _GetCallingModule works as expected. + + Returns: + A string, the name of this module. + """ + # Calling the protected _GetCallingModule generates a lint warning, + # but we do not have any other alternative to test that function. + return gflags._GetCallingModule() + + +def DuplicateFlags(flagnames=None): + """Returns a new FlagValues object with the requested flagnames. + + Used to test DuplicateFlagError detection. + + Args: + flagnames: str, A list of flag names to create. + + Returns: + A FlagValues object with one boolean flag for each name in flagnames. + """ + flag_values = gflags.FlagValues() + for name in flagnames: + gflags.DEFINE_boolean(name, False, 'Flag named %s' % (name,), + flag_values=flag_values) + return flag_values diff --git a/third_party/gjslint/python-gflags-2.0/tests/gflags_googletest.py b/third_party/gjslint/python-gflags-2.0/tests/gflags_googletest.py new file mode 100644 index 0000000000..9ae614ce80 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/tests/gflags_googletest.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python + +# Copyright (c) 2011, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Some simple additions to the unittest framework useful for gflags testing.""" + + + +import re +import unittest + + +def Sorted(lst): + """Equivalent of sorted(), but not dependent on python version.""" + sorted_list = lst[:] + sorted_list.sort() + return sorted_list + + +def MultiLineEqual(expected, actual): + """Returns True if expected == actual, or returns False and logs.""" + if actual == expected: + return True + + print "Error: FLAGS.MainModuleHelp() didn't return the expected result." + print "Got:" + print actual + print "[End of got]" + + actual_lines = actual.split("\n") + expected_lines = expected.split("\n") + + num_actual_lines = len(actual_lines) + num_expected_lines = len(expected_lines) + + if num_actual_lines != num_expected_lines: + print "Number of actual lines = %d, expected %d" % ( + num_actual_lines, num_expected_lines) + + num_to_match = min(num_actual_lines, num_expected_lines) + + for i in range(num_to_match): + if actual_lines[i] != expected_lines[i]: + print "One discrepancy: Got:" + print actual_lines[i] + print "Expected:" + print expected_lines[i] + break + else: + # If we got here, found no discrepancy, print first new line. + if num_actual_lines > num_expected_lines: + print "New help line:" + print actual_lines[num_expected_lines] + elif num_expected_lines > num_actual_lines: + print "Missing expected help line:" + print expected_lines[num_actual_lines] + else: + print "Bug in this test -- discrepancy detected but not found." + + return False + + +class TestCase(unittest.TestCase): + def assertListEqual(self, list1, list2): + """Asserts that, when sorted, list1 and list2 are identical.""" + # This exists in python 2.7, but not previous versions. Use the + # built-in version if possible. + if hasattr(unittest.TestCase, "assertListEqual"): + unittest.TestCase.assertListEqual(self, Sorted(list1), Sorted(list2)) + else: + self.assertEqual(Sorted(list1), Sorted(list2)) + + def assertMultiLineEqual(self, expected, actual): + # This exists in python 2.7, but not previous versions. Use the + # built-in version if possible. + if hasattr(unittest.TestCase, "assertMultiLineEqual"): + unittest.TestCase.assertMultiLineEqual(self, expected, actual) + else: + self.assertTrue(MultiLineEqual(expected, actual)) + + def assertRaisesWithRegexpMatch(self, exception, regexp, fn, *args, **kwargs): + try: + fn(*args, **kwargs) + except exception, why: + self.assertTrue(re.search(regexp, str(why)), + "'%s' does not match '%s'" % (regexp, why)) + return + self.fail(exception.__name__ + " not raised") + + +def main(): + unittest.main() diff --git a/third_party/gjslint/python-gflags-2.0/tests/gflags_helpxml_test.py b/third_party/gjslint/python-gflags-2.0/tests/gflags_helpxml_test.py new file mode 100755 index 0000000000..fd78004b73 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/tests/gflags_helpxml_test.py @@ -0,0 +1,535 @@ +#!/usr/bin/env python + +# Copyright (c) 2009, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit tests for the XML-format help generated by the gflags.py module.""" + +__author__ = 'salcianu@google.com (Alex Salcianu)' + + +import string +import StringIO +import sys +import xml.dom.minidom +import xml.sax.saxutils +import gflags_googletest as googletest +import gflags +from flags_modules_for_testing import module_bar + + +class _MakeXMLSafeTest(googletest.TestCase): + + def _Check(self, s, expected_output): + self.assertEqual(gflags._MakeXMLSafe(s), expected_output) + + def testMakeXMLSafe(self): + self._Check('plain text', 'plain text') + self._Check('(x < y) && (a >= b)', + '(x < y) && (a >= b)') + # Some characters with ASCII code < 32 are illegal in XML 1.0 and + # are removed by us. However, '\n', '\t', and '\r' are legal. + self._Check('\x09\x0btext \x02 with\x0dsome \x08 good & bad chars', + '\ttext with\rsome good & bad chars') + + +def _ListSeparatorsInXMLFormat(separators, indent=''): + """Generates XML encoding of a list of list separators. + + Args: + separators: A list of list separators. Usually, this should be a + string whose characters are the valid list separators, e.g., ',' + means that both comma (',') and space (' ') are valid list + separators. + indent: A string that is added at the beginning of each generated + XML element. + + Returns: + A string. + """ + result = '' + separators = list(separators) + separators.sort() + for sep_char in separators: + result += ('%s%s\n' % + (indent, repr(sep_char))) + return result + + +class WriteFlagHelpInXMLFormatTest(googletest.TestCase): + """Test the XML-format help for a single flag at a time. + + There is one test* method for each kind of DEFINE_* declaration. + """ + + def setUp(self): + # self.fv is a FlagValues object, just like gflags.FLAGS. Each + # test registers one flag with this FlagValues. + self.fv = gflags.FlagValues() + + def _CheckFlagHelpInXML(self, flag_name, module_name, + expected_output, is_key=False): + # StringIO.StringIO is a file object that writes into a memory string. + sio = StringIO.StringIO() + flag_obj = self.fv[flag_name] + flag_obj.WriteInfoInXMLFormat(sio, module_name, is_key=is_key, indent=' ') + self.assertMultiLineEqual(sio.getvalue(), expected_output) + sio.close() + + def testFlagHelpInXML_Int(self): + gflags.DEFINE_integer('index', 17, 'An integer flag', flag_values=self.fv) + expected_output_pattern = ( + ' \n' + ' module.name\n' + ' index\n' + ' An integer flag\n' + ' 17\n' + ' %d\n' + ' int\n' + ' \n') + self._CheckFlagHelpInXML('index', 'module.name', + expected_output_pattern % 17) + # Check that the output is correct even when the current value of + # a flag is different from the default one. + self.fv['index'].value = 20 + self._CheckFlagHelpInXML('index', 'module.name', + expected_output_pattern % 20) + + def testFlagHelpInXML_IntWithBounds(self): + gflags.DEFINE_integer('nb_iters', 17, 'An integer flag', + lower_bound=5, upper_bound=27, + flag_values=self.fv) + expected_output = ( + ' \n' + ' yes\n' + ' module.name\n' + ' nb_iters\n' + ' An integer flag\n' + ' 17\n' + ' 17\n' + ' int\n' + ' 5\n' + ' 27\n' + ' \n') + self._CheckFlagHelpInXML('nb_iters', 'module.name', + expected_output, is_key=True) + + def testFlagHelpInXML_String(self): + gflags.DEFINE_string('file_path', '/path/to/my/dir', 'A test string flag.', + flag_values=self.fv) + expected_output = ( + ' \n' + ' simple_module\n' + ' file_path\n' + ' A test string flag.\n' + ' /path/to/my/dir\n' + ' /path/to/my/dir\n' + ' string\n' + ' \n') + self._CheckFlagHelpInXML('file_path', 'simple_module', + expected_output) + + def testFlagHelpInXML_StringWithXMLIllegalChars(self): + gflags.DEFINE_string('file_path', '/path/to/\x08my/dir', + 'A test string flag.', flag_values=self.fv) + # '\x08' is not a legal character in XML 1.0 documents. Our + # current code purges such characters from the generated XML. + expected_output = ( + ' \n' + ' simple_module\n' + ' file_path\n' + ' A test string flag.\n' + ' /path/to/my/dir\n' + ' /path/to/my/dir\n' + ' string\n' + ' \n') + self._CheckFlagHelpInXML('file_path', 'simple_module', + expected_output) + + def testFlagHelpInXML_Boolean(self): + gflags.DEFINE_boolean('use_hack', False, 'Use performance hack', + flag_values=self.fv) + expected_output = ( + ' \n' + ' yes\n' + ' a_module\n' + ' use_hack\n' + ' Use performance hack\n' + ' false\n' + ' false\n' + ' bool\n' + ' \n') + self._CheckFlagHelpInXML('use_hack', 'a_module', + expected_output, is_key=True) + + def testFlagHelpInXML_Enum(self): + gflags.DEFINE_enum('cc_version', 'stable', ['stable', 'experimental'], + 'Compiler version to use.', flag_values=self.fv) + expected_output = ( + ' \n' + ' tool\n' + ' cc_version\n' + ' <stable|experimental>: ' + 'Compiler version to use.\n' + ' stable\n' + ' stable\n' + ' string enum\n' + ' stable\n' + ' experimental\n' + ' \n') + self._CheckFlagHelpInXML('cc_version', 'tool', expected_output) + + def testFlagHelpInXML_CommaSeparatedList(self): + gflags.DEFINE_list('files', 'a.cc,a.h,archive/old.zip', + 'Files to process.', flag_values=self.fv) + expected_output = ( + ' \n' + ' tool\n' + ' files\n' + ' Files to process.\n' + ' a.cc,a.h,archive/old.zip\n' + ' [\'a.cc\', \'a.h\', \'archive/old.zip\']\n' + ' comma separated list of strings\n' + ' \',\'\n' + ' \n') + self._CheckFlagHelpInXML('files', 'tool', expected_output) + + def testListAsDefaultArgument_CommaSeparatedList(self): + gflags.DEFINE_list('allow_users', ['alice', 'bob'], + 'Users with access.', flag_values=self.fv) + expected_output = ( + ' \n' + ' tool\n' + ' allow_users\n' + ' Users with access.\n' + ' alice,bob\n' + ' [\'alice\', \'bob\']\n' + ' comma separated list of strings\n' + ' \',\'\n' + ' \n') + self._CheckFlagHelpInXML('allow_users', 'tool', expected_output) + + def testFlagHelpInXML_SpaceSeparatedList(self): + gflags.DEFINE_spaceseplist('dirs', 'src libs bin', + 'Directories to search.', flag_values=self.fv) + expected_output = ( + ' \n' + ' tool\n' + ' dirs\n' + ' Directories to search.\n' + ' src libs bin\n' + ' [\'src\', \'libs\', \'bin\']\n' + ' whitespace separated list of strings\n' + 'LIST_SEPARATORS' + ' \n').replace('LIST_SEPARATORS', + _ListSeparatorsInXMLFormat(string.whitespace, + indent=' ')) + self._CheckFlagHelpInXML('dirs', 'tool', expected_output) + + def testFlagHelpInXML_MultiString(self): + gflags.DEFINE_multistring('to_delete', ['a.cc', 'b.h'], + 'Files to delete', flag_values=self.fv) + expected_output = ( + ' \n' + ' tool\n' + ' to_delete\n' + ' Files to delete;\n ' + 'repeat this option to specify a list of values\n' + ' [\'a.cc\', \'b.h\']\n' + ' [\'a.cc\', \'b.h\']\n' + ' multi string\n' + ' \n') + self._CheckFlagHelpInXML('to_delete', 'tool', expected_output) + + def testFlagHelpInXML_MultiInt(self): + gflags.DEFINE_multi_int('cols', [5, 7, 23], + 'Columns to select', flag_values=self.fv) + expected_output = ( + ' \n' + ' tool\n' + ' cols\n' + ' Columns to select;\n ' + 'repeat this option to specify a list of values\n' + ' [5, 7, 23]\n' + ' [5, 7, 23]\n' + ' multi int\n' + ' \n') + self._CheckFlagHelpInXML('cols', 'tool', expected_output) + + +# The next EXPECTED_HELP_XML_* constants are parts of a template for +# the expected XML output from WriteHelpInXMLFormatTest below. When +# we assemble these parts into a single big string, we'll take into +# account the ordering between the name of the main module and the +# name of module_bar. Next, we'll fill in the docstring for this +# module (%(usage_doc)s), the name of the main module +# (%(main_module_name)s) and the name of the module module_bar +# (%(module_bar_name)s). See WriteHelpInXMLFormatTest below. +# +# NOTE: given the current implementation of _GetMainModule(), we +# already know the ordering between the main module and module_bar. +# However, there is no guarantee that _GetMainModule will never be +# changed in the future (especially since it's far from perfect). +EXPECTED_HELP_XML_START = """\ + + + gflags_helpxml_test.py + %(usage_doc)s +""" + +EXPECTED_HELP_XML_FOR_FLAGS_FROM_MAIN_MODULE = """\ + + yes + %(main_module_name)s + allow_users + Users with access. + alice,bob + ['alice', 'bob'] + comma separated list of strings + ',' + + + yes + %(main_module_name)s + cc_version + <stable|experimental>: Compiler version to use. + stable + stable + string enum + stable + experimental + + + yes + %(main_module_name)s + cols + Columns to select; + repeat this option to specify a list of values + [5, 7, 23] + [5, 7, 23] + multi int + + + yes + %(main_module_name)s + dirs + Directories to create. + src libs bins + ['src', 'libs', 'bins'] + whitespace separated list of strings +%(whitespace_separators)s + + yes + %(main_module_name)s + file_path + A test string flag. + /path/to/my/dir + /path/to/my/dir + string + + + yes + %(main_module_name)s + files + Files to process. + a.cc,a.h,archive/old.zip + ['a.cc', 'a.h', 'archive/old.zip'] + comma separated list of strings + \',\' + + + yes + %(main_module_name)s + index + An integer flag + 17 + 17 + int + + + yes + %(main_module_name)s + nb_iters + An integer flag + 17 + 17 + int + 5 + 27 + + + yes + %(main_module_name)s + to_delete + Files to delete; + repeat this option to specify a list of values + ['a.cc', 'b.h'] + ['a.cc', 'b.h'] + multi string + + + yes + %(main_module_name)s + use_hack + Use performance hack + false + false + bool + +""" + +EXPECTED_HELP_XML_FOR_FLAGS_FROM_MODULE_BAR = """\ + + %(module_bar_name)s + tmod_bar_t + Sample int flag. + 4 + 4 + int + + + yes + %(module_bar_name)s + tmod_bar_u + Sample int flag. + 5 + 5 + int + + + %(module_bar_name)s + tmod_bar_v + Sample int flag. + 6 + 6 + int + + + %(module_bar_name)s + tmod_bar_x + Boolean flag. + true + true + bool + + + %(module_bar_name)s + tmod_bar_y + String flag. + default + default + string + + + yes + %(module_bar_name)s + tmod_bar_z + Another boolean flag from module bar. + false + false + bool + +""" + +EXPECTED_HELP_XML_END = """\ + +""" + + +class WriteHelpInXMLFormatTest(googletest.TestCase): + """Big test of FlagValues.WriteHelpInXMLFormat, with several flags.""" + + def testWriteHelpInXMLFormat(self): + fv = gflags.FlagValues() + # Since these flags are defined by the top module, they are all key. + gflags.DEFINE_integer('index', 17, 'An integer flag', flag_values=fv) + gflags.DEFINE_integer('nb_iters', 17, 'An integer flag', + lower_bound=5, upper_bound=27, flag_values=fv) + gflags.DEFINE_string('file_path', '/path/to/my/dir', 'A test string flag.', + flag_values=fv) + gflags.DEFINE_boolean('use_hack', False, 'Use performance hack', + flag_values=fv) + gflags.DEFINE_enum('cc_version', 'stable', ['stable', 'experimental'], + 'Compiler version to use.', flag_values=fv) + gflags.DEFINE_list('files', 'a.cc,a.h,archive/old.zip', + 'Files to process.', flag_values=fv) + gflags.DEFINE_list('allow_users', ['alice', 'bob'], + 'Users with access.', flag_values=fv) + gflags.DEFINE_spaceseplist('dirs', 'src libs bins', + 'Directories to create.', flag_values=fv) + gflags.DEFINE_multistring('to_delete', ['a.cc', 'b.h'], + 'Files to delete', flag_values=fv) + gflags.DEFINE_multi_int('cols', [5, 7, 23], + 'Columns to select', flag_values=fv) + # Define a few flags in a different module. + module_bar.DefineFlags(flag_values=fv) + # And declare only a few of them to be key. This way, we have + # different kinds of flags, defined in different modules, and not + # all of them are key flags. + gflags.DECLARE_key_flag('tmod_bar_z', flag_values=fv) + gflags.DECLARE_key_flag('tmod_bar_u', flag_values=fv) + + # Generate flag help in XML format in the StringIO sio. + sio = StringIO.StringIO() + fv.WriteHelpInXMLFormat(sio) + + # Check that we got the expected result. + expected_output_template = EXPECTED_HELP_XML_START + main_module_name = gflags._GetMainModule() + module_bar_name = module_bar.__name__ + + if main_module_name < module_bar_name: + expected_output_template += EXPECTED_HELP_XML_FOR_FLAGS_FROM_MAIN_MODULE + expected_output_template += EXPECTED_HELP_XML_FOR_FLAGS_FROM_MODULE_BAR + else: + expected_output_template += EXPECTED_HELP_XML_FOR_FLAGS_FROM_MODULE_BAR + expected_output_template += EXPECTED_HELP_XML_FOR_FLAGS_FROM_MAIN_MODULE + + expected_output_template += EXPECTED_HELP_XML_END + + # XML representation of the whitespace list separators. + whitespace_separators = _ListSeparatorsInXMLFormat(string.whitespace, + indent=' ') + expected_output = ( + expected_output_template % + {'usage_doc': sys.modules['__main__'].__doc__, + 'main_module_name': main_module_name, + 'module_bar_name': module_bar_name, + 'whitespace_separators': whitespace_separators}) + + actual_output = sio.getvalue() + self.assertMultiLineEqual(actual_output, expected_output) + + # Also check that our result is valid XML. minidom.parseString + # throws an xml.parsers.expat.ExpatError in case of an error. + xml.dom.minidom.parseString(actual_output) + + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/gjslint/python-gflags-2.0/tests/gflags_unittest.py b/third_party/gjslint/python-gflags-2.0/tests/gflags_unittest.py new file mode 100755 index 0000000000..8e948bf36f --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/tests/gflags_unittest.py @@ -0,0 +1,1949 @@ +#!/usr/bin/env python + +# Copyright (c) 2007, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"Unittest for gflags.py module" + +__pychecker__ = "no-local" # for unittest + + +import cStringIO +import sys +import os +import shutil + +import gflags +from flags_modules_for_testing import module_foo +from flags_modules_for_testing import module_bar +from flags_modules_for_testing import module_baz + +FLAGS=gflags.FLAGS + +import gflags_googletest as googletest + +# TODO(csilvers): add a wrapper function around FLAGS(argv) that +# verifies the input is a list or tuple. This avoids bugs where we +# make argv a string instead of a list, by mistake. + +class FlagsUnitTest(googletest.TestCase): + "Flags Unit Test" + + def setUp(self): + # make sure we are using the old, stupid way of parsing flags. + FLAGS.UseGnuGetOpt(False) + + def test_flags(self): + + ############################################## + # Test normal usage with no (expected) errors. + + # Define flags + number_test_framework_flags = len(FLAGS.RegisteredFlags()) + repeatHelp = "how many times to repeat (0-5)" + gflags.DEFINE_integer("repeat", 4, repeatHelp, + lower_bound=0, short_name='r') + gflags.DEFINE_string("name", "Bob", "namehelp") + gflags.DEFINE_boolean("debug", 0, "debughelp") + gflags.DEFINE_boolean("q", 1, "quiet mode") + gflags.DEFINE_boolean("quack", 0, "superstring of 'q'") + gflags.DEFINE_boolean("noexec", 1, "boolean flag with no as prefix") + gflags.DEFINE_integer("x", 3, "how eXtreme to be") + gflags.DEFINE_integer("l", 0x7fffffff00000000, "how long to be") + gflags.DEFINE_list('letters', 'a,b,c', "a list of letters") + gflags.DEFINE_list('numbers', [1, 2, 3], "a list of numbers") + gflags.DEFINE_enum("kwery", None, ['who', 'what', 'why', 'where', 'when'], + "?") + + # Specify number of flags defined above. The short_name defined + # for 'repeat' counts as an extra flag. + number_defined_flags = 11 + 1 + self.assertEqual(len(FLAGS.RegisteredFlags()), + number_defined_flags + number_test_framework_flags) + + assert FLAGS.repeat == 4, "integer default values not set:" + FLAGS.repeat + assert FLAGS.name == 'Bob', "default values not set:" + FLAGS.name + assert FLAGS.debug == 0, "boolean default values not set:" + FLAGS.debug + assert FLAGS.q == 1, "boolean default values not set:" + FLAGS.q + assert FLAGS.x == 3, "integer default values not set:" + FLAGS.x + assert FLAGS.l == 0x7fffffff00000000, ("integer default values not set:" + + FLAGS.l) + assert FLAGS.letters == ['a', 'b', 'c'], ("list default values not set:" + + FLAGS.letters) + assert FLAGS.numbers == [1, 2, 3], ("list default values not set:" + + FLAGS.numbers) + assert FLAGS.kwery is None, ("enum default None value not set:" + + FLAGS.kwery) + + flag_values = FLAGS.FlagValuesDict() + assert flag_values['repeat'] == 4 + assert flag_values['name'] == 'Bob' + assert flag_values['debug'] == 0 + assert flag_values['r'] == 4 # short for repeat + assert flag_values['q'] == 1 + assert flag_values['quack'] == 0 + assert flag_values['x'] == 3 + assert flag_values['l'] == 0x7fffffff00000000 + assert flag_values['letters'] == ['a', 'b', 'c'] + assert flag_values['numbers'] == [1, 2, 3] + assert flag_values['kwery'] is None + + # Verify string form of defaults + assert FLAGS['repeat'].default_as_str == "'4'" + assert FLAGS['name'].default_as_str == "'Bob'" + assert FLAGS['debug'].default_as_str == "'false'" + assert FLAGS['q'].default_as_str == "'true'" + assert FLAGS['quack'].default_as_str == "'false'" + assert FLAGS['noexec'].default_as_str == "'true'" + assert FLAGS['x'].default_as_str == "'3'" + assert FLAGS['l'].default_as_str == "'9223372032559808512'" + assert FLAGS['letters'].default_as_str == "'a,b,c'" + assert FLAGS['numbers'].default_as_str == "'1,2,3'" + + # Verify that the iterator for flags yields all the keys + keys = list(FLAGS) + keys.sort() + reg_flags = FLAGS.RegisteredFlags() + reg_flags.sort() + self.assertEqual(keys, reg_flags) + + # Parse flags + # .. empty command line + argv = ('./program',) + argv = FLAGS(argv) + assert len(argv) == 1, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + + # .. non-empty command line + argv = ('./program', '--debug', '--name=Bob', '-q', '--x=8') + argv = FLAGS(argv) + assert len(argv) == 1, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert FLAGS['debug'].present == 1 + FLAGS['debug'].present = 0 # Reset + assert FLAGS['name'].present == 1 + FLAGS['name'].present = 0 # Reset + assert FLAGS['q'].present == 1 + FLAGS['q'].present = 0 # Reset + assert FLAGS['x'].present == 1 + FLAGS['x'].present = 0 # Reset + + # Flags list + self.assertEqual(len(FLAGS.RegisteredFlags()), + number_defined_flags + number_test_framework_flags) + assert 'name' in FLAGS.RegisteredFlags() + assert 'debug' in FLAGS.RegisteredFlags() + assert 'repeat' in FLAGS.RegisteredFlags() + assert 'r' in FLAGS.RegisteredFlags() + assert 'q' in FLAGS.RegisteredFlags() + assert 'quack' in FLAGS.RegisteredFlags() + assert 'x' in FLAGS.RegisteredFlags() + assert 'l' in FLAGS.RegisteredFlags() + assert 'letters' in FLAGS.RegisteredFlags() + assert 'numbers' in FLAGS.RegisteredFlags() + + # has_key + assert FLAGS.has_key('name') + assert not FLAGS.has_key('name2') + assert 'name' in FLAGS + assert 'name2' not in FLAGS + + # try deleting a flag + del FLAGS.r + self.assertEqual(len(FLAGS.RegisteredFlags()), + number_defined_flags - 1 + number_test_framework_flags) + assert not 'r' in FLAGS.RegisteredFlags() + + # .. command line with extra stuff + argv = ('./program', '--debug', '--name=Bob', 'extra') + argv = FLAGS(argv) + assert len(argv) == 2, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert argv[1]=='extra', "extra argument not preserved" + assert FLAGS['debug'].present == 1 + FLAGS['debug'].present = 0 # Reset + assert FLAGS['name'].present == 1 + FLAGS['name'].present = 0 # Reset + + # Test reset + argv = ('./program', '--debug') + argv = FLAGS(argv) + assert len(argv) == 1, "wrong number of arguments pulled" + assert argv[0] == './program', "program name not preserved" + assert FLAGS['debug'].present == 1 + assert FLAGS['debug'].value + FLAGS.Reset() + assert FLAGS['debug'].present == 0 + assert not FLAGS['debug'].value + + # Test that reset restores default value when default value is None. + argv = ('./program', '--kwery=who') + argv = FLAGS(argv) + assert len(argv) == 1, "wrong number of arguments pulled" + assert argv[0] == './program', "program name not preserved" + assert FLAGS['kwery'].present == 1 + assert FLAGS['kwery'].value == 'who' + FLAGS.Reset() + assert FLAGS['kwery'].present == 0 + assert FLAGS['kwery'].value == None + + # Test integer argument passing + argv = ('./program', '--x', '0x12345') + argv = FLAGS(argv) + self.assertEquals(FLAGS.x, 0x12345) + self.assertEquals(type(FLAGS.x), int) + + argv = ('./program', '--x', '0x1234567890ABCDEF1234567890ABCDEF') + argv = FLAGS(argv) + self.assertEquals(FLAGS.x, 0x1234567890ABCDEF1234567890ABCDEF) + self.assertEquals(type(FLAGS.x), long) + + # Treat 0-prefixed parameters as base-10, not base-8 + argv = ('./program', '--x', '012345') + argv = FLAGS(argv) + self.assertEquals(FLAGS.x, 12345) + self.assertEquals(type(FLAGS.x), int) + + argv = ('./program', '--x', '0123459') + argv = FLAGS(argv) + self.assertEquals(FLAGS.x, 123459) + self.assertEquals(type(FLAGS.x), int) + + argv = ('./program', '--x', '0x123efg') + try: + argv = FLAGS(argv) + raise AssertionError("failed to detect invalid hex argument") + except gflags.IllegalFlagValue: + pass + + # Test boolean argument parsing + gflags.DEFINE_boolean("test0", None, "test boolean parsing") + argv = ('./program', '--notest0') + argv = FLAGS(argv) + assert FLAGS.test0 == 0 + + gflags.DEFINE_boolean("test1", None, "test boolean parsing") + argv = ('./program', '--test1') + argv = FLAGS(argv) + assert FLAGS.test1 == 1 + + FLAGS.test0 = None + argv = ('./program', '--test0=false') + argv = FLAGS(argv) + assert FLAGS.test0 == 0 + + FLAGS.test1 = None + argv = ('./program', '--test1=true') + argv = FLAGS(argv) + assert FLAGS.test1 == 1 + + FLAGS.test0 = None + argv = ('./program', '--test0=0') + argv = FLAGS(argv) + assert FLAGS.test0 == 0 + + FLAGS.test1 = None + argv = ('./program', '--test1=1') + argv = FLAGS(argv) + assert FLAGS.test1 == 1 + + # Test booleans that already have 'no' as a prefix + FLAGS.noexec = None + argv = ('./program', '--nonoexec', '--name', 'Bob') + argv = FLAGS(argv) + assert FLAGS.noexec == 0 + + FLAGS.noexec = None + argv = ('./program', '--name', 'Bob', '--noexec') + argv = FLAGS(argv) + assert FLAGS.noexec == 1 + + # Test unassigned booleans + gflags.DEFINE_boolean("testnone", None, "test boolean parsing") + argv = ('./program',) + argv = FLAGS(argv) + assert FLAGS.testnone == None + + # Test get with default + gflags.DEFINE_boolean("testget1", None, "test parsing with defaults") + gflags.DEFINE_boolean("testget2", None, "test parsing with defaults") + gflags.DEFINE_boolean("testget3", None, "test parsing with defaults") + gflags.DEFINE_integer("testget4", None, "test parsing with defaults") + argv = ('./program','--testget1','--notestget2') + argv = FLAGS(argv) + assert FLAGS.get('testget1', 'foo') == 1 + assert FLAGS.get('testget2', 'foo') == 0 + assert FLAGS.get('testget3', 'foo') == 'foo' + assert FLAGS.get('testget4', 'foo') == 'foo' + + # test list code + lists = [['hello','moo','boo','1'], + [],] + + gflags.DEFINE_list('testlist', '', 'test lists parsing') + gflags.DEFINE_spaceseplist('testspacelist', '', 'tests space lists parsing') + + for name, sep in (('testlist', ','), ('testspacelist', ' '), + ('testspacelist', '\n')): + for lst in lists: + argv = ('./program', '--%s=%s' % (name, sep.join(lst))) + argv = FLAGS(argv) + self.assertEquals(getattr(FLAGS, name), lst) + + # Test help text + flagsHelp = str(FLAGS) + assert flagsHelp.find("repeat") != -1, "cannot find flag in help" + assert flagsHelp.find(repeatHelp) != -1, "cannot find help string in help" + + # Test flag specified twice + argv = ('./program', '--repeat=4', '--repeat=2', '--debug', '--nodebug') + argv = FLAGS(argv) + self.assertEqual(FLAGS.get('repeat', None), 2) + self.assertEqual(FLAGS.get('debug', None), 0) + + # Test MultiFlag with single default value + gflags.DEFINE_multistring('s_str', 'sing1', + 'string option that can occur multiple times', + short_name='s') + self.assertEqual(FLAGS.get('s_str', None), [ 'sing1', ]) + + # Test MultiFlag with list of default values + multi_string_defs = [ 'def1', 'def2', ] + gflags.DEFINE_multistring('m_str', multi_string_defs, + 'string option that can occur multiple times', + short_name='m') + self.assertEqual(FLAGS.get('m_str', None), multi_string_defs) + + # Test flag specified multiple times with a MultiFlag + argv = ('./program', '--m_str=str1', '-m', 'str2') + argv = FLAGS(argv) + self.assertEqual(FLAGS.get('m_str', None), [ 'str1', 'str2', ]) + + # Test single-letter flags; should support both single and double dash + argv = ('./program', '-q', '-x8') + argv = FLAGS(argv) + self.assertEqual(FLAGS.get('q', None), 1) + self.assertEqual(FLAGS.get('x', None), 8) + + argv = ('./program', '--q', '--x', '9', '--noqu') + argv = FLAGS(argv) + self.assertEqual(FLAGS.get('q', None), 1) + self.assertEqual(FLAGS.get('x', None), 9) + # --noqu should match '--noquack since it's a unique prefix + self.assertEqual(FLAGS.get('quack', None), 0) + + argv = ('./program', '--noq', '--x=10', '--qu') + argv = FLAGS(argv) + self.assertEqual(FLAGS.get('q', None), 0) + self.assertEqual(FLAGS.get('x', None), 10) + self.assertEqual(FLAGS.get('quack', None), 1) + + #################################### + # Test flag serialization code: + + oldtestlist = FLAGS.testlist + oldtestspacelist = FLAGS.testspacelist + + argv = ('./program', + FLAGS['test0'].Serialize(), + FLAGS['test1'].Serialize(), + FLAGS['testnone'].Serialize(), + FLAGS['s_str'].Serialize()) + argv = FLAGS(argv) + self.assertEqual(FLAGS['test0'].Serialize(), '--notest0') + self.assertEqual(FLAGS['test1'].Serialize(), '--test1') + self.assertEqual(FLAGS['testnone'].Serialize(), '') + self.assertEqual(FLAGS['s_str'].Serialize(), '--s_str=sing1') + + testlist1 = ['aa', 'bb'] + testspacelist1 = ['aa', 'bb', 'cc'] + FLAGS.testlist = list(testlist1) + FLAGS.testspacelist = list(testspacelist1) + argv = ('./program', + FLAGS['testlist'].Serialize(), + FLAGS['testspacelist'].Serialize()) + argv = FLAGS(argv) + self.assertEqual(FLAGS.testlist, testlist1) + self.assertEqual(FLAGS.testspacelist, testspacelist1) + + testlist1 = ['aa some spaces', 'bb'] + testspacelist1 = ['aa', 'bb,some,commas,', 'cc'] + FLAGS.testlist = list(testlist1) + FLAGS.testspacelist = list(testspacelist1) + argv = ('./program', + FLAGS['testlist'].Serialize(), + FLAGS['testspacelist'].Serialize()) + argv = FLAGS(argv) + self.assertEqual(FLAGS.testlist, testlist1) + self.assertEqual(FLAGS.testspacelist, testspacelist1) + + FLAGS.testlist = oldtestlist + FLAGS.testspacelist = oldtestspacelist + + #################################### + # Test flag-update: + + def ArgsString(): + flagnames = FLAGS.RegisteredFlags() + + flagnames.sort() + nonbool_flags = ['--%s %s' % (name, FLAGS.get(name, None)) + for name in flagnames + if not isinstance(FLAGS[name], gflags.BooleanFlag)] + + truebool_flags = ['--%s' % (name) + for name in flagnames + if isinstance(FLAGS[name], gflags.BooleanFlag) and + FLAGS.get(name, None)] + falsebool_flags = ['--no%s' % (name) + for name in flagnames + if isinstance(FLAGS[name], gflags.BooleanFlag) and + not FLAGS.get(name, None)] + return ' '.join(nonbool_flags + truebool_flags + falsebool_flags) + + argv = ('./program', '--repeat=3', '--name=giants', '--nodebug') + + FLAGS(argv) + self.assertEqual(FLAGS.get('repeat', None), 3) + self.assertEqual(FLAGS.get('name', None), 'giants') + self.assertEqual(FLAGS.get('debug', None), 0) + self.assertEqual(ArgsString(), + "--kwery None " + "--l 9223372032559808512 " + "--letters ['a', 'b', 'c'] " + "--m ['str1', 'str2'] --m_str ['str1', 'str2'] " + "--name giants " + "--numbers [1, 2, 3] " + "--repeat 3 " + "--s ['sing1'] --s_str ['sing1'] " + "" + "" + "--testget4 None --testlist [] " + "--testspacelist [] --x 10 " + "--noexec --quack " + "--test1 " + "--testget1 --tmod_baz_x " + "--no? --nodebug --nohelp --nohelpshort --nohelpxml --noq " + "" + "--notest0 --notestget2 --notestget3 --notestnone") + + argv = ('./program', '--debug', '--m_str=upd1', '-s', 'upd2') + FLAGS(argv) + self.assertEqual(FLAGS.get('repeat', None), 3) + self.assertEqual(FLAGS.get('name', None), 'giants') + self.assertEqual(FLAGS.get('debug', None), 1) + + # items appended to existing non-default value lists for --m/--m_str + # new value overwrites default value (not appended to it) for --s/--s_str + self.assertEqual(ArgsString(), + "--kwery None " + "--l 9223372032559808512 " + "--letters ['a', 'b', 'c'] " + "--m ['str1', 'str2', 'upd1'] " + "--m_str ['str1', 'str2', 'upd1'] " + "--name giants " + "--numbers [1, 2, 3] " + "--repeat 3 " + "--s ['upd2'] --s_str ['upd2'] " + "" + "" + "--testget4 None --testlist [] " + "--testspacelist [] --x 10 " + "--debug --noexec --quack " + "--test1 " + "--testget1 --tmod_baz_x " + "--no? --nohelp --nohelpshort --nohelpxml --noq " + "" + "--notest0 --notestget2 --notestget3 --notestnone") + + #################################### + # Test all kind of error conditions. + + # Duplicate flag detection + try: + gflags.DEFINE_boolean("run", 0, "runhelp", short_name='q') + raise AssertionError("duplicate flag detection failed") + except gflags.DuplicateFlag: + pass + + # Duplicate short flag detection + try: + gflags.DEFINE_boolean("zoom1", 0, "runhelp z1", short_name='z') + gflags.DEFINE_boolean("zoom2", 0, "runhelp z2", short_name='z') + raise AssertionError("duplicate short flag detection failed") + except gflags.DuplicateFlag, e: + self.assertTrue("The flag 'z' is defined twice. " in e.args[0]) + self.assertTrue("First from" in e.args[0]) + self.assertTrue(", Second from" in e.args[0]) + + # Duplicate mixed flag detection + try: + gflags.DEFINE_boolean("short1", 0, "runhelp s1", short_name='s') + gflags.DEFINE_boolean("s", 0, "runhelp s2") + raise AssertionError("duplicate mixed flag detection failed") + except gflags.DuplicateFlag, e: + self.assertTrue("The flag 's' is defined twice. " in e.args[0]) + self.assertTrue("First from" in e.args[0]) + self.assertTrue(", Second from" in e.args[0]) + + # Check that duplicate flag detection detects definition sites + # correctly. + flagnames = ["repeated"] + original_flags = gflags.FlagValues() + gflags.DEFINE_boolean(flagnames[0], False, "Flag about to be repeated.", + flag_values=original_flags) + duplicate_flags = module_foo.DuplicateFlags(flagnames) + try: + original_flags.AppendFlagValues(duplicate_flags) + except gflags.DuplicateFlagError, e: + self.assertTrue("flags_unittest" in str(e)) + self.assertTrue("module_foo" in str(e)) + + # Make sure allow_override works + try: + gflags.DEFINE_boolean("dup1", 0, "runhelp d11", short_name='u', + allow_override=0) + flag = FLAGS.FlagDict()['dup1'] + self.assertEqual(flag.default, 0) + + gflags.DEFINE_boolean("dup1", 1, "runhelp d12", short_name='u', + allow_override=1) + flag = FLAGS.FlagDict()['dup1'] + self.assertEqual(flag.default, 1) + except gflags.DuplicateFlag: + raise AssertionError("allow_override did not permit a flag duplication") + + # Make sure allow_override works + try: + gflags.DEFINE_boolean("dup2", 0, "runhelp d21", short_name='u', + allow_override=1) + flag = FLAGS.FlagDict()['dup2'] + self.assertEqual(flag.default, 0) + + gflags.DEFINE_boolean("dup2", 1, "runhelp d22", short_name='u', + allow_override=0) + flag = FLAGS.FlagDict()['dup2'] + self.assertEqual(flag.default, 1) + except gflags.DuplicateFlag: + raise AssertionError("allow_override did not permit a flag duplication") + + # Make sure allow_override doesn't work with None default + try: + gflags.DEFINE_boolean("dup3", 0, "runhelp d31", short_name='u3', + allow_override=0) + flag = FLAGS.FlagDict()['dup3'] + self.assertEqual(flag.default, 0) + + gflags.DEFINE_boolean("dup3", None, "runhelp d32", short_name='u3', + allow_override=1) + raise AssertionError('Cannot override a flag with a default of None') + except gflags.DuplicateFlagCannotPropagateNoneToSwig: + pass + + # Make sure that re-importing a module does not cause a DuplicateFlagError + # to be raised. + try: + sys.modules.pop( + "flags_modules_for_testing.module_baz") + import flags_modules_for_testing.module_baz + except gflags.DuplicateFlagError: + raise AssertionError("Module reimport caused flag duplication error") + + # Make sure that when we override, the help string gets updated correctly + gflags.DEFINE_boolean("dup3", 0, "runhelp d31", short_name='u', + allow_override=1) + gflags.DEFINE_boolean("dup3", 1, "runhelp d32", short_name='u', + allow_override=1) + self.assert_(str(FLAGS).find('runhelp d31') == -1) + self.assert_(str(FLAGS).find('runhelp d32') != -1) + + # Make sure AppendFlagValues works + new_flags = gflags.FlagValues() + gflags.DEFINE_boolean("new1", 0, "runhelp n1", flag_values=new_flags) + gflags.DEFINE_boolean("new2", 0, "runhelp n2", flag_values=new_flags) + self.assertEqual(len(new_flags.FlagDict()), 2) + old_len = len(FLAGS.FlagDict()) + FLAGS.AppendFlagValues(new_flags) + self.assertEqual(len(FLAGS.FlagDict())-old_len, 2) + self.assertEqual("new1" in FLAGS.FlagDict(), True) + self.assertEqual("new2" in FLAGS.FlagDict(), True) + + # Then test that removing those flags works + FLAGS.RemoveFlagValues(new_flags) + self.assertEqual(len(FLAGS.FlagDict()), old_len) + self.assertFalse("new1" in FLAGS.FlagDict()) + self.assertFalse("new2" in FLAGS.FlagDict()) + + # Make sure AppendFlagValues works with flags with shortnames. + new_flags = gflags.FlagValues() + gflags.DEFINE_boolean("new3", 0, "runhelp n3", flag_values=new_flags) + gflags.DEFINE_boolean("new4", 0, "runhelp n4", flag_values=new_flags, + short_name="n4") + self.assertEqual(len(new_flags.FlagDict()), 3) + old_len = len(FLAGS.FlagDict()) + FLAGS.AppendFlagValues(new_flags) + self.assertEqual(len(FLAGS.FlagDict())-old_len, 3) + self.assertTrue("new3" in FLAGS.FlagDict()) + self.assertTrue("new4" in FLAGS.FlagDict()) + self.assertTrue("n4" in FLAGS.FlagDict()) + self.assertEqual(FLAGS.FlagDict()['n4'], FLAGS.FlagDict()['new4']) + + # Then test removing them + FLAGS.RemoveFlagValues(new_flags) + self.assertEqual(len(FLAGS.FlagDict()), old_len) + self.assertFalse("new3" in FLAGS.FlagDict()) + self.assertFalse("new4" in FLAGS.FlagDict()) + self.assertFalse("n4" in FLAGS.FlagDict()) + + # Make sure AppendFlagValues fails on duplicates + gflags.DEFINE_boolean("dup4", 0, "runhelp d41") + new_flags = gflags.FlagValues() + gflags.DEFINE_boolean("dup4", 0, "runhelp d42", flag_values=new_flags) + try: + FLAGS.AppendFlagValues(new_flags) + raise AssertionError("ignore_copy was not set but caused no exception") + except gflags.DuplicateFlag: + pass + + # Integer out of bounds + try: + argv = ('./program', '--repeat=-4') + FLAGS(argv) + raise AssertionError('integer bounds exception not raised:' + + str(FLAGS.repeat)) + except gflags.IllegalFlagValue: + pass + + # Non-integer + try: + argv = ('./program', '--repeat=2.5') + FLAGS(argv) + raise AssertionError("malformed integer value exception not raised") + except gflags.IllegalFlagValue: + pass + + # Missing required arugment + try: + argv = ('./program', '--name') + FLAGS(argv) + raise AssertionError("Flag argument required exception not raised") + except gflags.FlagsError: + pass + + # Non-boolean arguments for boolean + try: + argv = ('./program', '--debug=goofup') + FLAGS(argv) + raise AssertionError("Illegal flag value exception not raised") + except gflags.IllegalFlagValue: + pass + + try: + argv = ('./program', '--debug=42') + FLAGS(argv) + raise AssertionError("Illegal flag value exception not raised") + except gflags.IllegalFlagValue: + pass + + + # Non-numeric argument for integer flag --repeat + try: + argv = ('./program', '--repeat', 'Bob', 'extra') + FLAGS(argv) + raise AssertionError("Illegal flag value exception not raised") + except gflags.IllegalFlagValue: + pass + + # Test ModuleHelp(). + helpstr = FLAGS.ModuleHelp(module_baz) + + expected_help = "\n" + module_baz.__name__ + ":" + """ + --[no]tmod_baz_x: Boolean flag. + (default: 'true')""" + + self.assertMultiLineEqual(expected_help, helpstr) + + # Test MainModuleHelp(). This must be part of test_flags because + # it dpeends on dup1/2/3/etc being introduced first. + helpstr = FLAGS.MainModuleHelp() + + expected_help = "\n" + sys.argv[0] + ':' + """ + --[no]debug: debughelp + (default: 'false') + -u,--[no]dup1: runhelp d12 + (default: 'true') + -u,--[no]dup2: runhelp d22 + (default: 'true') + -u,--[no]dup3: runhelp d32 + (default: 'true') + --[no]dup4: runhelp d41 + (default: 'false') + --kwery: : ? + --l: how long to be + (default: '9223372032559808512') + (an integer) + --letters: a list of letters + (default: 'a,b,c') + (a comma separated list) + -m,--m_str: string option that can occur multiple times; + repeat this option to specify a list of values + (default: "['def1', 'def2']") + --name: namehelp + (default: 'Bob') + --[no]noexec: boolean flag with no as prefix + (default: 'true') + --numbers: a list of numbers + (default: '1,2,3') + (a comma separated list) + --[no]q: quiet mode + (default: 'true') + --[no]quack: superstring of 'q' + (default: 'false') + -r,--repeat: how many times to repeat (0-5) + (default: '4') + (a non-negative integer) + -s,--s_str: string option that can occur multiple times; + repeat this option to specify a list of values + (default: "['sing1']") + --[no]test0: test boolean parsing + --[no]test1: test boolean parsing + --[no]testget1: test parsing with defaults + --[no]testget2: test parsing with defaults + --[no]testget3: test parsing with defaults + --testget4: test parsing with defaults + (an integer) + --testlist: test lists parsing + (default: '') + (a comma separated list) + --[no]testnone: test boolean parsing + --testspacelist: tests space lists parsing + (default: '') + (a whitespace separated list) + --x: how eXtreme to be + (default: '3') + (an integer) + -z,--[no]zoom1: runhelp z1 + (default: 'false')""" + + # Insert the --help flags in their proper place. + help_help = """\ + -?,--[no]help: show this help + --[no]helpshort: show usage only for this module + --[no]helpxml: like --help, but generates XML output +""" + expected_help = expected_help.replace(' --kwery', + help_help + ' --kwery') + + self.assertMultiLineEqual(expected_help, helpstr) + + +class MultiNumericalFlagsTest(googletest.TestCase): + + def testMultiNumericalFlags(self): + """Test multi_int and multi_float flags.""" + + int_defaults = [77, 88,] + gflags.DEFINE_multi_int('m_int', int_defaults, + 'integer option that can occur multiple times', + short_name='mi') + self.assertListEqual(FLAGS.get('m_int', None), int_defaults) + argv = ('./program', '--m_int=-99', '--mi=101') + FLAGS(argv) + self.assertListEqual(FLAGS.get('m_int', None), [-99, 101,]) + + float_defaults = [2.2, 3] + gflags.DEFINE_multi_float('m_float', float_defaults, + 'float option that can occur multiple times', + short_name='mf') + for (expected, actual) in zip(float_defaults, FLAGS.get('m_float', None)): + self.assertAlmostEquals(expected, actual) + argv = ('./program', '--m_float=-17', '--mf=2.78e9') + FLAGS(argv) + expected_floats = [-17.0, 2.78e9] + for (expected, actual) in zip(expected_floats, FLAGS.get('m_float', None)): + self.assertAlmostEquals(expected, actual) + + def testSingleValueDefault(self): + """Test multi_int and multi_float flags with a single default value.""" + int_default = 77 + gflags.DEFINE_multi_int('m_int1', int_default, + 'integer option that can occur multiple times') + self.assertListEqual(FLAGS.get('m_int1', None), [int_default]) + + float_default = 2.2 + gflags.DEFINE_multi_float('m_float1', float_default, + 'float option that can occur multiple times') + actual = FLAGS.get('m_float1', None) + self.assertEquals(1, len(actual)) + self.assertAlmostEquals(actual[0], float_default) + + def testBadMultiNumericalFlags(self): + """Test multi_int and multi_float flags with non-parseable values.""" + + # Test non-parseable defaults. + self.assertRaisesWithRegexpMatch( + gflags.IllegalFlagValue, + 'flag --m_int2=abc: invalid literal for int\(\) with base 10: \'abc\'', + gflags.DEFINE_multi_int, 'm_int2', ['abc'], 'desc') + + self.assertRaisesWithRegexpMatch( + gflags.IllegalFlagValue, + 'flag --m_float2=abc: invalid literal for float\(\): abc', + gflags.DEFINE_multi_float, 'm_float2', ['abc'], 'desc') + + # Test non-parseable command line values. + gflags.DEFINE_multi_int('m_int2', '77', + 'integer option that can occur multiple times') + argv = ('./program', '--m_int2=def') + self.assertRaisesWithRegexpMatch( + gflags.IllegalFlagValue, + 'flag --m_int2=def: invalid literal for int\(\) with base 10: \'def\'', + FLAGS, argv) + + gflags.DEFINE_multi_float('m_float2', 2.2, + 'float option that can occur multiple times') + argv = ('./program', '--m_float2=def') + self.assertRaisesWithRegexpMatch( + gflags.IllegalFlagValue, + 'flag --m_float2=def: invalid literal for float\(\): def', + FLAGS, argv) + + +class UnicodeFlagsTest(googletest.TestCase): + """Testing proper unicode support for flags.""" + + def testUnicodeDefaultAndHelpstring(self): + gflags.DEFINE_string("unicode_str", "\xC3\x80\xC3\xBD".decode("utf-8"), + "help:\xC3\xAA".decode("utf-8")) + argv = ("./program",) + FLAGS(argv) # should not raise any exceptions + + argv = ("./program", "--unicode_str=foo") + FLAGS(argv) # should not raise any exceptions + + def testUnicodeInList(self): + gflags.DEFINE_list("unicode_list", ["abc", "\xC3\x80".decode("utf-8"), + "\xC3\xBD".decode("utf-8")], + "help:\xC3\xAB".decode("utf-8")) + argv = ("./program",) + FLAGS(argv) # should not raise any exceptions + + argv = ("./program", "--unicode_list=hello,there") + FLAGS(argv) # should not raise any exceptions + + def testXMLOutput(self): + gflags.DEFINE_string("unicode1", "\xC3\x80\xC3\xBD".decode("utf-8"), + "help:\xC3\xAC".decode("utf-8")) + gflags.DEFINE_list("unicode2", ["abc", "\xC3\x80".decode("utf-8"), + "\xC3\xBD".decode("utf-8")], + "help:\xC3\xAD".decode("utf-8")) + gflags.DEFINE_list("non_unicode", ["abc", "def", "ghi"], + "help:\xC3\xAD".decode("utf-8")) + + outfile = cStringIO.StringIO() + FLAGS.WriteHelpInXMLFormat(outfile) + actual_output = outfile.getvalue() + + # The xml output is large, so we just check parts of it. + self.assertTrue("unicode1\n" + " help:ì\n" + " Àý\n" + " Àý" + in actual_output) + self.assertTrue("unicode2\n" + " help:í\n" + " abc,À,ý\n" + " [\'abc\', u\'\\xc0\', u\'\\xfd\']" + in actual_output) + self.assertTrue("non_unicode\n" + " help:í\n" + " abc,def,ghi\n" + " [\'abc\', \'def\', \'ghi\']" + in actual_output) + + +class LoadFromFlagFileTest(googletest.TestCase): + """Testing loading flags from a file and parsing them.""" + + def setUp(self): + self.flag_values = gflags.FlagValues() + # make sure we are using the old, stupid way of parsing flags. + self.flag_values.UseGnuGetOpt(False) + gflags.DEFINE_string('UnitTestMessage1', 'Foo!', 'You Add Here.', + flag_values=self.flag_values) + gflags.DEFINE_string('UnitTestMessage2', 'Bar!', 'Hello, Sailor!', + flag_values=self.flag_values) + gflags.DEFINE_boolean('UnitTestBoolFlag', 0, 'Some Boolean thing', + flag_values=self.flag_values) + gflags.DEFINE_integer('UnitTestNumber', 12345, 'Some integer', + lower_bound=0, flag_values=self.flag_values) + gflags.DEFINE_list('UnitTestList', "1,2,3", 'Some list', + flag_values=self.flag_values) + self.files_to_delete = [] + + def tearDown(self): + self._RemoveTestFiles() + + def _SetupTestFiles(self): + """ Creates and sets up some dummy flagfile files with bogus flags""" + + # Figure out where to create temporary files + tmp_path = '/tmp/flags_unittest' + if os.path.exists(tmp_path): + shutil.rmtree(tmp_path) + os.makedirs(tmp_path) + + try: + tmp_flag_file_1 = open(tmp_path + '/UnitTestFile1.tst', 'w') + tmp_flag_file_2 = open(tmp_path + '/UnitTestFile2.tst', 'w') + tmp_flag_file_3 = open(tmp_path + '/UnitTestFile3.tst', 'w') + tmp_flag_file_4 = open(tmp_path + '/UnitTestFile4.tst', 'w') + except IOError, e_msg: + print e_msg + print 'FAIL\n File Creation problem in Unit Test' + sys.exit(1) + + # put some dummy flags in our test files + tmp_flag_file_1.write('#A Fake Comment\n') + tmp_flag_file_1.write('--UnitTestMessage1=tempFile1!\n') + tmp_flag_file_1.write('\n') + tmp_flag_file_1.write('--UnitTestNumber=54321\n') + tmp_flag_file_1.write('--noUnitTestBoolFlag\n') + file_list = [tmp_flag_file_1.name] + # this one includes test file 1 + tmp_flag_file_2.write('//A Different Fake Comment\n') + tmp_flag_file_2.write('--flagfile=%s\n' % tmp_flag_file_1.name) + tmp_flag_file_2.write('--UnitTestMessage2=setFromTempFile2\n') + tmp_flag_file_2.write('\t\t\n') + tmp_flag_file_2.write('--UnitTestNumber=6789a\n') + file_list.append(tmp_flag_file_2.name) + # this file points to itself + tmp_flag_file_3.write('--flagfile=%s\n' % tmp_flag_file_3.name) + tmp_flag_file_3.write('--UnitTestMessage1=setFromTempFile3\n') + tmp_flag_file_3.write('#YAFC\n') + tmp_flag_file_3.write('--UnitTestBoolFlag\n') + file_list.append(tmp_flag_file_3.name) + # this file is unreadable + tmp_flag_file_4.write('--flagfile=%s\n' % tmp_flag_file_3.name) + tmp_flag_file_4.write('--UnitTestMessage1=setFromTempFile3\n') + tmp_flag_file_4.write('--UnitTestMessage1=setFromTempFile3\n') + os.chmod(tmp_path + '/UnitTestFile4.tst', 0) + file_list.append(tmp_flag_file_4.name) + + tmp_flag_file_1.close() + tmp_flag_file_2.close() + tmp_flag_file_3.close() + tmp_flag_file_4.close() + + self.files_to_delete = file_list + + return file_list # these are just the file names + # end SetupFiles def + + def _RemoveTestFiles(self): + """Closes the files we just created. tempfile deletes them for us """ + for file_name in self.files_to_delete: + try: + os.remove(file_name) + except OSError, e_msg: + print '%s\n, Problem deleting test file' % e_msg + #end RemoveTestFiles def + + def _ReadFlagsFromFiles(self, argv, force_gnu): + return argv[:1] + self.flag_values.ReadFlagsFromFiles(argv[1:], + force_gnu=force_gnu) + + #### Flagfile Unit Tests #### + def testMethod_flagfiles_1(self): + """ Test trivial case with no flagfile based options. """ + fake_cmd_line = 'fooScript --UnitTestBoolFlag' + fake_argv = fake_cmd_line.split(' ') + self.flag_values(fake_argv) + self.assertEqual( self.flag_values.UnitTestBoolFlag, 1) + self.assertEqual( fake_argv, self._ReadFlagsFromFiles(fake_argv, False)) + + # end testMethodOne + + def testMethod_flagfiles_2(self): + """Tests parsing one file + arguments off simulated argv""" + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = 'fooScript --q --flagfile=%s' % tmp_files[0] + fake_argv = fake_cmd_line.split(' ') + + # We should see the original cmd line with the file's contents spliced in. + # Flags from the file will appear in the order order they are sepcified + # in the file, in the same position as the flagfile argument. + expected_results = ['fooScript', + '--q', + '--UnitTestMessage1=tempFile1!', + '--UnitTestNumber=54321', + '--noUnitTestBoolFlag'] + test_results = self._ReadFlagsFromFiles(fake_argv, False) + self.assertEqual(expected_results, test_results) + # end testTwo def + + def testMethod_flagfiles_3(self): + """Tests parsing nested files + arguments of simulated argv""" + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = ('fooScript --UnitTestNumber=77 --flagfile=%s' + % tmp_files[1]) + fake_argv = fake_cmd_line.split(' ') + + expected_results = ['fooScript', + '--UnitTestNumber=77', + '--UnitTestMessage1=tempFile1!', + '--UnitTestNumber=54321', + '--noUnitTestBoolFlag', + '--UnitTestMessage2=setFromTempFile2', + '--UnitTestNumber=6789a'] + test_results = self._ReadFlagsFromFiles(fake_argv, False) + self.assertEqual(expected_results, test_results) + # end testThree def + + def testMethod_flagfiles_4(self): + """Tests parsing self-referential files + arguments of simulated argv. + This test should print a warning to stderr of some sort. + """ + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = ('fooScript --flagfile=%s --noUnitTestBoolFlag' + % tmp_files[2]) + fake_argv = fake_cmd_line.split(' ') + expected_results = ['fooScript', + '--UnitTestMessage1=setFromTempFile3', + '--UnitTestBoolFlag', + '--noUnitTestBoolFlag' ] + + test_results = self._ReadFlagsFromFiles(fake_argv, False) + self.assertEqual(expected_results, test_results) + + def testMethod_flagfiles_5(self): + """Test that --flagfile parsing respects the '--' end-of-options marker.""" + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = 'fooScript --SomeFlag -- --flagfile=%s' % tmp_files[0] + fake_argv = fake_cmd_line.split(' ') + expected_results = ['fooScript', + '--SomeFlag', + '--', + '--flagfile=%s' % tmp_files[0]] + + test_results = self._ReadFlagsFromFiles(fake_argv, False) + self.assertEqual(expected_results, test_results) + + def testMethod_flagfiles_6(self): + """Test that --flagfile parsing stops at non-options (non-GNU behavior).""" + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = ('fooScript --SomeFlag some_arg --flagfile=%s' + % tmp_files[0]) + fake_argv = fake_cmd_line.split(' ') + expected_results = ['fooScript', + '--SomeFlag', + 'some_arg', + '--flagfile=%s' % tmp_files[0]] + + test_results = self._ReadFlagsFromFiles(fake_argv, False) + self.assertEqual(expected_results, test_results) + + def testMethod_flagfiles_7(self): + """Test that --flagfile parsing skips over a non-option (GNU behavior).""" + self.flag_values.UseGnuGetOpt() + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = ('fooScript --SomeFlag some_arg --flagfile=%s' + % tmp_files[0]) + fake_argv = fake_cmd_line.split(' ') + expected_results = ['fooScript', + '--SomeFlag', + 'some_arg', + '--UnitTestMessage1=tempFile1!', + '--UnitTestNumber=54321', + '--noUnitTestBoolFlag'] + + test_results = self._ReadFlagsFromFiles(fake_argv, False) + self.assertEqual(expected_results, test_results) + + def testMethod_flagfiles_8(self): + """Test that --flagfile parsing respects force_gnu=True.""" + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = ('fooScript --SomeFlag some_arg --flagfile=%s' + % tmp_files[0]) + fake_argv = fake_cmd_line.split(' ') + expected_results = ['fooScript', + '--SomeFlag', + 'some_arg', + '--UnitTestMessage1=tempFile1!', + '--UnitTestNumber=54321', + '--noUnitTestBoolFlag'] + + test_results = self._ReadFlagsFromFiles(fake_argv, True) + self.assertEqual(expected_results, test_results) + + def testMethod_flagfiles_NoPermissions(self): + """Test that --flagfile raises except on file that is unreadable.""" + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = ('fooScript --SomeFlag some_arg --flagfile=%s' + % tmp_files[3]) + fake_argv = fake_cmd_line.split(' ') + self.assertRaises(gflags.CantOpenFlagFileError, + self._ReadFlagsFromFiles, fake_argv, True) + + def testMethod_flagfiles_NotFound(self): + """Test that --flagfile raises except on file that does not exist.""" + tmp_files = self._SetupTestFiles() + # specify our temp file on the fake cmd line + fake_cmd_line = ('fooScript --SomeFlag some_arg --flagfile=%sNOTEXIST' + % tmp_files[3]) + fake_argv = fake_cmd_line.split(' ') + self.assertRaises(gflags.CantOpenFlagFileError, + self._ReadFlagsFromFiles, fake_argv, True) + + def test_flagfiles_user_path_expansion(self): + """Test that user directory referenced paths (ie. ~/foo) are correctly + expanded. This test depends on whatever account's running the unit test + to have read/write access to their own home directory, otherwise it'll + FAIL. + """ + fake_flagfile_item_style_1 = '--flagfile=~/foo.file' + fake_flagfile_item_style_2 = '-flagfile=~/foo.file' + + expected_results = os.path.expanduser('~/foo.file') + + test_results = self.flag_values.ExtractFilename(fake_flagfile_item_style_1) + self.assertEqual(expected_results, test_results) + + test_results = self.flag_values.ExtractFilename(fake_flagfile_item_style_2) + self.assertEqual(expected_results, test_results) + + # end testFour def + + def test_no_touchy_non_flags(self): + """ + Test that the flags parser does not mutilate arguments which are + not supposed to be flags + """ + fake_argv = ['fooScript', '--UnitTestBoolFlag', + 'command', '--command_arg1', '--UnitTestBoom', '--UnitTestB'] + argv = self.flag_values(fake_argv) + self.assertEqual(argv, fake_argv[:1] + fake_argv[2:]) + + def test_parse_flags_after_args_if_using_gnu_getopt(self): + """ + Test that flags given after arguments are parsed if using gnu_getopt. + """ + self.flag_values.UseGnuGetOpt() + fake_argv = ['fooScript', '--UnitTestBoolFlag', + 'command', '--UnitTestB'] + argv = self.flag_values(fake_argv) + self.assertEqual(argv, ['fooScript', 'command']) + + def test_SetDefault(self): + """ + Test changing flag defaults. + """ + # Test that SetDefault changes both the default and the value, + # and that the value is changed when one is given as an option. + self.flag_values['UnitTestMessage1'].SetDefault('New value') + self.assertEqual(self.flag_values.UnitTestMessage1, 'New value') + self.assertEqual(self.flag_values['UnitTestMessage1'].default_as_str, + "'New value'") + self.flag_values([ 'dummyscript', '--UnitTestMessage1=Newer value' ]) + self.assertEqual(self.flag_values.UnitTestMessage1, 'Newer value') + + # Test that setting the default to None works correctly. + self.flag_values['UnitTestNumber'].SetDefault(None) + self.assertEqual(self.flag_values.UnitTestNumber, None) + self.assertEqual(self.flag_values['UnitTestNumber'].default_as_str, None) + self.flag_values([ 'dummyscript', '--UnitTestNumber=56' ]) + self.assertEqual(self.flag_values.UnitTestNumber, 56) + + # Test that setting the default to zero works correctly. + self.flag_values['UnitTestNumber'].SetDefault(0) + self.assertEqual(self.flag_values.UnitTestNumber, 0) + self.assertEqual(self.flag_values['UnitTestNumber'].default_as_str, "'0'") + self.flag_values([ 'dummyscript', '--UnitTestNumber=56' ]) + self.assertEqual(self.flag_values.UnitTestNumber, 56) + + # Test that setting the default to "" works correctly. + self.flag_values['UnitTestMessage1'].SetDefault("") + self.assertEqual(self.flag_values.UnitTestMessage1, "") + self.assertEqual(self.flag_values['UnitTestMessage1'].default_as_str, "''") + self.flag_values([ 'dummyscript', '--UnitTestMessage1=fifty-six' ]) + self.assertEqual(self.flag_values.UnitTestMessage1, "fifty-six") + + # Test that setting the default to false works correctly. + self.flag_values['UnitTestBoolFlag'].SetDefault(False) + self.assertEqual(self.flag_values.UnitTestBoolFlag, False) + self.assertEqual(self.flag_values['UnitTestBoolFlag'].default_as_str, + "'false'") + self.flag_values([ 'dummyscript', '--UnitTestBoolFlag=true' ]) + self.assertEqual(self.flag_values.UnitTestBoolFlag, True) + + # Test that setting a list default works correctly. + self.flag_values['UnitTestList'].SetDefault('4,5,6') + self.assertEqual(self.flag_values.UnitTestList, ['4', '5', '6']) + self.assertEqual(self.flag_values['UnitTestList'].default_as_str, "'4,5,6'") + self.flag_values([ 'dummyscript', '--UnitTestList=7,8,9' ]) + self.assertEqual(self.flag_values.UnitTestList, ['7', '8', '9']) + + # Test that setting invalid defaults raises exceptions + self.assertRaises(gflags.IllegalFlagValue, + self.flag_values['UnitTestNumber'].SetDefault, 'oops') + self.assertRaises(gflags.IllegalFlagValue, + self.flag_values.SetDefault, 'UnitTestNumber', -1) + + +class FlagsParsingTest(googletest.TestCase): + """Testing different aspects of parsing: '-f' vs '--flag', etc.""" + + def setUp(self): + self.flag_values = gflags.FlagValues() + + def testMethod_ShortestUniquePrefixes(self): + """Test FlagValues.ShortestUniquePrefixes""" + + gflags.DEFINE_string('a', '', '', flag_values=self.flag_values) + gflags.DEFINE_string('abc', '', '', flag_values=self.flag_values) + gflags.DEFINE_string('common_a_string', '', '', flag_values=self.flag_values) + gflags.DEFINE_boolean('common_b_boolean', 0, '', + flag_values=self.flag_values) + gflags.DEFINE_boolean('common_c_boolean', 0, '', + flag_values=self.flag_values) + gflags.DEFINE_boolean('common', 0, '', flag_values=self.flag_values) + gflags.DEFINE_integer('commonly', 0, '', flag_values=self.flag_values) + gflags.DEFINE_boolean('zz', 0, '', flag_values=self.flag_values) + gflags.DEFINE_integer('nozz', 0, '', flag_values=self.flag_values) + + shorter_flags = self.flag_values.ShortestUniquePrefixes( + self.flag_values.FlagDict()) + + expected_results = {'nocommon_b_boolean': 'nocommon_b', + 'common_c_boolean': 'common_c', + 'common_b_boolean': 'common_b', + 'a': 'a', + 'abc': 'ab', + 'zz': 'z', + 'nozz': 'nozz', + 'common_a_string': 'common_a', + 'commonly': 'commonl', + 'nocommon_c_boolean': 'nocommon_c', + 'nocommon': 'nocommon', + 'common': 'common'} + + for name, shorter in expected_results.iteritems(): + self.assertEquals(shorter_flags[name], shorter) + + self.flag_values.__delattr__('a') + self.flag_values.__delattr__('abc') + self.flag_values.__delattr__('common_a_string') + self.flag_values.__delattr__('common_b_boolean') + self.flag_values.__delattr__('common_c_boolean') + self.flag_values.__delattr__('common') + self.flag_values.__delattr__('commonly') + self.flag_values.__delattr__('zz') + self.flag_values.__delattr__('nozz') + + def test_twodasharg_first(self): + gflags.DEFINE_string("twodash_name", "Bob", "namehelp", + flag_values=self.flag_values) + gflags.DEFINE_string("twodash_blame", "Rob", "blamehelp", + flag_values=self.flag_values) + argv = ('./program', + '--', + '--twodash_name=Harry') + argv = self.flag_values(argv) + self.assertEqual('Bob', self.flag_values.twodash_name) + self.assertEqual(argv[1], '--twodash_name=Harry') + + def test_twodasharg_middle(self): + gflags.DEFINE_string("twodash2_name", "Bob", "namehelp", + flag_values=self.flag_values) + gflags.DEFINE_string("twodash2_blame", "Rob", "blamehelp", + flag_values=self.flag_values) + argv = ('./program', + '--twodash2_blame=Larry', + '--', + '--twodash2_name=Harry') + argv = self.flag_values(argv) + self.assertEqual('Bob', self.flag_values.twodash2_name) + self.assertEqual('Larry', self.flag_values.twodash2_blame) + self.assertEqual(argv[1], '--twodash2_name=Harry') + + def test_onedasharg_first(self): + gflags.DEFINE_string("onedash_name", "Bob", "namehelp", + flag_values=self.flag_values) + gflags.DEFINE_string("onedash_blame", "Rob", "blamehelp", + flag_values=self.flag_values) + argv = ('./program', + '-', + '--onedash_name=Harry') + argv = self.flag_values(argv) + self.assertEqual(argv[1], '-') + # TODO(csilvers): we should still parse --onedash_name=Harry as a + # flag, but currently we don't (we stop flag processing as soon as + # we see the first non-flag). + # - This requires gnu_getopt from Python 2.3+ see FLAGS.UseGnuGetOpt() + + def test_unrecognized_flags(self): + gflags.DEFINE_string("name", "Bob", "namehelp", flag_values=self.flag_values) + # Unknown flag --nosuchflag + try: + argv = ('./program', '--nosuchflag', '--name=Bob', 'extra') + self.flag_values(argv) + raise AssertionError("Unknown flag exception not raised") + except gflags.UnrecognizedFlag, e: + assert e.flagname == 'nosuchflag' + assert e.flagvalue == '--nosuchflag' + + # Unknown flag -w (short option) + try: + argv = ('./program', '-w', '--name=Bob', 'extra') + self.flag_values(argv) + raise AssertionError("Unknown flag exception not raised") + except gflags.UnrecognizedFlag, e: + assert e.flagname == 'w' + assert e.flagvalue == '-w' + + # Unknown flag --nosuchflagwithparam=foo + try: + argv = ('./program', '--nosuchflagwithparam=foo', '--name=Bob', 'extra') + self.flag_values(argv) + raise AssertionError("Unknown flag exception not raised") + except gflags.UnrecognizedFlag, e: + assert e.flagname == 'nosuchflagwithparam' + assert e.flagvalue == '--nosuchflagwithparam=foo' + + # Allow unknown flag --nosuchflag if specified with undefok + argv = ('./program', '--nosuchflag', '--name=Bob', + '--undefok=nosuchflag', 'extra') + argv = self.flag_values(argv) + assert len(argv) == 2, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert argv[1]=='extra', "extra argument not preserved" + + # Allow unknown flag --noboolflag if undefok=boolflag is specified + argv = ('./program', '--noboolflag', '--name=Bob', + '--undefok=boolflag', 'extra') + argv = self.flag_values(argv) + assert len(argv) == 2, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert argv[1]=='extra', "extra argument not preserved" + + # But not if the flagname is misspelled: + try: + argv = ('./program', '--nosuchflag', '--name=Bob', + '--undefok=nosuchfla', 'extra') + self.flag_values(argv) + raise AssertionError("Unknown flag exception not raised") + except gflags.UnrecognizedFlag, e: + assert e.flagname == 'nosuchflag' + + try: + argv = ('./program', '--nosuchflag', '--name=Bob', + '--undefok=nosuchflagg', 'extra') + self.flag_values(argv) + raise AssertionError("Unknown flag exception not raised") + except gflags.UnrecognizedFlag, e: + assert e.flagname == 'nosuchflag' + + # Allow unknown short flag -w if specified with undefok + argv = ('./program', '-w', '--name=Bob', '--undefok=w', 'extra') + argv = self.flag_values(argv) + assert len(argv) == 2, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert argv[1]=='extra', "extra argument not preserved" + + # Allow unknown flag --nosuchflagwithparam=foo if specified + # with undefok + argv = ('./program', '--nosuchflagwithparam=foo', '--name=Bob', + '--undefok=nosuchflagwithparam', 'extra') + argv = self.flag_values(argv) + assert len(argv) == 2, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert argv[1]=='extra', "extra argument not preserved" + + # Even if undefok specifies multiple flags + argv = ('./program', '--nosuchflag', '-w', '--nosuchflagwithparam=foo', + '--name=Bob', + '--undefok=nosuchflag,w,nosuchflagwithparam', + 'extra') + argv = self.flag_values(argv) + assert len(argv) == 2, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert argv[1]=='extra', "extra argument not preserved" + + # However, not if undefok doesn't specify the flag + try: + argv = ('./program', '--nosuchflag', '--name=Bob', + '--undefok=another_such', 'extra') + self.flag_values(argv) + raise AssertionError("Unknown flag exception not raised") + except gflags.UnrecognizedFlag, e: + assert e.flagname == 'nosuchflag' + + # Make sure --undefok doesn't mask other option errors. + try: + # Provide an option requiring a parameter but not giving it one. + argv = ('./program', '--undefok=name', '--name') + self.flag_values(argv) + raise AssertionError("Missing option parameter exception not raised") + except gflags.UnrecognizedFlag: + raise AssertionError("Wrong kind of error exception raised") + except gflags.FlagsError: + pass + + # Test --undefok + argv = ('./program', '--nosuchflag', '-w', '--nosuchflagwithparam=foo', + '--name=Bob', + '--undefok', + 'nosuchflag,w,nosuchflagwithparam', + 'extra') + argv = self.flag_values(argv) + assert len(argv) == 2, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert argv[1]=='extra', "extra argument not preserved" + + +class NonGlobalFlagsTest(googletest.TestCase): + + def test_nonglobal_flags(self): + """Test use of non-global FlagValues""" + nonglobal_flags = gflags.FlagValues() + gflags.DEFINE_string("nonglobal_flag", "Bob", "flaghelp", nonglobal_flags) + argv = ('./program', + '--nonglobal_flag=Mary', + 'extra') + argv = nonglobal_flags(argv) + assert len(argv) == 2, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + assert argv[1]=='extra', "extra argument not preserved" + assert nonglobal_flags['nonglobal_flag'].value == 'Mary' + + def test_unrecognized_nonglobal_flags(self): + """Test unrecognized non-global flags""" + nonglobal_flags = gflags.FlagValues() + argv = ('./program', + '--nosuchflag') + try: + argv = nonglobal_flags(argv) + raise AssertionError("Unknown flag exception not raised") + except gflags.UnrecognizedFlag, e: + assert e.flagname == 'nosuchflag' + pass + + argv = ('./program', + '--nosuchflag', + '--undefok=nosuchflag') + + argv = nonglobal_flags(argv) + assert len(argv) == 1, "wrong number of arguments pulled" + assert argv[0]=='./program', "program name not preserved" + + def test_create_flag_errors(self): + # Since the exception classes are exposed, nothing stops users + # from creating their own instances. This test makes sure that + # people modifying the flags module understand that the external + # mechanisms for creating the exceptions should continue to work. + e = gflags.FlagsError() + e = gflags.FlagsError("message") + e = gflags.DuplicateFlag() + e = gflags.DuplicateFlag("message") + e = gflags.IllegalFlagValue() + e = gflags.IllegalFlagValue("message") + e = gflags.UnrecognizedFlag() + e = gflags.UnrecognizedFlag("message") + + def testFlagValuesDelAttr(self): + """Checks that del self.flag_values.flag_id works.""" + default_value = 'default value for testFlagValuesDelAttr' + # 1. Declare and delete a flag with no short name. + flag_values = gflags.FlagValues() + gflags.DEFINE_string('delattr_foo', default_value, 'A simple flag.', + flag_values=flag_values) + self.assertEquals(flag_values.delattr_foo, default_value) + flag_obj = flag_values['delattr_foo'] + # We also check that _FlagIsRegistered works as expected :) + self.assertTrue(flag_values._FlagIsRegistered(flag_obj)) + del flag_values.delattr_foo + self.assertFalse('delattr_foo' in flag_values.FlagDict()) + self.assertFalse(flag_values._FlagIsRegistered(flag_obj)) + # If the previous del FLAGS.delattr_foo did not work properly, the + # next definition will trigger a redefinition error. + gflags.DEFINE_integer('delattr_foo', 3, 'A simple flag.', + flag_values=flag_values) + del flag_values.delattr_foo + + self.assertFalse('delattr_foo' in flag_values.RegisteredFlags()) + + # 2. Declare and delete a flag with a short name. + gflags.DEFINE_string('delattr_bar', default_value, 'flag with short name', + short_name='x5', flag_values=flag_values) + flag_obj = flag_values['delattr_bar'] + self.assertTrue(flag_values._FlagIsRegistered(flag_obj)) + del flag_values.x5 + self.assertTrue(flag_values._FlagIsRegistered(flag_obj)) + del flag_values.delattr_bar + self.assertFalse(flag_values._FlagIsRegistered(flag_obj)) + + # 3. Just like 2, but del flag_values.name last + gflags.DEFINE_string('delattr_bar', default_value, 'flag with short name', + short_name='x5', flag_values=flag_values) + flag_obj = flag_values['delattr_bar'] + self.assertTrue(flag_values._FlagIsRegistered(flag_obj)) + del flag_values.delattr_bar + self.assertTrue(flag_values._FlagIsRegistered(flag_obj)) + del flag_values.x5 + self.assertFalse(flag_values._FlagIsRegistered(flag_obj)) + + self.assertFalse('delattr_bar' in flag_values.RegisteredFlags()) + self.assertFalse('x5' in flag_values.RegisteredFlags()) + + +class KeyFlagsTest(googletest.TestCase): + + def setUp(self): + self.flag_values = gflags.FlagValues() + + def _GetNamesOfDefinedFlags(self, module, flag_values): + """Returns the list of names of flags defined by a module. + + Auxiliary for the testKeyFlags* methods. + + Args: + module: A module object or a string module name. + flag_values: A FlagValues object. + + Returns: + A list of strings. + """ + return [f.name for f in flag_values._GetFlagsDefinedByModule(module)] + + def _GetNamesOfKeyFlags(self, module, flag_values): + """Returns the list of names of key flags for a module. + + Auxiliary for the testKeyFlags* methods. + + Args: + module: A module object or a string module name. + flag_values: A FlagValues object. + + Returns: + A list of strings. + """ + return [f.name for f in flag_values._GetKeyFlagsForModule(module)] + + def _AssertListsHaveSameElements(self, list_1, list_2): + # Checks that two lists have the same elements with the same + # multiplicity, in possibly different order. + list_1 = list(list_1) + list_1.sort() + list_2 = list(list_2) + list_2.sort() + self.assertListEqual(list_1, list_2) + + def testKeyFlags(self): + # Before starting any testing, make sure no flags are already + # defined for module_foo and module_bar. + self.assertListEqual(self._GetNamesOfKeyFlags(module_foo, self.flag_values), + []) + self.assertListEqual(self._GetNamesOfKeyFlags(module_bar, self.flag_values), + []) + self.assertListEqual(self._GetNamesOfDefinedFlags(module_foo, + self.flag_values), + []) + self.assertListEqual(self._GetNamesOfDefinedFlags(module_bar, + self.flag_values), + []) + + # Defines a few flags in module_foo and module_bar. + module_foo.DefineFlags(flag_values=self.flag_values) + + try: + # Part 1. Check that all flags defined by module_foo are key for + # that module, and similarly for module_bar. + for module in [module_foo, module_bar]: + self._AssertListsHaveSameElements( + self.flag_values._GetFlagsDefinedByModule(module), + self.flag_values._GetKeyFlagsForModule(module)) + # Also check that each module defined the expected flags. + self._AssertListsHaveSameElements( + self._GetNamesOfDefinedFlags(module, self.flag_values), + module.NamesOfDefinedFlags()) + + # Part 2. Check that gflags.DECLARE_key_flag works fine. + # Declare that some flags from module_bar are key for + # module_foo. + module_foo.DeclareKeyFlags(flag_values=self.flag_values) + + # Check that module_foo has the expected list of defined flags. + self._AssertListsHaveSameElements( + self._GetNamesOfDefinedFlags(module_foo, self.flag_values), + module_foo.NamesOfDefinedFlags()) + + # Check that module_foo has the expected list of key flags. + self._AssertListsHaveSameElements( + self._GetNamesOfKeyFlags(module_foo, self.flag_values), + module_foo.NamesOfDeclaredKeyFlags()) + + # Part 3. Check that gflags.ADOPT_module_key_flags works fine. + # Trigger a call to gflags.ADOPT_module_key_flags(module_bar) + # inside module_foo. This should declare a few more key + # flags in module_foo. + module_foo.DeclareExtraKeyFlags(flag_values=self.flag_values) + + # Check that module_foo has the expected list of key flags. + self._AssertListsHaveSameElements( + self._GetNamesOfKeyFlags(module_foo, self.flag_values), + module_foo.NamesOfDeclaredKeyFlags() + + module_foo.NamesOfDeclaredExtraKeyFlags()) + finally: + module_foo.RemoveFlags(flag_values=self.flag_values) + + def testKeyFlagsWithNonDefaultFlagValuesObject(self): + # Check that key flags work even when we use a FlagValues object + # that is not the default gflags.self.flag_values object. Otherwise, this + # test is similar to testKeyFlags, but it uses only module_bar. + # The other test module (module_foo) uses only the default values + # for the flag_values keyword arguments. This way, testKeyFlags + # and this method test both the default FlagValues, the explicitly + # specified one, and a mixed usage of the two. + + # A brand-new FlagValues object, to use instead of gflags.self.flag_values. + fv = gflags.FlagValues() + + # Before starting any testing, make sure no flags are already + # defined for module_foo and module_bar. + self.assertListEqual( + self._GetNamesOfKeyFlags(module_bar, fv), + []) + self.assertListEqual( + self._GetNamesOfDefinedFlags(module_bar, fv), + []) + + module_bar.DefineFlags(flag_values=fv) + + # Check that all flags defined by module_bar are key for that + # module, and that module_bar defined the expected flags. + self._AssertListsHaveSameElements( + fv._GetFlagsDefinedByModule(module_bar), + fv._GetKeyFlagsForModule(module_bar)) + self._AssertListsHaveSameElements( + self._GetNamesOfDefinedFlags(module_bar, fv), + module_bar.NamesOfDefinedFlags()) + + # Pick two flags from module_bar, declare them as key for the + # current (i.e., main) module (via gflags.DECLARE_key_flag), and + # check that we get the expected effect. The important thing is + # that we always use flags_values=fv (instead of the default + # self.flag_values). + main_module = gflags._GetMainModule() + names_of_flags_defined_by_bar = module_bar.NamesOfDefinedFlags() + flag_name_0 = names_of_flags_defined_by_bar[0] + flag_name_2 = names_of_flags_defined_by_bar[2] + + gflags.DECLARE_key_flag(flag_name_0, flag_values=fv) + self._AssertListsHaveSameElements( + self._GetNamesOfKeyFlags(main_module, fv), + [flag_name_0]) + + gflags.DECLARE_key_flag(flag_name_2, flag_values=fv) + self._AssertListsHaveSameElements( + self._GetNamesOfKeyFlags(main_module, fv), + [flag_name_0, flag_name_2]) + + # Try with a special (not user-defined) flag too: + gflags.DECLARE_key_flag('undefok', flag_values=fv) + self._AssertListsHaveSameElements( + self._GetNamesOfKeyFlags(main_module, fv), + [flag_name_0, flag_name_2, 'undefok']) + + gflags.ADOPT_module_key_flags(module_bar, fv) + self._AssertListsHaveSameElements( + self._GetNamesOfKeyFlags(main_module, fv), + names_of_flags_defined_by_bar + ['undefok']) + + # Adopt key flags from the flags module itself. + gflags.ADOPT_module_key_flags(gflags, flag_values=fv) + self._AssertListsHaveSameElements( + self._GetNamesOfKeyFlags(main_module, fv), + names_of_flags_defined_by_bar + ['flagfile', 'undefok']) + + def testMainModuleHelpWithKeyFlags(self): + # Similar to test_main_module_help, but this time we make sure to + # declare some key flags. + + # Safety check that the main module does not declare any flags + # at the beginning of this test. + expected_help = '' + self.assertMultiLineEqual(expected_help, self.flag_values.MainModuleHelp()) + + # Define one flag in this main module and some flags in modules + # a and b. Also declare one flag from module a and one flag + # from module b as key flags for the main module. + gflags.DEFINE_integer('main_module_int_fg', 1, + 'Integer flag in the main module.', + flag_values=self.flag_values) + + try: + main_module_int_fg_help = ( + " --main_module_int_fg: Integer flag in the main module.\n" + " (default: '1')\n" + " (an integer)") + + expected_help += "\n%s:\n%s" % (sys.argv[0], main_module_int_fg_help) + self.assertMultiLineEqual(expected_help, + self.flag_values.MainModuleHelp()) + + # The following call should be a no-op: any flag declared by a + # module is automatically key for that module. + gflags.DECLARE_key_flag('main_module_int_fg', flag_values=self.flag_values) + self.assertMultiLineEqual(expected_help, + self.flag_values.MainModuleHelp()) + + # The definition of a few flags in an imported module should not + # change the main module help. + module_foo.DefineFlags(flag_values=self.flag_values) + self.assertMultiLineEqual(expected_help, + self.flag_values.MainModuleHelp()) + + gflags.DECLARE_key_flag('tmod_foo_bool', flag_values=self.flag_values) + tmod_foo_bool_help = ( + " --[no]tmod_foo_bool: Boolean flag from module foo.\n" + " (default: 'true')") + expected_help += "\n" + tmod_foo_bool_help + self.assertMultiLineEqual(expected_help, + self.flag_values.MainModuleHelp()) + + gflags.DECLARE_key_flag('tmod_bar_z', flag_values=self.flag_values) + tmod_bar_z_help = ( + " --[no]tmod_bar_z: Another boolean flag from module bar.\n" + " (default: 'false')") + # Unfortunately, there is some flag sorting inside + # MainModuleHelp, so we can't keep incrementally extending + # the expected_help string ... + expected_help = ("\n%s:\n%s\n%s\n%s" % + (sys.argv[0], + main_module_int_fg_help, + tmod_bar_z_help, + tmod_foo_bool_help)) + self.assertMultiLineEqual(self.flag_values.MainModuleHelp(), + expected_help) + + finally: + # At the end, delete all the flag information we created. + self.flag_values.__delattr__('main_module_int_fg') + module_foo.RemoveFlags(flag_values=self.flag_values) + + def test_ADOPT_module_key_flags(self): + # Check that ADOPT_module_key_flags raises an exception when + # called with a module name (as opposed to a module object). + self.assertRaises(gflags.FlagsError, + gflags.ADOPT_module_key_flags, + 'pyglib.app') + + +class GetCallingModuleTest(googletest.TestCase): + """Test whether we correctly determine the module which defines the flag.""" + + def test_GetCallingModule(self): + self.assertEqual(gflags._GetCallingModule(), sys.argv[0]) + self.assertEqual( + module_foo.GetModuleName(), + 'flags_modules_for_testing.module_foo') + self.assertEqual( + module_bar.GetModuleName(), + 'flags_modules_for_testing.module_bar') + + # We execute the following exec statements for their side-effect + # (i.e., not raising an error). They emphasize the case that not + # all code resides in one of the imported modules: Python is a + # really dynamic language, where we can dynamically construct some + # code and execute it. + code = ("import gflags\n" + "module_name = gflags._GetCallingModule()") + exec(code) + + # Next two exec statements executes code with a global environment + # that is different from the global environment of any imported + # module. + exec(code, {}) + # vars(self) returns a dictionary corresponding to the symbol + # table of the self object. dict(...) makes a distinct copy of + # this dictionary, such that any new symbol definition by the + # exec-ed code (e.g., import flags, module_name = ...) does not + # affect the symbol table of self. + exec(code, dict(vars(self))) + + # Next test is actually more involved: it checks not only that + # _GetCallingModule does not crash inside exec code, it also checks + # that it returns the expected value: the code executed via exec + # code is treated as being executed by the current module. We + # check it twice: first time by executing exec from the main + # module, second time by executing it from module_bar. + global_dict = {} + exec(code, global_dict) + self.assertEqual(global_dict['module_name'], + sys.argv[0]) + + global_dict = {} + module_bar.ExecuteCode(code, global_dict) + self.assertEqual( + global_dict['module_name'], + 'flags_modules_for_testing.module_bar') + + def test_GetCallingModuleWithIteritemsError(self): + # This test checks that _GetCallingModule is using + # sys.modules.items(), instead of .iteritems(). + orig_sys_modules = sys.modules + + # Mock sys.modules: simulates error produced by importing a module + # in paralel with our iteration over sys.modules.iteritems(). + class SysModulesMock(dict): + def __init__(self, original_content): + dict.__init__(self, original_content) + + def iteritems(self): + # Any dictionary method is fine, but not .iteritems(). + raise RuntimeError('dictionary changed size during iteration') + + sys.modules = SysModulesMock(orig_sys_modules) + try: + # _GetCallingModule should still work as expected: + self.assertEqual(gflags._GetCallingModule(), sys.argv[0]) + self.assertEqual( + module_foo.GetModuleName(), + 'flags_modules_for_testing.module_foo') + finally: + sys.modules = orig_sys_modules + + +class FindModuleTest(googletest.TestCase): + """Testing methods that find a module that defines a given flag.""" + + def testFindModuleDefiningFlag(self): + self.assertEqual('default', FLAGS.FindModuleDefiningFlag( + '__NON_EXISTENT_FLAG__', 'default')) + self.assertEqual( + module_baz.__name__, FLAGS.FindModuleDefiningFlag('tmod_baz_x')) + + def testFindModuleIdDefiningFlag(self): + self.assertEqual('default', FLAGS.FindModuleIdDefiningFlag( + '__NON_EXISTENT_FLAG__', 'default')) + self.assertEqual( + id(module_baz), FLAGS.FindModuleIdDefiningFlag('tmod_baz_x')) + + +class FlagsErrorMessagesTest(googletest.TestCase): + """Testing special cases for integer and float flags error messages.""" + + def setUp(self): + # make sure we are using the old, stupid way of parsing flags. + self.flag_values = gflags.FlagValues() + self.flag_values.UseGnuGetOpt(False) + + def testIntegerErrorText(self): + # Make sure we get proper error text + gflags.DEFINE_integer('positive', 4, 'non-negative flag', lower_bound=1, + flag_values=self.flag_values) + gflags.DEFINE_integer('non_negative', 4, 'positive flag', lower_bound=0, + flag_values=self.flag_values) + gflags.DEFINE_integer('negative', -4, 'negative flag', upper_bound=-1, + flag_values=self.flag_values) + gflags.DEFINE_integer('non_positive', -4, 'non-positive flag', upper_bound=0, + flag_values=self.flag_values) + gflags.DEFINE_integer('greater', 19, 'greater-than flag', lower_bound=4, + flag_values=self.flag_values) + gflags.DEFINE_integer('smaller', -19, 'smaller-than flag', upper_bound=4, + flag_values=self.flag_values) + gflags.DEFINE_integer('usual', 4, 'usual flag', lower_bound=0, + upper_bound=10000, flag_values=self.flag_values) + gflags.DEFINE_integer('another_usual', 0, 'usual flag', lower_bound=-1, + upper_bound=1, flag_values=self.flag_values) + + self._CheckErrorMessage('positive', -4, 'a positive integer') + self._CheckErrorMessage('non_negative', -4, 'a non-negative integer') + self._CheckErrorMessage('negative', 0, 'a negative integer') + self._CheckErrorMessage('non_positive', 4, 'a non-positive integer') + self._CheckErrorMessage('usual', -4, 'an integer in the range [0, 10000]') + self._CheckErrorMessage('another_usual', 4, + 'an integer in the range [-1, 1]') + self._CheckErrorMessage('greater', -5, 'integer >= 4') + self._CheckErrorMessage('smaller', 5, 'integer <= 4') + + def testFloatErrorText(self): + gflags.DEFINE_float('positive', 4, 'non-negative flag', lower_bound=1, + flag_values=self.flag_values) + gflags.DEFINE_float('non_negative', 4, 'positive flag', lower_bound=0, + flag_values=self.flag_values) + gflags.DEFINE_float('negative', -4, 'negative flag', upper_bound=-1, + flag_values=self.flag_values) + gflags.DEFINE_float('non_positive', -4, 'non-positive flag', upper_bound=0, + flag_values=self.flag_values) + gflags.DEFINE_float('greater', 19, 'greater-than flag', lower_bound=4, + flag_values=self.flag_values) + gflags.DEFINE_float('smaller', -19, 'smaller-than flag', upper_bound=4, + flag_values=self.flag_values) + gflags.DEFINE_float('usual', 4, 'usual flag', lower_bound=0, + upper_bound=10000, flag_values=self.flag_values) + gflags.DEFINE_float('another_usual', 0, 'usual flag', lower_bound=-1, + upper_bound=1, flag_values=self.flag_values) + + self._CheckErrorMessage('positive', 0.5, 'number >= 1') + self._CheckErrorMessage('non_negative', -4.0, 'a non-negative number') + self._CheckErrorMessage('negative', 0.5, 'number <= -1') + self._CheckErrorMessage('non_positive', 4.0, 'a non-positive number') + self._CheckErrorMessage('usual', -4.0, 'a number in the range [0, 10000]') + self._CheckErrorMessage('another_usual', 4.0, + 'a number in the range [-1, 1]') + self._CheckErrorMessage('smaller', 5.0, 'number <= 4') + + def _CheckErrorMessage(self, flag_name, flag_value, expected_message_suffix): + """Set a flag to a given value and make sure we get expected message.""" + + try: + self.flag_values.__setattr__(flag_name, flag_value) + raise AssertionError('Bounds exception not raised!') + except gflags.IllegalFlagValue, e: + expected = ('flag --%(name)s=%(value)s: %(value)s is not %(suffix)s' % + {'name': flag_name, 'value': flag_value, + 'suffix': expected_message_suffix}) + self.assertEquals(str(e), expected) + + +def main(): + googletest.main() + + +if __name__ == '__main__': + main() diff --git a/third_party/gjslint/python-gflags-2.0/tests/gflags_validators_test.py b/third_party/gjslint/python-gflags-2.0/tests/gflags_validators_test.py new file mode 100755 index 0000000000..460e6d01d9 --- /dev/null +++ b/third_party/gjslint/python-gflags-2.0/tests/gflags_validators_test.py @@ -0,0 +1,220 @@ +#!/usr/bin/env python + +# Copyright (c) 2010, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Testing that flags validators framework does work. + +This file tests that each flag validator called when it should be, and that +failed validator will throw an exception, etc. +""" + +__author__ = 'olexiy@google.com (Olexiy Oryeshko)' + +import gflags_googletest as googletest +import gflags +import gflags_validators + + +class SimpleValidatorTest(googletest.TestCase): + """Testing gflags.RegisterValidator() method.""" + + def setUp(self): + super(SimpleValidatorTest, self).setUp() + self.flag_values = gflags.FlagValues() + self.call_args = [] + + def testSuccess(self): + def Checker(x): + self.call_args.append(x) + return True + gflags.DEFINE_integer('test_flag', None, 'Usual integer flag', + flag_values=self.flag_values) + gflags.RegisterValidator('test_flag', + Checker, + message='Errors happen', + flag_values=self.flag_values) + + argv = ('./program') + self.flag_values(argv) + self.assertEquals(None, self.flag_values.test_flag) + self.flag_values.test_flag = 2 + self.assertEquals(2, self.flag_values.test_flag) + self.assertEquals([None, 2], self.call_args) + + def testDefaultValueNotUsedSuccess(self): + def Checker(x): + self.call_args.append(x) + return True + gflags.DEFINE_integer('test_flag', None, 'Usual integer flag', + flag_values=self.flag_values) + gflags.RegisterValidator('test_flag', + Checker, + message='Errors happen', + flag_values=self.flag_values) + + argv = ('./program', '--test_flag=1') + self.flag_values(argv) + self.assertEquals(1, self.flag_values.test_flag) + self.assertEquals([1], self.call_args) + + def testValidatorNotCalledWhenOtherFlagIsChanged(self): + def Checker(x): + self.call_args.append(x) + return True + gflags.DEFINE_integer('test_flag', 1, 'Usual integer flag', + flag_values=self.flag_values) + gflags.DEFINE_integer('other_flag', 2, 'Other integer flag', + flag_values=self.flag_values) + gflags.RegisterValidator('test_flag', + Checker, + message='Errors happen', + flag_values=self.flag_values) + + argv = ('./program') + self.flag_values(argv) + self.assertEquals(1, self.flag_values.test_flag) + self.flag_values.other_flag = 3 + self.assertEquals([1], self.call_args) + + def testExceptionRaisedIfCheckerFails(self): + def Checker(x): + self.call_args.append(x) + return x == 1 + gflags.DEFINE_integer('test_flag', None, 'Usual integer flag', + flag_values=self.flag_values) + gflags.RegisterValidator('test_flag', + Checker, + message='Errors happen', + flag_values=self.flag_values) + + argv = ('./program', '--test_flag=1') + self.flag_values(argv) + try: + self.flag_values.test_flag = 2 + raise AssertionError('gflags.IllegalFlagValue expected') + except gflags.IllegalFlagValue, e: + self.assertEquals('flag --test_flag=2: Errors happen', str(e)) + self.assertEquals([1, 2], self.call_args) + + def testExceptionRaisedIfCheckerRaisesException(self): + def Checker(x): + self.call_args.append(x) + if x == 1: + return True + raise gflags_validators.Error('Specific message') + gflags.DEFINE_integer('test_flag', None, 'Usual integer flag', + flag_values=self.flag_values) + gflags.RegisterValidator('test_flag', + Checker, + message='Errors happen', + flag_values=self.flag_values) + + argv = ('./program', '--test_flag=1') + self.flag_values(argv) + try: + self.flag_values.test_flag = 2 + raise AssertionError('gflags.IllegalFlagValue expected') + except gflags.IllegalFlagValue, e: + self.assertEquals('flag --test_flag=2: Specific message', str(e)) + self.assertEquals([1, 2], self.call_args) + + def testErrorMessageWhenCheckerReturnsFalseOnStart(self): + def Checker(x): + self.call_args.append(x) + return False + gflags.DEFINE_integer('test_flag', None, 'Usual integer flag', + flag_values=self.flag_values) + gflags.RegisterValidator('test_flag', + Checker, + message='Errors happen', + flag_values=self.flag_values) + + argv = ('./program', '--test_flag=1') + try: + self.flag_values(argv) + raise AssertionError('gflags.IllegalFlagValue expected') + except gflags.IllegalFlagValue, e: + self.assertEquals('flag --test_flag=1: Errors happen', str(e)) + self.assertEquals([1], self.call_args) + + def testErrorMessageWhenCheckerRaisesExceptionOnStart(self): + def Checker(x): + self.call_args.append(x) + raise gflags_validators.Error('Specific message') + gflags.DEFINE_integer('test_flag', None, 'Usual integer flag', + flag_values=self.flag_values) + gflags.RegisterValidator('test_flag', + Checker, + message='Errors happen', + flag_values=self.flag_values) + + argv = ('./program', '--test_flag=1') + try: + self.flag_values(argv) + raise AssertionError('IllegalFlagValue expected') + except gflags.IllegalFlagValue, e: + self.assertEquals('flag --test_flag=1: Specific message', str(e)) + self.assertEquals([1], self.call_args) + + def testValidatorsCheckedInOrder(self): + + def Required(x): + self.calls.append('Required') + return x is not None + + def Even(x): + self.calls.append('Even') + return x % 2 == 0 + + self.calls = [] + self._DefineFlagAndValidators(Required, Even) + self.assertEquals(['Required', 'Even'], self.calls) + + self.calls = [] + self._DefineFlagAndValidators(Even, Required) + self.assertEquals(['Even', 'Required'], self.calls) + + def _DefineFlagAndValidators(self, first_validator, second_validator): + local_flags = gflags.FlagValues() + gflags.DEFINE_integer('test_flag', 2, 'test flag', flag_values=local_flags) + gflags.RegisterValidator('test_flag', + first_validator, + message='', + flag_values=local_flags) + gflags.RegisterValidator('test_flag', + second_validator, + message='', + flag_values=local_flags) + argv = ('./program') + local_flags(argv) + + +if __name__ == '__main__': + googletest.main() diff --git a/third_party/jasmine/LICENSE.txt b/third_party/jasmine/LICENSE.txt new file mode 100644 index 0000000000..aff8ed47a1 --- /dev/null +++ b/third_party/jasmine/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/third_party/jasmine/lib/jasmine-2.1.3/boot.js b/third_party/jasmine/lib/jasmine-2.1.3/boot.js new file mode 100644 index 0000000000..164f068b09 --- /dev/null +++ b/third_party/jasmine/lib/jasmine-2.1.3/boot.js @@ -0,0 +1,120 @@ +/** + Starting with version 2.0, this file "boots" Jasmine, performing all of the necessary initialization before executing the loaded environment and all of a project's specs. This file should be loaded after `jasmine.js` and `jasmine_html.js`, but before any project source files or spec files are loaded. Thus this file can also be used to customize Jasmine for a project. + + If a project is using Jasmine via the standalone distribution, this file can be customized directly. If a project is using Jasmine via the [Ruby gem][jasmine-gem], this file can be copied into the support directory via `jasmine copy_boot_js`. Other environments (e.g., Python) will have different mechanisms. + + The location of `boot.js` can be specified and/or overridden in `jasmine.yml`. + + [jasmine-gem]: http://github.com/pivotal/jasmine-gem + */ + +(function() { + + /** + * ## Require & Instantiate + * + * Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference. + */ + window.jasmine = jasmineRequire.core(jasmineRequire); + + /** + * Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference. + */ + jasmineRequire.html(jasmine); + + /** + * Create the Jasmine environment. This is used to run all specs in a project. + */ + var env = jasmine.getEnv(); + + /** + * ## The Global Interface + * + * Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged. + */ + var jasmineInterface = jasmineRequire.interface(jasmine, env); + + /** + * Add all of the Jasmine global/public interface to the proper global, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`. + */ + if (typeof window == "undefined" && typeof exports == "object") { + extend(exports, jasmineInterface); + } else { + extend(window, jasmineInterface); + } + + /** + * ## Runner Parameters + * + * More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface. + */ + + var queryString = new jasmine.QueryString({ + getWindowLocation: function() { return window.location; } + }); + + var catchingExceptions = queryString.getParam("catch"); + env.catchExceptions(typeof catchingExceptions === "undefined" ? true : catchingExceptions); + + /** + * ## Reporters + * The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any). + */ + var htmlReporter = new jasmine.HtmlReporter({ + env: env, + onRaiseExceptionsClick: function() { queryString.setParam("catch", !env.catchingExceptions()); }, + getContainer: function() { return document.body; }, + createElement: function() { return document.createElement.apply(document, arguments); }, + createTextNode: function() { return document.createTextNode.apply(document, arguments); }, + timer: new jasmine.Timer() + }); + + /** + * The `jsApiReporter` also receives spec results, and is used by any environment that needs to extract the results from JavaScript. + */ + env.addReporter(jasmineInterface.jsApiReporter); + env.addReporter(htmlReporter); + + /** + * Filter which specs will be run by matching the start of the full name against the `spec` query param. + */ + var specFilter = new jasmine.HtmlSpecFilter({ + filterString: function() { return queryString.getParam("spec"); } + }); + + env.specFilter = function(spec) { + return specFilter.matches(spec.getFullName()); + }; + + /** + * Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack. + */ + window.setTimeout = window.setTimeout; + window.setInterval = window.setInterval; + window.clearTimeout = window.clearTimeout; + window.clearInterval = window.clearInterval; + + /** + * ## Execution + * + * Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded. + */ + var currentWindowOnload = window.onload; + + window.onload = function() { + if (currentWindowOnload) { + currentWindowOnload(); + } + htmlReporter.initialize(); + env.execute(); + }; + + /** + * Helper function for readability above. + */ + function extend(destination, source) { + for (var property in source) destination[property] = source[property]; + return destination; + } + +}()); diff --git a/third_party/jasmine/lib/jasmine-2.1.3/console.js b/third_party/jasmine/lib/jasmine-2.1.3/console.js new file mode 100644 index 0000000000..a65876e911 --- /dev/null +++ b/third_party/jasmine/lib/jasmine-2.1.3/console.js @@ -0,0 +1,190 @@ +/* +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +function getJasmineRequireObj() { + if (typeof module !== 'undefined' && module.exports) { + return exports; + } else { + window.jasmineRequire = window.jasmineRequire || {}; + return window.jasmineRequire; + } +} + +getJasmineRequireObj().console = function(jRequire, j$) { + j$.ConsoleReporter = jRequire.ConsoleReporter(); +}; + +getJasmineRequireObj().ConsoleReporter = function() { + + var noopTimer = { + start: function(){}, + elapsed: function(){ return 0; } + }; + + function ConsoleReporter(options) { + var print = options.print, + showColors = options.showColors || false, + onComplete = options.onComplete || function() {}, + timer = options.timer || noopTimer, + specCount, + failureCount, + failedSpecs = [], + pendingCount, + ansi = { + green: '\x1B[32m', + red: '\x1B[31m', + yellow: '\x1B[33m', + none: '\x1B[0m' + }, + failedSuites = []; + + print('ConsoleReporter is deprecated and will be removed in a future version.'); + + this.jasmineStarted = function() { + specCount = 0; + failureCount = 0; + pendingCount = 0; + print('Started'); + printNewline(); + timer.start(); + }; + + this.jasmineDone = function() { + printNewline(); + for (var i = 0; i < failedSpecs.length; i++) { + specFailureDetails(failedSpecs[i]); + } + + if(specCount > 0) { + printNewline(); + + var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' + + failureCount + ' ' + plural('failure', failureCount); + + if (pendingCount) { + specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount); + } + + print(specCounts); + } else { + print('No specs found'); + } + + printNewline(); + var seconds = timer.elapsed() / 1000; + print('Finished in ' + seconds + ' ' + plural('second', seconds)); + printNewline(); + + for(i = 0; i < failedSuites.length; i++) { + suiteFailureDetails(failedSuites[i]); + } + + onComplete(failureCount === 0); + }; + + this.specDone = function(result) { + specCount++; + + if (result.status == 'pending') { + pendingCount++; + print(colored('yellow', '*')); + return; + } + + if (result.status == 'passed') { + print(colored('green', '.')); + return; + } + + if (result.status == 'failed') { + failureCount++; + failedSpecs.push(result); + print(colored('red', 'F')); + } + }; + + this.suiteDone = function(result) { + if (result.failedExpectations && result.failedExpectations.length > 0) { + failureCount++; + failedSuites.push(result); + } + }; + + return this; + + function printNewline() { + print('\n'); + } + + function colored(color, str) { + return showColors ? (ansi[color] + str + ansi.none) : str; + } + + function plural(str, count) { + return count == 1 ? str : str + 's'; + } + + function repeat(thing, times) { + var arr = []; + for (var i = 0; i < times; i++) { + arr.push(thing); + } + return arr; + } + + function indent(str, spaces) { + var lines = (str || '').split('\n'); + var newArr = []; + for (var i = 0; i < lines.length; i++) { + newArr.push(repeat(' ', spaces).join('') + lines[i]); + } + return newArr.join('\n'); + } + + function specFailureDetails(result) { + printNewline(); + print(result.fullName); + + for (var i = 0; i < result.failedExpectations.length; i++) { + var failedExpectation = result.failedExpectations[i]; + printNewline(); + print(indent(failedExpectation.message, 2)); + print(indent(failedExpectation.stack, 2)); + } + + printNewline(); + } + + function suiteFailureDetails(result) { + for (var i = 0; i < result.failedExpectations.length; i++) { + printNewline(); + print(colored('red', 'An error was thrown in an afterAll')); + printNewline(); + print(colored('red', 'AfterAll ' + result.failedExpectations[i].message)); + + } + printNewline(); + } + } + + return ConsoleReporter; +}; diff --git a/third_party/jasmine/lib/jasmine-2.1.3/jasmine-html.js b/third_party/jasmine/lib/jasmine-2.1.3/jasmine-html.js new file mode 100644 index 0000000000..898108b77d --- /dev/null +++ b/third_party/jasmine/lib/jasmine-2.1.3/jasmine-html.js @@ -0,0 +1,404 @@ +/* +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +jasmineRequire.html = function(j$) { + j$.ResultsNode = jasmineRequire.ResultsNode(); + j$.HtmlReporter = jasmineRequire.HtmlReporter(j$); + j$.QueryString = jasmineRequire.QueryString(); + j$.HtmlSpecFilter = jasmineRequire.HtmlSpecFilter(); +}; + +jasmineRequire.HtmlReporter = function(j$) { + + var noopTimer = { + start: function() {}, + elapsed: function() { return 0; } + }; + + function HtmlReporter(options) { + var env = options.env || {}, + getContainer = options.getContainer, + createElement = options.createElement, + createTextNode = options.createTextNode, + onRaiseExceptionsClick = options.onRaiseExceptionsClick || function() {}, + timer = options.timer || noopTimer, + results = [], + specsExecuted = 0, + failureCount = 0, + pendingSpecCount = 0, + htmlReporterMain, + symbols, + failedSuites = []; + + this.initialize = function() { + clearPrior(); + htmlReporterMain = createDom('div', {className: 'jasmine_html-reporter'}, + createDom('div', {className: 'banner'}, + createDom('a', {className: 'title', href: 'http://jasmine.github.io/', target: '_blank'}), + createDom('span', {className: 'version'}, j$.version) + ), + createDom('ul', {className: 'symbol-summary'}), + createDom('div', {className: 'alert'}), + createDom('div', {className: 'results'}, + createDom('div', {className: 'failures'}) + ) + ); + getContainer().appendChild(htmlReporterMain); + + symbols = find('.symbol-summary'); + }; + + var totalSpecsDefined; + this.jasmineStarted = function(options) { + totalSpecsDefined = options.totalSpecsDefined || 0; + timer.start(); + }; + + var summary = createDom('div', {className: 'summary'}); + + var topResults = new j$.ResultsNode({}, '', null), + currentParent = topResults; + + this.suiteStarted = function(result) { + currentParent.addChild(result, 'suite'); + currentParent = currentParent.last(); + }; + + this.suiteDone = function(result) { + if (result.status == 'failed') { + failedSuites.push(result); + } + + if (currentParent == topResults) { + return; + } + + currentParent = currentParent.parent; + }; + + this.specStarted = function(result) { + currentParent.addChild(result, 'spec'); + }; + + var failures = []; + this.specDone = function(result) { + if(noExpectations(result) && typeof console !== 'undefined' && typeof console.error !== 'undefined') { + console.error('Spec \'' + result.fullName + '\' has no expectations.'); + } + + if (result.status != 'disabled') { + specsExecuted++; + } + + symbols.appendChild(createDom('li', { + className: noExpectations(result) ? 'empty' : result.status, + id: 'spec_' + result.id, + title: result.fullName + } + )); + + if (result.status == 'failed') { + failureCount++; + + var failure = + createDom('div', {className: 'spec-detail failed'}, + createDom('div', {className: 'description'}, + createDom('a', {title: result.fullName, href: specHref(result)}, result.fullName) + ), + createDom('div', {className: 'messages'}) + ); + var messages = failure.childNodes[1]; + + for (var i = 0; i < result.failedExpectations.length; i++) { + var expectation = result.failedExpectations[i]; + messages.appendChild(createDom('div', {className: 'result-message'}, expectation.message)); + messages.appendChild(createDom('div', {className: 'stack-trace'}, expectation.stack)); + } + + failures.push(failure); + } + + if (result.status == 'pending') { + pendingSpecCount++; + } + }; + + this.jasmineDone = function() { + var banner = find('.banner'); + banner.appendChild(createDom('span', {className: 'duration'}, 'finished in ' + timer.elapsed() / 1000 + 's')); + + var alert = find('.alert'); + + alert.appendChild(createDom('span', { className: 'exceptions' }, + createDom('label', { className: 'label', 'for': 'raise-exceptions' }, 'raise exceptions'), + createDom('input', { + className: 'raise', + id: 'raise-exceptions', + type: 'checkbox' + }) + )); + var checkbox = find('#raise-exceptions'); + + checkbox.checked = !env.catchingExceptions(); + checkbox.onclick = onRaiseExceptionsClick; + + if (specsExecuted < totalSpecsDefined) { + var skippedMessage = 'Ran ' + specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all'; + alert.appendChild( + createDom('span', {className: 'bar skipped'}, + createDom('a', {href: '?', title: 'Run all specs'}, skippedMessage) + ) + ); + } + var statusBarMessage = ''; + var statusBarClassName = 'bar '; + + if (totalSpecsDefined > 0) { + statusBarMessage += pluralize('spec', specsExecuted) + ', ' + pluralize('failure', failureCount); + if (pendingSpecCount) { statusBarMessage += ', ' + pluralize('pending spec', pendingSpecCount); } + statusBarClassName += (failureCount > 0) ? 'failed' : 'passed'; + } else { + statusBarClassName += 'skipped'; + statusBarMessage += 'No specs found'; + } + + alert.appendChild(createDom('span', {className: statusBarClassName}, statusBarMessage)); + + for(i = 0; i < failedSuites.length; i++) { + var failedSuite = failedSuites[i]; + for(var j = 0; j < failedSuite.failedExpectations.length; j++) { + var errorBarMessage = 'AfterAll ' + failedSuite.failedExpectations[j].message; + var errorBarClassName = 'bar errored'; + alert.appendChild(createDom('span', {className: errorBarClassName}, errorBarMessage)); + } + } + + var results = find('.results'); + results.appendChild(summary); + + summaryList(topResults, summary); + + function summaryList(resultsTree, domParent) { + var specListNode; + for (var i = 0; i < resultsTree.children.length; i++) { + var resultNode = resultsTree.children[i]; + if (resultNode.type == 'suite') { + var suiteListNode = createDom('ul', {className: 'suite', id: 'suite-' + resultNode.result.id}, + createDom('li', {className: 'suite-detail'}, + createDom('a', {href: specHref(resultNode.result)}, resultNode.result.description) + ) + ); + + summaryList(resultNode, suiteListNode); + domParent.appendChild(suiteListNode); + } + if (resultNode.type == 'spec') { + if (domParent.getAttribute('class') != 'specs') { + specListNode = createDom('ul', {className: 'specs'}); + domParent.appendChild(specListNode); + } + var specDescription = resultNode.result.description; + if(noExpectations(resultNode.result)) { + specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription; + } + specListNode.appendChild( + createDom('li', { + className: resultNode.result.status, + id: 'spec-' + resultNode.result.id + }, + createDom('a', {href: specHref(resultNode.result)}, specDescription) + ) + ); + } + } + } + + if (failures.length) { + alert.appendChild( + createDom('span', {className: 'menu bar spec-list'}, + createDom('span', {}, 'Spec List | '), + createDom('a', {className: 'failures-menu', href: '#'}, 'Failures'))); + alert.appendChild( + createDom('span', {className: 'menu bar failure-list'}, + createDom('a', {className: 'spec-list-menu', href: '#'}, 'Spec List'), + createDom('span', {}, ' | Failures '))); + + find('.failures-menu').onclick = function() { + setMenuModeTo('failure-list'); + }; + find('.spec-list-menu').onclick = function() { + setMenuModeTo('spec-list'); + }; + + setMenuModeTo('failure-list'); + + var failureNode = find('.failures'); + for (var i = 0; i < failures.length; i++) { + failureNode.appendChild(failures[i]); + } + } + }; + + return this; + + function find(selector) { + return getContainer().querySelector('.jasmine_html-reporter ' + selector); + } + + function clearPrior() { + // return the reporter + var oldReporter = find(''); + + if(oldReporter) { + getContainer().removeChild(oldReporter); + } + } + + function createDom(type, attrs, childrenVarArgs) { + var el = createElement(type); + + for (var i = 2; i < arguments.length; i++) { + var child = arguments[i]; + + if (typeof child === 'string') { + el.appendChild(createTextNode(child)); + } else { + if (child) { + el.appendChild(child); + } + } + } + + for (var attr in attrs) { + if (attr == 'className') { + el[attr] = attrs[attr]; + } else { + el.setAttribute(attr, attrs[attr]); + } + } + + return el; + } + + function pluralize(singular, count) { + var word = (count == 1 ? singular : singular + 's'); + + return '' + count + ' ' + word; + } + + function specHref(result) { + return '?spec=' + encodeURIComponent(result.fullName); + } + + function setMenuModeTo(mode) { + htmlReporterMain.setAttribute('class', 'jasmine_html-reporter ' + mode); + } + + function noExpectations(result) { + return (result.failedExpectations.length + result.passedExpectations.length) === 0 && + result.status === 'passed'; + } + } + + return HtmlReporter; +}; + +jasmineRequire.HtmlSpecFilter = function() { + function HtmlSpecFilter(options) { + var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); + var filterPattern = new RegExp(filterString); + + this.matches = function(specName) { + return filterPattern.test(specName); + }; + } + + return HtmlSpecFilter; +}; + +jasmineRequire.ResultsNode = function() { + function ResultsNode(result, type, parent) { + this.result = result; + this.type = type; + this.parent = parent; + + this.children = []; + + this.addChild = function(result, type) { + this.children.push(new ResultsNode(result, type, this)); + }; + + this.last = function() { + return this.children[this.children.length - 1]; + }; + } + + return ResultsNode; +}; + +jasmineRequire.QueryString = function() { + function QueryString(options) { + + this.setParam = function(key, value) { + var paramMap = queryStringToParamMap(); + paramMap[key] = value; + options.getWindowLocation().search = toQueryString(paramMap); + }; + + this.getParam = function(key) { + return queryStringToParamMap()[key]; + }; + + return this; + + function toQueryString(paramMap) { + var qStrPairs = []; + for (var prop in paramMap) { + qStrPairs.push(encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop])); + } + return '?' + qStrPairs.join('&'); + } + + function queryStringToParamMap() { + var paramStr = options.getWindowLocation().search.substring(1), + params = [], + paramMap = {}; + + if (paramStr.length > 0) { + params = paramStr.split('&'); + for (var i = 0; i < params.length; i++) { + var p = params[i].split('='); + var value = decodeURIComponent(p[1]); + if (value === 'true' || value === 'false') { + value = JSON.parse(value); + } + paramMap[decodeURIComponent(p[0])] = value; + } + } + + return paramMap; + } + + } + + return QueryString; +}; diff --git a/third_party/jasmine/lib/jasmine-2.1.3/jasmine.css b/third_party/jasmine/lib/jasmine-2.1.3/jasmine.css new file mode 100644 index 0000000000..7ae5834879 --- /dev/null +++ b/third_party/jasmine/lib/jasmine-2.1.3/jasmine.css @@ -0,0 +1,62 @@ +body { overflow-y: scroll; } + +.jasmine_html-reporter { background-color: #eeeeee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; } +.jasmine_html-reporter a { text-decoration: none; } +.jasmine_html-reporter a:hover { text-decoration: underline; } +.jasmine_html-reporter p, .jasmine_html-reporter h1, .jasmine_html-reporter h2, .jasmine_html-reporter h3, .jasmine_html-reporter h4, .jasmine_html-reporter h5, .jasmine_html-reporter h6 { margin: 0; line-height: 14px; } +.jasmine_html-reporter .banner, .jasmine_html-reporter .symbol-summary, .jasmine_html-reporter .summary, .jasmine_html-reporter .result-message, .jasmine_html-reporter .spec .description, .jasmine_html-reporter .spec-detail .description, .jasmine_html-reporter .alert .bar, .jasmine_html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; } +.jasmine_html-reporter .banner { position: relative; } +.jasmine_html-reporter .banner .title { background: url('data:image/png;base64,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') no-repeat; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=') no-repeat, none; -webkit-background-size: 100%; -moz-background-size: 100%; -o-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; } +.jasmine_html-reporter .banner .version { margin-left: 14px; position: relative; top: 6px; } +.jasmine_html-reporter .banner .duration { position: absolute; right: 14px; top: 6px; } +.jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; } +.jasmine_html-reporter .version { color: #aaaaaa; } +.jasmine_html-reporter .banner { margin-top: 14px; } +.jasmine_html-reporter .duration { color: #aaaaaa; float: right; } +.jasmine_html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; } +.jasmine_html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; } +.jasmine_html-reporter .symbol-summary li.passed { font-size: 14px; } +.jasmine_html-reporter .symbol-summary li.passed:before { color: #007069; content: "\02022"; } +.jasmine_html-reporter .symbol-summary li.failed { line-height: 9px; } +.jasmine_html-reporter .symbol-summary li.failed:before { color: #ca3a11; content: "\d7"; font-weight: bold; margin-left: -1px; } +.jasmine_html-reporter .symbol-summary li.disabled { font-size: 14px; } +.jasmine_html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; } +.jasmine_html-reporter .symbol-summary li.pending { line-height: 17px; } +.jasmine_html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; } +.jasmine_html-reporter .symbol-summary li.empty { font-size: 14px; } +.jasmine_html-reporter .symbol-summary li.empty:before { color: #ba9d37; content: "\02022"; } +.jasmine_html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; } +.jasmine_html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; } +.jasmine_html-reporter .bar.failed { background-color: #ca3a11; } +.jasmine_html-reporter .bar.passed { background-color: #007069; } +.jasmine_html-reporter .bar.skipped { background-color: #bababa; } +.jasmine_html-reporter .bar.errored { background-color: #ca3a11; } +.jasmine_html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; } +.jasmine_html-reporter .bar.menu a { color: #333333; } +.jasmine_html-reporter .bar a { color: white; } +.jasmine_html-reporter.spec-list .bar.menu.failure-list, .jasmine_html-reporter.spec-list .results .failures { display: none; } +.jasmine_html-reporter.failure-list .bar.menu.spec-list, .jasmine_html-reporter.failure-list .summary { display: none; } +.jasmine_html-reporter .running-alert { background-color: #666666; } +.jasmine_html-reporter .results { margin-top: 14px; } +.jasmine_html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; } +.jasmine_html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; } +.jasmine_html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; } +.jasmine_html-reporter.showDetails .summary { display: none; } +.jasmine_html-reporter.showDetails #details { display: block; } +.jasmine_html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; } +.jasmine_html-reporter .summary { margin-top: 14px; } +.jasmine_html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; } +.jasmine_html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; } +.jasmine_html-reporter .summary li.passed a { color: #007069; } +.jasmine_html-reporter .summary li.failed a { color: #ca3a11; } +.jasmine_html-reporter .summary li.empty a { color: #ba9d37; } +.jasmine_html-reporter .summary li.pending a { color: #ba9d37; } +.jasmine_html-reporter .description + .suite { margin-top: 0; } +.jasmine_html-reporter .suite { margin-top: 14px; } +.jasmine_html-reporter .suite a { color: #333333; } +.jasmine_html-reporter .failures .spec-detail { margin-bottom: 28px; } +.jasmine_html-reporter .failures .spec-detail .description { background-color: #ca3a11; } +.jasmine_html-reporter .failures .spec-detail .description a { color: white; } +.jasmine_html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; } +.jasmine_html-reporter .result-message span.result { display: block; } +.jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; } diff --git a/third_party/jasmine/lib/jasmine-2.1.3/jasmine.js b/third_party/jasmine/lib/jasmine-2.1.3/jasmine.js new file mode 100644 index 0000000000..56209b45b4 --- /dev/null +++ b/third_party/jasmine/lib/jasmine-2.1.3/jasmine.js @@ -0,0 +1,2913 @@ +/* +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +getJasmineRequireObj = (function (jasmineGlobal) { + var jasmineRequire; + + if (typeof module !== 'undefined' && module.exports) { + jasmineGlobal = global; + jasmineRequire = exports; + } else { + jasmineRequire = jasmineGlobal.jasmineRequire = jasmineGlobal.jasmineRequire || {}; + } + + function getJasmineRequire() { + return jasmineRequire; + } + + getJasmineRequire().core = function(jRequire) { + var j$ = {}; + + jRequire.base(j$, jasmineGlobal); + j$.util = jRequire.util(); + j$.Any = jRequire.Any(); + j$.CallTracker = jRequire.CallTracker(); + j$.MockDate = jRequire.MockDate(); + j$.Clock = jRequire.Clock(); + j$.DelayedFunctionScheduler = jRequire.DelayedFunctionScheduler(); + j$.Env = jRequire.Env(j$); + j$.ExceptionFormatter = jRequire.ExceptionFormatter(); + j$.Expectation = jRequire.Expectation(); + j$.buildExpectationResult = jRequire.buildExpectationResult(); + j$.JsApiReporter = jRequire.JsApiReporter(); + j$.matchersUtil = jRequire.matchersUtil(j$); + j$.ObjectContaining = jRequire.ObjectContaining(j$); + j$.pp = jRequire.pp(j$); + j$.QueueRunner = jRequire.QueueRunner(j$); + j$.ReportDispatcher = jRequire.ReportDispatcher(); + j$.Spec = jRequire.Spec(j$); + j$.SpyRegistry = jRequire.SpyRegistry(j$); + j$.SpyStrategy = jRequire.SpyStrategy(); + j$.Suite = jRequire.Suite(); + j$.Timer = jRequire.Timer(); + j$.version = jRequire.version(); + + j$.matchers = jRequire.requireMatchers(jRequire, j$); + + return j$; + }; + + return getJasmineRequire; +})(this); + +getJasmineRequireObj().requireMatchers = function(jRequire, j$) { + var availableMatchers = [ + 'toBe', + 'toBeCloseTo', + 'toBeDefined', + 'toBeFalsy', + 'toBeGreaterThan', + 'toBeLessThan', + 'toBeNaN', + 'toBeNull', + 'toBeTruthy', + 'toBeUndefined', + 'toContain', + 'toEqual', + 'toHaveBeenCalled', + 'toHaveBeenCalledWith', + 'toMatch', + 'toThrow', + 'toThrowError' + ], + matchers = {}; + + for (var i = 0; i < availableMatchers.length; i++) { + var name = availableMatchers[i]; + matchers[name] = jRequire[name](j$); + } + + return matchers; +}; + +getJasmineRequireObj().base = function(j$, jasmineGlobal) { + j$.unimplementedMethod_ = function() { + throw new Error('unimplemented method'); + }; + + j$.MAX_PRETTY_PRINT_DEPTH = 40; + j$.MAX_PRETTY_PRINT_ARRAY_LENGTH = 100; + j$.DEFAULT_TIMEOUT_INTERVAL = 5000; + + j$.getGlobal = function() { + return jasmineGlobal; + }; + + j$.getEnv = function(options) { + var env = j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options); + //jasmine. singletons in here (setTimeout blah blah). + return env; + }; + + j$.isArray_ = function(value) { + return j$.isA_('Array', value); + }; + + j$.isString_ = function(value) { + return j$.isA_('String', value); + }; + + j$.isNumber_ = function(value) { + return j$.isA_('Number', value); + }; + + j$.isA_ = function(typeName, value) { + return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; + }; + + j$.isDomNode = function(obj) { + return obj.nodeType > 0; + }; + + j$.any = function(clazz) { + return new j$.Any(clazz); + }; + + j$.objectContaining = function(sample) { + return new j$.ObjectContaining(sample); + }; + + j$.createSpy = function(name, originalFn) { + + var spyStrategy = new j$.SpyStrategy({ + name: name, + fn: originalFn, + getSpy: function() { return spy; } + }), + callTracker = new j$.CallTracker(), + spy = function() { + var callData = { + object: this, + args: Array.prototype.slice.apply(arguments) + }; + + callTracker.track(callData); + var returnValue = spyStrategy.exec.apply(this, arguments); + callData.returnValue = returnValue; + + return returnValue; + }; + + for (var prop in originalFn) { + if (prop === 'and' || prop === 'calls') { + throw new Error('Jasmine spies would overwrite the \'and\' and \'calls\' properties on the object being spied upon'); + } + + spy[prop] = originalFn[prop]; + } + + spy.and = spyStrategy; + spy.calls = callTracker; + + return spy; + }; + + j$.isSpy = function(putativeSpy) { + if (!putativeSpy) { + return false; + } + return putativeSpy.and instanceof j$.SpyStrategy && + putativeSpy.calls instanceof j$.CallTracker; + }; + + j$.createSpyObj = function(baseName, methodNames) { + if (!j$.isArray_(methodNames) || methodNames.length === 0) { + throw 'createSpyObj requires a non-empty array of method names to create spies for'; + } + var obj = {}; + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = j$.createSpy(baseName + '.' + methodNames[i]); + } + return obj; + }; +}; + +getJasmineRequireObj().util = function() { + + var util = {}; + + util.inherit = function(childClass, parentClass) { + var Subclass = function() { + }; + Subclass.prototype = parentClass.prototype; + childClass.prototype = new Subclass(); + }; + + util.htmlEscape = function(str) { + if (!str) { + return str; + } + return str.replace(/&/g, '&') + .replace(//g, '>'); + }; + + util.argsToArray = function(args) { + var arrayOfArgs = []; + for (var i = 0; i < args.length; i++) { + arrayOfArgs.push(args[i]); + } + return arrayOfArgs; + }; + + util.isUndefined = function(obj) { + return obj === void 0; + }; + + util.arrayContains = function(array, search) { + var i = array.length; + while (i--) { + if (array[i] === search) { + return true; + } + } + return false; + }; + + util.clone = function(obj) { + if (Object.prototype.toString.apply(obj) === '[object Array]') { + return obj.slice(); + } + + var cloned = {}; + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + cloned[prop] = obj[prop]; + } + } + + return cloned; + }; + + return util; +}; + +getJasmineRequireObj().Spec = function(j$) { + function Spec(attrs) { + this.expectationFactory = attrs.expectationFactory; + this.resultCallback = attrs.resultCallback || function() {}; + this.id = attrs.id; + this.description = attrs.description || ''; + this.queueableFn = attrs.queueableFn; + this.beforeAndAfterFns = attrs.beforeAndAfterFns || function() { return {befores: [], afters: []}; }; + this.userContext = attrs.userContext || function() { return {}; }; + this.onStart = attrs.onStart || function() {}; + this.getSpecName = attrs.getSpecName || function() { return ''; }; + this.expectationResultFactory = attrs.expectationResultFactory || function() { }; + this.queueRunnerFactory = attrs.queueRunnerFactory || function() {}; + this.catchingExceptions = attrs.catchingExceptions || function() { return true; }; + + if (!this.queueableFn.fn) { + this.pend(); + } + + this.result = { + id: this.id, + description: this.description, + fullName: this.getFullName(), + failedExpectations: [], + passedExpectations: [] + }; + } + + Spec.prototype.addExpectationResult = function(passed, data) { + var expectationResult = this.expectationResultFactory(data); + if (passed) { + this.result.passedExpectations.push(expectationResult); + } else { + this.result.failedExpectations.push(expectationResult); + } + }; + + Spec.prototype.expect = function(actual) { + return this.expectationFactory(actual, this); + }; + + Spec.prototype.execute = function(onComplete) { + var self = this; + + this.onStart(this); + + if (this.markedPending || this.disabled) { + complete(); + return; + } + + var fns = this.beforeAndAfterFns(); + var allFns = fns.befores.concat(this.queueableFn).concat(fns.afters); + + this.queueRunnerFactory({ + queueableFns: allFns, + onException: function() { self.onException.apply(self, arguments); }, + onComplete: complete, + userContext: this.userContext() + }); + + function complete() { + self.result.status = self.status(); + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + }; + + Spec.prototype.onException = function onException(e) { + if (Spec.isPendingSpecException(e)) { + this.pend(); + return; + } + + this.addExpectationResult(false, { + matcherName: '', + passed: false, + expected: '', + actual: '', + error: e + }); + }; + + Spec.prototype.disable = function() { + this.disabled = true; + }; + + Spec.prototype.pend = function() { + this.markedPending = true; + }; + + Spec.prototype.status = function() { + if (this.disabled) { + return 'disabled'; + } + + if (this.markedPending) { + return 'pending'; + } + + if (this.result.failedExpectations.length > 0) { + return 'failed'; + } else { + return 'passed'; + } + }; + + Spec.prototype.isExecutable = function() { + return !this.disabled && !this.markedPending; + }; + + Spec.prototype.getFullName = function() { + return this.getSpecName(this); + }; + + Spec.pendingSpecExceptionMessage = '=> marked Pending'; + + Spec.isPendingSpecException = function(e) { + return !!(e && e.toString && e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1); + }; + + return Spec; +}; + +if (typeof window == void 0 && typeof exports == 'object') { + exports.Spec = jasmineRequire.Spec; +} + +getJasmineRequireObj().Env = function(j$) { + function Env(options) { + options = options || {}; + + var self = this; + var global = options.global || j$.getGlobal(); + + var totalSpecsDefined = 0; + + var catchExceptions = true; + + var realSetTimeout = j$.getGlobal().setTimeout; + var realClearTimeout = j$.getGlobal().clearTimeout; + this.clock = new j$.Clock(global, new j$.DelayedFunctionScheduler(), new j$.MockDate(global)); + + var runnableLookupTable = {}; + var runnableResources = {}; + + var currentSpec = null; + var currentlyExecutingSuites = []; + var currentDeclarationSuite = null; + + var currentSuite = function() { + return currentlyExecutingSuites[currentlyExecutingSuites.length - 1]; + }; + + var currentRunnable = function() { + return currentSpec || currentSuite(); + }; + + var reporter = new j$.ReportDispatcher([ + 'jasmineStarted', + 'jasmineDone', + 'suiteStarted', + 'suiteDone', + 'specStarted', + 'specDone' + ]); + + this.specFilter = function() { + return true; + }; + + this.addCustomEqualityTester = function(tester) { + if(!currentRunnable()) { + throw new Error('Custom Equalities must be added in a before function or a spec'); + } + runnableResources[currentRunnable().id].customEqualityTesters.push(tester); + }; + + this.addMatchers = function(matchersToAdd) { + if(!currentRunnable()) { + throw new Error('Matchers must be added in a before function or a spec'); + } + var customMatchers = runnableResources[currentRunnable().id].customMatchers; + for (var matcherName in matchersToAdd) { + customMatchers[matcherName] = matchersToAdd[matcherName]; + } + }; + + j$.Expectation.addCoreMatchers(j$.matchers); + + var nextSpecId = 0; + var getNextSpecId = function() { + return 'spec' + nextSpecId++; + }; + + var nextSuiteId = 0; + var getNextSuiteId = function() { + return 'suite' + nextSuiteId++; + }; + + var expectationFactory = function(actual, spec) { + return j$.Expectation.Factory({ + util: j$.matchersUtil, + customEqualityTesters: runnableResources[spec.id].customEqualityTesters, + customMatchers: runnableResources[spec.id].customMatchers, + actual: actual, + addExpectationResult: addExpectationResult + }); + + function addExpectationResult(passed, result) { + return spec.addExpectationResult(passed, result); + } + }; + + var defaultResourcesForRunnable = function(id, parentRunnableId) { + var resources = {spies: [], customEqualityTesters: [], customMatchers: {}}; + + if(runnableResources[parentRunnableId]){ + resources.customEqualityTesters = j$.util.clone(runnableResources[parentRunnableId].customEqualityTesters); + resources.customMatchers = j$.util.clone(runnableResources[parentRunnableId].customMatchers); + } + + runnableResources[id] = resources; + }; + + var clearResourcesForRunnable = function(id) { + spyRegistry.clearSpies(); + delete runnableResources[id]; + }; + + var beforeAndAfterFns = function(suite, runnablesExplictlySet) { + return function() { + var befores = [], + afters = [], + beforeAlls = [], + afterAlls = []; + + while(suite) { + befores = befores.concat(suite.beforeFns); + afters = afters.concat(suite.afterFns); + + if (runnablesExplictlySet()) { + beforeAlls = beforeAlls.concat(suite.beforeAllFns); + afterAlls = afterAlls.concat(suite.afterAllFns); + } + + suite = suite.parentSuite; + } + return { + befores: beforeAlls.reverse().concat(befores.reverse()), + afters: afters.concat(afterAlls) + }; + }; + }; + + var getSpecName = function(spec, suite) { + return suite.getFullName() + ' ' + spec.description; + }; + + // TODO: we may just be able to pass in the fn instead of wrapping here + var buildExpectationResult = j$.buildExpectationResult, + exceptionFormatter = new j$.ExceptionFormatter(), + expectationResultFactory = function(attrs) { + attrs.messageFormatter = exceptionFormatter.message; + attrs.stackFormatter = exceptionFormatter.stack; + + return buildExpectationResult(attrs); + }; + + // TODO: fix this naming, and here's where the value comes in + this.catchExceptions = function(value) { + catchExceptions = !!value; + return catchExceptions; + }; + + this.catchingExceptions = function() { + return catchExceptions; + }; + + var maximumSpecCallbackDepth = 20; + var currentSpecCallbackDepth = 0; + + function clearStack(fn) { + currentSpecCallbackDepth++; + if (currentSpecCallbackDepth >= maximumSpecCallbackDepth) { + currentSpecCallbackDepth = 0; + realSetTimeout(fn, 0); + } else { + fn(); + } + } + + var catchException = function(e) { + return j$.Spec.isPendingSpecException(e) || catchExceptions; + }; + + var queueRunnerFactory = function(options) { + options.catchException = catchException; + options.clearStack = options.clearStack || clearStack; + options.timer = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout}; + options.fail = self.fail; + + new j$.QueueRunner(options).execute(); + }; + + var topSuite = new j$.Suite({ + env: this, + id: getNextSuiteId(), + description: 'Jasmine__TopLevel__Suite', + queueRunner: queueRunnerFactory + }); + runnableLookupTable[topSuite.id] = topSuite; + defaultResourcesForRunnable(topSuite.id); + currentDeclarationSuite = topSuite; + + this.topSuite = function() { + return topSuite; + }; + + this.execute = function(runnablesToRun) { + if(runnablesToRun) { + runnablesExplictlySet = true; + } else if (focusedRunnables.length) { + runnablesExplictlySet = true; + runnablesToRun = focusedRunnables; + } else { + runnablesToRun = [topSuite.id]; + } + + var allFns = []; + for(var i = 0; i < runnablesToRun.length; i++) { + var runnable = runnableLookupTable[runnablesToRun[i]]; + allFns.push((function(runnable) { return { fn: function(done) { runnable.execute(done); } }; })(runnable)); + } + + reporter.jasmineStarted({ + totalSpecsDefined: totalSpecsDefined + }); + + queueRunnerFactory({queueableFns: allFns, onComplete: reporter.jasmineDone}); + }; + + this.addReporter = function(reporterToAdd) { + reporter.addReporter(reporterToAdd); + }; + + var spyRegistry = new j$.SpyRegistry({currentSpies: function() { + if(!currentRunnable()) { + throw new Error('Spies must be created in a before function or a spec'); + } + return runnableResources[currentRunnable().id].spies; + }}); + + this.spyOn = function() { + return spyRegistry.spyOn.apply(spyRegistry, arguments); + }; + + var suiteFactory = function(description) { + var suite = new j$.Suite({ + env: self, + id: getNextSuiteId(), + description: description, + parentSuite: currentDeclarationSuite, + queueRunner: queueRunnerFactory, + onStart: suiteStarted, + expectationFactory: expectationFactory, + expectationResultFactory: expectationResultFactory, + resultCallback: function(attrs) { + if (!suite.disabled) { + clearResourcesForRunnable(suite.id); + currentlyExecutingSuites.pop(); + } + reporter.suiteDone(attrs); + } + }); + + runnableLookupTable[suite.id] = suite; + return suite; + + function suiteStarted(suite) { + currentlyExecutingSuites.push(suite); + defaultResourcesForRunnable(suite.id, suite.parentSuite.id); + reporter.suiteStarted(suite.result); + } + }; + + this.describe = function(description, specDefinitions) { + var suite = suiteFactory(description); + addSpecsToSuite(suite, specDefinitions); + return suite; + }; + + this.xdescribe = function(description, specDefinitions) { + var suite = this.describe(description, specDefinitions); + suite.disable(); + return suite; + }; + + var focusedRunnables = []; + + this.fdescribe = function(description, specDefinitions) { + var suite = suiteFactory(description); + suite.isFocused = true; + + focusedRunnables.push(suite.id); + unfocusAncestor(); + addSpecsToSuite(suite, specDefinitions); + + return suite; + }; + + function addSpecsToSuite(suite, specDefinitions) { + var parentSuite = currentDeclarationSuite; + parentSuite.addChild(suite); + currentDeclarationSuite = suite; + + var declarationError = null; + try { + specDefinitions.call(suite); + } catch (e) { + declarationError = e; + } + + if (declarationError) { + self.it('encountered a declaration exception', function() { + throw declarationError; + }); + } + + currentDeclarationSuite = parentSuite; + } + + function findFocusedAncestor(suite) { + while (suite) { + if (suite.isFocused) { + return suite.id; + } + suite = suite.parentSuite; + } + + return null; + } + + function unfocusAncestor() { + var focusedAncestor = findFocusedAncestor(currentDeclarationSuite); + if (focusedAncestor) { + for (var i = 0; i < focusedRunnables.length; i++) { + if (focusedRunnables[i] === focusedAncestor) { + focusedRunnables.splice(i, 1); + break; + } + } + } + } + + var runnablesExplictlySet = false; + + var runnablesExplictlySetGetter = function(){ + return runnablesExplictlySet; + }; + + var specFactory = function(description, fn, suite, timeout) { + totalSpecsDefined++; + var spec = new j$.Spec({ + id: getNextSpecId(), + beforeAndAfterFns: beforeAndAfterFns(suite, runnablesExplictlySetGetter), + expectationFactory: expectationFactory, + resultCallback: specResultCallback, + getSpecName: function(spec) { + return getSpecName(spec, suite); + }, + onStart: specStarted, + description: description, + expectationResultFactory: expectationResultFactory, + queueRunnerFactory: queueRunnerFactory, + userContext: function() { return suite.clonedSharedUserContext(); }, + queueableFn: { + fn: fn, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + } + }); + + runnableLookupTable[spec.id] = spec; + + if (!self.specFilter(spec)) { + spec.disable(); + } + + return spec; + + function specResultCallback(result) { + clearResourcesForRunnable(spec.id); + currentSpec = null; + reporter.specDone(result); + } + + function specStarted(spec) { + currentSpec = spec; + defaultResourcesForRunnable(spec.id, suite.id); + reporter.specStarted(spec.result); + } + }; + + this.it = function(description, fn, timeout) { + var spec = specFactory(description, fn, currentDeclarationSuite, timeout); + currentDeclarationSuite.addChild(spec); + return spec; + }; + + this.xit = function() { + var spec = this.it.apply(this, arguments); + spec.pend(); + return spec; + }; + + this.fit = function(){ + var spec = this.it.apply(this, arguments); + + focusedRunnables.push(spec.id); + unfocusAncestor(); + return spec; + }; + + this.expect = function(actual) { + if (!currentRunnable()) { + throw new Error('\'expect\' was used when there was no current spec, this could be because an asynchronous test timed out'); + } + + return currentRunnable().expect(actual); + }; + + this.beforeEach = function(beforeEachFunction, timeout) { + currentDeclarationSuite.beforeEach({ + fn: beforeEachFunction, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + }); + }; + + this.beforeAll = function(beforeAllFunction, timeout) { + currentDeclarationSuite.beforeAll({ + fn: beforeAllFunction, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + }); + }; + + this.afterEach = function(afterEachFunction, timeout) { + currentDeclarationSuite.afterEach({ + fn: afterEachFunction, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + }); + }; + + this.afterAll = function(afterAllFunction, timeout) { + currentDeclarationSuite.afterAll({ + fn: afterAllFunction, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + }); + }; + + this.pending = function() { + throw j$.Spec.pendingSpecExceptionMessage; + }; + + this.fail = function(error) { + var message = 'Failed'; + if (error) { + message += ': '; + message += error.message || error; + if (error.stack) { + var stack = error.stack.split('\n'); + // stack[0] repeats the message, so don't use it. + message += '\n' + stack.slice(1).join('\n'); + } + } + + currentRunnable().addExpectationResult(false, { + matcherName: '', + passed: false, + expected: '', + actual: '', + message: message + }); + }; + } + + return Env; +}; + +getJasmineRequireObj().JsApiReporter = function() { + + var noopTimer = { + start: function(){}, + elapsed: function(){ return 0; } + }; + + function JsApiReporter(options) { + var timer = options.timer || noopTimer, + status = 'loaded'; + + this.started = false; + this.finished = false; + + this.jasmineStarted = function() { + this.started = true; + status = 'started'; + timer.start(); + }; + + var executionTime; + + this.jasmineDone = function() { + this.finished = true; + executionTime = timer.elapsed(); + status = 'done'; + }; + + this.status = function() { + return status; + }; + + var suites = [], + suites_hash = {}; + + this.suiteStarted = function(result) { + suites_hash[result.id] = result; + }; + + this.suiteDone = function(result) { + storeSuite(result); + }; + + this.suiteResults = function(index, length) { + return suites.slice(index, index + length); + }; + + function storeSuite(result) { + suites.push(result); + suites_hash[result.id] = result; + } + + this.suites = function() { + return suites_hash; + }; + + var specs = []; + + this.specDone = function(result) { + specs.push(result); + }; + + this.specResults = function(index, length) { + return specs.slice(index, index + length); + }; + + this.specs = function() { + return specs; + }; + + this.executionTime = function() { + return executionTime; + }; + + } + + return JsApiReporter; +}; + +getJasmineRequireObj().Any = function() { + + function Any(expectedObject) { + this.expectedObject = expectedObject; + } + + Any.prototype.jasmineMatches = function(other) { + if (this.expectedObject == String) { + return typeof other == 'string' || other instanceof String; + } + + if (this.expectedObject == Number) { + return typeof other == 'number' || other instanceof Number; + } + + if (this.expectedObject == Function) { + return typeof other == 'function' || other instanceof Function; + } + + if (this.expectedObject == Object) { + return typeof other == 'object'; + } + + if (this.expectedObject == Boolean) { + return typeof other == 'boolean'; + } + + return other instanceof this.expectedObject; + }; + + Any.prototype.jasmineToString = function() { + return ''; + }; + + return Any; +}; + +getJasmineRequireObj().CallTracker = function() { + + function CallTracker() { + var calls = []; + + this.track = function(context) { + calls.push(context); + }; + + this.any = function() { + return !!calls.length; + }; + + this.count = function() { + return calls.length; + }; + + this.argsFor = function(index) { + var call = calls[index]; + return call ? call.args : []; + }; + + this.all = function() { + return calls; + }; + + this.allArgs = function() { + var callArgs = []; + for(var i = 0; i < calls.length; i++){ + callArgs.push(calls[i].args); + } + + return callArgs; + }; + + this.first = function() { + return calls[0]; + }; + + this.mostRecent = function() { + return calls[calls.length - 1]; + }; + + this.reset = function() { + calls = []; + }; + } + + return CallTracker; +}; + +getJasmineRequireObj().Clock = function() { + function Clock(global, delayedFunctionScheduler, mockDate) { + var self = this, + realTimingFunctions = { + setTimeout: global.setTimeout, + clearTimeout: global.clearTimeout, + setInterval: global.setInterval, + clearInterval: global.clearInterval + }, + fakeTimingFunctions = { + setTimeout: setTimeout, + clearTimeout: clearTimeout, + setInterval: setInterval, + clearInterval: clearInterval + }, + installed = false, + timer; + + + self.install = function() { + replace(global, fakeTimingFunctions); + timer = fakeTimingFunctions; + installed = true; + + return self; + }; + + self.uninstall = function() { + delayedFunctionScheduler.reset(); + mockDate.uninstall(); + replace(global, realTimingFunctions); + + timer = realTimingFunctions; + installed = false; + }; + + self.mockDate = function(initialDate) { + mockDate.install(initialDate); + }; + + self.setTimeout = function(fn, delay, params) { + if (legacyIE()) { + if (arguments.length > 2) { + throw new Error('IE < 9 cannot support extra params to setTimeout without a polyfill'); + } + return timer.setTimeout(fn, delay); + } + return Function.prototype.apply.apply(timer.setTimeout, [global, arguments]); + }; + + self.setInterval = function(fn, delay, params) { + if (legacyIE()) { + if (arguments.length > 2) { + throw new Error('IE < 9 cannot support extra params to setInterval without a polyfill'); + } + return timer.setInterval(fn, delay); + } + return Function.prototype.apply.apply(timer.setInterval, [global, arguments]); + }; + + self.clearTimeout = function(id) { + return Function.prototype.call.apply(timer.clearTimeout, [global, id]); + }; + + self.clearInterval = function(id) { + return Function.prototype.call.apply(timer.clearInterval, [global, id]); + }; + + self.tick = function(millis) { + if (installed) { + mockDate.tick(millis); + delayedFunctionScheduler.tick(millis); + } else { + throw new Error('Mock clock is not installed, use jasmine.clock().install()'); + } + }; + + return self; + + function legacyIE() { + //if these methods are polyfilled, apply will be present + return !(realTimingFunctions.setTimeout || realTimingFunctions.setInterval).apply; + } + + function replace(dest, source) { + for (var prop in source) { + dest[prop] = source[prop]; + } + } + + function setTimeout(fn, delay) { + return delayedFunctionScheduler.scheduleFunction(fn, delay, argSlice(arguments, 2)); + } + + function clearTimeout(id) { + return delayedFunctionScheduler.removeFunctionWithId(id); + } + + function setInterval(fn, interval) { + return delayedFunctionScheduler.scheduleFunction(fn, interval, argSlice(arguments, 2), true); + } + + function clearInterval(id) { + return delayedFunctionScheduler.removeFunctionWithId(id); + } + + function argSlice(argsObj, n) { + return Array.prototype.slice.call(argsObj, n); + } + } + + return Clock; +}; + +getJasmineRequireObj().DelayedFunctionScheduler = function() { + function DelayedFunctionScheduler() { + var self = this; + var scheduledLookup = []; + var scheduledFunctions = {}; + var currentTime = 0; + var delayedFnCount = 0; + + self.tick = function(millis) { + millis = millis || 0; + var endTime = currentTime + millis; + + runScheduledFunctions(endTime); + currentTime = endTime; + }; + + self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) { + var f; + if (typeof(funcToCall) === 'string') { + /* jshint evil: true */ + f = function() { return eval(funcToCall); }; + /* jshint evil: false */ + } else { + f = funcToCall; + } + + millis = millis || 0; + timeoutKey = timeoutKey || ++delayedFnCount; + runAtMillis = runAtMillis || (currentTime + millis); + + var funcToSchedule = { + runAtMillis: runAtMillis, + funcToCall: f, + recurring: recurring, + params: params, + timeoutKey: timeoutKey, + millis: millis + }; + + if (runAtMillis in scheduledFunctions) { + scheduledFunctions[runAtMillis].push(funcToSchedule); + } else { + scheduledFunctions[runAtMillis] = [funcToSchedule]; + scheduledLookup.push(runAtMillis); + scheduledLookup.sort(function (a, b) { + return a - b; + }); + } + + return timeoutKey; + }; + + self.removeFunctionWithId = function(timeoutKey) { + for (var runAtMillis in scheduledFunctions) { + var funcs = scheduledFunctions[runAtMillis]; + var i = indexOfFirstToPass(funcs, function (func) { + return func.timeoutKey === timeoutKey; + }); + + if (i > -1) { + if (funcs.length === 1) { + delete scheduledFunctions[runAtMillis]; + deleteFromLookup(runAtMillis); + } else { + funcs.splice(i, 1); + } + + // intervals get rescheduled when executed, so there's never more + // than a single scheduled function with a given timeoutKey + break; + } + } + }; + + self.reset = function() { + currentTime = 0; + scheduledLookup = []; + scheduledFunctions = {}; + delayedFnCount = 0; + }; + + return self; + + function indexOfFirstToPass(array, testFn) { + var index = -1; + + for (var i = 0; i < array.length; ++i) { + if (testFn(array[i])) { + index = i; + break; + } + } + + return index; + } + + function deleteFromLookup(key) { + var value = Number(key); + var i = indexOfFirstToPass(scheduledLookup, function (millis) { + return millis === value; + }); + + if (i > -1) { + scheduledLookup.splice(i, 1); + } + } + + function reschedule(scheduledFn) { + self.scheduleFunction(scheduledFn.funcToCall, + scheduledFn.millis, + scheduledFn.params, + true, + scheduledFn.timeoutKey, + scheduledFn.runAtMillis + scheduledFn.millis); + } + + function runScheduledFunctions(endTime) { + if (scheduledLookup.length === 0 || scheduledLookup[0] > endTime) { + return; + } + + do { + currentTime = scheduledLookup.shift(); + + var funcsToRun = scheduledFunctions[currentTime]; + delete scheduledFunctions[currentTime]; + + for (var i = 0; i < funcsToRun.length; ++i) { + var funcToRun = funcsToRun[i]; + + if (funcToRun.recurring) { + reschedule(funcToRun); + } + + funcToRun.funcToCall.apply(null, funcToRun.params || []); + } + } while (scheduledLookup.length > 0 && + // checking first if we're out of time prevents setTimeout(0) + // scheduled in a funcToRun from forcing an extra iteration + currentTime !== endTime && + scheduledLookup[0] <= endTime); + } + } + + return DelayedFunctionScheduler; +}; + +getJasmineRequireObj().ExceptionFormatter = function() { + function ExceptionFormatter() { + this.message = function(error) { + var message = ''; + + if (error.name && error.message) { + message += error.name + ': ' + error.message; + } else { + message += error.toString() + ' thrown'; + } + + if (error.fileName || error.sourceURL) { + message += ' in ' + (error.fileName || error.sourceURL); + } + + if (error.line || error.lineNumber) { + message += ' (line ' + (error.line || error.lineNumber) + ')'; + } + + return message; + }; + + this.stack = function(error) { + return error ? error.stack : null; + }; + } + + return ExceptionFormatter; +}; + +getJasmineRequireObj().Expectation = function() { + + function Expectation(options) { + this.util = options.util || { buildFailureMessage: function() {} }; + this.customEqualityTesters = options.customEqualityTesters || []; + this.actual = options.actual; + this.addExpectationResult = options.addExpectationResult || function(){}; + this.isNot = options.isNot; + + var customMatchers = options.customMatchers || {}; + for (var matcherName in customMatchers) { + this[matcherName] = Expectation.prototype.wrapCompare(matcherName, customMatchers[matcherName]); + } + } + + Expectation.prototype.wrapCompare = function(name, matcherFactory) { + return function() { + var args = Array.prototype.slice.call(arguments, 0), + expected = args.slice(0), + message = ''; + + args.unshift(this.actual); + + var matcher = matcherFactory(this.util, this.customEqualityTesters), + matcherCompare = matcher.compare; + + function defaultNegativeCompare() { + var result = matcher.compare.apply(null, args); + result.pass = !result.pass; + return result; + } + + if (this.isNot) { + matcherCompare = matcher.negativeCompare || defaultNegativeCompare; + } + + var result = matcherCompare.apply(null, args); + + if (!result.pass) { + if (!result.message) { + args.unshift(this.isNot); + args.unshift(name); + message = this.util.buildFailureMessage.apply(null, args); + } else { + if (Object.prototype.toString.apply(result.message) === '[object Function]') { + message = result.message(); + } else { + message = result.message; + } + } + } + + if (expected.length == 1) { + expected = expected[0]; + } + + // TODO: how many of these params are needed? + this.addExpectationResult( + result.pass, + { + matcherName: name, + passed: result.pass, + message: message, + actual: this.actual, + expected: expected // TODO: this may need to be arrayified/sliced + } + ); + }; + }; + + Expectation.addCoreMatchers = function(matchers) { + var prototype = Expectation.prototype; + for (var matcherName in matchers) { + var matcher = matchers[matcherName]; + prototype[matcherName] = prototype.wrapCompare(matcherName, matcher); + } + }; + + Expectation.Factory = function(options) { + options = options || {}; + + var expect = new Expectation(options); + + // TODO: this would be nice as its own Object - NegativeExpectation + // TODO: copy instead of mutate options + options.isNot = true; + expect.not = new Expectation(options); + + return expect; + }; + + return Expectation; +}; + +//TODO: expectation result may make more sense as a presentation of an expectation. +getJasmineRequireObj().buildExpectationResult = function() { + function buildExpectationResult(options) { + var messageFormatter = options.messageFormatter || function() {}, + stackFormatter = options.stackFormatter || function() {}; + + var result = { + matcherName: options.matcherName, + message: message(), + stack: stack(), + passed: options.passed + }; + + if(!result.passed) { + result.expected = options.expected; + result.actual = options.actual; + } + + return result; + + function message() { + if (options.passed) { + return 'Passed.'; + } else if (options.message) { + return options.message; + } else if (options.error) { + return messageFormatter(options.error); + } + return ''; + } + + function stack() { + if (options.passed) { + return ''; + } + + var error = options.error; + if (!error) { + try { + throw new Error(message()); + } catch (e) { + error = e; + } + } + return stackFormatter(error); + } + } + + return buildExpectationResult; +}; + +getJasmineRequireObj().MockDate = function() { + function MockDate(global) { + var self = this; + var currentTime = 0; + + if (!global || !global.Date) { + self.install = function() {}; + self.tick = function() {}; + self.uninstall = function() {}; + return self; + } + + var GlobalDate = global.Date; + + self.install = function(mockDate) { + if (mockDate instanceof GlobalDate) { + currentTime = mockDate.getTime(); + } else { + currentTime = new GlobalDate().getTime(); + } + + global.Date = FakeDate; + }; + + self.tick = function(millis) { + millis = millis || 0; + currentTime = currentTime + millis; + }; + + self.uninstall = function() { + currentTime = 0; + global.Date = GlobalDate; + }; + + createDateProperties(); + + return self; + + function FakeDate() { + switch(arguments.length) { + case 0: + return new GlobalDate(currentTime); + case 1: + return new GlobalDate(arguments[0]); + case 2: + return new GlobalDate(arguments[0], arguments[1]); + case 3: + return new GlobalDate(arguments[0], arguments[1], arguments[2]); + case 4: + return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3]); + case 5: + return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], + arguments[4]); + case 6: + return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], + arguments[4], arguments[5]); + case 7: + return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], + arguments[4], arguments[5], arguments[6]); + } + } + + function createDateProperties() { + FakeDate.prototype = GlobalDate.prototype; + + FakeDate.now = function() { + if (GlobalDate.now) { + return currentTime; + } else { + throw new Error('Browser does not support Date.now()'); + } + }; + + FakeDate.toSource = GlobalDate.toSource; + FakeDate.toString = GlobalDate.toString; + FakeDate.parse = GlobalDate.parse; + FakeDate.UTC = GlobalDate.UTC; + } + } + + return MockDate; +}; + +getJasmineRequireObj().ObjectContaining = function(j$) { + + function ObjectContaining(sample) { + this.sample = sample; + } + + ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) { + if (typeof(this.sample) !== 'object') { throw new Error('You must provide an object to objectContaining, not \''+this.sample+'\'.'); } + + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + var hasKey = function(obj, keyName) { + return obj !== null && !j$.util.isUndefined(obj[keyName]); + }; + + for (var property in this.sample) { + if (!hasKey(other, property) && hasKey(this.sample, property)) { + mismatchKeys.push('expected has key \'' + property + '\', but missing from actual.'); + } + else if (!j$.matchersUtil.equals(other[property], this.sample[property])) { + mismatchValues.push('\'' + property + '\' was \'' + (other[property] ? j$.util.htmlEscape(other[property].toString()) : other[property]) + '\' in actual, but was \'' + (this.sample[property] ? j$.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + '\' in expected.'); + } + } + + return (mismatchKeys.length === 0 && mismatchValues.length === 0); + }; + + ObjectContaining.prototype.jasmineToString = function() { + return ''; + }; + + return ObjectContaining; +}; + +getJasmineRequireObj().pp = function(j$) { + + function PrettyPrinter() { + this.ppNestLevel_ = 0; + this.seen = []; + } + + PrettyPrinter.prototype.format = function(value) { + this.ppNestLevel_++; + try { + if (j$.util.isUndefined(value)) { + this.emitScalar('undefined'); + } else if (value === null) { + this.emitScalar('null'); + } else if (value === 0 && 1/value === -Infinity) { + this.emitScalar('-0'); + } else if (value === j$.getGlobal()) { + this.emitScalar(''); + } else if (value.jasmineToString) { + this.emitScalar(value.jasmineToString()); + } else if (typeof value === 'string') { + this.emitString(value); + } else if (j$.isSpy(value)) { + this.emitScalar('spy on ' + value.and.identity()); + } else if (value instanceof RegExp) { + this.emitScalar(value.toString()); + } else if (typeof value === 'function') { + this.emitScalar('Function'); + } else if (typeof value.nodeType === 'number') { + this.emitScalar('HTMLNode'); + } else if (value instanceof Date) { + this.emitScalar('Date(' + value + ')'); + } else if (j$.util.arrayContains(this.seen, value)) { + this.emitScalar(''); + } else if (j$.isArray_(value) || j$.isA_('Object', value)) { + this.seen.push(value); + if (j$.isArray_(value)) { + this.emitArray(value); + } else { + this.emitObject(value); + } + this.seen.pop(); + } else { + this.emitScalar(value.toString()); + } + } finally { + this.ppNestLevel_--; + } + }; + + PrettyPrinter.prototype.iterateObject = function(obj, fn) { + for (var property in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, property)) { continue; } + fn(property, obj.__lookupGetter__ ? (!j$.util.isUndefined(obj.__lookupGetter__(property)) && + obj.__lookupGetter__(property) !== null) : false); + } + }; + + PrettyPrinter.prototype.emitArray = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitObject = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitScalar = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitString = j$.unimplementedMethod_; + + function StringPrettyPrinter() { + PrettyPrinter.call(this); + + this.string = ''; + } + + j$.util.inherit(StringPrettyPrinter, PrettyPrinter); + + StringPrettyPrinter.prototype.emitScalar = function(value) { + this.append(value); + }; + + StringPrettyPrinter.prototype.emitString = function(value) { + this.append('\'' + value + '\''); + }; + + StringPrettyPrinter.prototype.emitArray = function(array) { + if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { + this.append('Array'); + return; + } + var length = Math.min(array.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH); + this.append('[ '); + for (var i = 0; i < length; i++) { + if (i > 0) { + this.append(', '); + } + this.format(array[i]); + } + if(array.length > length){ + this.append(', ...'); + } + this.append(' ]'); + }; + + StringPrettyPrinter.prototype.emitObject = function(obj) { + if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { + this.append('Object'); + return; + } + + var self = this; + this.append('{ '); + var first = true; + + this.iterateObject(obj, function(property, isGetter) { + if (first) { + first = false; + } else { + self.append(', '); + } + + self.append(property); + self.append(': '); + if (isGetter) { + self.append(''); + } else { + self.format(obj[property]); + } + }); + + this.append(' }'); + }; + + StringPrettyPrinter.prototype.append = function(value) { + this.string += value; + }; + + return function(value) { + var stringPrettyPrinter = new StringPrettyPrinter(); + stringPrettyPrinter.format(value); + return stringPrettyPrinter.string; + }; +}; + +getJasmineRequireObj().QueueRunner = function(j$) { + + function once(fn) { + var called = false; + return function() { + if (!called) { + called = true; + fn(); + } + }; + } + + function QueueRunner(attrs) { + this.queueableFns = attrs.queueableFns || []; + this.onComplete = attrs.onComplete || function() {}; + this.clearStack = attrs.clearStack || function(fn) {fn();}; + this.onException = attrs.onException || function() {}; + this.catchException = attrs.catchException || function() { return true; }; + this.userContext = attrs.userContext || {}; + this.timer = attrs.timeout || {setTimeout: setTimeout, clearTimeout: clearTimeout}; + this.fail = attrs.fail || function() {}; + } + + QueueRunner.prototype.execute = function() { + this.run(this.queueableFns, 0); + }; + + QueueRunner.prototype.run = function(queueableFns, recursiveIndex) { + var length = queueableFns.length, + self = this, + iterativeIndex; + + + for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) { + var queueableFn = queueableFns[iterativeIndex]; + if (queueableFn.fn.length > 0) { + return attemptAsync(queueableFn); + } else { + attemptSync(queueableFn); + } + } + + var runnerDone = iterativeIndex >= length; + + if (runnerDone) { + this.clearStack(this.onComplete); + } + + function attemptSync(queueableFn) { + try { + queueableFn.fn.call(self.userContext); + } catch (e) { + handleException(e, queueableFn); + } + } + + function attemptAsync(queueableFn) { + var clearTimeout = function () { + Function.prototype.apply.apply(self.timer.clearTimeout, [j$.getGlobal(), [timeoutId]]); + }, + next = once(function () { + clearTimeout(timeoutId); + self.run(queueableFns, iterativeIndex + 1); + }), + timeoutId; + + next.fail = function() { + self.fail.apply(null, arguments); + next(); + }; + + if (queueableFn.timeout) { + timeoutId = Function.prototype.apply.apply(self.timer.setTimeout, [j$.getGlobal(), [function() { + var error = new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.'); + onException(error, queueableFn); + next(); + }, queueableFn.timeout()]]); + } + + try { + queueableFn.fn.call(self.userContext, next); + } catch (e) { + handleException(e, queueableFn); + next(); + } + } + + function onException(e, queueableFn) { + self.onException(e); + } + + function handleException(e, queueableFn) { + onException(e, queueableFn); + if (!self.catchException(e)) { + //TODO: set a var when we catch an exception and + //use a finally block to close the loop in a nice way.. + throw e; + } + } + }; + + return QueueRunner; +}; + +getJasmineRequireObj().ReportDispatcher = function() { + function ReportDispatcher(methods) { + + var dispatchedMethods = methods || []; + + for (var i = 0; i < dispatchedMethods.length; i++) { + var method = dispatchedMethods[i]; + this[method] = (function(m) { + return function() { + dispatch(m, arguments); + }; + }(method)); + } + + var reporters = []; + + this.addReporter = function(reporter) { + reporters.push(reporter); + }; + + return this; + + function dispatch(method, args) { + for (var i = 0; i < reporters.length; i++) { + var reporter = reporters[i]; + if (reporter[method]) { + reporter[method].apply(reporter, args); + } + } + } + } + + return ReportDispatcher; +}; + + +getJasmineRequireObj().SpyRegistry = function(j$) { + + function SpyRegistry(options) { + options = options || {}; + var currentSpies = options.currentSpies || function() { return []; }; + + this.spyOn = function(obj, methodName) { + if (j$.util.isUndefined(obj)) { + throw new Error('spyOn could not find an object to spy upon for ' + methodName + '()'); + } + + if (j$.util.isUndefined(obj[methodName])) { + throw new Error(methodName + '() method does not exist'); + } + + if (obj[methodName] && j$.isSpy(obj[methodName])) { + //TODO?: should this return the current spy? Downside: may cause user confusion about spy state + throw new Error(methodName + ' has already been spied upon'); + } + + var spy = j$.createSpy(methodName, obj[methodName]); + + currentSpies().push({ + spy: spy, + baseObj: obj, + methodName: methodName, + originalValue: obj[methodName] + }); + + obj[methodName] = spy; + + return spy; + }; + + this.clearSpies = function() { + var spies = currentSpies(); + for (var i = 0; i < spies.length; i++) { + var spyEntry = spies[i]; + spyEntry.baseObj[spyEntry.methodName] = spyEntry.originalValue; + } + }; + } + + return SpyRegistry; +}; + +getJasmineRequireObj().SpyStrategy = function() { + + function SpyStrategy(options) { + options = options || {}; + + var identity = options.name || 'unknown', + originalFn = options.fn || function() {}, + getSpy = options.getSpy || function() {}, + plan = function() {}; + + this.identity = function() { + return identity; + }; + + this.exec = function() { + return plan.apply(this, arguments); + }; + + this.callThrough = function() { + plan = originalFn; + return getSpy(); + }; + + this.returnValue = function(value) { + plan = function() { + return value; + }; + return getSpy(); + }; + + this.returnValues = function() { + var values = Array.prototype.slice.call(arguments); + plan = function () { + return values.shift(); + }; + return getSpy(); + }; + + this.throwError = function(something) { + var error = (something instanceof Error) ? something : new Error(something); + plan = function() { + throw error; + }; + return getSpy(); + }; + + this.callFake = function(fn) { + plan = fn; + return getSpy(); + }; + + this.stub = function(fn) { + plan = function() {}; + return getSpy(); + }; + } + + return SpyStrategy; +}; + +getJasmineRequireObj().Suite = function() { + function Suite(attrs) { + this.env = attrs.env; + this.id = attrs.id; + this.parentSuite = attrs.parentSuite; + this.description = attrs.description; + this.onStart = attrs.onStart || function() {}; + this.resultCallback = attrs.resultCallback || function() {}; + this.clearStack = attrs.clearStack || function(fn) {fn();}; + this.expectationFactory = attrs.expectationFactory; + this.expectationResultFactory = attrs.expectationResultFactory; + + this.beforeFns = []; + this.afterFns = []; + this.beforeAllFns = []; + this.afterAllFns = []; + this.queueRunner = attrs.queueRunner || function() {}; + this.disabled = false; + + this.children = []; + + this.result = { + id: this.id, + description: this.description, + fullName: this.getFullName(), + failedExpectations: [] + }; + } + + Suite.prototype.expect = function(actual) { + return this.expectationFactory(actual, this); + }; + + Suite.prototype.getFullName = function() { + var fullName = this.description; + for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { + if (parentSuite.parentSuite) { + fullName = parentSuite.description + ' ' + fullName; + } + } + return fullName; + }; + + Suite.prototype.disable = function() { + this.disabled = true; + }; + + Suite.prototype.beforeEach = function(fn) { + this.beforeFns.unshift(fn); + }; + + Suite.prototype.beforeAll = function(fn) { + this.beforeAllFns.push(fn); + }; + + Suite.prototype.afterEach = function(fn) { + this.afterFns.unshift(fn); + }; + + Suite.prototype.afterAll = function(fn) { + this.afterAllFns.push(fn); + }; + + Suite.prototype.addChild = function(child) { + this.children.push(child); + }; + + Suite.prototype.status = function() { + if (this.disabled) { + return 'disabled'; + } + + if (this.result.failedExpectations.length > 0) { + return 'failed'; + } else { + return 'finished'; + } + }; + + Suite.prototype.execute = function(onComplete) { + var self = this; + + this.onStart(this); + + if (this.disabled) { + complete(); + return; + } + + var allFns = []; + + for (var i = 0; i < this.children.length; i++) { + allFns.push(wrapChildAsAsync(this.children[i])); + } + + if (this.isExecutable()) { + allFns = this.beforeAllFns.concat(allFns); + allFns = allFns.concat(this.afterAllFns); + } + + this.queueRunner({ + queueableFns: allFns, + onComplete: complete, + userContext: this.sharedUserContext(), + onException: function() { self.onException.apply(self, arguments); } + }); + + function complete() { + self.result.status = self.status(); + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + + function wrapChildAsAsync(child) { + return { fn: function(done) { child.execute(done); } }; + } + }; + + Suite.prototype.isExecutable = function() { + var foundActive = false; + for(var i = 0; i < this.children.length; i++) { + if(this.children[i].isExecutable()) { + foundActive = true; + break; + } + } + return foundActive; + }; + + Suite.prototype.sharedUserContext = function() { + if (!this.sharedContext) { + this.sharedContext = this.parentSuite ? clone(this.parentSuite.sharedUserContext()) : {}; + } + + return this.sharedContext; + }; + + Suite.prototype.clonedSharedUserContext = function() { + return clone(this.sharedUserContext()); + }; + + Suite.prototype.onException = function() { + if(isAfterAll(this.children)) { + var data = { + matcherName: '', + passed: false, + expected: '', + actual: '', + error: arguments[0] + }; + this.result.failedExpectations.push(this.expectationResultFactory(data)); + } else { + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + child.onException.apply(child, arguments); + } + } + }; + + Suite.prototype.addExpectationResult = function () { + if(isAfterAll(this.children) && isFailure(arguments)){ + var data = arguments[1]; + this.result.failedExpectations.push(this.expectationResultFactory(data)); + } else { + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + child.addExpectationResult.apply(child, arguments); + } + } + }; + + function isAfterAll(children) { + return children && children[0].result.status; + } + + function isFailure(args) { + return !args[0]; + } + + function clone(obj) { + var clonedObj = {}; + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + clonedObj[prop] = obj[prop]; + } + } + + return clonedObj; + } + + return Suite; +}; + +if (typeof window == void 0 && typeof exports == 'object') { + exports.Suite = jasmineRequire.Suite; +} + +getJasmineRequireObj().Timer = function() { + var defaultNow = (function(Date) { + return function() { return new Date().getTime(); }; + })(Date); + + function Timer(options) { + options = options || {}; + + var now = options.now || defaultNow, + startTime; + + this.start = function() { + startTime = now(); + }; + + this.elapsed = function() { + return now() - startTime; + }; + } + + return Timer; +}; + +getJasmineRequireObj().matchersUtil = function(j$) { + // TODO: what to do about jasmine.pp not being inject? move to JSON.stringify? gut PrettyPrinter? + + return { + equals: function(a, b, customTesters) { + customTesters = customTesters || []; + + return eq(a, b, [], [], customTesters); + }, + + contains: function(haystack, needle, customTesters) { + customTesters = customTesters || []; + + if ((Object.prototype.toString.apply(haystack) === '[object Array]') || + (!!haystack && !haystack.indexOf)) + { + for (var i = 0; i < haystack.length; i++) { + if (eq(haystack[i], needle, [], [], customTesters)) { + return true; + } + } + return false; + } + + return !!haystack && haystack.indexOf(needle) >= 0; + }, + + buildFailureMessage: function() { + var args = Array.prototype.slice.call(arguments, 0), + matcherName = args[0], + isNot = args[1], + actual = args[2], + expected = args.slice(3), + englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); + + var message = 'Expected ' + + j$.pp(actual) + + (isNot ? ' not ' : ' ') + + englishyPredicate; + + if (expected.length > 0) { + for (var i = 0; i < expected.length; i++) { + if (i > 0) { + message += ','; + } + message += ' ' + j$.pp(expected[i]); + } + } + + return message + '.'; + } + }; + + // Equality function lovingly adapted from isEqual in + // [Underscore](http://underscorejs.org) + function eq(a, b, aStack, bStack, customTesters) { + var result = true; + + for (var i = 0; i < customTesters.length; i++) { + var customTesterResult = customTesters[i](a, b); + if (!j$.util.isUndefined(customTesterResult)) { + return customTesterResult; + } + } + + if (a instanceof j$.Any) { + result = a.jasmineMatches(b); + if (result) { + return true; + } + } + + if (b instanceof j$.Any) { + result = b.jasmineMatches(a); + if (result) { + return true; + } + } + + if (b instanceof j$.ObjectContaining) { + result = b.jasmineMatches(a); + if (result) { + return true; + } + } + + if (a instanceof Error && b instanceof Error) { + return a.message == b.message; + } + + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) { return a !== 0 || 1 / a == 1 / b; } + // A strict comparison is necessary because `null == undefined`. + if (a === null || b === null) { return a === b; } + var className = Object.prototype.toString.call(a); + if (className != Object.prototype.toString.call(b)) { return false; } + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a === 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') { return false; } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) { return bStack[length] == b; } + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack, customTesters))) { break; } + } + } + } else { + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction(aCtor) && (aCtor instanceof aCtor) && + isFunction(bCtor) && (bCtor instanceof bCtor))) { + return false; + } + // Deep compare objects. + for (var key in a) { + if (has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = has(b, key) && eq(a[key], b[key], aStack, bStack, customTesters))) { break; } + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (has(b, key) && !(size--)) { break; } + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + + return result; + + function has(obj, key) { + return obj.hasOwnProperty(key); + } + + function isFunction(obj) { + return typeof obj === 'function'; + } + } +}; + +getJasmineRequireObj().toBe = function() { + function toBe() { + return { + compare: function(actual, expected) { + return { + pass: actual === expected + }; + } + }; + } + + return toBe; +}; + +getJasmineRequireObj().toBeCloseTo = function() { + + function toBeCloseTo() { + return { + compare: function(actual, expected, precision) { + if (precision !== 0) { + precision = precision || 2; + } + + return { + pass: Math.abs(expected - actual) < (Math.pow(10, -precision) / 2) + }; + } + }; + } + + return toBeCloseTo; +}; + +getJasmineRequireObj().toBeDefined = function() { + function toBeDefined() { + return { + compare: function(actual) { + return { + pass: (void 0 !== actual) + }; + } + }; + } + + return toBeDefined; +}; + +getJasmineRequireObj().toBeFalsy = function() { + function toBeFalsy() { + return { + compare: function(actual) { + return { + pass: !!!actual + }; + } + }; + } + + return toBeFalsy; +}; + +getJasmineRequireObj().toBeGreaterThan = function() { + + function toBeGreaterThan() { + return { + compare: function(actual, expected) { + return { + pass: actual > expected + }; + } + }; + } + + return toBeGreaterThan; +}; + + +getJasmineRequireObj().toBeLessThan = function() { + function toBeLessThan() { + return { + + compare: function(actual, expected) { + return { + pass: actual < expected + }; + } + }; + } + + return toBeLessThan; +}; +getJasmineRequireObj().toBeNaN = function(j$) { + + function toBeNaN() { + return { + compare: function(actual) { + var result = { + pass: (actual !== actual) + }; + + if (result.pass) { + result.message = 'Expected actual not to be NaN.'; + } else { + result.message = function() { return 'Expected ' + j$.pp(actual) + ' to be NaN.'; }; + } + + return result; + } + }; + } + + return toBeNaN; +}; + +getJasmineRequireObj().toBeNull = function() { + + function toBeNull() { + return { + compare: function(actual) { + return { + pass: actual === null + }; + } + }; + } + + return toBeNull; +}; + +getJasmineRequireObj().toBeTruthy = function() { + + function toBeTruthy() { + return { + compare: function(actual) { + return { + pass: !!actual + }; + } + }; + } + + return toBeTruthy; +}; + +getJasmineRequireObj().toBeUndefined = function() { + + function toBeUndefined() { + return { + compare: function(actual) { + return { + pass: void 0 === actual + }; + } + }; + } + + return toBeUndefined; +}; + +getJasmineRequireObj().toContain = function() { + function toContain(util, customEqualityTesters) { + customEqualityTesters = customEqualityTesters || []; + + return { + compare: function(actual, expected) { + + return { + pass: util.contains(actual, expected, customEqualityTesters) + }; + } + }; + } + + return toContain; +}; + +getJasmineRequireObj().toEqual = function() { + + function toEqual(util, customEqualityTesters) { + customEqualityTesters = customEqualityTesters || []; + + return { + compare: function(actual, expected) { + var result = { + pass: false + }; + + result.pass = util.equals(actual, expected, customEqualityTesters); + + return result; + } + }; + } + + return toEqual; +}; + +getJasmineRequireObj().toHaveBeenCalled = function(j$) { + + function toHaveBeenCalled() { + return { + compare: function(actual) { + var result = {}; + + if (!j$.isSpy(actual)) { + throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); + } + + if (arguments.length > 1) { + throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); + } + + result.pass = actual.calls.any(); + + result.message = result.pass ? + 'Expected spy ' + actual.and.identity() + ' not to have been called.' : + 'Expected spy ' + actual.and.identity() + ' to have been called.'; + + return result; + } + }; + } + + return toHaveBeenCalled; +}; + +getJasmineRequireObj().toHaveBeenCalledWith = function(j$) { + + function toHaveBeenCalledWith(util, customEqualityTesters) { + return { + compare: function() { + var args = Array.prototype.slice.call(arguments, 0), + actual = args[0], + expectedArgs = args.slice(1), + result = { pass: false }; + + if (!j$.isSpy(actual)) { + throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); + } + + if (!actual.calls.any()) { + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but it was never called.'; }; + return result; + } + + if (util.contains(actual.calls.allArgs(), expectedArgs, customEqualityTesters)) { + result.pass = true; + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' not to have been called with ' + j$.pp(expectedArgs) + ' but it was.'; }; + } else { + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but actual calls were ' + j$.pp(actual.calls.allArgs()).replace(/^\[ | \]$/g, '') + '.'; }; + } + + return result; + } + }; + } + + return toHaveBeenCalledWith; +}; + +getJasmineRequireObj().toMatch = function() { + + function toMatch() { + return { + compare: function(actual, expected) { + var regexp = new RegExp(expected); + + return { + pass: regexp.test(actual) + }; + } + }; + } + + return toMatch; +}; + +getJasmineRequireObj().toThrow = function(j$) { + + function toThrow(util) { + return { + compare: function(actual, expected) { + var result = { pass: false }, + threw = false, + thrown; + + if (typeof actual != 'function') { + throw new Error('Actual is not a Function'); + } + + try { + actual(); + } catch (e) { + threw = true; + thrown = e; + } + + if (!threw) { + result.message = 'Expected function to throw an exception.'; + return result; + } + + if (arguments.length == 1) { + result.pass = true; + result.message = function() { return 'Expected function not to throw, but it threw ' + j$.pp(thrown) + '.'; }; + + return result; + } + + if (util.equals(thrown, expected)) { + result.pass = true; + result.message = function() { return 'Expected function not to throw ' + j$.pp(expected) + '.'; }; + } else { + result.message = function() { return 'Expected function to throw ' + j$.pp(expected) + ', but it threw ' + j$.pp(thrown) + '.'; }; + } + + return result; + } + }; + } + + return toThrow; +}; + +getJasmineRequireObj().toThrowError = function(j$) { + function toThrowError (util) { + return { + compare: function(actual) { + var threw = false, + pass = {pass: true}, + fail = {pass: false}, + thrown; + + if (typeof actual != 'function') { + throw new Error('Actual is not a Function'); + } + + var errorMatcher = getMatcher.apply(null, arguments); + + try { + actual(); + } catch (e) { + threw = true; + thrown = e; + } + + if (!threw) { + fail.message = 'Expected function to throw an Error.'; + return fail; + } + + if (!(thrown instanceof Error)) { + fail.message = function() { return 'Expected function to throw an Error, but it threw ' + j$.pp(thrown) + '.'; }; + return fail; + } + + if (errorMatcher.hasNoSpecifics()) { + pass.message = 'Expected function not to throw an Error, but it threw ' + fnNameFor(thrown) + '.'; + return pass; + } + + if (errorMatcher.matches(thrown)) { + pass.message = function() { + return 'Expected function not to throw ' + errorMatcher.errorTypeDescription + errorMatcher.messageDescription() + '.'; + }; + return pass; + } else { + fail.message = function() { + return 'Expected function to throw ' + errorMatcher.errorTypeDescription + errorMatcher.messageDescription() + + ', but it threw ' + errorMatcher.thrownDescription(thrown) + '.'; + }; + return fail; + } + } + }; + + function getMatcher() { + var expected = null, + errorType = null; + + if (arguments.length == 2) { + expected = arguments[1]; + if (isAnErrorType(expected)) { + errorType = expected; + expected = null; + } + } else if (arguments.length > 2) { + errorType = arguments[1]; + expected = arguments[2]; + if (!isAnErrorType(errorType)) { + throw new Error('Expected error type is not an Error.'); + } + } + + if (expected && !isStringOrRegExp(expected)) { + if (errorType) { + throw new Error('Expected error message is not a string or RegExp.'); + } else { + throw new Error('Expected is not an Error, string, or RegExp.'); + } + } + + function messageMatch(message) { + if (typeof expected == 'string') { + return expected == message; + } else { + return expected.test(message); + } + } + + return { + errorTypeDescription: errorType ? fnNameFor(errorType) : 'an exception', + thrownDescription: function(thrown) { + var thrownName = errorType ? fnNameFor(thrown.constructor) : 'an exception', + thrownMessage = ''; + + if (expected) { + thrownMessage = ' with message ' + j$.pp(thrown.message); + } + + return thrownName + thrownMessage; + }, + messageDescription: function() { + if (expected === null) { + return ''; + } else if (expected instanceof RegExp) { + return ' with a message matching ' + j$.pp(expected); + } else { + return ' with message ' + j$.pp(expected); + } + }, + hasNoSpecifics: function() { + return expected === null && errorType === null; + }, + matches: function(error) { + return (errorType === null || error.constructor === errorType) && + (expected === null || messageMatch(error.message)); + } + }; + } + + function fnNameFor(func) { + return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1]; + } + + function isStringOrRegExp(potential) { + return potential instanceof RegExp || (typeof potential == 'string'); + } + + function isAnErrorType(type) { + if (typeof type !== 'function') { + return false; + } + + var Surrogate = function() {}; + Surrogate.prototype = type.prototype; + return (new Surrogate()) instanceof Error; + } + } + + return toThrowError; +}; + +getJasmineRequireObj().interface = function(jasmine, env) { + var jasmineInterface = { + describe: function(description, specDefinitions) { + return env.describe(description, specDefinitions); + }, + + xdescribe: function(description, specDefinitions) { + return env.xdescribe(description, specDefinitions); + }, + + fdescribe: function(description, specDefinitions) { + return env.fdescribe(description, specDefinitions); + }, + + it: function(desc, func) { + return env.it(desc, func); + }, + + xit: function(desc, func) { + return env.xit(desc, func); + }, + + fit: function(desc, func) { + return env.fit(desc, func); + }, + + beforeEach: function(beforeEachFunction) { + return env.beforeEach(beforeEachFunction); + }, + + afterEach: function(afterEachFunction) { + return env.afterEach(afterEachFunction); + }, + + beforeAll: function(beforeAllFunction) { + return env.beforeAll(beforeAllFunction); + }, + + afterAll: function(afterAllFunction) { + return env.afterAll(afterAllFunction); + }, + + expect: function(actual) { + return env.expect(actual); + }, + + pending: function() { + return env.pending(); + }, + + fail: function() { + return env.fail.apply(env, arguments); + }, + + spyOn: function(obj, methodName) { + return env.spyOn(obj, methodName); + }, + + jsApiReporter: new jasmine.JsApiReporter({ + timer: new jasmine.Timer() + }), + + jasmine: jasmine + }; + + jasmine.addCustomEqualityTester = function(tester) { + env.addCustomEqualityTester(tester); + }; + + jasmine.addMatchers = function(matchers) { + return env.addMatchers(matchers); + }; + + jasmine.clock = function() { + return env.clock; + }; + + return jasmineInterface; +}; + +getJasmineRequireObj().version = function() { + return '2.1.3'; +}; diff --git a/third_party/jasmine/lib/jasmine-2.1.3/jasmine_favicon.png b/third_party/jasmine/lib/jasmine-2.1.3/jasmine_favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..3b84583be4b9d5ae9cd5cae07b2dbaa5ebb0ad1c GIT binary patch literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0VDb;}332@o1PuQh8X8uGu4-^- zn3*=SA+%wV=cI;&hMB$%-Lc(MLmN8%IwwUpbcA;F2Q;)twND9bn-tpC9oR4-vb8I; zp+Bg#FSKP+P(yD-%f!%zo}iZgh=%Ua=KkP@iNVbiLYsSn8~VeW`+}P$1~&ACHcbd_ z=nZb_32o{NZkZ6&1k^hrxT!a&r8lIdAIJ@9nh?|iRMsET+#A%`AKKg-(%2K)*cZ|~ zA-J&*$PEUH08MM`4Q=iVY3vVfhN$TUscGs5sR8P31X|G_+SnTcv<0XVC=Rr!u|K4# zHyCJU6UYRR;%2BtKv^I=q#2|DECn_k@wXU|=@ zeD&J(8#iy=zH|5fgNKiwJbm`!<*V0k-oF3v@zdvTKYsrD^Y>rGdNDU(R>|^oaSW-5 z%f0Y2x+hSk{p0&HA;E60Oq1S3r7U;(X3MH#?W9nxXzk)srlC4P;cZYe&v*G}mgi%< ze(bTl{@&_)cX8b-kvX%ff9D22e*M~7edm|;|Jb8m2JBzkzKiSBKR0n*?XSyM6fxZY zJ4bb;vGKRiKP(ztq3sJx9iq$Re`-EEQU0KE$sdyqayzp6H-7x+oGKZ_6;hQ_Y|p&y z7o`N7g@ z8Yl1HKL;mFo4BdxljF1}KbfMR6nNdLyPnEap1MqBdI?{g$L58$P8+wftLX5R70)7n`#pwItnbma$w{%`M(`wpsu2rJ60rdGCc> z+~lm)viMYM`=uXwK_$`#_UtRZMO=2-IV)l2vc~)doyPvg-RmxtACQ#v{7}5$&isV+ zPws~n?@yNGy#H1=vTI?;CAl9~9#VgqJ+7`4y~R+Wyj0U+){?lm9r6mtf0gl_VmUW^ z%eje%?jM%^eLuUg#ybXaQM{yQy&8UgiQ`HQ+=iTpjfd0iJ@ ssyFi&dF4%9dEry;pNN)Q>$jg_dr3r;PHA*CFc&d+y85}Sb4q9e0J812W&i*H literal 0 HcmV?d00001 diff --git a/third_party/jasmine/lib/jasmine-ajax-trunk/mock-ajax.js b/third_party/jasmine/lib/jasmine-ajax-trunk/mock-ajax.js new file mode 100644 index 0000000000..7cc57b5a54 --- /dev/null +++ b/third_party/jasmine/lib/jasmine-ajax-trunk/mock-ajax.js @@ -0,0 +1,374 @@ +/* + +Jasmine-Ajax : a set of helpers for testing AJAX requests under the Jasmine +BDD framework for JavaScript. + +http://github.com/pivotal/jasmine-ajax + +Jasmine Home page: http://pivotal.github.com/jasmine + +Copyright (c) 2008-2013 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + +(function() { + function extend(destination, source, propertiesToSkip) { + propertiesToSkip = propertiesToSkip || []; + for (var property in source) { + if (!arrayContains(propertiesToSkip, property)) { + destination[property] = source[property]; + } + } + return destination; + } + + function arrayContains(arr, item) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] === item) { + return true; + } + } + return false; + } + + function MockAjax(global) { + var requestTracker = new RequestTracker(), + stubTracker = new StubTracker(), + paramParser = new ParamParser(), + realAjaxFunction = global.XMLHttpRequest, + mockAjaxFunction = fakeRequest(requestTracker, stubTracker, paramParser); + + this.install = function() { + global.XMLHttpRequest = mockAjaxFunction; + }; + + this.uninstall = function() { + global.XMLHttpRequest = realAjaxFunction; + + this.stubs.reset(); + this.requests.reset(); + paramParser.reset(); + }; + + this.stubRequest = function(url, data, method) { + var stub = new RequestStub(url, data, method); + stubTracker.addStub(stub); + return stub; + }; + + this.withMock = function(closure) { + this.install(); + try { + closure(); + } finally { + this.uninstall(); + } + }; + + this.addCustomParamParser = function(parser) { + paramParser.add(parser); + }; + + this.requests = requestTracker; + this.stubs = stubTracker; + } + + function StubTracker() { + var stubs = []; + + this.addStub = function(stub) { + stubs.push(stub); + }; + + this.reset = function() { + stubs = []; + }; + + this.findStub = function(url, data, method) { + for (var i = stubs.length - 1; i >= 0; i--) { + var stub = stubs[i]; + if (stub.matches(url, data, method)) { + return stub; + } + } + }; + } + + function ParamParser() { + var defaults = [ + { + test: function(xhr) { + return /^application\/json/.test(xhr.contentType()); + }, + parse: function jsonParser(paramString) { + return JSON.parse(paramString); + } + }, + { + test: function(xhr) { + return true; + }, + parse: function naiveParser(paramString) { + var data = {}; + var params = paramString.split('&'); + + for (var i = 0; i < params.length; ++i) { + var kv = params[i].replace(/\+/g, ' ').split('='); + var key = decodeURIComponent(kv[0]); + data[key] = data[key] || []; + data[key].push(decodeURIComponent(kv[1])); + } + return data; + } + } + ]; + var paramParsers = []; + + this.add = function(parser) { + paramParsers.unshift(parser); + }; + + this.findParser = function(xhr) { + for(var i in paramParsers) { + var parser = paramParsers[i]; + if (parser.test(xhr)) { + return parser; + } + } + }; + + this.reset = function() { + paramParsers = []; + for(var i in defaults) { + paramParsers.push(defaults[i]); + } + }; + + this.reset(); + } + + function fakeRequest(requestTracker, stubTracker, paramParser) { + function FakeXMLHttpRequest() { + requestTracker.track(this); + this.requestHeaders = {}; + } + + var iePropertiesThatCannotBeCopied = ['responseBody', 'responseText', 'responseXML', 'status', 'statusText', 'responseTimeout']; + extend(FakeXMLHttpRequest.prototype, new window.XMLHttpRequest(), iePropertiesThatCannotBeCopied); + extend(FakeXMLHttpRequest.prototype, { + open: function() { + this.method = arguments[0]; + this.url = arguments[1]; + this.username = arguments[3]; + this.password = arguments[4]; + this.readyState = 1; + this.onreadystatechange(); + }, + + setRequestHeader: function(header, value) { + this.requestHeaders[header] = value; + }, + + abort: function() { + this.readyState = 0; + this.status = 0; + this.statusText = "abort"; + this.onreadystatechange(); + }, + + readyState: 0, + + onload: function() { + }, + + onreadystatechange: function(isTimeout) { + }, + + status: null, + + send: function(data) { + this.params = data; + this.readyState = 2; + this.onreadystatechange(); + + var stub = stubTracker.findStub(this.url, data, this.method); + if (stub) { + this.response(stub); + } + }, + + contentType: function() { + for (var header in this.requestHeaders) { + if (header.toLowerCase() === 'content-type') { + return this.requestHeaders[header]; + } + } + }, + + data: function() { + if (!this.params) { + return {}; + } + + return paramParser.findParser(this).parse(this.params); + }, + + getResponseHeader: function(name) { + return this.responseHeaders[name]; + }, + + getAllResponseHeaders: function() { + var responseHeaders = []; + for (var i in this.responseHeaders) { + if (this.responseHeaders.hasOwnProperty(i)) { + responseHeaders.push(i + ': ' + this.responseHeaders[i]); + } + } + return responseHeaders.join('\r\n'); + }, + + responseText: null, + + response: function(response) { + if (this.readyState === 4) { + throw new Error("FakeXMLHttpRequest already completed"); + } + this.status = response.status; + this.statusText = response.statusText || ""; + this.responseText = response.responseText || ""; + this.readyState = 4; + this.responseHeaders = response.responseHeaders || + {"Content-Type": response.contentType || "application/json" }; + + this.onload(); + this.onreadystatechange(); + }, + + responseTimeout: function() { + if (this.readyState === 4) { + throw new Error("FakeXMLHttpRequest already completed"); + } + this.readyState = 4; + jasmine.clock().tick(30000); + this.onreadystatechange('timeout'); + } + }); + + return FakeXMLHttpRequest; + } + + function RequestTracker() { + var requests = []; + + this.track = function(request) { + requests.push(request); + }; + + this.first = function() { + return requests[0]; + }; + + this.count = function() { + return requests.length; + }; + + this.reset = function() { + requests = []; + }; + + this.mostRecent = function() { + return requests[requests.length - 1]; + }; + + this.at = function(index) { + return requests[index]; + }; + + this.filter = function(url_to_match) { + if (requests.length == 0) return []; + var matching_requests = []; + + for (var i = 0; i < requests.length; i++) { + if (url_to_match instanceof RegExp && + url_to_match.test(requests[i].url)) { + matching_requests.push(requests[i]); + } else if (url_to_match instanceof Function && + url_to_match(requests[i])) { + matching_requests.push(requests[i]); + } else { + if (requests[i].url == url_to_match) { + matching_requests.push(requests[i]); + } + } + } + + return matching_requests; + }; + } + + function RequestStub(url, stubData, method) { + var normalizeQuery = function(query) { + return query ? query.split('&').sort().join('&') : undefined; + }; + + if (url instanceof RegExp) { + this.url = url; + this.query = undefined; + } else { + var split = url.split('?'); + this.url = split[0]; + this.query = split.length > 1 ? normalizeQuery(split[1]) : undefined; + } + + this.data = normalizeQuery(stubData); + this.method = method; + + this.andReturn = function(options) { + this.status = options.status || 200; + + this.contentType = options.contentType; + this.responseText = options.responseText; + }; + + this.matches = function(fullUrl, data, method) { + var matches = false; + fullUrl = fullUrl.toString(); + if (this.url instanceof RegExp) { + matches = this.url.test(fullUrl); + } else { + var urlSplit = fullUrl.split('?'), + url = urlSplit[0], + query = urlSplit[1]; + matches = this.url === url && this.query === normalizeQuery(query); + } + return matches && (!this.data || this.data === normalizeQuery(data)) && (!this.method || this.method === method); + }; + } + + if (typeof window === "undefined" && typeof exports === "object") { + exports.MockAjax = MockAjax; + jasmine.Ajax = new MockAjax(exports); + } else { + window.MockAjax = MockAjax; + jasmine.Ajax = new MockAjax(window); + } +}()); diff --git a/third_party/jsdoc/.eslintignore b/third_party/jsdoc/.eslintignore new file mode 100644 index 0000000000..df135046ed --- /dev/null +++ b/third_party/jsdoc/.eslintignore @@ -0,0 +1,7 @@ +node_modules/* +rhino/* +templates/default/static/scripts/* +test/fixtures/* +test/lib/* +test/specs/* +test/tutorials/* diff --git a/third_party/jsdoc/.eslintrc b/third_party/jsdoc/.eslintrc new file mode 100644 index 0000000000..3e57f2274d --- /dev/null +++ b/third_party/jsdoc/.eslintrc @@ -0,0 +1,169 @@ +{ + "env": { + "jasmine": true, + "node": true + }, + + "rules": { + // Possible errors + "no-comma-dangle": 2, + "no-cond-assign": 2, + "no-console": 0, + "no-constant-condition": 0, + "no-control-regex": 2, + "no-debugger": 2, + "no-dupe-keys": 2, + "no-empty": 2, + "no-empty-class": 2, + "no-ex-assign": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": 0, + "no-extra-semi": 2, + "no-func-assign": 2, + "no-inner-declarations": [2, "functions"], + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-negated-in-lhs": 2, + "no-obj-calls": 2, + "no-regex-spaces": 2, + "no-reserved-keys": 0, + "no-sparse-arrays": 2, + "no-unreachable": 2, + "use-isnan": 2, + "valid-jsdoc": 0, // TODO: enable with { "requireReturn": false } + "valid-typeof": 2, + + // Best practices + "block-scoped-var": 0, + "complexity": 0, // TODO: enable + "consistent-return": 2, + "curly": [2, "all"], + "default-case": 2, + "dot-notation": 2, + "eqeqeq": [2, "smart"], + "guard-for-in": 2, + "no-alert": 2, + "no-caller": 2, + "no-div-regex": 2, + "no-else-return": 0, + "no-empty-label": 2, + "no-eq-null": 2, + "no-eval": 2, + "no-extra-bind": 2, + "no-extend-native": 2, + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-implied-eval": 2, + "no-iterator": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-loop-func": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-native-reassign": 2, + "no-new": 2, + "no-new-func": 2, + "no-new-wrappers": 2, + "no-octal": 2, + "no-octal-escape": 2, + "no-process-env": 2, + "no-proto": 2, + "no-redeclare": 2, + "no-return-assign": 2, + "no-script-url": 2, + "no-self-compare": 2, + "no-sequences": 2, + "no-unused-expressions": 2, + "no-void": 2, + "no-warning-comments": 0, + "no-with": 2, + "radix": 2, + "vars-on-top": 0, + "wrap-iife": [2, "inside"], + "yoda": 2, + + // Strict mode + "global-strict": 0, + "no-extra-strict": 2, + "strict": 2, + + // Variables + "no-catch-shadow": 0, + "no-delete-var": 2, + "no-label-var": 2, + "no-shadow": 2, + "no-shadow-restricted-names": 2, + "no-undef": 2, + "no-undef-init": 2, + "no-undefined": 0, + "no-unused-vars": 0, + "no-use-before-define": 2, + + // Node.js + "handle-callback-err": 2, + "no-mixed-requires": 2, + "no-new-require": 2, + "no-path-concat": 2, + "no-process-exit": 2, + "no-restricted-modules": 0, + "no-sync": 0, + + // Stylistic issues + "brace-style": 0, // TODO: enable with "stroustrup" (or "1tbsp" + lots of cleanup) + "camelcase": 2, + "comma-spacing": [2, { + "before": false, + "after": true + }], + "comma-style": [2, "last"], + "consistent-this": [2, "self"], + "eol-last": 2, + "func-names": 0, + "func-style": 0, + "key-spacing": [2, { + "beforeColon": false, + "afterColon": true + }], + "max-nested-callbacks": 0, + "new-cap": 2, + "new-parens": 2, + "no-array-constructor": 2, + "no-lonely-if": 2, + "no-mixed-spaces-and-tabs": 2, + "no-multiple-empty-lines": [2, { + "max": 2 + }], + "no-nested-ternary": 2, + "no-new-object": 2, + "no-space-before-semi": 2, + "no-spaced-func": 2, + "no-ternary": 0, + "no-trailing-spaces": 2, + "no-underscore-dangle": 0, + "no-wrap-func": 2, + "one-var": 0, + "padded-blocks": [2, "never"], + "quotes": [2, "single", "avoid-escape"], + "quote-props": 0, + "semi": [2, "always"], + "sort-vars": 0, + "space-after-keywords": [2, "always"], + "space-before-blocks": [2, "always"], + "space-in-brackets": 0, // TODO: enable? + "space-in-parens": 0, // TODO: enable? + "space-infix-ops": 2, + "space-return-throw-case": 2, + "space-unary-word-ops": 2, + "spaced-line-comment": [2, "always"], + "wrap-regex": 0, + + // Legacy + // TODO: consider enabling some of the `max-*` rules + "max-depth": 0, + "max-len": 0, + "max-params": 0, + "max-statements": 0, + "no-bitwise": 2, + "no-plusplus": 0 + } +} diff --git a/third_party/jsdoc/.gitignore b/third_party/jsdoc/.gitignore new file mode 100644 index 0000000000..28714ae3d9 --- /dev/null +++ b/third_party/jsdoc/.gitignore @@ -0,0 +1,20 @@ +# Development-related files +.tern-port +coverage/ +node_modules/.bin +node_modules/eslint +node_modules/gulp* +node_modules/istanbul + +# Node.js-only modules +node_modules/requizzle + +# User-specific files +conf.json + +# Generated files +test/tutorials/out +out/ + +# Dotfile detritus +.DS_Store diff --git a/third_party/jsdoc/.npmignore b/third_party/jsdoc/.npmignore new file mode 100644 index 0000000000..aaa8ad0add --- /dev/null +++ b/third_party/jsdoc/.npmignore @@ -0,0 +1,14 @@ +# development-related files +.eslintignore +.eslintrc +.gitignore +.travis.yml +gulpfile.js + +# scripts for launching JSDoc with Mozilla Rhino +/jsdoc* +!/jsdoc.js + +# Rhino and test directories +rhino/ +test/ diff --git a/third_party/jsdoc/.travis.yml b/third_party/jsdoc/.travis.yml new file mode 100644 index 0000000000..32230bda12 --- /dev/null +++ b/third_party/jsdoc/.travis.yml @@ -0,0 +1,7 @@ +language: node_js + +node_js: + - "0.10" + - "0.11" + +install: npm install -g gulp; npm install diff --git a/third_party/jsdoc/CONTRIBUTING.md b/third_party/jsdoc/CONTRIBUTING.md new file mode 100644 index 0000000000..2ed19421e6 --- /dev/null +++ b/third_party/jsdoc/CONTRIBUTING.md @@ -0,0 +1,69 @@ +Pull Requests +------------- + +If you're thinking about making some changes, maybe fixing a bug, or adding a +snazzy new feature, first, thank you. Contributions are very welcome. Things +need to be manageable for the maintainers, however. So below you'll find **The +fastest way to get your pull request merged in.** Some things, particularly how +you set up your branches and work with git, are just suggestions, but pretty good +ones. + +1. **Create a remote to track the base jsdoc3/jsdoc repository** + This is just a convenience to make it easier to update your `````` + (more on that shortly). You would execute something like: + + git remote add base git://github.com/jsdoc3/jsdoc.git + + Here 'base' is the name of the remote. Feel free to use whatever you want. + +2. **Set up a tracking branch for the base repository** + We're gonna call this your ``````. You will only ever update + this branch by pulling from the 'base' remote. (as opposed to 'origin') + + git branch --track pullpost base/master + git checkout pullpost + + Here 'pullpost' is the name of the branch. Fell free to use whatever you want. + +3. **Create your change branch** + Once you are in ``````, make sure it's up to date, then create + a branch for your changes off of that one. + + git branch fix-for-issue-395 + git checkout fix-for-issue-395 + + Here 'fix-for-issue-395' is the name of the branch. Feel free to use whatever + you want. We'll call this the ``````. This is the branch that + you will eventually issue your pull request from. + + The purpose of these first three steps is to make sure that your merge request + has a nice clean diff that only involves the changes related to your fix/feature. + +4. **Make your changes** + On your `````` make any changes relevant to your fix/feature. Don't + group fixes for multiple unrelated issues or multiple unrelated features together. + Create a separate branch for each unrelated changeset. For instance, if you're + fixing a bug in the parser and adding some new UI to the default template, those + should be separate branches and merge requests. + +5. **Add tests** + Add tests for your change. If you are submitting a bugfix, include a test that + verifies the existence of the bug along with your fix. If you are submitting + a new feature, include tests that verify proper feature function, if applicable. + See the readme in the 'test' directory for more information + +6. **Commit and publish** + Commit your changes and publish your branch (or push it if it's already published) + +7. **Issue your pull request** + On github.com, switch to your `````` and click the 'Pull Request' + button. Enter some meaningful information about the pull request. If it's a bugfix, + that doesn't already have an issue associated with it, provide some info on what + situations that bug occurs in and a sense of it's severity. If it does already have + an issue, make sure the include the hash and issue number (e.g. '#100') so github + links it. + + If it's a feature, provide some context about the motivations behind the feature, + why it's important/useful/cool/necessary and what it does/how it works. Don't + worry about being too verbose. Folks will be much more amenable to reading through + your code if they know what its supposed to be about. diff --git a/third_party/jsdoc/LICENSE.md b/third_party/jsdoc/LICENSE.md new file mode 100644 index 0000000000..01417b6b39 --- /dev/null +++ b/third_party/jsdoc/LICENSE.md @@ -0,0 +1,380 @@ +# License # + +JSDoc 3 is free software, licensed under the Apache License, Version 2.0 (the +"License"). Commercial and non-commercial use are permitted in compliance with +the License. + +Copyright (c) 2011-2014 Michael Mathews and the +[contributors to JSDoc](https://github.com/jsdoc3/jsdoc/graphs/contributors). +All rights reserved. + +You may obtain a copy of the License at: +http://www.apache.org/licenses/LICENSE-2.0 + +In addition, a copy of the License is included with this distribution. + +As stated in Section 7, "Disclaimer of Warranty," of the License: + +> Licensor provides the Work (and each Contributor provides its Contributions) +> on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +> express or implied, including, without limitation, any warranties or +> conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +> PARTICULAR PURPOSE. You are solely responsible for determining the +> appropriateness of using or redistributing the Work and assume any risks +> associated with Your exercise of permissions under this License. + +The source code for JSDoc 3 is available at: +https://github.com/jsdoc3/jsdoc + +# Third-Party Software # + +JSDoc 3 includes or depends upon the following third-party software, either in +whole or in part. Each third-party software package is provided under its own +license. + +## MIT License ## + +Several of the following software packages are distributed under the MIT +license, which is reproduced below: + +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +## Acorn ## + +Portions of the Acorn source code are incorporated into the following files: + +- `lib/jsdoc/src/walker.js` + +Acorn is distributed under the MIT license, which is reproduced above. + +Copyright (C) 2012 Marijn Haverbeke . + +The source code for Acorn is available at: +https://github.com/marijnh/acorn + +## Async.js ## + +Async.js is distributed under the MIT license, which is reproduced above. + +Copyright (c) 2010 Caolan McMahon. + +The source code for Async.js is available at: +https://github.com/caolan/async + +## Catharsis ## + +Catharsis is distributed under the MIT license, which is reproduced above. + +Copyright (c) 2012-2014 Jeff Williams. + +The source code for Catharsis is available at: +https://github.com/hegemonic/catharsis + +## crypto-browserify ## + +crypto-browserify is distributed under the MIT license, which is reproduced +above. + +Copyright (c) 2013 Dominic Tarr. + +The source code for crypto-browserify is available at: +https://github.com/dominictarr/crypto-browserify + +## escape-string-regexp ## + +escape-string-regexp is distributed under the MIT License, which is reproduced +above. + +Copyright (c) Sindre Sorhus . + +The source code for escape-string-regexp is available at: +https://github.com/sindresorhus/escape-string-regexp + +## Esprima ## + +Esprima is distributed under the BSD 2-clause license: + +> Redistribution and use in source and binary forms, with or without +> modification, are permitted provided that the following conditions are met: +> +> - Redistributions of source code must retain the above copyright notice, +> this list of conditions and the following disclaimer. +> - Redistributions in binary form must reproduce the above copyright notice, +> this list of conditions and the following disclaimer in the documentation +> and/or other materials provided with the distribution. +> +> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +> AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +> ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +> DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +> (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +> LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +> ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +> (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +> THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 2011-2013 Ariya Hidayat and other Esprima contributors. + +The source code for Esprima is available at: +https://github.com/ariya/esprima + +## events ## + +Portions of the events source code are incorporated into the following files: + ++ `rhino/events.js` + +events is distributed under the MIT license, which is reproduced above. + +Copyright Joyent, Inc. and other Node contributors. All rights reserved. + +The source code for events is available at: +https://github.com/Gozala/events + +## github-flavored-markdown ## + +github-flavored-markdown is distributed under the BSD 3-clause license: + +> Copyright (c) 2007, John Fraser All rights +> reserved. +> +> Original Markdown copyright (c) 2004, John Gruber +> All rights reserved. +> +> Redistribution and use in source and binary forms, with or without +> modification, are permitted provided that the following conditions are met: +> +> - Redistributions of source code must retain the above copyright notice, +> this list of conditions and the following disclaimer. +> +> - Redistributions in binary form must reproduce the above copyright notice, +> this list of conditions and the following disclaimer in the documentation +> and/or other materials provided with the distribution. + +> - Neither the name "Markdown" nor the names of its contributors may be used +> to endorse or promote products derived from this software without specific +> prior written permission. +> +> This software is provided by the copyright holders and contributors "as is" +> and any express or implied warranties, including, but not limited to, the +> implied warranties of merchantability and fitness for a particular purpose are +> disclaimed. In no event shall the copyright owner or contributors be liable +> for any direct, indirect, incidental, special, exemplary, or consequential +> damages (including, but not limited to, procurement of substitute goods or +> services; loss of use, data, or profits; or business interruption) however +> caused and on any theory of liability, whether in contract, strict liability, +> or tort (including negligence or otherwise) arising in any way out of the use +> of this software, even if advised of the possibility of such damage. + +The source code for github-flavored-markdown is available at: +https://github.com/hegemonic/github-flavored-markdown + +## Google Code Prettify ## + +Google Code Prettify is distributed under the Apache License 2.0, which is +included with this package. + +Copyright (c) 2006 Google Inc. + +The source code for Google Code Prettify is available at: +https://code.google.com/p/google-code-prettify/ + +## Jasmine ## + +Jasmine is distributed under the MIT license, which is reproduced above. + +Copyright (c) 2008-2011 Pivotal Labs. + +The source code for Jasmine is available at: +https://github.com/pivotal/jasmine + +## jasmine-node ## + +jasmine-node is distributed under the MIT license, which is reproduced above. + +Copyright (c) 2010 Adam Abrons and Misko Hevery (http://getangular.com). + +The source code for jasmine-node is available at: +https://github.com/mhevery/jasmine-node + +## js2xmlparser ## + +js2xmlparser is distributed under the MIT license, which is reproduced above. + +Copyright (c) 2012 Michael Kourlas. + +The source code for js2xmlparser is available at: +https://github.com/michaelkourlas/node-js2xmlparser + +## Node.js ## + +Portions of the Node.js source code are incorporated into the following files: + +- `rhino/fs.js` +- `rhino/path.js` +- `rhino/querystring.js` +- `rhino/util.js` + +Node.js is distributed under the MIT license, which is reproduced above. + +Copyright Joyent, Inc. and other Node contributors. All rights reserved. + +The source code for Node.js is available at: +https://github.com/joyent/node + +## node-browser-builtins ## + +Portions of the node-browser-builtins source code are incorporated into the +following files: + +- `rhino/assert.js` +- `rhino/rhino-shim.js` + +node-browser-builtins is distributed under the MIT license, which is reproduced +above. + +The source code for node-browser-builtins is available at: +https://github.com/alexgorbatchev/node-browser-builtins + +## Open Sans ## + +Open Sans is distributed under the Apache License 2.0, which is +included with this package. + +Copyright (c) 2010-2011, Google Inc. + +This typeface, including the complete set of variations, are available at: +http://www.google.com/fonts/specimen/Open+Sans + +## Requizzle ## + +Requizzle is distributed under the MIT license, which is reproduced above. + +Copyright (c) 2014 Google Inc. All rights reserved. +Copyright (c) 2012-2013 Johannes Ewald. + +The source code for Requizzle is available at: +https://github.com/hegemonic/requizzle + +## Rhino ## + +Rhino is distributed under the following licenses: + +### MPL 2.0 License ### +The majority of the source code for Rhino is available under the Mozilla Public +License (MPL) 2.0, which is included in this distribution. + +### License for portions of the Rhino debugger ### +Additionally, some files are available under the BSD 3-clause license: + +> Copyright 1997, 1998 Sun Microsystems, Inc. All Rights Reserved. +> +> Redistribution and use in source and binary forms, with or without +> modification, are permitted provided that the following conditions are met: +> +> - Redistributions of source code must retain the above copyright notice, +> this list of conditions and the following disclaimer. +> - Redistributions in binary form must reproduce the above copyright +> notice, this list of conditions and the following disclaimer in the +> documentation and/or other materials provided with the distribution. +> - Neither the name of Sun Microsystems nor the names of its contributors +> may be used to endorse or promote products derived from this software +> without specific prior written permission. +> +> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +> AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +> DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +> FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +> DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +> SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +> CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +> OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +### Source Code ### +The source code for Rhino is available at: +https://github.com/jsdoc3/rhino + +## TaffyDB ## + +TaffyDB is distributed under a modified BSD license: + +> All rights reserved. +> +> Redistribution and use of this software in source and binary forms, with or +> without modification, are permitted provided that the following condition is +> met: +> +> Redistributions of source code must retain the above copyright notice, this +> list of conditions and the following disclaimer. +> +> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +> AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +> ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +> LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +> CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +> SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +> INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +> CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +> ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +> POSSIBILITY OF SUCH DAMAGE. + +The source code for TaffyDB is available at: +https://github.com/hegemonic/taffydb + +## Tomorrow Theme for Google Code Prettify ## + +License information for the Tomorrow Theme for Google Code Prettify is not +available. It is assumed that the package is distributed under an open source +license that is compatible with the Apache License 2.0. + +Copyright (c) Yoshihide Jimbo. + +The source code for the Tomorrow Theme is available at: +https://github.com/jmblog/color-themes-for-google-code-prettify + +## tv4 ## + +tv4 is in the public domain. It is also distributed under the MIT license, which +is reproduced above. + +The source code for tv4 is available at: +https://github.com/geraintluff/tv4 + +## Underscore.js ## + +Underscore.js is distributed under the MIT license, which is reproduced above. + +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +Reporters & Editors. + +The source code for Underscore.js is available at: +https://github.com/jashkenas/underscore + +## wrench-js ## + +wrench-js is distributed under the MIT license, which is reproduced above. + +Copyright (c) 2010 Ryan McGrath. + +The source code for wrench-js is available at: +https://github.com/ryanmcgrath/wrench-js diff --git a/third_party/jsdoc/LICENSE.txt b/third_party/jsdoc/LICENSE.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/third_party/jsdoc/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/third_party/jsdoc/README.md b/third_party/jsdoc/README.md new file mode 100644 index 0000000000..d11b5ced6c --- /dev/null +++ b/third_party/jsdoc/README.md @@ -0,0 +1,135 @@ +JSDoc 3 +======= +[![Build Status](https://img.shields.io/travis/jsdoc3/jsdoc.svg)](http://travis-ci.org/jsdoc3/jsdoc) + +An API documentation generator for JavaScript. + +Want to contribute to JSDoc? Please read `CONTRIBUTING.md`. + +Installation and Usage +---------------------- + +You can run JSDoc on either Node.js or Mozilla Rhino. + +### Node.js + +Native support for Node.js is available in JSDoc 3.3.0 and later. JSDoc +supports Node.js 0.10 and later. + +#### Installing JSDoc for Node.js + +You can install JSDoc in your project's `node_modules` folder, or you can +install it globally. + +To install the latest alpha version: + + npm install jsdoc@"<=3.3.0" + +To install the latest development version: + + npm install git+https://github.com/jsdoc3/jsdoc.git + +#### Running JSDoc with Node.js + +If you installed JSDoc locally, the JSDoc command-line tool is available in +`./node_modules/.bin`. To generate documentation for the file +`yourJavaScriptFile.js`: + + ./node_modules/.bin/jsdoc yourJavaScriptFile.js + +Or if you installed JSDoc globally, simply run the `jsdoc` command: + + jsdoc yourJavaScriptFile.js + +By default, the generated documentation is saved in a directory named `out`. You +can use the `--destination` (`-d`) option to specify another directory. + +Run `jsdoc --help` for a complete list of command-line options. + +### Mozilla Rhino + +All versions of JSDoc 3 run on a customized version of Mozilla Rhino, which +requires Java. You can run JSDoc 3 on Java 1.6 and later. + +#### Installing JSDoc for Mozilla Rhino + +To install JSDoc, download a .zip file for the +[latest development version](https://github.com/jsdoc3/jsdoc/archive/master.zip) +or a [previous release](https://github.com/jsdoc3/jsdoc/tags). + +You can also use git to clone the +[JSDoc repository](https://github.com/jsdoc3/jsdoc): + + git clone git+https://github.com/jsdoc3/jsdoc.git + +The JSDoc repository includes a +[customized version of Mozilla Rhino](https://github.com/jsdoc3/rhino). Make +sure your Java classpath does not include any other versions of Rhino. (On OS X, +you may need to remove the file `~/Library/Java/Extensions/js.jar`.) + +**Note**: In JSDoc 3.3.0 and later, if you need to run JSDoc on Mozilla Rhino, +do not install JSDoc with npm. Use one of the methods described above. + +#### Running JSDoc with Mozilla Rhino + +On OS X, Linux, and other POSIX systems, to generate documentation for the file +`yourJavaScriptFile.js`: + + ./jsdoc yourJavaScriptFile.js + +Or on Windows: + + jsdoc yourJavaScriptFile.js + +By default, the generated documentation is saved in a directory named `out`. You +can use the `--destination` (`-d`) option to specify another directory. + +Run `jsdoc --help` for a complete list of command-line options. + + +Templates and Build Tools +------------------------- + +The JSDoc community has created numerous templates and other tools to help you +generate and customize your documentation. Here are just a few: + +### Templates + ++ [jaguarjs-jsdoc](https://github.com/davidshimjs/jaguarjs-jsdoc) + ([example](http://davidshimjs.github.io/jaguarjs/doc)) ++ [DocStrap](https://github.com/terryweiss/docstrap) ++ [jsdoc3Template](https://github.com/DBCDK/jsdoc3Template) + ([example](https://github.com/danyg/jsdoc3Template/wiki#wiki-screenshots)) + +### Build Tools + ++ [JSDoc Grunt plugin](https://github.com/krampstudio/grunt-jsdoc) ++ [JSDoc ant task](https://github.com/jannon/jsdoc3-ant-task) + +### Generating Typeface Fonts + +JSDoc 3 uses the [OpenSans](https://www.google.com/fonts/specimen/Open+Sans) typeface, the fonts for which can be re-generated as follows: + +1. Open the [OpenSans page at Font Squirrel](). +2. Click on the 'Webfont Kit' tab. +3. Either leave the subset drop-down as 'Western Latin (Default)', or if we decide we need more glyphs than change it to 'No Subsetting'. +4. Click the 'DOWNLOAD @FONT-FACE KIT' button. +5. For each typeface variant we plan to use, copy the 'eot', 'svg' and 'woff' files into the 'templates/default/static/fonts' directory. + +For More Information +-------------------- + ++ Documentation is available at [Use JSDoc](http://usejsdoc.org). ++ Contribute to the docs at [jsdoc3/jsdoc3.github.com](https://github.com/jsdoc3/jsdoc3.github.com). ++ Ask for help on the [JSDoc Users mailing list](http://groups.google.com/group/jsdoc-users). ++ Post questions tagged `jsdoc` to [Stack +Overflow](http://stackoverflow.com/questions/tagged/jsdoc). + +License +------- + +JSDoc 3 is copyright (c) 2011-2014 Michael Mathews and the +[contributors to JSDoc](https://github.com/jsdoc3/jsdoc/graphs/contributors). + +JSDoc 3 is free software, licensed under the Apache License, Version 2.0. See +the file `LICENSE.md` in this distribution for more details. diff --git a/third_party/jsdoc/changes.md b/third_party/jsdoc/changes.md new file mode 100644 index 0000000000..fc832d826c --- /dev/null +++ b/third_party/jsdoc/changes.md @@ -0,0 +1,240 @@ +# JSDoc 3 change history + +This file describes notable changes in each version of JSDoc 3. To download a specific version of JSDoc 3, see [GitHub's tags page](https://github.com/jsdoc3/jsdoc/tags). + +## 3.2.2 (November 2013) + +### Bug fixes ++ Addressed a regression in JSDoc 3.2.1 that could prevent a function declaration from shadowing a declaration with the same name in an outer scope. (#513) ++ If a child class overrides a method in a parent class without documenting the overridden method, the method's documentation is now copied from the parent class. (#503) ++ You can now use inline HTML tags in Markdown-formatted text. In addition, JSDoc now uses only the [marked Markdown parser](https://github.com/chjj/marked); the markdown-js parser has been removed. (#510) ++ Type expressions can now include a much broader range of repeatable types. In addition, you can now use Closure Compiler's nullable and non-nullable modifiers with repeatable types. For example, the type expression `...!string` (a repeatable, non-nullable string) is now parsed correctly. (#502) ++ If a function accepts a parameter named `prototype`, the parameter is no longer renamed during parsing. (#505) ++ If the list of input files includes relative paths, the paths are now resolved relative to the user's working directory. (a3d33842) + +## 3.2.1 (October 2013) + +### Enhancements ++ JSDoc's parser now fires a `processingComplete` event after JSDoc has completed all post-processing of the parse results. This event has a `doclets` property containing an array of doclets. (#421) ++ When JSDoc's parser fires a `parseComplete` event, the event now includes a `doclets` property containing an array of doclets. (#431) ++ You can now use relative paths in the JSDoc configuration file's `source.exclude` option. Relative paths will be resolved relative to the current working directory. (#405) ++ If a symbol uses the `@default` tag, and its default value is an object literal, this value is now stored as a string, and the doclet will have a `defaultvaluetype` property containing the string `object`. This change enables templates to show the default value with appropriate syntax highlighting. (#419) ++ Inline `{@link}` tags can now contain newlines. (#441) + +### Bug fixes ++ Inherited symbols now indicate that they were inherited from the ancestor that defined the symbol, rather than the direct parent. (#422) ++ If the first line of a JavaScript file contains a hashbang (for example, `#!/usr/bin/env node`), the hashbang is now ignored when the file is parsed. (#499) ++ Resolved a crash when a JavaScript file contains a [JavaScript 1.8](https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8) keyword, such as `let`. (#477) ++ The type expression `function[]` is now parsed correctly. (#493) ++ If a module is tagged incorrectly, the module's output file now has a valid filename. (#440, #458) ++ For tags that accept names, such as `@module` and `@param`, if a hyphen is used to separate the name and description, the hyphen must appear on the same line as the name. This change prevents a Markdown bullet on the followng line from being interpreted as a separator. (#459) ++ When lenient mode is enabled, a `@param` tag with an invalid type expression no longer causes a crash. (#448) ++ The `@requires` tag can now contain an inline tag in its tag text. (#486) ++ The `@returns` tag can now contain inline tags even if a type is not specified. (#444) ++ When lenient mode is enabled, a `@returns` tag with no value no longer causes a crash. (#451) ++ The `@type` tag now works correctly with type expressions that span multiple lines. (#427) ++ If a string contains inline `{@link}` tags preceded by bracketed link text (for example, `[test]{@link Test#test}`), HTML links are now generated correctly even if the string contains other bracketed text. (#470) ++ On POSIX systems, if you run JSDoc using a symlink to the startup script, JSDoc now works correctly. (#492) + +### Default template ++ Pretty-printed source files are now generated by default. To disable this feature, add the property `templates.default.outputSourceFiles: false` to your `conf.json` file. (#454) ++ Links to a specific line in a source file now work correctly. (#475) ++ Pretty-printed source files are now generated using the encoding specified in the `-e/--encoding` option. (#496) ++ If a `@default` tag is added to a symbol whose default value is an object, the value is now displayed in the output file. (#419) ++ Output files now identify symbols as "abstract" rather than "virtual." (#432) + +## 3.2.0 (May 2013) + +### Major changes ++ JSDoc can now parse any valid [Google Closure Compiler type expression](https://developers.google.com/closure/compiler/docs/js-for-compiler#types). **Note**: As a result of this change, JSDoc quits if a file contains an invalid type expression. To prevent JSDoc from quitting, run JSDoc with the `--lenient` (`-l`) command-line option. (Multiple issues) ++ You can now use the new `@listens` tag to indicate that a symbol listens for an event. (#273) + +### Enhancements ++ The parser now fires a `parseBegin` event before it starts parsing files, as well as a `parseComplete` event after all files have been parsed. Plugins can define event handlers for these events, and `parseBegin` handlers can modify the list of files to parse. (#299) ++ Event handlers for `jsdocCommentFound` events can now modify the JSDoc comment. (#228) ++ You can now exclude tags from Markdown processing using the new option `markdown.excludeTags` in the configuration file. (#337) ++ You can now use the [marked](https://github.com/chjj/marked) Markdown parser by setting the configuration property `markdown.parser` to `marked`. In addition, if `markdown.parser` is set to `gfm`, JSDoc will now use the "marked" parser instead. (#385) ++ The `@typedef` tag no longer requires a name when used with a Closure Compiler-style type definition. For example, the following type definition will automatically get the name `Foo.Bar`: + + ```javascript + /** @typedef {string} */ + Foo.Bar; + ``` + + (#391) ++ You can now use an inline `{@type}` tag in a parameter's description. If this tag is present, JSDoc will assume that the parameter uses the type specified in the inline `{@type}` tag. For example, the following `@param` tag would cause `myParam`'s type to be documented as `Foo`: + + ``` + @param {(boolean|string)} myParam - My special parameter. {@type Foo} + ``` + + (#152) ++ The `console.log` function now behaves the same way as on Node.js. In addition, the functions `console.info`, `console.error`, `console.warn`, and `console.trace` have been implemented. (#298) ++ You can now use npm to install JSDoc globally by running `npm install -g`. **Note**: JSDoc will still run under Mozilla Rhino, not Node.js. (#374) ++ The `jsVersion` configuration property has been removed. (#390) + +### Bug fixes ++ JSDoc now quits if the configuration file cannot be loaded. (#407) ++ JSDoc's `--explain` (`-X`) option now runs much more quickly, and it outputs valid JSON to the console. (#298) ++ JSDoc's `--lenient` (`-l`) option now prints warnings on STDERR rather than STDOUT. (#298) ++ The parser now assigns the correct scope to object properties whose names include single quotes. (#386) ++ The parser now recognizes CommonJS modules that export a single function rather than an object. (#384) ++ The inline `{@link}` tag now works correctly when `@link` is followed by a tab. (#359) ++ On POSIX systems, quoted command-line arguments are no longer split on spaces. (#397) + +### Plugins ++ The new `overloadHelper` plugin makes it easier to link to overloaded methods. (#179) ++ The `markdown` plugin now converts Markdown links in the `@see` tag. (#297) + +### Default template enhancements ++ You can now use the configuration property `templates.default.staticFiles` to copy additional static files to the output directory. (#393) ++ All output files now use human-readable filenames. (#339) ++ The documentation for events now lists the symbols that listen to that event. (#273) ++ Links to source files now allow you to jump to the line where a symbol is defined. (#316) ++ The output files now link to individual types within a Closure Compiler type expression. (Multiple issues) ++ CommonJS modules that export a single function, rather than an object, are now documented more clearly. (#384) ++ Functions that can throw multiple types of errors are now documented more clearly. (#389) ++ If a `@property` tag does not identify the property's name, the template no longer throws an error. (#373) ++ The type of each `@typedef` is now displayed. (#391) ++ If a `@see` tag contains a URL (for example, `@see http://example.com` or `@see `), the tag text is now converted to a link. (#371) ++ Repeatable parameters are now identified. (#381) ++ The "Classes" header is no longer repeated in the navigation bar. (#361) ++ When the only documented symbols in global scope are type definitions, you can now click the "Global" header to view their documentation. (#261) + +## 3.1.1 (February 2013) + ++ Resolved a crash when no input files contain JSDoc comments. (#329) ++ Resolved a crash when JSDoc cannot identify the common prefix of several paths. (#330) ++ Resolved a crash when the full path to JSDoc contained at least one space. (#347) ++ Files named `README.md` or `package.json` will now be processed when they are specified on the command line. (#350) ++ You can now use `@emits` as a synonym for `@fires`. (#324) ++ The module `jsdoc/util/templateHelper` now allows you to specify the CSS class for links that are generated by the following methods: (#331) + + `getAncestorLinks` + + `getSignatureReturns` + + `getSignatureTypes` + + `linkto` + +## 3.1.0 (January 2013) + +### Major changes ++ You can now use the new `@callback` tag to provide information about a callback function's signature. To document a callback function, create a standalone JSDoc comment, as shown in the following example: + + ```javascript + /** + * @class + */ + function MyClass() {} + + /** + * Send a request. + * + * @param {MyClass~responseCb} cb - Called after a response is received. + */ + MyClass.prototype.sendRequest = function(cb) { + // code + }; + + /** + * Callback for sending a request. + * + * @callback MyClass~responseCb + * @param {?string} error - Information about the error. + * @param {?string} response - Body of the response. + */ + ``` ++ The inline link tag, `{@link}`, has been improved: + + You can now use a space as the delimiter between the link target and link text. + + In your `conf.json` file, you can now enable the option `templates.cleverLinks` to display code links in a monospace font and URL links in plain text. You can also enable the option `templates.monospaceLinks` to display all links in a monospace font. **Note**: JSDoc templates must be updated to respect these options. + + You can now use the new inline tags `{@linkplain}`, which forces a plain-text link, and `{@linkcode}`, which forces a monospace link. These tags always override the settings in your `conf.json` file. (#250) ++ JSDoc now provides a `-l/--lenient` option that tells JSDoc to continue running if it encounters a non-fatal error. (Multiple issues) ++ A template's `publish.js` file should now assign its `publish` function to `exports.publish`, rather than defining a global `publish` function. The global `publish` function is deprecated and may not be supported in future versions. JSDoc's built-in templates reflect this change. (#166) ++ The template helper (`templateHelper.js`) exports a variety of new functions for finding information within a parse tree. These functions were previously contained within the default template. (#186) ++ Updated the `fs` and `path` modules to make their behavior more consistent with Node.js. In addition, created extended versions of these modules with additional functionality. (Multiple commits) ++ Updated or replaced numerous third-party modules. (Multiple commits) ++ Reorganized the JSDoc codebase in preparation for future enhancements. (Multiple commits) ++ JSDoc now embeds a version of Mozilla Rhino that recognizes Node.js packages, including `package.json` files. (Multiple commits) ++ Node.js' `npm` utility can now install JSDoc from its GitHub repository. **Note**: JSDoc is not currently compatible with Node.js. However, this change allows JSDoc to be installed as a dependency of a Node.js project. In this version, global installation with `npm` is not supported. (Multiple commits) + +### Enhancements ++ If a `README.md` file is passed to JSDoc, its contents will be included on the `index.html` page of the generated documentation. (#128) ++ The `@augments` tag can now refer to an undocumented member, such as `window.XMLHTTPRequest`. (#160) ++ The `@extends` tag can now refer to an undocumented member, such as `window.XMLHttpRequest`. In addition, you can now use `@host` as a synonym for `@extends`. (#145) ++ The `@lends` tag is now supported in multiline JSDoc comments. (#163) ++ On Windows, `jsdoc.cmd` now provides the same options as the `jsdoc` shell script. (#127) ++ JSDoc now provides `setTimeout()`, `clearTimeout()`, `setInterval()`, and `clearInterval()` functions. (Multiple commits) ++ JSDoc no longer provides a global `exit()` function. Use `process.exit()` instead. (1228a8f7) ++ JSDoc now includes additional shims for Node.js' built-in modules. **Note**: Many of these shims implement only the functions that JSDoc uses, and they may not be consistent with Node.js' behavior in edge cases. (Multiple commits) ++ JSDoc now provides a `-v/--version` option to display information about the current version. (#303) ++ When running tests, you can now use the `--nocolor` option to disable colored output. On Windows, colored output is always disabled. (e17601fe, 8bc33541) + +### Bug fixes ++ When using the `@event` tag to define an event within a class or namespace, the event's longname is now set correctly regardless of tag order. (#280) ++ The `@property` tag no longer results in malformed parse trees. (20f87094) ++ The `jsdoc` and `jsdoc.cmd` scripts now work correctly with paths that include spaces. (#127, #130) ++ The `jsdoc` script now works correctly on Cygwin and MinGW, and with the `dash` shell. (#182, #184, #187) ++ The `-d/--destination` option is no longer treated as a path relative to the JSDoc directory. Instead, it can contain an absolute path, or a path relative to the current working directory. (f5e3f0f3) ++ JSDoc now provides default options for the values in `conf.json`. (#129) ++ If the `conf.json` file does not exist, JSDoc no longer tries to create it, which prevents errors if the current user does not have write access to the JSDoc directory. (d2d05fcb) ++ Doclets for getters and setters are now parsed appropriately. (#150) ++ Only the first asterisk is removed from each line of a JSDoc comment. (#172) ++ If a child member overrides an ancestor member, the ancestor member is no longer documented. (#158) ++ If a member of a namespace has the same name as a namespace, the member is now documented correctly. (#214) ++ The parse tree now uses a single set of properties to track both JSDoc-style type information and Closure Compiler-style type information. (#118) ++ If a type has a leading `!`, indicating that it is non-nullable, the leading `!` is now removed from the type name. (#226) ++ When Markdown formatting is enabled, underscores in inline `{@link}` tags are no longer treated as Markdown formatting characters. (#259) ++ Markdown links now work correctly when a JavaScript reserved word, such as `constructor`, is used as the link text. (#249) ++ Markdown files for tutorials are now parsed based on the settings in `conf.json`, rather than using the "evilstreak" Markdown parser in all cases. (#220) ++ If a folder contains both tutorial source files and `.js` files, JSDoc no longer attempts to parse the `.js` files as JSON files. (#222) ++ The "evilstreak" Markdown parser now works correctly with files that use Windows-style line endings. (#223) ++ JSDoc no longer fails unit tests when the `conf.json` file is not present. (#206) ++ On Windows, JSDoc now passes all unit tests. (Multiple commits) + +### Plugins ++ The new `partial` plugin adds support for a `@partial` tag, which links to an external file that contains JSDoc comments. (#156) ++ The new `commentsOnly` plugin removes everything in a file except JSDoc-style comments. You can use this plugin to document source files that are not valid JavaScript, including source files for other languages. (#304) ++ The new `eventDumper` plugin logs information about parser events to the console. (#242) ++ The new `verbose` plugin logs the name of each input file to the console. (#157) + +### Template enhancements + +#### Default template ++ The template output now includes pretty-printed versions of source files. This feature is enabled by default. To disable this feature, add the property `templates.default.outputSourceFiles: false` to your `conf.json` file. (#208) ++ You can now use the template if it is placed outside of the JSDoc directory. (#198) ++ The template no longer throws an error when a parameter does not have a name. (#175) ++ The navigation bar now includes an "Events" section if any events are documented. (#280) ++ Pages no longer include a "Classes" header when no classes are documented. (eb0186b9) ++ Member details now include "Inherited From" section when a member is inherited from another member. (#154) ++ If an `@author` tag contains text in the format "Jane Doe ", the value is now converted to an HTML `mailto:` link. (#326) ++ Headings for functions now include the function's signature. (#253) ++ Type information is now displayed for events. (#192) ++ Functions now link to their return type when appropriate. (#192) ++ Type definitions that contain functions are now displayed correctly. (#292) ++ Tutorial output is now generated correctly. (#188) ++ Output files now use Google Code Prettify with the Tomorrow theme as a syntax highlighter. (#193) ++ The `index.html` output file is no longer overwritten if a namespace called `index` has been documented. (#244) ++ The current JSDoc version number is now displayed in the footer. (#321) + +#### Haruki template ++ Members are now contained in arrays rather than objects, allowing overloaded members to be documented. (#153) ++ A clearer error message is now provided when the output destination is not specified correctly. (#174) + +## 3.0.1 (June 2012) + +### Enhancements ++ The `conf.json` file may now contain `source.include` and `source.exclude` properties. (#56) + + `source.include` specifies files or directories that JSDoc should _always_ check for documentation. + + `source.exclude` specifies files or directories that JSDoc should _never_ check for documentation. + These settings take precedence over the `source.includePattern` and `source.excludePattern` properties, which contain regular expressions that JSDoc uses to search for source files. ++ The `-t/--template` option may now specify the absolute path to a template. (#122) + +### Bug fixes ++ JSDoc no longer throws exceptions when a symbol has a special name, such as `hasOwnProperty`. (1ef37251) ++ The `@alias` tag now works correctly when documenting inner classes as globals. (810dd7f7) + +### Template improvements ++ The default template now sorts classes by name correctly when the classes come from several modules. (4ce17195) ++ The Haruki template now correctly supports `@example`, `@members`, and `@returns` tags. (6580e176, 59655252, 31c8554d) + +## 3.0.0 (May 2012) + +Initial release. diff --git a/third_party/jsdoc/cli.js b/third_party/jsdoc/cli.js new file mode 100644 index 0000000000..35ab99c721 --- /dev/null +++ b/third_party/jsdoc/cli.js @@ -0,0 +1,463 @@ +/*global java */ +/*eslint no-process-exit:0 */ +/** + * Helper methods for running JSDoc on the command line. + * + * A few critical notes for anyone who works on this module: + * + * + The module should really export an instance of `cli`, and `props` should be properties of a + * `cli` instance. However, Rhino interpreted `this` as a reference to `global` within the + * prototype's methods, so we couldn't do that. + * + On Rhino, for unknown reasons, the `jsdoc/fs` and `jsdoc/path` modules can fail in some cases + * when they are required by this module. You may need to use `fs` and `path` instead. + * + * @private + */ +module.exports = (function() { +'use strict'; + +var logger = require('jsdoc/util/logger'); +var stripJsonComments = require('strip-json-comments'); + +var hasOwnProp = Object.prototype.hasOwnProperty; + +var props = { + docs: [], + packageJson: null, + shouldExitWithError: false, + tmpdir: null +}; + +var app = global.app; +var env = global.env; + +var FATAL_ERROR_MESSAGE = 'Exiting JSDoc because an error occurred. See the previous log ' + + 'messages for details.'; +var cli = {}; + +// TODO: docs +cli.setVersionInfo = function() { + var fs = require('fs'); + var path = require('path'); + + // allow this to throw--something is really wrong if we can't read our own package file + var info = JSON.parse( fs.readFileSync(path.join(env.dirname, 'package.json'), 'utf8') ); + + env.version = { + number: info.version, + revision: new Date( parseInt(info.revision, 10) ).toUTCString() + }; + + return cli; +}; + +// TODO: docs +cli.loadConfig = function() { + var _ = require('underscore'); + var args = require('jsdoc/opts/args'); + var Config = require('jsdoc/config'); + var fs = require('jsdoc/fs'); + var path = require('jsdoc/path'); + + var confPath; + var isFile; + + var defaultOpts = { + destination: './out/', + encoding: 'utf8' + }; + + try { + env.opts = args.parse(env.args); + } + catch (e) { + cli.exit(1, e.message + '\n' + FATAL_ERROR_MESSAGE); + } + + confPath = env.opts.configure || path.join(env.dirname, 'conf.json'); + try { + isFile = fs.statSync(confPath).isFile(); + } + catch(e) { + isFile = false; + } + + if ( !isFile && !env.opts.configure ) { + confPath = path.join(env.dirname, 'conf.json.EXAMPLE'); + } + + try { + env.conf = new Config( stripJsonComments(fs.readFileSync(confPath, 'utf8')) ) + .get(); + } + catch (e) { + cli.exit(1, 'Cannot parse the config file ' + confPath + ': ' + e + '\n' + + FATAL_ERROR_MESSAGE); + } + + // look for options on the command line, in the config file, and in the defaults, in that order + env.opts = _.defaults(env.opts, env.conf.opts, defaultOpts); + + return cli; +}; + +// TODO: docs +cli.configureLogger = function() { + function recoverableError() { + props.shouldExitWithError = true; + } + + function fatalError() { + cli.exit(1); + } + + if (env.opts.debug) { + logger.setLevel(logger.LEVELS.DEBUG); + } + else if (env.opts.verbose) { + logger.setLevel(logger.LEVELS.INFO); + } + + if (env.opts.pedantic) { + logger.once('logger:warn', recoverableError); + logger.once('logger:error', fatalError); + } + else { + logger.once('logger:error', recoverableError); + } + + logger.once('logger:fatal', fatalError); + + return cli; +}; + +// TODO: docs +cli.logStart = function() { + logger.debug( cli.getVersion() ); + + logger.debug('Environment info: %j', { + env: { + conf: env.conf, + opts: env.opts + } + }); +}; + +// TODO: docs +cli.logFinish = function() { + var delta; + var deltaSeconds; + + if (env.run.finish && env.run.start) { + delta = env.run.finish.getTime() - env.run.start.getTime(); + } + + if (delta !== undefined) { + deltaSeconds = (delta / 1000).toFixed(2); + logger.info('Finished running in %s seconds.', deltaSeconds); + } +}; + +// TODO: docs +cli.runCommand = function(cb) { + var cmd; + + var opts = env.opts; + + function done(errorCode) { + if (!errorCode && props.shouldExitWithError) { + cb(1); + } + else { + cb(errorCode); + } + } + + if (opts.help) { + cmd = cli.printHelp; + } + else if (opts.test) { + cmd = cli.runTests; + } + else if (opts.version) { + cmd = cli.printVersion; + } + else { + cmd = cli.main; + } + + cmd(done); +}; + +// TODO: docs +cli.printHelp = function(cb) { + cli.printVersion(); + console.log( '\n' + require('jsdoc/opts/args').help() + '\n' ); + console.log('Visit http://usejsdoc.org for more information.'); + cb(0); +}; + +// TODO: docs +cli.runTests = function(cb) { + var path = require('jsdoc/path'); + + var runner = require( path.join(env.dirname, 'test/runner') ); + + console.log('Running tests...'); + runner(function(failCount) { + cb(failCount); + }); +}; + +// TODO: docs +cli.getVersion = function() { + return 'JSDoc ' + env.version.number + ' (' + env.version.revision + ')'; +}; + +// TODO: docs +cli.printVersion = function(cb) { + console.log( cli.getVersion() ); + + if (cb) { + cb(0); + } +}; + +// TODO: docs +cli.main = function(cb) { + cli.scanFiles(); + + if (env.sourceFiles.length) { + cli.createParser() + .parseFiles() + .processParseResults(); + } + else { + console.log('There are no input files to process.\n'); + cli.printHelp(cb); + } + + env.run.finish = new Date(); + cb(0); +}; + +function readPackageJson(filepath) { + var fs = require('jsdoc/fs'); + + try { + return stripJsonComments( fs.readFileSync(filepath, 'utf8') ); + } + catch (e) { + logger.error('Unable to read the package file "%s"', filepath); + return null; + } +} + +function buildSourceList() { + var fs = require('jsdoc/fs'); + var Readme = require('jsdoc/readme'); + + var packageJson; + var readmeHtml; + var sourceFile; + var sourceFiles = env.opts._ ? env.opts._.slice(0) : []; + + if (env.conf.source && env.conf.source.include) { + sourceFiles = sourceFiles.concat(env.conf.source.include); + } + + // load the user-specified package/README files, if any + if (env.opts.package) { + packageJson = readPackageJson(env.opts.package); + } + if (env.opts.readme) { + readmeHtml = new Readme(env.opts.readme).html; + } + + // source files named `package.json` or `README.md` get special treatment, unless the user + // explicitly specified a package and/or README file + for (var i = 0, l = sourceFiles.length; i < l; i++) { + sourceFile = sourceFiles[i]; + + if ( !env.opts.package && /\bpackage\.json$/i.test(sourceFile) ) { + packageJson = readPackageJson(sourceFile); + sourceFiles.splice(i--, 1); + } + + if ( !env.opts.readme && /(\bREADME|\.md)$/i.test(sourceFile) ) { + readmeHtml = new Readme(sourceFile).html; + sourceFiles.splice(i--, 1); + } + } + + props.packageJson = packageJson; + env.opts.readme = readmeHtml; + + return sourceFiles; +} + +// TODO: docs +cli.scanFiles = function() { + var Filter = require('jsdoc/src/filter').Filter; + + var filter; + + env.opts._ = buildSourceList(); + + // are there any files to scan and parse? + if (env.conf.source && env.opts._.length) { + filter = new Filter(env.conf.source); + + env.sourceFiles = app.jsdoc.scanner.scan(env.opts._, (env.opts.recurse ? 10 : undefined), + filter); + } + + return cli; +}; + +function resolvePluginPaths(paths) { + var path = require('jsdoc/path'); + + var pluginPaths = []; + + paths.forEach(function(plugin) { + var basename = path.basename(plugin); + var dirname = path.dirname(plugin); + var pluginPath = path.getResourcePath(dirname); + + if (!pluginPath) { + logger.error('Unable to find the plugin "%s"', plugin); + return; + } + + pluginPaths.push( path.join(pluginPath, basename) ); + }); + + return pluginPaths; +} + +cli.createParser = function() { + var handlers = require('jsdoc/src/handlers'); + var parser = require('jsdoc/src/parser'); + var path = require('jsdoc/path'); + var plugins = require('jsdoc/plugins'); + + app.jsdoc.parser = parser.createParser(env.conf.parser); + + if (env.conf.plugins) { + env.conf.plugins = resolvePluginPaths(env.conf.plugins); + plugins.installPlugins(env.conf.plugins, app.jsdoc.parser); + } + + handlers.attachTo(app.jsdoc.parser); + + return cli; +}; + +cli.parseFiles = function() { + var augment = require('jsdoc/augment'); + var borrow = require('jsdoc/borrow'); + var Package = require('jsdoc/package').Package; + + var docs; + var packageDocs; + + props.docs = docs = app.jsdoc.parser.parse(env.sourceFiles, env.opts.encoding); + + // If there is no package.json, just create an empty package + packageDocs = new Package(props.packageJson); + packageDocs.files = env.sourceFiles || []; + docs.push(packageDocs); + + logger.debug('Adding inherited symbols...'); + borrow.indexAll(docs); + augment.addInherited(docs); + augment.addImplemented(docs); + borrow.resolveBorrows(docs); + + app.jsdoc.parser.fireProcessingComplete(docs); + + return cli; +}; + +cli.processParseResults = function() { + if (env.opts.explain) { + cli.dumpParseResults(); + } + else { + cli.resolveTutorials(); + cli.generateDocs(); + } + + return cli; +}; + +cli.dumpParseResults = function() { + global.dump(props.docs); + + return cli; +}; + +cli.resolveTutorials = function() { + var resolver = require('jsdoc/tutorial/resolver'); + + if (env.opts.tutorials) { + resolver.load(env.opts.tutorials); + resolver.resolve(); + } + + return cli; +}; + +cli.generateDocs = function() { + var path = require('jsdoc/path'); + var resolver = require('jsdoc/tutorial/resolver'); + var taffy = require('taffydb').taffy; + + var template; + + env.opts.template = (function() { + var publish = env.opts.template || 'templates/default'; + var templatePath = path.getResourcePath(publish); + + // if we didn't find the template, keep the user-specified value so the error message is + // useful + return templatePath || env.opts.template; + })(); + + try { + template = require(env.opts.template + '/publish'); + } + catch(e) { + logger.fatal('Unable to load template: ' + e.message || e); + } + + // templates should include a publish.js file that exports a "publish" function + if (template.publish && typeof template.publish === 'function') { + logger.printInfo('Generating output files...'); + template.publish( + taffy(props.docs), + env.opts, + resolver.root + ); + logger.info('complete.'); + } + else { + logger.fatal(env.opts.template + ' does not export a "publish" function. Global ' + + '"publish" functions are no longer supported.'); + } + + return cli; +}; + +// TODO: docs +cli.exit = function(exitCode, message) { + if (message && exitCode > 0) { + console.error(message); + } + + process.exit(exitCode || 0); +}; + +return cli; +})(); diff --git a/third_party/jsdoc/conf.json.EXAMPLE b/third_party/jsdoc/conf.json.EXAMPLE new file mode 100644 index 0000000000..12bff5bde7 --- /dev/null +++ b/third_party/jsdoc/conf.json.EXAMPLE @@ -0,0 +1,17 @@ +{ + "tags": { + "allowUnknownTags": true + }, + "source": { + "includePattern": ".+\\.js(doc)?$", + "excludePattern": "(^|\\/|\\\\)_" + }, + "plugins": [], + "templates": { + "cleverLinks": false, + "monospaceLinks": false, + "default": { + "outputSourceFiles": true + } + } +} \ No newline at end of file diff --git a/third_party/jsdoc/gulpfile.js b/third_party/jsdoc/gulpfile.js new file mode 100644 index 0000000000..e54c468983 --- /dev/null +++ b/third_party/jsdoc/gulpfile.js @@ -0,0 +1,81 @@ +/*eslint max-nested-callbacks: 0 */ +'use strict'; + +var eslint = require('gulp-eslint'); +var exec = require('child_process').exec; +var gulp = require('gulp'); +var istanbul = require('istanbul'); +var jsonEditor = require('gulp-json-editor'); +var os = require('os'); +var path = require('path'); +var util = require('util'); + +function execCb(cb, err, stdout, stderr) { + console.log(stdout); + console.error(stderr); + cb(err); +} + +var options = { + coveragePaths: [ + '*.js', + 'lib/**/*.js', + 'plugins/*.js' + ], + lintPaths: [ + '*.js', + 'lib/**/*.js', + 'plugins/*.js', + 'templates/default/*.js', + 'templates/haruki/*.js' + ], + nodeBin: path.resolve(__dirname, './jsdoc.js'), + nodePath: process.execPath, + rhinoBin: (function() { + var filepath = path.resolve(__dirname, './jsdoc'); + + if (os.platform().indexOf('win') === 0) { + filepath += '.cmd'; + } + + return filepath; + })() +}; + +gulp.task('bump', function() { + gulp.src('./package.json') + .pipe(jsonEditor({ + revision: String( Date.now() ) + })) + .pipe(gulp.dest('./')); +}); + +gulp.task('coverage', function(cb) { + var cmd = util.format('./node_modules/.bin/istanbul cover %s -- -T', options.nodeBin); + exec(cmd, execCb.bind(null, cb)); +}); + +gulp.task('lint', function() { + var pipeline = gulp.src(options.lintPaths) + .pipe(eslint()) + .pipe(eslint.formatEach()) + .pipe(eslint.failOnError()); +}); + +gulp.task('test-node', function(cb) { + var cmd = util.format('%s "%s" -T', options.nodePath, options.nodeBin); + exec(cmd, execCb.bind(null, cb)); +}); + +gulp.task('test-rhino', function(cb) { + var cmd = util.format('"%s" -T -q "parser=rhino"', options.rhinoBin); + exec(cmd, execCb.bind(null, cb)); +}); + +gulp.task('test-rhino-esprima', function(cb) { + var cmd = util.format('"%s" -T -q "parser=esprima"', options.rhinoBin); + exec(cmd, execCb.bind(null, cb)); +}); + +gulp.task('test', ['lint', 'test-node', 'test-rhino', 'test-rhino-esprima']); +gulp.task('default', ['test']); diff --git a/third_party/jsdoc/jsdoc b/third_party/jsdoc/jsdoc new file mode 100755 index 0000000000..53c9c8f552 --- /dev/null +++ b/third_party/jsdoc/jsdoc @@ -0,0 +1,33 @@ +#!/bin/sh + +SOURCE="$0" +while [ -h "$SOURCE" ] ; do + NEXTSOURCE="$(readlink "$SOURCE")" + echo $NEXTSOURCE | grep -q -e "^/" + if [ $? = 0 ]; then + SOURCE="$NEXTSOURCE" + else + SOURCE="$(dirname $SOURCE)/$NEXTSOURCE" + fi +done +# Get a Windows path under MinGW or Cygwin +BASEPATH="$( cd -P "$( dirname "$SOURCE" )" && (pwd -W 2>/dev/null || cygpath -w $(pwd) 2>/dev/null || pwd))" +if [ "${BASEPATH%${BASEPATH#?}}" != "/" ] ; then + BASEPATH="$( echo "$BASEPATH" | sed -e 's@\\@/@g' )" +fi + +if test "$1" = "--debug" +then + CMD="org.mozilla.javascript.tools.debugger.Main -debug -opt -1" +else + CMD="org.mozilla.javascript.tools.shell.Main" +fi + +if test "$1" = "-T" +then + cd -P "$(dirname "$SOURCE")" + java -classpath "${BASEPATH}/rhino/js.jar" ${CMD} -opt -1 -modules "${BASEPATH}/lib" -modules "${BASEPATH}/node_modules" -modules "${BASEPATH}/rhino" -modules "${BASEPATH}" "${BASEPATH}/jsdoc.js" "$@" + +else + java -classpath "${BASEPATH}/rhino/js.jar" ${CMD} -modules "${BASEPATH}/lib" -modules "${BASEPATH}/node_modules" -modules "${BASEPATH}/rhino" -modules "${BASEPATH}" "${BASEPATH}/jsdoc.js" "$@" +fi diff --git a/third_party/jsdoc/jsdoc.cmd b/third_party/jsdoc/jsdoc.cmd new file mode 100644 index 0000000000..20156cd821 --- /dev/null +++ b/third_party/jsdoc/jsdoc.cmd @@ -0,0 +1,26 @@ +@ECHO OFF + +SETLOCAL + +REM jsdoc.js expects paths without a trailing slash +SET _BASEPATH=%~dp0 +SET _BASEPATH=%_BASEPATH:~0,-1% + +REM we need the ability to resolve paths relative to the user's working +REM directory prior to launching JSDoc +SET PWD=%cd% + +IF [%1]==[--debug] ( + SET CMD=org.mozilla.javascript.tools.debugger.Main -debug -opt -1 +) ELSE ( + SET CMD=org.mozilla.javascript.tools.shell.Main +) +SET ARGS=%* + +IF [%1]==[-T] ( + java -classpath "%_BASEPATH%/rhino/js.jar" %CMD% -opt -1 -modules "%_BASEPATH%/lib" -modules "%_BASEPATH%/node_modules" -modules "%_BASEPATH%/rhino" -modules "%_BASEPATH%" "%_BASEPATH%/jsdoc.js" %ARGS% --nocolor +) ELSE ( + java -classpath "%_BASEPATH%/rhino/js.jar" %CMD% -modules "%_BASEPATH%/lib" -modules "%_BASEPATH%/node_modules" -modules "%_BASEPATH%/rhino" -modules "%_BASEPATH%" "%_BASEPATH%/jsdoc.js" %ARGS% +) + +ENDLOCAL diff --git a/third_party/jsdoc/jsdoc.js b/third_party/jsdoc/jsdoc.js new file mode 100755 index 0000000000..5ea476d48f --- /dev/null +++ b/third_party/jsdoc/jsdoc.js @@ -0,0 +1,184 @@ +#!/usr/bin/env node +/*global arguments, require: true */ +/** + * @project jsdoc + * @author Michael Mathews + * @license See LICENSE.md file included in this distribution. + */ + +/** + * Data representing the environment in which this app is running. + * + * @namespace + * @name env + */ +global.env = { + /** + * Running start and finish times. + * + * @memberof env + */ + run: { + start: new Date(), + finish: null + }, + + /** + * The command-line arguments passed into JSDoc. + * + * @type Array + * @memberof env + */ + args: [], + + /** + * The parsed JSON data from the configuration file. + * + * @type Object + * @memberof env + */ + conf: {}, + + /** + * The absolute path to the base directory of the JSDoc application. + * + * @private + * @type string + * @memberof env + */ + dirname: '.', + + /** + * The user's working directory at the time that JSDoc was started. + * + * @private + * @type string + * @memberof env + */ + pwd: null, + + /** + * The command-line options, parsed into a key/value hash. + * + * @type Object + * @memberof env + * @example if (global.env.opts.help) { console.log('Helpful message.'); } + */ + opts: {}, + + /** + * The source files that JSDoc will parse. + * @type Array + * @memberof env + */ + sourceFiles: [], + + /** + * The JSDoc version number and revision date. + * + * @type Object + * @memberof env + */ + version: {} +}; + +// initialize the environment for the current JavaScript VM +(function(args) { + 'use strict'; + + var path; + + if (args[0] && typeof args[0] === 'object') { + // we should be on Node.js + args = [__dirname, process.cwd()]; + path = require('path'); + + // Create a custom require method that adds `lib/jsdoc` and `node_modules` to the module + // lookup path. This makes it possible to `require('jsdoc/foo')` from external templates and + // plugins, and within JSDoc itself. It also allows external templates and plugins to + // require JSDoc's module dependencies without installing them locally. + require = require('requizzle')({ + requirePaths: { + before: [path.join(__dirname, 'lib')], + after: [path.join(__dirname, 'node_modules')] + }, + infect: true + }); + } + + require('./lib/jsdoc/util/runtime').initialize(args); +})( Array.prototype.slice.call(arguments, 0) ); + +/** + * Data that must be shared across the entire application. + * + * @namespace + * @name app + */ +global.app = { + jsdoc: { + name: require('./lib/jsdoc/name'), + parser: null, + scanner: new (require('./lib/jsdoc/src/scanner').Scanner)() + } +}; + +/** + * Recursively print an object's properties to stdout. This method is safe to use with objects that + * contain circular references. In addition, on Mozilla Rhino, this method is safe to use with + * native Java objects. + * + * @global + * @name dump + * @private + * @param {Object} obj - Object(s) to print to stdout. + */ +global.dump = function() { + 'use strict'; + + var doop = require('./lib/jsdoc/util/doop').doop; + var _dump = require('./lib/jsdoc/util/dumper').dump; + for (var i = 0, l = arguments.length; i < l; i++) { + console.log( _dump(doop(arguments[i])) ); + } +}; + +(function() { + 'use strict'; + + var logger = require('./lib/jsdoc/util/logger'); + var runtime = require('./lib/jsdoc/util/runtime'); + var cli = require('./cli'); + + function cb(errorCode) { + cli.logFinish(); + cli.exit(errorCode || 0); + } + + cli.setVersionInfo() + .loadConfig(); + + if (!global.env.opts.test) { + cli.configureLogger(); + } + + cli.logStart(); + + // On Rhino, we use a try/catch block so we can log the Java exception (if available) + if ( runtime.isRhino() ) { + try { + cli.runCommand(cb); + } + catch(e) { + if (e.rhinoException) { + logger.fatal( e.rhinoException.printStackTrace() ); + } else { + console.trace(e); + cli.exit(1); + } + } + } + else { + cli.runCommand(cb); + } +})(); diff --git a/third_party/jsdoc/lib/jsdoc/augment.js b/third_party/jsdoc/lib/jsdoc/augment.js new file mode 100644 index 0000000000..00f47d167b --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/augment.js @@ -0,0 +1,270 @@ +'use strict'; + +var hasOwnProp = Object.prototype.hasOwnProperty; + +function mapDependencies(index) { + var doclets, doc, len, dependencies = {}; + + Object.keys(index).forEach(function(name) { + doclets = index[name]; + for (var i = 0, ii = doclets.length; i < ii; ++i) { + doc = doclets[i]; + if (doc.kind === 'class' || doc.kind === 'external') { + dependencies[name] = {}; + len = doc.augments && doc.augments.length || 0; + for (var j = 0; j < len; ++j) { + dependencies[name][doc.augments[j]] = true; + } + } + } + }); + + return dependencies; +} + +function Sorter(dependencies) { + this.dependencies = dependencies; + this.visited = {}; + this.sorted = []; +} + +Sorter.prototype.visit = function(key) { + var self = this; + + if (!(key in this.visited)) { + this.visited[key] = true; + + if (this.dependencies[key]) { + Object.keys(this.dependencies[key]).forEach(function(path) { + self.visit(path); + }); + } + + this.sorted.push(key); + } +}; + +Sorter.prototype.sort = function() { + var self = this; + + Object.keys(this.dependencies).forEach(function(key) { + self.visit(key); + }); + + return this.sorted; +}; + +function sort(dependencies) { + var sorter = new Sorter(dependencies); + return sorter.sort(); +} + +function getMembers(longname, docs) { + var candidate, members = []; + for (var i = 0, ii = docs.length; i < ii; ++i) { + candidate = docs[i]; + if (candidate.memberof === longname && candidate.scope === 'instance') { + members.push(candidate); + } + } + return members; +} + +function addOverridesProperty(doclets, overrides) { + for (var i = 0, l = doclets.length; i < l; i++) { + doclets[i].overrides = overrides; + } +} + +function getAdditions(doclets, docs, documented) { + var doop = require('jsdoc/util/doop'); + + var additionIndexes; + var additions = []; + var doc; + var parents; + var members; + var member; + var parts; + + // doclets will be undefined if the inherited symbol isn't documented + doclets = doclets || []; + + for (var i = 0, ii = doclets.length; i < ii; i++) { + doc = doclets[i]; + parents = doc.augments; + if (parents && doc.kind === 'class') { + // reset the lookup table of added doclet indexes by longname + additionIndexes = {}; + for (var j = 0, jj = parents.length; j < jj; j++) { + members = getMembers(parents[j], docs); + for (var k = 0, kk = members.length; k < kk; k++) { + member = doop(members[k]); + + if (!member.inherited) { + member.inherits = member.longname; + } + member.inherited = true; + + // Remove the `overrides` property if present. (For classes A > B > C, if B#a + // overrides A#a, and C#a inherits B#a, we don't want the doclet for C#a to say + // that it overrides A#a.) + if (member.overrides) { + delete member.overrides; + } + + // TODO: this will fail on longnames like: MyClass#"quoted#Longname" + // and nested instance members like: MyClass#MyOtherClass#myMethod + member.memberof = doc.longname; + parts = member.longname.split('#'); + parts[0] = doc.longname; + member.longname = parts.join('#'); + + // Add the ancestor's docs, unless the descendant overrides the ancestor AND + // documents the override. + if ( !hasOwnProp.call(documented, member.longname) ) { + // We add only one doclet per longname. If you inherit from two classes that + // both use the same method name, you get docs for one method rather than + // two. Last one wins; if you write `@extends Class1 @extends Class2`, and + // both classes have the instance method `myMethod`, you get the `myMethod` + // docs from Class2. + if (typeof additionIndexes[member.longname] !== 'undefined') { + // replace the existing doclet + additions[additionIndexes[member.longname]] = member; + } + else { + // add the doclet to the array, and track its index + additions.push(member); + additionIndexes[member.longname] = additions.length - 1; + } + } + // If the descendant is documented and overrides an ancestor, indicate what the + // descendant is overriding. + else { + addOverridesProperty(documented[member.longname], members[k].longname); + } + } + } + } + } + + return additions; +} + +exports.addInherited = function(docs) { + var index = docs.index.longname; + var dependencies = mapDependencies(index); + var sorted = sort(dependencies); + + sorted.forEach(function(name) { + var doclets = index[name]; + var additions = getAdditions(doclets, docs, docs.index.documented); + + additions.forEach(function(doc) { + var longname = doc.longname; + + if ( !hasOwnProp.call(index, longname) ) { + index[longname] = []; + } + index[longname].push(doc); + docs.push(doc); + }); + }); +}; + +// TODO: move as much of this as possible to jsdoc/borrow.indexAll +exports.addImplemented = function(docs) { + var docMap = {}; + var interfaces = {}; + var implemented = {}; + var memberInfo = {}; + + docs.forEach(function(doc) { + var memberof = doc.memberof || doc.name; + + if (!hasOwnProp.call(docMap, memberof)) { + docMap[memberof] = []; + } + docMap[memberof].push(doc); + + if (doc.kind === 'interface') { + interfaces[doc.longname] = doc; + } + else if (doc.implements && doc.implements.length) { + if (!hasOwnProp.call(implemented, doc.memberof)) { + implemented[memberof] = []; + } + implemented[memberof].push(doc); + } + }); + + // create an dictionary of interface doclets + Object.keys(interfaces).forEach(function(ifaceName) { + var iface = interfaces[ifaceName]; + if (hasOwnProp.call(docMap, iface.longname)) { + docMap[iface.longname].forEach(function(doc) { + var members = memberInfo[doc.memberof]; + + if (!members) { + members = memberInfo[doc.memberof] = {}; + } + members[doc.name] = doc; + }); + } + }); + + Object.keys(implemented).forEach(function(key) { + // implemented classes namespace. + var owner = implemented[key]; + + owner.forEach(function(klass) { + // class's interfaces + klass.implements.forEach(function(impl) { + var interfaceMember; + var interfaceMembers = memberInfo[impl]; + var member; + var members; + + // mark the interface as being implemented by the class + if (hasOwnProp.call(interfaces, impl)) { + interfaces[impl].implementations = interfaces[impl].implementations || []; + interfaces[impl].implementations.push(klass.longname); + } + + // if the interface has no members, skip to the next owner + if (!interfaceMembers) { + return; + } + + if (!hasOwnProp.call(docMap, klass.longname)) { + docMap[klass.longname] = []; + } + members = docMap[klass.longname]; + + for (var i = 0, len = members.length; i < len; i++) { + member = members[i]; + interfaceMember = interfaceMembers && interfaceMembers[member.name]; + + // if we didn't find the member name in the interface, skip to the next member + if (!interfaceMember) { + continue; + } + + // mark members that implement an interface + member.implements = member.implements || []; + member.implements.push(interfaceMember.longname); + + // mark interface members that the symbol implements + interfaceMember.implementations = interfaceMember.implementations || []; + interfaceMember.implementations.push(member.longname); + + // inherit docs from the interface if not given in the implementation + member.description = member.description || interfaceMember.description; + member.params = member.params || interfaceMember.params; + member.returns = member.returns || interfaceMember.returns; + member.fires = member.fires || interfaceMember.fires; + } + }); + }); + }); +}; diff --git a/third_party/jsdoc/lib/jsdoc/borrow.js b/third_party/jsdoc/lib/jsdoc/borrow.js new file mode 100644 index 0000000000..5c49882b52 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/borrow.js @@ -0,0 +1,107 @@ +/** + A collection of functions relating to resolving @borrows tags in JSDoc symbols. + @module jsdoc/borrow + @author Michael Mathews + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var doop = require('jsdoc/util/doop'); +var logger = require('jsdoc/util/logger'); +var SCOPE = require('jsdoc/name').SCOPE; + +var hasOwnProp = Object.prototype.hasOwnProperty; + +// TODO: add the index at parse time, so we don't have to iterate over all the doclets again +exports.indexAll = function(doclets) { + var borrowed = []; + var doclet; + var documented = {}; + var longname = {}; + + for (var i = 0, l = doclets.length; i < l; i++) { + doclet = doclets[i]; + + // track all doclets by longname + if ( !hasOwnProp.call(longname, doclet.longname) ) { + longname[doclet.longname] = []; + } + longname[doclet.longname].push(doclet); + + // track longnames of documented symbols + if (!doclet.undocumented) { + if ( !hasOwnProp.call(documented, doclet.longname) ) { + documented[doclet.longname] = []; + } + documented[doclet.longname].push(doclet); + } + + // track doclets with a `borrowed` property + if ( hasOwnProp.call(doclet, 'borrowed') ) { + borrowed.push(doclet); + } + } + + doclets.index = { + borrowed: borrowed, + documented: documented, + longname: longname + }; +}; + +function cloneBorrowedDoclets(doclet, doclets) { + doclet.borrowed.forEach(function(borrowed) { + var borrowedDoclets = doclets.index.longname[borrowed.from]; + var borrowedAs = borrowed.as || borrowed.from; + var clonedDoclets; + var parts; + var scopePunc; + + if (borrowedDoclets) { + borrowedAs = borrowedAs.replace(/^prototype\./, SCOPE.PUNC.INSTANCE); + clonedDoclets = doop(borrowedDoclets).forEach(function(clone) { + // TODO: this will fail on longnames like '"Foo#bar".baz' + parts = borrowedAs.split(SCOPE.PUNC.INSTANCE); + + if (parts.length === 2) { + clone.scope = SCOPE.NAMES.INSTANCE; + scopePunc = SCOPE.PUNC.INSTANCE; + } + else { + clone.scope = SCOPE.NAMES.STATIC; + scopePunc = SCOPE.PUNC.STATIC; + } + + clone.name = parts.pop(); + clone.memberof = doclet.longname; + clone.longname = clone.memberof + scopePunc + clone.name; + doclets.push(clone); + }); + } + }); +} + +// requires docs to have been indexed: docs.index must be defined here +/** + Take a copy of the docs for borrowed symbols and attach them to the + docs for the borrowing symbol. This process changes the symbols involved, + moving docs from the "borrowed" array and into the general docs, then + deleting the "borrowed" array. + */ +exports.resolveBorrows = function(doclets) { + var doclet; + + if (!doclets.index) { + logger.error('Unable to resolve borrowed symbols, because the docs have not been indexed.'); + return; + } + + for (var i = 0, l = doclets.index.borrowed.length; i < l; i++) { + doclet = doclets.index.borrowed[i]; + + cloneBorrowedDoclets(doclet, doclets); + delete doclet.borrowed; + } + + doclets.index.borrowed = []; +}; diff --git a/third_party/jsdoc/lib/jsdoc/config.js b/third_party/jsdoc/lib/jsdoc/config.js new file mode 100644 index 0000000000..ee09b6846d --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/config.js @@ -0,0 +1,60 @@ +/** + @overview + @author Michael Mathews + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ + +/** + @module jsdoc/config + */ +'use strict'; + +function mergeRecurse(target, source) { + Object.keys(source).forEach(function(p) { + if ( source[p].constructor === Object ) { + if ( !target[p] ) { target[p] = {}; } + mergeRecurse(target[p], source[p]); + } + else { + target[p] = source[p]; + } + }); + + return target; +} + +// required config values, override these defaults in your config.json if necessary +var defaults = { + tags: { + allowUnknownTags: true, + dictionaries: ['jsdoc', 'closure'] + }, + templates: { + monospaceLinks: false, + cleverLinks: false + }, + source: { + includePattern: '.+\\.js(doc)?$', + excludePattern: '' + }, + plugins: [] +}; + +/** + @class + @classdesc Represents a JSDoc application configuration. + @param {string} [json] - The contents of config.json. + */ +function Config(json) { + json = JSON.parse( (json || '{}') ); + this._config = mergeRecurse(defaults, json); +} + +module.exports = Config; + +/** + Get the merged configuration values. + */ +Config.prototype.get = function() { + return this._config; +}; diff --git a/third_party/jsdoc/lib/jsdoc/doclet.js b/third_party/jsdoc/lib/jsdoc/doclet.js new file mode 100644 index 0000000000..0513db2d67 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/doclet.js @@ -0,0 +1,426 @@ +/** + * @overview + * @author Michael Mathews + * @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ + +/** + * @module jsdoc/doclet + */ +'use strict'; + +var _ = require('underscore'); +var jsdoc = { + name: require('jsdoc/name'), + src: { + astnode: require('jsdoc/src/astnode'), + Syntax: require('jsdoc/src/syntax').Syntax + }, + tag: { + Tag: require('jsdoc/tag').Tag, + dictionary: require('jsdoc/tag/dictionary') + } +}; +var path = require('jsdoc/path'); +var Syntax = jsdoc.src.Syntax; +var util = require('util'); + +function applyTag(doclet, tag) { + if (tag.title === 'name') { + doclet.name = tag.value; + } + + if (tag.title === 'kind') { + doclet.kind = tag.value; + } + + if (tag.title === 'description') { + doclet.description = tag.value; + } +} + +// use the meta info about the source code to guess what the doclet kind should be +function codeToKind(code) { + var parent; + + var isFunction = jsdoc.src.astnode.isFunction; + + // default + var kind = 'member'; + + if (code.type === Syntax.FunctionDeclaration || code.type === Syntax.FunctionExpression) { + kind = 'function'; + } + else if (code.node && code.node.parent) { + parent = code.node.parent; + if ( isFunction(parent) ) { + kind = 'param'; + } + } + + return kind; +} + +function unwrap(docletSrc) { + if (!docletSrc) { return ''; } + + // note: keep trailing whitespace for @examples + // extra opening/closing stars are ignored + // left margin is considered a star and a space + // use the /m flag on regex to avoid having to guess what this platform's newline is + docletSrc = + docletSrc.replace(/^\/\*\*+/, '') // remove opening slash+stars + .replace(/\**\*\/$/, '\\Z') // replace closing star slash with end-marker + .replace(/^\s*(\* ?|\\Z)/gm, '') // remove left margin like: spaces+star or spaces+end-marker + .replace(/\s*\\Z$/g, ''); // remove end-marker + + return docletSrc; +} + +function split(docletSrc) { + var tagSrcs = []; + + // split out the basic tags, keep surrounding whitespace + // like: @tagTitle tagBody + docletSrc + .replace(/^(\s*)@(\S)/gm, '$1\\@$2') // replace splitter ats with an arbitrary sequence + .split('\\@') // then split on that arbitrary sequence + .forEach(function($) { + var parsedTag; + var tagText; + var tagTitle; + + if ($) { + parsedTag = $.match(/^(\S+)(:?\s+(\S[\s\S]*))?/); + + if (parsedTag) { + // we don't need parsedTag[0] + tagTitle = parsedTag[1]; + tagText = parsedTag[2]; + + if (tagTitle) { + tagSrcs.push({ + title: tagTitle, + text: tagText + }); + } + } + } + }); + + return tagSrcs; +} + +/** + * Convert the raw source of the doclet comment into an array of Tag objects. + * @private + */ +function toTags(docletSrc) { + var tags = []; + var tagSrcs = split(docletSrc); + + for (var i = 0, l = tagSrcs.length; i < l; i++) { + tags.push({ title: tagSrcs[i].title, text: tagSrcs[i].text }); + } + + return tags; +} + +function fixDescription(docletSrc) { + if (!/^\s*@/.test(docletSrc) && docletSrc.replace(/\s/g, '').length) { + docletSrc = '@description ' + docletSrc; + } + return docletSrc; +} + +/** + * Replace the existing tag dictionary with a new tag dictionary. + * + * Used for testing only. + * + * @private + * @param {module:jsdoc/tag/dictionary.Dictionary} dict - The new tag dictionary. + */ +exports._replaceDictionary = function _replaceDictionary(dict) { + jsdoc.tag.dictionary = dict; + require('jsdoc/tag')._replaceDictionary(dict); +}; + +/** + * @class + * @classdesc Represents a single JSDoc comment. + * @param {string} docletSrc - The raw source code of the jsdoc comment. + * @param {object=} meta - Properties describing the code related to this comment. + */ +var Doclet = exports.Doclet = function(docletSrc, meta) { + var newTags = []; + + /** The original text of the comment from the source code. */ + this.comment = docletSrc; + this.setMeta(meta); + + docletSrc = unwrap(docletSrc); + docletSrc = fixDescription(docletSrc); + + newTags = toTags.call(this, docletSrc); + + for (var i = 0, l = newTags.length; i < l; i++) { + this.addTag(newTags[i].title, newTags[i].text); + } + + this.postProcess(); +}; + +/** Called once after all tags have been added. */ +Doclet.prototype.postProcess = function() { + var i; + var l; + + if (!this.preserveName) { + jsdoc.name.resolve(this); + } + if (this.name && !this.longname) { + this.setLongname(this.name); + } + if (this.memberof === '') { + delete this.memberof; + } + + if (!this.kind && this.meta && this.meta.code) { + this.addTag( 'kind', codeToKind(this.meta.code) ); + } + + if (this.variation && this.longname && !/\)$/.test(this.longname) ) { + this.longname += '(' + this.variation + ')'; + } + + // add in any missing param names + if (this.params && this.meta && this.meta.code && this.meta.code.paramnames) { + for (i = 0, l = this.params.length; i < l; i++) { + if (!this.params[i].name) { + this.params[i].name = this.meta.code.paramnames[i] || ''; + } + } + } +}; + +/** + * Add a tag to the doclet. + * + * @param {string} title - The title of the tag being added. + * @param {string} [text] - The text of the tag being added. + */ +Doclet.prototype.addTag = function(title, text) { + var tagDef = jsdoc.tag.dictionary.lookUp(title), + newTag = new jsdoc.tag.Tag(title, text, this.meta); + + if (tagDef && tagDef.onTagged) { + tagDef.onTagged(this, newTag); + } + + if (!tagDef) { + this.tags = this.tags || []; + this.tags.push(newTag); + } + + applyTag(this, newTag); +}; + +function removeGlobal(longname) { + var globalRegexp = new RegExp('^' + jsdoc.name.LONGNAMES.GLOBAL + '\\.?'); + + return longname.replace(globalRegexp, ''); +} + +/** + * Set the doclet's `memberof` property. + * + * @param {string} sid - The longname of the doclet's parent symbol. + */ +Doclet.prototype.setMemberof = function(sid) { + /** + * The longname of the symbol that contains this one, if any. + * @type string + */ + this.memberof = removeGlobal(sid) + .replace(/\.prototype/g, jsdoc.name.SCOPE.PUNC.INSTANCE); +}; + +/** + * Set the doclet's `longname` property. + * + * @param {string} name - The longname for the doclet. + */ +Doclet.prototype.setLongname = function(name) { + /** + * The fully resolved symbol name. + * @type string + */ + this.longname = removeGlobal(name); + if (jsdoc.tag.dictionary.isNamespace(this.kind)) { + this.longname = jsdoc.name.applyNamespace(this.longname, this.kind); + } +}; + +/** + * Get the full path to the source file that is associated with a doclet. + * + * @private + * @param {module:jsdoc/doclet.Doclet} The doclet to check for a filepath. + * @return {string} The path to the doclet's source file, or an empty string if the path is not + * available. + */ +function getFilepath(doclet) { + if (!doclet || !doclet.meta || !doclet.meta.filename) { + return ''; + } + + return path.join(doclet.meta.path || '', doclet.meta.filename); +} + +/** + * Set the doclet's `scope` property. Must correspond to a scope name that is defined in + * {@link module:jsdoc/name.SCOPE.NAMES}. + * + * @param {module:jsdoc/name.SCOPE.NAMES} scope - The scope for the doclet relative to the symbol's + * parent. + * @throws {Error} If the scope name is not recognized. + */ +Doclet.prototype.setScope = function(scope) { + var errorMessage; + var filepath; + var scopeNames = _.values(jsdoc.name.SCOPE.NAMES); + + if (scopeNames.indexOf(scope) === -1) { + filepath = getFilepath(this); + + errorMessage = util.format('The scope name "%s" is not recognized. Use one of the ' + + 'following values: %j', scope, scopeNames); + if (filepath) { + errorMessage += util.format(' (Source file: %s)', filepath); + } + + throw new Error(errorMessage); + } + + this.scope = scope; +}; + +/** + * Add a symbol to this doclet's `borrowed` array. + * + * @param {string} source - The longname of the symbol that is the source. + * @param {string} target - The name the symbol is being assigned to. + */ +Doclet.prototype.borrow = function(source, target) { + var about = { from: source }; + if (target) { + about.as = target; + } + + if (!this.borrowed) { + /** + * A list of symbols that are borrowed by this one, if any. + * @type Array. + */ + this.borrowed = []; + } + this.borrowed.push(about); +}; + +Doclet.prototype.mix = function(source) { + /** + * A list of symbols that are mixed into this one, if any. + * @type Array. + */ + this.mixes = this.mixes || []; + this.mixes.push(source); +}; + +/** + * Add a symbol to the doclet's `augments` array. + * + * @param {string} base - The longname of the base symbol. + */ +Doclet.prototype.augment = function(base) { + /** + * A list of symbols that are augmented by this one, if any. + * @type Array. + */ + this.augments = this.augments || []; + this.augments.push(base); +}; + +/** + * Set the `meta` property of this doclet. + * + * @param {object} meta + */ +Doclet.prototype.setMeta = function(meta) { + /** + * Information about the source code associated with this doclet. + * @namespace + */ + this.meta = this.meta || {}; + + if (meta.range) { + /** + * The positions of the first and last characters of the code associated with this doclet. + * @type Array. + */ + this.meta.range = meta.range.slice(0); + } + + if (meta.lineno) { + /** + * The name of the file containing the code associated with this doclet. + * @type string + */ + this.meta.filename = path.basename(meta.filename); + /** + * The line number of the code associated with this doclet. + * @type number + */ + this.meta.lineno = meta.lineno; + + var pathname = path.dirname(meta.filename); + if (pathname && pathname !== '.') { + this.meta.path = pathname; + } + } + + /** + * Information about the code symbol. + * @namespace + */ + this.meta.code = this.meta.code || {}; + if (meta.id) { this.meta.code.id = meta.id; } + if (meta.code) { + if (meta.code.name) { + /** The name of the symbol in the source code. */ + this.meta.code.name = meta.code.name; + } + if (meta.code.type) { + /** The type of the symbol in the source code. */ + this.meta.code.type = meta.code.type; + } + // the AST node is only enumerable in debug mode, which reduces clutter for the + // --explain/-X option + if (meta.code.node) { + Object.defineProperty(this.meta.code, 'node', { + value: meta.code.node, + enumerable: global.env.opts.debug ? true : false + }); + } + if (meta.code.funcscope) { + this.meta.code.funcscope = meta.code.funcscope; + } + if (meta.code.value) { + /** The value of the symbol in the source code. */ + this.meta.code.value = meta.code.value; + } + if (meta.code.paramnames) { + this.meta.code.paramnames = meta.code.paramnames.slice(0); + } + } +}; diff --git a/third_party/jsdoc/lib/jsdoc/fs.js b/third_party/jsdoc/lib/jsdoc/fs.js new file mode 100644 index 0000000000..4bb8966e4a --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/fs.js @@ -0,0 +1,74 @@ +/** + * Extended version of the standard `fs` module. + * @module jsdoc/fs + */ +'use strict'; + +var fs = require('fs'); +var path = require('path'); +var runtime = require('jsdoc/util/runtime'); + +var ls = exports.ls = function(dir, recurse, _allFiles, _path) { + var file; + var files; + var isFile; + + // first pass + if (_path === undefined) { + _allFiles = []; + _path = [dir]; + } + + if (!_path.length) { + return _allFiles; + } + + if (recurse === undefined) { + recurse = 1; + } + + try { + isFile = fs.statSync(dir).isFile(); + } + catch (e) { + isFile = false; + } + if (isFile) { + files = [dir]; + } + else { + files = fs.readdirSync(dir); + } + + for (var i = 0, l = files.length; i < l; i++) { + file = String(files[i]); + + // skip dot files + if (file.match(/^\.[^\.\/\\]/)) { + continue; + } + + if ( fs.statSync(path.join(_path.join('/'), file)).isDirectory() ) { + // it's a directory + _path.push(file); + + if (_path.length - 1 < recurse) { + ls(_path.join('/'), recurse, _allFiles, _path); + } + _path.pop(); + } + else { + // it's a file + _allFiles.push( path.normalize(path.join(_path.join('/'), file)) ); + } + } + + return _allFiles; +}; + +// export the VM-specific implementations of the extra methods +// TODO: document extra methods here +var extras = require( runtime.getModulePath('fs') ); +Object.keys(extras).forEach(function(extra) { + exports[extra] = extras[extra]; +}); diff --git a/third_party/jsdoc/lib/jsdoc/name.js b/third_party/jsdoc/lib/jsdoc/name.js new file mode 100644 index 0000000000..f2dc3f32bf --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/name.js @@ -0,0 +1,424 @@ +/** + A collection of functions relating to JSDoc symbol name manipulation. + @module jsdoc/name + @author Michael Mathews + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var _ = require('underscore'); +var escape = require('escape-string-regexp'); + +var hasOwnProp = Object.prototype.hasOwnProperty; + +/** + * Longnames that have a special meaning in JSDoc. + * + * @enum {string} + * @static + * @memberof module:jsdoc/name + */ +var LONGNAMES = exports.LONGNAMES = { + /** Longname used for doclets that do not have a longname, such as anonymous functions. */ + ANONYMOUS: '', + /** Longname that represents global scope. */ + GLOBAL: '' +}; + +// TODO: Consider removing this rather than completing the list. In theory, any new tag can act as +// a namespace by setting its `isNamespace` attribute to `true`. +/** + * Namespaces that can be applied to a longname. + * + * @enum {string} + * @static + * @memberof module:jsdoc/name + */ +var NAMESPACES = exports.NAMESPACES = { + MODULE: 'module:' +}; + +/** + * Names and punctuation marks that identify doclet scopes. + * + * @enum {string} + * @static + * @memberof module:jsdoc/name + */ +var SCOPE = exports.SCOPE = { + NAMES: { + GLOBAL: 'global', + INNER: 'inner', + INSTANCE: 'instance', + STATIC: 'static' + }, + PUNC: { + INNER: '~', + INSTANCE: '#', + STATIC: '.' + } +}; + +// For backwards compatibility, this enum must use lower-case keys +var scopeToPunc = exports.scopeToPunc = { + 'inner': SCOPE.PUNC.INNER, + 'instance': SCOPE.PUNC.INSTANCE, + 'static': SCOPE.PUNC.STATIC +}; +var puncToScope = exports.puncToScope = _.invert(scopeToPunc); + +var DEFAULT_SCOPE = SCOPE.NAMES.STATIC; +var SCOPE_PUNC = _.values(SCOPE.PUNC); +var SCOPE_PUNC_STRING = '[' + SCOPE_PUNC.join() + ']'; +var REGEXP_LEADING_SCOPE = new RegExp('^(' + SCOPE_PUNC_STRING + ')'); +var REGEXP_TRAILING_SCOPE = new RegExp('(' + SCOPE_PUNC_STRING + ')$'); + +var DESCRIPTION = '(?:(?:[ \\t]*\\-\\s*|\\s+)(\\S[\\s\\S]*))?$'; +var REGEXP_DESCRIPTION = new RegExp(DESCRIPTION); +var REGEXP_NAME_DESCRIPTION = new RegExp('^(\\[[^\\]]+\\]|\\S+)' + DESCRIPTION); + +function nameIsLongname(name, memberof) { + var regexp = new RegExp('^' + escape(memberof) + SCOPE_PUNC_STRING); + + return regexp.test(name); +} + +function prototypeToPunc(name) { + return name.replace(/(?:^|\.)prototype\.?/g, SCOPE.PUNC.INSTANCE); +} + +/** + Resolves the longname, memberof, variation and name values of the given doclet. + @param {module:jsdoc/doclet.Doclet} doclet + */ +exports.resolve = function(doclet) { + var about = {}; + var memberof = doclet.memberof || ''; + var name = doclet.name ? String(doclet.name) : ''; + + var parentDoc; + + // change MyClass.prototype.instanceMethod to MyClass#instanceMethod + // (but not in function params, which lack doclet.kind) + // TODO: check for specific doclet.kind values (probably function, class, and module) + if (name && doclet.kind) { + name = prototypeToPunc(name); + } + doclet.name = name; + + // member of a var in an outer scope? + if (name && !memberof && doclet.meta.code && doclet.meta.code.funcscope) { + name = doclet.longname = doclet.meta.code.funcscope + SCOPE.PUNC.INNER + name; + } + + if (memberof || doclet.forceMemberof) { // @memberof tag given + memberof = prototypeToPunc(memberof); + + // the name is a complete longname, like @name foo.bar, @memberof foo + if (name && nameIsLongname(name, memberof) && name !== memberof) { + about = exports.shorten(name, (doclet.forceMemberof ? memberof : undefined)); + } + // the name and memberof are identical and refer to a module, + // like @name module:foo, @memberof module:foo (probably a member like 'var exports') + else if (name && name === memberof && name.indexOf(NAMESPACES.MODULE) === 0) { + about = exports.shorten(name, (doclet.forceMemberof ? memberof : undefined)); + } + // the name and memberof are identical, like @name foo, @memberof foo + else if (name && name === memberof) { + doclet.scope = doclet.scope || DEFAULT_SCOPE; + name = memberof + scopeToPunc[doclet.scope] + name; + about = exports.shorten(name, (doclet.forceMemberof ? memberof : undefined)); + } + // like @memberof foo# or @memberof foo~ + else if (name && REGEXP_TRAILING_SCOPE.test(memberof) ) { + about = exports.shorten(memberof + name, (doclet.forceMemberof ? memberof : undefined)); + } + else if (name && doclet.scope) { + about = exports.shorten(memberof + (scopeToPunc[doclet.scope] || '') + name, + (doclet.forceMemberof ? memberof : undefined)); + } + } + else { // no @memberof + about = exports.shorten(name); + } + + if (about.name) { + doclet.name = about.name; + } + + if (about.memberof) { + doclet.setMemberof(about.memberof); + } + + if (about.longname && (!doclet.longname || doclet.longname === doclet.name)) { + doclet.setLongname(about.longname); + } + + if (doclet.scope === SCOPE.NAMES.GLOBAL) { // via @global tag? + doclet.setLongname(doclet.name); + delete doclet.memberof; + } + else if (about.scope) { + if (about.memberof === LONGNAMES.GLOBAL) { // via @memberof ? + doclet.scope = SCOPE.NAMES.GLOBAL; + } + else { + doclet.scope = puncToScope[about.scope]; + } + } + else if (doclet.name && doclet.memberof && !doclet.longname) { + if ( REGEXP_LEADING_SCOPE.test(doclet.name) ) { + doclet.scope = puncToScope[RegExp.$1]; + doclet.name = doclet.name.substr(1); + } + else { + doclet.scope = DEFAULT_SCOPE; + } + + doclet.setLongname(doclet.memberof + scopeToPunc[doclet.scope] + doclet.name); + } + + if (about.variation) { + doclet.variation = about.variation; + } + + // if we never found a longname, just use an empty string + if (!doclet.longname) { + doclet.longname = ''; + } +}; + +/** + @method module:jsdoc/name.applyNamespace + @param {string} longname The full longname of the symbol. + @param {string} ns The namespace to be applied. + @returns {string} The longname with the namespace applied. + */ +exports.applyNamespace = function(longname, ns) { + var nameParts = exports.shorten(longname), + name = nameParts.name; + longname = nameParts.longname; + + if ( !/^[a-zA-Z]+?:.+$/i.test(name) ) { + longname = longname.replace( new RegExp(escape(name) + '$'), ns + ':' + name ); + } + + return longname; +}; + +// TODO: docs +function shorten(longname, sliceChars, forcedMemberof) { + var i; + var memberof = ''; + var name = ''; + var parts; + var partsRegExp; + var scope = ''; + var token; + var tokens = []; + var variation; + + // quoted strings in a longname are atomic, so we convert them to tokens + longname = longname.replace(/(\[?["'].+?["']\]?)/g, function($) { + var dot = ''; + if ( /^\[/.test($) ) { + dot = '.'; + $ = $.replace( /^\[/g, '' ).replace( /\]$/g, '' ); + } + + token = '@{' + tokens.length + '}@'; + tokens.push($); + + return dot + token; // foo["bar"] => foo.@{1}@ + }); + + longname = prototypeToPunc(longname); + + if (forcedMemberof !== undefined) { + partsRegExp = new RegExp('^(.*?)([' + sliceChars.join() + ']?)$'); + name = longname.substr(forcedMemberof.length); + parts = forcedMemberof.match(partsRegExp); + + if (parts[1]) { + memberof = parts[1] || forcedMemberof; + } + if (parts[2]) { + scope = parts[2]; + } + } + else if (longname) { + parts = (longname.match(new RegExp('^(:?(.+)([' + sliceChars.join() + ']))?(.+?)$')) || []) + .reverse(); + name = parts[0] || ''; + scope = parts[1] || ''; + memberof = parts[2] || ''; + } + + // like /** @name foo.bar(2) */ + if ( /(.+)\(([^)]+)\)$/.test(name) ) { + name = RegExp.$1; + variation = RegExp.$2; + } + + // restore quoted strings + i = tokens.length; + while (i--) { + longname = longname.replace('@{' + i + '}@', tokens[i]); + memberof = memberof.replace('@{' + i + '}@', tokens[i]); + scope = scope.replace('@{' + i + '}@', tokens[i]); + name = name.replace('@{' + i + '}@', tokens[i]); + } + + return {longname: longname, memberof: memberof, scope: scope, name: name, variation: variation}; +} + +/** + Given a longname like "a.b#c(2)", slice it up into an object + containing the memberof, the scope, the name, and variation. + @param {string} longname + @param {string} forcedMemberof + @returns {object} Representing the properties of the given name. + */ +exports.shorten = function(longname, forcedMemberof) { + return shorten(longname, SCOPE_PUNC, forcedMemberof); +}; + +function stripVariation(name) { + return name.replace(/\([^)]\)$/, ''); +} + +function splitLongname(longname, options) { + var chunks = []; + var currentNameInfo; + var nameInfo = {}; + var previousName = longname; + var splitters = SCOPE_PUNC.concat('/'); + + options = _.defaults(options || {}, { + includeVariation: true + }); + + do { + if (!options.includeVariation) { + previousName = stripVariation(previousName); + } + currentNameInfo = nameInfo[previousName] = shorten(previousName, splitters); + previousName = currentNameInfo.memberof; + chunks.push(currentNameInfo.scope + currentNameInfo.name); + } while (previousName); + + return { + chunks: chunks.reverse(), + nameInfo: nameInfo + }; +} + +// TODO: docs +exports.longnamesToTree = function longnamesToTree(longnames, doclets) { + var splitOptions = { includeVariation: false }; + var tree = {}; + + longnames.forEach(function(longname) { + var chunk; + var currentLongname = ''; + var currentNavItem = tree; + var nameInfo; + var processed; + + // don't try to add empty longnames to the tree + if (!longname) { + return; + } + + processed = splitLongname(longname, splitOptions); + nameInfo = processed.nameInfo; + + processed.chunks.forEach(function(chunk) { + currentLongname += chunk; + + if (!hasOwnProp.call(currentNavItem, chunk)) { + currentNavItem[chunk] = nameInfo[currentLongname]; + } + + if (currentNavItem[chunk]) { + currentNavItem[chunk].doclet = doclets ? doclets[currentLongname] : null; + currentNavItem[chunk].children = currentNavItem[chunk].children || {}; + currentNavItem = currentNavItem[chunk].children; + } + }); + }); + + return tree; +}; + +/** + Split a string that starts with a name and ends with a description into its parts. + Allows the defaultvalue (if present) to contain brackets. If the name is found to have + mismatched brackets, null is returned. + @param {string} nameDesc + @returns {object} Hash with "name" and "description" properties. + */ +function splitNameMatchingBrackets(nameDesc) { + var buffer = []; + var c; + var stack = 0; + var stringEnd = null; + + for (var i = 0; i < nameDesc.length; ++i) { + c = nameDesc[i]; + buffer.push(c); + + if (stringEnd) { + if (c === '\\' && i + 1 < nameDesc.length) { + buffer.push(nameDesc[++i]); + } else if (c === stringEnd) { + stringEnd = null; + } + } else if (c === '"' || c === "'") { + stringEnd = c; + } else if (c === '[') { + ++stack; + } else if (c === ']') { + if (--stack === 0) { + break; + } + } + } + + if (stack || stringEnd) { + return null; + } + + nameDesc.substr(i).match(REGEXP_DESCRIPTION); + return { + name: buffer.join(''), + description: RegExp.$1 + }; +} + + +/** + Split a string that starts with a name and ends with a description into its parts. + @param {string} nameDesc + @returns {object} Hash with "name" and "description" properties. + */ +exports.splitName = function(nameDesc) { + // like: name, [name], name text, [name] text, name - text, or [name] - text + // the hyphen must be on the same line as the name; this prevents us from treating a Markdown + // dash as a separator + + // optional values get special treatment + var result = null; + if (nameDesc[0] === '[') { + result = splitNameMatchingBrackets(nameDesc); + if (result !== null) { + return result; + } + } + + nameDesc.match(REGEXP_NAME_DESCRIPTION); + return { + name: RegExp.$1, + description: RegExp.$2 + }; +}; diff --git a/third_party/jsdoc/lib/jsdoc/opts/argparser.js b/third_party/jsdoc/lib/jsdoc/opts/argparser.js new file mode 100644 index 0000000000..dd23b588b0 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/opts/argparser.js @@ -0,0 +1,301 @@ +/** + * Parse the command line arguments. + * @module jsdoc/opts/argparser + * @author Michael Mathews + * @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var _ = require('underscore'); + +var hasOwnProp = Object.prototype.hasOwnProperty; + +/** + * Create an instance of the parser. + * @classdesc A parser to interpret the key-value pairs entered on the command line. + * @constructor + * @alias module:jsdoc/opts/argparser + */ +var ArgParser = function() { + this._options = []; + this._shortNameIndex = {}; + this._longNameIndex = {}; +}; + +ArgParser.prototype._getOptionByShortName = function(name) { + if (hasOwnProp.call(this._shortNameIndex, name)) { + return this._options[this._shortNameIndex[name]]; + } + return null; +}; + +ArgParser.prototype._getOptionByLongName = function(name) { + if (hasOwnProp.call(this._longNameIndex, name)) { + return this._options[this._longNameIndex[name]]; + } + return null; +}; + +ArgParser.prototype._addOption = function(option) { + var currentIndex; + + var longName = option.longName; + var shortName = option.shortName; + + this._options.push(option); + currentIndex = this._options.length - 1; + + if (shortName) { + this._shortNameIndex[shortName] = currentIndex; + } + if (longName) { + this._longNameIndex[longName] = currentIndex; + } + + return this; +}; + +/** + * Provide information about a legal option. + * @param {character} shortName The short name of the option, entered like: -T. + * @param {string} longName The equivalent long name of the option, entered like: --test. + * @param {boolean} hasValue Does this option require a value? Like: -t templatename + * @param {string} helpText A brief description of the option. + * @param {boolean} [canHaveMultiple=false] Set to `true` if the option can be provided more than once. + * @param {function} [coercer] A function to coerce the given value to a specific type. + * @return {this} + * @example + * myParser.addOption('t', 'template', true, 'The path to the template.'); + * myParser.addOption('h', 'help', false, 'Show the help message.'); + */ +ArgParser.prototype.addOption = function(shortName, longName, hasValue, helpText, canHaveMultiple, coercer) { + var option = { + shortName: shortName, + longName: longName, + hasValue: hasValue, + helpText: helpText, + canHaveMultiple: (canHaveMultiple || false), + coercer: coercer + }; + + return this._addOption(option); +}; + +// TODO: refactor addOption to accept objects, then get rid of this method +/** + * Provide information about an option that should not cause an error if present, but that is always + * ignored (for example, an option that was used in previous versions but is no longer supported). + * + * @private + * @param {string} shortName - The short name of the option with a leading hyphen (for example, + * `-v`). + * @param {string} longName - The long name of the option with two leading hyphens (for example, + * `--version`). + */ +ArgParser.prototype.addIgnoredOption = function(shortName, longName) { + var option = { + shortName: shortName, + longName: longName, + ignore: true + }; + + return this._addOption(option); +}; + +function padding(length) { + return new Array(length + 1).join(' '); +} + +function padLeft(str, length) { + return padding(length) + str; +} + +function padRight(str, length) { + return str + padding(length); +} + +function findMaxLength(arr) { + var max = 0; + + arr.forEach(function(item) { + if (item.length > max) { + max = item.length; + } + }); + + return max; +} + +function concatWithMaxLength(items, maxLength) { + var result = ''; + // to prevent endless loops, always use the first item, regardless of length + result += items.shift(); + + while ( items.length && (result.length + items[0].length < maxLength) ) { + result += ' ' + items.shift(); + } + + return result; +} + +// we want to format names and descriptions like this: +// | -f, --foo Very long description very long description very long | +// | description very long description. | +function formatHelpInfo(options) { + var MARGIN_LENGTH = 4; + var results = []; + + var maxLength = process.stdout.columns; + var maxNameLength = findMaxLength(options.names); + var maxDescriptionLength = findMaxLength(options.descriptions); + + var wrapDescriptionAt = maxLength - (MARGIN_LENGTH * 3) - maxNameLength; + // build the string for each option + options.names.forEach(function(name, i) { + var result; + var partialDescription; + var words; + + // add a left margin to the name + result = padLeft(options.names[i], MARGIN_LENGTH); + // and a right margin, with extra padding so the descriptions line up with one another + result = padRight(result, maxNameLength - options.names[i].length + MARGIN_LENGTH); + + // split the description on spaces + words = options.descriptions[i].split(' '); + // add as much of the description as we can fit on the first line + result += concatWithMaxLength(words, wrapDescriptionAt); + // if there's anything left, keep going until we've consumed the description + while (words.length) { + partialDescription = padding( maxNameLength + (MARGIN_LENGTH * 2) ); + partialDescription += concatWithMaxLength(words, wrapDescriptionAt); + result += '\n' + partialDescription; + } + + results.push(result); + }); + + return results; +} + +/** + * Generate a summary of all the options with corresponding help text. + * @returns {string} + */ +ArgParser.prototype.help = function() { + var options = { + names: [], + descriptions: [] + }; + + this._options.forEach(function(option) { + var name = ''; + + // don't show ignored options + if (option.ignore) { + return; + } + + if (option.shortName) { + name += '-' + option.shortName + (option.longName ? ', ' : ''); + } + + if (option.longName) { + name += '--' + option.longName; + } + + if (option.hasValue) { + name += ' '; + } + + options.names.push(name); + options.descriptions.push(option.helpText); + }); + + return 'Options:\n' + formatHelpInfo(options).join('\n'); +}; + +/** + * Get the options. + * @param {Array.} args An array, like ['-x', 'hello'] + * @param {Object} [defaults={}] An optional collection of default values. + * @returns {Object} The keys will be the longNames, or the shortName if no longName is defined for + * that option. The values will be the values provided, or `true` if the option accepts no value. + */ +ArgParser.prototype.parse = function(args, defaults) { + var result = defaults && _.defaults({}, defaults) || {}; + + result._ = []; + for (var i = 0, leni = args.length; i < leni; i++) { + var arg = '' + args[i], + next = (i < leni - 1) ? '' + args[i + 1] : null, + option, + shortName = null, + longName, + name, + value = null; + + // like -t + if (arg.charAt(0) === '-') { + // like --template + if (arg.charAt(1) === '-') { + name = longName = arg.slice(2); + option = this._getOptionByLongName(longName); + } + else { + name = shortName = arg.slice(1); + option = this._getOptionByShortName(shortName); + } + + if (option === null) { + throw new Error( 'Unknown command line option found: ' + name ); + } + + if (option.hasValue) { + value = next; + i++; + + if (value === null || value.charAt(0) === '-') { + throw new Error( 'Command line option requires a value: ' + name ); + } + } + else { + value = true; + } + + // skip ignored options now that we've consumed the option text + if (option.ignore) { + continue; + } + + if (option.longName && shortName) { + name = option.longName; + } + + if (typeof option.coercer === 'function') { + value = option.coercer(value); + } + + // Allow for multiple options of the same type to be present + if (option.canHaveMultiple && hasOwnProp.call(result, name)) { + var val = result[name]; + + if (val instanceof Array) { + val.push(value); + } else { + result[name] = [val, value]; + } + } + else { + result[name] = value; + } + } + else { + result._.push(arg); + } + } + + return result; +}; + +module.exports = ArgParser; diff --git a/third_party/jsdoc/lib/jsdoc/opts/args.js b/third_party/jsdoc/lib/jsdoc/opts/args.js new file mode 100644 index 0000000000..4748680d0f --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/opts/args.js @@ -0,0 +1,140 @@ +/** + * @module jsdoc/opts/args + * @requires jsdoc/opts/argparser + * @author Michael Mathews + * @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var ArgParser = require('jsdoc/opts/argparser'); +var querystring = require('querystring'); +var util = require('util'); + +var ourOptions; + +var argParser = new ArgParser(); +var hasOwnProp = Object.prototype.hasOwnProperty; + +// cast strings to booleans or integers where appropriate +function castTypes(item) { + var integer; + + var result = item; + + switch (result) { + case 'true': + result = true; + break; + + case 'false': + result = false; + break; + + default: + // might be an integer + integer = parseInt(result, 10); + if (String(integer) === result && integer !== 'NaN') { + result = integer; + } + } + + return result; +} + +// check for strings that we need to cast to other types +function fixTypes(item) { + var result = item; + + // recursively process arrays and objects + if ( util.isArray(result) ) { + for (var i = 0, l = result.length; i < l; i++) { + result[i] = fixTypes(result[i]); + } + } + else if (typeof result === 'object') { + Object.keys(result).forEach(function(prop) { + result[prop] = fixTypes(result[prop]); + }); + } + else { + result = castTypes(result); + } + + return result; +} + +function parseQuery(str) { + var result = querystring.parse(str); + + Object.keys(result).forEach(function(prop) { + result[prop] = fixTypes(result[prop]); + }); + + return result; +} + +argParser.addOption('t', 'template', true, 'The path to the template to use. Default: path/to/jsdoc/templates/default'); +argParser.addOption('c', 'configure', true, 'The path to the configuration file. Default: path/to/jsdoc/conf.json'); +argParser.addOption('e', 'encoding', true, 'Assume this encoding when reading all source files. Default: utf8'); +argParser.addOption('T', 'test', false, 'Run all tests and quit.'); +argParser.addOption('d', 'destination', true, 'The path to the output folder. Use "console" to dump data to the console. Default: ./out/'); +argParser.addOption('p', 'private', false, 'Display symbols marked with the @private tag. Default: false'); +argParser.addOption('r', 'recurse', false, 'Recurse into subdirectories when scanning for source code files.'); +argParser.addOption('h', 'help', false, 'Print this message and quit.'); +argParser.addOption('X', 'explain', false, 'Dump all found doclet internals to console and quit.'); +argParser.addOption('q', 'query', true, 'A query string to parse and store in env.opts.query. Example: foo=bar&baz=true', false, parseQuery); +argParser.addOption('u', 'tutorials', true, 'Directory in which JSDoc should search for tutorials.'); +argParser.addOption('P', 'package', true, 'The path to the project\'s package file. Default: path/to/sourcefiles/package.json'); +argParser.addOption('R', 'readme', true, 'The path to the project\'s README file. Default: path/to/sourcefiles/README.md'); +argParser.addOption('v', 'version', false, 'Display the version number and quit.'); +argParser.addOption('', 'debug', false, 'Log information for debugging JSDoc. On Rhino, launches the debugger when passed as the first option.'); +argParser.addOption('', 'verbose', false, 'Log detailed information to the console as JSDoc runs.'); +argParser.addOption('', 'pedantic', false, 'Treat errors as fatal errors, and treat warnings as errors. Default: false'); + +// Options specific to tests +argParser.addOption(null, 'match', true, 'Only run tests containing .', true); +argParser.addOption(null, 'nocolor', false, 'Do not use color in console output from tests.'); + +// Options that are no longer supported and should be ignored +argParser.addIgnoredOption('l', 'lenient'); // removed in JSDoc 3.3.0 + +/** + * Set the options for this app. + * @throws {Error} Illegal arguments will throw errors. + * @param {string|String[]} args The command line arguments for this app. + */ +exports.parse = function(args) { + args = args || []; + + if (typeof args === 'string' || args.constructor === String) { + args = String(args).split(/\s+/g); + } + + ourOptions = argParser.parse(args); + + return ourOptions; +}; + +/** + * Retrieve help message for options. + */ +exports.help = function() { + return argParser.help(); +}; + +/** + * Get a named option. + * @param {string} name The name of the option. + * @return {string} The value associated with the given name. + *//** + * Get all the options for this app. + * @return {Object} A collection of key/values representing all the options. + */ +exports.get = function(name) { + if (typeof name === 'undefined') { + return ourOptions; + } + else if ( hasOwnProp.call(ourOptions, name) ) { + return ourOptions[name]; + } +}; diff --git a/third_party/jsdoc/lib/jsdoc/package.js b/third_party/jsdoc/lib/jsdoc/package.js new file mode 100644 index 0000000000..1a60a3b023 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/package.js @@ -0,0 +1,254 @@ +'use strict'; + +var logger = require('jsdoc/util/logger'); + +/** + * Provides access to information about a JavaScript package. + * + * @module jsdoc/package + * @see https://www.npmjs.org/doc/files/package.json.html + */ + +// Collect all of the license information from a `package.json` file. +function getLicenses(packageInfo) { + var licenses = packageInfo.licenses ? packageInfo.licenses.slice(0) : []; + + if (packageInfo.license) { + licenses.push({ type: packageInfo.license }); + } + + return licenses; +} + +/** + * Information about where to report bugs in the package. + * + * @typedef {Object} module:jsdoc/package.Package~BugInfo + * @property {string} email - The email address for reporting bugs. + * @property {string} url - The URL for reporting bugs. + */ + +/** + * Information about a package's software license. + * + * @typedef {Object} module:jsdoc/package.Package~LicenseInfo + * @property {string} type - An identifier for the type of license. + * @property {string} url - The URL for the complete text of the license. + */ + +/** + * Information about a package author or contributor. + * + * @typedef {Object} module:jsdoc/package.Package~PersonInfo + * @property {string} name - The person's full name. + * @property {string} email - The person's email address. + * @property {string} url - The URL of the person's website. + */ + +/** + * Information about a package's version-control repository. + * + * @typedef {Object} module:jsdoc/package.Package~RepositoryInfo + * @property {string} type - The type of version-control system that the repository uses (for + * example, `git` or `svn`). + * @property {string} url - The URL for the repository. + */ + +/** + * Information about a JavaScript package. JSDoc can extract package information from + * `package.json` files that follow the + * [npm specification](https://www.npmjs.org/doc/files/package.json.html). + * + * **Note**: JSDoc does not validate or normalize the contents of `package.json` files. If your + * `package.json` file does not follow the npm specification, some properties of the `Package` + * object may not use the format documented here. + * + * @class + * @param {string} json - The contents of the `package.json` file. + */ +exports.Package = function(json) { + var packageInfo; + + /** + * The string identifier that is shared by all `Package` objects. + * + * @readonly + * @default + * @type {string} + */ + this.kind = 'package'; + + try { + packageInfo = JSON.parse(json || '{}'); + } + catch (e) { + logger.error('Unable to parse the package file: %s', e.message); + packageInfo = {}; + } + + if (packageInfo.name) { + /** + * The package name. + * + * @type {string} + */ + this.name = packageInfo.name; + } + + /** + * The unique longname for this `Package` object. + * + * @type {string} + */ + this.longname = this.kind + ':' + this.name; + + if (packageInfo.author) { + /** + * The author of this package. Contains either a + * {@link module:jsdoc/package.Package~PersonInfo PersonInfo} object or a string with + * information about the author. + * + * @type {(module:jsdoc/package.Package~PersonInfo|string)} + * @since 3.3.0 + */ + this.author = packageInfo.author; + } + + if (packageInfo.bugs) { + /** + * Information about where to report bugs in the project. May contain a URL, as a string, or + * an object with more detailed information. + * + * @type {(string|module:jsdoc/package.Package~BugInfo)} + * @since 3.3.0 + */ + this.bugs = packageInfo.bugs; + } + + if (packageInfo.contributors) { + /** + * The contributors to this package. + * + * @type {Array.<(module:jsdoc/package.Package~PersonInfo|string)>} + * @since 3.3.0 + */ + this.contributors = packageInfo.contributors; + } + + if (packageInfo.dependencies) { + /** + * The dependencies for this package. + * + * @type {Object} + * @since 3.3.0 + */ + this.dependencies = packageInfo.dependencies; + } + + if (packageInfo.description) { + /** + * A brief description of the package. + * + * @type {string} + */ + this.description = packageInfo.description; + } + + if (packageInfo.devDependencies) { + /** + * The development dependencies for this package. + * + * @type {Object} + * @since 3.3.0 + */ + this.devDependencies = packageInfo.devDependencies; + } + + if (packageInfo.engines) { + /** + * The JavaScript engines that this package supports. Each key is a string that identifies the + * engine (for example, `node`). Each value is a + * [semver](https://www.npmjs.org/doc/misc/semver.html)-compliant version number for the engine. + * + * @type {Object} + * @since 3.3.0 + */ + this.engines = packageInfo.engines; + } + + /** + * The source files associated with the package. + * + * New `Package` objects always contain an empty array, regardless of whether the `package.json` + * file includes a `files` property. + * + * After JSDoc parses your input files, it sets this property to a list of paths to your input + * files. + * + * @type {Array.} + */ + this.files = []; + + if (packageInfo.homepage) { + /** + * The URL for the package's homepage. + * + * @type {string} + * @since 3.3.0 + */ + this.homepage = packageInfo.homepage; + } + + if (packageInfo.keywords) { + /** + * Keywords to help users find the package. + * + * @type {Array.} + * @since 3.3.0 + */ + this.keywords = packageInfo.keywords; + } + + if (packageInfo.license || packageInfo.licenses) { + /** + * The licenses used by this package. Combines information from the `package.json` file's + * `license` property and the deprecated `licenses` property. + * + * @type {Array.} + */ + this.licenses = getLicenses(packageInfo); + } + + if (packageInfo.main) { + /** + * The module ID that provides the primary entry point to the package. For example, if your + * package is a CommonJS module, and the value of this property is `foo`, users should be able + * to load your module with `require('foo')`. + * + * @type {string} + * @since 3.3.0 + */ + this.main = packageInfo.main; + } + + if (packageInfo.repository) { + /** + * The version-control repository for the package. + * + * @type {module:jsdoc/package.Package~RepositoryInfo} + * @since 3.3.0 + */ + this.repository = packageInfo.repository; + } + + if (packageInfo.version) { + /** + * The [semver](https://www.npmjs.org/doc/misc/semver.html)-compliant version number of the + * package. + * + * @type {string} + * @since 3.2.0 + */ + this.version = packageInfo.version; + } +}; diff --git a/third_party/jsdoc/lib/jsdoc/path.js b/third_party/jsdoc/lib/jsdoc/path.js new file mode 100644 index 0000000000..3b8b660c76 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/path.js @@ -0,0 +1,134 @@ +/*global env: true */ +/** + * Extended version of the standard `path` module. + * @module jsdoc/path + */ +'use strict'; + +var fs = require('fs'); +var path = require('path'); +var runtime = require('jsdoc/util/runtime'); + +function prefixReducer(previousPath, current) { + var currentPath = []; + + // if previousPath is defined, but has zero length, there's no common prefix; move along + if (previousPath && !previousPath.length) { + return currentPath; + } + + currentPath = path.resolve(global.env.pwd, current).split(path.sep) || []; + + if (previousPath && currentPath.length) { + // remove chunks that exceed the previous path's length + currentPath = currentPath.slice(0, previousPath.length); + + // if a chunk doesn't match the previous path, remove everything from that chunk on + for (var i = 0, l = currentPath.length; i < l; i++) { + if (currentPath[i] !== previousPath[i]) { + currentPath.splice(i, currentPath.length - i); + break; + } + } + } + + return currentPath; +} + +/** + * Find the common prefix for an array of paths. If there is a common prefix, a trailing separator + * is appended to the prefix. Relative paths are resolved relative to the current working directory. + * + * For example, assuming that the current working directory is `/Users/jsdoc`: + * + * + For the single path `foo/bar/baz/qux.js`, the common prefix is `foo/bar/baz/`. + * + For paths `foo/bar/baz/qux.js`, `foo/bar/baz/quux.js`, and `foo/bar/baz.js`, the common prefix + * is `/Users/jsdoc/foo/bar/`. + * + For paths `../jsdoc/foo/bar/baz/qux/quux/test.js`, `/Users/jsdoc/foo/bar/bazzy.js`, and + * `../../Users/jsdoc/foo/bar/foobar.js`, the common prefix is `/Users/jsdoc/foo/bar/`. + * + For paths `foo/bar/baz/qux.js` and `../../Library/foo/bar/baz.js`, there is no common prefix, + * and an empty string is returned. + * + * @param {Array.} paths - The paths to search for a common prefix. + * @return {string} The common prefix, or an empty string if there is no common prefix. + */ +exports.commonPrefix = function(paths) { + var segments; + + var prefix = ''; + + paths = paths || []; + + // if there's only one path, its resolved dirname (plus a trailing slash) is the common prefix + if (paths.length === 1) { + prefix = path.resolve(global.env.pwd, paths[0]); + if ( path.extname(prefix) ) { + prefix = path.dirname(prefix); + } + + prefix += path.sep; + } + else { + segments = paths.reduce(prefixReducer, undefined) || []; + + // if there's anything left (other than a placeholder for a leading slash), add a + // placeholder for a trailing slash + if ( segments.length && (segments.length > 1 || segments[0] !== '') ) { + segments.push(''); + } + + prefix = segments.join(path.sep); + } + + return prefix; +}; + +/** + * Retrieve the fully qualified path to the requested resource. + * + * If the resource path is specified as a relative path, JSDoc searches for the path in the + * directory where the JSDoc configuration file is located, then in the current working directory, + * and finally in the JSDoc directory. + * + * If the resource path is specified as a fully qualified path, JSDoc uses the path as-is. + * + * @param {string} filepath - The path to the requested resource. May be an absolute path; a path + * relative to the JSDoc directory; or a path relative to the current working directory. + * @param {string} [filename] - The filename of the requested resource. + * @return {string} The fully qualified path (or, on Rhino, a URI) to the requested resource. + * Includes the filename if one was provided. + */ +exports.getResourcePath = function(filepath, filename) { + var result = null; + + function pathExists(_path) { + try { + fs.readdirSync(_path); + } + catch(e) { + return false; + } + + return true; + } + + // absolute paths are normalized by path.resolve on the first pass + [path.dirname(global.env.opts.configure || ''), env.pwd, env.dirname].forEach(function(_path) { + if (!result && _path) { + _path = path.resolve(_path, filepath); + if ( pathExists(_path) ) { + result = _path; + } + } + }); + + if (result) { + result = filename ? path.join(result, filename) : result; + } + + return result; +}; + +Object.keys(path).forEach(function(member) { + exports[member] = path[member]; +}); diff --git a/third_party/jsdoc/lib/jsdoc/plugins.js b/third_party/jsdoc/lib/jsdoc/plugins.js new file mode 100644 index 0000000000..92fb4947c4 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/plugins.js @@ -0,0 +1,53 @@ +/*global app: true */ +/** + * Utility functions to support the JSDoc plugin framework. + * @module jsdoc/plugins + */ +'use strict'; + +var logger = require('jsdoc/util/logger'); +var path = require('jsdoc/path'); + +function addHandlers(handlers, parser) { + Object.keys(handlers).forEach(function(eventName) { + parser.on(eventName, handlers[eventName]); + }); +} + +exports.installPlugins = function(plugins, parser) { + var dictionary = require('jsdoc/tag/dictionary'); + + var eventName; + var plugin; + + for (var i = 0, l = plugins.length; i < l; i++) { + plugin = require(plugins[i]); + + // allow user-defined plugins to... + // ...register event handlers + if (plugin.handlers) { + addHandlers(plugin.handlers, parser); + } + + // ...define tags + if (plugin.defineTags) { + plugin.defineTags(dictionary); + } + + // ...add a Rhino node visitor (deprecated in JSDoc 3.3) + if (plugin.nodeVisitor) { + if ( !parser.addNodeVisitor ) { + logger.error('Unable to add the Rhino node visitor from %s, because JSDoc ' + + 'is not using the Rhino JavaScript parser.', plugins[i]); + } + else { + parser.addNodeVisitor(plugin.nodeVisitor); + } + } + + // ...add a Mozilla Parser API node visitor + if (plugin.astNodeVisitor) { + parser.addAstNodeVisitor(plugin.astNodeVisitor); + } + } +}; diff --git a/third_party/jsdoc/lib/jsdoc/readme.js b/third_party/jsdoc/lib/jsdoc/readme.js new file mode 100644 index 0000000000..f24317ae13 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/readme.js @@ -0,0 +1,26 @@ +/*global env: true */ + +/** + * Make the contents of a README file available to include in the output. + * @module jsdoc/readme + * @author Michael Mathews + * @author Ben Blank + */ +'use strict'; + +var fs = require('jsdoc/fs'), + markdown = require('jsdoc/util/markdown'); + +/** + * @class + * @classdesc Represents a README file. + * @param {string} path - The filepath to the README. + */ +function ReadMe(path) { + var content = fs.readFileSync(path, env.opts.encoding), + parse = markdown.getParser(); + + this.html = parse(content); +} + +module.exports = ReadMe; diff --git a/third_party/jsdoc/lib/jsdoc/schema.js b/third_party/jsdoc/lib/jsdoc/schema.js new file mode 100644 index 0000000000..07d710941a --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/schema.js @@ -0,0 +1,736 @@ +/** + * @overview Schema for validating JSDoc doclets. + * + * @author Michael Mathews + * @author Jeff Williams + * @license Apache License 2.0 - See file 'LICENSE.md' in this project. + * @see + */ +'use strict'; + +// JSON schema types +var ARRAY = 'array'; +var BOOLEAN = 'boolean'; +var INTEGER = 'integer'; +var NULL = 'null'; +var NUMBER = 'number'; +var OBJECT = 'object'; +var STRING = 'string'; +var UNDEFINED = 'undefined'; + +var BOOLEAN_OPTIONAL = [BOOLEAN, NULL, UNDEFINED]; +var STRING_OPTIONAL = [STRING, NULL, UNDEFINED]; + +var EVENT_REGEXP = /event\:[\S]+/; +var PACKAGE_REGEXP = /package\:[\S]+/; + +// information about the code associated with a doclet +var META_SCHEMA = exports.META_SCHEMA = { + type: OBJECT, + optional: true, + additionalProperties: false, + properties: { + code: { + type: OBJECT, + additionalProperties: false, + properties: { + funcscope: { + type: STRING, + optional: true + }, + id: { + type: STRING, + optional: true + }, + name: { + type: STRING, + optional: true + }, + node: { + type: OBJECT, + optional: true + }, + paramnames: { + type: ARRAY, + optional: true, + uniqueItems: true, + items: { + type: STRING + } + }, + type: { + type: STRING, + optional: true + }, + value: { + optional: true + } + } + }, + filename: { + title: 'The name of the file that contains the code associated with this doclet.', + type: STRING, + optional: true + }, + lineno: { + title: 'The line number of the code associated with this doclet.', + type: NUMBER, + optional: true + }, + path: { + title: 'The path in which the code associated with this doclet is located.', + type: STRING, + optional: true + }, + range: { + title: 'The positions of the first and last characters of the code associated with ' + + 'this doclet.', + type: ARRAY, + optional: true, + minItems: 2, + maxItems: 2, + items: { + type: NUMBER + } + }, + vars: { + type: OBJECT + } + } +}; + +// type property containing type names +var TYPE_PROPERTY_SCHEMA = exports.TYPE_PROPERTY_SCHEMA = { + type: OBJECT, + additionalProperties: false, + properties: { + names: { + type: ARRAY, + minItems: 1, + items: { + type: STRING + } + }, + // type parser output + parsedType: { + type: OBJECT, + additionalProperties: true + } + } +}; + +// enumeration properties +var ENUM_PROPERTY_SCHEMA = exports.ENUM_PROPERTY_SCHEMA = { + type: OBJECT, + additionalProperties: false, + properties: { + comment: { + type: STRING + }, + defaultvalue: { + type: STRING_OPTIONAL, + optional: true + }, + description: { + type: STRING_OPTIONAL, + optional: true + }, + kind: { + type: STRING, + // TODO: get this from a real enum somewhere + enum: ['member'] + }, + longname: { + type: STRING + }, + memberof: { + type: STRING, + optional: true + }, + meta: META_SCHEMA, + name: { + type: STRING + }, + // is this member nullable? (derived from the type expression) + nullable: { + type: BOOLEAN_OPTIONAL + }, + // is this member optional? (derived from the type expression) + optional: { + type: BOOLEAN_OPTIONAL + }, + scope: { + type: STRING, + // TODO: get this from a real enum somewhere + enum: ['static'] + }, + type: TYPE_PROPERTY_SCHEMA, + // can this member be provided more than once? (derived from the type expression) + variable: { + type: BOOLEAN_OPTIONAL + } + } +}; + +// function parameter, or object property defined with @property tag +var PARAM_SCHEMA = exports.PARAM_SCHEMA = { + type: OBJECT, + additionalProperties: false, + properties: { + // what is the default value for this parameter? + defaultvalue: { + type: STRING_OPTIONAL, + optional: true + }, + // a description of the parameter + description: { + type: STRING_OPTIONAL, + optional: true + }, + // what name does this parameter have within the function? + name: { + type: STRING + }, + // can the value for this parameter be null? + nullable: { + type: BOOLEAN_OPTIONAL, + optional: true + }, + // is a value for this parameter optional? + optional: { + type: BOOLEAN_OPTIONAL, + optional: true + }, + // what are the types of value expected for this parameter? + type: TYPE_PROPERTY_SCHEMA, + // can this parameter be repeated? + variable: { + type: BOOLEAN_OPTIONAL, + optional: true + } + } +}; + +var DOCLET_SCHEMA = exports.DOCLET_SCHEMA = { + type: OBJECT, + additionalProperties: false, + properties: { + // what access privileges are allowed + access: { + type: STRING, + optional: true, + // TODO: define this as an enumeration elsewhere + enum: [ + 'private', + 'protected' + ] + }, + alias: { + type: STRING, + optional: true + }, + augments: { + type: ARRAY, + optional: true, + uniqueItems: true, + items: { + type: STRING + } + }, + author: { + type: ARRAY, + optional: true, + items: { + type: STRING + } + }, + borrowed: { + type: ARRAY, + optional: true, + uniqueItems: true, + items: { + type: OBJECT, + additionalProperties: false, + properties: { + // name of the target + as: { + type: STRING, + optional: true + }, + // name of the source + from: { + type: STRING + } + } + } + }, + // a description of the class that this constructor belongs to + classdesc: { + type: STRING, + optional: true + }, + comment: { + type: STRING + }, + copyright: { + type: STRING, + optional: true + }, + defaultvalue: { + optional: true + }, + defaultvaluetype: { + type: STRING, + optional: true, + enum: [OBJECT, ARRAY] + }, + // is usage of this symbol deprecated? + deprecated: { + type: [STRING, BOOLEAN], + optional: true + }, + // a description + description: { + type: STRING_OPTIONAL, + optional: true + }, + // something else to consider + examples: { + type: ARRAY, + optional: true, + items: { + type: STRING + } + }, + exceptions: { + type: ARRAY, + optional: true, + items: PARAM_SCHEMA + }, + // the path to another constructor + extends: { + type: ARRAY, + optional: true, + uniqueItems: true, + items: { + type: STRING + } + }, + // the path to another doc object + fires: { + type: ARRAY, + optional: true, + uniqueItems: true, + items: { + type: STRING, + pattern: EVENT_REGEXP + } + }, + forceMemberof: { + type: BOOLEAN_OPTIONAL, + optional: true + }, + ignore: { + type: BOOLEAN, + optional: true + }, + implementations: { + type: ARRAY, + optional: true, + items: { + type: STRING + } + }, + implements: { + type: ARRAY, + optional: true, + items: { + type: STRING + } + }, + inherited: { + type: BOOLEAN, + optional: true + }, + inherits: { + type: STRING, + optional: true, + dependency: { + inherited: true + } + }, + isEnum: { + type: BOOLEAN, + optional: true + }, + // what kind of symbol is this? + kind: { + type: STRING, + // TODO: define this as an enumeration elsewhere + enum: [ + 'class', + 'constant', + 'event', + 'external', + 'file', + 'function', + 'interface', + 'member', + 'mixin', + 'module', + 'namespace', + 'package', + 'param', + 'typedef' + ] + }, + license: { + type: STRING, + optional: true + }, + listens: { + type: ARRAY, + optional: true, + uniqueItems: true, + items: { + type: STRING, + pattern: EVENT_REGEXP + } + }, + longname: { + type: STRING + }, + // probably a leading substring of the path + memberof: { + type: STRING, + optional: true + }, + // information about this doc + meta: META_SCHEMA, + mixes: { + type: ARRAY, + optional: true, + uniqueItems: true, + items: { + type: STRING + } + }, + // probably a trailing substring of the path + name: { + type: STRING + }, + // is this member nullable? (derived from the type expression) + nullable: { + type: BOOLEAN_OPTIONAL + }, + // is this member optional? (derived from the type expression) + optional: { + type: BOOLEAN_OPTIONAL + }, + overrides: { + type: STRING, + optional: true + }, + // are there function parameters associated with this doc? + params: { + type: ARRAY, + optional: true, + uniqueItems: true, + items: PARAM_SCHEMA + }, + preserveName: { + type: BOOLEAN, + optional: true + }, + properties: { + type: ARRAY, + optional: true, + uniqueItems: true, + minItems: 1, + items: { + anyOf: [ENUM_PROPERTY_SCHEMA, PARAM_SCHEMA] + } + }, + readonly: { + type: BOOLEAN, + optional: true + }, + // the symbol being documented requires another symbol + requires: { + type: ARRAY, + optional: true, + uniqueItems: true, + minItems: 1, + items: { + type: STRING + } + }, + returns: { + type: ARRAY, + optional: true, + minItems: 1, + items: PARAM_SCHEMA + }, + // what sort of parent scope does this symbol have? + scope: { + type: STRING, + enum: [ + // TODO: make these an enumeration + 'global', + 'inner', + 'instance', + 'static' + ] + }, + // something else to consider + see: { + type: ARRAY, + optional: true, + minItems: 1, + items: { + type: STRING + } + }, + // at what previous version was this doc added? + since: { + type: STRING, + optional: true + }, + summary: { + type: STRING, + optional: true + }, + // arbitrary tags associated with this doc + tags: { + type: ARRAY, + optional: true, + minItems: 1, + items: { + type: OBJECT, + additionalProperties: false, + properties: { + originalTitle: { + type: STRING + }, + text: { + type: STRING, + optional: true + }, + title: { + type: STRING + }, + value: { + type: [STRING, OBJECT], + optional: true, + properties: PARAM_SCHEMA + } + } + } + }, + 'this': { + type: STRING, + optional: true + }, + todo: { + type: ARRAY, + optional: true, + minItems: 1, + items: { + type: STRING + } + }, + // extended tutorials + tutorials: { + type: ARRAY, + optional: true, + minItems: 1, + items: { + type: STRING + } + }, + // what type is the value that this doc is associated with, like `number` + type: TYPE_PROPERTY_SCHEMA, + undocumented: { + type: BOOLEAN, + optional: true + }, + // can this member be provided more than once? (derived from the type expression) + variable: { + type: BOOLEAN_OPTIONAL + }, + variation: { + type: STRING, + optional: true + }, + // what is the version of this doc + version: { + type: STRING, + optional: true + }, + // is a member left to be implemented during inheritance? + virtual: { + type: BOOLEAN, + optional: true + } + } +}; + +var CONTACT_INFO_SCHEMA = exports.CONTACT_INFO_SCHEMA = { + type: OBJECT, + additionalProperties: false, + properties: { + email: { + type: STRING, + optional: true + }, + name: { + type: STRING, + optional: true + }, + url: { + type: STRING, + optional: true, + format: 'uri' + } + } +}; + +var BUGS_SCHEMA = exports.BUGS_SCHEMA = { + type: OBJECT, + additionalProperties: false, + properties: { + email: { + type: STRING, + optional: true + }, + url: { + type: STRING, + optional: true, + format: 'uri' + } + } +}; + +var PACKAGE_SCHEMA = exports.PACKAGE_SCHEMA = { + type: OBJECT, + additionalProperties: false, + properties: { + author: { + anyOf: [STRING, CONTACT_INFO_SCHEMA], + optional: true + }, + bugs: { + anyOf: [STRING, BUGS_SCHEMA], + optional: true + }, + contributors: { + type: ARRAY, + optional: true, + minItems: 0, + items: { + anyOf: [STRING, CONTACT_INFO_SCHEMA] + } + }, + dependencies: { + type: OBJECT, + optional: true + }, + description: { + type: STRING, + optional: true + }, + devDependencies: { + type: OBJECT, + optional: true + }, + engines: { + type: OBJECT, + optional: true + }, + files: { + type: ARRAY, + uniqueItems: true, + minItems: 0, + items: { + type: STRING + } + }, + homepage: { + type: STRING, + optional: true, + format: 'uri' + }, + keywords: { + type: ARRAY, + optional: true, + minItems: 0, + items: { + type: STRING + } + }, + kind: { + type: STRING, + enum: ['package'] + }, + licenses: { + type: ARRAY, + optional: true, + minItems: 1, + items: { + type: OBJECT, + additionalProperties: false, + properties: { + type: { + type: STRING, + optional: true + }, + url: { + type: STRING, + optional: true, + format: 'uri' + } + } + } + }, + longname: { + type: STRING, + optional: true, + pattern: PACKAGE_REGEXP + }, + main: { + type: STRING, + optional: true + }, + name: { + type: STRING, + optional: true + }, + repository: { + type: OBJECT, + optional: true, + additionalProperties: false, + properties: { + type: { + type: STRING, + optional: true + }, + // we don't use `format: 'uri'` here because repo URLs are atypical + url: { + type: STRING, + optional: true + } + } + }, + version: { + type: STRING, + optional: true + } + } +}; + +var DOCLETS_SCHEMA = exports.DOCLETS_SCHEMA = { + type: ARRAY, + items: { + anyOf: [DOCLET_SCHEMA, PACKAGE_SCHEMA] + } +}; diff --git a/third_party/jsdoc/lib/jsdoc/src/astbuilder.js b/third_party/jsdoc/lib/jsdoc/src/astbuilder.js new file mode 100644 index 0000000000..504d6cdb7e --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/astbuilder.js @@ -0,0 +1,390 @@ +'use strict'; + +var esprima = require('esprima'); +var jsdoc = { + src: { + syntax: require('jsdoc/src/syntax'), + Walker: require('jsdoc/src/walker').Walker + }, + util: { + logger: require('jsdoc/util/logger') + } +}; +var Syntax = jsdoc.src.syntax.Syntax; + +// TODO: should set e.stopPropagation == true for consistency with Rhino, right? +var VISITOR_CONTINUE = true; +var VISITOR_STOP = false; + +// TODO: docs; empty array means any node type, otherwise only the node types in the array +var acceptsLeadingComments = (function() { + var accepts = {}; + + // these nodes always accept leading comments + var commentable = [ + Syntax.AssignmentExpression, + Syntax.CallExpression, + Syntax.FunctionDeclaration, + Syntax.FunctionExpression, + Syntax.MemberExpression, + Syntax.Property, + Syntax.TryStatement, + Syntax.VariableDeclaration, + Syntax.VariableDeclarator, + Syntax.WithStatement + ]; + for (var i = 0, l = commentable.length; i < l; i++) { + accepts[commentable[i]] = []; + } + + // these nodes accept leading comments if they have specific types of parent nodes + // like: function foo(/** @type {string} */ bar) {} + accepts[Syntax.Identifier] = [ + Syntax.CatchClause, + Syntax.FunctionDeclaration, + Syntax.FunctionExpression + ]; + // like: var Foo = Class.create(/** @lends Foo */{ // ... }) + accepts[Syntax.ObjectExpression] = [ + Syntax.CallExpression, + Syntax.Property, + Syntax.ReturnStatement + ]; + + return accepts; +})(); + +// TODO: docs +function canAcceptComment(node) { + var canAccept = false; + var spec = acceptsLeadingComments[node.type]; + + if (spec) { + // empty array means we don't care about the parent type + if (spec.length === 0) { + canAccept = true; + } + // we can accept the comment if the spec contains the type of the node's parent + else if (node.parent) { + canAccept = spec.indexOf(node.parent.type) !== -1; + } + } + + return canAccept; +} + +// TODO: docs +// check whether node1 is before node2 +function isBefore(beforeRange, afterRange) { + return beforeRange[1] <= afterRange[0]; +} + +// TODO: docs +function isWithin(innerRange, outerRange) { + return innerRange[0] >= outerRange[0] && innerRange[1] <= outerRange[1]; +} + +// TODO: docs +function isJsdocComment(comment) { + return comment && (comment.type === 'Block') && (comment.value[0] === '*'); +} + +/** + * Add the raw comment string to a block comment node. + * + * @private + * @param {!Object} comment - A comment node with `type` and `value` properties. + */ +function addRawComment(comment) { + comment.raw = comment.raw || ('/*' + comment.value + '*/'); + return comment; +} + +// TODO: docs +function scrubComments(comments) { + var comment; + + var scrubbed = []; + + for (var i = 0, l = comments.length; i < l; i++) { + comment = comments[i]; + if ( isJsdocComment(comment) ) { + scrubbed.push( addRawComment(comment) ); + } + } + + return scrubbed; +} + +// TODO: docs +var AstBuilder = exports.AstBuilder = function() {}; + +function parse(source, filename, esprimaOpts) { + var ast; + + try { + ast = esprima.parse(source, esprimaOpts); + } + catch (e) { + jsdoc.util.logger.error('Unable to parse %s: %s', filename, e.message); + } + + return ast; +} + +// TODO: docs +AstBuilder.prototype.build = function(source, filename) { + var ast; + + var esprimaOpts = { + comment: true, + loc: true, + range: true, + tokens: true + }; + + ast = parse(source, filename, esprimaOpts); + + if (ast) { + this._postProcess(filename, ast); + } + + return ast; +}; + +// TODO: docs +function atomSorter(a, b) { + var aRange = a.range; + var bRange = b.range; + var result = 0; + + // does a end before b starts? + if ( isBefore(aRange, bRange) ) { + result = -1; + } + // does a enclose b? + else if ( isWithin(bRange, aRange) ) { + result = -1; + } + // does a start before b? + else if (aRange[0] < bRange[0]) { + result = -1; + } + // are the ranges non-identical? if so, b must be first + else if ( aRange[0] !== bRange[0] || aRange[1] !== bRange[1] ) { + result = 1; + } + + return result; +} + +// TODO: docs +// TODO: export? +function CommentAttacher(comments, tokens) { + this._comments = comments || []; + this._tokens = tokens || []; + + this._tokenIndex = 0; + this._previousNodeEnd = 0; + this._astRoot = null; + this._strayComments = []; + + this._resetPendingComment() + ._resetCandidates(); +} + +// TODO: docs +CommentAttacher.prototype._resetPendingComment = function() { + this._pendingComment = null; + this._pendingCommentRange = null; + + return this; +}; + +// TODO: docs +CommentAttacher.prototype._resetCandidates = function() { + this._candidates = []; + + return this; +}; + +// TODO: docs +CommentAttacher.prototype._nextComment = function() { + return this._comments[0] || null; +}; + +// TODO: docs +CommentAttacher.prototype._nextToken = function() { + return this._tokens[this._tokenIndex] || null; +}; + +// TODO: docs +// find the index of the atom whose end position is closest to (but not after) the specified +// position +CommentAttacher.prototype._nextIndexBefore = function(startIndex, atoms, position) { + var atom; + + var newIndex = startIndex; + + for (var i = newIndex, l = atoms.length; i < l; i++) { + atom = atoms[i]; + + if (atom.range[1] > position) { + break; + } + else { + newIndex = i; + } + } + + return newIndex; +}; + +// TODO: docs +CommentAttacher.prototype._advanceTokenIndex = function(node) { + var position = node.range[0]; + + this._tokenIndex = this._nextIndexBefore(this._tokenIndex, this._tokens, position); + + return this; +}; + +// TODO: docs +CommentAttacher.prototype._fastForwardComments = function(node) { + var position = node.range[0]; + var commentIndex = this._nextIndexBefore(0, this._comments, position); + + // all comments before the node (except the last one) are considered stray comments + if (commentIndex > 0) { + this._strayComments = this._strayComments.concat( this._comments.splice(0, + commentIndex) ); + } +}; + +// TODO: docs +CommentAttacher.prototype._attachPendingComment = function() { + var target; + + if (!this._pendingComment) { + return this; + } + + if (this._candidates.length > 0) { + target = this._candidates[this._candidates.length - 1]; + target.leadingComments = target.leadingComments || []; + target.leadingComments.push(this._pendingComment); + } + else { + this._strayComments.push(this._pendingComment); + } + + this._resetPendingComment() + ._resetCandidates(); + + return this; +}; + +// TODO: docs +CommentAttacher.prototype._isEligible = function(node) { + var atoms; + var token; + + var isEligible = false; + + var comment = this._nextComment(); + if (comment) { + atoms = [node, comment]; + token = this._nextToken(); + if (token) { + atoms.push(token); + } + + atoms.sort(atomSorter); + + // a candidate node must immediately follow the comment + if (atoms.indexOf(node) === atoms.indexOf(comment) + 1) { + isEligible = true; + } + } + + return isEligible; +}; + +// TODO: docs +// TODO: do we ever get multiple candidate nodes? +CommentAttacher.prototype.visit = function(node) { + var isEligible; + + // bail if we're out of comments + if ( !this._nextComment() ) { + return VISITOR_STOP; + } + + // set the AST root if necessary + this._astRoot = this._astRoot || node; + + // move to the next token, and fast-forward past comments that can no longer be attached + this._advanceTokenIndex(node); + this._fastForwardComments(node); + // now we can check whether the current node is in the right position to accept the next comment + isEligible = this._isEligible(node); + + // attach the pending comment, if there is one + this._attachPendingComment(); + + // okay, now that we've done all that bookkeeping, we can check whether the current node accepts + // leading comments and add it to the candidate list if needed + if ( isEligible && canAcceptComment(node) ) { + // make sure we don't go past the end of the outermost target node + if (!this._pendingCommentRange) { + this._pendingCommentRange = node.range.slice(0); + } + this._candidates.push(node); + + // we have a candidate node, so pend the current comment if necessary + this._pendingComment = this._pendingComment || this._comments.splice(0, 1)[0]; + } + + return VISITOR_CONTINUE; +}; + +// TODO: docs +CommentAttacher.prototype.finish = function() { + // any remaining comments are stray comments + this._strayComments = this._strayComments.concat(this._comments); + + // deal with the pending comment, if there is one + this._attachPendingComment(); + + // attach stray comments to the AST root + if (this._strayComments.length) { + this._astRoot.trailingComments = this._strayComments.slice(0); + } +}; + +// TODO: docs +// TODO: refactor to make this extensible +/** + * @param {string} filename - The full path to the source file. + * @param {Object} ast - An abstract syntax tree that conforms to the Mozilla Parser API. + */ +AstBuilder.prototype._postProcess = function(filename, ast) { + var attachComments = !!ast.comments && !!ast.comments.length; + var commentAttacher = new CommentAttacher( scrubComments(ast.comments.slice(0)), ast.tokens ); + var visitor = { + visit: function(node) { + if (attachComments) { + attachComments = commentAttacher.visit(node); + } + } + }; + + var walker = new jsdoc.src.Walker(); + walker.recurse(filename, ast, visitor); + + commentAttacher.finish(); + + // remove the comment/token arrays; we no longer need then + ast.comments = []; + ast.tokens = []; +}; diff --git a/third_party/jsdoc/lib/jsdoc/src/astnode.js b/third_party/jsdoc/lib/jsdoc/src/astnode.js new file mode 100644 index 0000000000..3eac7d52d8 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/astnode.js @@ -0,0 +1,299 @@ +// TODO: docs +'use strict'; + +var Syntax = require('jsdoc/src/syntax').Syntax; +var util = require('util'); + +// Counter for generating unique node IDs. +var uid = 100000000; + +/** + * Check whether an AST node represents a function. + * + * @param {Object} node - The AST node to check. + * @return {boolean} Set to `true` if the node is a function or `false` in all other cases. + */ +var isFunction = exports.isFunction = function(node) { + return node.type === Syntax.FunctionDeclaration || node.type === Syntax.FunctionExpression; +}; + +/** + * Check whether an AST node creates a new scope. + * + * @param {Object} node - The AST node to check. + * @return {Boolean} Set to `true` if the node creates a new scope, or `false` in all other cases. + */ +var isScope = exports.isScope = function(node) { + // TODO: handle blocks with "let" declarations + return !!node && typeof node === 'object' && ( node.type === Syntax.CatchClause || + isFunction(node) ); +}; + +// TODO: docs +var addNodeProperties = exports.addNodeProperties = function(node) { + var debugEnabled = !!global.env.opts.debug; + var newProperties = {}; + + if (!node || typeof node !== 'object') { + return null; + } + + if (!node.nodeId) { + newProperties.nodeId = { + value: 'astnode' + uid++, + enumerable: debugEnabled + }; + } + + if (!node.parent && node.parent !== null) { + newProperties.parent = { + // `null` means 'no parent', so use `undefined` for now + value: undefined, + writable: true + }; + } + + if (!node.enclosingScope && node.enclosingScope !== null) { + newProperties.enclosingScope = { + // `null` means 'no enclosing scope', so use `undefined` for now + value: undefined, + writable: true + }; + } + + if (debugEnabled && !node.parentId) { + newProperties.parentId = { + enumerable: true, + get: function() { + return this.parent ? this.parent.nodeId : null; + } + }; + } + + if (debugEnabled && !node.enclosingScopeId) { + newProperties.enclosingScopeId = { + enumerable: true, + get: function() { + return this.enclosingScope ? this.enclosingScope.nodeId : null; + } + }; + } + + Object.defineProperties(node, newProperties); + + return node; +}; + +// TODO: docs +var nodeToString = exports.nodeToString = function(node) { + var tempObject; + + var str = ''; + + switch (node.type) { + case Syntax.ArrayExpression: + tempObject = []; + node.elements.forEach(function(el, i) { + // handle sparse arrays. use `null` to represent missing values, consistent with + // JSON.stringify([,]). + if (!el) { + tempObject[i] = null; + } + // preserve literal values so that the JSON form shows the correct type + else if (el.type === Syntax.Literal) { + tempObject[i] = el.value; + } + else { + tempObject[i] = nodeToString(el); + } + }); + + str = JSON.stringify(tempObject); + break; + + case Syntax.AssignmentExpression: + str = nodeToString(node.left); + break; + + case Syntax.FunctionDeclaration: + // falls through + + case Syntax.FunctionExpression: + str = 'function'; + break; + + case Syntax.Identifier: + str = node.name; + break; + + case Syntax.Literal: + str = String(node.value); + break; + + case Syntax.MemberExpression: + // could be computed (like foo['bar']) or not (like foo.bar) + str = nodeToString(node.object); + if (node.computed) { + str += util.format('[%s]', node.property.raw); + } + else { + str += '.' + nodeToString(node.property); + } + break; + + case Syntax.ObjectExpression: + tempObject = {}; + node.properties.forEach(function(prop) { + var key = prop.key.name; + // preserve literal values so that the JSON form shows the correct type + if (prop.value.type === Syntax.Literal) { + tempObject[key] = prop.value.value; + } + else { + tempObject[key] = nodeToString(prop); + } + }); + + str = JSON.stringify(tempObject); + break; + + case Syntax.ThisExpression: + str = 'this'; + break; + + case Syntax.UnaryExpression: + // like -1. in theory, operator can be prefix or postfix. in practice, any value with a + // valid postfix operator (such as -- or ++) is not a UnaryExpression. + str = nodeToString(node.argument); + + // workaround for https://code.google.com/p/esprima/issues/detail?id=526 + if (node.prefix === true || node.prefix === undefined) { + str = node.operator + str; + } + else { + // this shouldn't happen + throw new Error( util.format('Found a UnaryExpression with a postfix operator: %j', + node) ); + } + break; + + case Syntax.VariableDeclarator: + str = nodeToString(node.id); + break; + + default: + str = ''; + } + + return str; +}; + +// TODO: docs +var getParamNames = exports.getParamNames = function(node) { + if (!node || !node.params) { + return []; + } + + return node.params.map(function(param) { + return nodeToString(param); + }); +}; + +// TODO: docs +var isAccessor = exports.isAccessor = function(node) { + return !!node && typeof node === 'object' && node.type === Syntax.Property && + (node.kind === 'get' || node.kind === 'set'); +}; + +// TODO: docs +var isAssignment = exports.isAssignment = function(node) { + return !!node && typeof node === 'object' && (node.type === Syntax.AssignmentExpression || + node.type === Syntax.VariableDeclarator); +}; + +// TODO: docs +/** + * Retrieve information about the node, including its name and type. + */ +var getInfo = exports.getInfo = function(node) { + var info = {}; + + switch (node.type) { + // like: "foo = 'bar'" (after declaring foo) + // like: "MyClass.prototype.myMethod = function() {}" (after declaring MyClass) + case Syntax.AssignmentExpression: + info.node = node.right; + info.name = nodeToString(node.left); + info.type = info.node.type; + info.value = nodeToString(info.node); + // if the assigned value is a function, we need to capture the parameter names here + info.paramnames = getParamNames(node.right); + break; + + // like: "function foo() {}" + case Syntax.FunctionDeclaration: + info.node = node; + info.name = nodeToString(node.id); + info.type = info.node.type; + info.paramnames = getParamNames(node); + break; + + // like the function in: "var foo = function() {}" + case Syntax.FunctionExpression: + info.node = node; + // TODO: should we add a name for, e.g., "var foo = function bar() {}"? + info.name = ''; + info.type = info.node.type; + info.paramnames = getParamNames(node); + break; + + // like the param "bar" in: "function foo(bar) {}" + case Syntax.Identifier: + info.node = node; + info.name = nodeToString(info.node); + info.type = info.node.type; + break; + + // like "a.b.c" + case Syntax.MemberExpression: + info.node = node; + info.name = nodeToString(info.node); + info.type = info.node.type; + break; + + // like "a: 0" in "var foo = {a: 0}" + case Syntax.Property: + info.node = node.value; + info.name = nodeToString(node.key); + info.value = nodeToString(info.node); + + if ( isAccessor(node) ) { + info.type = nodeToString(info.node); + info.paramnames = getParamNames(info.node); + } + else { + info.type = info.node.type; + } + + break; + + // like: "var i = 0" (has init property) + // like: "var i" (no init property) + case Syntax.VariableDeclarator: + info.node = node.init || node.id; + info.name = node.id.name; + + if (node.init) { + info.type = info.node.type; + info.value = nodeToString(info.node); + } + + break; + + default: + info.node = node; + info.type = info.node.type; + } + + return info; +}; diff --git a/third_party/jsdoc/lib/jsdoc/src/filter.js b/third_party/jsdoc/lib/jsdoc/src/filter.js new file mode 100644 index 0000000000..135c4c4f40 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/filter.js @@ -0,0 +1,67 @@ +/*global env: true */ +/** + @module jsdoc/src/filter + + @author Michael Mathews + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var path = require('jsdoc/path'); + +var pwd = env.pwd; + +function makeRegExp(config) { + var regExp = null; + + if (config) { + regExp = (typeof config === 'string') ? new RegExp(config) : config; + } + + return regExp; +} + +/** + @constructor + @param {object} opts + @param {string[]} opts.exclude - Specific files to exclude. + @param {string|RegExp} opts.includePattern + @param {string|RegExp} opts.excludePattern + */ +exports.Filter = function(opts) { + this.exclude = opts.exclude && Array.isArray(opts.exclude) ? + opts.exclude.map(function($) { + return path.resolve(pwd, $); + }) : + null; + this.includePattern = makeRegExp(opts.includePattern); + this.excludePattern = makeRegExp(opts.excludePattern); +}; + +/** + @param {string} filepath - The filepath to check. + @returns {boolean} Should the given file be included? + */ +exports.Filter.prototype.isIncluded = function(filepath) { + var included = true; + + filepath = path.resolve(pwd, filepath); + + if ( this.includePattern && !this.includePattern.test(filepath) ) { + included = false; + } + + if ( this.excludePattern && this.excludePattern.test(filepath) ) { + included = false; + } + + if (this.exclude) { + this.exclude.forEach(function(exclude) { + if ( filepath.indexOf(exclude) === 0 ) { + included = false; + } + }); + } + + return included; +}; diff --git a/third_party/jsdoc/lib/jsdoc/src/handlers.js b/third_party/jsdoc/lib/jsdoc/src/handlers.js new file mode 100644 index 0000000000..6773e9b4ec --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/handlers.js @@ -0,0 +1,325 @@ +/** + * @module jsdoc/src/handlers + */ +'use strict'; + +var escape = require('escape-string-regexp'); +var jsdoc = { + doclet: require('jsdoc/doclet'), + name: require('jsdoc/name'), + util: { + logger: require('jsdoc/util/logger') + } +}; +var util = require('util'); + +var currentModule = null; +var SCOPE_NAMES = jsdoc.name.SCOPE.NAMES; +var SCOPE_PUNC = jsdoc.name.SCOPE.PUNC; +var unresolvedName = /^((?:module.)?exports|this)(\.|$)/; + +function CurrentModule(doclet) { + this.doclet = doclet; + this.longname = doclet.longname; + this.originalName = doclet.meta.code.name || ''; +} + +function filterByLongname(doclet) { + // you can't document prototypes + if ( /#$/.test(doclet.longname) ) { + return true; + } + + return false; +} + +function createDoclet(comment, e) { + var doclet; + var err; + + try { + doclet = new jsdoc.doclet.Doclet(comment, e); + } + catch (error) { + err = new Error( util.format('cannot create a doclet for the comment "%s": %s', + comment.replace(/[\r\n]/g, ''), error.message) ); + jsdoc.util.logger.error(err); + doclet = new jsdoc.doclet.Doclet('', e); + } + + return doclet; +} + +/** + * Create a doclet for a `symbolFound` event. The doclet represents an actual symbol that is defined + * in the code. + * + * Here's why this function is useful. A JSDoc comment can define a symbol name by including: + * + * + A `@name` tag + * + Another tag that accepts a name, such as `@function` + * + * When the JSDoc comment defines a symbol name, we treat it as a "virtual comment" for a symbol + * that isn't actually present in the code. And if a virtual comment is attached to a symbol, it's + * possible that the comment and symbol have nothing to do with one another. + * + * To handle this case, this function checks the new doclet to see if we've already added a name + * property by parsing the JSDoc comment. If so, this method creates a replacement doclet that + * ignores the attached JSDoc comment and only looks at the code. + * + * @private + */ +function createSymbolDoclet(comment, e) { + var doclet = createDoclet(comment, e); + + if (doclet.name) { + // try again, without the comment + e.comment = '@undocumented'; + doclet = createDoclet(e.comment, e); + } + + return doclet; +} + +function setCurrentModule(doclet) { + if (doclet.kind === 'module') { + currentModule = new CurrentModule(doclet); + } +} + +function setModuleScopeMemberOf(doclet) { + // handle module symbols that are _not_ assigned to module.exports + if (currentModule && currentModule.longname !== doclet.name) { + // if we don't already know the scope, it must be an inner member + if (!doclet.scope) { + doclet.addTag('inner'); + } + + // if the doclet isn't a memberof anything yet, and it's not a global, it must be a memberof + // the current module + if (!doclet.memberof && doclet.scope !== SCOPE_NAMES.GLOBAL) { + doclet.addTag('memberof', currentModule.longname); + } + } +} + +function setDefaultScope(doclet) { + // module doclets don't get a default scope + if (!doclet.scope && doclet.kind !== 'module') { + doclet.setScope(SCOPE_NAMES.GLOBAL); + } +} + +function addDoclet(parser, newDoclet) { + var e; + if (newDoclet) { + setCurrentModule(newDoclet); + e = { doclet: newDoclet }; + parser.emit('newDoclet', e); + + if ( !e.defaultPrevented && !filterByLongname(e.doclet) ) { + parser.addResult(e.doclet); + } + } +} + +function processAlias(parser, doclet, astNode) { + var memberofName; + + if (doclet.alias === '{@thisClass}') { + memberofName = parser.resolveThis(astNode); + + // "class" refers to the owner of the prototype, not the prototype itself + if ( /^(.+?)(\.prototype|#)$/.test(memberofName) ) { + memberofName = RegExp.$1; + } + doclet.alias = memberofName; + } + + doclet.addTag('name', doclet.alias); + doclet.postProcess(); +} + +// TODO: separate code that resolves `this` from code that resolves the module object +function findSymbolMemberof(parser, doclet, astNode, nameStartsWith, trailingPunc) { + var memberof = ''; + var nameAndPunc = nameStartsWith + (trailingPunc || ''); + var scopePunc = ''; + + // remove stuff that indicates module membership (but don't touch the name `module.exports`, + // which identifies the module object itself) + if (doclet.name !== 'module.exports') { + doclet.name = doclet.name.replace(nameAndPunc, ''); + } + + // like `bar` in: + // exports.bar = 1; + // module.exports.bar = 1; + // module.exports = MyModuleObject; MyModuleObject.bar = 1; + if (nameStartsWith !== 'this' && currentModule && doclet.name !== 'module.exports') { + memberof = currentModule.longname; + scopePunc = SCOPE_PUNC.STATIC; + } + // like: module.exports = 1; + else if (doclet.name === 'module.exports' && currentModule) { + doclet.addTag('name', currentModule.longname); + doclet.postProcess(); + } + else { + memberof = parser.resolveThis(astNode); + + // like the following at the top level of a module: + // this.foo = 1; + if (nameStartsWith === 'this' && currentModule && !memberof) { + memberof = currentModule.longname; + scopePunc = SCOPE_PUNC.STATIC; + } + else { + scopePunc = SCOPE_PUNC.INSTANCE; + } + } + + return { + memberof: memberof, + scopePunc: scopePunc + }; +} + +function addSymbolMemberof(parser, doclet, astNode) { + var basename; + var memberof; + var memberofInfo; + var moduleOriginalName = ''; + var resolveTargetRegExp; + var scopePunc; + var unresolved; + + if (!astNode) { + return; + } + + // check to see if the doclet name is an unresolved reference to the module object, or to `this` + // TODO: handle cases where the module object is shadowed in the current scope + if (currentModule) { + moduleOriginalName = '|' + currentModule.originalName; + } + resolveTargetRegExp = new RegExp('^((?:module.)?exports|this' + moduleOriginalName + + ')(\\.|$)'); + unresolved = resolveTargetRegExp.exec(doclet.name); + + if (unresolved) { + memberofInfo = findSymbolMemberof(parser, doclet, astNode, unresolved[1], unresolved[2]); + memberof = memberofInfo.memberof; + scopePunc = memberofInfo.scopePunc; + + if (memberof) { + doclet.name = doclet.name ? + memberof + scopePunc + doclet.name : + memberof; + } + } + else { + memberofInfo = parser.astnodeToMemberof(astNode); + if ( Array.isArray(memberofInfo) ) { + basename = memberofInfo[1]; + memberof = memberofInfo[0]; + } + else { + memberof = memberofInfo; + } + } + + // if we found a memberof name, apply it to the doclet + if (memberof) { + doclet.addTag('memberof', memberof); + if (basename) { + doclet.name = (doclet.name || '') + .replace(new RegExp('^' + escape(basename) + '.'), ''); + } + } + // otherwise, add the defaults for a module (if we're currently in a module) + else { + setModuleScopeMemberOf(doclet); + } +} + +function newSymbolDoclet(parser, docletSrc, e) { + var memberofName = null; + var newDoclet = createSymbolDoclet(docletSrc, e); + + // if there's an alias, use that as the symbol name + if (newDoclet.alias) { + processAlias(parser, newDoclet, e.astnode); + } + // otherwise, get the symbol name from the code + else if (e.code && e.code.name) { + newDoclet.addTag('name', e.code.name); + if (!newDoclet.memberof) { + addSymbolMemberof(parser, newDoclet, e.astnode); + } + + newDoclet.postProcess(); + } + else { + return false; + } + + // set the scope to global unless any of the following are true: + // a) the doclet is a memberof something + // b) the doclet represents a module + // c) we're in a module that exports only this symbol + if ( !newDoclet.memberof && newDoclet.kind !== 'module' && + (!currentModule || currentModule.longname !== newDoclet.name) ) { + newDoclet.scope = SCOPE_NAMES.GLOBAL; + } + + addDoclet(parser, newDoclet); + e.doclet = newDoclet; +} + +/** + * Attach these event handlers to a particular instance of a parser. + * @param parser + */ +exports.attachTo = function(parser) { + // Handle JSDoc "virtual comments" that include one of the following: + // + A `@name` tag + // + Another tag that accepts a name, such as `@function` + parser.on('jsdocCommentFound', function(e) { + var comments = e.comment.split(/@also\b/g); + var newDoclet; + + for (var i = 0, l = comments.length; i < l; i++) { + newDoclet = createDoclet(comments[i], e); + + // we're only interested in virtual comments here + if (!newDoclet.name) { + continue; + } + + // add the default scope/memberof for a module (if we're in a module) + setModuleScopeMemberOf(newDoclet); + newDoclet.postProcess(); + + // if we _still_ don't have a scope, use the default + setDefaultScope(newDoclet); + + addDoclet(parser, newDoclet); + + e.doclet = newDoclet; + } + }); + + // Handle named symbols in the code. May or may not have a JSDoc comment attached. + parser.on('symbolFound', function(e) { + var comments = e.comment.split(/@also\b/g); + + for (var i = 0, l = comments.length; i < l; i++) { + newSymbolDoclet(parser, comments[i], e); + } + }); + + parser.on('fileComplete', function(e) { + currentModule = null; + }); +}; diff --git a/third_party/jsdoc/lib/jsdoc/src/parser.js b/third_party/jsdoc/lib/jsdoc/src/parser.js new file mode 100644 index 0000000000..aa357a1228 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/parser.js @@ -0,0 +1,519 @@ +/*global env, Packages */ +/*eslint no-script-url:0 */ +/** + * @module jsdoc/src/parser + */ +'use strict'; + +var events = require('events'); +var fs = require('jsdoc/fs'); +var jsdoc = { + doclet: require('jsdoc/doclet'), + name: require('jsdoc/name'), + src: { + astnode: require('jsdoc/src/astnode'), + syntax: require('jsdoc/src/syntax') + }, + util: { + doop: require('jsdoc/util/doop'), + runtime: require('jsdoc/util/runtime') + } +}; +var logger = require('jsdoc/util/logger'); +var path = require('jsdoc/path'); +var util = require('util'); + +var hasOwnProp = Object.prototype.hasOwnProperty; +var Syntax = jsdoc.src.syntax.Syntax; + +// Prefix for JavaScript strings that were provided in lieu of a filename. +var SCHEMA = 'javascript:'; +// TODO: docs +var PARSERS = exports.PARSERS = { + esprima: 'jsdoc/src/parser', + rhino: 'rhino/jsdoc/src/parser' +}; + +// TODO: docs +exports.createParser = function(type) { + var modulePath; + + if (!type) { + type = jsdoc.util.runtime.isRhino() ? 'rhino' : 'esprima'; + } + + if (PARSERS[type]) { + modulePath = PARSERS[type]; + } + else { + modulePath = path.join( path.getResourcePath(path.dirname(type)), path.basename(type) ); + } + + try { + return new ( require(modulePath) ).Parser(); + } + catch (e) { + logger.fatal('Unable to create the parser type "' + type + '": ' + e); + } +}; + +// TODO: docs +/** + * @class + * @alias module:jsdoc/src/parser.Parser + * @mixes module:events.EventEmitter + * + * @example Create a new parser. + * var jsdocParser = new (require('jsdoc/src/parser').Parser)(); + */ +var Parser = exports.Parser = function(builderInstance, visitorInstance, walkerInstance) { + this.clear(); + + this._astBuilder = builderInstance || new (require('jsdoc/src/astbuilder')).AstBuilder(); + this._visitor = visitorInstance || new (require('jsdoc/src/visitor')).Visitor(this); + this._walker = walkerInstance || new (require('jsdoc/src/walker')).Walker(); + + Object.defineProperties(this, { + astBuilder: { + get: function() { + return this._astBuilder; + } + }, + visitor: { + get: function() { + return this._visitor; + } + }, + walker: { + get: function() { + return this._walker; + } + } + }); +}; +util.inherits(Parser, events.EventEmitter); + +// TODO: docs +Parser.prototype.clear = function() { + this._resultBuffer = []; + this.refs = {}; + this.refs[jsdoc.name.LONGNAMES.GLOBAL] = {}; + this.refs[jsdoc.name.LONGNAMES.GLOBAL].meta = {}; +}; + +// TODO: update docs +/** + * Parse the given source files for JSDoc comments. + * @param {Array.} sourceFiles An array of filepaths to the JavaScript sources. + * @param {string} [encoding=utf8] + * + * @fires module:jsdoc/src/parser.Parser.parseBegin + * @fires module:jsdoc/src/parser.Parser.fileBegin + * @fires module:jsdoc/src/parser.Parser.jsdocCommentFound + * @fires module:jsdoc/src/parser.Parser.symbolFound + * @fires module:jsdoc/src/parser.Parser.newDoclet + * @fires module:jsdoc/src/parser.Parser.fileComplete + * @fires module:jsdoc/src/parser.Parser.parseComplete + * + * @example Parse two source files. + * var myFiles = ['file1.js', 'file2.js']; + * var docs = jsdocParser.parse(myFiles); + */ +Parser.prototype.parse = function(sourceFiles, encoding) { + encoding = encoding || env.conf.encoding || 'utf8'; + + var filename = ''; + var sourceCode = ''; + var parsedFiles = []; + var e = {}; + + if (typeof sourceFiles === 'string') { + sourceFiles = [sourceFiles]; + } + + e.sourcefiles = sourceFiles; + logger.debug('Parsing source files: %j', sourceFiles); + + this.emit('parseBegin', e); + + for (var i = 0, l = sourceFiles.length; i < l; i++) { + sourceCode = ''; + + if (sourceFiles[i].indexOf(SCHEMA) === 0) { + sourceCode = sourceFiles[i].substr(SCHEMA.length); + filename = '[[string' + i + ']]'; + } + else { + filename = sourceFiles[i]; + try { + sourceCode = fs.readFileSync(filename, encoding); + } + catch(e) { + logger.error('Unable to read and parse the source file %s: %s', filename, e); + } + } + + if (sourceCode.length) { + this._parseSourceCode(sourceCode, filename); + parsedFiles.push(filename); + } + } + + this.emit('parseComplete', { + sourcefiles: parsedFiles, + doclets: this._resultBuffer + }); + logger.debug('Finished parsing source files.'); + + return this._resultBuffer; +}; + +// TODO: docs +Parser.prototype.fireProcessingComplete = function(doclets) { + this.emit('processingComplete', { doclets: doclets }); +}; + +// TODO: docs +Parser.prototype.results = function() { + return this._resultBuffer; +}; + +// TODO: update docs +/** + * @param {Object} o The parse result to add to the result buffer. + */ +Parser.prototype.addResult = function(o) { + this._resultBuffer.push(o); +}; + +// TODO: docs +Parser.prototype.addAstNodeVisitor = function(visitor) { + this._visitor.addAstNodeVisitor(visitor); +}; + +// TODO: docs +Parser.prototype.getAstNodeVisitors = function() { + return this._visitor.getAstNodeVisitors(); +}; + +// TODO: docs +function pretreat(code) { + return code + // comment out hashbang at the top of the file, like: #!/usr/bin/env node + .replace(/^(\#\![\S \t]+\r?\n)/, '// $1') + + // to support code minifiers that preserve /*! comments, treat /*!* as equivalent to /** + .replace(/\/\*\!\*/g, '/**') + // merge adjacent doclets + .replace(/\*\/\/\*\*+/g, '@also'); +} + +/** @private */ +Parser.prototype._parseSourceCode = function(sourceCode, sourceName) { + var ast; + var globalScope; + + var e = { + filename: sourceName + }; + + this.emit('fileBegin', e); + logger.printInfo('Parsing %s ...', sourceName); + + if (!e.defaultPrevented) { + e = { + filename: sourceName, + source: sourceCode + }; + this.emit('beforeParse', e); + sourceCode = e.source; + sourceName = e.filename; + + sourceCode = pretreat(e.source); + + ast = this._astBuilder.build(sourceCode, sourceName); + if (ast) { + this._walker.recurse(sourceName, ast, this._visitor); + } + } + + this.emit('fileComplete', e); + logger.info('complete.'); +}; + +// TODO: docs +Parser.prototype.addDocletRef = function(e) { + var node; + + if (e && e.code && e.code.node) { + node = e.code.node; + // allow lookup from value => doclet + if (e.doclet) { + this.refs[node.nodeId] = e.doclet; + } + // keep references to undocumented anonymous functions, too, as they might have scoped vars + else if ( + (node.type === Syntax.FunctionDeclaration || node.type === Syntax.FunctionExpression) && + !this.refs[node.nodeId] ) { + this.refs[node.nodeId] = { + longname: jsdoc.name.LONGNAMES.ANONYMOUS, + meta: { + code: e.code + } + }; + } + } +}; + +// TODO: docs +Parser.prototype._getDoclet = function(id) { + if ( hasOwnProp.call(this.refs, id) ) { + return this.refs[id]; + } + + return null; +}; + +// TODO: docs +/** + * @param {string} name - The symbol's longname. + * @return {string} The symbol's basename. + */ +Parser.prototype.getBasename = function(name) { + if (name !== undefined) { + return name.replace(/^([$a-z_][$a-z_0-9]*).*?$/i, '$1'); + } +}; + +// TODO: docs +function definedInScope(doclet, basename) { + return !!doclet && !!doclet.meta && !!doclet.meta.vars && !!basename && + hasOwnProp.call(doclet.meta.vars, basename); +} + +// TODO: docs +/** + * Given a node, determine what the node is a member of. + * @param {node} node + * @returns {string} The long name of the node that this is a member of. + */ +Parser.prototype.astnodeToMemberof = function(node) { + var basename; + var doclet; + var scope; + + var result = ''; + var type = node.type; + + if ( (type === Syntax.FunctionDeclaration || type === Syntax.FunctionExpression || + type === Syntax.VariableDeclarator) && node.enclosingScope ) { + doclet = this._getDoclet(node.enclosingScope.nodeId); + + if (!doclet) { + result = jsdoc.name.LONGNAMES.ANONYMOUS + jsdoc.name.SCOPE.PUNC.INNER; + } + else { + result = (doclet.longname || doclet.name) + jsdoc.name.SCOPE.PUNC.INNER; + } + } + else { + // check local references for aliases + scope = node; + basename = this.getBasename( jsdoc.src.astnode.nodeToString(node) ); + + // walk up the scope chain until we find the scope in which the node is defined + while (scope.enclosingScope) { + doclet = this._getDoclet(scope.enclosingScope.nodeId); + if ( doclet && definedInScope(doclet, basename) ) { + result = [doclet.meta.vars[basename], basename]; + break; + } + else { + // move up + scope = scope.enclosingScope; + } + } + + // do we know that it's a global? + doclet = this.refs[jsdoc.name.LONGNAMES.GLOBAL]; + if ( doclet && definedInScope(doclet, basename) ) { + result = [doclet.meta.vars[basename], basename]; + } + + // have we seen the node's parent? if so, use that + else if (node.parent) { + doclet = this._getDoclet(node.parent.nodeId); + + // set the result if we found a doclet. (if we didn't, the AST node may describe a + // global symbol.) + if (doclet) { + result = doclet.longname || doclet.name; + } + } + } + + return result; +}; + +// TODO: docs +/** + * Resolve what "this" refers to relative to a node. + * @param {node} node - The "this" node + * @returns {string} The longname of the enclosing node. + */ +Parser.prototype.resolveThis = function(node) { + var doclet; + var result; + + // In general, if there's an enclosing scope, we use the enclosing scope to resolve `this`. + // For object properties, we use the node's parent (the object) instead. + if (node.type !== Syntax.Property && node.enclosingScope) { + doclet = this._getDoclet(node.enclosingScope.nodeId); + + if (!doclet) { + result = jsdoc.name.LONGNAMES.ANONYMOUS; // TODO handle global this? + } + else if (doclet['this']) { + result = doclet['this']; + } + // like: Foo.constructor = function(n) { /** blah */ this.name = n; } + else if (doclet.kind === 'function' && doclet.memberof) { + result = doclet.memberof; + } + // like: var foo = function(n) { /** blah */ this.bar = n; } + else if ( doclet.kind === 'member' && jsdoc.src.astnode.isAssignment(node) ) { + result = doclet.longname || doclet.name; + } + // walk up to the closest class we can find + else if (doclet.kind === 'class' || doclet.kind === 'module') { + result = doclet.longname || doclet.name; + } + else if (node.enclosingScope) { + result = this.resolveThis(node.enclosingScope); + } + } + else if (node.parent) { + doclet = this.refs[node.parent.nodeId]; + + // TODO: is this behavior correct? when do we get here? + if (!doclet) { + result = ''; // global? + } + else { + result = doclet.longname || doclet.name; + } + } + // TODO: is this behavior correct? when do we get here? + else { + result = ''; // global? + } + + return result; +}; + +/** + * Given an AST node representing an object property, find the doclets for the parent object or + * objects. + * + * If the object is part of a simple assignment (for example, `var foo = { x: 1 }`), this method + * returns a single doclet (in this case, the doclet for `foo`). + * + * If the object is part of a chained assignment (for example, `var foo = exports.FOO = { x: 1 }`, + * this method returns multiple doclets (in this case, the doclets for `foo` and `exports.FOO`). + * + * @param {Object} node - An AST node representing an object property. + * @return {Array.} An array of doclets for the parent object or objects, or + * an empty array if no doclets are found. + */ +Parser.prototype.resolvePropertyParents = function(node) { + var currentAncestor = node.parent; + var nextAncestor = currentAncestor ? currentAncestor.parent : null; + var doclet; + var doclets = []; + + while (currentAncestor) { + doclet = this._getDoclet(currentAncestor.nodeId); + if (doclet) { + doclets.push(doclet); + } + + // if the next ancestor is an assignment expression (for example, `exports.FOO` in + // `var foo = exports.FOO = { x: 1 }`, keep walking upwards + if (nextAncestor && nextAncestor.type === Syntax.AssignmentExpression) { + nextAncestor = nextAncestor.parent; + currentAncestor = currentAncestor.parent; + } + // otherwise, we're done + else { + currentAncestor = null; + } + } + + return doclets; +}; + +// TODO: docs +/** + * Resolve what function a var is limited to. + * @param {astnode} node + * @param {string} basename The leftmost name in the long name: in foo.bar.zip the basename is foo. + */ +Parser.prototype.resolveVar = function(node, basename) { + var doclet; + var result; + var scope = node.enclosingScope; + + // HACK: return an empty string for function declarations so they don't end up in anonymous + // scope (see #685 and #693) + if (node.type === Syntax.FunctionDeclaration) { + result = ''; + } + else if (!scope) { + result = ''; // global + } + else { + doclet = this._getDoclet(scope.nodeId); + if ( definedInScope(doclet, basename) ) { + result = doclet.longname; + } + else { + result = this.resolveVar(scope, basename); + } + } + + return result; +}; + +// TODO: docs +Parser.prototype.resolveEnum = function(e) { + var doclets = this.resolvePropertyParents(e.code.node.parent); + + doclets.forEach(function(doclet) { + if (doclet && doclet.isEnum) { + doclet.properties = doclet.properties || []; + + // members of an enum inherit the enum's type + if (doclet.type && !e.doclet.type) { + // clone the type to prevent circular refs + e.doclet.type = jsdoc.util.doop(doclet.type); + } + + delete e.doclet.undocumented; + e.doclet.defaultvalue = e.doclet.meta.code.value; + + // add the doclet to the parent's properties + doclet.properties.push(e.doclet); + } + }); +}; + +// TODO: document other events +/** + * Fired once for each JSDoc comment in the current source code. + * @event jsdocCommentFound + * @memberof module:jsdoc/src/parser.Parser + * @type {Object} + * @property {string} comment The text content of the JSDoc comment + * @property {number} lineno The line number associated with the found comment. + * @property {string} filename The file name associated with the found comment. + */ diff --git a/third_party/jsdoc/lib/jsdoc/src/scanner.js b/third_party/jsdoc/lib/jsdoc/src/scanner.js new file mode 100644 index 0000000000..a8170a718c --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/scanner.js @@ -0,0 +1,70 @@ +/*global env: true */ +/** + @module jsdoc/src/scanner + @requires module:fs + + @author Michael Mathews + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var fs = require('jsdoc/fs'); +var logger = require('jsdoc/util/logger'); +var path = require('jsdoc/path'); + +/** + @constructor + @mixes module:events + */ +exports.Scanner = function() {}; +exports.Scanner.prototype = Object.create( require('events').EventEmitter.prototype ); + +/** + Recursively searches the given searchPaths for js files. + @param {Array.} searchPaths + @param {number} [depth=1] + @fires sourceFileFound + */ +exports.Scanner.prototype.scan = function(searchPaths, depth, filter) { + var currentFile; + var isFile; + + var filePaths = []; + var pwd = env.pwd; + var self = this; + + searchPaths = searchPaths || []; + depth = depth || 1; + + searchPaths.forEach(function($) { + var filepath = path.resolve( pwd, decodeURIComponent($) ); + + try { + currentFile = fs.statSync(filepath); + } + catch (e) { + logger.error('Unable to find the source file or directory %s', filepath); + return; + } + + if ( currentFile.isFile() ) { + filePaths.push(filepath); + } + else { + filePaths = filePaths.concat( fs.ls(filepath, depth) ); + } + }); + + filePaths = filePaths.filter(function($) { + return filter.isIncluded($); + }); + + filePaths = filePaths.filter(function($) { + var e = { fileName: $ }; + self.emit('sourceFileFound', e); + + return !e.defaultPrevented; + }); + + return filePaths; +}; diff --git a/third_party/jsdoc/lib/jsdoc/src/syntax.js b/third_party/jsdoc/lib/jsdoc/src/syntax.js new file mode 100644 index 0000000000..3780129dd7 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/syntax.js @@ -0,0 +1,67 @@ +'use strict'; + +// TODO: docs +exports.Syntax = { + ArrayExpression: 'ArrayExpression', + ArrayPattern: 'ArrayPattern', + ArrowFunctionExpression: 'ArrowFunctionExpression', + AssignmentExpression: 'AssignmentExpression', + BinaryExpression: 'BinaryExpression', + BlockStatement: 'BlockStatement', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ClassBody: 'ClassBody', + ClassDeclaration: 'ClassDeclaration', + ClassExpression: 'ClassExpression', + ComprehensionBlock: 'ComprehensionBlock', + ComprehensionExpression: 'ComprehensionExpression', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DebuggerStatement: 'DebuggerStatement', + DoWhileStatement: 'DoWhileStatement', + EmptyStatement: 'EmptyStatement', + ExportBatchSpecifier: 'ExportBatchSpecifier', + ExportDeclaration: 'ExportDeclaration', + ExportSpecifier: 'ExportSpecifier', + ExpressionStatement: 'ExpressionStatement', + ForInStatement: 'ForInStatement', + ForOfStatement: 'ForOfStatement', + ForStatement: 'ForStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + ImportDeclaration: 'ImportDeclaration', + ImportSpecifier: 'ImportSpecifier', + LabeledStatement: 'LabeledStatement', + LetStatement: 'LetStatement', // TODO: update Rhino to use VariableDeclaration + Literal: 'Literal', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + MethodDefinition: 'MethodDefinition', + ModuleDeclaration: 'ModuleDeclaration', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + ObjectPattern: 'ObjectPattern', + Program: 'Program', + Property: 'Property', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SpreadElement: 'SpreadElement', + SwitchCase: 'SwitchCase', + SwitchStatement: 'SwitchStatement', + TaggedTemplateExpression: 'TaggedTemplateExpression', + TemplateElement: 'TemplateElement', + TemplateLiteral: 'TemplateLiteral', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement', + YieldExpression: 'YieldExpression' +}; diff --git a/third_party/jsdoc/lib/jsdoc/src/visitor.js b/third_party/jsdoc/lib/jsdoc/src/visitor.js new file mode 100644 index 0000000000..80e909e04a --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/visitor.js @@ -0,0 +1,442 @@ +/** + * @module jsdoc/src/visitor + */ +'use strict'; + +// TODO: consider exporting more stuff so users can override it + +var jsdoc = { + doclet: require('jsdoc/doclet'), + name: require('jsdoc/name'), + src: { + astnode: require('jsdoc/src/astnode'), + syntax: require('jsdoc/src/syntax') + }, + util: { + logger: require('jsdoc/util/logger') + } +}; +var util = require('util'); + +var hasOwnProp = Object.prototype.hasOwnProperty; +var Syntax = jsdoc.src.syntax.Syntax; + +// TODO: docs +function getLeadingComment(node) { + var comment = null; + var leadingComments = node.leadingComments; + + if (Array.isArray(leadingComments) && leadingComments.length && leadingComments[0].raw) { + comment = leadingComments[0].raw; + } + + return comment; +} + +// TODO: docs +function makeVarsFinisher(scopeDoclet) { + return function(e) { + // no need to evaluate all things related to scopeDoclet again, just use it + if (scopeDoclet && e.doclet && e.doclet.alias) { + scopeDoclet.meta.vars[e.code.name] = e.doclet.longname; + } + }; +} + +/** + * For function parameters that have inline documentation, create a function that will merge the + * inline documentation into the function's doclet. If the parameter is already documented in the + * function's doclet, the inline documentation will be ignored. + * + * @private + * @param {module:jsdoc/src/parser.Parser} parser - The JSDoc parser. + * @return {function} A function that merges a parameter's inline documentation into the function's + * doclet. + */ +function makeInlineParamsFinisher(parser) { + return function(e) { + var documentedParams; + var knownParams; + var param; + var parentDoclet; + + var i = 0; + + if (e.doclet && e.doclet.meta && e.doclet.meta.code && e.doclet.meta.code.node && + e.doclet.meta.code.node.parent) { + parentDoclet = parser._getDoclet(e.doclet.meta.code.node.parent.nodeId); + } + if (!parentDoclet) { + return; + } + + // we only want to use the doclet if it's param-specific (but not, for example, if it's + // a param tagged with `@exports` in an AMD module) + if (e.doclet.kind !== 'param') { + return; + } + + parentDoclet.params = parentDoclet.params || []; + documentedParams = parentDoclet.params; + knownParams = parentDoclet.meta.code.paramnames; + + while (true) { + param = documentedParams[i]; + + // is the param already documented? if so, we don't need to use the doclet + if (param && param.name === e.doclet.name) { + e.doclet.undocumented = true; + break; + } + + // if we ran out of documented params, or we're at the parameter's actual position, + // splice in the param at the current index + if ( !param || i === knownParams.indexOf(e.doclet.name) ) { + documentedParams.splice(i, 0, { + type: e.doclet.type, + description: '', + name: e.doclet.name + }); + + // the doclet is no longer needed + e.doclet.undocumented = true; + + break; + } + + i++; + } + }; +} + +// TODO: docs +function SymbolFound(node, filename, extras) { + var self = this; + extras = extras || {}; + + this.id = extras.id || node.nodeId; + this.comment = extras.comment || getLeadingComment(node) || '@undocumented'; + this.lineno = extras.lineno || node.loc.start.line; + this.range = extras.range || node.range; + this.filename = extras.filename || filename; + this.astnode = extras.astnode || node; + this.code = extras.code; + this.event = extras.event || 'symbolFound'; + this.finishers = extras.finishers || []; + + // make sure the event includes properties that don't have default values + Object.keys(extras).forEach(function(key) { + self[key] = extras[key]; + }); +} + +// TODO: docs +function JsdocCommentFound(comment, filename) { + this.comment = comment.raw; + this.lineno = comment.loc.start.line; + this.filename = filename; + this.range = comment.range; + + Object.defineProperty(this, 'event', { + value: 'jsdocCommentFound' + }); +} + +// TODO: docs +var Visitor = exports.Visitor = function(parser) { + this._parser = parser; + + // Mozilla Parser API node visitors added by plugins + this._nodeVisitors = []; + // built-in visitors + this._visitors = [ + this.visitNodeComments, + this.visitNode + ]; +}; + +// TODO: docs +Visitor.prototype.addAstNodeVisitor = function(visitor) { + this._nodeVisitors.push(visitor); +}; + +// TODO: docs +Visitor.prototype.removeAstNodeVisitor = function(visitor) { + var idx = this._nodeVisitors.indexOf(visitor); + if (idx !== -1) { + this._nodeVisitors.splice(idx, 1); + } +}; + +// TODO: docs +Visitor.prototype.getAstNodeVisitors = function() { + return this._nodeVisitors; +}; + +// TODO: docs; visitor signature is (node, parser, filename) +Visitor.prototype.visit = function(node, filename) { + var i; + var l; + + for (i = 0, l = this._visitors.length; i < l; i++) { + this._visitors[i].call(this, node, this._parser, filename); + } + + // we also need to visit standalone comments, which are not attached to a node + if (node.type === Syntax.Program && node.comments && node.comments.length) { + for (i = 0, l = node.comments.length; i < l; i++) { + this.visitNodeComments.call(this, node.comments[i], this._parser, filename); + } + } + + return true; +}; + +// TODO: docs +/** + * Verify that a block comment exists and that its leading delimiter does not contain three or more + * asterisks. + * + * @private + * @memberof module:jsdoc/src/parser.Parser + */ +function isValidJsdoc(commentSrc) { + return commentSrc && commentSrc.indexOf('/***') !== 0; +} + +// TODO: docs +function hasJsdocComments(node) { + return (node && node.leadingComments && node.leadingComments.length > 0) || + (node && node.trailingComments && node.trailingComments.length > 0); +} + +// TODO: docs +function removeCommentDelimiters(comment) { + return comment.substring(2, comment.length - 2); +} + +// TODO: docs +function updateCommentNode(commentNode, comment) { + commentNode.raw = comment; + commentNode.value = removeCommentDelimiters(comment); +} + +// TODO: docs +Visitor.prototype.visitNodeComments = function(node, parser, filename) { + var comment; + var comments; + var e; + + var BLOCK_COMMENT = 'Block'; + + if ( !hasJsdocComments(node) && (!node.type || node.type !== BLOCK_COMMENT) ) { + return true; + } + + comments = []; + if (node.type === BLOCK_COMMENT) { + comments.push(node); + } + + if (node.leadingComments && node.leadingComments.length) { + comments = node.leadingComments.slice(0); + } + + if (node.trailingComments && node.trailingComments.length) { + comments = comments.concat( node.trailingComments.slice(0) ); + } + + for (var i = 0, l = comments.length; i < l; i++) { + comment = comments[i]; + if ( isValidJsdoc(comment.raw) ) { + e = new JsdocCommentFound(comment, filename); + + parser.emit(e.event, e, parser); + + if (e.comment !== comment.raw) { + updateCommentNode(comment, e.comment); + } + } + } + + return true; +}; + +// TODO: docs +Visitor.prototype.visitNode = function(node, parser, filename) { + var i; + var l; + + var e = this.makeSymbolFoundEvent(node, parser, filename); + + if (!node.nodeId) { + Object.defineProperty(node, 'nodeId', { + value: parser.getUniqueId() + }); + } + + if (this._nodeVisitors && this._nodeVisitors.length) { + for (i = 0, l = this._nodeVisitors.length; i < l; i++) { + this._nodeVisitors[i].visitNode(node, e, parser, filename); + if (e.stopPropagation) { + break; + } + } + } + + if (!e.preventDefault && e.comment && isValidJsdoc(e.comment)) { + parser.emit(e.event, e, parser); + } + + // add the node to the parser's lookup table + parser.addDocletRef(e); + + for (i = 0, l = e.finishers.length; i < l; i++) { + e.finishers[i].call(parser, e); + } + + return true; +}; + +// TODO: docs +// TODO: note that it's essential to call this function before you try to resolve names! +function trackVars(parser, node, e) { + var enclosingScopeId = node.enclosingScope ? node.enclosingScope.nodeId : + jsdoc.name.LONGNAMES.GLOBAL; + var doclet = parser.refs[enclosingScopeId]; + + if (doclet) { + doclet.meta.vars = doclet.meta.vars || {}; + doclet.meta.vars[e.code.name] = null; + e.finishers.push( makeVarsFinisher(doclet) ); + } +} + +// TODO: docs +Visitor.prototype.makeSymbolFoundEvent = function(node, parser, filename) { + var logger = jsdoc.util.logger; + + var e; + var basename; + var i; + var l; + var parent; + + var extras = { + code: jsdoc.src.astnode.getInfo(node) + }; + + switch (node.type) { + // like: i = 0; + case Syntax.AssignmentExpression: + e = new SymbolFound(node, filename, extras); + + trackVars(parser, node, e); + + basename = parser.getBasename(e.code.name); + if (basename !== 'this') { + e.code.funcscope = parser.resolveVar(node, basename); + } + + break; + + // like: function foo() {} + case Syntax.FunctionDeclaration: + // falls through + + // like: var foo = function() {}; + case Syntax.FunctionExpression: + e = new SymbolFound(node, filename, extras); + + trackVars(parser, node, e); + + basename = parser.getBasename(e.code.name); + e.code.funcscope = parser.resolveVar(node, basename); + + break; + + // like "bar" in: function foo(/** @type {string} */ bar) {} + // or "module" in: define("MyModule", function(/** @exports MyModule */ module) {} + // This is an extremely common type of node; we only care about function parameters with + // inline comments. No need to fire an event unless the node is already commented. + case Syntax.Identifier: + parent = node.parent; + if ( node.leadingComments && parent && jsdoc.src.astnode.isFunction(parent) ) { + extras.finishers = [makeInlineParamsFinisher(parser)]; + e = new SymbolFound(node, filename, extras); + + trackVars(parser, node, e); + } + + break; + + // like "obj.prop" in: /** @typedef {string} */ obj.prop; + // Closure Compiler uses this pattern extensively for enums. + // No need to fire an event unless the node is already commented. + case Syntax.MemberExpression: + if (node.leadingComments) { + e = new SymbolFound(node, filename, extras); + } + + break; + + // like the object literal in: function Foo = Class.create(/** @lends Foo */ {}); + case Syntax.ObjectExpression: + e = new SymbolFound(node, filename, extras); + + break; + + // like "bar: true" in: var foo = { bar: true }; + // like "get bar() {}" in: var foo = { get bar() {} }; + case Syntax.Property: + if ( node.kind !== ('get' || 'set') ) { + extras.finishers = [parser.resolveEnum]; + } + + e = new SymbolFound(node, filename, extras); + + break; + + // like: var i = 0; + case Syntax.VariableDeclarator: + e = new SymbolFound(node, filename, extras); + + trackVars(parser, node, e); + + basename = parser.getBasename(e.code.name); + + break; + + // for now, log a warning for all ES6 nodes, since we don't do anything useful with them + case Syntax.ArrowFunctionExpression: + case Syntax.ClassBody: + case Syntax.ClassDeclaration: + case Syntax.ClassExpression: + case Syntax.ExportBatchSpecifier: + case Syntax.ExportDeclaration: + case Syntax.ExportSpecifier: + case Syntax.ImportDeclaration: + case Syntax.ImportSpecifier: + case Syntax.MethodDefinition: + case Syntax.ModuleDeclaration: + case Syntax.SpreadElement: + case Syntax.TaggedTemplateExpression: + case Syntax.TemplateElement: + case Syntax.TemplateLiteral: + logger.warn('JSDoc does not currently handle %s nodes. Source file: %s, line %s', + node.type, filename, (node.loc && node.loc.start) ? node.loc.start.line : '??'); + + break; + + default: + // ignore + } + + if (!e) { + e = { + finishers: [] + }; + } + + return e; +}; diff --git a/third_party/jsdoc/lib/jsdoc/src/walker.js b/third_party/jsdoc/lib/jsdoc/src/walker.js new file mode 100644 index 0000000000..2407dc89ae --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/src/walker.js @@ -0,0 +1,536 @@ +/** + * Traversal utilities for ASTs that are compatible with the Mozilla Parser API. Adapted from + * [Acorn](http://marijnhaverbeke.nl/acorn/). + * + * @module jsdoc/src/walker + * @license MIT + */ +'use strict'; + +var astnode = require('jsdoc/src/astnode'); +var doclet = require('jsdoc/doclet'); +var Syntax = require('jsdoc/src/syntax').Syntax; + +/** + * Check whether an AST node creates a new scope. + * + * @private + * @param {Object} node - The AST node to check. + * @return {Boolean} Set to `true` if the node creates a new scope, or `false` in all other cases. + */ +function isScopeNode(node) { + // TODO: handle blocks with "let" declarations + return node && typeof node === 'object' && (node.type === Syntax.CatchClause || + node.type === Syntax.FunctionDeclaration || node.type === Syntax.FunctionExpression); +} + +// TODO: docs +function getCurrentScope(scopes) { + return scopes[scopes.length - 1] || null; +} + +// TODO: docs +function moveComments(source, target) { + if (source.leadingComments) { + target.leadingComments = source.leadingComments.slice(0); + source.leadingComments = []; + } +} + +function leafNode(node, parent, state, cb) {} + +// TODO: docs +var walkers = exports.walkers = {}; + +walkers[Syntax.ArrayExpression] = function arrayExpression(node, parent, state, cb) { + for (var i = 0, l = node.elements.length; i < l; i++) { + var e = node.elements[i]; + if (e) { + cb(e, node, state); + } + } +}; + +// TODO: verify correctness +walkers[Syntax.ArrayPattern] = function arrayPattern(node, parent, state, cb) { + for (var i = 0, l = node.elements.length; i < l; i++) { + var e = node.elements[i]; + // must be an identifier or an expression + if (e && e.type !== Syntax.Identifier) { + cb(e, node, state); + } + } +}; + +walkers[Syntax.ArrowFunctionExpression] = + function arrowFunctionExpression(node, parent, state, cb) { + var i; + var l; + + // used for function declarations, so we include it here + if (node.id) { + cb(node.id, node, state); + } + + for (i = 0, l = node.params.length; i < l; i++) { + cb(node.params[i], node, state); + } + + for (i = 0, l = node.defaults.length; i < l; i++) { + cb(node.defaults[i], node, state); + } + + cb(node.body, node, state); + + if (node.rest) { + cb(node.rest, node, state); + } +}; + +walkers[Syntax.AssignmentExpression] = function assignmentExpression(node, parent, state, cb) { + cb(node.left, node, state); + cb(node.right, node, state); +}; + +walkers[Syntax.BinaryExpression] = function binaryExpression(node, parent, state, cb) { + cb(node.left, node, state); + cb(node.right, node, state); +}; + +walkers[Syntax.BlockStatement] = function blockStatement(node, parent, state, cb) { + for (var i = 0, l = node.body.length; i < l; i++) { + cb(node.body[i], node, state); + } +}; + +walkers[Syntax.BreakStatement] = leafNode; + +walkers[Syntax.CallExpression] = function callExpression(node, parent, state, cb) { + var i; + var l; + + cb(node.callee, node, state); + if (node.arguments) { + for (i = 0, l = node.arguments.length; i < l; i++) { + cb(node.arguments[i], node, state); + } + } +}; + +walkers[Syntax.CatchClause] = leafNode; + +walkers[Syntax.ClassBody] = walkers[Syntax.BlockStatement]; + +walkers[Syntax.ClassDeclaration] = function classDeclaration(node, parent, state, cb) { + if (node.id) { + cb(node.id, node, state); + } + + if (node.superClass) { + cb(node.superClass, node, state); + } + + if (node.body) { + cb(node.body, node, state); + } +}; + +walkers[Syntax.ClassExpression] = walkers[Syntax.ClassDeclaration]; + +// TODO: verify correctness +walkers[Syntax.ComprehensionBlock] = walkers[Syntax.AssignmentExpression]; + +// TODO: verify correctness +walkers[Syntax.ComprehensionExpression] = + function comprehensionExpression(node, parent, state, cb) { + cb(node.body, node, state); + + if (node.filter) { + cb(node.filter, node, state); + } + + for (var i = 0, l = node.blocks.length; i < l; i++) { + cb(node.blocks[i], node, state); + } +}; + +walkers[Syntax.ConditionalExpression] = function conditionalExpression(node, parent, state, cb) { + cb(node.test, node, state); + cb(node.consequent, node, state); + cb(node.alternate, node, state); +}; + +walkers[Syntax.ContinueStatement] = leafNode; + +walkers[Syntax.DebuggerStatement] = leafNode; + +walkers[Syntax.DoWhileStatement] = function doWhileStatement(node, parent, state, cb) { + cb(node.test, node, state); + cb(node.body, node, state); +}; + +walkers[Syntax.EmptyStatement] = leafNode; + +walkers[Syntax.ExportBatchSpecifier] = leafNode; + +walkers[Syntax.ExportDeclaration] = function exportDeclaration(node, parent, state, cb) { + var i; + var l; + + if (node.declaration) { + for (i = 0, l = node.declaration.length; i < l; i++) { + cb(node.declaration[i], node, state); + } + } + + if (node.specifiers) { + for (i = 0, l = node.specifiers.length; i < l; i++) { + cb(node.specifiers[i], node, state); + } + } + + if (node.source) { + cb(node.source, node, state); + } +}; + +walkers[Syntax.ExportSpecifier] = function exportSpecifier(node, parent, state, cb) { + if (node.id) { + cb(node.id, node, state); + } + + if (node.name) { + cb(node.name, node, state); + } +}; + +walkers[Syntax.ExpressionStatement] = function expressionStatement(node, parent, state, cb) { + cb(node.expression, node, state); +}; + +walkers[Syntax.ForInStatement] = function forInStatement(node, parent, state, cb) { + cb(node.left, node, state); + cb(node.right, node, state); + cb(node.body, node, state); +}; + +walkers[Syntax.ForOfStatement] = walkers[Syntax.ForInStatement]; + +walkers[Syntax.ForStatement] = function forStatement(node, parent, state, cb) { + if (node.init) { + cb(node.init, node, state); + } + + if (node.test) { + cb(node.test, node, state); + } + + if (node.update) { + cb(node.update, node, state); + } + + cb(node.body, node, state); +}; + +walkers[Syntax.FunctionDeclaration] = walkers[Syntax.ArrowFunctionExpression]; + +walkers[Syntax.FunctionExpression] = walkers[Syntax.ArrowFunctionExpression]; + +walkers[Syntax.Identifier] = leafNode; + +walkers[Syntax.IfStatement] = function ifStatement(node, parent, state, cb) { + cb(node.test, node, state); + cb(node.consequent, node, state); + if (node.alternate) { + cb(node.alternate, node, state); + } +}; + +walkers[Syntax.ImportDeclaration] = function importDeclaration(node, parent, state, cb) { + var i; + var l; + + if (node.specifiers) { + for (i = 0, l = node.specifiers.length; i < l; i++) { + cb(node.specifiers[i], node, state); + } + } + + if (node.source) { + cb(node.source, node, state); + } +}; + +walkers[Syntax.ImportSpecifier] = walkers[Syntax.ExportSpecifier]; + +walkers[Syntax.LabeledStatement] = function labeledStatement(node, parent, state, cb) { + cb(node.body, node, state); +}; + +// TODO: add scope info?? +walkers[Syntax.LetStatement] = function letStatement(node, parent, state, cb) { + for (var i = 0, l = node.head.length; i < l; i++) { + var head = node.head[i]; + cb(head.id, node, state); + if (head.init) { + cb(head.init, node, state); + } + } + + cb(node.body, node, state); +}; + +walkers[Syntax.Literal] = leafNode; + +walkers[Syntax.LogicalExpression] = walkers[Syntax.BinaryExpression]; + +walkers[Syntax.MemberExpression] = function memberExpression(node, parent, state, cb) { + cb(node.object, node, state); + if (node.property) { + cb(node.property, node, state); + } +}; + +walkers[Syntax.MethodDefinition] = function methodDefinition(node, parent, state, cb) { + if (node.key) { + cb(node.key, node, state); + } + + if (node.value) { + cb(node.value, node, state); + } +}; + +walkers[Syntax.ModuleDeclaration] = function moduleDeclaration(node, parent, state, cb) { + if (node.id) { + cb(node.id, node, state); + } + + if (node.source) { + cb(node.source, node, state); + } + + if (node.body) { + cb(node.body, node, state); + } +}; + +walkers[Syntax.NewExpression] = walkers[Syntax.CallExpression]; + +walkers[Syntax.ObjectExpression] = function objectExpression(node, parent, state, cb) { + for (var i = 0, l = node.properties.length; i < l; i++) { + cb(node.properties[i], node, state); + } +}; + +walkers[Syntax.ObjectPattern] = walkers[Syntax.ObjectExpression]; + +walkers[Syntax.Program] = walkers[Syntax.BlockStatement]; + +walkers[Syntax.Property] = function property(node, parent, state, cb) { + // move leading comments from key to property node + moveComments(node.key, node); + + cb(node.value, node, state); +}; + +walkers[Syntax.ReturnStatement] = function returnStatement(node, parent, state, cb) { + if (node.argument) { + cb(node.argument, node, state); + } +}; + +walkers[Syntax.SequenceExpression] = function sequenceExpression(node, parent, state, cb) { + for (var i = 0, l = node.expressions.length; i < l; i++) { + cb(node.expressions[i], node, state); + } +}; + +walkers[Syntax.SpreadElement] = function spreadElement(node, parent, state, cb) { + if (node.argument) { + cb(node.argument, node, state); + } +}; + +walkers[Syntax.SwitchCase] = function switchCase(node, parent, state, cb) { + if (node.test) { + cb(node.test, node, state); + } + + for (var i = 0, l = node.consequent.length; i < l; i++) { + cb(node.consequent[i], node, state); + } +}; + +walkers[Syntax.SwitchStatement] = function switchStatement(node, parent, state, cb) { + cb(node.discriminant, node, state); + + for (var i = 0, l = node.cases.length; i < l; i++) { + cb(node.cases[i], node, state); + } +}; + +walkers[Syntax.TaggedTemplateExpression] = + function taggedTemplateExpression(node, parent, state, cb) { + if (node.tag) { + cb(node.tag, node, state); + } + if (node.quasi) { + cb(node.quasi, node, state); + } +}; + +walkers[Syntax.TemplateElement] = leafNode; + +walkers[Syntax.TemplateLiteral] = function templateLiteral(node, parent, state, cb) { + var i; + var l; + + if (node.quasis && node.quasis.length) { + for (i = 0, l = node.quasis.length; i < l; i++) { + cb(node.quasis[i], node, state); + } + } + + if (node.expressions && node.expressions.length) { + for (i = 0, l = node.expressions.length; i < l; i++) { + cb(node.expressions[i], node, state); + } + } +}; + +walkers[Syntax.ThisExpression] = leafNode; + +walkers[Syntax.ThrowStatement] = function throwStatement(node, parent, state, cb) { + cb(node.argument, node, state); +}; + +walkers[Syntax.TryStatement] = function tryStatement(node, parent, state, cb) { + var i; + var l; + + cb(node.block, node, state); + + // handle Esprima ASTs, which deviate from the spec a bit + if ( node.handlers && Array.isArray(node.handlers) && node.handlers[0] ) { + cb(node.handlers[0].body, node, state); + } + else if (node.handler) { + cb(node.handler.body, node, state); + } + + if (node.guardedHandlers) { + for (i = 0, l = node.guardedHandlers.length; i < l; i++) { + cb(node.guardedHandlers[i].body, node, state); + } + } + + if (node.finalizer) { + cb(node.finalizer, node, state); + } +}; + +walkers[Syntax.UnaryExpression] = function unaryExpression(node, parent, state, cb) { + cb(node.argument, node, state); +}; + +walkers[Syntax.UpdateExpression] = walkers[Syntax.UnaryExpression]; + +walkers[Syntax.VariableDeclaration] = function variableDeclaration(node, parent, state, cb) { + // move leading comments to first declarator + moveComments(node, node.declarations[0]); + + for (var i = 0, l = node.declarations.length; i < l; i++) { + cb(node.declarations[i], node, state); + } +}; + +walkers[Syntax.VariableDeclarator] = function variableDeclarator(node, parent, state, cb) { + cb(node.id, node, state); + + if (node.init) { + cb(node.init, node, state); + } +}; + +walkers[Syntax.WhileStatement] = walkers[Syntax.DoWhileStatement]; + +walkers[Syntax.WithStatement] = function withStatement(node, parent, state, cb) { + cb(node.object, node, state); + cb(node.body, node, state); +}; + +walkers[Syntax.YieldExpression] = function(node, parent, state, cb) { + if (node.argument) { + cb(node.argument, node, state); + } +}; + +/** + * Create a walker that can traverse an AST that is consistent with the Mozilla Parser API. + * + * @todo docs + * @memberof module:jsdoc/src/walker + */ +var Walker = exports.Walker = function(walkerFuncs) { + this._walkers = walkerFuncs || walkers; +}; + +// TODO: docs +Walker.prototype._recurse = function(filename, ast) { + var self = this; + var state = { + filename: filename, + nodes: [], + scopes: [] + }; + + function cb(node, parent, state) { + var currentScope; + + var isScope = astnode.isScope(node); + + // for efficiency, if the node has a `parent` property, assume that we've already + // added the required properties + if (typeof node.parent !== 'undefined') { + astnode.addNodeProperties(node); + } + + node.parent = parent || null; + + currentScope = getCurrentScope(state.scopes); + if (currentScope) { + node.enclosingScope = currentScope; + } + + if (isScope) { + state.scopes.push(node); + } + state.nodes.push(node); + + self._walkers[node.type](node, parent, state, cb); + + if (isScope) { + state.scopes.pop(); + } + } + + cb(ast, null, state); + + return state; +}; + +// TODO: docs +// TODO: allow visitor.visit to prevent traversal of child nodes +// TODO: skip the AST root node to be consistent with Rhino? +Walker.prototype.recurse = function(filename, ast, visitor) { + var state = this._recurse(filename, ast); + + if (visitor) { + for (var i = 0, l = state.nodes.length; i < l; i++) { + visitor.visit.call(visitor, state.nodes[i], filename); + } + } + + return ast; +}; diff --git a/third_party/jsdoc/lib/jsdoc/tag.js b/third_party/jsdoc/lib/jsdoc/tag.js new file mode 100644 index 0000000000..27abc51f61 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/tag.js @@ -0,0 +1,192 @@ +/*global env: true */ +/** + @overview + @author Michael Mathews + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ + +/** + Functionality related to JSDoc tags. + @module jsdoc/tag + @requires jsdoc/tag/dictionary + @requires jsdoc/tag/validator + @requires jsdoc/tag/type + */ +'use strict'; + +var jsdoc = { + tag: { + dictionary: require('jsdoc/tag/dictionary'), + validator: require('jsdoc/tag/validator'), + type: require('jsdoc/tag/type') + }, + util: { + logger: require('jsdoc/util/logger') + } +}; +var path = require('jsdoc/path'); +var util = require('util'); + +// Check whether the text is the same as a symbol name with leading or trailing whitespace. If so, +// the text cannot be trimmed. +function textIsUntrimmable(text, meta) { + return meta && meta.code && meta.code.name === text && text.match(/(?:^\s+)|(?:\s+$)/); +} + +function trim(text, opts, meta) { + var indentMatcher; + var match; + + opts = opts || {}; + text = text || ''; + + if ( textIsUntrimmable(text, meta) ) { + text = util.format('"%s"', text); + } + else if (opts.keepsWhitespace) { + text = text.replace(/^[\n\r\f]+|[\n\r\f]+$/g, ''); + if (opts.removesIndent) { + match = text.match(/^([ \t]+)/); + if (match && match[1]) { + indentMatcher = new RegExp('^' + match[1], 'gm'); + text = text.replace(indentMatcher, ''); + } + } + } + else { + text = text.replace(/^\s+|\s+$/g, ''); + } + + return text; +} + +function addHiddenProperty(obj, propName, propValue) { + Object.defineProperty(obj, propName, { + value: propValue, + writable: true, + enumerable: !!global.env.opts.debug, + configurable: true + }); +} + +function processTagText(tag, tagDef) { + var tagType; + + if (tagDef.onTagText) { + tag.text = tagDef.onTagText(tag.text); + } + + if (tagDef.canHaveType || tagDef.canHaveName) { + /** The value property represents the result of parsing the tag text. */ + tag.value = {}; + + tagType = jsdoc.tag.type.parse(tag.text, tagDef.canHaveName, tagDef.canHaveType); + + // It is possible for a tag to *not* have a type but still have + // optional or defaultvalue, e.g. '@param [foo]'. + // Although tagType.type.length == 0 we should still copy the other properties. + if (tagType.type) { + if (tagType.type.length) { + tag.value.type = { + names: tagType.type + }; + addHiddenProperty(tag.value.type, 'parsedType', tagType.parsedType); + } + + ['optional', 'nullable', 'variable', 'defaultvalue'].forEach(function(prop) { + if (typeof tagType[prop] !== 'undefined') { + tag.value[prop] = tagType[prop]; + } + }); + } + + if (tagType.text && tagType.text.length) { + tag.value.description = tagType.text; + } + + if (tagDef.canHaveName) { + // note the dash is a special case: as a param name it means "no name" + if (tagType.name && tagType.name !== '-') { tag.value.name = tagType.name; } + } + } + else { + tag.value = tag.text; + } +} + +/** + * Replace the existing tag dictionary with a new tag dictionary. + * + * Used for testing only. Do not call this method directly. Instead, call + * {@link module:jsdoc/doclet._replaceDictionary}, which also updates this module's tag dictionary. + * + * @private + * @param {module:jsdoc/tag/dictionary.Dictionary} dict - The new tag dictionary. + */ +exports._replaceDictionary = function _replaceDictionary(dict) { + jsdoc.tag.dictionary = dict; +}; + +/** + Constructs a new tag object. Calls the tag validator. + @class + @classdesc Represents a single doclet tag. + @param {string} tagTitle + @param {string=} tagBody + @param {object=} meta + */ +var Tag = exports.Tag = function(tagTitle, tagBody, meta) { + var tagDef; + var trimOpts; + + meta = meta || {}; + + this.originalTitle = trim(tagTitle); + + /** The title of the tag (for example, `title` in `@title text`). */ + this.title = jsdoc.tag.dictionary.normalise(this.originalTitle); + + tagDef = jsdoc.tag.dictionary.lookUp(this.title); + trimOpts = { + keepsWhitespace: tagDef.keepsWhitespace, + removesIndent: tagDef.removesIndent + }; + + /** + * The text following the tag (for example, `text` in `@title text`). + * + * Whitespace is trimmed from the tag text as follows: + * + * + If the tag's `keepsWhitespace` option is falsy, all leading and trailing whitespace are + * removed. + * + If the tag's `keepsWhitespace` option is set to `true`, leading and trailing whitespace are + * not trimmed, unless the `removesIndent` option is also enabled. + * + If the tag's `removesIndent` option is set to `true`, any indentation that is shared by + * every line in the string is removed. This option is ignored unless `keepsWhitespace` is set + * to `true`. + * + * **Note**: If the tag text is the name of a symbol, and the symbol's name includes leading or + * trailing whitespace (for example, the property names in `{ ' ': true, ' foo ': false }`), + * the tag text is not trimmed. Instead, the tag text is wrapped in double quotes to prevent the + * whitespace from being trimmed. + */ + this.text = trim(tagBody, trimOpts, meta); + + if (this.text) { + try { + processTagText(this, tagDef); + } + catch (e) { + // probably a type-parsing error + jsdoc.util.logger.error( + 'Unable to create a Tag object%s with title "%s" and body "%s": %s', + meta.filename ? ( ' for source file ' + path.join(meta.path, meta.filename) ) : '', + tagTitle, + tagBody, + e.message + ); + } + } + + jsdoc.tag.validator.validate(this, tagDef, meta); +}; diff --git a/third_party/jsdoc/lib/jsdoc/tag/dictionary.js b/third_party/jsdoc/lib/jsdoc/tag/dictionary.js new file mode 100644 index 0000000000..38b737982b --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/tag/dictionary.js @@ -0,0 +1,99 @@ +/** @module jsdoc/tag/dictionary */ +'use strict'; + +var definitions = require('jsdoc/tag/dictionary/definitions'); + +var hasOwnProp = Object.prototype.hasOwnProperty; + +var dictionary; + +/** @private */ +function TagDefinition(dictionary, title, etc) { + var self = this; + etc = etc || {}; + + this.title = dictionary.normalise(title); + + Object.defineProperty(this, '_dictionary', { + value: dictionary + }); + + Object.keys(etc).forEach(function(p) { + self[p] = etc[p]; + }); +} + +/** @private */ +TagDefinition.prototype.synonym = function(synonymName) { + this._dictionary.defineSynonym(this.title, synonymName); + return this; // chainable +}; + +/** + * @class + * @alias module:jsdoc/tag/dictionary.Dictionary + */ +function Dictionary() { + this._tags = {}; + this._tagSynonyms = {}; + this._namespaces = []; +} + +/** @function */ +Dictionary.prototype.defineTag = function defineTag(title, opts) { + var tagDef = new TagDefinition(this, title, opts); + this._tags[tagDef.title] = tagDef; + + if (opts && opts.isNamespace) { + this._namespaces.push(tagDef.title); + } + + return this._tags[tagDef.title]; +}; + +/** @function */ +Dictionary.prototype.defineSynonym = function defineSynonym(title, synonym) { + this._tagSynonyms[synonym.toLowerCase()] = this.normalise(title); +}; + +/** @function */ +Dictionary.prototype.lookUp = function lookUp(title) { + title = this.normalise(title); + + if ( hasOwnProp.call(this._tags, title) ) { + return this._tags[title]; + } + + return false; +}; + +/** @function */ +Dictionary.prototype.isNamespace = function isNamespace(kind) { + if (kind) { + kind = this.normalise(kind); + if (this._namespaces.indexOf(kind) !== -1) { + return true; + } + } + + return false; +}; + +/** @function */ +Dictionary.prototype.normalise = function normalise(title) { + var canonicalName = title.toLowerCase(); + + if ( hasOwnProp.call(this._tagSynonyms, canonicalName) ) { + return this._tagSynonyms[canonicalName]; + } + + return canonicalName; +}; + +// initialize the default dictionary +dictionary = new Dictionary(); +dictionary.Dictionary = Dictionary; +definitions.defineTags(dictionary); + +/** @type {module:jsdoc/tag/dictionary.Dictionary} */ +module.exports = dictionary; diff --git a/third_party/jsdoc/lib/jsdoc/tag/dictionary/definitions.js b/third_party/jsdoc/lib/jsdoc/tag/dictionary/definitions.js new file mode 100644 index 0000000000..18b9685ea9 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/tag/dictionary/definitions.js @@ -0,0 +1,891 @@ +/** + Define tags that are known in JSDoc. + @module jsdoc/tag/dictionary/definitions + + @author Michael Mathews + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var hasOwnProp = Object.prototype.hasOwnProperty; +var jsdoc = { + name: require('jsdoc/name'), + src: { + astnode: require('jsdoc/src/astnode') + }, + tag: { + type: require('jsdoc/tag/type') + }, + util: { + doop: require('jsdoc/util/doop'), + logger: require('jsdoc/util/logger') + } +}; +var path = require('jsdoc/path'); +var Syntax = require('jsdoc/src/syntax').Syntax; + +var DEFINITIONS = { + closure: 'closureTags', + jsdoc: 'jsdocTags' +}; +var NAMESPACES = jsdoc.name.NAMESPACES; + +// Clone a tag definition, excluding synonyms. +function cloneTagDef(tagDef) { + var newTagDef = jsdoc.util.doop(tagDef); + delete newTagDef.synonyms; + + return newTagDef; +} + +function getSourcePaths() { + var sourcePaths = global.env.sourceFiles.slice(0) || []; + + if (global.env.opts._) { + global.env.opts._.forEach(function(sourcePath) { + var resolved = path.resolve(global.env.pwd, sourcePath); + if (sourcePaths.indexOf(resolved) === -1) { + sourcePaths.push(resolved); + } + }); + } + + return sourcePaths; +} + +function filepathMinusPrefix(filepath) { + var sourcePaths = getSourcePaths(); + var commonPrefix = path.commonPrefix(sourcePaths); + var result = ''; + + if (filepath) { + filepath = path.normalize(filepath); + // always use forward slashes in the result + result = (filepath + path.sep).replace(commonPrefix, '') + .replace(/\\/g, '/'); + } + + if (result.length > 0 && result[result.length - 1] !== '/') { + result += '/'; + } + + return result; +} + +/** @private */ +function setDocletKindToTitle(doclet, tag) { + doclet.addTag( 'kind', tag.title ); +} + +function setDocletScopeToTitle(doclet, tag) { + try { + doclet.setScope(tag.title); + } + catch(e) { + jsdoc.util.logger.error(e.message); + } +} + +function setDocletNameToValue(doclet, tag) { + if (tag.value && tag.value.description) { // as in a long tag + doclet.addTag( 'name', tag.value.description); + } + else if (tag.text) { // or a short tag + doclet.addTag('name', tag.text); + } +} + +function setDocletNameToValueName(doclet, tag) { + if (tag.value && tag.value.name) { + doclet.addTag('name', tag.value.name); + } +} + +function setDocletDescriptionToValue(doclet, tag) { + if (tag.value) { + doclet.addTag( 'description', tag.value ); + } +} + +function setDocletTypeToValueType(doclet, tag) { + if (tag.value && tag.value.type) { + // Add the type names and other type properties (such as `optional`). + // Don't overwrite existing properties. + Object.keys(tag.value).forEach(function(prop) { + if ( !hasOwnProp.call(doclet, prop) ) { + doclet[prop] = tag.value[prop]; + } + }); + } +} + +function setNameToFile(doclet, tag) { + var name; + + if (doclet.meta.filename) { + name = filepathMinusPrefix(doclet.meta.path) + doclet.meta.filename; + doclet.addTag('name', name); + } +} + +function setDocletMemberof(doclet, tag) { + if (tag.value && tag.value !== '') { + doclet.setMemberof(tag.value); + } +} + +function applyNamespace(docletOrNs, tag) { + if (typeof docletOrNs === 'string') { // ns + tag.value = jsdoc.name.applyNamespace(tag.value, docletOrNs); + } + else { // doclet + if (!docletOrNs.name) { + return; // error? + } + + docletOrNs.longname = jsdoc.name.applyNamespace(docletOrNs.name, tag.title); + } +} + +function setDocletNameToFilename(doclet, tag) { + var name = ''; + + if (doclet.meta.path) { + name = filepathMinusPrefix(doclet.meta.path); + } + name += doclet.meta.filename.replace(/\.js$/i, ''); + + doclet.name = name; +} + +function parseTypeText(text) { + var tagType = jsdoc.tag.type.parse(text, false, true); + return tagType.typeExpression || text; +} + +function parseBorrows(doclet, tag) { + var m = /^(\S+)(?:\s+as\s+(\S+))?$/.exec(tag.text); + if (m) { + if (m[1] && m[2]) { + return { target: m[1], source: m[2] }; + } + else if (m[1]) { + return { target: m[1] }; + } + } else { + return {}; + } +} + +function stripModuleNamespace(name) { + return name.replace(/^module\:/, ''); +} + +function firstWordOf(string) { + var m = /^(\S+)/.exec(string); + if (m) { return m[1]; } + else { return ''; } +} + + +// Core JSDoc tags that are shared with other tag dictionaries. +var baseTags = exports.baseTags = { + abstract: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + // we call this `virtual` because `abstract` is a reserved word + doclet.virtual = true; + }, + synonyms: ['virtual'] + }, + access: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + // only valid values are private and protected, public is default + if ( /^(private|protected)$/i.test(tag.value) ) { + doclet.access = tag.value.toLowerCase(); + } + else { + delete doclet.access; + } + } + }, + alias: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.alias = tag.value; + } + }, + // Special separator tag indicating that multiple doclets should be generated for the same + // comment. Used internally (and by some JSDoc users, although it's not officially supported). + // In the following example, the parser will replace `//**` with an `@also` tag: + // /** + // * Foo. + // *//** + // * Foo with a param. + // * @param {string} bar + // */ + // function foo(bar) {} + also: { + onTagged: function(doclet, tag) { + // let the parser handle it; we define the tag here to avoid "not a known tag" errors + } + }, + augments: { + mustHaveValue: true, + // Allow augments value to be specified as a normal type, e.g. {Type} + onTagText: parseTypeText, + onTagged: function(doclet, tag) { + doclet.augment( firstWordOf(tag.value) ); + }, + synonyms: ['extends'] + }, + author: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.author = doclet.author || []; + doclet.author.push(tag.value); + } + }, + // this symbol has a member that should use the same docs as another symbol + borrows: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + var borrows = parseBorrows(doclet, tag); + doclet.borrow(borrows.target, borrows.source); + } + }, + class: { + onTagged: function(doclet, tag) { + doclet.addTag('kind', 'class'); + + // handle special case where both @class and @constructor tags exist in same doclet + if (tag.originalTitle === 'class') { + // multiple words after @class? + var looksLikeDesc = (tag.value || '').match(/\S+\s+\S+/); + if ( looksLikeDesc || /@construct(s|or)\b/i.test(doclet.comment) ) { + // treat the @class tag as a @classdesc tag instead + doclet.classdesc = tag.value; + return; + } + } + + setDocletNameToValue(doclet, tag); + }, + synonyms: ['constructor'] + }, + classdesc: { + onTagged: function(doclet, tag) { + doclet.classdesc = tag.value; + } + }, + constant: { + canHaveType: true, + canHaveName: true, + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + setDocletNameToValueName(doclet, tag); + setDocletTypeToValueType(doclet, tag); + }, + synonyms: ['const'] + }, + constructs: { + onTagged: function(doclet, tag) { + var ownerClassName; + if (!tag.value) { + // this can be resolved later in the handlers + ownerClassName = '{@thisClass}'; + } + else { + ownerClassName = firstWordOf(tag.value); + } + doclet.addTag('alias', ownerClassName); + doclet.addTag('kind', 'class'); + } + }, + copyright: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.copyright = tag.value; + } + }, + default: { + onTagged: function(doclet, tag) { + var type; + var value; + + var nodeToString = jsdoc.src.astnode.nodeToString; + + if (tag.value) { + doclet.defaultvalue = tag.value; + } + else if (doclet.meta && doclet.meta.code && doclet.meta.code.value) { + type = doclet.meta.code.type; + value = doclet.meta.code.value; + + switch (type) { + case Syntax.ArrayExpression: + doclet.defaultvalue = nodeToString(doclet.meta.code.node); + doclet.defaultvaluetype = 'array'; + break; + + case Syntax.Literal: + doclet.defaultvalue = String(value); + break; + + case Syntax.ObjectExpression: + doclet.defaultvalue = nodeToString(doclet.meta.code.node); + doclet.defaultvaluetype = 'object'; + break; + + default: + // do nothing + break; + } + } + }, + synonyms: ['defaultvalue'] + }, + deprecated: { + // value is optional + onTagged: function(doclet, tag) { + doclet.deprecated = tag.value || true; + } + }, + description: { + mustHaveValue: true, + synonyms: ['desc'] + }, + enum: { + canHaveType: true, + onTagged: function(doclet, tag) { + doclet.kind = 'member'; + doclet.isEnum = true; + setDocletTypeToValueType(doclet, tag); + } + }, + event: { + isNamespace: true, + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + setDocletNameToValue(doclet, tag); + } + }, + example: { + keepsWhitespace: true, + removesIndent: true, + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.examples = doclet.examples || []; + doclet.examples.push(tag.value); + } + }, + exports: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + var modName = firstWordOf(tag.value); + + // in case the user wrote something like `/** @exports module:foo */`: + doclet.addTag( 'alias', stripModuleNamespace(modName) ); + doclet.addTag('kind', 'module'); + } + }, + external: { + canHaveType: true, + isNamespace: true, + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + if (tag.value && tag.value.type) { + setDocletTypeToValueType(doclet, tag); + doclet.addTag('name', doclet.type.names[0]); + } + else { + setDocletNameToValue(doclet, tag); + } + }, + synonyms: ['host'] + }, + file: { + onTagged: function(doclet, tag) { + setNameToFile(doclet, tag); + setDocletKindToTitle(doclet, tag); + setDocletDescriptionToValue(doclet, tag); + + doclet.preserveName = true; + }, + synonyms: ['fileoverview', 'overview'] + }, + fires: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.fires = doclet.fires || []; + applyNamespace('event', tag); + doclet.fires.push(tag.value); + }, + synonyms: ['emits'] + }, + function: { + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + setDocletNameToValue(doclet, tag); + }, + synonyms: ['func', 'method'] + }, + global: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + doclet.scope = jsdoc.name.SCOPE.NAMES.GLOBAL; + delete doclet.memberof; + } + }, + ignore: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + doclet.ignore = true; + } + }, + implements: { + mustHaveValue: true, + onTagText: parseTypeText, + onTagged: function(doclet, tag) { + doclet.implements = doclet.implements || []; + doclet.implements.push(tag.value); + } + }, + inner: { + onTagged: function(doclet, tag) { + setDocletScopeToTitle(doclet, tag); + } + }, + instance: { + onTagged: function(doclet, tag) { + setDocletScopeToTitle(doclet, tag); + } + }, + interface: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + doclet.addTag('kind', 'interface'); + } + }, + kind: { + mustHaveValue: true + }, + lends: { + onTagged: function(doclet, tag) { + doclet.alias = tag.value || jsdoc.name.LONGNAMES.GLOBAL; + doclet.addTag('undocumented'); + } + }, + license: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.license = tag.value; + } + }, + listens: { + mustHaveValue: true, + onTagged: function (doclet, tag) { + doclet.listens = doclet.listens || []; + applyNamespace('event', tag); + doclet.listens.push(tag.value); + } + }, + member: { + canHaveType: true, + canHaveName: true, + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + setDocletNameToValueName(doclet, tag); + setDocletTypeToValueType(doclet, tag); + }, + synonyms: ['var'] + }, + memberof: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + if (tag.originalTitle === 'memberof!') { + doclet.forceMemberof = true; + if (tag.value === jsdoc.name.LONGNAMES.GLOBAL) { + doclet.addTag('global'); + delete doclet.memberof; + } + } + setDocletMemberof(doclet, tag); + }, + synonyms: ['memberof!'] + }, + // this symbol mixes in all of the specified object's members + mixes: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + var source = firstWordOf(tag.value); + doclet.mix(source); + } + }, + mixin: { + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + setDocletNameToValue(doclet, tag); + } + }, + module: { + canHaveType: true, + isNamespace: true, + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + setDocletNameToValue(doclet, tag); + if (!doclet.name) { + setDocletNameToFilename(doclet, tag); + } + // in case the user wrote something like `/** @module module:foo */`: + doclet.name = stripModuleNamespace(doclet.name); + + setDocletTypeToValueType(doclet, tag); + } + }, + name: { + mustHaveValue: true + }, + namespace: { + canHaveType: true, + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + setDocletNameToValue(doclet, tag); + setDocletTypeToValueType(doclet, tag); + } + }, + param: { + canHaveType: true, + canHaveName: true, + onTagged: function(doclet, tag) { + doclet.params = doclet.params || []; + doclet.params.push(tag.value || {}); + }, + synonyms: ['arg', 'argument'] + }, + private: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + doclet.access = 'private'; + } + }, + property: { + mustHaveValue: true, + canHaveType: true, + canHaveName: true, + onTagged: function(doclet, tag) { + doclet.properties = doclet.properties || []; + doclet.properties.push(tag.value); + }, + synonyms: ['prop'] + }, + protected: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + doclet.access = 'protected'; + } + }, + public: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + delete doclet.access; // public is default + } + }, + readonly: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + doclet.readonly = true; + } + }, + requires: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + var requiresName; + + // inline link tags are passed through as-is so that `@requires {@link foo}` works + if ( require('jsdoc/tag/inline').isInlineTag(tag.value, 'link\\S*') ) { + requiresName = tag.value; + } + // otherwise, assume it's a module + else { + requiresName = firstWordOf(tag.value); + if (requiresName.indexOf(NAMESPACES.MODULE) !== 0) { + requiresName = NAMESPACES.MODULE + requiresName; + } + } + + doclet.requires = doclet.requires || []; + doclet.requires.push(requiresName); + } + }, + returns: { + mustHaveValue: true, + canHaveType: true, + onTagged: function(doclet, tag) { + doclet.returns = doclet.returns || []; + doclet.returns.push(tag.value); + }, + synonyms: ['return'] + }, + see: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.see = doclet.see || []; + doclet.see.push(tag.value); + } + }, + since: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.since = tag.value; + } + }, + static: { + onTagged: function(doclet, tag) { + setDocletScopeToTitle(doclet, tag); + } + }, + summary: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.summary = tag.value; + } + }, + 'this': { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet['this'] = firstWordOf(tag.value); + } + }, + todo: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.todo = doclet.todo || []; + doclet.todo.push(tag.value); + } + }, + throws: { + mustHaveValue: true, + canHaveType: true, + onTagged: function(doclet, tag) { + doclet.exceptions = doclet.exceptions || []; + doclet.exceptions.push(tag.value); + }, + synonyms: ['exception'] + }, + tutorial: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.tutorials = doclet.tutorials || []; + doclet.tutorials.push(tag.value); + } + }, + type: { + mustHaveValue: true, + mustNotHaveDescription: true, + canHaveType: true, + onTagText: function(text) { + var closeIdx; + var openIdx; + + var OPEN_BRACE = '{'; + var CLOSE_BRACE = '}'; + + // remove line breaks + text = text.replace(/[\f\n\r]/g, ''); + + // Text must be a type expression; for backwards compatibility, we add braces if they're + // missing. But do NOT add braces to things like `@type {string} some pointless text`. + openIdx = text.indexOf(OPEN_BRACE); + closeIdx = text.indexOf(CLOSE_BRACE); + + // a type expression is at least one character long + if ( openIdx !== 0 || closeIdx <= openIdx + 1) { + text = OPEN_BRACE + text + CLOSE_BRACE; + } + + return text; + }, + onTagged: function(doclet, tag) { + if (tag.value && tag.value.type) { + setDocletTypeToValueType(doclet, tag); + + // for backwards compatibility, we allow @type for functions to imply return type + if (doclet.kind === 'function') { + doclet.addTag('returns', tag.text); + } + } + } + }, + typedef: { + canHaveType: true, + canHaveName: true, + onTagged: function(doclet, tag) { + setDocletKindToTitle(doclet, tag); + + if (tag.value) { + setDocletNameToValueName(doclet, tag); + + // callbacks are always type {function} + if (tag.originalTitle === 'callback') { + doclet.type = { + names: [ + 'function' + ] + }; + } + else { + setDocletTypeToValueType(doclet, tag); + } + } + }, + synonyms: ['callback'] + }, + undocumented: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + doclet.undocumented = true; + doclet.comment = ''; + } + }, + variation: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.variation = tag.value; + } + }, + version: { + mustHaveValue: true, + onTagged: function(doclet, tag) { + doclet.version = tag.value; + } + } +}; + +// Tag dictionary for JSDoc. +var jsdocTags = exports.jsdocTags = baseTags; + +// Tag dictionary for Google Closure Compiler. +var closureTags = exports.closureTags = { + const: cloneTagDef(baseTags.constant), + constructor: cloneTagDef(baseTags.class), + deprecated: cloneTagDef(baseTags.deprecated), + enum: cloneTagDef(baseTags.enum), + extends: cloneTagDef(baseTags.augments), + export: { + mustNotHaveValue: true, + onTagged: function(doclet, tag) { + doclet.visibility = 'export'; + } + }, + expose: { + onTagged: function(doclet, tag) { + doclet.visibility = 'expose'; + } + }, + final: cloneTagDef(baseTags.readonly), + implements: cloneTagDef(baseTags.implements), + interface: cloneTagDef(baseTags.interface), + lends: cloneTagDef(baseTags.lends), + license: cloneTagDef(baseTags.license), + namespace: { + // This is a different use of @namespace compared to standard JSDoc. + // The goal here is to treat this like a class and show it in the list + // of classes, but not show a signature for a non-existent constructor. + onTagged: function(doclet, tag) { + doclet.addTag('kind', 'class'); + setDocletNameToValue(doclet, tag); + doclet.noConstructor = true; + } + }, + param: cloneTagDef(baseTags.param), + private: { + canHaveType: true, + onTagged: function(doclet, tag) { + doclet.access = 'private'; + + if (tag.value && tag.value.type) { + setDocletTypeToValueType(doclet, tag); + } + } + }, + protected: { + canHaveType: true, + onTagged: function(doclet, tag) { + doclet.access = 'protected'; + + if (tag.value && tag.value.type) { + setDocletTypeToValueType(doclet, tag); + } + } + }, + return: cloneTagDef(baseTags.returns), + 'this': cloneTagDef(baseTags['this']), + throws: cloneTagDef(baseTags.throws), + type: (function() { + var tagDef = cloneTagDef(baseTags.type); + tagDef.mustNotHaveDescription = false; + return tagDef; + })(), + typedef: cloneTagDef(baseTags.typedef) +}; + +function addTagDefinitions(dictionary, tagDefs) { + Object.keys(tagDefs).forEach(function(tagName) { + var tagDef; + + tagDef = tagDefs[tagName]; + dictionary.defineTag(tagName, tagDef); + + if (tagDef.synonyms) { + tagDef.synonyms.forEach(function(synonym) { + dictionary.defineSynonym(tagName, synonym); + }); + } + }); +} + +/** + * Populate the given dictionary with the appropriate JSDoc tag definitions. + * + * If the `tagDefs` parameter is omitted, JSDoc uses its configuration settings to decide which + * tags to add to the dictionary. + * + * If the `tagDefs` parameter is included, JSDoc adds only the tag definitions from the `tagDefs` + * object. The configuration settings are ignored. + * + * @param {module:jsdoc/tag/dictionary} dictionary + * @param {Object} [tagDefinitions] - A dictionary whose values define the rules for a JSDoc tag. + */ +exports.defineTags = function(dictionary, tagDefinitions) { + var dictionaries; + + if (!tagDefinitions) { + dictionaries = global.env.conf.tags.dictionaries; + + if (!dictionaries) { + jsdoc.util.logger.error('The configuration setting "tags.dictionaries" is undefined. ' + + 'Unable to load tag definitions.'); + return; + } + else { + dictionaries = dictionaries.slice(0).reverse(); + } + + dictionaries.forEach(function(dictName) { + var tagDefs = exports[DEFINITIONS[dictName]]; + + if (!tagDefs) { + jsdoc.util.logger.error('The configuration setting "tags.dictionaries" contains ' + + 'the unknown dictionary name %s. Ignoring the dictionary.', dictName); + return; + } + + addTagDefinitions(dictionary, tagDefs); + }); + } + else { + addTagDefinitions(dictionary, tagDefinitions); + } +}; diff --git a/third_party/jsdoc/lib/jsdoc/tag/inline.js b/third_party/jsdoc/lib/jsdoc/tag/inline.js new file mode 100644 index 0000000000..e05c40f250 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/tag/inline.js @@ -0,0 +1,141 @@ +/** + * @module jsdoc/tag/inline + * + * @author Jeff Williams + * @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +/** + * Information about an inline tag that was found within a string. + * + * @typedef {Object} InlineTagInfo + * @memberof module:jsdoc/tag/inline + * @property {?string} completeTag - The entire inline tag, including its enclosing braces. + * @property {?string} tag - The tag whose text was found. + * @property {?string} text - The tag text that was found. + */ + +/** + * Information about the results of replacing inline tags within a string. + * + * @typedef {Object} InlineTagResult + * @memberof module:jsdoc/tag/inline + * @property {Array.} tags - The inline tags that were found. + * @property {string} newString - The updated text string after extracting or replacing the inline + * tags. + */ + +/** + * Text-replacing function for strings that contain an inline tag. + * + * @callback InlineTagReplacer + * @memberof module:jsdoc/tag/inline + * @param {string} string - The complete string containing the inline tag. + * @param {module:jsdoc/tag/inline.InlineTagInfo} tagInfo - Information about the inline tag. + * @return {string} An updated version of the complete string. + */ + +/** + * Create a regexp that matches a specific inline tag, or all inline tags. + * + * @private + * @memberof module:jsdoc/tag/inline + * @param {?string} tagName - The inline tag that the regexp will match. May contain regexp + * characters. If omitted, matches any string. + * @param {?string} prefix - A prefix for the regexp. Defaults to an empty string. + * @param {?string} suffix - A suffix for the regexp. Defaults to an empty string. + * @returns {RegExp} A regular expression that matches the requested inline tag. + */ +function regExpFactory(tagName, prefix, suffix) { + tagName = tagName || '\\S+'; + prefix = prefix || ''; + suffix = suffix || ''; + + return new RegExp(prefix + '\\{@' + tagName + '\\s+((?:.|\n)+?)\\}' + suffix, 'gi'); +} + +/** + * Check whether a string is an inline tag. You can check for a specific inline tag or for any valid + * inline tag. + * + * @param {string} string - The string to check. + * @param {?string} tagName - The inline tag to match. May contain regexp characters. If this + * parameter is omitted, this method returns `true` for any valid inline tag. + * @returns {boolean} Set to `true` if the string is a valid inline tag or `false` in all other + * cases. + */ +exports.isInlineTag = function(string, tagName) { + return regExpFactory(tagName, '^', '$').test(string); +}; + +/** + * Replace all instances of multiple inline tags with other text. + * + * @param {string} string - The string in which to replace the inline tags. + * @param {Object} replacers - The functions that are used to replace text in the string. The keys + * must contain tag names (for example, `link`), and the values must contain functions with the + * type {@link module:jsdoc/tag/inline.InlineTagReplacer}. + * @return {module:jsdoc/tag/inline.InlineTagResult} The updated string, as well as information + * about the inline tags that were found. + */ +exports.replaceInlineTags = function(string, replacers) { + var tagInfo = []; + + function replaceMatch(replacer, tag, match, text) { + var matchedTag = { + completeTag: match, + tag: tag, + text: text + }; + tagInfo.push(matchedTag); + + return replacer(string, matchedTag); + } + + string = string || ''; + Object.keys(replacers).forEach(function(replacer) { + var tagRegExp = regExpFactory(replacer); + var matches; + // call the replacer once for each match + while ( (matches = tagRegExp.exec(string)) !== null ) { + string = replaceMatch(replacers[replacer], replacer, matches[0], matches[1]); + } + }); + + return { + tags: tagInfo, + newString: string.trim() + }; +}; + +/** + * Replace all instances of an inline tag with other text. + * + * @param {string} string - The string in which to replace the inline tag. + * @param {string} tag - The name of the inline tag to replace. + * @param {module:jsdoc/tag/inline.InlineTagReplacer} replacer - The function that is used to + * replace text in the string. + * @return {module:jsdoc/tag/inline.InlineTagResult} The updated string, as well as information + * about the inline tags that were found. + */ +exports.replaceInlineTag = function(string, tag, replacer) { + var replacers = {}; + replacers[tag] = replacer; + + return exports.replaceInlineTags(string, replacers); +}; + +/** + * Extract inline tags from a string, replacing them with an empty string. + * + * @param {string} string - The string from which to extract text. + * @param {?string} tag - The inline tag to extract. + * @return {module:jsdoc/tag/inline.InlineTagResult} The updated string, as well as information + * about the inline tags that were found. + */ +exports.extractInlineTag = function(string, tag) { + return exports.replaceInlineTag(string, tag, function(str, tagInfo) { + return str.replace(tagInfo.completeTag, ''); + }); +}; diff --git a/third_party/jsdoc/lib/jsdoc/tag/type.js b/third_party/jsdoc/lib/jsdoc/tag/type.js new file mode 100644 index 0000000000..802c289709 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/tag/type.js @@ -0,0 +1,308 @@ +/** + * @module jsdoc/tag/type + * + * @author Michael Mathews + * @author Jeff Williams + * @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var catharsis = require('catharsis'); +var jsdoc = { + name: require('jsdoc/name'), + tag: { + inline: require('jsdoc/tag/inline') + } +}; +var util = require('util'); + +/** + * Information about a type expression extracted from tag text. + * + * @typedef TypeExpressionInfo + * @memberof module:jsdoc/tag/type + * @property {string} expression - The type expression. + * @property {string} text - The updated tag text. + */ + +/** @private */ +function unescapeBraces(text) { + return text.replace(/\\\{/g, '{') + .replace(/\\\}/g, '}'); +} + +/** + * Extract a type expression from the tag text. + * + * @private + * @param {string} string - The tag text. + * @return {module:jsdoc/tag/type.TypeExpressionInfo} The type expression and updated tag text. + */ + function extractTypeExpression(string) { + var completeExpression; + var count = 0; + var position = 0; + var expression = ''; + var startIndex = string.search(/\{[^@]/); + var textStartIndex; + + if (startIndex !== -1) { + // advance to the first character in the type expression + position = textStartIndex = startIndex + 1; + count++; + + while (position < string.length) { + switch (string[position]) { + case '\\': + // backslash is an escape character, so skip the next character + position++; + break; + case '{': + count++; + break; + case '}': + count--; + break; + default: + // do nothing + } + + if (count === 0) { + completeExpression = string.slice(startIndex, position + 1); + expression = string.slice(textStartIndex, position).trim(); + break; + } + + position++; + } + } + + string = completeExpression ? string.replace(completeExpression, '') : string; + + return { + expression: unescapeBraces(expression), + newString: string.trim() + }; +} + +/** @private */ +function getTagInfo(tagValue, canHaveName, canHaveType) { + var name = ''; + var typeExpression = ''; + var text = tagValue; + var expressionAndText; + var nameAndDescription; + var typeOverride; + + if (canHaveType) { + expressionAndText = extractTypeExpression(text); + typeExpression = expressionAndText.expression; + text = expressionAndText.newString; + } + + if (canHaveName) { + nameAndDescription = jsdoc.name.splitName(text); + name = nameAndDescription.name; + text = nameAndDescription.description; + } + + // an inline @type tag, like {@type Foo}, overrides the type expression + if (canHaveType) { + typeOverride = jsdoc.tag.inline.extractInlineTag(text, 'type'); + if (typeOverride.tags && typeOverride.tags[0]) { + typeExpression = typeOverride.tags[0].text; + } + text = typeOverride.newString; + } + + return { + name: name, + typeExpression: typeExpression, + text: text + }; +} + +/** + * Information provided in a JSDoc tag. + * + * @typedef {Object} TagInfo + * @memberof module:jsdoc/tag/type + * @property {string} TagInfo.defaultvalue - The default value of the member. + * @property {string} TagInfo.name - The name of the member (for example, `myParamName`). + * @property {boolean} TagInfo.nullable - Indicates whether the member can be set to `null` or + * `undefined`. + * @property {boolean} TagInfo.optional - Indicates whether the member is optional. + * @property {string} TagInfo.text - Descriptive text for the member (for example, `The user's email + * address.`). + * @property {Array.} TagInfo.type - The type or types that the member can contain (for + * example, `string` or `MyNamespace.MyClass`). + * @property {string} TagInfo.typeExpression - The type expression that was parsed to identify the + * types. + * @property {boolean} TagInfo.variable - Indicates whether the number of members that are provided + * can vary (for example, in a function that accepts any number of parameters). + */ + +// TODO: move to module:jsdoc/name? +/** + * Extract JSDoc-style type information from the name specified in the tag info, including the + * member name; whether the member is optional; and the default value of the member. + * + * @private + * @param {module:jsdoc/tag/type.TagInfo} tagInfo - Information contained in the tag. + * @return {module:jsdoc/tag/type.TagInfo} Updated information from the tag. + */ +function parseName(tagInfo) { + // like '[foo]' or '[ foo ]' or '[foo=bar]' or '[ foo=bar ]' or '[ foo = bar ]' + // or 'foo=bar' or 'foo = bar' + if ( /^(\[)?\s*(.+?)\s*(\])?$/.test(tagInfo.name) ) { + tagInfo.name = RegExp.$2; + // were the "optional" brackets present? + if (RegExp.$1 && RegExp.$3) { + tagInfo.optional = true; + } + + // like 'foo=bar' or 'foo = bar' + if ( /^(.+?)\s*=\s*(.+)$/.test(tagInfo.name) ) { + tagInfo.name = RegExp.$1; + tagInfo.defaultvalue = RegExp.$2; + } + } + + return tagInfo; +} + +/** @private */ +function getTypeStrings(parsedType, isOutermostType) { + var applications; + var typeString; + + var types = []; + + var TYPES = catharsis.Types; + + switch (parsedType.type) { + case TYPES.AllLiteral: + types.push('*'); + break; + case TYPES.FunctionType: + types.push( catharsis.stringify(parsedType) ); + break; + case TYPES.NameExpression: + types.push(parsedType.name); + break; + case TYPES.NullLiteral: + types.push('null'); + break; + case TYPES.RecordType: + types.push( catharsis.stringify(parsedType) ); + break; + case TYPES.TypeApplication: + // if this is the outermost type, we strip the modifiers; otherwise, we keep them + if (isOutermostType) { + applications = parsedType.applications.map(function(application) { + return catharsis.stringify(application); + }).join(', '); + typeString = util.format( '%s.<%s>', getTypeStrings(parsedType.expression), + applications ); + + types.push(typeString); + } + else { + types.push( catharsis.stringify(parsedType) ); + } + break; + case TYPES.TypeUnion: + parsedType.elements.forEach(function(element) { + types = types.concat( getTypeStrings(element) ); + }); + break; + case TYPES.UndefinedLiteral: + types.push('undefined'); + break; + case TYPES.UnknownLiteral: + types.push('?'); + break; + default: + // this shouldn't happen + throw new Error( util.format('unrecognized type %s in parsed type: %j', parsedType.type, + parsedType) ); + } + + return types; +} + +/** + * Extract JSDoc-style and Closure Compiler-style type information from the type expression + * specified in the tag info. + * + * @private + * @param {module:jsdoc/tag/type.TagInfo} tagInfo - Information contained in the tag. + * @return {module:jsdoc/tag/type.TagInfo} Updated information from the tag. + */ +function parseTypeExpression(tagInfo) { + var errorMessage; + var parsedType; + + // don't try to parse empty type expressions + if (!tagInfo.typeExpression) { + return tagInfo; + } + + try { + parsedType = catharsis.parse(tagInfo.typeExpression, {jsdoc: true}); + } + catch (e) { + // always re-throw so the caller has a chance to report which file was bad + throw new Error( util.format('Invalid type expression "%s": %s', tagInfo.typeExpression, + e.message) ); + } + + tagInfo.type = tagInfo.type.concat( getTypeStrings(parsedType, true) ); + tagInfo.parsedType = parsedType; + + // Catharsis and JSDoc use the same names for 'optional' and 'nullable'... + ['optional', 'nullable'].forEach(function(key) { + if (parsedType[key] !== null && parsedType[key] !== undefined) { + tagInfo[key] = parsedType[key]; + } + }); + + // ...but not 'variable'. + if (parsedType.repeatable !== null && parsedType.repeatable !== undefined) { + tagInfo.variable = parsedType.repeatable; + } + + return tagInfo; +} + +// TODO: allow users to add/remove type parsers (perhaps via plugins) +var typeParsers = [parseName, parseTypeExpression]; + +/** + * Parse the value of a JSDoc tag. + * + * @param {string} tagValue - The value of the tag. For example, the tag `@param {string} name` has + * a value of `{string} name`. + * @param {boolean} canHaveName - Indicates whether the value can include a symbol name. + * @param {boolean} canHaveType - Indicates whether the value can include a type expression that + * describes the symbol. + * @return {module:jsdoc/tag/type.TagInfo} Information obtained from the tag. + * @throws {Error} Thrown if a type expression cannot be parsed. + */ +exports.parse = function(tagValue, canHaveName, canHaveType) { + if (typeof tagValue !== 'string') { tagValue = ''; } + + var tagInfo = getTagInfo(tagValue, canHaveName, canHaveType); + tagInfo.type = tagInfo.type || []; + + typeParsers.forEach(function(parser) { + tagInfo = parser.call(this, tagInfo); + }); + + // if we wanted a type, but the parsers didn't add any type names, use the type expression + if (canHaveType && !tagInfo.type.length && tagInfo.typeExpression) { + tagInfo.type = [tagInfo.typeExpression]; + } + + return tagInfo; +}; diff --git a/third_party/jsdoc/lib/jsdoc/tag/validator.js b/third_party/jsdoc/lib/jsdoc/tag/validator.js new file mode 100644 index 0000000000..6a7f95bd15 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/tag/validator.js @@ -0,0 +1,56 @@ +/*global env: true */ +/** + @module jsdoc/tag/validator + @requires jsdoc/tag/dictionary + + @author Michael Mathews + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var dictionary = require('jsdoc/tag/dictionary'); +var format = require('util').format; +var logger = require('jsdoc/util/logger'); + +function buildMessage(tagName, meta, desc) { + var result = format('The @%s tag %s. File: %s, line: %s', tagName, desc, meta.filename, + meta.lineno); + if (meta.comment) { + result += '\n' + meta.comment; + } + return result; +} + +/** + * Validate the given tag. + */ +exports.validate = function(tag, tagDef, meta) { + // handle cases where the tag definition does not exist + if (!tagDef) { + // log an error if unknown tags are not allowed + if (!env.conf.tags.allowUnknownTags) { + logger.error( buildMessage(tag.title, meta, 'is not a known tag') ); + } + + // stop validation, since there's nothing to validate against + return; + } + + // check for errors that make the tag useless + if (!tagDef && !env.conf.tags.allowUnknownTags) { + logger.error( buildMessage(tag.title, meta, 'is not a known tag') ); + } + else if (!tag.text && tagDef.mustHaveValue) { + logger.error( buildMessage(tag.title, meta, 'requires a value') ); + } + + // check for minor issues that are usually harmless + else if (tag.text && tagDef.mustNotHaveValue) { + logger.warn( buildMessage(tag.title, meta, + 'does not permit a value; the value will be ignored') ); + } + else if (tag.value && tag.value.description && tagDef.mustNotHaveDescription) { + logger.warn( buildMessage(tag.title, meta, + 'does not permit a description; the description will be ignored') ); + } +}; diff --git a/third_party/jsdoc/lib/jsdoc/template.js b/third_party/jsdoc/lib/jsdoc/template.js new file mode 100644 index 0000000000..6c1d4dae3c --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/template.js @@ -0,0 +1,83 @@ +/** + * @file Wrapper for underscore's template utility to allow loading templates from files. + * @author Rafał Wrzeszcz + * @author
    Matthew Christopher Kastor-Inare III + * @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var _ = require('underscore'), + fs = require('jsdoc/fs'), + path = require('path'); + +/** + @module jsdoc/template + */ + +/** + @class + @classdesc Underscore template helper. + @param {string} path - Templates directory. + */ +exports.Template = function(path) { + this.path = path; + this.layout = null; + this.cache = {}; + // override default template tag settings + this.settings = { + evaluate: /<\?js([\s\S]+?)\?>/g, + interpolate: /<\?js=([\s\S]+?)\?>/g, + escape: /<\?js~([\s\S]+?)\?>/g + }; +}; + +/** Loads template from given file. + @param {string} file - Template filename. + @return {function} Returns template closure. + */ +exports.Template.prototype.load = function(file) { + return _.template(fs.readFileSync(file, 'utf8'), null, this.settings); +}; + +/** + Renders template using given data. + + This is low-level function, for rendering full templates use {@link Template.render()}. + + @param {string} file - Template filename. + @param {object} data - Template variables (doesn't have to be object, but passing variables dictionary is best way and most common use). + @return {string} Rendered template. + */ +exports.Template.prototype.partial = function(file, data) { + file = path.resolve(this.path, file); + + // load template into cache + if (!(file in this.cache)) { + this.cache[file] = this.load(file); + } + + // keep template helper context + return this.cache[file].call(this, data); +}; + +/** + Renders template with given data. + + This method automaticaly applies layout if set. + + @param {string} file - Template filename. + @param {object} data - Template variables (doesn't have to be object, but passing variables dictionary is best way and most common use). + @return {string} Rendered template. + */ +exports.Template.prototype.render = function(file, data) { + // main content + var content = this.partial(file, data); + + // apply layout + if (this.layout) { + data.content = content; + content = this.partial(this.layout, data); + } + + return content; +}; diff --git a/third_party/jsdoc/lib/jsdoc/tutorial.js b/third_party/jsdoc/lib/jsdoc/tutorial.js new file mode 100644 index 0000000000..304b283cea --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/tutorial.js @@ -0,0 +1,140 @@ +/** + @overview + @author Rafał Wrzeszcz + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var markdown = require('jsdoc/util/markdown'); +var util = require('util'); + +var hasOwnProp = Object.prototype.hasOwnProperty; + +/** Removes child tutorial from the parent. Does *not* unset child.parent though. + @param {Tutorial} parent - parent tutorial. + @param {Tutorial} child - Old child. + @private + */ +function removeChild(parent, child) { + var index = parent.children.indexOf(child); + if (index !== -1) { + parent.children.splice(index, 1); + } +} + +/** Adds a child to the parent tutorial. Does *not* set child.parent though. + @param {Tutorial} parent - parent tutorial. + @param {Tutorial} child - New child. + @private + */ +function addChild(parent, child) { + parent.children.push(child); +} + +/** + @module jsdoc/tutorial + */ + +/** + @class + @classdesc Represents a single JSDoc tutorial. + @param {string} name - Tutorial name. + @param {string} content - Text content. + @param {number} type - Source formating. + */ +exports.Tutorial = function(name, content, type) { + this.title = this.name = name; + this.content = content; + this.type = type; + + // default values + this.parent = null; + this.children = []; +}; + +/** Moves children from current parent to different one. + @param {?Tutorial} parent - New parent. If null, the tutorial has no parent. + */ +exports.Tutorial.prototype.setParent = function(parent) { + // removes node from old parent + if (this.parent) { + removeChild(this.parent, this); + } + + this.parent = parent; + if (parent) { + addChild(parent, this); + } +}; + +/** Removes children from current node. + @param {Tutorial} child - Old child. + */ +exports.Tutorial.prototype.removeChild = function(child) { + child.setParent(null); +}; + +/** Adds new children to current node. + @param {Tutorial} child - New child. + */ +exports.Tutorial.prototype.addChild = function(child) { + child.setParent(this); +}; + +/** Prepares source. + @return {string} HTML source. + */ +exports.Tutorial.prototype.parse = function() { + switch (this.type) { + // nothing to do + case exports.TYPES.HTML: + return this.content; + + // markdown + case exports.TYPES.MARKDOWN: + var mdParse = markdown.getParser(); + return mdParse(this.content); + + // uhm... should we react somehow? + // if not then this case can be merged with TYPES.HTML + default: + return this.content; + } +}; + +/** + * @class + * @classdesc Represents the root tutorial. + * @extends {module:jsdoc/tutorial.Tutorial} + */ +exports.RootTutorial = function() { + exports.RootTutorial.super_.call(this, '', ''); + + this._tutorials = {}; +}; +util.inherits(exports.RootTutorial, exports.Tutorial); + +/** + * Retrieve a tutorial by name. + * @param {string} name - Tutorial name. + * @return {module:jsdoc/tutorial.Tutorial} Tutorial instance. + */ +exports.RootTutorial.prototype.getByName = function(name) { + return hasOwnProp.call(this._tutorials, name) && this._tutorials[name]; +}; + +/** + * Add a child tutorial to the root. + * @param {module:jsdoc/tutorial.Tutorial} child - Child tutorial. + */ +exports.RootTutorial.prototype._addTutorial = function(child) { + this._tutorials[child.name] = child; +}; + +/** Tutorial source types. + @enum {number} + */ +exports.TYPES = { + HTML: 1, + MARKDOWN: 2 +}; diff --git a/third_party/jsdoc/lib/jsdoc/tutorial/resolver.js b/third_party/jsdoc/lib/jsdoc/tutorial/resolver.js new file mode 100644 index 0000000000..610405e196 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/tutorial/resolver.js @@ -0,0 +1,192 @@ +/** + @overview + @author Rafał Wrzeszcz + @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ + +/** + @module jsdoc/tutorial/resolver + */ +'use strict'; + +var logger = require('jsdoc/util/logger'); +var fs = require('jsdoc/fs'); +var path = require('path'); +var tutorial = require('jsdoc/tutorial'); + +var hasOwnProp = Object.prototype.hasOwnProperty; + +// TODO: make this an instance member of `RootTutorial`? +var conf = {}; +var finder = /^(.*)\.(x(?:ht)?ml|html?|md|markdown|json)$/i; + +/** checks if `conf` is the metadata for a single tutorial. + * A tutorial's metadata has a property 'title' and/or a property 'children'. + * @param {object} json - the object we want to test (typically from JSON.parse) + * @returns {boolean} whether `json` could be the metadata for a tutorial. + */ +function isTutorialJSON(json) { + // if conf.title exists or conf.children exists, it is metadata for a tutorial + return (hasOwnProp.call(json, 'title') || hasOwnProp.call(json, 'children')); +} + +/** + * Root tutorial. + * @type {module:jsdoc/tutorial.Root} + */ +exports.root = new tutorial.RootTutorial(); + +/** Helper function that adds tutorial configuration to the `conf` variable. + * This helps when multiple tutorial configurations are specified in one object, + * or when a tutorial's children are specified as tutorial configurations as + * opposed to an array of tutorial names. + * + * Recurses as necessary to ensure all tutorials are added. + * + * @param {string} name - if `meta` is a configuration for a single tutorial, + * this is that tutorial's name. + * @param {object} meta - object that contains tutorial information. + * Can either be for a single tutorial, or for multiple + * (where each key in `meta` is the tutorial name and each + * value is the information for a single tutorial). + * Additionally, a tutorial's 'children' property may + * either be an array of strings (names of the child tutorials), + * OR an object giving the configuration for the child tutorials. + */ +function addTutorialConf(name, meta) { + var i; + var l; + var names; + + if (isTutorialJSON(meta)) { + // if the children are themselves tutorial defintions as opposed to an + // array of strings, add each child. + if (hasOwnProp.call(meta, 'children') && !Array.isArray(meta.children)) { + names = Object.keys(meta.children); + for (i = 0, l = names.length; i < l; ++i) { + addTutorialConf(names[i], meta.children[names[i]]); + } + // replace with an array of names. + meta.children = names; + } + // check if the tutorial has already been defined... + if (hasOwnProp.call(conf, name)) { + logger.warn('Metadata for the tutorial %s is defined more than once. Only the first definition will be used.', name ); + } else { + conf[name] = meta; + } + } else { + // keys are tutorial names, values are `Tutorial` instances + names = Object.keys(meta); + for (i = 0, l = names.length; i < l; ++i) { + addTutorialConf(names[i], meta[names[i]]); + } + } +} + +/** + * Add a tutorial. + * @param {module:jsdoc/tutorial.Tutorial} current - Tutorial to add. + */ +exports.addTutorial = function(current) { + if (exports.root.getByName(current.name)) { + logger.warn('The tutorial %s is defined more than once. Only the first definition will be used.', current.name); + } else { + // by default, the root tutorial is the parent + current.setParent(exports.root); + + exports.root._addTutorial(current); + } +}; + +/** + * Load tutorials from the given path. + * @param {string} filepath - Tutorials directory. + */ +exports.load = function(filepath) { + var content; + var current; + var files = fs.ls(filepath, global.env.opts.recurse ? 10 : undefined); + var name; + var match; + var type; + + // tutorials handling + files.forEach(function(file) { + match = file.match(finder); + + // any filetype that can apply to tutorials + if (match) { + name = path.basename(match[1]); + content = fs.readFileSync(file, global.env.opts.encoding); + + switch (match[2].toLowerCase()) { + // HTML type + case 'xml': + case 'xhtml': + case 'html': + case 'htm': + type = tutorial.TYPES.HTML; + break; + + // Markdown typs + case 'md': + case 'markdown': + type = tutorial.TYPES.MARKDOWN; + break; + + // configuration file + case 'json': + var meta = JSON.parse(content); + addTutorialConf(name, meta); + // don't add this as a tutorial + return; + + // how can it be? check `finder' regexp + default: + // not a file we want to work with + return; + } + + current = new tutorial.Tutorial(name, content, type); + exports.addTutorial(current); + } + }); +}; + +/** Resolves hierarchical structure. + */ +exports.resolve = function() { + var item; + var current; + + Object.keys(conf).forEach(function(name) { + current = exports.root.getByName(name); + + // TODO: should we complain about this? + if (!current) { + return; + } + + item = conf[name]; + + // set title + if (item.title) { + current.title = item.title; + } + + // add children + if (item.children) { + item.children.forEach(function(child) { + var childTutorial = exports.root.getByName(child); + + if (!childTutorial) { + logger.error('Missing child tutorial: %s', child); + } + else { + childTutorial.setParent(current); + } + }); + } + }); +}; diff --git a/third_party/jsdoc/lib/jsdoc/util/doop.js b/third_party/jsdoc/lib/jsdoc/util/doop.js new file mode 100644 index 0000000000..ba0fea2f6f --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/util/doop.js @@ -0,0 +1,82 @@ +/*global Set */ + +/** + Deep clone a simple object. Ignores non-enumerable properties. + @private + */ +'use strict'; + +var setDefined = typeof Set !== 'undefined'; + +function addItem(set, item) { + if (setDefined) { + set.add(item); + } + else if (set.indexOf(item) === -1) { + set.push(item); + } +} + +function hasItem(set, item) { + if (setDefined) { + return set.has(item); + } + else { + return set.indexOf(item) !== -1; + } +} + +// TODO: should share code with jsdoc/util/dumper~ObjectWalker +function doop(o, seen) { + var clone; + var descriptor; + var props; + var i; + var l; + + if (!seen) { + seen = setDefined ? new Set() : []; + } + + if (o instanceof Object && o.constructor !== Function) { + if ( hasItem(seen, o) ) { + clone = ''; + } + else { + addItem(seen, o); + + if ( Array.isArray(o) ) { + clone = []; + for (i = 0, l = o.length; i < l; i++) { + clone[i] = (o[i] instanceof Object) ? doop(o[i], seen) : o[i]; + } + } + else { + clone = Object.create( Object.getPrototypeOf(o) ); + props = Object.keys(o); + for (i = 0, l = props.length; i < l; i++) { + descriptor = Object.getOwnPropertyDescriptor(o, props[i]); + if (descriptor.value) { + descriptor.value = doop(descriptor.value, seen); + } + + Object.defineProperty(clone, props[i], descriptor); + } + } + } + + return clone; + } + + return o; +} + +// Wrapper to avoid exposing the 'seen' parameter outside of this module. +function doopWrapper(o) { + return doop(o); +} + +// for backwards compatibility +doopWrapper.doop = doopWrapper; + +module.exports = doopWrapper; diff --git a/third_party/jsdoc/lib/jsdoc/util/dumper.js b/third_party/jsdoc/lib/jsdoc/util/dumper.js new file mode 100644 index 0000000000..3e3f88deda --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/util/dumper.js @@ -0,0 +1,135 @@ +/*global Set */ +/** + * Recursively print out all names and values in a data structure. + * @module jsdoc/util/dumper + * @author Michael Mathews + * @license Apache License 2.0 - See file 'LICENSE.md' in this project. + */ +'use strict'; + +var util = require('util'); +var setDefined = typeof Set !== 'undefined'; + +function ObjectWalker() { + if (setDefined) { + this.seenItems = new Set(); + } else { + this.seenItems = []; + } +} + +ObjectWalker.prototype.seen = function(object) { + var result; + if (setDefined) { + result = this.seenItems.has(object); + } else { + result = object.hasBeenSeenByWalkerDumper; + } + return result; +}; + +ObjectWalker.prototype.markAsSeen = function(object) { + if (setDefined) { + this.seenItems.add(object); + } else { + object.hasBeenSeenByWalkerDumper = true; + this.seenItems.push(object); + } +}; + +ObjectWalker.prototype.cleanSeenFlag = function() { + if (setDefined) { + this.seenItems = new Set(); + } else { + this.seenItems.forEach(function(object) { + delete object.hasBeenSeenByWalkerDumper; + }); + } +}; + +// some objects are unwalkable, like Java native objects +ObjectWalker.prototype.isUnwalkable = function(o) { + return (o && typeof o === 'object' && typeof o.constructor === 'undefined'); +}; + +ObjectWalker.prototype.isFunction = function(o) { + return (o && typeof o === 'function' || o instanceof Function); +}; + +ObjectWalker.prototype.isObject = function(o) { + return o && o instanceof Object || + (o && typeof o.constructor !== 'undefined' && o.constructor.name === 'Object'); +}; + +ObjectWalker.prototype.checkCircularRefs = function(o, func) { + if ( this.seen(o) ) { + return ''; + } + else { + this.markAsSeen(o); + return func(o); + } +}; + +ObjectWalker.prototype.walk = function(o) { + var result; + + var self = this; + + if ( this.isUnwalkable(o) ) { + result = ''; + } + else if ( o === undefined ) { + result = null; + } + else if ( Array.isArray(o) ) { + result = this.checkCircularRefs(o, function(arr) { + var newArray = []; + arr.forEach(function(item) { + newArray.push( self.walk(item) ); + }); + + return newArray; + }); + } + else if ( util.isRegExp(o) ) { + result = ''; + } + else if ( util.isDate(o) ) { + result = ''; + } + else if ( util.isError(o) ) { + result = { message: o.message }; + } + else if ( this.isFunction(o) ) { + result = ''; + } + else if ( this.isObject(o) && o !== null ) { + result = this.checkCircularRefs(o, function(obj) { + var newObj = {}; + Object.keys(obj).forEach(function(key) { + if (!setDefined && key === 'hasBeenSeenByWalkerDumper') { return; } + newObj[key] = self.walk(obj[key]); + }); + + return newObj; + }); + } + // should be safe to JSON.stringify() everything else + else { + result = o; + } + + return result; +}; + +/** + * @param {*} object + */ +exports.dump = function(object) { + var walker = new ObjectWalker(); + var result = JSON.stringify(walker.walk(object), null, 4); + walker.cleanSeenFlag(); + + return result; +}; diff --git a/third_party/jsdoc/lib/jsdoc/util/error.js b/third_party/jsdoc/lib/jsdoc/util/error.js new file mode 100644 index 0000000000..6ed1895d5a --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/util/error.js @@ -0,0 +1,35 @@ +/*global env: true */ +/** + * Helper functions for handling errors. + * + * @deprecated As of JSDoc 3.3.0. This module may be removed in a future release. Use the module + * {@link module:jsdoc/util/logger} to log warnings and errors. + * @module jsdoc/util/error + */ +'use strict'; + +/** + * Log an exception as an error. + * + * Prior to JSDoc 3.3.0, this method would either log the exception (if lenient mode was enabled) or + * re-throw the exception (default). + * + * In JSDoc 3.3.0 and later, lenient mode has been replaced with strict mode, which is disabled by + * default. If strict mode is enabled, calling the `handle` method causes JSDoc to exit immediately, + * just as if the exception had been re-thrown. + * + * @deprecated As of JSDoc 3.3.0. This module may be removed in a future release. + * @param {Error} e - The exception to log. + * @memberof module:jsdoc/util/error + */ +exports.handle = function(e) { + var logger = require('jsdoc/util/logger'); + var msg = e ? ( e.message || JSON.stringify(e) ) : ''; + + // include the error type if it's an Error object + if (e instanceof Error) { + msg = e.name + ': ' + msg; + } + + logger.error(msg); +}; diff --git a/third_party/jsdoc/lib/jsdoc/util/logger.js b/third_party/jsdoc/lib/jsdoc/util/logger.js new file mode 100644 index 0000000000..98f732e4ef --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/util/logger.js @@ -0,0 +1,232 @@ +/** + * Logging tools for JSDoc. + * + * Log messages are printed to the console based on the current logging level. By default, messages + * at level `{@link module:jsdoc/util/logger.LEVELS.ERROR}` or above are logged; all other messages + * are ignored. + * + * In addition, the module object emits an event whenever a logger method is called, regardless of + * the current logging level. The event's name is the string `logger:` followed by the logger's name + * (for example, `logger:error`). The event handler receives an array of arguments that were passed + * to the logger method. + * + * Each logger method accepts a `message` parameter that may contain zero or more placeholders. Each + * placeholder is replaced by the corresponding argument following the message. If the placeholder + * does not have a corresponding argument, the placeholder is not replaced. + * + * The following placeholders are supported: + * + * + `%s`: String. + * + `%d`: Number. + * + `%j`: JSON. + * + * @module jsdoc/util/logger + * @extends module:events.EventEmitter + * @example + * var logger = require('jsdoc/util/logger'); + * + * var data = { + * foo: 'bar' + * }; + * var name = 'baz'; + * + * logger.warn('%j %s', data, name); // prints '{"foo":"bar"} baz' + * @see http://nodejs.org/api/util.html#util_util_format_format + */ +'use strict'; + +var runtime = require('jsdoc/util/runtime'); +var util = require('util'); + +function Logger() {} +util.inherits(Logger, require('events').EventEmitter); + +var logger = module.exports = new Logger(); + +/** + * Logging levels for the JSDoc logger. The default logging level is + * {@link module:jsdoc/util/logger.LEVELS.ERROR}. + * + * @enum + * @type {number} + */ +var LEVELS = logger.LEVELS = { + /** Do not log any messages. */ + SILENT: 0, + /** Log fatal errors that prevent JSDoc from running. */ + FATAL: 10, + /** Log all errors, including errors from which JSDoc can recover. */ + ERROR: 20, + /** + * Log the following messages: + * + * + Warnings + * + Errors + */ + WARN: 30, + /** + * Log the following messages: + * + * + Informational messages + * + Warnings + * + Errors + */ + INFO: 40, + /** + * Log the following messages: + * + * + Debugging messages + * + Informational messages + * + Warnings + * + Errors + */ + DEBUG: 50, + /** Log all messages. */ + VERBOSE: 1000 +}; + +var DEFAULT_LEVEL = LEVELS.WARN; +var logLevel = DEFAULT_LEVEL; + +var PREFIXES = { + DEBUG: 'DEBUG: ', + ERROR: 'ERROR: ', + FATAL: 'FATAL: ', + WARN: 'WARNING: ' +}; + +// Add a prefix to a log message if necessary. +function addPrefix(args, prefix) { + var updatedArgs; + + if (prefix && typeof args[0] === 'string') { + updatedArgs = args.slice(0); + updatedArgs[0] = prefix + updatedArgs[0]; + } + + return updatedArgs || args; +} + +// TODO: document events +function wrapLogFunction(name, func) { + var eventName = 'logger:' + name; + var upperCaseName = name.toUpperCase(); + var level = LEVELS[upperCaseName]; + var prefix = PREFIXES[upperCaseName]; + + return function() { + var loggerArgs; + + var args = Array.prototype.slice.call(arguments, 0); + + if (logLevel >= level) { + loggerArgs = addPrefix(args, prefix); + func.apply(null, loggerArgs); + } + + args.unshift(eventName); + logger.emit.apply(logger, args); + }; +} + +// Print a message to STDOUT without a terminating newline. +function printToStdout() { + var args = Array.prototype.slice.call(arguments, 0); + + process.stdout.write( util.format.apply(util, args) ); +} + +/** + * Log a message at log level {@link module:jsdoc/util/logger.LEVELS.DEBUG}. + * + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.debug = wrapLogFunction('debug', console.info); +/** + * Print a string at log level {@link module:jsdoc/util/logger.LEVELS.DEBUG}. The string is not + * terminated by a newline. + * + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.printDebug = wrapLogFunction('debug', printToStdout); +/** + * Log a message at log level {@link module:jsdoc/util/logger.LEVELS.ERROR}. + * + * @name module:jsdoc/util/logger.error + * @function + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.error = wrapLogFunction('error', console.error); +/** + * Log a message at log level {@link module:jsdoc/util/logger.LEVELS.FATAL}. + * + * @name module:jsdoc/util/logger.fatal + * @function + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.fatal = wrapLogFunction('fatal', console.error); +/** + * Log a message at log level {@link module:jsdoc/util/logger.LEVELS.INFO}. + * + * @name module:jsdoc/util/logger.info + * @function + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.info = wrapLogFunction('info', console.info); +/** + * Print a string at log level {@link module:jsdoc/util/logger.LEVELS.INFO}. The string is not + * terminated by a newline. + * + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.printInfo = wrapLogFunction('info', printToStdout); +/** + * Log a message at log level {@link module:jsdoc/util/logger.LEVELS.VERBOSE}. + * + * @name module:jsdoc/util/logger.verbose + * @function + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.verbose = wrapLogFunction('verbose', console.info); +/** + * Print a string at log level {@link module:jsdoc/util/logger.LEVELS.VERBOSE}. The string is not + * terminated by a newline. + * + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.printVerbose = wrapLogFunction('verbose', printToStdout); +/** + * Log a message at log level {@link module:jsdoc/util/logger.LEVELS.WARN}. + * + * @name module:jsdoc/util/logger.warn + * @function + * @param {string} message - The message to log. + * @param {...*=} values - The values that will replace the message's placeholders. + */ +logger.warn = wrapLogFunction('warn', console.warn); + +/** + * Set the log level. + * + * @param {module:jsdoc/util/logger.LEVELS} level - The log level to use. + */ +logger.setLevel = function setLevel(level) { + logLevel = (level !== undefined) ? level : DEFAULT_LEVEL; +}; + +/** + * Get the current log level. + * + * @return {module:jsdoc/util/logger.LEVELS} The current log level. + */ +logger.getLevel = function getLevel() { + return logLevel; +}; diff --git a/third_party/jsdoc/lib/jsdoc/util/markdown.js b/third_party/jsdoc/lib/jsdoc/util/markdown.js new file mode 100644 index 0000000000..4f2e198cec --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/util/markdown.js @@ -0,0 +1,156 @@ +/*global env */ + +/** + * Provides access to Markdown-related functions. + * @module jsdoc/util/markdown + * @author Michael Mathews + * @author Ben Blank + */ +'use strict'; + +var util = require('util'); + +/** + * Enumeration of Markdown parsers that are available. + * @enum {String} + */ +var parserNames = { + /** + * The "[markdown-js](https://github.com/evilstreak/markdown-js)" (aka "evilstreak") parser. + * + * @deprecated Replaced by "marked," as markdown-js does not support inline HTML. + */ + evilstreak: 'marked', + /** + * The "GitHub-flavored Markdown" parser. + * @deprecated Replaced by "marked." + */ + gfm: 'marked', + /** + * The "[Marked](https://github.com/chjj/marked)" parser. + */ + marked: 'marked' +}; + +/** + * Escape underscores that occur within {@ ... } in order to protect them + * from the markdown parser(s). + * @param {String} source the source text to sanitize. + * @returns {String} `source` where underscores within {@ ... } have been + * protected with a preceding backslash (i.e. \_) -- the markdown parsers + * will strip the backslash and protect the underscore. + */ +function escapeUnderscores(source) { + return source.replace(/\{@[^}\r\n]+\}/g, function (wholeMatch) { + return wholeMatch.replace(/(^|[^\\])_/g, '$1\\_'); + }); +} + +/** + * Escape HTTP/HTTPS URLs so that they are not automatically converted to HTML links. + * + * @param {string} source - The source text to escape. + * @return {string} The source text with escape characters added to HTTP/HTTPS URLs. + */ +function escapeUrls(source) { + return source.replace(/(https?)\:\/\//g, '$1:\\/\\/'); +} + +/** + * Unescape HTTP/HTTPS URLs after Markdown parsing is complete. + * + * @param {string} source - The source text to unescape. + * @return {string} The source text with escape characters removed from HTTP/HTTPS URLs. + */ +function unescapeUrls(source) { + return source.replace(/(https?)\:\\\/\\\//g, '$1://'); +} + +/** + * Escape characters in text within a code block. + * + * @param {string} source - The source text to escape. + * @return {string} The escaped source text. + */ +function escapeCode(source) { + return source.replace(/%s', level, text, level); + }; + + // Allow prettyprint to work on inline code samples + markedRenderer.code = function(code, language) { + var langClass = language ? ' lang-' + language : ''; + + return util.format( '
    %s
    ', + langClass, escapeCode(code) ); + }; + + parserFunction = function(source) { + var result; + + source = escapeUnderscores(source); + source = escapeUrls(source); + + result = marked(source, { renderer: markedRenderer }) + .replace(/\s+$/, '') + .replace(/'/g, "'"); + result = unescapeUrls(result); + + return result; + }; + parserFunction._parser = parserNames.marked; + return parserFunction; + } + else { + logger.error('Unrecognized Markdown parser "%s". Markdown support is disabled.', + parserName); + } +} + +/** + * Retrieve a Markdown parsing function based on the value of the `conf.json` file's + * `env.conf.markdown` property. The parsing function accepts a single parameter containing Markdown + * source. The function uses the parser specified in `conf.json` to transform the Markdown source to + * HTML, then returns the HTML as a string. + * + * @returns {function} A function that accepts Markdown source, feeds it to the selected parser, and + * returns the resulting HTML. + */ +exports.getParser = function() { + var conf = env.conf.markdown; + if (conf && conf.parser) { + return getParseFunction(parserNames[conf.parser], conf); + } + else { + // marked is the default parser + return getParseFunction(parserNames.marked, conf); + } +}; diff --git a/third_party/jsdoc/lib/jsdoc/util/runtime.js b/third_party/jsdoc/lib/jsdoc/util/runtime.js new file mode 100644 index 0000000000..1a50a32115 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/util/runtime.js @@ -0,0 +1,117 @@ +/*global env, java */ +/** + * Helper functions to enable JSDoc to run on multiple JavaScript runtimes. + * + * @module jsdoc/util/runtime + * @private + */ +'use strict'; + +var os = require('os'); + +// These strings represent directory names; do not modify them! +/** @private */ +var RHINO = exports.RHINO = 'rhino'; +/** @private */ +var NODE = exports.NODE = 'node'; + +/** + * The JavaScript runtime that is executing JSDoc: + * + * + `module:jsdoc/util/runtime~RHINO`: Mozilla Rhino. + * + `module:jsdoc/util/runtime~NODE`: Node.js. + * + * @private + */ +var runtime = (function() { + if (global.Packages && typeof global.Packages === 'object' && + Object.prototype.toString.call(global.Packages) === '[object JavaPackage]') { + return RHINO; + } else if (require && require.main && module) { + return NODE; + } else { + // unknown runtime + throw new Error('Unable to identify the current JavaScript runtime.'); + } +})(); + +/** + * Check whether Mozilla Rhino is running JSDoc. + * @return {boolean} Set to `true` if the current runtime is Mozilla Rhino. + */ +exports.isRhino = function() { + return runtime === RHINO; +}; + +/** + * Check whether Node.js is running JSDoc. + * @return {boolean} Set to `true` if the current runtime is Node.js. + */ +exports.isNode = function() { + return runtime === NODE; +}; + +function initializeRhino(args) { + // the JSDoc dirname is the main module URI, minus the filename, converted to a path + var uriParts = require.main.uri.split('/'); + uriParts.pop(); + + env.dirname = String( new java.io.File(new java.net.URI(uriParts.join('/'))) ); + env.pwd = String( java.lang.System.getenv().get('PWD') ); + env.args = args; + + require(env.dirname + '/rhino/rhino-shim.js'); +} + +function initializeNode(args) { + var fs = require('fs'); + var path = require('path'); + + var jsdocPath = args[0]; + var pwd = args[1]; + + // resolve the path if it's a symlink + if ( fs.statSync(jsdocPath).isSymbolicLink() ) { + jsdocPath = path.resolve( path.dirname(jsdocPath), fs.readlinkSync(jsdocPath) ); + } + + env.dirname = jsdocPath; + env.pwd = pwd; + env.args = process.argv.slice(2); +} + +exports.initialize = function(args) { + switch (runtime) { + case RHINO: + initializeRhino(args); + break; + case NODE: + initializeNode(args); + break; + default: + throw new Error('Cannot initialize the unknown JavaScript runtime "' + runtime + '"!'); + } +}; + +/** + * Retrieve the identifier for the current JavaScript runtime. + * + * @private + * @return {string} The runtime identifier. + */ +exports.getRuntime = function() { + return runtime; +}; + +/** + * Get the require path for the runtime-specific implementation of a module. + * + * @param {string} partialPath - The partial path to the module. Use the same format as when calling + * `require()`. + * @return {object} The require path for the runtime-specific implementation of the module. + */ +exports.getModulePath = function(partialPath) { + var path = require('path'); + + return path.join(env.dirname, runtime, partialPath); +}; diff --git a/third_party/jsdoc/lib/jsdoc/util/templateHelper.js b/third_party/jsdoc/lib/jsdoc/util/templateHelper.js new file mode 100644 index 0000000000..2c23052771 --- /dev/null +++ b/third_party/jsdoc/lib/jsdoc/util/templateHelper.js @@ -0,0 +1,843 @@ +/*global env: true */ +/** + * @module jsdoc/util/templateHelper + */ +'use strict'; + +var catharsis = require('catharsis'); +var dictionary = require('jsdoc/tag/dictionary'); +var name = require('jsdoc/name'); +var util = require('util'); + +var hasOwnProp = Object.prototype.hasOwnProperty; +var NAMESPACES = require('jsdoc/name').NAMESPACES; + +var files = {}; +var ids = {}; + +// each container gets its own html file +var containers = ['class', 'module', 'external', 'namespace', 'mixin', 'interface']; + +var tutorials; + +/** Sets tutorials map. + @param {jsdoc.tutorial.Tutorial} root - Root tutorial node. + */ +exports.setTutorials = function(root) { + tutorials = root; +}; + +exports.globalName = name.SCOPE.NAMES.GLOBAL; +exports.fileExtension = '.html'; +exports.scopeToPunc = name.scopeToPunc; + +function getNamespace(kind) { + if (dictionary.isNamespace(kind)) { + return kind + ':'; + } + return ''; +} + +function makeUniqueFilename(filename, str) { + var key = filename.toLowerCase(); + var nonUnique = true; + + // don't allow filenames to begin with an underscore + if (!filename.length || filename[0] === '_') { + filename = 'X' + filename; + key = filename.toLowerCase(); + } + + // append enough underscores to make the filename unique + while (nonUnique) { + if ( hasOwnProp.call(files, key) ) { + filename += '_'; + key = filename.toLowerCase(); + } else { + nonUnique = false; + } + } + + files[key] = str; + return filename; +} + +function makeUniqueId(filename, id) { + var key = id.toLowerCase(); + var nonUnique = true; + + // append enough underscores to make the identifier unique + while (nonUnique) { + if ( hasOwnProp.call(ids, filename) && ids[filename].indexOf(key) !== -1 ) { + id += '_'; + key = id.toLowerCase(); + } + else { + nonUnique = false; + } + } + + ids[filename] = ids[filename] || []; + ids[filename].push(id); + + return id; +} + +var htmlsafe = exports.htmlsafe = function(str) { + return str.replace(/&/g, '&') + .replace(/]/g, '_') + // use - instead of ~ to denote 'inner' + .replace(/~/g, '-') + // use _ instead of # to denote 'instance' + .replace(/\#/g, '_') + // use _ instead of / (for example, in module names) + .replace(/\//g, '_') + // remove the variation, if any + .replace(/\([\s\S]*\)$/, '') + // make sure we don't create hidden files, or files whose names start with a dash + .replace(/^[\.\-]/, ''); + + // in case we've now stripped the entire basename (uncommon, but possible): + basename = basename.length ? basename : '_'; + + return makeUniqueFilename(basename, str) + exports.fileExtension; +}; + +/** + * Convert a string to an identifier that is unique for a specified URL. + * + * Identifiers are not considered unique if they are capitalized differently but are otherwise + * identical. + * + * @method + * @param {string} url - The URL in which the identifier will be used. + * @param {string} str - The string to convert. + * @return {string} A unique identifier based on the original string. + */ +var getUniqueId = exports.getUniqueId = makeUniqueId; + +// two-way lookup +var linkMap = { + longnameToUrl: {}, + urlToLongname: {} +}; + +var tutorialLinkMap = { + nameToUrl: {}, + urlToName: {} +}; + +var longnameToUrl = exports.longnameToUrl = linkMap.longnameToUrl; + +function parseType(longname) { + var err; + + try { + return catharsis.parse(longname, {jsdoc: true}); + } + catch (e) { + err = new Error('unable to parse ' + longname + ': ' + e.message); + require('jsdoc/util/logger').error(err); + return longname; + } +} + +function stringifyType(parsedType, cssClass, linkMap) { + return require('catharsis').stringify(parsedType, { + cssClass: cssClass, + htmlSafe: true, + links: linkMap + }); +} + +function hasUrlPrefix(text) { + return (/^(http|ftp)s?:\/\//).test(text); +} + +function isComplexTypeExpression(expr) { + // record types, type unions, and type applications all count as "complex" + return expr.search(/[{(|]/) !== -1 || expr.search(/ 0; +} + +function fragmentHash(fragmentId) { + if (!fragmentId) { + return ''; + } + + return '#' + fragmentId; +} + +/** + * Build an HTML link to the symbol with the specified longname. If the longname is not + * associated with a URL, this method simply returns the link text, if provided, or the longname. + * + * The `longname` parameter can also contain a URL rather than a symbol's longname. + * + * This method supports type applications that can contain one or more types, such as + * `Array.` or `Array.<(MyClass|YourClass)>`. In these examples, the method attempts to + * replace `Array`, `MyClass`, and `YourClass` with links to the appropriate types. The link text + * is ignored for type applications. + * + * @param {string} longname - The longname (or URL) that is the target of the link. + * @param {string=} linkText - The text to display for the link, or `longname` if no text is + * provided. + * @param {Object} options - Options for building the link. + * @param {string=} options.cssClass - The CSS class (or classes) to include in the link's `` + * tag. + * @param {string=} options.fragmentId - The fragment identifier (for example, `name` in + * `foo.html#name`) to append to the link target. + * @param {string=} options.linkMap - The link map in which to look up the longname. + * @param {boolean=} options.monospace - Indicates whether to display the link text in a monospace + * font. + * @return {string} The HTML link, or the link text if the link is not available. + */ +function buildLink(longname, linkText, options) { + var classString = options.cssClass ? util.format(' class="%s"', options.cssClass) : ''; + var fragmentString = fragmentHash(options.fragmentId); + var stripped; + var text; + var url; + var parsedType; + + // handle cases like: + // @see + // @see http://example.org + stripped = longname ? longname.replace(/^<|>$/g, '') : ''; + if ( hasUrlPrefix(stripped) ) { + url = stripped; + text = linkText || stripped; + } + // handle complex type expressions that may require multiple links + // (but skip anything that looks like an inline tag) + else if (longname && isComplexTypeExpression(longname) && /\{\@.+\}/.test(longname) === false) { + parsedType = parseType(longname); + return stringifyType(parsedType, options.cssClass, options.linkMap); + } + else { + url = hasOwnProp.call(options.linkMap, longname) ? options.linkMap[longname] : ''; + text = linkText || longname; + } + + text = options.monospace ? '' + text + '' : text; + + if (!url) { + return text; + } + else { + return util.format('%s', encodeURI(url + fragmentString), classString, + text); + } +} + +/** + * Retrieve an HTML link to the symbol with the specified longname. If the longname is not + * associated with a URL, this method simply returns the link text, if provided, or the longname. + * + * The `longname` parameter can also contain a URL rather than a symbol's longname. + * + * This method supports type applications that can contain one or more types, such as + * `Array.` or `Array.<(MyClass|YourClass)>`. In these examples, the method attempts to + * replace `Array`, `MyClass`, and `YourClass` with links to the appropriate types. The link text + * is ignored for type applications. + * + * @param {string} longname - The longname (or URL) that is the target of the link. + * @param {string=} linkText - The text to display for the link, or `longname` if no text is + * provided. + * @param {string=} cssClass - The CSS class (or classes) to include in the link's `` tag. + * @param {string=} fragmentId - The fragment identifier (for example, `name` in `foo.html#name`) to + * append to the link target. + * @return {string} The HTML link, or a plain-text string if the link is not available. + */ +var linkto = exports.linkto = function(longname, linkText, cssClass, fragmentId) { + return buildLink(longname, linkText, { + cssClass: cssClass, + fragmentId: fragmentId, + linkMap: longnameToUrl + }); +}; + +function useMonospace(tag, text) { + var cleverLinks; + var monospaceLinks; + var result; + + if ( hasUrlPrefix(text) ) { + result = false; + } + else if (tag === 'linkplain') { + result = false; + } + else if (tag === 'linkcode') { + result = true; + } + else { + cleverLinks = env.conf.templates.cleverLinks; + monospaceLinks = env.conf.templates.monospaceLinks; + + if (monospaceLinks || cleverLinks) { + result = true; + } + } + + return result || false; +} + +function splitLinkText(text) { + var linkText; + var target; + var splitIndex; + + // if a pipe is not present, we split on the first space + splitIndex = text.indexOf('|'); + if (splitIndex === -1) { + splitIndex = text.search(/\s/); + } + + if (splitIndex !== -1) { + linkText = text.substr(splitIndex + 1); + // Normalize subsequent newlines to a single space. + linkText = linkText.replace(/\n+/, ' '); + target = text.substr(0, splitIndex); + } + + return { + linkText: linkText, + target: target || text + }; +} + +var tutorialToUrl = exports.tutorialToUrl = function(tutorial) { + var node = tutorials.getByName(tutorial); + // no such tutorial + if (!node) { + require('jsdoc/util/logger').error( new Error('No such tutorial: ' + tutorial) ); + return null; + } + + var url; + // define the URL if necessary + if (!hasOwnProp.call(tutorialLinkMap.nameToUrl, node.name)) { + url = 'tutorial-' + getUniqueFilename(node.name); + tutorialLinkMap.nameToUrl[node.name] = url; + tutorialLinkMap.urlToName[url] = node.name; + } + + return tutorialLinkMap.nameToUrl[node.name]; +}; + +/** + * Retrieve a link to a tutorial, or the name of the tutorial if the tutorial is missing. If the + * `missingOpts` parameter is supplied, the names of missing tutorials will be prefixed by the + * specified text and wrapped in the specified HTML tag and CSS class. + * + * @todo Deprecate missingOpts once we have a better error-reporting mechanism. + * @param {string} tutorial The name of the tutorial. + * @param {string} content The link text to use. + * @param {object} [missingOpts] Options for displaying the name of a missing tutorial. + * @param {string} missingOpts.classname The CSS class to wrap around the tutorial name. + * @param {string} missingOpts.prefix The prefix to add to the tutorial name. + * @param {string} missingOpts.tag The tag to wrap around the tutorial name. + * @return {string} An HTML link to the tutorial, or the name of the tutorial with the specified + * options. + */ +var toTutorial = exports.toTutorial = function(tutorial, content, missingOpts) { + if (!tutorial) { + require('jsdoc/util/logger').error( new Error('Missing required parameter: tutorial') ); + return null; + } + + var node = tutorials.getByName(tutorial); + // no such tutorial + if (!node) { + missingOpts = missingOpts || {}; + var tag = missingOpts.tag; + var classname = missingOpts.classname; + + var link = tutorial; + if (missingOpts.prefix) { + link = missingOpts.prefix + link; + } + if (tag) { + link = '<' + tag + (classname ? (' class="' + classname + '">') : '>') + link; + link += ''; + } + return link; + } + + content = content || node.title; + + return '' + content + ''; +}; + +/** Find symbol {@link ...} and {@tutorial ...} strings in text and turn into html links */ +exports.resolveLinks = function(str) { + var replaceInlineTags = require('jsdoc/tag/inline').replaceInlineTags; + + function extractLeadingText(string, completeTag) { + var tagIndex = string.indexOf(completeTag); + var leadingText = null; + var leadingTextRegExp = /\[(.+?)\]/g; + var leadingTextInfo = leadingTextRegExp.exec(string); + + // did we find leading text, and if so, does it immediately precede the tag? + while (leadingTextInfo && leadingTextInfo.length) { + if (leadingTextInfo.index + leadingTextInfo[0].length === tagIndex) { + string = string.replace(leadingTextInfo[0], ''); + leadingText = leadingTextInfo[1]; + break; + } + + leadingTextInfo = leadingTextRegExp.exec(string); + } + + return { + leadingText: leadingText, + string: string + }; + } + + function processLink(string, tagInfo) { + var leading = extractLeadingText(string, tagInfo.completeTag); + var linkText = leading.leadingText; + var monospace; + var split; + var target; + string = leading.string; + + split = splitLinkText(tagInfo.text); + target = split.target; + linkText = linkText || split.linkText; + + monospace = useMonospace(tagInfo.tag, tagInfo.text); + + return string.replace( tagInfo.completeTag, buildLink(target, linkText, { + linkMap: longnameToUrl, + monospace: monospace + }) ); + } + + function processTutorial(string, tagInfo) { + var leading = extractLeadingText(string, tagInfo.completeTag); + string = leading.string; + + return string.replace( tagInfo.completeTag, toTutorial(tagInfo.text, leading.leadingText) ); + } + + var replacers = { + link: processLink, + linkcode: processLink, + linkplain: processLink, + tutorial: processTutorial + }; + + return replaceInlineTags(str, replacers).newString; +}; + +/** Convert tag text like "Jane Doe " into a mailto link */ +exports.resolveAuthorLinks = function(str) { + var author; + var matches = str.match(/^\s?([\s\S]+)\b\s+<(\S+@\S+)>\s?$/); + if (matches && matches.length === 3) { + author = '' + htmlsafe(matches[1]) + ''; + } + else { + author = htmlsafe(str); + } + + return author; +}; + +/** + * Find items in a TaffyDB database that match the specified key-value pairs. + * @param {TAFFY} data The TaffyDB database to search. + * @param {object|function} spec Key-value pairs to match against (for example, + * `{ longname: 'foo' }`), or a function that returns `true` if a value matches or `false` if it + * does not match. + * @return {array} The matching items. + */ +var find = exports.find = function(data, spec) { + return data(spec).get(); +}; + +/** + * Check whether a symbol is the only symbol exported by a module (as in + * `module.exports = function() {};`). + * + * @private + * @param {module:jsdoc/doclet.Doclet} doclet - The doclet for the symbol. + * @return {boolean} `true` if the symbol is the only symbol exported by a module; otherwise, + * `false`. + */ +function isModuleExports(doclet) { + return doclet.longname && doclet.longname === doclet.name && + doclet.longname.indexOf(NAMESPACES.MODULE) === 0 && doclet.kind !== 'module'; +} + +/** + * Retrieve all of the following types of members from a set of doclets: + * + * + Classes + * + Externals + * + Globals + * + Mixins + * + Modules + * + Namespaces + * + Events + * @param {TAFFY} data The TaffyDB database to search. + * @return {object} An object with `classes`, `externals`, `globals`, `mixins`, `modules`, + * `events`, and `namespaces` properties. Each property contains an array of objects. + */ +exports.getMembers = function(data) { + var members = { + classes: find( data, {kind: 'class'} ), + externals: find( data, {kind: 'external'} ), + events: find( data, {kind: 'event'} ), + globals: find(data, { + kind: ['member', 'function', 'constant', 'typedef'], + memberof: { isUndefined: true } + }), + mixins: find( data, {kind: 'mixin'} ), + modules: find( data, {kind: 'module'} ), + namespaces: find( data, {kind: 'namespace'} ), + interfaces: find( data, {kind: 'interface'} ) + }; + + // strip quotes from externals, since we allow quoted names that would normally indicate a + // namespace hierarchy (as in `@external "jquery.fn"`) + // TODO: we should probably be doing this for other types of symbols, here or elsewhere; see + // jsdoc3/jsdoc#396 + members.externals = members.externals.map(function(doclet) { + doclet.name = doclet.name.replace(/(^"|"$)/g, ''); + return doclet; + }); + + // functions that are also modules (as in `module.exports = function() {};`) are not globals + members.globals = members.globals.filter(function(doclet) { + return !isModuleExports(doclet); + }); + + return members; +}; + +/** + * Retrieve the member attributes for a doclet (for example, `virtual`, `static`, and + * `readonly`). + * @param {object} d The doclet whose attributes will be retrieved. + * @return {array} The member attributes for the doclet. + */ +exports.getAttribs = function(d) { + var attribs = []; + + if (!d) { + return attribs; + } + + if (d.virtual) { + attribs.push('abstract'); + } + + if (d.access && d.access !== 'public') { + attribs.push(d.access); + } + + if (d.scope && d.scope !== 'instance' && d.scope !== name.SCOPE.NAMES.GLOBAL) { + if (d.kind === 'function' || d.kind === 'member' || d.kind === 'constant') { + attribs.push(d.scope); + } + } + + if (d.readonly === true) { + if (d.kind === 'member') { + attribs.push('readonly'); + } + } + + if (d.kind === 'constant') { + attribs.push('constant'); + } + + if (d.nullable === true) { + attribs.push('nullable'); + } + else if (d.nullable === false) { + attribs.push('non-null'); + } + + return attribs; +}; + +/** + * Retrieve links to allowed types for the member. + * + * @param {Object} d - The doclet whose types will be retrieved. + * @param {string} [cssClass] - The CSS class to include in the `class` attribute for each link. + * @return {Array.} HTML links to allowed types for the member. + */ +exports.getSignatureTypes = function(d, cssClass) { + var types = []; + + if (d.type && d.type.names) { + types = d.type.names; + } + + if (types && types.length) { + types = types.map(function(t) { + return linkto(t, htmlsafe(t), cssClass); + }); + } + + return types; +}; + +/** + * Retrieve names of the parameters that the member accepts. If a value is provided for `optClass`, + * the names of optional parameters will be wrapped in a `` tag with that class. + * @param {object} d The doclet whose parameter names will be retrieved. + * @param {string} [optClass] The class to assign to the `` tag that is wrapped around the + * names of optional parameters. If a value is not provided, optional parameter names will not be + * wrapped with a `` tag. Must be a legal value for a CSS class name. + * @return {array} An array of parameter names, with or without `` tags wrapping the + * names of optional parameters. + */ +exports.getSignatureParams = function(d, optClass) { + var pnames = []; + + if (d.params) { + d.params.forEach(function(p) { + if (p.name && p.name.indexOf('.') === -1) { + if (p.optional && optClass) { + pnames.push('' + p.name + ''); + } + else { + pnames.push(p.name); + } + } + }); + } + + return pnames; +}; + +/** + * Retrieve links to types that the member can return. + * + * @param {Object} d - The doclet whose types will be retrieved. + * @param {string} [cssClass] - The CSS class to include in the `class` attribute for each link. + * @return {Array.} HTML links to types that the member can return. + */ +exports.getSignatureReturns = function(d, cssClass) { + var returnTypes = []; + + if (d.returns) { + d.returns.forEach(function(r) { + if (r && r.type && r.type.names) { + if (!returnTypes.length) { + returnTypes = r.type.names; + } + } + }); + } + + if (returnTypes && returnTypes.length) { + returnTypes = returnTypes.map(function(r) { + return linkto(r, htmlsafe(r), cssClass); + }); + } + + return returnTypes; +}; + +/** + * Retrieve an ordered list of doclets for a symbol's ancestors. + * + * @param {TAFFY} data - The TaffyDB database to search. + * @param {Object} doclet - The doclet whose ancestors will be retrieved. + * @return {Array.} A array of ancestor doclets, sorted from most to + * least distant. + */ +exports.getAncestors = function(data, doclet) { + var ancestors = []; + var doc = doclet; + + while (doc) { + doc = find(data, {longname: doc.memberof})[0]; + + if (doc) { + ancestors.unshift(doc); + } + } + + return ancestors; +}; + +/** + * Retrieve links to a member's ancestors. + * + * @param {TAFFY} data - The TaffyDB database to search. + * @param {Object} doclet - The doclet whose ancestors will be retrieved. + * @param {string} [cssClass] - The CSS class to include in the `class` attribute for each link. + * @return {Array.} HTML links to a member's ancestors. + */ +exports.getAncestorLinks = function(data, doclet, cssClass) { + var ancestors = exports.getAncestors(data, doclet); + var links = []; + + ancestors.forEach(function(ancestor) { + var linkText = (exports.scopeToPunc[ancestor.scope] || '') + ancestor.name; + var link = linkto(ancestor.longname, linkText, cssClass); + links.push(link); + }); + + if (links.length) { + links[links.length - 1] += (exports.scopeToPunc[doclet.scope] || ''); + } + + return links; +}; + +/** + * Iterates through all the doclets in `data`, ensuring that if a method + * @listens to an event, then that event has a 'listeners' array with the + * longname of the listener in it. + * + * @param {TAFFY} data - The TaffyDB database to search. + */ +exports.addEventListeners = function(data) { + // TODO: do this on the *pruned* data + // find all doclets that @listen to something. + var listeners = find(data, function () { return this.listens && this.listens.length; }); + + if (!listeners.length) { + return; + } + + var doc, + l, + _events = {}; // just a cache to prevent me doing so many lookups + + listeners.forEach(function (listener) { + l = listener.listens; + l.forEach(function (eventLongname) { + doc = _events[eventLongname] || find(data, {longname: eventLongname, kind: 'event'})[0]; + if (doc) { + if (!doc.listeners) { + doc.listeners = [listener.longname]; + } else { + doc.listeners.push(listener.longname); + } + _events[eventLongname] = _events[eventLongname] || doc; + } + }); + }); +}; + +/** + * Remove members that will not be included in the output, including: + * + * + Undocumented members. + * + Members tagged `@ignore`. + * + Members of anonymous classes. + * + Members tagged `@private`, unless the `private` option is enabled. + * @param {TAFFY} data The TaffyDB database to prune. + * @return {TAFFY} The pruned database. + */ +exports.prune = function(data) { + data({undocumented: true}).remove(); + data({ignore: true}).remove(); + if (!env.opts.private) { data({access: 'private'}).remove(); } + data({memberof: ''}).remove(); + + return data; +}; + +var registerLink = exports.registerLink = function(longname, url) { + linkMap.longnameToUrl[longname] = url; + linkMap.urlToLongname[url] = longname; +}; + +/** + * Get a longname's filename if one has been registered; otherwise, generate a unique filename, then + * register the filename. + * @private + */ +function getFilename(longname) { + var url; + + if ( longnameToUrl[longname] && hasOwnProp.call(longnameToUrl, longname) ) { + url = longnameToUrl[longname]; + } else { + url = getUniqueFilename(longname); + registerLink(longname, url); + } + + return url; +} + +/** Turn a doclet into a URL. */ +exports.createLink = function(doclet) { + var filename; + var fragment; + var match; + var fakeContainer; + + var url = ''; + var longname = doclet.longname; + + // handle doclets in which doclet.longname implies that the doclet gets its own HTML file, but + // doclet.kind says otherwise. this happens due to mistagged JSDoc (for example, a module that + // somehow has doclet.kind set to `member`). + // TODO: generate a warning (ideally during parsing!) + if (containers.indexOf(doclet.kind) === -1) { + match = /(\S+):/.exec(longname); + if (match && containers.indexOf(match[1]) !== -1) { + fakeContainer = match[1]; + } + } + + // the doclet gets its own HTML file + if ( containers.indexOf(doclet.kind) !== -1 || isModuleExports(doclet) ) { + filename = getFilename(longname); + } + // mistagged version of a doclet that gets its own HTML file + else if ( containers.indexOf(doclet.kind) === -1 && fakeContainer ) { + filename = getFilename(doclet.memberof || longname); + if (doclet.name === doclet.longname) { + fragment = ''; + } + else { + fragment = doclet.name || ''; + } + } + // the doclet is within another HTML file + else { + filename = getFilename(doclet.memberof || exports.globalName); + fragment = getNamespace(doclet.kind) + (doclet.name || ''); + } + + url = encodeURI( filename + fragmentHash(fragment) ); + + return url; +}; + +// TODO: docs +exports.longnamesToTree = name.longnamesToTree; diff --git a/third_party/jsdoc/node/fs.js b/third_party/jsdoc/node/fs.js new file mode 100644 index 0000000000..bf652f27f9 --- /dev/null +++ b/third_party/jsdoc/node/fs.js @@ -0,0 +1,63 @@ +'use strict'; + +var fs = require('fs'); +var path = require('path'); +var stream = require('stream'); +var wrench = require('wrench'); + +var toDir = exports.toDir = function(_path) { + var isDirectory; + + _path = path.normalize(_path); + + try { + isDirectory = fs.statSync(_path).isDirectory(); + } + catch(e) { + isDirectory = false; + } + + if (isDirectory) { + return _path; + } else { + return path.dirname(_path); + } +}; + +exports.mkPath = function(/**Array*/ _path) { + if ( Array.isArray(_path) ) { + _path = _path.join(''); + } + + wrench.mkdirSyncRecursive(_path); +}; + +// adapted from http://procbits.com/2011/11/15/synchronous-file-copy-in-node-js +exports.copyFileSync = function(inFile, outDir, fileName) { + var BUF_LENGTH = 64 * 1024; + + var read; + var write; + + var buffer = new Buffer(BUF_LENGTH); + var bytesRead = 1; + var outFile = path.join( outDir, fileName || path.basename(inFile) ); + var pos = 0; + + wrench.mkdirSyncRecursive(outDir); + read = fs.openSync(inFile, 'r'); + write = fs.openSync(outFile, 'w'); + + while (bytesRead > 0) { + bytesRead = fs.readSync(read, buffer, 0, BUF_LENGTH, pos); + fs.writeSync(write, buffer, 0, bytesRead); + pos += bytesRead; + } + + fs.closeSync(read); + return fs.closeSync(write); +}; + +Object.keys(fs).forEach(function(key) { + exports[key] = fs[key]; +}); diff --git a/third_party/jsdoc/node_modules/async/LICENSE b/third_party/jsdoc/node_modules/async/LICENSE new file mode 100644 index 0000000000..b7f9d5001c --- /dev/null +++ b/third_party/jsdoc/node_modules/async/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010 Caolan McMahon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/third_party/jsdoc/node_modules/async/index.js b/third_party/jsdoc/node_modules/async/index.js new file mode 100644 index 0000000000..8e238453eb --- /dev/null +++ b/third_party/jsdoc/node_modules/async/index.js @@ -0,0 +1,3 @@ +// This file is just added for convenience so this repository can be +// directly checked out into a project's deps folder +module.exports = require('./lib/async'); diff --git a/third_party/jsdoc/node_modules/async/lib/async.js b/third_party/jsdoc/node_modules/async/lib/async.js new file mode 100644 index 0000000000..7cc4f5eac5 --- /dev/null +++ b/third_party/jsdoc/node_modules/async/lib/async.js @@ -0,0 +1,692 @@ +/*global setTimeout: false, console: false */ +(function () { + + var async = {}; + + // global on the server, window in the browser + var root = this, + previous_async = root.async; + + if (typeof module !== 'undefined' && module.exports) { + module.exports = async; + } + else { + root.async = async; + } + + async.noConflict = function () { + root.async = previous_async; + return async; + }; + + //// cross-browser compatiblity functions //// + + var _forEach = function (arr, iterator) { + if (arr.forEach) { + return arr.forEach(iterator); + } + for (var i = 0; i < arr.length; i += 1) { + iterator(arr[i], i, arr); + } + }; + + var _map = function (arr, iterator) { + if (arr.map) { + return arr.map(iterator); + } + var results = []; + _forEach(arr, function (x, i, a) { + results.push(iterator(x, i, a)); + }); + return results; + }; + + var _reduce = function (arr, iterator, memo) { + if (arr.reduce) { + return arr.reduce(iterator, memo); + } + _forEach(arr, function (x, i, a) { + memo = iterator(memo, x, i, a); + }); + return memo; + }; + + var _keys = function (obj) { + if (Object.keys) { + return Object.keys(obj); + } + var keys = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + keys.push(k); + } + } + return keys; + }; + + //// exported async module functions //// + + //// nextTick implementation with browser-compatible fallback //// + if (typeof process === 'undefined' || !(process.nextTick)) { + async.nextTick = function (fn) { + setTimeout(fn, 0); + }; + } + else { + async.nextTick = process.nextTick; + } + + async.forEach = function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length) { + return callback(); + } + var completed = 0; + _forEach(arr, function (x) { + iterator(x, function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed === arr.length) { + callback(null); + } + } + }); + }); + }; + + async.forEachSeries = function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length) { + return callback(); + } + var completed = 0; + var iterate = function () { + iterator(arr[completed], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed === arr.length) { + callback(null); + } + else { + iterate(); + } + } + }); + }; + iterate(); + }; + + async.forEachLimit = function (arr, limit, iterator, callback) { + callback = callback || function () {}; + if (!arr.length || limit <= 0) { + return callback(); + } + var completed = 0; + var started = 0; + var running = 0; + + (function replenish () { + if (completed === arr.length) { + return callback(); + } + + while (running < limit && started < arr.length) { + started += 1; + running += 1; + iterator(arr[started - 1], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + running -= 1; + if (completed === arr.length) { + callback(); + } + else { + replenish(); + } + } + }); + } + })(); + }; + + + var doParallel = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.forEach].concat(args)); + }; + }; + var doSeries = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.forEachSeries].concat(args)); + }; + }; + + + var _asyncMap = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (err, v) { + results[x.index] = v; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + }; + async.map = doParallel(_asyncMap); + async.mapSeries = doSeries(_asyncMap); + + + // reduce only has a series version, as doing reduce in parallel won't + // work in many situations. + async.reduce = function (arr, memo, iterator, callback) { + async.forEachSeries(arr, function (x, callback) { + iterator(memo, x, function (err, v) { + memo = v; + callback(err); + }); + }, function (err) { + callback(err, memo); + }); + }; + // inject alias + async.inject = async.reduce; + // foldl alias + async.foldl = async.reduce; + + async.reduceRight = function (arr, memo, iterator, callback) { + var reversed = _map(arr, function (x) { + return x; + }).reverse(); + async.reduce(reversed, memo, iterator, callback); + }; + // foldr alias + async.foldr = async.reduceRight; + + var _filter = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.filter = doParallel(_filter); + async.filterSeries = doSeries(_filter); + // select alias + async.select = async.filter; + async.selectSeries = async.filterSeries; + + var _reject = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (!v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.reject = doParallel(_reject); + async.rejectSeries = doSeries(_reject); + + var _detect = function (eachfn, arr, iterator, main_callback) { + eachfn(arr, function (x, callback) { + iterator(x, function (result) { + if (result) { + main_callback(x); + main_callback = function () {}; + } + else { + callback(); + } + }); + }, function (err) { + main_callback(); + }); + }; + async.detect = doParallel(_detect); + async.detectSeries = doSeries(_detect); + + async.some = function (arr, iterator, main_callback) { + async.forEach(arr, function (x, callback) { + iterator(x, function (v) { + if (v) { + main_callback(true); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(false); + }); + }; + // any alias + async.any = async.some; + + async.every = function (arr, iterator, main_callback) { + async.forEach(arr, function (x, callback) { + iterator(x, function (v) { + if (!v) { + main_callback(false); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(true); + }); + }; + // all alias + async.all = async.every; + + async.sortBy = function (arr, iterator, callback) { + async.map(arr, function (x, callback) { + iterator(x, function (err, criteria) { + if (err) { + callback(err); + } + else { + callback(null, {value: x, criteria: criteria}); + } + }); + }, function (err, results) { + if (err) { + return callback(err); + } + else { + var fn = function (left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }; + callback(null, _map(results.sort(fn), function (x) { + return x.value; + })); + } + }); + }; + + async.auto = function (tasks, callback) { + callback = callback || function () {}; + var keys = _keys(tasks); + if (!keys.length) { + return callback(null); + } + + var results = {}; + + var listeners = []; + var addListener = function (fn) { + listeners.unshift(fn); + }; + var removeListener = function (fn) { + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] === fn) { + listeners.splice(i, 1); + return; + } + } + }; + var taskComplete = function () { + _forEach(listeners.slice(0), function (fn) { + fn(); + }); + }; + + addListener(function () { + if (_keys(results).length === keys.length) { + callback(null, results); + callback = function () {}; + } + }); + + _forEach(keys, function (k) { + var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; + var taskCallback = function (err) { + if (err) { + callback(err); + // stop subsequent errors hitting callback multiple times + callback = function () {}; + } + else { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + taskComplete(); + } + }; + var requires = task.slice(0, Math.abs(task.length - 1)) || []; + var ready = function () { + return _reduce(requires, function (a, x) { + return (a && results.hasOwnProperty(x)); + }, true) && !results.hasOwnProperty(k); + }; + if (ready()) { + task[task.length - 1](taskCallback, results); + } + else { + var listener = function () { + if (ready()) { + removeListener(listener); + task[task.length - 1](taskCallback, results); + } + }; + addListener(listener); + } + }); + }; + + async.waterfall = function (tasks, callback) { + callback = callback || function () {}; + if (!tasks.length) { + return callback(); + } + var wrapIterator = function (iterator) { + return function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + var args = Array.prototype.slice.call(arguments, 1); + var next = iterator.next(); + if (next) { + args.push(wrapIterator(next)); + } + else { + args.push(callback); + } + async.nextTick(function () { + iterator.apply(null, args); + }); + } + }; + }; + wrapIterator(async.iterator(tasks))(); + }; + + async.parallel = function (tasks, callback) { + callback = callback || function () {}; + if (tasks.constructor === Array) { + async.map(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args); + }); + } + }, callback); + } + else { + var results = {}; + async.forEach(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.series = function (tasks, callback) { + callback = callback || function () {}; + if (tasks.constructor === Array) { + async.mapSeries(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args); + }); + } + }, callback); + } + else { + var results = {}; + async.forEachSeries(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.iterator = function (tasks) { + var makeCallback = function (index) { + var fn = function () { + if (tasks.length) { + tasks[index].apply(null, arguments); + } + return fn.next(); + }; + fn.next = function () { + return (index < tasks.length - 1) ? makeCallback(index + 1): null; + }; + return fn; + }; + return makeCallback(0); + }; + + async.apply = function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return fn.apply( + null, args.concat(Array.prototype.slice.call(arguments)) + ); + }; + }; + + var _concat = function (eachfn, arr, fn, callback) { + var r = []; + eachfn(arr, function (x, cb) { + fn(x, function (err, y) { + r = r.concat(y || []); + cb(err); + }); + }, function (err) { + callback(err, r); + }); + }; + async.concat = doParallel(_concat); + async.concatSeries = doSeries(_concat); + + async.whilst = function (test, iterator, callback) { + if (test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.whilst(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.until = function (test, iterator, callback) { + if (!test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.until(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.queue = function (worker, concurrency) { + var workers = 0; + var q = { + tasks: [], + concurrency: concurrency, + saturated: null, + empty: null, + drain: null, + push: function (data, callback) { + if(data.constructor !== Array) { + data = [data]; + } + _forEach(data, function(task) { + q.tasks.push({ + data: task, + callback: typeof callback === 'function' ? callback : null + }); + if (q.saturated && q.tasks.length == concurrency) { + q.saturated(); + } + async.nextTick(q.process); + }); + }, + process: function () { + if (workers < q.concurrency && q.tasks.length) { + var task = q.tasks.shift(); + if(q.empty && q.tasks.length == 0) q.empty(); + workers += 1; + worker(task.data, function () { + workers -= 1; + if (task.callback) { + task.callback.apply(task, arguments); + } + if(q.drain && q.tasks.length + workers == 0) q.drain(); + q.process(); + }); + } + }, + length: function () { + return q.tasks.length; + }, + running: function () { + return workers; + } + }; + return q; + }; + + var _console_fn = function (name) { + return function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + fn.apply(null, args.concat([function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (typeof console !== 'undefined') { + if (err) { + if (console.error) { + console.error(err); + } + } + else if (console[name]) { + _forEach(args, function (x) { + console[name](x); + }); + } + } + }])); + }; + }; + async.log = _console_fn('log'); + async.dir = _console_fn('dir'); + /*async.info = _console_fn('info'); + async.warn = _console_fn('warn'); + async.error = _console_fn('error');*/ + + async.memoize = function (fn, hasher) { + var memo = {}; + var queues = {}; + hasher = hasher || function (x) { + return x; + }; + var memoized = function () { + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + var key = hasher.apply(null, args); + if (key in memo) { + callback.apply(null, memo[key]); + } + else if (key in queues) { + queues[key].push(callback); + } + else { + queues[key] = [callback]; + fn.apply(null, args.concat([function () { + memo[key] = arguments; + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i].apply(null, arguments); + } + }])); + } + }; + memoized.unmemoized = fn; + return memoized; + }; + + async.unmemoize = function (fn) { + return function () { + return (fn.unmemoized || fn).apply(null, arguments); + }; + }; + +}()); diff --git a/third_party/jsdoc/node_modules/async/package.json b/third_party/jsdoc/node_modules/async/package.json new file mode 100644 index 0000000000..1caad5bfef --- /dev/null +++ b/third_party/jsdoc/node_modules/async/package.json @@ -0,0 +1,35 @@ +{ + "name": "async", + "description": "Higher-order functions and common patterns for asynchronous code", + "main": "./index", + "author": { + "name": "Caolan McMahon" + }, + "version": "0.1.22", + "repository": { + "type": "git", + "url": "http://github.com/caolan/async.git" + }, + "bugs": { + "url": "http://github.com/caolan/async/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/caolan/async/raw/master/LICENSE" + } + ], + "devDependencies": { + "nodeunit": ">0.0.0", + "uglify-js": "1.2.x", + "nodelint": ">0.0.0" + }, + "readme": "# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser.\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, forEach…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n async.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n async.parallel([\n function(){ ... },\n function(){ ... }\n ], callback);\n\n async.series([\n function(){ ... },\n function(){ ... }\n ]);\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n\n## Download\n\nReleases are available for download from\n[GitHub](http://github.com/caolan/async/downloads).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed\n\n__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped\n\n\n## In the Browser\n\nSo far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n \n \n\n\n## Documentation\n\n### Collections\n\n* [forEach](#forEach)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [until](#until)\n* [waterfall](#waterfall)\n* [queue](#queue)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n\n### forEach(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the forEach function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // assuming openFiles is an array of file names and saveFile is a function\n // to save the modified contents of that file:\n\n async.forEach(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n\n---------------------------------------\n\n\n### forEachSeries(arr, iterator, callback)\n\nThe same as forEach only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n\n### forEachLimit(arr, limit, iterator, callback)\n\nThe same as forEach only the iterator is applied to batches of items in the\narray, in series. The next batch of iterators is only called once the current\none has completed processing.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - How many items should be in each batch.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // Assume documents is an array of JSON objects and requestApi is a\n // function that interacts with a rate-limited REST api.\n\n async.forEachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n---------------------------------------\n\n\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n async.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n---------------------------------------\n\n\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n---------------------------------------\n\n\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n\n### rejectSeries(arr, iterator, callback)\n\nThe same as filter, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then its probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n array to produce the next step in the reduction. The iterator is passed a\n callback which accepts an optional error as its first argument, and the state\n of the reduction as the second. If an error is passed to the callback, the\n reduction is stopped and the main callback is immediately called with the\n error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n async.reduce([1,2,3], 0, function(memo, item, callback){\n // pointless async:\n process.nextTick(function(){\n callback(null, memo + item)\n });\n }, function(err, result){\n // result is now equal to the last value of memo, which is 6\n });\n\n---------------------------------------\n\n\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n the first item in the array that passes the truth test (iterator) or the\n value undefined if none passed.\n\n__Example__\n\n async.detect(['file1','file2','file3'], path.exists, function(result){\n // result now equals the first file in the list that exists\n });\n\n---------------------------------------\n\n\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a value to use as the sort criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n async.sortBy(['file1','file2','file3'], function(file, callback){\n fs.stat(file, function(err, stats){\n callback(err, stats.mtime);\n });\n }, function(err, results){\n // results is now the original array of files sorted by\n // modified date\n });\n\n\n---------------------------------------\n\n\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n either true or false depending on the values of the async tests.\n\n__Example__\n\n async.some(['file1','file2','file3'], path.exists, function(result){\n // if result is true then at least one of the files exists\n });\n\n---------------------------------------\n\n\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called after all the iterator\n functions have finished. Result will be either true or false depending on\n the values of the async tests.\n\n__Example__\n\n async.every(['file1','file2','file3'], path.exists, function(result){\n // if result is true then every file exists\n });\n\n---------------------------------------\n\n\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n // files is now a list of filenames that exist in the 3 directories\n });\n\n---------------------------------------\n\n\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.series([\n function(callback){\n // do some stuff ...\n callback(null, 'one');\n },\n function(callback){\n // do some more stuff ...\n callback(null, 'two');\n },\n ],\n // optional callback\n function(err, results){\n // results is now equal to ['one', 'two']\n });\n\n\n // an example using an object instead of an array\n async.series({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n },\n },\n function(err, results) {\n // results is now equal to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed a\n callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.parallel([\n function(callback){\n setTimeout(function(){\n callback(null, 'one');\n }, 200);\n },\n function(callback){\n setTimeout(function(){\n callback(null, 'two');\n }, 100);\n },\n ],\n // optional callback\n function(err, results){\n // the results array will equal ['one','two'] even though\n // the second function had a shorter timeout.\n });\n\n\n // an example using an object instead of an array\n async.parallel({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n },\n },\n function(err, results) {\n // results is now equals to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n passed a callback which must be called once it has completed with an optional\n error as the first argument.\n* callback(err) - A callback which is called after the test fails and repeated\n execution of fn has stopped.\n\n__Example__\n\n var count = 0;\n\n async.whilst(\n function () { return count < 5; },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n );\n\n\n---------------------------------------\n\n\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n\n---------------------------------------\n\n\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n must call on completion.\n* callback(err, [results]) - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n async.waterfall([\n function(callback){\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback){\n callback(null, 'three');\n },\n function(arg1, callback){\n // arg1 now equals 'three'\n callback(null, 'done');\n }\n ], function (err, result) {\n // result now equals 'done' \n });\n\n\n---------------------------------------\n\n\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n run in parallel. This property can be changed after a queue is created to\n alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n // create a queue object with concurrency 2\n\n var q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n }, 2);\n\n\n // assign a callback\n q.drain = function() {\n console.log('all items have been processed');\n }\n\n // add some items to the queue\n\n q.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n });\n q.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n });\n\n // add some items to the queue (batch-wise)\n\n q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing bar');\n });\n\n\n---------------------------------------\n\n\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The\n syntax is easier to understand by looking at the example.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. If all tasks complete\n successfully, it will receive an object containing their results.\n\n__Example__\n\n async.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n },\n write_file: ['get_data', 'make_folder', function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n callback(null, filename);\n }],\n email_link: ['write_file', function(callback, results){\n // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\n }]\n });\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n async.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n }\n ],\n function(results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n email_link: function(callback){\n // once the file is written let's email a link to it...\n }\n ]);\n });\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. Its also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n must call on completion.\n\n__Example__\n\n var iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n ]);\n\n node> var iterator2 = iterator();\n 'one'\n node> var iterator3 = iterator2();\n 'two'\n node> iterator3();\n 'three'\n node> var nextfn = iterator2.next();\n node> nextfn();\n 'three'\n\n\n---------------------------------------\n\n\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n continuation is called.\n\n__Example__\n\n // using apply\n\n async.parallel([\n async.apply(fs.writeFile, 'testfile1', 'test1'),\n async.apply(fs.writeFile, 'testfile2', 'test2'),\n ]);\n\n\n // the same process without using apply\n\n async.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n },\n ]);\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n node> var fn = async.apply(sys.puts, 'one');\n node> fn('two', 'three');\n one\n two\n three\n\n---------------------------------------\n\n\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setTimeout(callback, 0),\nwhich means other higher priority events may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n var call_order = [];\n async.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two]\n });\n call_order.push('one')\n\n\n## Utils\n\n\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\n__Arguments__\n\n* fn - the function you to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n results, it has all the arguments applied to it apart from the callback, and\n must be synchronous.\n\n__Example__\n\n var slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n };\n var fn = async.memoize(slow_fn);\n\n // fn can now be used as if it were slow_fn\n fn('some name', function () {\n // callback\n });\n\n\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n var hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n };\n\n node> async.log(hello, 'world');\n 'hello world'\n\n\n---------------------------------------\n\n\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n var hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n };\n\n node> async.dir(hello, 'world');\n {hello: 'world'}\n\n\n---------------------------------------\n\n\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n", + "readmeFilename": "README.md", + "homepage": "https://github.com/caolan/async", + "_id": "async@0.1.22", + "_shasum": "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061", + "_from": "async@0.1.22", + "_resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "scripts": {} +} diff --git a/third_party/jsdoc/node_modules/catharsis/LICENSE b/third_party/jsdoc/node_modules/catharsis/LICENSE new file mode 100644 index 0000000000..6fdbb085fb --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/LICENSE @@ -0,0 +1,17 @@ +Copyright (c) 2014 Google Inc. +Copyright (c) 2012-2014 Jeff Williams + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT +NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/third_party/jsdoc/node_modules/catharsis/catharsis.js b/third_party/jsdoc/node_modules/catharsis/catharsis.js new file mode 100644 index 0000000000..7899f3c236 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/catharsis.js @@ -0,0 +1,166 @@ +/** + * Catharsis + * A parser for Google Closure Compiler type expressions, powered by PEG.js. + * + * @author Jeff Williams + * @license MIT License + */ + +'use strict'; + +var describe = require('./lib/describe'); +var parse = require('./lib/parser').parse; +var stringify = require('./lib/stringify'); + +var typeExpressionCache = { + normal: {}, + jsdoc: {} +}; + +var parsedTypeCache = { + normal: {}, + htmlSafe: {} +}; + +var descriptionCache = { + normal: {} +}; + +function getTypeExpressionCache(options) { + if (options.useCache === false) { + return null; + } else if (options.jsdoc === true) { + return typeExpressionCache.jsdoc; + } else { + return typeExpressionCache.normal; + } +} + +function getParsedTypeCache(options) { + if (options.useCache === false || options.links !== null || options.links !== undefined) { + return null; + } else if (options.htmlSafe === true) { + return parsedTypeCache.htmlSafe; + } else { + return parsedTypeCache.normal; + } +} + +function getDescriptionCache(options) { + if (options.useCache === false || options.links !== null || options.links !== undefined) { + return null; + } else { + return descriptionCache.normal; + } +} + +// can't return the original if any of the following are true: +// 1. restringification was requested +// 2. htmlSafe option was requested +// 3. links option was provided +// 4. typeExpression property is missing +function canReturnOriginalExpression(parsedType, options) { + return options.restringify !== true && options.htmlSafe !== true && + (options.links === null || options.links === undefined) && + Object.prototype.hasOwnProperty.call(parsedType, 'typeExpression'); +} + +// Add non-enumerable properties to a result object, then freeze it. +function prepareFrozenObject(obj, expr, options) { + Object.defineProperty(obj, 'jsdoc', { + value: options.jsdoc === true ? true : false + }); + + if (expr) { + Object.defineProperty(obj, 'typeExpression', { + value: expr + }); + } + + return Object.freeze(obj); +} + +function cachedParse(expr, options) { + var cache = getTypeExpressionCache(options); + var parsedType; + + if (cache && Object.prototype.hasOwnProperty.call(cache, expr)) { + return cache[expr]; + } else { + parsedType = parse(expr, options); + parsedType = prepareFrozenObject(parsedType, expr, options); + + if (cache) { + cache[expr] = parsedType; + } + + return parsedType; + } +} + +function cachedStringify(parsedType, options) { + var cache = getParsedTypeCache(options); + var json; + + if (canReturnOriginalExpression(parsedType, options)) { + return parsedType.typeExpression; + } else if (cache) { + json = JSON.stringify(parsedType); + cache[json] = cache[json] || stringify(parsedType, options); + return cache[json]; + } else { + return stringify(parsedType, options); + } +} + +function cachedDescribe(parsedType, options) { + var cache = getDescriptionCache(options); + var json; + var result; + + if (cache) { + json = JSON.stringify(parsedType); + cache[json] = cache[json] || describe(parsedType, options); + return cache[json]; + } else { + result = describe(parsedType, options); + result = prepareFrozenObject(result, null, options); + + return result; + } +} + +function Catharsis() { + this.Types = require('./lib/types'); +} + +Catharsis.prototype.parse = function(typeExpr, options) { + options = options || {}; + + typeExpr = typeExpr.replace(/[\r\n]/g, '') + .replace(/\s+/g, ' ') + .trim(); + + return cachedParse(typeExpr, options); +}; + +Catharsis.prototype.stringify = function(parsedType, options) { + var result; + + options = options || {}; + + result = cachedStringify(parsedType, options); + if (options.validate) { + this.parse(result, options); + } + + return result; +}; + +Catharsis.prototype.describe = function(parsedType, options) { + options = options || {}; + + return cachedDescribe(parsedType, options); +}; + +module.exports = new Catharsis(); diff --git a/third_party/jsdoc/node_modules/catharsis/lib/describe.js b/third_party/jsdoc/node_modules/catharsis/lib/describe.js new file mode 100644 index 0000000000..eeb777b0c6 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/lib/describe.js @@ -0,0 +1,532 @@ +'use strict'; + +var _ = require('underscore-contrib'); +var fs = require('fs'); +var path = require('path'); +var stringify = require('./stringify'); +var Types = require('./types'); +var util = require('util'); + +var DEFAULT_OPTIONS = { + language: 'en', + resources: { + en: JSON.parse(fs.readFileSync(path.join(__dirname, '../res/en.json'), 'utf8')) + } +}; + +// order matters for these! +var FUNCTION_DETAILS = ['new', 'this']; +var FUNCTION_DETAILS_VARIABLES = ['functionNew', 'functionThis']; +var MODIFIERS = ['optional', 'nullable', 'repeatable']; + +var TEMPLATE_VARIABLES = [ + 'application', + 'codeTagClose', + 'codeTagOpen', + 'element', + 'field', + 'functionNew', + 'functionParams', + 'functionReturns', + 'functionThis', + 'keyApplication', + 'name', + 'nullable', + 'optional', + 'param', + 'prefix', + 'repeatable', + 'suffix', + 'type' +]; + +var FORMATS = { + EXTENDED: 'extended', + SIMPLE: 'simple' +}; + +function makeTagOpen(codeTag, codeClass) { + var tagOpen = ''; + var tags = codeTag ? codeTag.split(' ') : []; + + tags.forEach(function(tag) { + var tagClass = codeClass ? util.format(' class="%s"', codeClass) : ''; + tagOpen += util.format('<%s%s>', tag, tagClass); + }); + + return tagOpen; +} + +function makeTagClose(codeTag) { + var tagClose = ''; + var tags = codeTag ? codeTag.split(' ') : []; + + tags.reverse(); + tags.forEach(function(tag) { + tagClose += util.format('', tag); + }); + + return tagClose; +} + +function Result() { + this.description = ''; + this.modifiers = { + functionNew: '', + functionThis: '', + optional: '', + nullable: '', + repeatable: '' + }; + this.returns = ''; +} + +function Context(props) { + var self = this; + + props = props || {}; + + TEMPLATE_VARIABLES.forEach(function(variable) { + self[variable] = props[variable] || ''; + }); +} + +function Describer(opts) { + var options; + + this._useLongFormat = true; + options = this._options = _.defaults(opts || {}, DEFAULT_OPTIONS); + this._stringifyOptions = _.defaults(options, {_ignoreModifiers: true}); + + // use a dictionary, not a Context object, so we can more easily merge this into Context objects + this._i18nContext = { + codeTagClose: makeTagClose(options.codeTag), + codeTagOpen: makeTagOpen(options.codeTag, options.codeClass) + }; + + // templates start out as strings; we lazily replace them with template functions + this._templates = options.resources[options.language]; + if (!this._templates) { + throw new Error('I18N resources are not available for the language ' + options.language); + } +} + +function modifierKind(useLongFormat) { + return useLongFormat ? FORMATS.EXTENDED : FORMATS.SIMPLE; +} + +function buildModifierStrings(describer, modifiers, type, useLongFormat) { + var modifierStrings = {}; + var result = {}; + + modifiers.forEach(function(modifier) { + var key = modifierKind(useLongFormat); + var modifierStrings = describer[modifier](type[modifier]); + + result[modifier] = modifierStrings[key]; + }); + + return result; +} + +function addModifiers(describer, context, result, type, useLongFormat) { + var keyPrefix = 'modifiers.' + modifierKind(useLongFormat); + var modifiers = buildModifierStrings(describer, MODIFIERS, type, useLongFormat); + + MODIFIERS.forEach(function(modifier) { + var modifierText = modifiers[modifier] || ''; + + result.modifiers[modifier] = modifierText; + if (!useLongFormat) { + context[modifier] = modifierText; + } + }); + + context.prefix = describer._translate(keyPrefix + '.prefix', context); + context.suffix = describer._translate(keyPrefix + '.suffix', context); +} + +function addFunctionModifiers(describer, context, result, type, useLongFormat) { + var functionDetails = buildModifierStrings(describer, FUNCTION_DETAILS, type, useLongFormat); + var kind = modifierKind(useLongFormat); + var strings = []; + + FUNCTION_DETAILS.forEach(function(functionDetail, i) { + var functionExtraInfo = functionDetails[functionDetail] || ''; + var functionDetailsVariable = FUNCTION_DETAILS_VARIABLES[i]; + + result.modifiers[functionDetailsVariable] = functionExtraInfo; + if (!useLongFormat) { + context[functionDetailsVariable] += functionExtraInfo; + } + }); +} + +// Replace 2+ whitespace characters with a single whitespace character. +function collapseSpaces(string) { + return string.replace(/(\s)+/g, '$1'); +} + +Describer.prototype._stringify = function(type, typeString, useLongFormat) { + var context = new Context({ + type: typeString || stringify(type, this._stringifyOptions) + }); + var result = new Result(); + + addModifiers(this, context, result, type, useLongFormat); + result.description = this._translate('type', context).trim(); + + return result; +}; + +Describer.prototype._translate = function(key, context) { + var result; + var templateFunction = _.getPath(this._templates, key); + + context = context || new Context(); + + if (templateFunction === undefined) { + throw new Error(util.format('The template %s does not exist for the language %s', key, + this._options.language)); + } + + // compile and cache the template function if necessary + if (typeof templateFunction === 'string') { + // force the templates to use the `context` object + templateFunction = templateFunction.replace(/\<\%\= /g, '<%= context.'); + templateFunction = _.template(templateFunction, null, {variable: 'context'}); + _.setPath(this._templates, templateFunction, key); + } + + result = (templateFunction(_.extend(context, this._i18nContext)) || '') + // strip leading spaces + .replace(/^\s+/, ''); + result = collapseSpaces(result); + + return result; +}; + +Describer.prototype._modifierHelper = function(key, modifierPrefix, context) { + modifierPrefix = modifierPrefix || ''; + + return { + extended: key ? + this._translate(util.format('%s.%s.%s', modifierPrefix, FORMATS.EXTENDED, key), + context) : + '', + simple: key ? + this._translate(util.format('%s.%s.%s', modifierPrefix, FORMATS.SIMPLE, key), context) : + '' + }; +}; + +Describer.prototype._translateModifier = function(key, context) { + return this._modifierHelper(key, 'modifiers', context); +}; + +Describer.prototype._translateFunctionModifier = function(key, context) { + return this._modifierHelper(key, 'function', context); +}; + +function getApplicationKey(applications) { + if (applications.length === 1) { + return 'array'; + } else if (/[Ss]tring/.test(applications[0].name)) { + // object with string keys + return 'object'; + } else { + // object with non-string keys + return 'objectNonString'; + } +} + +Describer.prototype.application = function(type, useLongFormat) { + var applications = type.applications.slice(0); + var context = new Context(); + var key = 'application.' + getApplicationKey(applications); + var result = new Result(); + var self = this; + + addModifiers(this, context, result, type, useLongFormat); + + context.application = this.type(applications.pop()).description; + context.keyApplication = applications.length ? this.type(applications.pop()).description : ''; + + result.description = this._translate(key, context).trim(); + + return result; +}; + +function reduceMultiple(context, keyName, contextName, translate, previous, current, index, items) { + var key = + index === 0 ? '.first.many' : + index === (items.length - 1) ? '.last.many' : + '.middle.many'; + + key = keyName + key; + context[contextName] = items[index]; + + return previous + translate(key, context); +} + +Describer.prototype.elements = function(type, useLongFormat) { + var context = new Context(); + var items = type.elements.slice(0); + var result = new Result(); + + addModifiers(this, context, result, type, useLongFormat); + result.description = this._combineMultiple(items, context, 'union', 'element', useLongFormat); + + return result; +}; + +Describer.prototype['new'] = function(funcNew) { + var context = new Context({'functionNew': this.type(funcNew).description}); + var key = funcNew ? 'new' : ''; + + return this._translateFunctionModifier(key, context); +}; + +Describer.prototype.nullable = function(nullable) { + var key = nullable === true ? 'nullable' : + nullable === false ? 'nonNullable' : + ''; + + return this._translateModifier(key); +}; + +Describer.prototype.optional = function(optional) { + var key = (optional === true) ? 'optional' : ''; + + return this._translateModifier(key); +}; + +Describer.prototype.repeatable = function(repeatable) { + var key = (repeatable === true) ? 'repeatable' : ''; + + return this._translateModifier(key); +}; + +Describer.prototype._combineMultiple = function(items, context, keyName, contextName, + useLongFormat) { + var result = new Result(); + var self = this; + var strings; + + strings = typeof items[0] === 'string' ? + items.slice(0) : + items.map(function(item) { + return self.type(item).description; + }); + + switch(strings.length) { + case 0: + // falls through + case 1: + context[contextName] = strings[0] || ''; + result.description = this._translate(keyName + '.first.one', context); + break; + case 2: + strings.forEach(function(item, idx) { + var key = keyName + (idx === 0 ? '.first' : '.last' ) + '.two'; + + context[contextName] = item; + result.description += self._translate(key, context); + }); + break; + default: + result.description = strings.reduce(reduceMultiple.bind(null, context, keyName, + contextName, this._translate.bind(this)), ''); + } + + return result.description.trim(); +}; + +Describer.prototype.params = function(params, functionContext) { + var context = new Context(); + var result = new Result(); + var self = this; + var strings; + + // TODO: this hardcodes the order and placement of functionNew and functionThis; need to move + // this to the template (and also track whether to put a comma after the last modifier) + functionContext = functionContext || {}; + params = params || []; + strings = params.map(function(param) { + return self.type(param).description; + }); + + if (functionContext.functionThis) { + strings.unshift(functionContext.functionThis); + } + if (functionContext.functionNew) { + strings.unshift(functionContext.functionNew); + } + result.description = this._combineMultiple(strings, context, 'params', 'param', false); + + return result; +}; + +Describer.prototype['this'] = function(funcThis) { + var context = new Context({'functionThis': this.type(funcThis).description}); + var key = funcThis ? 'this' : ''; + + return this._translateFunctionModifier(key, context); +}; + +Describer.prototype.type = function(type, useLongFormat) { + var result = new Result(); + + if (useLongFormat === undefined) { + useLongFormat = this._useLongFormat; + } + // ensure we don't use the long format for inner types + this._useLongFormat = false; + + if (!type) { + return result; + } + + switch(type.type) { + case Types.AllLiteral: + result = this._stringify(type, this._translate('all'), useLongFormat); + break; + case Types.FunctionType: + result = this._signature(type, useLongFormat); + break; + case Types.NameExpression: + result = this._stringify(type, null, useLongFormat); + break; + case Types.NullLiteral: + result = this._stringify(type, this._translate('null'), useLongFormat); + break; + case Types.RecordType: + result = this._record(type, useLongFormat); + break; + case Types.TypeApplication: + result = this.application(type, useLongFormat); + break; + case Types.TypeUnion: + result = this.elements(type, useLongFormat); + break; + case Types.UndefinedLiteral: + result = this._stringify(type, this._translate('undefined'), useLongFormat); + break; + case Types.UnknownLiteral: + result = this._stringify(type, this._translate('unknown'), useLongFormat); + break; + default: + throw new Error('Unknown type: ' + JSON.stringify(type)); + } + + return result; +}; + +Describer.prototype._record = function(type, useLongFormat) { + var context = new Context(); + var items; + var result = new Result(); + + items = this._recordFields(type.fields); + + addModifiers(this, context, result, type, useLongFormat); + result.description = this._combineMultiple(items, context, 'record', 'field', useLongFormat); + + return result; +}; + +Describer.prototype._recordFields = function(fields) { + var context = new Context(); + var result = []; + var self = this; + + if (!fields.length) { + return result; + } + + result = fields.map(function(field) { + var key = 'field.' + (field.value ? 'typed' : 'untyped'); + + context.name = self.type(field.key).description; + if (field.value) { + context.type = self.type(field.value).description; + } + + return self._translate(key, context); + }); + + return result; +}; + +Describer.prototype._addLinks = function(nameString) { + var linkClass = ''; + var options = this._options; + var result = nameString; + + + if (options.links && Object.prototype.hasOwnProperty.call(options.links, nameString)) { + if (options.linkClass) { + linkClass = util.format(' class="%s"', options.linkClass); + } + + nameString = util.format('%s', options.links[nameString], linkClass, + nameString); + } + + return nameString; +}; + +Describer.prototype.result = function(type, useLongFormat) { + var context = new Context(); + var description; + var key = 'function.' + modifierKind(useLongFormat) + '.returns'; + var result = new Result(); + + context.type = this.type(type).description; + + addModifiers(this, context, result, type, useLongFormat); + result.description = this._translate(key, context); + + return result; +}; + +Describer.prototype._signature = function(type, useLongFormat) { + var context = new Context(); + var functionModifiers; + var kind = modifierKind(useLongFormat); + var result = new Result(); + var returns; + var self = this; + + addModifiers(this, context, result, type, useLongFormat); + addFunctionModifiers(this, context, result, type, useLongFormat); + + context.functionParams = this.params(type.params || [], context).description; + + if (type.result) { + returns = this.result(type.result, useLongFormat); + if (useLongFormat) { + result.returns = returns.description; + } else { + context.functionReturns = returns.description; + } + } + + result.description += this._translate('function.' + kind + '.signature', context).trim(); + + return result; +}; + +module.exports = function(type, options) { + var simple = new Describer(options).type(type, false); + var extended = new Describer(options).type(type); + + [simple, extended].forEach(function(result) { + result.description = collapseSpaces(result.description.trim()); + }); + + return { + simple: simple.description, + extended: extended + }; +}; diff --git a/third_party/jsdoc/node_modules/catharsis/lib/parser.js b/third_party/jsdoc/node_modules/catharsis/lib/parser.js new file mode 100644 index 0000000000..dab624b40c --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/lib/parser.js @@ -0,0 +1,4 @@ +module.exports=function(){function peg$subclass(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor}function SyntaxError(expected,found,offset,line,column){function buildMessage(expected,found){function stringEscape(s){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase()}return s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(ch){return"\\x0"+hex(ch)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(ch){return"\\x"+hex(ch)}).replace(/[\u0180-\u0FFF]/g,function(ch){return"\\u0"+hex(ch)}).replace(/[\u1080-\uFFFF]/g,function(ch){return"\\u"+hex(ch)})}var expectedDesc,foundDesc;switch(expected.length){case 0:expectedDesc="end of input";break;case 1:expectedDesc=expected[0];break;default:expectedDesc=expected.slice(0,-1).join(", ")+" or "+expected[expected.length-1]}foundDesc=found?'"'+stringEscape(found)+'"':"end of input";return"Expected "+expectedDesc+" but "+foundDesc+" found."}this.expected=expected;this.found=found;this.offset=offset;this.line=line;this.column=column;this.name="SyntaxError";this.message=buildMessage(expected,found)}peg$subclass(SyntaxError,Error);function parse(input){var options=arguments.length>1?arguments[1]:{},peg$startRuleFunctions={TypeExpression:peg$parseTypeExpression},peg$startRuleFunction=peg$parseTypeExpression,peg$c0=null,peg$c1="",peg$c2=function(r,unk){var result=unk;if(r.repeatable){result=repeatable(result)}return result},peg$c3="?",peg$c4='"?"',peg$c5="!",peg$c6='"!"',peg$c7=function(r,prefix,expr){var result=expr;if(r.repeatable){result=repeatable(result)}return nullable(result,prefix)},peg$c8=function(expr,postfix){return nullable(expr,postfix)},peg$c9=function(prefix,expr){return nullable(expr,prefix)},peg$c10=function(expr){return repeatable(expr)},peg$c11=function(lit,opt){var result=lit;if(opt.optional){result.optional=true}return result},peg$c12=function(lit){return repeatable(lit)},peg$c13="*",peg$c14='"*"',peg$c15=function(){return{type:Types.AllLiteral}},peg$c16=function(){return{type:Types.NullLiteral}},peg$c17=function(){return{type:Types.UndefinedLiteral}},peg$c18="...",peg$c19='"..."',peg$c20=function(){return{repeatable:true}},peg$c21="=",peg$c22='"="',peg$c23=function(){return{optional:true}},peg$c24="[]",peg$c25='"[]"',peg$c26=function(name){var result;if(!options.jsdoc){return null}result={type:Types.TypeApplication,expression:{type:Types.NameExpression,name:"Array"},applications:[name]};result.applications[0].type=Types.NameExpression;return result},peg$c27=function(exp,appl,opt){var result={};var nameExp={type:Types.NameExpression,name:exp.name};if(appl.length){result.type=Types.TypeApplication;result.expression=nameExp;result.applications=appl}else{result=nameExp}if(opt.optional){result.optional=true}return result},peg$c28=function(name){if(!options.jsdoc){return null}return name},peg$c29=function(t){return repeatable(t)},peg$c30=function(exp,opt){var result={type:Types.NameExpression,name:exp.name,reservedWord:true};if(opt.optional){result.optional=true}return result},peg$c31=".",peg$c32='"."',peg$c33="<",peg$c34='"<"',peg$c35=">",peg$c36='">"',peg$c37=function(sep,l){return l},peg$c38=[],peg$c39=",",peg$c40='","',peg$c41=function(expr,list){var result=[expr];for(var i=0,l=list.length;ipos){peg$cachedPos=0;peg$cachedPosDetails={line:1,column:1,seenCR:false}}peg$cachedPos=pos;advance(peg$cachedPosDetails,peg$cachedPos)}return peg$cachedPosDetails}function peg$fail(expected){if(peg$currPospeg$maxFailPos){peg$maxFailPos=peg$currPos;peg$maxFailExpected=[]}peg$maxFailExpected.push(expected)}function peg$cleanupExpected(expected){var i=0;expected.sort();while(ipeg$currPos){s0=input.charAt(peg$currPos);peg$currPos++}else{s0=null;if(peg$silentFails===0){peg$fail(peg$c281)}}return s0}function peg$parseHexEscapeSequence(){var s0,s1,s2,s3,s4,s5;s0=peg$currPos;if(input.charCodeAt(peg$currPos)===120){s1=peg$c279;peg$currPos++}else{s1=null;if(peg$silentFails===0){peg$fail(peg$c280)}}if(s1!==null){s2=peg$currPos;s3=peg$currPos;s4=peg$parseHexDigit();if(s4!==null){s5=peg$parseHexDigit();if(s5!==null){s4=[s4,s5];s3=s4}else{peg$currPos=s3;s3=peg$c0}}else{peg$currPos=s3;s3=peg$c0}if(s3!==null){s3=input.substring(s2,peg$currPos)}s2=s3;if(s2!==null){peg$reportedPos=s0;s1=peg$c227(s2);if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}return s0}function peg$parseLineContinuation(){var s0,s1,s2;s0=peg$currPos;if(input.charCodeAt(peg$currPos)===92){s1=peg$c223;peg$currPos++}else{s1=null;if(peg$silentFails===0){peg$fail(peg$c224)}}if(s1!==null){s2=peg$parseLineTerminatorSequence();if(s2!==null){peg$reportedPos=s0;s1=peg$c265(s2);if(s1===null){peg$currPos=s0;s0=s1}else{s0=s1}}else{peg$currPos=s0;s0=peg$c0}}else{peg$currPos=s0;s0=peg$c0}return s0}function peg$parse_(){var s0,s1; +peg$silentFails++;s0=[];s1=peg$parseWhitespace();while(s1!==null){s0.push(s1);s1=peg$parseWhitespace()}peg$silentFails--;if(s0===null){s1=null;if(peg$silentFails===0){peg$fail(peg$c282)}}return s0}function peg$parse__(){var s0,s1;peg$silentFails++;s0=peg$c1;peg$silentFails--;if(s0===null){s1=null;if(peg$silentFails===0){peg$fail(peg$c283)}}return s0}function peg$parseWhitespace(){var s0;if(peg$c284.test(input.charAt(peg$currPos))){s0=input.charAt(peg$currPos);peg$currPos++}else{s0=null;if(peg$silentFails===0){peg$fail(peg$c285)}}if(s0===null){s0=peg$parseUnicodeZs()}return s0}var Types=require("./types");function repeatable(obj){obj.repeatable=true;return obj}function nullable(obj,modifier){if(modifier){obj.nullable=modifier==="?"?true:false}return obj}peg$result=peg$startRuleFunction();if(peg$result!==null&&peg$currPos===input.length){return peg$result}else{peg$cleanupExpected(peg$maxFailExpected);peg$reportedPos=Math.max(peg$currPos,peg$maxFailPos);throw new SyntaxError(peg$maxFailExpected,peg$reportedPos'; + + return result; +}; + +Stringifier.prototype.elements = function(elements) { + var result = ''; + var strings = []; + + if (!elements) { + return result; + } + + for (var i = 0, l = elements.length; i < l; i++) { + strings.push(this.type(elements[i])); + } + + result = '(' + strings.join('|') + ')'; + + return result; +}; + +Stringifier.prototype.name = function(name) { + return name || ''; +}; + +Stringifier.prototype['new'] = function(funcNew) { + return funcNew ? 'new:' + this.type(funcNew) : ''; +}; + +Stringifier.prototype.nullable = function(nullable) { + switch (nullable) { + case true: + return '?'; + case false: + return '!'; + default: + return ''; + } +}; + +Stringifier.prototype.optional = function(optional) { + if (optional === true) { + return '='; + } else { + return ''; + } +}; + +Stringifier.prototype.params = function(params) { + var result = ''; + var strings = []; + + if (!params || params.length === 0) { + return result; + } + + for (var i = 0, l = params.length; i < l; i++) { + strings.push(this.type(params[i])); + } + + result = strings.join(', '); + + return result; +}; + +Stringifier.prototype.result = function(result) { + return result ? ': ' + this.type(result) : ''; +}; + +Stringifier.prototype['this'] = function(funcThis) { + return funcThis ? 'this:' + this.type(funcThis) : ''; +}; + +Stringifier.prototype.type = function(type) { + var typeString = ''; + + if (!type) { + return typeString; + } + + switch(type.type) { + case Types.AllLiteral: + typeString = this._formatNameAndType(type, '*'); + break; + case Types.FunctionType: + typeString = this._signature(type); + break; + case Types.NullLiteral: + typeString = this._formatNameAndType(type, 'null'); + break; + case Types.RecordType: + typeString = this._record(type); + break; + case Types.TypeApplication: + typeString = this.type(type.expression) + this.applications(type.applications); + break; + case Types.UndefinedLiteral: + typeString = this._formatNameAndType(type, 'undefined'); + break; + case Types.TypeUnion: + typeString = this.elements(type.elements); + break; + case Types.UnknownLiteral: + typeString = this._formatNameAndType(type, '?'); + break; + default: + typeString = this._formatNameAndType(type); + } + + // add optional/nullable/repeatable modifiers + if (!this._options._ignoreModifiers) { + typeString = this._addModifiers(type, typeString); + } + + return typeString; +}; + +Stringifier.prototype.stringify = Stringifier.prototype.type; + +Stringifier.prototype.key = Stringifier.prototype.type; + +Stringifier.prototype._record = function(type) { + var fields = this._recordFields(type.fields); + + return '{' + fields.join(', ') + '}'; +}; + +Stringifier.prototype._recordFields = function(fields) { + var field; + var keyAndValue; + + var result = []; + + if (!fields) { + return result; + } + + for (var i = 0, l = fields.length; i < l; i++) { + field = fields[i]; + + keyAndValue = this.key(field.key); + keyAndValue += field.value ? ': ' + this.type(field.value) : ''; + + result.push(keyAndValue); + } + + return result; +}; + +function combineNameAndType(nameString, typeString) { + var separator = (nameString && typeString) ? ':' : ''; + + return nameString + separator + typeString; +} + +// Adds optional, nullable, and repeatable modifiers if necessary. +Stringifier.prototype._addModifiers = function(type, typeString) { + var combined; + + var open = ''; + var close = ''; + var optional = ''; + + if (type.repeatable) { + open = this._inFunctionSignatureParams ? '...[' : '...'; + close = this._inFunctionSignatureParams ? ']' : ''; + } + + combined = this.nullable(type.nullable) + combineNameAndType('', typeString); + optional = this.optional(type.optional); + + return open + combined + close + optional; +}; + +Stringifier.prototype._addLinks = function(nameString) { + var openTag; + + var linkClass = ''; + var options = this._options; + + if (options.links && Object.prototype.hasOwnProperty.call(options.links, nameString)) { + if (options.linkClass) { + linkClass = ' class="' + options.linkClass + '"'; + } + + openTag = ''; + nameString = openTag + nameString + ''; + } + + return nameString; +}; + +Stringifier.prototype._formatNameAndType = function(type, literal) { + var nameString = type.name || literal || ''; + var typeString = type.type ? this.type(type.type) : ''; + + nameString = this._addLinks(nameString); + + return combineNameAndType(nameString, typeString); +}; + +Stringifier.prototype._signature = function(type) { + var param; + var prop; + var signature; + + var params = []; + // these go within the signature's parens, in this order + var props = [ + 'new', + 'this', + 'params' + ]; + + this._inFunctionSignatureParams = true; + for (var i = 0, l = props.length; i < l; i++) { + prop = props[i]; + param = this[prop](type[prop]); + if (param.length > 0) { + params.push(param); + } + } + this._inFunctionSignatureParams = false; + + signature = 'function(' + params.join(', ') + ')'; + signature += this.result(type.result); + + return signature; +}; + + +module.exports = function(type, options) { + return new Stringifier(options).stringify(type); +}; diff --git a/third_party/jsdoc/node_modules/catharsis/lib/types.js b/third_party/jsdoc/node_modules/catharsis/lib/types.js new file mode 100644 index 0000000000..017aba6b5f --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/lib/types.js @@ -0,0 +1,24 @@ +'use strict'; + +module.exports = Object.freeze({ + // `*` + AllLiteral: 'AllLiteral', + // like `blah` in `{blah: string}` + FieldType: 'FieldType', + // like `function(string): string` + FunctionType: 'FunctionType', + // any string literal, such as `string` or `My.Namespace` + NameExpression: 'NameExpression', + // null + NullLiteral: 'NullLiteral', + // like `{foo: string}` + RecordType: 'RecordType', + // like `Array.` + TypeApplication: 'TypeApplication', + // like `(number|string)` + TypeUnion: 'TypeUnion', + // undefined + UndefinedLiteral: 'UndefinedLiteral', + // `?` + UnknownLiteral: 'UnknownLiteral' +}); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/LICENSE b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/LICENSE new file mode 100644 index 0000000000..8e1f77b433 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2013 Jeremy Ashkenas, Michael Fogus, DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/index.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/index.js new file mode 100644 index 0000000000..5d4bc175f4 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/index.js @@ -0,0 +1,16 @@ +require('./underscore.array.builders'); +require('./underscore.array.selectors'); +require('./underscore.collections.walk'); +require('./underscore.function.arity'); +require('./underscore.function.combinators'); +require('./underscore.function.dispatch'); +require('./underscore.function.iterators'); +require('./underscore.function.predicates'); +require('./underscore.object.builders'); +require('./underscore.object.selectors'); +require('./underscore.util.existential'); +require('./underscore.util.operators'); +require('./underscore.util.strings'); +require('./underscore.util.trampolines'); + +module.exports = require('underscore'); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/package.json b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/package.json new file mode 100644 index 0000000000..53f932bc14 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/package.json @@ -0,0 +1,43 @@ +{ + "name": "underscore-contrib", + "version": "0.3.0", + "main": "index.js", + "dependencies": { + "underscore": "1.6.0" + }, + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-concat": "0.3.0", + "grunt-contrib-uglify": "0.2.0", + "grunt-contrib-qunit": "~0.2.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.6.4", + "grunt-docco": "~0.3.0", + "grunt-tocdoc": "~0.1.0", + "grunt-cli": "~0.1.11" + }, + "repository": { + "type": "git", + "url": "https://github.com/documentcloud/underscore-contrib.git" + }, + "license": "MIT", + "author": { + "name": "Fogus", + "email": "me@fogus.me", + "url": "http://www.fogus.me" + }, + "scripts": { + "test": "node ./node_modules/grunt-cli/bin/grunt test" + }, + "homepage": "https://github.com/documentcloud/underscore-contrib", + "readme": "underscore-contrib\n==================\n\nThe brass buckles on Underscore's utility belt -- a contributors' library for [Underscore](http://underscorejs.org/).\n\nLinks\n-----\n\n * [Documentation](http://documentcloud.github.io/underscore-contrib/)\n * [Source repository](https://github.com/documentcloud/underscore-contrib)\n * [Tickets and bug reports](https://github.com/documentcloud/underscore-contrib/issues?state=open)\n * [Maintainer's website](http://www.fogus.me)\n\nWhy underscore-contrib?\n-----------------------\n\nWhile Underscore provides a bevy of useful tools to support functional programming in JavaScript, it can't\n(and shouldn't) be everything to everyone. Underscore-contrib is intended as a home for functions that, for\nvarious reasons, don't belong in Underscore proper. In particular, it aims to be:\n\n * a home for functions that are limited in scope, but solve certain point problems, and\n * a proving ground for features that belong in Underscore proper, but need some advocacy and/or evolution\n(or devolution) to get them there.\n\nUse\n---\n\nFirst, you’ll need Underscore. Then you can grab the relevant underscore-contrib libraries and simply add\nsomething\nlike the following to your pages:\n\n \n \n\nAt the moment there are no cross-contrib dependencies (i.e. each library can stand by itself), but that may\nchange in the future.\n\nContributing\n------------\n\nThere is still a lot of work to do around perf, documentation, examples, testing and distribution so any help\nin those areas is welcomed. Pull requests are accepted, but please search the [issues](https://github.com/documentcloud/underscore-contrib/issues)\nbefore proposing a new sub-contrib or addition. Additionally, all patches and proposals should have strong\ndocumentation, motivating cases and tests. It would be nice if we could not only provide useful tools built on\nUnderscore, but also provide an educational experience for why and how one might use them.\n\nOther (potentially) useful sub-contribs include the following:\n\n * String utilities\n * Date/time utilities\n * Validators\n * Iterators\n * Generators\n * Promises\n * Monads\n * Currying\n * Laziness\n * Multimethods\n\nWhat do these mean? Well, that’s up for discussion. :-)\n", + "readmeFilename": "README.md", + "description": "underscore-contrib ==================", + "bugs": { + "url": "https://github.com/documentcloud/underscore-contrib/issues" + }, + "_id": "underscore-contrib@0.3.0", + "_shasum": "665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7", + "_from": "underscore-contrib@~0.3.0", + "_resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz" +} diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.array.builders.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.array.builders.js new file mode 100644 index 0000000000..2ad8c56226 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.array.builders.js @@ -0,0 +1,197 @@ +// Underscore-contrib (underscore.array.builders.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + // Create quick reference variables for speed access to core prototypes. + var slice = Array.prototype.slice, + concat = Array.prototype.concat; + + var existy = function(x) { return x != null; }; + + // Mixing in the array builders + // ---------------------------- + + _.mixin({ + // Concatenates one or more arrays given as arguments. If given objects and + // scalars as arguments `cat` will plop them down in place in the result + // array. If given an `arguments` object, `cat` will treat it like an array + // and concatenate it likewise. + cat: function() { + return _.reduce(arguments, function(acc, elem) { + if (_.isArguments(elem)) { + return concat.call(acc, slice.call(elem)); + } + else { + return concat.call(acc, elem); + } + }, []); + }, + + // 'Constructs' an array by putting an element at its front + cons: function(head, tail) { + return _.cat([head], tail); + }, + + // Takes an array and chunks it some number of times into + // sub-arrays of size n. Allows and optional padding array as + // the third argument to fill in the tail chunk when n is + // not sufficient to build chunks of the same size. + chunk: function(array, n, pad) { + var p = function(array) { + if (array == null) return []; + + var part = _.take(array, n); + + if (n === _.size(part)) { + return _.cons(part, p(_.drop(array, n))); + } + else { + return pad ? [_.take(_.cat(part, pad), n)] : []; + } + }; + + return p(array); + }, + + // Takes an array and chunks it some number of times into + // sub-arrays of size n. If the array given cannot fill the size + // needs of the final chunk then a smaller chunk is used + // for the last. + chunkAll: function(array, n, step) { + step = (step != null) ? step : n; + + var p = function(array, n, step) { + if (_.isEmpty(array)) return []; + + return _.cons(_.take(array, n), + p(_.drop(array, step), n, step)); + }; + + return p(array, n, step); + }, + + // Maps a function over an array and concatenates all of the results. + mapcat: function(array, fun) { + return _.cat.apply(null, _.map(array, fun)); + }, + + // Returns an array with some item between each element + // of a given array. + interpose: function(array, inter) { + if (!_.isArray(array)) throw new TypeError; + var sz = _.size(array); + if (sz === 0) return array; + if (sz === 1) return array; + + return slice.call(_.mapcat(array, function(elem) { + return _.cons(elem, [inter]); + }), 0, -1); + }, + + // Weaves two or more arrays together + weave: function(/* args */) { + if (!_.some(arguments)) return []; + if (arguments.length == 1) return arguments[0]; + + return _.filter(_.flatten(_.zip.apply(null, arguments), true), function(elem) { + return elem != null; + }); + }, + interleave: _.weave, + + // Returns an array of a value repeated a certain number of + // times. + repeat: function(t, elem) { + return _.times(t, function() { return elem; }); + }, + + // Returns an array built from the contents of a given array repeated + // a certain number of times. + cycle: function(t, elems) { + return _.flatten(_.times(t, function() { return elems; }), true); + }, + + // Returns an array with two internal arrays built from + // taking an original array and spliting it at an index. + splitAt: function(array, index) { + return [_.take(array, index), _.drop(array, index)]; + }, + + // Call a function recursively f(f(f(args))) until a second + // given function goes falsey. Expects a seed value to start. + iterateUntil: function(doit, checkit, seed) { + var ret = []; + var result = doit(seed); + + while (checkit(result)) { + ret.push(result); + result = doit(result); + } + + return ret; + }, + + // Takes every nth item from an array, returning an array of + // the results. + takeSkipping: function(array, n) { + var ret = []; + var sz = _.size(array); + + if (n <= 0) return []; + if (n === 1) return array; + + for(var index = 0; index < sz; index += n) { + ret.push(array[index]); + } + + return ret; + }, + + // Returns an array of each intermediate stage of a call to + // a `reduce`-like function. + reductions: function(array, fun, init) { + var ret = []; + var acc = init; + + _.each(array, function(v,k) { + acc = fun(acc, array[k]); + ret.push(acc); + }); + + return ret; + }, + + // Runs its given function on the index of the elements rather than + // the elements themselves, keeping all of the truthy values in the end. + keepIndexed: function(array, pred) { + return _.filter(_.map(_.range(_.size(array)), function(i) { + return pred(i, array[i]); + }), + existy); + }, + + // Accepts an array-like object (other than strings) as an argument and + // returns an array whose elements are in the reverse order. Unlike the + // built-in `Array.prototype.reverse` method, this does not mutate the + // original object. Note: attempting to use this method on a string will + // result in a `TypeError`, as it cannot properly reverse unicode strings. + + reverseOrder: function(obj) { + if (typeof obj == 'string') + throw new TypeError('Strings cannot be reversed by _.reverseOrder'); + return slice.call(obj).reverse(); + } + }); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.array.selectors.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.array.selectors.js new file mode 100644 index 0000000000..d03f2a544b --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.array.selectors.js @@ -0,0 +1,117 @@ +// Underscore-contrib (underscore.array.selectors.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + // Create quick reference variables for speed access to core prototypes. + var slice = Array.prototype.slice, + concat = Array.prototype.concat; + + var existy = function(x) { return x != null; }; + var truthy = function(x) { return (x !== false) && existy(x); }; + var isSeq = function(x) { return (_.isArray(x)) || (_.isArguments(x)); }; + + // Mixing in the array selectors + // ---------------------------- + + _.mixin({ + // Returns the second element of an array. Passing **n** will return all but + // the first of the head N values in the array. The **guard** check allows it + // to work with `_.map`. + second: function(array, n, guard) { + if (array == null) return void 0; + return (n != null) && !guard ? slice.call(array, 1, n) : array[1]; + }, + + // Returns the third element of an array. Passing **n** will return all but + // the first two of the head N values in the array. The **guard** check allows it + // to work with `_.map`. + third: function(array, n, guard) { + if (array == null) return void 0; + return (n != null) && !guard ? slice.call(array, 2, n) : array[2]; + }, + + // A function to get at an index into an array + nth: function(array, index, guard) { + if ((index != null) && !guard) return array[index]; + }, + + // Takes all items in an array while a given predicate returns truthy. + takeWhile: function(array, pred) { + if (!isSeq(array)) throw new TypeError; + + var sz = _.size(array); + + for (var index = 0; index < sz; index++) { + if(!truthy(pred(array[index]))) { + break; + } + } + + return _.take(array, index); + }, + + // Drops all items from an array while a given predicate returns truthy. + dropWhile: function(array, pred) { + if (!isSeq(array)) throw new TypeError; + + var sz = _.size(array); + + for (var index = 0; index < sz; index++) { + if(!truthy(pred(array[index]))) + break; + } + + return _.drop(array, index); + }, + + // Returns an array with two internal arrays built from + // taking an original array and spliting it at the index + // where a given function goes falsey. + splitWith: function(array, pred) { + return [_.takeWhile(array, pred), _.dropWhile(array, pred)]; + }, + + // Takes an array and partitions it as the given predicate changes + // truth sense. + partitionBy: function(array, fun){ + if (_.isEmpty(array) || !existy(array)) return []; + + var fst = _.first(array); + var fstVal = fun(fst); + var run = concat.call([fst], _.takeWhile(_.rest(array), function(e) { + return _.isEqual(fstVal, fun(e)); + })); + + return concat.call([run], _.partitionBy(_.drop(array, _.size(run)), fun)); + }, + + // Returns the 'best' value in an array based on the result of a + // given function. + best: function(array, fun) { + return _.reduce(array, function(x, y) { + return fun(x, y) ? x : y; + }); + }, + + // Returns an array of existy results of a function over an source array. + keep: function(array, fun) { + if (!isSeq(array)) throw new TypeError("expected an array as the first argument"); + + return _.filter(_.map(array, function(e) { + return fun(e); + }), existy); + } + }); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.collections.walk.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.collections.walk.js new file mode 100644 index 0000000000..963b146f1f --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.collections.walk.js @@ -0,0 +1,196 @@ +// Underscore-contrib (underscore.collections.walk.js 0.3.0) +// (c) 2013 Patrick Dubroy +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + // An internal object that can be returned from a visitor function to + // prevent a top-down walk from walking subtrees of a node. + var stopRecursion = {}; + + // An internal object that can be returned from a visitor function to + // cause the walk to immediately stop. + var stopWalk = {}; + + var notTreeError = 'Not a tree: same object found in two different branches'; + + // Implements the default traversal strategy: if `obj` is a DOM node, walk + // its DOM children; otherwise, walk all the objects it references. + function defaultTraversal(obj) { + return _.isElement(obj) ? obj.children : obj; + } + + // Walk the tree recursively beginning with `root`, calling `beforeFunc` + // before visiting an objects descendents, and `afterFunc` afterwards. + // If `collectResults` is true, the last argument to `afterFunc` will be a + // collection of the results of walking the node's subtrees. + function walkImpl(root, traversalStrategy, beforeFunc, afterFunc, context, collectResults) { + var visited = []; + return (function _walk(value, key, parent) { + // Keep track of objects that have been visited, and throw an exception + // when trying to visit the same object twice. + if (_.isObject(value)) { + if (visited.indexOf(value) >= 0) throw new TypeError(notTreeError); + visited.push(value); + } + + if (beforeFunc) { + var result = beforeFunc.call(context, value, key, parent); + if (result === stopWalk) return stopWalk; + if (result === stopRecursion) return; + } + + var subResults; + var target = traversalStrategy(value); + if (_.isObject(target) && !_.isEmpty(target)) { + // If collecting results from subtrees, collect them in the same shape + // as the parent node. + if (collectResults) subResults = _.isArray(value) ? [] : {}; + + var stop = _.any(target, function(obj, key) { + var result = _walk(obj, key, value); + if (result === stopWalk) return true; + if (subResults) subResults[key] = result; + }); + if (stop) return stopWalk; + } + if (afterFunc) return afterFunc.call(context, value, key, parent, subResults); + })(root); + } + + // Internal helper providing the implementation for `pluck` and `pluckRec`. + function pluck(obj, propertyName, recursive) { + var results = []; + this.preorder(obj, function(value, key) { + if (!recursive && key == propertyName) + return stopRecursion; + if (_.has(value, propertyName)) + results[results.length] = value[propertyName]; + }); + return results; + } + + var exports = { + // Performs a preorder traversal of `obj` and returns the first value + // which passes a truth test. + find: function(obj, visitor, context) { + var result; + this.preorder(obj, function(value, key, parent) { + if (visitor.call(context, value, key, parent)) { + result = value; + return stopWalk; + } + }, context); + return result; + }, + + // Recursively traverses `obj` and returns all the elements that pass a + // truth test. `strategy` is the traversal function to use, e.g. `preorder` + // or `postorder`. + filter: function(obj, strategy, visitor, context) { + var results = []; + if (obj == null) return results; + strategy(obj, function(value, key, parent) { + if (visitor.call(context, value, key, parent)) results.push(value); + }, null, this._traversalStrategy); + return results; + }, + + // Recursively traverses `obj` and returns all the elements for which a + // truth test fails. + reject: function(obj, strategy, visitor, context) { + return this.filter(obj, strategy, function(value, key, parent) { + return !visitor.call(context, value, key, parent); + }); + }, + + // Produces a new array of values by recursively traversing `obj` and + // mapping each value through the transformation function `visitor`. + // `strategy` is the traversal function to use, e.g. `preorder` or + // `postorder`. + map: function(obj, strategy, visitor, context) { + var results = []; + strategy(obj, function(value, key, parent) { + results[results.length] = visitor.call(context, value, key, parent); + }, null, this._traversalStrategy); + return results; + }, + + // Return the value of properties named `propertyName` reachable from the + // tree rooted at `obj`. Results are not recursively searched; use + // `pluckRec` for that. + pluck: function(obj, propertyName) { + return pluck.call(this, obj, propertyName, false); + }, + + // Version of `pluck` which recursively searches results for nested objects + // with a property named `propertyName`. + pluckRec: function(obj, propertyName) { + return pluck.call(this, obj, propertyName, true); + }, + + // Recursively traverses `obj` in a depth-first fashion, invoking the + // `visitor` function for each object only after traversing its children. + // `traversalStrategy` is intended for internal callers, and is not part + // of the public API. + postorder: function(obj, visitor, context, traversalStrategy) { + traversalStrategy = traversalStrategy || this._traversalStrategy; + walkImpl(obj, traversalStrategy, null, visitor, context); + }, + + // Recursively traverses `obj` in a depth-first fashion, invoking the + // `visitor` function for each object before traversing its children. + // `traversalStrategy` is intended for internal callers, and is not part + // of the public API. + preorder: function(obj, visitor, context, traversalStrategy) { + traversalStrategy = traversalStrategy || this._traversalStrategy; + walkImpl(obj, traversalStrategy, visitor, null, context); + }, + + // Builds up a single value by doing a post-order traversal of `obj` and + // calling the `visitor` function on each object in the tree. For leaf + // objects, the `memo` argument to `visitor` is the value of the `leafMemo` + // argument to `reduce`. For non-leaf objects, `memo` is a collection of + // the results of calling `reduce` on the object's children. + reduce: function(obj, visitor, leafMemo, context) { + var reducer = function(value, key, parent, subResults) { + return visitor(subResults || leafMemo, value, key, parent); + }; + return walkImpl(obj, this._traversalStrategy, null, reducer, context, true); + } + }; + + // Set up aliases to match those in underscore.js. + exports.collect = exports.map; + exports.detect = exports.find; + exports.select = exports.filter; + + // Returns an object containing the walk functions. If `traversalStrategy` + // is specified, it is a function determining how objects should be + // traversed. Given an object, it returns the object to be recursively + // walked. The default strategy is equivalent to `_.identity` for regular + // objects, and for DOM nodes it returns the node's DOM children. + _.walk = function(traversalStrategy) { + var walker = _.clone(exports); + + // Bind all of the public functions in the walker to itself. This allows + // the traversal strategy to be dynamically scoped. + _.bindAll.apply(null, [walker].concat(_.keys(walker))); + + walker._traversalStrategy = traversalStrategy || defaultTraversal; + return walker; + }; + + // Use `_.walk` as a namespace to hold versions of the walk functions which + // use the default traversal strategy. + _.extend(_.walk, _.walk()); +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.arity.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.arity.js new file mode 100644 index 0000000000..5f123d28cc --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.arity.js @@ -0,0 +1,200 @@ +// Underscore-contrib (underscore.function.arity.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + function enforcesUnary (fn) { + return function mustBeUnary () { + if (arguments.length === 1) { + return fn.apply(this, arguments); + } + else throw new RangeError('Only a single argument may be accepted.'); + + }; + } + + // Curry + // ------- + var curry = (function () { + function collectArgs(func, that, argCount, args, newArg, reverse) { + if (reverse === true) { + args.unshift(newArg); + } else { + args.push(newArg); + } + if (args.length == argCount) { + return func.apply(that, args); + } else { + return enforcesUnary(function () { + return collectArgs(func, that, argCount, args.slice(0), arguments[0], reverse); + }); + } + } + return function curry (func, reverse) { + var that = this; + return enforcesUnary(function () { + return collectArgs(func, that, func.length, [], arguments[0], reverse); + }); + }; + }()); + + // Enforce Arity + // -------------------- + var enforce = (function () { + var CACHE = []; + return function enforce (func) { + if (typeof func !== 'function') { + throw new Error('Argument 1 must be a function.'); + } + var funcLength = func.length; + if (CACHE[funcLength] === undefined) { + CACHE[funcLength] = function (enforceFunc) { + return function () { + if (arguments.length !== funcLength) { + throw new RangeError(funcLength + ' arguments must be applied.'); + } + return enforceFunc.apply(this, arguments); + }; + }; + } + return CACHE[funcLength](func); + }; + }()); + + // Mixing in the arity functions + // ----------------------------- + + _.mixin({ + // ### Fixed arguments + + // Fixes the arguments to a function based on the parameter template defined by + // the presence of values and the `_` placeholder. + fix: function(fun) { + var fixArgs = _.rest(arguments); + + var f = function() { + var args = fixArgs.slice(); + var arg = 0; + + for ( var i = 0; i < (args.length || arg < arguments.length); i++ ) { + if ( args[i] === _ ) { + args[i] = arguments[arg++]; + } + } + + return fun.apply(null, args); + }; + + f._original = fun; + + return f; + }, + + unary: function (fun) { + return function unary (a) { + return fun.call(this, a); + }; + }, + + binary: function (fun) { + return function binary (a, b) { + return fun.call(this, a, b); + }; + }, + + ternary: function (fun) { + return function ternary (a, b, c) { + return fun.call(this, a, b, c); + }; + }, + + quaternary: function (fun) { + return function quaternary (a, b, c, d) { + return fun.call(this, a, b, c, d); + }; + }, + + // Flexible curry function with strict arity. + // Argument application left to right. + // source: https://github.com/eborden/js-curry + curry: curry, + + // Flexible right to left curry with strict arity. + rCurry: function (func) { + return curry.call(this, func, true); + }, + + + curry2: function (fun) { + return enforcesUnary(function curried (first) { + return enforcesUnary(function (last) { + return fun.call(this, first, last); + }); + }); + }, + + curry3: function (fun) { + return enforcesUnary(function (first) { + return enforcesUnary(function (second) { + return enforcesUnary(function (last) { + return fun.call(this, first, second, last); + }); + }); + }); + }, + + // reverse currying for functions taking two arguments. + rcurry2: function (fun) { + return enforcesUnary(function (last) { + return enforcesUnary(function (first) { + return fun.call(this, first, last); + }); + }); + }, + + rcurry3: function (fun) { + return enforcesUnary(function (last) { + return enforcesUnary(function (second) { + return enforcesUnary(function (first) { + return fun.call(this, first, second, last); + }); + }); + }); + }, + // Dynamic decorator to enforce function arity and defeat varargs. + enforce: enforce + }); + + _.arity = (function () { + // Allow 'new Function', as that is currently the only reliable way + // to manipulate function.length + /* jshint -W054 */ + var FUNCTIONS = {}; + return function arity (numberOfArgs, fun) { + if (FUNCTIONS[numberOfArgs] == null) { + var parameters = new Array(numberOfArgs); + for (var i = 0; i < numberOfArgs; ++i) { + parameters[i] = "__" + i; + } + var pstr = parameters.join(); + var code = "return function ("+pstr+") { return fun.apply(this, arguments); };"; + FUNCTIONS[numberOfArgs] = new Function(['fun'], code); + } + if (fun == null) { + return function (fun) { return arity(numberOfArgs, fun); }; + } + else return FUNCTIONS[numberOfArgs](fun); + }; + })(); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.combinators.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.combinators.js new file mode 100644 index 0000000000..b46089962c --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.combinators.js @@ -0,0 +1,266 @@ +// Underscore-contrib (underscore.function.combinators.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + var existy = function(x) { return x != null; }; + var truthy = function(x) { return (x !== false) && existy(x); }; + var __reverse = [].reverse; + var __slice = [].slice; + var __map = [].map; + var curry2 = function (fun) { + return function curried (first, optionalLast) { + if (arguments.length === 1) { + return function (last) { + return fun(first, last); + }; + } + else return fun(first, optionalLast); + }; + }; + + // n.b. depends on underscore.function.arity.js + + // Takes a target function and a mapping function. Returns a function + // that applies the mapper to its arguments before evaluating the body. + function baseMapArgs (fun, mapFun) { + return _.arity(fun.length, function () { + return fun.apply(this, __map.call(arguments, mapFun)); + }); + } + + // Mixing in the combinator functions + // ---------------------------------- + + _.mixin({ + // Provide "always" alias for backwards compatibility + always: _.constant, + + // Takes some number of functions, either as an array or variadically + // and returns a function that takes some value as its first argument + // and runs it through a pipeline of the original functions given. + pipeline: function(/*, funs */){ + var funs = (_.isArray(arguments[0])) ? arguments[0] : arguments; + + return function(seed) { + return _.reduce(funs, + function(l,r) { return r(l); }, + seed); + }; + }, + + // Composes a bunch of predicates into a single predicate that + // checks all elements of an array for conformance to all of the + // original predicates. + conjoin: function(/* preds */) { + var preds = arguments; + + return function(array) { + return _.every(array, function(e) { + return _.every(preds, function(p) { + return p(e); + }); + }); + }; + }, + + // Composes a bunch of predicates into a single predicate that + // checks all elements of an array for conformance to any of the + // original predicates. + disjoin: function(/* preds */) { + var preds = arguments; + + return function(array) { + return _.some(array, function(e) { + return _.some(preds, function(p) { + return p(e); + }); + }); + }; + }, + + // Takes a predicate-like and returns a comparator (-1,0,1). + comparator: function(fun) { + return function(x, y) { + if (truthy(fun(x, y))) + return -1; + else if (truthy(fun(y, x))) + return 1; + else + return 0; + }; + }, + + // Returns a function that reverses the sense of a given predicate-like. + complement: function(pred) { + return function() { + return !pred.apply(this, arguments); + }; + }, + + // Takes a function expecting varargs and + // returns a function that takes an array and + // uses its elements as the args to the original + // function + splat: function(fun) { + return function(array) { + return fun.apply(this, array); + }; + }, + + // Takes a function expecting an array and returns + // a function that takes varargs and wraps all + // in an array that is passed to the original function. + unsplat: function(fun) { + var funLength = fun.length; + + if (funLength < 1) { + return fun; + } + else if (funLength === 1) { + return function () { + return fun.call(this, __slice.call(arguments, 0)); + }; + } + else { + return function () { + var numberOfArgs = arguments.length, + namedArgs = __slice.call(arguments, 0, funLength - 1), + numberOfMissingNamedArgs = Math.max(funLength - numberOfArgs - 1, 0), + argPadding = new Array(numberOfMissingNamedArgs), + variadicArgs = __slice.call(arguments, fun.length - 1); + + return fun.apply(this, namedArgs.concat(argPadding).concat([variadicArgs])); + }; + } + }, + + // Same as unsplat, but the rest of the arguments are collected in the + // first parameter, e.g. unsplatl( function (args, callback) { ... ]}) + unsplatl: function(fun) { + var funLength = fun.length; + + if (funLength < 1) { + return fun; + } + else if (funLength === 1) { + return function () { + return fun.call(this, __slice.call(arguments, 0)); + }; + } + else { + return function () { + var numberOfArgs = arguments.length, + namedArgs = __slice.call(arguments, Math.max(numberOfArgs - funLength + 1, 0)), + variadicArgs = __slice.call(arguments, 0, Math.max(numberOfArgs - funLength + 1, 0)); + + return fun.apply(this, [variadicArgs].concat(namedArgs)); + }; + } + }, + + // map the arguments of a function + mapArgs: curry2(baseMapArgs), + + // Returns a function that returns an array of the calls to each + // given function for some arguments. + juxt: function(/* funs */) { + var funs = arguments; + + return function(/* args */) { + var args = arguments; + return _.map(funs, function(f) { + return f.apply(this, args); + }, this); + }; + }, + + // Returns a function that protects a given function from receiving + // non-existy values. Each subsequent value provided to `fnull` acts + // as the default to the original function should a call receive non-existy + // values in the defaulted arg slots. + fnull: function(fun /*, defaults */) { + var defaults = _.rest(arguments); + + return function(/*args*/) { + var args = _.toArray(arguments); + var sz = _.size(defaults); + + for(var i = 0; i < sz; i++) { + if (!existy(args[i])) + args[i] = defaults[i]; + } + + return fun.apply(this, args); + }; + }, + + // Flips the first two args of a function + flip2: function(fun) { + return function(/* args */) { + var flipped = __slice.call(arguments); + flipped[0] = arguments[1]; + flipped[1] = arguments[0]; + + return fun.apply(this, flipped); + }; + }, + + // Flips an arbitrary number of args of a function + flip: function(fun) { + return function(/* args */) { + var reversed = __reverse.call(arguments); + + return fun.apply(this, reversed); + }; + }, + + // Takes a method-style function (one which uses `this`) and pushes + // `this` into the argument list. The returned function uses its first + // argument as the receiver/context of the original function, and the rest + // of the arguments are used as the original's entire argument list. + functionalize: function(method) { + return function(ctx /*, args */) { + return method.apply(ctx, _.rest(arguments)); + }; + }, + + // Takes a function and pulls the first argument out of the argument + // list and into `this` position. The returned function calls the original + // with its receiver (`this`) prepending the argument list. The original + // is called with a receiver of `null`. + methodize: function(func) { + return function(/* args */) { + return func.apply(null, _.cons(this, arguments)); + }; + }, + + k: _.always, + t: _.pipeline + }); + + _.unsplatr = _.unsplat; + + // map the arguments of a function, takes the mapping function + // first so it can be used as a combinator + _.mapArgsWith = curry2(_.flip(baseMapArgs)); + + // Returns function property of object by name, bound to object + _.bound = function(obj, fname) { + var fn = obj[fname]; + if (!_.isFunction(fn)) + throw new TypeError("Expected property to be a function"); + return _.bind(fn, obj); + }; + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.dispatch.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.dispatch.js new file mode 100644 index 0000000000..9e0eab2176 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.dispatch.js @@ -0,0 +1,33 @@ +// Underscore-contrib (underscore.function.dispatch.js 0.3.0) +// (c) 2013 Justin Ridgewell +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + // Create quick reference variable for speed. + var slice = Array.prototype.slice; + + // Mixing in the attempt function + // ------------------------ + + _.mixin({ + // If object is not undefined or null then invoke the named `method` function + // with `object` as context and arguments; otherwise, return undefined. + attempt: function(object, method) { + if (object == null) return void 0; + var func = object[method]; + var args = slice.call(arguments, 2); + return _.isFunction(func) ? func.apply(object, args) : void 0; + } + }); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.iterators.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.iterators.js new file mode 100644 index 0000000000..9b5aed626e --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.iterators.js @@ -0,0 +1,334 @@ +// Underscore-contrib (underscore.function.iterators.js 0.3.0) +// (c) 2013 Michael Fogus and DocumentCloud Inc. +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root, undefined) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + var HASNTBEENRUN = {}; + + function unary (fun) { + return function (first) { + return fun.call(this, first); + }; + } + + function binary (fun) { + return function (first, second) { + return fun.call(this, first, second); + }; + } + + // Mixing in the iterator functions + // -------------------------------- + + function foldl (iter, binaryFn, seed) { + var state, element; + if (seed !== void 0) { + state = seed; + } + else { + state = iter(); + } + element = iter(); + while (element != null) { + state = binaryFn.call(element, state, element); + element = iter(); + } + return state; + } + + function unfold (seed, unaryFn) { + var state = HASNTBEENRUN; + return function () { + if (state === HASNTBEENRUN) { + state = seed; + } else if (state != null) { + state = unaryFn.call(state, state); + } + + return state; + }; + } + + // note that the unfoldWithReturn behaves differently than + // unfold with respect to the first value returned + function unfoldWithReturn (seed, unaryFn) { + var state = seed, + pair, + value; + return function () { + if (state != null) { + pair = unaryFn.call(state, state); + value = pair[1]; + state = value != null ? pair[0] : void 0; + return value; + } + else return void 0; + }; + } + + function accumulate (iter, binaryFn, initial) { + var state = initial; + return function () { + var element = iter(); + if (element == null) { + return element; + } + else { + if (state === void 0) { + state = element; + } else { + state = binaryFn.call(element, state, element); + } + + return state; + } + }; + } + + function accumulateWithReturn (iter, binaryFn, initial) { + var state = initial, + stateAndReturnValue, + element; + return function () { + element = iter(); + if (element == null) { + return element; + } + else { + if (state === void 0) { + state = element; + return state; + } + else { + stateAndReturnValue = binaryFn.call(element, state, element); + state = stateAndReturnValue[0]; + return stateAndReturnValue[1]; + } + } + }; + } + + function map (iter, unaryFn) { + return function() { + var element; + element = iter(); + if (element != null) { + return unaryFn.call(element, element); + } else { + return void 0; + } + }; + } + + function mapcat(iter, unaryFn) { + var lastIter = null; + return function() { + var element; + var gen; + if (lastIter == null) { + gen = iter(); + if (gen == null) { + lastIter = null; + return void 0; + } + lastIter = unaryFn.call(gen, gen); + } + while (element == null) { + element = lastIter(); + if (element == null) { + gen = iter(); + if (gen == null) { + lastIter = null; + return void 0; + } + else { + lastIter = unaryFn.call(gen, gen); + } + } + } + return element; + }; + } + + function select (iter, unaryPredicateFn) { + return function() { + var element; + element = iter(); + while (element != null) { + if (unaryPredicateFn.call(element, element)) { + return element; + } + element = iter(); + } + return void 0; + }; + } + + function reject (iter, unaryPredicateFn) { + return select(iter, function (something) { + return !unaryPredicateFn(something); + }); + } + + function find (iter, unaryPredicateFn) { + return select(iter, unaryPredicateFn)(); + } + + function slice (iter, numberToDrop, numberToTake) { + var count = 0; + while (numberToDrop-- > 0) { + iter(); + } + if (numberToTake != null) { + return function() { + if (++count <= numberToTake) { + return iter(); + } else { + return void 0; + } + }; + } + else return iter; + } + + function drop (iter, numberToDrop) { + return slice(iter, numberToDrop == null ? 1 : numberToDrop); + } + + function take (iter, numberToTake) { + return slice(iter, 0, numberToTake == null ? 1 : numberToTake); + } + + function List (array) { + var index = 0; + return function() { + return array[index++]; + }; + } + + function Tree (array) { + var index, myself, state; + index = 0; + state = []; + myself = function() { + var element, tempState; + element = array[index++]; + if (element instanceof Array) { + state.push({ + array: array, + index: index + }); + array = element; + index = 0; + return myself(); + } else if (element === void 0) { + if (state.length > 0) { + tempState = state.pop(); + array = tempState.array; + index = tempState.index; + return myself(); + } else { + return void 0; + } + } else { + return element; + } + }; + return myself; + } + + function K (value) { + return function () { + return value; + }; + } + + function upRange (from, to, by) { + return function () { + var was; + + if (from > to) { + return void 0; + } + else { + was = from; + from = from + by; + return was; + } + }; + } + + function downRange (from, to, by) { + return function () { + var was; + + if (from < to) { + return void 0; + } + else { + was = from; + from = from - by; + return was; + } + }; + } + + function range (from, to, by) { + if (from == null) { + return upRange(1, Infinity, 1); + } + else if (to == null) { + return upRange(from, Infinity, 1); + } + else if (by == null) { + if (from <= to) { + return upRange(from, to, 1); + } + else return downRange(from, to, 1); + } + else if (by > 0) { + return upRange(from, to, by); + } + else if (by < 0) { + return downRange(from, to, Math.abs(by)); + } + else return k(from); + } + + var numbers = unary(range); + + _.iterators = { + accumulate: accumulate, + accumulateWithReturn: accumulateWithReturn, + foldl: foldl, + reduce: foldl, + unfold: unfold, + unfoldWithReturn: unfoldWithReturn, + map: map, + mapcat: mapcat, + select: select, + reject: reject, + filter: select, + find: find, + slice: slice, + drop: drop, + take: take, + List: List, + Tree: Tree, + constant: K, + K: K, + numbers: numbers, + range: range + }; + +})(this, void 0); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.predicates.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.predicates.js new file mode 100644 index 0000000000..11e60ce3fc --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.function.predicates.js @@ -0,0 +1,112 @@ +// Underscore-contrib (underscore.function.predicates.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + + // Mixing in the predicate functions + // --------------------------------- + + _.mixin({ + // A wrapper around instanceof + isInstanceOf: function(x, t) { return (x instanceof t); }, + + // An associative object is one where its elements are + // accessed via a key or index. (i.e. array and object) + isAssociative: function(x) { return _.isArray(x) || _.isObject(x) || _.isArguments(x); }, + + // An indexed object is anything that allows numerical index for + // accessing its elements (e.g. arrays and strings). NOTE: Underscore + // does not support cross-browser consistent use of strings as array-like + // objects, so be wary in IE 8 when using String objects and IE<8. + // on string literals & objects. + isIndexed: function(x) { return _.isArray(x) || _.isString(x) || _.isArguments(x); }, + + // A seq is something considered a sequential composite type (i.e. arrays and `arguments`). + isSequential: function(x) { return (_.isArray(x)) || (_.isArguments(x)); }, + + // Check if an object is an object literal, since _.isObject(function() {}) === _.isObject([]) === true + isPlainObject: function(x) { return _.isObject(x) && x.constructor === root.Object; }, + + // These do what you think that they do + isZero: function(x) { return 0 === x; }, + isEven: function(x) { return _.isFinite(x) && (x & 1) === 0; }, + isOdd: function(x) { return _.isFinite(x) && !_.isEven(x); }, + isPositive: function(x) { return x > 0; }, + isNegative: function(x) { return x < 0; }, + isValidDate: function(x) { return _.isDate(x) && !_.isNaN(x.getTime()); }, + + // A numeric is a variable that contains a numeric value, regardless its type + // It can be a String containing a numeric value, exponential notation, or a Number object + // See here for more discussion: http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric/1830844#1830844 + isNumeric: function(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + }, + + // An integer contains an optional minus sign to begin and only the digits 0-9 + // Objects that can be parsed that way are also considered ints, e.g. "123" + // Floats that are mathematically equal to integers are considered integers, e.g. 1.0 + // See here for more discussion: http://stackoverflow.com/questions/1019515/javascript-test-for-an-integer + isInteger: function(i) { + return _.isNumeric(i) && i % 1 === 0; + }, + + // A float is a numbr that is not an integer. + isFloat: function(n) { + return _.isNumeric(n) && !_.isInteger(n); + }, + + // checks if a string is a valid JSON + isJSON: function(str) { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; + }, + + // Returns true if its arguments are monotonically + // increaing values; false otherwise. + isIncreasing: function() { + var count = _.size(arguments); + if (count === 1) return true; + if (count === 2) return arguments[0] < arguments[1]; + + for (var i = 1; i < count; i++) { + if (arguments[i-1] >= arguments[i]) { + return false; + } + } + + return true; + }, + + // Returns true if its arguments are monotonically + // decreaing values; false otherwise. + isDecreasing: function() { + var count = _.size(arguments); + if (count === 1) return true; + if (count === 2) return arguments[0] > arguments[1]; + + for (var i = 1; i < count; i++) { + if (arguments[i-1] <= arguments[i]) { + return false; + } + } + + return true; + } + }); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.object.builders.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.object.builders.js new file mode 100644 index 0000000000..278f09785b --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.object.builders.js @@ -0,0 +1,120 @@ +// Underscore-contrib (underscore.object.builders.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + // Create quick reference variables for speed access to core prototypes. + var slice = Array.prototype.slice, + concat = Array.prototype.concat; + + var existy = function(x) { return x != null; }; + var truthy = function(x) { return (x !== false) && existy(x); }; + var isAssociative = function(x) { return _.isArray(x) || _.isObject(x); }; + var curry2 = function(fun) { + return function(last) { + return function(first) { + return fun(first, last); + }; + }; + }; + + // Mixing in the object builders + // ---------------------------- + + _.mixin({ + // Merges two or more objects starting with the left-most and + // applying the keys right-word + // {any:any}* -> {any:any} + merge: function(/* objs */){ + var dest = _.some(arguments) ? {} : null; + + if (truthy(dest)) { + _.extend.apply(null, concat.call([dest], _.toArray(arguments))); + } + + return dest; + }, + + // Takes an object and another object of strings to strings where the second + // object describes the key renaming to occur in the first object. + renameKeys: function(obj, kobj) { + return _.reduce(kobj, function(o, nu, old) { + if (existy(obj[old])) { + o[nu] = obj[old]; + return o; + } + else + return o; + }, + _.omit.apply(null, concat.call([obj], _.keys(kobj)))); + }, + + // Snapshots an object deeply. Based on the version by + // [Keith Devens](http://keithdevens.com/weblog/archive/2007/Jun/07/javascript.clone) + // until we can find a more efficient and robust way to do it. + snapshot: function(obj) { + if(obj == null || typeof(obj) != 'object') { + return obj; + } + + var temp = new obj.constructor(); + + for(var key in obj) { + if (obj.hasOwnProperty(key)) { + temp[key] = _.snapshot(obj[key]); + } + } + + return temp; + }, + + // Updates the value at any depth in a nested object based on the + // path described by the keys given. The function provided is supplied + // the current value and is expected to return a value for use as the + // new value. If no keys are provided, then the object itself is presented + // to the given function. + updatePath: function(obj, fun, ks, defaultValue) { + if (!isAssociative(obj)) throw new TypeError("Attempted to update a non-associative object."); + if (!existy(ks)) return fun(obj); + + var deepness = _.isArray(ks); + var keys = deepness ? ks : [ks]; + var ret = deepness ? _.snapshot(obj) : _.clone(obj); + var lastKey = _.last(keys); + var target = ret; + + _.each(_.initial(keys), function(key) { + if (defaultValue && !_.has(target, key)) { + target[key] = _.clone(defaultValue); + } + target = target[key]; + }); + + target[lastKey] = fun(target[lastKey]); + return ret; + }, + + // Sets the value at any depth in a nested object based on the + // path described by the keys given. + setPath: function(obj, value, ks, defaultValue) { + if (!existy(ks)) throw new TypeError("Attempted to set a property at a null path."); + + return _.updatePath(obj, function() { return value; }, ks, defaultValue); + }, + + // Returns an object where each element of an array is keyed to + // the number of times that it occurred in said array. + frequencies: curry2(_.countBy)(_.identity) + }); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.object.selectors.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.object.selectors.js new file mode 100644 index 0000000000..17308eec95 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.object.selectors.js @@ -0,0 +1,108 @@ +// Underscore-contrib (underscore.object.selectors.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + // Create quick reference variables for speed access to core prototypes. + var concat = Array.prototype.concat; + var ArrayProto = Array.prototype; + var slice = ArrayProto.slice; + + // Mixing in the object selectors + // ------------------------------ + + _.mixin({ + // Returns a function that will attempt to look up a named field + // in any object that it's given. + accessor: function(field) { + return function(obj) { + return (obj && obj[field]); + }; + }, + + // Given an object, returns a function that will attempt to look up a field + // that it's given. + dictionary: function (obj) { + return function(field) { + return (obj && field && obj[field]); + }; + }, + + // Like `_.pick` except that it takes an array of keys to pick. + selectKeys: function (obj, ks) { + return _.pick.apply(null, concat.call([obj], ks)); + }, + + // Returns the key/value pair for a given property in an object, undefined if not found. + kv: function(obj, key) { + if (_.has(obj, key)) { + return [key, obj[key]]; + } + + return void 0; + }, + + // Gets the value at any depth in a nested object based on the + // path described by the keys given. Keys may be given as an array + // or as a dot-separated string. + getPath: function getPath (obj, ks) { + if (typeof ks == "string") ks = ks.split("."); + + // If we have reached an undefined property + // then stop executing and return undefined + if (obj === undefined) return void 0; + + // If the path array has no more elements, we've reached + // the intended property and return its value + if (ks.length === 0) return obj; + + // If we still have elements in the path array and the current + // value is null, stop executing and return undefined + if (obj === null) return void 0; + + return getPath(obj[_.first(ks)], _.rest(ks)); + }, + + // Returns a boolean indicating whether there is a property + // at the path described by the keys given + hasPath: function hasPath (obj, ks) { + if (typeof ks == "string") ks = ks.split("."); + + var numKeys = ks.length; + + if (obj == null && numKeys > 0) return false; + + if (!(ks[0] in obj)) return false; + + if (numKeys === 1) return true; + + return hasPath(obj[_.first(ks)], _.rest(ks)); + }, + + pickWhen: function(obj, pred) { + var copy = {}; + + _.each(obj, function(value, key) { + if (pred(obj[key])) copy[key] = obj[key]; + }); + + return copy; + }, + + omitWhen: function(obj, pred) { + return _.pickWhen(obj, function(e) { return !pred(e); }); + } + + }); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.existential.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.existential.js new file mode 100644 index 0000000000..72b7f000ae --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.existential.js @@ -0,0 +1,32 @@ +// Underscore-contrib (underscore.util.existential.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + + // Mixing in the truthiness + // ------------------------ + + _.mixin({ + exists: function(x) { return x != null; }, + truthy: function(x) { return (x !== false) && _.exists(x); }, + falsey: function(x) { return !_.truthy(x); }, + not: function(b) { return !b; }, + firstExisting: function() { + for (var i = 0; i < arguments.length; i++) { + if (arguments[i] != null) return arguments[i]; + } + } + }); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.operators.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.operators.js new file mode 100644 index 0000000000..2305716523 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.operators.js @@ -0,0 +1,164 @@ +// Underscore-contrib (underscore.function.arity.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Setup for variadic operators + // ---------------------------- + + // Turn a binary math operator into a variadic operator + function variadicMath(operator) { + return function() { + return _.reduce(arguments, operator); + }; + } + + // Turn a binary comparator into a variadic comparator + function variadicComparator(comparator) { + return function() { + var result; + for (var i = 0; i < arguments.length - 1; i++) { + result = comparator(arguments[i], arguments[i + 1]); + if (result === false) return result; + } + return result; + }; + } + + // Turn a boolean-returning function into one with the opposite meaning + function invert(fn) { + return function() { + return !fn.apply(this, arguments); + }; + } + + // Basic math operators + function add(x, y) { + return x + y; + } + + function sub(x, y) { + return x - y; + } + + function mul(x, y) { + return x * y; + } + + function div(x, y) { + return x / y; + } + + function mod(x, y) { + return x % y; + } + + function inc(x) { + return ++x; + } + + function dec(x) { + return --x; + } + + function neg(x) { + return -x; + } + + // Bitwise operators + function bitwiseAnd(x, y) { + return x & y; + } + + function bitwiseOr(x, y) { + return x | y; + } + + function bitwiseXor(x, y) { + return x ^ y; + } + + function bitwiseLeft(x, y) { + return x << y; + } + + function bitwiseRight(x, y) { + return x >> y; + } + + function bitwiseZ(x, y) { + return x >>> y; + } + + function bitwiseNot(x) { + return ~x; + } + + // Basic comparators + function eq(x, y) { + return x == y; + } + + function seq(x, y) { + return x === y; + } + + // Not + function not(x) { + return !x; + } + + // Relative comparators + function gt(x, y) { + return x > y; + } + + function lt(x, y) { + return x < y; + } + + function gte(x, y) { + return x >= y; + } + + function lte(x, y) { + return x <= y; + } + + // Mixing in the operator functions + // ----------------------------- + + _.mixin({ + add: variadicMath(add), + sub: variadicMath(sub), + mul: variadicMath(mul), + div: variadicMath(div), + mod: mod, + inc: inc, + dec: dec, + neg: neg, + eq: variadicComparator(eq), + seq: variadicComparator(seq), + neq: invert(variadicComparator(eq)), + sneq: invert(variadicComparator(seq)), + not: not, + gt: variadicComparator(gt), + lt: variadicComparator(lt), + gte: variadicComparator(gte), + lte: variadicComparator(lte), + bitwiseAnd: variadicMath(bitwiseAnd), + bitwiseOr: variadicMath(bitwiseOr), + bitwiseXor: variadicMath(bitwiseXor), + bitwiseNot: bitwiseNot, + bitwiseLeft: variadicMath(bitwiseLeft), + bitwiseRight: variadicMath(bitwiseRight), + bitwiseZ: variadicMath(bitwiseZ) + }); +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.strings.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.strings.js new file mode 100644 index 0000000000..15c6eaf192 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.strings.js @@ -0,0 +1,129 @@ +// Underscore-contrib (underscore.util.strings.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + // No reason to create regex more than once + var plusRegex = /\+/g; + var spaceRegex = /\%20/g; + var bracketRegex = /(?:([^\[]+))|(?:\[(.*?)\])/g; + + var urlDecode = function(s) { + return decodeURIComponent(s.replace(plusRegex, '%20')); + }; + var urlEncode = function(s) { + return encodeURIComponent(s).replace(spaceRegex, '+'); + }; + + var buildParams = function(prefix, val, top) { + if (_.isUndefined(top)) top = true; + if (_.isArray(val)) { + return _.map(val, function(value, key) { + return buildParams(top ? key : prefix + '[]', value, false); + }).join('&'); + } else if (_.isObject(val)) { + return _.map(val, function(value, key) { + return buildParams(top ? key : prefix + '[' + key + ']', value, false); + }).join('&'); + } else { + return urlEncode(prefix) + '=' + urlEncode(val); + } + }; + + // Mixing in the string utils + // ---------------------------- + + _.mixin({ + // Explodes a string into an array of chars + explode: function(s) { + return s.split(''); + }, + + // Parses a query string into a hash + fromQuery: function(str) { + var parameters = str.split('&'), + obj = {}, + parameter, + key, + match, + lastKey, + subKey, + depth; + + // Iterate over key/value pairs + _.each(parameters, function(parameter) { + parameter = parameter.split('='); + key = urlDecode(parameter[0]); + lastKey = key; + depth = obj; + + // Reset so we don't have issues when matching the same string + bracketRegex.lastIndex = 0; + + // Attempt to extract nested values + while ((match = bracketRegex.exec(key)) !== null) { + if (!_.isUndefined(match[1])) { + + // If we're at the top nested level, no new object needed + subKey = match[1]; + + } else { + + // If we're at a lower nested level, we need to step down, and make + // sure that there is an object to place the value into + subKey = match[2]; + depth[lastKey] = depth[lastKey] || (subKey ? {} : []); + depth = depth[lastKey]; + } + + // Save the correct key as a hash or an array + lastKey = subKey || _.size(depth); + } + + // Assign value to nested object + depth[lastKey] = urlDecode(parameter[1]); + }); + + return obj; + }, + + // Implodes and array of chars into a string + implode: function(a) { + return a.join(''); + }, + + // Converts a string to camel case + camelCase : function( string ){ + return string.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); + }, + + // Converts camel case to dashed (opposite of _.camelCase) + toDash : function( string ){ + string = string.replace(/([A-Z])/g, function($1){return "-"+$1.toLowerCase();}); + // remove first dash + return ( string.charAt( 0 ) == '-' ) ? string.substr(1) : string; + }, + + // Creates a query string from a hash + toQuery: function(obj) { + return buildParams('', obj); + }, + + // Reports whether a string contains a search string. + strContains: function(str, search) { + if (typeof str != 'string') throw new TypeError; + return (str.indexOf(search) != -1); + } + + }); +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.trampolines.js b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.trampolines.js new file mode 100644 index 0000000000..ce2a1bc7f9 --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/node_modules/underscore-contrib/underscore.util.trampolines.js @@ -0,0 +1,39 @@ +// Underscore-contrib (underscore.util.trampolines.js 0.3.0) +// (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors +// Underscore-contrib may be freely distributed under the MIT license. + +(function(root) { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var _ = root._ || require('underscore'); + + // Helpers + // ------- + + + // Mixing in the truthiness + // ------------------------ + + _.mixin({ + done: function(value) { + var ret = _(value); + ret.stopTrampoline = true; + return ret; + }, + + trampoline: function(fun /*, args */) { + var result = fun.apply(fun, _.rest(arguments)); + + while (_.isFunction(result)) { + result = result(); + if ((result instanceof _) && (result.stopTrampoline)) break; + } + + return result.value(); + } + }); + +})(this); diff --git a/third_party/jsdoc/node_modules/catharsis/package.json b/third_party/jsdoc/node_modules/catharsis/package.json new file mode 100644 index 0000000000..3e6ac226ea --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/package.json @@ -0,0 +1,48 @@ +{ + "version": "0.8.3", + "name": "catharsis", + "description": "A JavaScript parser for Google Closure Compiler and JSDoc type expressions.", + "author": { + "name": "Jeff Williams", + "email": "jeffrey.l.williams@gmail.com" + }, + "repository": { + "type": "git", + "url": "https://github.com/hegemonic/catharsis" + }, + "bugs": { + "url": "https://github.com/hegemonic/catharsis/issues" + }, + "main": "catharsis.js", + "dependencies": { + "underscore-contrib": "~0.3.0" + }, + "devDependencies": { + "mocha": "~1.21.3", + "pegjs": "https://github.com/dmajda/pegjs/tarball/76cc5d55b47ff3d5bbe1d435c6f843e2688cb729", + "should": "~4.0.4", + "tv4": "https://github.com/geraintluff/tv4/tarball/eb7561072d44943306e5fd88b55b4a4c98cb6c75", + "uglify-js": "~2.4.15" + }, + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "build": "pegjs ./lib/parser.pegjs", + "prepublish": "pegjs ./lib/parser.pegjs; ./node_modules/.bin/uglifyjs ./lib/parser.js -o ./lib/parser.js", + "test": "mocha" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/hegemonic/catharsis/raw/master/LICENSE" + } + ], + "readme": "# Catharsis #\n\nA JavaScript parser for\n[Google Closure Compiler](https://developers.google.com/closure/compiler/docs/js-for-compiler#types)\nand [JSDoc](https://github.com/jsdoc3/jsdoc) type expressions.\n\nCatharsis is designed to be:\n\n+ **Accurate**. Catharsis is based on a [PEG.js](http://pegjs.majda.cz/) grammar that's designed to\nhandle any valid type expression. It uses a [Mocha](http://visionmedia.github.com/mocha/) test suite\nto verify the parser's accuracy.\n+ **Fast**. Parse results are cached, so the parser is invoked only when necessary.\n+ **Flexible**. Catharsis can convert a parse result back into a type expression, or into a\ndescription of the type expression. In addition, Catharsis can parse\n[JSDoc](https://github.com/jsdoc3/jsdoc)-style type expressions.\n\n\n## Example ##\n\n```js\nvar catharsis = require('catharsis');\n\n// Google Closure Compiler parsing\nvar type = '!Object';\nvar parsedType;\ntry {\n parsedType = catharsis.parse(type); // {\"type\":\"NameExpression,\"name\":\"Object\",\"nullable\":false}\n} catch(e) {\n console.error('unable to parse %s: %s', type, e);\n}\n\n// JSDoc-style type expressions enabled\nvar jsdocType = 'string[]'; // Closure Compiler expects Array.\nvar parsedJsdocType;\ntry {\n parsedJsdocType = catharsis.parse(jsdocType, {jsdoc: true});\n} catch (e) {\n console.error('unable to parse %s: %s', jsdocType, e);\n}\n\n// Converting parse results back to type expressions\ncatharsis.stringify(parsedType); // !Object\ncatharsis.stringify(parsedJsdocType); // string[]\ncatharsis.stringify(parsedJsdocType, {restringify: true}); // Array.\n\n// Converting parse results to descriptions of the type expression\ncatharsis.describe(parsedType).simple; // non-null Object\ncatharsis.describe(parsedJsdocType).simple; // Array of string\n```\n\nSee the [test/specs directory](test/specs) for more examples of Catharsis' parse results.\n\n\n## Methods ##\n\n### parse(typeExpression, options) ###\nParse a type expression, and return the parse results. Throws an error if the type expression cannot\nbe parsed.\n\nWhen called without options, Catharsis attempts to parse type expressions in the same way as\nClosure Compiler. When the `jsdoc` option is enabled, Catharsis can also parse several kinds of\ntype expressions that are permitted in [JSDoc](https://github.com/jsdoc3/jsdoc):\n\n+ The string `function` is treated as a function type with no parameters.\n+ In a function type with repeatable parameters, the names of repeatable parameters are not required\nto be enclosed in square brackets (for example, `function(...foo)` is allowed).\n+ The period may be omitted from type applications. For example, `Array.` and\n`Array` will be parsed in the same way.\n+ You may append `[]` to a name expression (for example, `string[]`) to interpret it as a type\napplication with the expression `Array` (for example, `Array.`).\n+ Name expressions may contain the characters `#`, `~`, `:`, and `/`.\n+ Name expressions may contain a suffix that is similar to a function signature (for example,\n`MyClass(foo, bar)`).\n+ Name expressions may contain a reserved word.\n+ Record types may use types other than name expressions for keys.\n\n#### Parameters ####\n+ `type`: A string containing a Closure Compiler type expression.\n+ `options`: Options for parsing the type expression.\n + `options.jsdoc`: Specifies whether to enable parsing of JSDoc-style type expressions. Defaults\n to `false`.\n + `options.useCache`: Specifies whether to use the cache of parsed types. Defaults to `true`.\n\n#### Returns ####\nAn object containing the parse results. See the [test/specs directory](test/specs) for examples of\nthe parse results for different type expressions.\n\nThe object also includes two non-enumerable properties:\n\n+ `jsdoc`: A boolean indicating whether the type expression was parsed with JSDoc support enabled.\n+ `typeExpression`: A string containing the type expression that was parsed.\n\n### stringify(parsedType, options) ###\nStringify `parsedType`, and return the type expression. If validation is enabled, throws an error if\nthe stringified type expression cannot be parsed.\n\n#### Parameters ####\n+ `parsedType`: An object containing a parsed Closure Compiler type expression.\n+ `options`: Options for stringifying the parse results.\n + `options.cssClass`: Synonym for `options.linkClass`. Deprecated in version 0.8.0; will be\n removed in a future version.\n + `options.htmlSafe`: Specifies whether to return an HTML-safe string that replaces left angle\n brackets (`<`) with the corresponding entity (`<`). **Note**: Characters in name expressions\n are not escaped.\n + `options.linkClass`: A CSS class to add to HTML links. Used only if `options.links` is\n provided. By default, no CSS class is added.\n + `options.links`: An object whose keys are name expressions and whose values are URIs. If a\n name expression matches a key in `options.links`, the name expression will be wrapped in an\n HTML `` tag that links to the URI. If `options.linkClass` is specified, the `` tag will\n include a `class` attribute. **Note**: When using this option, parsed types are always\n restringified, and the resulting string is not cached.\n + `options.restringify`: Forces Catharsis to restringify the parsed type. If this option is not\n specified, and the parsed type object includes a `typeExpression` property, Catharsis will\n return the `typeExpression` property without modification when possible. Defaults to `false`.\n + `options.useCache`: Specifies whether to use the cache of stringified type expressions.\n Defaults to `true`.\n + `options.validate`: Specifies whether to validate the stringified parse results by attempting\n to parse them as a type expression. If the stringified results are not parsable by default, you\n must also provide the appropriate options to pass to the `parse()` method. Defaults to `false`.\n\n#### Returns ####\nA string containing the type expression.\n\n### describe(parsedType, options) ###\nConvert a parsed type to a description of the type expression. This method is especially useful if\nyour users are not familiar with the syntax for type expressions.\n\nThe `describe()` method returns the description in two formats:\n\n+ **Simple format**. A string that provides a complete description of the type expression.\n+ **Extended format**. An object that separates out some of the details about the outermost type\nexpression, such as whether the type is optional, nullable, or repeatable.\n\nFor example, if you call `describe('?function(new:MyObject, string)=')`, it returns the following\nobject:\n\n```js\n{\n simple: 'optional nullable function(constructs MyObject, string)',\n extended: {\n description: 'function(string)',\n modifiers: {\n functionNew: 'Returns MyObject when called with new.',\n functionThis: '',\n optional: 'Optional.',\n nullable: 'May be null.',\n repeatable: ''\n },\n returns: ''\n }\n}\n```\n\n#### Parameters ####\n+ `parsedType`: An object containing a parsed Closure Compiler type expression.\n+ `options`: Options for creating the description.\n + `options.codeClass`: A CSS class to add to the tag that is wrapped around type names. Used\n only if `options.codeTag` is provided. By default, no CSS class is added.\n + `options.codeTag`: The name of an HTML tag (for example, `code`) to wrap around type names.\n For example, if this option is set to `code`, the type expression `Array.` would have\n the simple description `Array of string`.\n + `options.language`: A string identifying the language in which to generate the description.\n The identifier should be an\n [ISO 639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (for example,\n `en`). It can optionally be followed by a hyphen and an\n [ISO 3166-1 alpha-2 country code](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) (for example,\n `en-US`). If you use values other than `en`, you must provide translation resources in\n `options.resources`. Defaults to `en`.\n + `options.linkClass`: A CSS class to add to HTML links. Used only if `options.links` is\n provided. By default, no CSS class is added.\n + `options.links`: An object whose keys are name expressions and whose values are URIs. If a\n name expression matches a key in `options.links`, the name expression will be wrapped in an\n HTML `` tag that links to the URI. If `options.linkClass` is specified, the `` tag will\n include a `class` attribute. **Note**: When using this option, the description is not cached.\n + `options.resources`: An object that specifies how to describe type expressions for a given\n language. The object's property names should use the same format as `options.language`. Each\n property should contain an object in the same format as the translation resources in\n [res/en.json](res/en.json). If you specify a value for `options.resources.en`, it will override\n the defaults in [res/en.json](res/en.json).\n + `options.useCache`: Specifies whether to use the cache of descriptions. Defaults to `true`.\n\n### Returns ###\nAn object with the following properties:\n\n+ `simple`: A string that provides a complete description of the type expression.\n+ `extended`: An object containing details about the outermost type expression.\n + `extended.description`: A string that provides a basic description of the type expression,\n excluding the information contained in other properties.\n + `extended.modifiers`: Information about modifiers that apply to the type expression.\n + `extended.modifiers.functionNew`: A string describing what a function returns when called\n with `new`. Used only for function types.\n + `extended.modifiers.functionThis`: A string describing what the keyword `this` refers to\n within a function. Used only for function types.\n + `extended.modifiers.nullable`: A string indicating whether the type is nullable or\n non-nullable.\n + `extended.modifiers.optional`: A string indicating whether the type is optional.\n + `extended.modifiers.repeatable`: A string indicating whether the type can be provided\n + `extended.returns`: A string describing the function's return value. Used only for function\n types.\n\n\n## Installation ##\n\nWith [npm](http://npmjs.org):\n\n npm install catharsis\n\nOr without:\n\n git clone git://github.com/hegemonic/catharsis.git\n cd catharsis\n npm install\n\n\n## Roadmap and known issues ##\n\nTake a look at the [issue tracker](https://github.com/hegemonic/catharsis/issues) to see what's in\nstore for Catharsis.\n\nBug reports, feature requests, and pull requests are always welcome! If you're working on a large\npull request, please contact me in advance so I can help things go smoothly.\n\n**Note**: The parse tree's format should not be considered final until Catharsis reaches version\n1.0. I'll do my best to provide release notes for any changes.\n\n\n## Changelog ##\n\n+ 0.8.3 (October 2014):\n + Type applications are no longer required to include a period (`.`) as a separator, regardless\n of whether JSDoc-style type expressions are enabled.\n + Type unions that are not enclosed in parentheses can now include the repeatable (`...`)\n modifier when JSDoc-style type expressions are enabled.\n + Name expressions may now be enclosed in single or double quotation marks when JSDoc-style\n type expressions are enabled.\n+ 0.8.2 (June 2014): Fixed a compatibility issue with the JSDoc fork of Mozilla Rhino.\n+ 0.8.1 (June 2014): Added support for type unions that are not enclosed in parentheses, and that\ncontain nullable or non-nullable modifiers (for example, `!string|!number`).\n+ 0.8.0 (May 2014):\n + Added a `describe()` method, which converts a parsed type to a description of the type.\n + Added a `linkClass` option to the `stringify()` method, and deprecated the existing `cssClass`\n option. The `cssClass` option will be removed in a future release.\n + Clarified and corrected several sections in the `README`.\n+ 0.7.1 (April 2014): In record types, property names that begin with a keyword (for example,\n`undefinedHTML`) are now parsed correctly when JSDoc-style type expressions are enabled.\n+ 0.7.0 (October 2013):\n + Repeatable type expressions other than name expressions (for example, `...function()`) are now\n parsed and stringified correctly.\n + Type expressions that are both repeatable and either nullable or non-nullable (for example,\n `...!number`) are now parsed and stringified correctly.\n + Name expressions are now parsed correctly when they match a property name in an object\n instance (for example, `constructor`).\n+ 0.6.0 (September 2013): Added support for the type expression `function[]` when JSDoc-style type\nexpressions are enabled.\n+ 0.5.6 (April 2013):\n + For consistency with Google Closure Library, parentheses are no longer required around type\n unions. (In previous versions, the parentheses could be omitted when JSDoc support was enabled.)\n + For consistency with Google Closure Library, you can now use postfix notation for the `?`\n (nullable) and `!` (non-nullable) modifiers. For example, `?string` and `string?` are now\n treated as equivalent.\n + String literals and numeric literals are now allowed as property names within name\n expressions. For example, the name expression `Foo.\"bar\"` is now parsed correctly.\n+ 0.5.5 (April 2013): Corrected a parsing issue with name expressions that end with a value enclosed\nin parentheses.\n+ 0.5.4 (April 2013):\n + Repeatable literals (for example, `...*`) are now parsed correctly.\n + When JSDoc-style type expressions are enabled, a name expression can now contain a value\n enclosed in parentheses at the end of the name expression (for example, `MyClass(2)`).\n+ 0.5.3 (March 2013): The `parse()` method now correctly parses name expressions that contain\nhyphens.\n+ 0.5.2 (March 2013): The `parse()` method now correctly parses function types when JSDoc-style type\nexpressions are enabled.\n+ 0.5.1 (March 2013): Newlines and extra spaces are now removed from type expressions before they\nare parsed.\n+ 0.5.0 (March 2013):\n + The `parse()` method's `lenient` option has been renamed to `jsdoc`. **Note**: This change is\n not backwards-compatible with previous versions.\n + The `stringify()` method now accepts `cssClass` and `links` options, which you can use to\n add HTML links to a type expression.\n+ 0.4.3 (March 2013):\n + The `stringify()` method no longer caches HTML-safe type expressions as if they were normal\n type expressions.\n + The `stringify()` method's options parameter may now include an `options.restringify`\n property, and the behavior of the `options.useCache` property has changed.\n+ 0.4.2 (March 2013):\n + When lenient parsing is enabled, name expressions can now contain the characters `:` and `/`.\n + When lenient parsing is enabled, a name expression followed by `[]` (for example, `string[]`)\n will be interpreted as a type application with the expression `Array` (for example,\n `Array.`).\n+ 0.4.1 (March 2013):\n + The `parse()` and `stringify()` methods now honor all of the specified options.\n + When lenient parsing is enabled, name expressions can now contain a reserved word.\n+ 0.4.0 (March 2013):\n + Catharsis now supports a lenient parsing option that can parse several kinds of malformed type\n expressions. See the documentation for details.\n + The objects containing parse results are now frozen.\n + The objects containing parse results now have two non-enumerable properties:\n + `lenient`: A boolean indicating whether the type expression was parsed in lenient mode.\n + `typeExpression`: A string containing the original type expression.\n + The `stringify()` method now honors the `useCache` option. If a parsed type includes a\n `typeExpression` property, and `useCache` is not set to `false`, the stringified type will be\n identical to the original type expression.\n+ 0.3.1 (March 2013): Type expressions that begin with a reserved word, such as `integer`, are now\nparsed correctly.\n+ 0.3.0 (March 2013):\n + The `parse()` and `stringify()` methods are now synchronous, and the `parseSync()` and\n `stringifySync()` methods have been removed. **Note**: This change is not backwards-compatible\n with previous versions.\n + The parse results now use a significantly different format from previous versions. The new\n format is more expressive and is similar, but not identical, to the format used by the\n [doctrine](https://github.com/Constellation/doctrine) parser. **Note**: This change is not\n backwards-compatible with previous versions.\n + Name expressions that contain a reserved word now include a `reservedWord: true` property.\n + Union types that are optional or nullable, or that can be passed a variable number of times,\n are now parsed and stringified correctly.\n + Optional function types and record types are now parsed and stringified correctly.\n + Function types now longer include `new` or `this` properties unless the properties are defined\n in the type expression. In addition, the `new` and `this` properties can now use any type\n expression.\n + In record types, the key for a field type can now use any type expression.\n + Standalone single-character literals, such as ALL (`*`), are now parsed and stringified\n correctly.\n + `null` and `undefined` literals with additional properties, such as `repeatable`, are now\n stringified correctly.\n+ 0.2.0 (November 2012):\n + Added `stringify()` and `stringifySync()` methods, which convert a parsed type to a type\n expression.\n + Simplified the parse results for function signatures. **Note**: This change is not\n backwards-compatible with previous versions.\n + Corrected minor errors in README.md.\n+ 0.1.1 (November 2012): Added `opts` argument to `parse()` and `parseSync()` methods. **Note**: The\nchange to `parse()` is not backwards-compatible with previous versions.\n+ 0.1.0 (November 2012): Initial release.\n\n## License ##\n\n[MIT license](https://github.com/hegemonic/catharsis/blob/master/LICENSE).\n", + "readmeFilename": "README.md", + "gitHead": "8795105b00acf02d0af464ad3432f47b53744934", + "homepage": "https://github.com/hegemonic/catharsis", + "_id": "catharsis@0.8.3", + "_shasum": "573ad3d285dcfc373221712bd382edda61b3a5d5", + "_from": "catharsis@~0.8.3" +} diff --git a/third_party/jsdoc/node_modules/catharsis/res/en.json b/third_party/jsdoc/node_modules/catharsis/res/en.json new file mode 100644 index 0000000000..9afb501b3b --- /dev/null +++ b/third_party/jsdoc/node_modules/catharsis/res/en.json @@ -0,0 +1,91 @@ +{ + "all": "any type", + "application": { + "array": "<%= prefix %> <%= codeTagOpen %>Array<%= codeTagClose %> of <%= application %> <%= suffix %>", + "object": "<%= prefix %> <%= codeTagOpen %>Object<%= codeTagClose %> with <%= application %> properties <%= suffix %>", + "objectNonString": "<%= prefix %> <%= codeTagOpen %>Object<%= codeTagClose %> with <%= keyApplication %> keys and <%= application %> properties <%= suffix %>" + }, + "function": { + "extended": { + "new": "Returns <%= functionNew %> when called with <%= codeTagOpen %>new<%= codeTagClose %>.", + "returns": "Returns <%= type %>.", + "signature": "function(<%= functionParams %>)", + "this": "Within the function, <%= codeTagOpen %>this<%= codeTagClose %> refers to <%= functionThis %>." + }, + "simple": { + "new": "constructs <%= functionNew %>", + "returns": "returns <%= type %>", + "signature": "<%= prefix %> function(<%= functionParams %>) <%= functionReturns %>", + "this": "<%= codeTagOpen %>this<%= codeTagClose %> = <%= functionThis %>" + } + }, + "modifiers": { + "extended": { + "nonNullable": "Must not be null.", + "nullable": "May be null.", + "optional": "Optional.", + "prefix": "", + "repeatable": "May be provided more than once.", + "suffix": "" + }, + "simple": { + "nonNullable": "non-null", + "nullable": "nullable", + "optional": "optional", + "prefix": "<%= optional %> <%= nullable %> <%= repeatable %>", + "repeatable": "repeatable", + "suffix": "" + } + }, + "name": "<%= codeTagOpen %>{{ name }}<%= codeTagClose %> <%= suffix %>", + "null": "null", + "params": { + "first": { + "one": "<%= param %>", + "two": "<%= param %>, ", + "many": "<%= param %>, " + }, + "middle": { + "many": "<%= param %>, " + }, + "last": { + "two": "<%= param %>", + "many": "<%= param %>" + } + }, + "record": { + "first": { + "one": "<%= prefix %> {<%= field %>} <%= suffix %>", + "two": "<%= prefix %> {<%= field %>, ", + "many": "<%= prefix %> {<%= field %>, " + }, + "middle": { + "many": "<%= field %>, " + }, + "last": { + "two": "<%= field %>} <%= suffix %>", + "many": "<%= field %>} <%= suffix %>" + } + }, + "field": { + "typed": "<%= name %>: <%= type %>", + "untyped": "<%= name %>" + }, + "type": "<%= prefix %> <%= codeTagOpen %><%= type %><%= codeTagClose %> <%= suffix %>", + "undefined": "undefined", + "union": { + "first": { + "one": "<%= prefix %> <%= element %> <%= suffix %>", + "two": "<%= prefix %> (<%= element %> ", + "many": "<%= prefix %> (<%= element %>, " + }, + "middle": { + "many": "<%= element %>, " + }, + "last": { + "two": "or <%= element %>) <%= suffix %>", + "many": "or <%= element %>) <%= suffix %>" + } + }, + "unknown": "unknown type" +} diff --git a/third_party/jsdoc/node_modules/crypto-browserify/index.js b/third_party/jsdoc/node_modules/crypto-browserify/index.js new file mode 100644 index 0000000000..a6762ed486 --- /dev/null +++ b/third_party/jsdoc/node_modules/crypto-browserify/index.js @@ -0,0 +1,68 @@ +var sha = require('./sha') +var rng = require('./rng') + +var algorithms = { + sha1: { + hex: sha.hex_sha1, + binary: sha.b64_sha1, + ascii: sha.str_sha1 + } +} + +function error () { + var m = [].slice.call(arguments).join(' ') + throw new Error([ + m, + 'we accept pull requests', + 'http://github.com/dominictarr/crypto-browserify' + ].join('\n')) +} + +exports.createHash = function (alg) { + alg = alg || 'sha1' + if(!algorithms[alg]) + error('algorithm:', alg, 'is not yet supported') + var s = '' + var _alg = algorithms[alg] + return { + update: function (data) { + s += data + return this + }, + digest: function (enc) { + enc = enc || 'binary' + var fn + if(!(fn = _alg[enc])) + error('encoding:', enc , 'is not yet supported for algorithm', alg) + var r = fn(s) + s = null //not meant to use the hash after you've called digest. + return r + } + } +} + +exports.randomBytes = function(size, callback) { + if (callback && callback.call) { + try { + callback.call(this, undefined, rng(size)); + } catch (err) { callback(err); } + } else { + return rng(size); + } +} + +// the least I can do is make error messages for the rest of the node.js/crypto api. +;['createCredentials' +, 'createHmac' +, 'createCypher' +, 'createCypheriv' +, 'createDecipher' +, 'createDecipheriv' +, 'createSign' +, 'createVerify' +, 'createDeffieHellman' +, 'pbkdf2'].forEach(function (name) { + exports[name] = function () { + error('sorry,', name, 'is not implemented yet') + } +}) diff --git a/third_party/jsdoc/node_modules/crypto-browserify/package.json b/third_party/jsdoc/node_modules/crypto-browserify/package.json new file mode 100644 index 0000000000..99a6930c32 --- /dev/null +++ b/third_party/jsdoc/node_modules/crypto-browserify/package.json @@ -0,0 +1,29 @@ +{ + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "dominictarr.com" + }, + "name": "crypto-browserify", + "description": "partial implementation of crypto for the browser", + "version": "0.1.1", + "homepage": "https://github.com/dominictarr/crypto-browserify", + "repository": { + "url": "" + }, + "scripts": { + "test": "node test/simple.js" + }, + "engines": { + "node": "*" + }, + "dependencies": {}, + "devDependencies": {}, + "optionalDependencies": {}, + "readme": "# crypto-browserify\n\nA (partial) port of `crypto` to the browser.\n\nBasically, I found some crypto implemented in JS lieing on the internet somewhere\nand wrapped it in the part of the `crypto` api that I am currently using.\n\nIn a way that will be compatible with [browserify](https://github.com/substack/node-browserify/).\n\nI will extend this if I need more features, or if anyone else wants to extend this,\nI will add you as a maintainer.\n\nProvided that you agree that it should replicate the [node.js/crypto](http://nodejs.org/api/crypto.html) api exactly, of course.\n\n", + "_id": "crypto-browserify@0.1.1", + "dist": { + "shasum": "251b240c6bd0e95db0654fbc8b178b855cbef45e" + }, + "_from": "crypto-browserify@git://github.com/dominictarr/crypto-browserify.git#95c5d505" +} diff --git a/third_party/jsdoc/node_modules/crypto-browserify/rng.js b/third_party/jsdoc/node_modules/crypto-browserify/rng.js new file mode 100644 index 0000000000..2160788a15 --- /dev/null +++ b/third_party/jsdoc/node_modules/crypto-browserify/rng.js @@ -0,0 +1,37 @@ +// Original code adapted from Robert Kieffer. +// details at https://github.com/broofa/node-uuid +(function() { + var _global = this; + + var mathRNG, whatwgRNG; + + // NOTE: Math.random() does not guarantee "cryptographic quality" + mathRNG = function(size) { + var bytes = new Array(size); + var r; + + for (var i = 0, r; i < size; i++) { + if ((i & 0x03) == 0) r = Math.random() * 0x100000000; + bytes[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return bytes; + } + + // currently only available in webkit-based browsers. + if (_global.crypto && crypto.getRandomValues) { + var _rnds = new Uint32Array(4); + whatwgRNG = function(size) { + var bytes = new Array(size); + crypto.getRandomValues(_rnds); + + for (var c = 0 ; c < size; c++) { + bytes[c] = _rnds[c >> 2] >>> ((c & 0x03) * 8) & 0xff; + } + return bytes; + } + } + + module.exports = whatwgRNG || mathRNG; + +}()) \ No newline at end of file diff --git a/third_party/jsdoc/node_modules/crypto-browserify/sha.js b/third_party/jsdoc/node_modules/crypto-browserify/sha.js new file mode 100644 index 0000000000..4f9cc3e97a --- /dev/null +++ b/third_party/jsdoc/node_modules/crypto-browserify/sha.js @@ -0,0 +1,210 @@ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +exports.hex_sha1 = hex_sha1; +exports.b64_sha1 = b64_sha1; +exports.str_sha1 = str_sha1; +exports.hex_hmac_sha1 = hex_hmac_sha1; +exports.b64_hmac_sha1 = b64_hmac_sha1; +exports.str_hmac_sha1 = str_hmac_sha1; + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} +function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} +function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} +function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} +function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} +function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} + +/* + * Perform a simple self-test to see if the VM is working + */ +function sha1_vm_test() +{ + return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; +} + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function core_sha1(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + +/* + * Calculate the HMAC-SHA1 of a key and some data + */ +function core_hmac_sha1(key, data) +{ + var bkey = str2binb(key); + if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); + return core_sha1(opad.concat(hash), 512 + 160); +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* + * Convert an 8-bit or 16-bit string to an array of big-endian words + * In 8-bit function, characters >255 have their hi-byte silently ignored. + */ +function str2binb(str) +{ + var bin = Array(); + var mask = (1 << chrsz) - 1; + for(var i = 0; i < str.length * chrsz; i += chrsz) + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); + return bin; +} + +/* + * Convert an array of big-endian words to a string + */ +function binb2str(bin) +{ + var str = ""; + var mask = (1 << chrsz) - 1; + for(var i = 0; i < bin.length * 32; i += chrsz) + str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); + return str; +} + +/* + * Convert an array of big-endian words to a hex string. + */ +function binb2hex(binarray) +{ + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var str = ""; + for(var i = 0; i < binarray.length * 4; i++) + { + str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + + hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); + } + return str; +} + +/* + * Convert an array of big-endian words to a base-64 string + */ +function binb2b64(binarray) +{ + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var str = ""; + for(var i = 0; i < binarray.length * 4; i += 3) + { + var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) + | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) + | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); + } + } + return str; +} + diff --git a/third_party/jsdoc/node_modules/escape-string-regexp/index.js b/third_party/jsdoc/node_modules/escape-string-regexp/index.js new file mode 100644 index 0000000000..ac6572cabe --- /dev/null +++ b/third_party/jsdoc/node_modules/escape-string-regexp/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; diff --git a/third_party/jsdoc/node_modules/escape-string-regexp/package.json b/third_party/jsdoc/node_modules/escape-string-regexp/package.json new file mode 100644 index 0000000000..5da6f01d80 --- /dev/null +++ b/third_party/jsdoc/node_modules/escape-string-regexp/package.json @@ -0,0 +1,69 @@ +{ + "name": "escape-string-regexp", + "version": "1.0.2", + "description": "Escape RegExp special characters", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/sindresorhus/escape-string-regexp" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.8.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "regex", + "regexp", + "re", + "regular", + "expression", + "escape", + "string", + "str", + "special", + "characters" + ], + "devDependencies": { + "mocha": "*" + }, + "gitHead": "0587ee0ee03ea3fcbfa3c15cf67b47f214e20987", + "bugs": { + "url": "https://github.com/sindresorhus/escape-string-regexp/issues" + }, + "homepage": "https://github.com/sindresorhus/escape-string-regexp", + "_id": "escape-string-regexp@1.0.2", + "_shasum": "4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1", + "_from": "escape-string-regexp@1.0.2", + "_npmVersion": "1.4.23", + "_npmUser": { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + } + ], + "dist": { + "shasum": "4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1", + "tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/third_party/jsdoc/node_modules/escape-string-regexp/readme.md b/third_party/jsdoc/node_modules/escape-string-regexp/readme.md new file mode 100644 index 0000000000..808a963a86 --- /dev/null +++ b/third_party/jsdoc/node_modules/escape-string-regexp/readme.md @@ -0,0 +1,27 @@ +# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) + +> Escape RegExp special characters + + +## Install + +```sh +$ npm install --save escape-string-regexp +``` + + +## Usage + +```js +var escapeStringRegexp = require('escape-string-regexp'); + +var escapedString = escapeStringRegexp('how much $ for a unicorn?'); +//=> how much \$ for a unicorn\? + +new RegExp(escapedString); +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/third_party/jsdoc/node_modules/esprima/esprima.js b/third_party/jsdoc/node_modules/esprima/esprima.js new file mode 100644 index 0000000000..5fa5d22fae --- /dev/null +++ b/third_party/jsdoc/node_modules/esprima/esprima.js @@ -0,0 +1,5195 @@ +/* + Copyright (C) 2013 Ariya Hidayat + Copyright (C) 2013 Thaddee Tyl + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2012 Mathias Bynens + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Kris Kowal + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Arpad Borsos + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint bitwise:true plusplus:true */ +/*global esprima:true, define:true, exports:true, window: true, +throwError: true, generateStatement: true, peek: true, +parseAssignmentExpression: true, parseBlock: true, +parseClassExpression: true, parseClassDeclaration: true, parseExpression: true, +parseForStatement: true, +parseFunctionDeclaration: true, parseFunctionExpression: true, +parseFunctionSourceElements: true, parseVariableIdentifier: true, +parseImportSpecifier: true, +parseLeftHandSideExpression: true, parseParams: true, validateParam: true, +parseSpreadOrAssignmentExpression: true, +parseStatement: true, parseSourceElement: true, parseModuleBlock: true, parseConciseBody: true, +parseYieldExpression: true +*/ + +(function (root, factory) { + 'use strict'; + + // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, + // Rhino, and plain browser loading. + if (typeof define === 'function' && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== 'undefined') { + factory(exports); + } else { + factory((root.esprima = {})); + } +}(this, function (exports) { + 'use strict'; + + var Token, + TokenName, + FnExprTokens, + Syntax, + PropertyKind, + Messages, + Regex, + SyntaxTreeDelegate, + ClassPropertyType, + source, + strict, + index, + lineNumber, + lineStart, + length, + delegate, + lookahead, + state, + extra; + + Token = { + BooleanLiteral: 1, + EOF: 2, + Identifier: 3, + Keyword: 4, + NullLiteral: 5, + NumericLiteral: 6, + Punctuator: 7, + StringLiteral: 8, + RegularExpression: 9, + Template: 10 + }; + + TokenName = {}; + TokenName[Token.BooleanLiteral] = 'Boolean'; + TokenName[Token.EOF] = ''; + TokenName[Token.Identifier] = 'Identifier'; + TokenName[Token.Keyword] = 'Keyword'; + TokenName[Token.NullLiteral] = 'Null'; + TokenName[Token.NumericLiteral] = 'Numeric'; + TokenName[Token.Punctuator] = 'Punctuator'; + TokenName[Token.StringLiteral] = 'String'; + TokenName[Token.RegularExpression] = 'RegularExpression'; + + // A function following one of those tokens is an expression. + FnExprTokens = ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new', + 'return', 'case', 'delete', 'throw', 'void', + // assignment operators + '=', '+=', '-=', '*=', '/=', '%=', '<<=', '>>=', '>>>=', + '&=', '|=', '^=', ',', + // binary/unary operators + '+', '-', '*', '/', '%', '++', '--', '<<', '>>', '>>>', '&', + '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=', + '<=', '<', '>', '!=', '!==']; + + Syntax = { + ArrayExpression: 'ArrayExpression', + ArrayPattern: 'ArrayPattern', + ArrowFunctionExpression: 'ArrowFunctionExpression', + AssignmentExpression: 'AssignmentExpression', + BinaryExpression: 'BinaryExpression', + BlockStatement: 'BlockStatement', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ClassBody: 'ClassBody', + ClassDeclaration: 'ClassDeclaration', + ClassExpression: 'ClassExpression', + ComprehensionBlock: 'ComprehensionBlock', + ComprehensionExpression: 'ComprehensionExpression', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DebuggerStatement: 'DebuggerStatement', + DoWhileStatement: 'DoWhileStatement', + EmptyStatement: 'EmptyStatement', + ExportDeclaration: 'ExportDeclaration', + ExportBatchSpecifier: 'ExportBatchSpecifier', + ExportSpecifier: 'ExportSpecifier', + ExpressionStatement: 'ExpressionStatement', + ForInStatement: 'ForInStatement', + ForOfStatement: 'ForOfStatement', + ForStatement: 'ForStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + ImportDeclaration: 'ImportDeclaration', + ImportSpecifier: 'ImportSpecifier', + LabeledStatement: 'LabeledStatement', + Literal: 'Literal', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + MethodDefinition: 'MethodDefinition', + ModuleDeclaration: 'ModuleDeclaration', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + ObjectPattern: 'ObjectPattern', + Program: 'Program', + Property: 'Property', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SpreadElement: 'SpreadElement', + SwitchCase: 'SwitchCase', + SwitchStatement: 'SwitchStatement', + TaggedTemplateExpression: 'TaggedTemplateExpression', + TemplateElement: 'TemplateElement', + TemplateLiteral: 'TemplateLiteral', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement', + YieldExpression: 'YieldExpression' + }; + + PropertyKind = { + Data: 1, + Get: 2, + Set: 4 + }; + + ClassPropertyType = { + 'static': 'static', + prototype: 'prototype' + }; + + // Error messages should be identical to V8. + Messages = { + UnexpectedToken: 'Unexpected token %0', + UnexpectedNumber: 'Unexpected number', + UnexpectedString: 'Unexpected string', + UnexpectedIdentifier: 'Unexpected identifier', + UnexpectedReserved: 'Unexpected reserved word', + UnexpectedTemplate: 'Unexpected quasi %0', + UnexpectedEOS: 'Unexpected end of input', + NewlineAfterThrow: 'Illegal newline after throw', + InvalidRegExp: 'Invalid regular expression', + UnterminatedRegExp: 'Invalid regular expression: missing /', + InvalidLHSInAssignment: 'Invalid left-hand side in assignment', + InvalidLHSInFormalsList: 'Invalid left-hand side in formals list', + InvalidLHSInForIn: 'Invalid left-hand side in for-in', + MultipleDefaultsInSwitch: 'More than one default clause in switch statement', + NoCatchOrFinally: 'Missing catch or finally after try', + UnknownLabel: 'Undefined label \'%0\'', + Redeclaration: '%0 \'%1\' has already been declared', + IllegalContinue: 'Illegal continue statement', + IllegalBreak: 'Illegal break statement', + IllegalDuplicateClassProperty: 'Illegal duplicate property in class definition', + IllegalReturn: 'Illegal return statement', + IllegalYield: 'Illegal yield expression', + IllegalSpread: 'Illegal spread element', + StrictModeWith: 'Strict mode code may not include a with statement', + StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', + StrictVarName: 'Variable name may not be eval or arguments in strict mode', + StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', + StrictParamDupe: 'Strict mode function may not have duplicate parameter names', + ParameterAfterRestParameter: 'Rest parameter must be final parameter of an argument list', + DefaultRestParameter: 'Rest parameter can not have a default value', + ElementAfterSpreadElement: 'Spread must be the final element of an element list', + ObjectPatternAsRestParameter: 'Invalid rest parameter', + ObjectPatternAsSpread: 'Invalid spread argument', + StrictFunctionName: 'Function name may not be eval or arguments in strict mode', + StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', + StrictDelete: 'Delete of an unqualified identifier in strict mode.', + StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', + AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', + AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', + StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', + StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', + StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', + StrictReservedWord: 'Use of future reserved word in strict mode', + NewlineAfterModule: 'Illegal newline after module', + NoFromAfterImport: 'Missing from after import', + InvalidModuleSpecifier: 'Invalid module specifier', + NestedModule: 'Module declaration can not be nested', + NoUnintializedConst: 'Const must be initialized', + ComprehensionRequiresBlock: 'Comprehension must have at least one block', + ComprehensionError: 'Comprehension Error', + EachNotAllowed: 'Each is not supported' + }; + + // See also tools/generate-unicode-regex.py. + Regex = { + NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'), + NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') + }; + + // Ensure the condition is true, otherwise throw an error. + // This is only to have a better contract semantic, i.e. another safety net + // to catch a logic error. The condition shall be fulfilled in normal case. + // Do NOT use this to enforce a certain condition on any user input. + + function assert(condition, message) { + if (!condition) { + throw new Error('ASSERT: ' + message); + } + } + + function isDecimalDigit(ch) { + return (ch >= 48 && ch <= 57); // 0..9 + } + + function isHexDigit(ch) { + return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; + } + + function isOctalDigit(ch) { + return '01234567'.indexOf(ch) >= 0; + } + + + // 7.2 White Space + + function isWhiteSpace(ch) { + return (ch === 32) || // space + (ch === 9) || // tab + (ch === 0xB) || + (ch === 0xC) || + (ch === 0xA0) || + (ch >= 0x1680 && '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(String.fromCharCode(ch)) > 0); + } + + // 7.3 Line Terminators + + function isLineTerminator(ch) { + return (ch === 10) || (ch === 13) || (ch === 0x2028) || (ch === 0x2029); + } + + // 7.6 Identifier Names and Identifiers + + function isIdentifierStart(ch) { + return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore) + (ch >= 65 && ch <= 90) || // A..Z + (ch >= 97 && ch <= 122) || // a..z + (ch === 92) || // \ (backslash) + ((ch >= 0x80) && Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))); + } + + function isIdentifierPart(ch) { + return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore) + (ch >= 65 && ch <= 90) || // A..Z + (ch >= 97 && ch <= 122) || // a..z + (ch >= 48 && ch <= 57) || // 0..9 + (ch === 92) || // \ (backslash) + ((ch >= 0x80) && Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))); + } + + // 7.6.1.2 Future Reserved Words + + function isFutureReservedWord(id) { + switch (id) { + case 'class': + case 'enum': + case 'export': + case 'extends': + case 'import': + case 'super': + return true; + default: + return false; + } + } + + function isStrictModeReservedWord(id) { + switch (id) { + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'yield': + case 'let': + return true; + default: + return false; + } + } + + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } + + // 7.6.1.1 Keywords + + function isKeyword(id) { + if (strict && isStrictModeReservedWord(id)) { + return true; + } + + // 'const' is specialized as Keyword in V8. + // 'yield' is only treated as a keyword in strict mode. + // 'let' is for compatiblity with SpiderMonkey and ES.next. + // Some others are from future reserved words. + + switch (id.length) { + case 2: + return (id === 'if') || (id === 'in') || (id === 'do'); + case 3: + return (id === 'var') || (id === 'for') || (id === 'new') || + (id === 'try') || (id === 'let'); + case 4: + return (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum'); + case 5: + return (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || + (id === 'class') || (id === 'super'); + case 6: + return (id === 'return') || (id === 'typeof') || (id === 'delete') || + (id === 'switch') || (id === 'export') || (id === 'import'); + case 7: + return (id === 'default') || (id === 'finally') || (id === 'extends'); + case 8: + return (id === 'function') || (id === 'continue') || (id === 'debugger'); + case 10: + return (id === 'instanceof'); + default: + return false; + } + } + + // 7.4 Comments + + function skipComment() { + var ch, blockComment, lineComment; + + blockComment = false; + lineComment = false; + + while (index < length) { + ch = source.charCodeAt(index); + + if (lineComment) { + ++index; + if (isLineTerminator(ch)) { + lineComment = false; + if (ch === 13 && source.charCodeAt(index) === 10) { + ++index; + } + ++lineNumber; + lineStart = index; + } + } else if (blockComment) { + if (isLineTerminator(ch)) { + if (ch === 13 && source.charCodeAt(index + 1) === 10) { + ++index; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + ch = source.charCodeAt(index++); + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + // Block comment ends with '*/' (char #42, char #47). + if (ch === 42) { + ch = source.charCodeAt(index); + if (ch === 47) { + ++index; + blockComment = false; + } + } + } + } else if (ch === 47) { + ch = source.charCodeAt(index + 1); + // Line comment starts with '//' (char #47, char #47). + if (ch === 47) { + index += 2; + lineComment = true; + } else if (ch === 42) { + // Block comment starts with '/*' (char #47, char #42). + index += 2; + blockComment = true; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + break; + } + } else if (isWhiteSpace(ch)) { + ++index; + } else if (isLineTerminator(ch)) { + ++index; + if (ch === 13 && source.charCodeAt(index) === 10) { + ++index; + } + ++lineNumber; + lineStart = index; + } else { + break; + } + } + } + + function scanHexEscape(prefix) { + var i, len, ch, code = 0; + + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && isHexDigit(source[index])) { + ch = source[index++]; + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); + } + + function scanUnicodeCodePointEscape() { + var ch, code, cu1, cu2; + + ch = source[index]; + code = 0; + + // At least, one hex digit is required. + if (ch === '}') { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + while (index < length) { + ch = source[index++]; + if (!isHexDigit(ch)) { + break; + } + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } + + if (code > 0x10FFFF || ch !== '}') { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + // UTF-16 Encoding + if (code <= 0xFFFF) { + return String.fromCharCode(code); + } + cu1 = ((code - 0x10000) >> 10) + 0xD800; + cu2 = ((code - 0x10000) & 1023) + 0xDC00; + return String.fromCharCode(cu1, cu2); + } + + function getEscapedIdentifier() { + var ch, id; + + ch = source.charCodeAt(index++); + id = String.fromCharCode(ch); + + // '\u' (char #92, char #117) denotes an escaped character. + if (ch === 92) { + if (source.charCodeAt(index) !== 117) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + ++index; + ch = scanHexEscape('u'); + if (!ch || ch === '\\' || !isIdentifierStart(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + id = ch; + } + + while (index < length) { + ch = source.charCodeAt(index); + if (!isIdentifierPart(ch)) { + break; + } + ++index; + id += String.fromCharCode(ch); + + // '\u' (char #92, char #117) denotes an escaped character. + if (ch === 92) { + id = id.substr(0, id.length - 1); + if (source.charCodeAt(index) !== 117) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + ++index; + ch = scanHexEscape('u'); + if (!ch || ch === '\\' || !isIdentifierPart(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + id += ch; + } + } + + return id; + } + + function getIdentifier() { + var start, ch; + + start = index++; + while (index < length) { + ch = source.charCodeAt(index); + if (ch === 92) { + // Blackslash (char #92) marks Unicode escape sequence. + index = start; + return getEscapedIdentifier(); + } + if (isIdentifierPart(ch)) { + ++index; + } else { + break; + } + } + + return source.slice(start, index); + } + + function scanIdentifier() { + var start, id, type; + + start = index; + + // Backslash (char #92) starts an escaped character. + id = (source.charCodeAt(index) === 92) ? getEscapedIdentifier() : getIdentifier(); + + // There is no keyword or literal with only one character. + // Thus, it must be an identifier. + if (id.length === 1) { + type = Token.Identifier; + } else if (isKeyword(id)) { + type = Token.Keyword; + } else if (id === 'null') { + type = Token.NullLiteral; + } else if (id === 'true' || id === 'false') { + type = Token.BooleanLiteral; + } else { + type = Token.Identifier; + } + + return { + type: type, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + + // 7.7 Punctuators + + function scanPunctuator() { + var start = index, + code = source.charCodeAt(index), + code2, + ch1 = source[index], + ch2, + ch3, + ch4; + + switch (code) { + // Check for most common single-character punctuators. + case 40: // ( open bracket + case 41: // ) close bracket + case 59: // ; semicolon + case 44: // , comma + case 123: // { open curly brace + case 125: // } close curly brace + case 91: // [ + case 93: // ] + case 58: // : + case 63: // ? + case 126: // ~ + ++index; + if (extra.tokenize) { + if (code === 40) { + extra.openParenToken = extra.tokens.length; + } else if (code === 123) { + extra.openCurlyToken = extra.tokens.length; + } + } + return { + type: Token.Punctuator, + value: String.fromCharCode(code), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + + default: + code2 = source.charCodeAt(index + 1); + + // '=' (char #61) marks an assignment or comparison operator. + if (code2 === 61) { + switch (code) { + case 37: // % + case 38: // & + case 42: // *: + case 43: // + + case 45: // - + case 47: // / + case 60: // < + case 62: // > + case 94: // ^ + case 124: // | + index += 2; + return { + type: Token.Punctuator, + value: String.fromCharCode(code) + String.fromCharCode(code2), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + + case 33: // ! + case 61: // = + index += 2; + + // !== and === + if (source.charCodeAt(index) === 61) { + ++index; + } + return { + type: Token.Punctuator, + value: source.slice(start, index), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + default: + break; + } + } + break; + } + + // Peek more characters. + + ch2 = source[index + 1]; + ch3 = source[index + 2]; + ch4 = source[index + 3]; + + // 4-character punctuator: >>>= + + if (ch1 === '>' && ch2 === '>' && ch3 === '>') { + if (ch4 === '=') { + index += 4; + return { + type: Token.Punctuator, + value: '>>>=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + // 3-character punctuators: === !== >>> <<= >>= + + if (ch1 === '>' && ch2 === '>' && ch3 === '>') { + index += 3; + return { + type: Token.Punctuator, + value: '>>>', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '<' && ch2 === '<' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '<<=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '>' && ch2 === '>' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '>>=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '.' && ch2 === '.' && ch3 === '.') { + index += 3; + return { + type: Token.Punctuator, + value: '...', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // Other 2-character punctuators: ++ -- << >> && || + + if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) { + index += 2; + return { + type: Token.Punctuator, + value: ch1 + ch2, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '=' && ch2 === '>') { + index += 2; + return { + type: Token.Punctuator, + value: '=>', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '.') { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + // 7.8.3 Numeric Literals + + function scanHexLiteral(start) { + var number = ''; + + while (index < length) { + if (!isHexDigit(source[index])) { + break; + } + number += source[index++]; + } + + if (number.length === 0) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + if (isIdentifierStart(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.NumericLiteral, + value: parseInt('0x' + number, 16), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + function scanOctalLiteral(prefix, start) { + var number, octal; + + if (isOctalDigit(prefix)) { + octal = true; + number = '0' + source[index++]; + } else { + octal = false; + ++index; + number = ''; + } + + while (index < length) { + if (!isOctalDigit(source[index])) { + break; + } + number += source[index++]; + } + + if (!octal && number.length === 0) { + // only 0o or 0O + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.NumericLiteral, + value: parseInt(number, 8), + octal: octal, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + function scanNumericLiteral() { + var number, start, ch, octal; + + ch = source[index]; + assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), + 'Numeric literal must start with a decimal digit or a decimal point'); + + start = index; + number = ''; + if (ch !== '.') { + number = source[index++]; + ch = source[index]; + + // Hex number starts with '0x'. + // Octal number starts with '0'. + // Octal number in ES6 starts with '0o'. + // Binary number in ES6 starts with '0b'. + if (number === '0') { + if (ch === 'x' || ch === 'X') { + ++index; + return scanHexLiteral(start); + } + if (ch === 'b' || ch === 'B') { + ++index; + number = ''; + + while (index < length) { + ch = source[index]; + if (ch !== '0' && ch !== '1') { + break; + } + number += source[index++]; + } + + if (number.length === 0) { + // only 0b or 0B + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + if (index < length) { + ch = source.charCodeAt(index); + if (isIdentifierStart(ch) || isDecimalDigit(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + return { + type: Token.NumericLiteral, + value: parseInt(number, 2), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + if (ch === 'o' || ch === 'O' || isOctalDigit(ch)) { + return scanOctalLiteral(ch, start); + } + // decimal number starts with '0' such as '09' is illegal. + if (ch && isDecimalDigit(ch.charCodeAt(0))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; + } + ch = source[index]; + } + + if (ch === '.') { + number += source[index++]; + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; + } + ch = source[index]; + } + + if (ch === 'e' || ch === 'E') { + number += source[index++]; + + ch = source[index]; + if (ch === '+' || ch === '-') { + number += source[index++]; + } + if (isDecimalDigit(source.charCodeAt(index))) { + while (isDecimalDigit(source.charCodeAt(index))) { + number += source[index++]; + } + } else { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + if (isIdentifierStart(source.charCodeAt(index))) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.NumericLiteral, + value: parseFloat(number), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.8.4 String Literals + + function scanStringLiteral() { + var str = '', quote, start, ch, code, unescaped, restore, octal = false; + + quote = source[index]; + assert((quote === '\'' || quote === '"'), + 'String literal must starts with a quote'); + + start = index; + ++index; + + while (index < length) { + ch = source[index++]; + + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = source[index++]; + if (!ch || !isLineTerminator(ch.charCodeAt(0))) { + switch (ch) { + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'u': + case 'x': + if (source[index] === '{') { + ++index; + str += scanUnicodeCodePointEscape(); + } else { + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + } + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\x0B'; + break; + + default: + if (isOctalDigit(ch)) { + code = '01234567'.indexOf(ch); + + // \0 is not octal escape sequence + if (code !== 0) { + octal = true; + } + + if (index < length && isOctalDigit(source[index])) { + octal = true; + code = code * 8 + '01234567'.indexOf(source[index++]); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + isOctalDigit(source[index])) { + code = code * 8 + '01234567'.indexOf(source[index++]); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } + } else { + ++lineNumber; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + } + } else if (isLineTerminator(ch.charCodeAt(0))) { + break; + } else { + str += ch; + } + } + + if (quote !== '') { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.StringLiteral, + value: str, + octal: octal, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + function scanTemplate() { + var cooked = '', ch, start, terminated, tail, restore, unescaped, code, octal; + + terminated = false; + tail = false; + start = index; + + ++index; + + while (index < length) { + ch = source[index++]; + if (ch === '`') { + tail = true; + terminated = true; + break; + } else if (ch === '$') { + if (source[index] === '{') { + ++index; + terminated = true; + break; + } + cooked += ch; + } else if (ch === '\\') { + ch = source[index++]; + if (!isLineTerminator(ch.charCodeAt(0))) { + switch (ch) { + case 'n': + cooked += '\n'; + break; + case 'r': + cooked += '\r'; + break; + case 't': + cooked += '\t'; + break; + case 'u': + case 'x': + if (source[index] === '{') { + ++index; + cooked += scanUnicodeCodePointEscape(); + } else { + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + cooked += unescaped; + } else { + index = restore; + cooked += ch; + } + } + break; + case 'b': + cooked += '\b'; + break; + case 'f': + cooked += '\f'; + break; + case 'v': + cooked += '\v'; + break; + + default: + if (isOctalDigit(ch)) { + code = '01234567'.indexOf(ch); + + // \0 is not octal escape sequence + if (code !== 0) { + octal = true; + } + + if (index < length && isOctalDigit(source[index])) { + octal = true; + code = code * 8 + '01234567'.indexOf(source[index++]); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + isOctalDigit(source[index])) { + code = code * 8 + '01234567'.indexOf(source[index++]); + } + } + cooked += String.fromCharCode(code); + } else { + cooked += ch; + } + break; + } + } else { + ++lineNumber; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + } + } else if (isLineTerminator(ch.charCodeAt(0))) { + ++lineNumber; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + cooked += '\n'; + } else { + cooked += ch; + } + } + + if (!terminated) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.Template, + value: { + cooked: cooked, + raw: source.slice(start + 1, index - ((tail) ? 1 : 2)) + }, + tail: tail, + octal: octal, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + function scanTemplateElement(option) { + var startsWith, template; + + lookahead = null; + skipComment(); + + startsWith = (option.head) ? '`' : '}'; + + if (source[index] !== startsWith) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + template = scanTemplate(); + + peek(); + + return template; + } + + function scanRegExp() { + var str, ch, start, pattern, flags, value, classMarker = false, restore, terminated = false; + + lookahead = null; + skipComment(); + + start = index; + ch = source[index]; + assert(ch === '/', 'Regular expression literal must start with a slash'); + str = source[index++]; + + while (index < length) { + ch = source[index++]; + str += ch; + if (classMarker) { + if (ch === ']') { + classMarker = false; + } + } else { + if (ch === '\\') { + ch = source[index++]; + // ECMA-262 7.8.5 + if (isLineTerminator(ch.charCodeAt(0))) { + throwError({}, Messages.UnterminatedRegExp); + } + str += ch; + } else if (ch === '/') { + terminated = true; + break; + } else if (ch === '[') { + classMarker = true; + } else if (isLineTerminator(ch.charCodeAt(0))) { + throwError({}, Messages.UnterminatedRegExp); + } + } + } + + if (!terminated) { + throwError({}, Messages.UnterminatedRegExp); + } + + // Exclude leading and trailing slash. + pattern = str.substr(1, str.length - 2); + + flags = ''; + while (index < length) { + ch = source[index]; + if (!isIdentifierPart(ch.charCodeAt(0))) { + break; + } + + ++index; + if (ch === '\\' && index < length) { + ch = source[index]; + if (ch === 'u') { + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + flags += ch; + for (str += '\\u'; restore < index; ++restore) { + str += source[restore]; + } + } else { + index = restore; + flags += 'u'; + str += '\\u'; + } + } else { + str += '\\'; + } + } else { + flags += ch; + str += ch; + } + } + + try { + value = new RegExp(pattern, flags); + } catch (e) { + throwError({}, Messages.InvalidRegExp); + } + + peek(); + + + if (extra.tokenize) { + return { + type: Token.RegularExpression, + value: value, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + return { + literal: str, + value: value, + range: [start, index] + }; + } + + function isIdentifierName(token) { + return token.type === Token.Identifier || + token.type === Token.Keyword || + token.type === Token.BooleanLiteral || + token.type === Token.NullLiteral; + } + + function advanceSlash() { + var prevToken, + checkToken; + // Using the following algorithm: + // https://github.com/mozilla/sweet.js/wiki/design + prevToken = extra.tokens[extra.tokens.length - 1]; + if (!prevToken) { + // Nothing before that: it cannot be a division. + return scanRegExp(); + } + if (prevToken.type === 'Punctuator') { + if (prevToken.value === ')') { + checkToken = extra.tokens[extra.openParenToken - 1]; + if (checkToken && + checkToken.type === 'Keyword' && + (checkToken.value === 'if' || + checkToken.value === 'while' || + checkToken.value === 'for' || + checkToken.value === 'with')) { + return scanRegExp(); + } + return scanPunctuator(); + } + if (prevToken.value === '}') { + // Dividing a function by anything makes little sense, + // but we have to check for that. + if (extra.tokens[extra.openCurlyToken - 3] && + extra.tokens[extra.openCurlyToken - 3].type === 'Keyword') { + // Anonymous function. + checkToken = extra.tokens[extra.openCurlyToken - 4]; + if (!checkToken) { + return scanPunctuator(); + } + } else if (extra.tokens[extra.openCurlyToken - 4] && + extra.tokens[extra.openCurlyToken - 4].type === 'Keyword') { + // Named function. + checkToken = extra.tokens[extra.openCurlyToken - 5]; + if (!checkToken) { + return scanRegExp(); + } + } else { + return scanPunctuator(); + } + // checkToken determines whether the function is + // a declaration or an expression. + if (FnExprTokens.indexOf(checkToken.value) >= 0) { + // It is an expression. + return scanPunctuator(); + } + // It is a declaration. + return scanRegExp(); + } + return scanRegExp(); + } + if (prevToken.type === 'Keyword') { + return scanRegExp(); + } + return scanPunctuator(); + } + + function advance() { + var ch; + + skipComment(); + + if (index >= length) { + return { + type: Token.EOF, + lineNumber: lineNumber, + lineStart: lineStart, + range: [index, index] + }; + } + + ch = source.charCodeAt(index); + + // Very common: ( and ) and ; + if (ch === 40 || ch === 41 || ch === 58) { + return scanPunctuator(); + } + + // String literal starts with single quote (#39) or double quote (#34). + if (ch === 39 || ch === 34) { + return scanStringLiteral(); + } + + if (ch === 96) { + return scanTemplate(); + } + if (isIdentifierStart(ch)) { + return scanIdentifier(); + } + + // Dot (.) char #46 can also start a floating-point number, hence the need + // to check the next character. + if (ch === 46) { + if (isDecimalDigit(source.charCodeAt(index + 1))) { + return scanNumericLiteral(); + } + return scanPunctuator(); + } + + if (isDecimalDigit(ch)) { + return scanNumericLiteral(); + } + + // Slash (/) char #47 can also start a regex. + if (extra.tokenize && ch === 47) { + return advanceSlash(); + } + + return scanPunctuator(); + } + + function lex() { + var token; + + token = lookahead; + index = token.range[1]; + lineNumber = token.lineNumber; + lineStart = token.lineStart; + + lookahead = advance(); + + index = token.range[1]; + lineNumber = token.lineNumber; + lineStart = token.lineStart; + + return token; + } + + function peek() { + var pos, line, start; + + pos = index; + line = lineNumber; + start = lineStart; + lookahead = advance(); + index = pos; + lineNumber = line; + lineStart = start; + } + + function lookahead2() { + var adv, pos, line, start, result; + + // If we are collecting the tokens, don't grab the next one yet. + adv = (typeof extra.advance === 'function') ? extra.advance : advance; + + pos = index; + line = lineNumber; + start = lineStart; + + // Scan for the next immediate token. + if (lookahead === null) { + lookahead = adv(); + } + index = lookahead.range[1]; + lineNumber = lookahead.lineNumber; + lineStart = lookahead.lineStart; + + // Grab the token right after. + result = adv(); + index = pos; + lineNumber = line; + lineStart = start; + + return result; + } + + function markerCreate() { + if (!extra.loc && !extra.range) { + return undefined; + } + skipComment(); + return {offset: index, line: lineNumber, col: index - lineStart}; + } + + function markerApply(marker, node) { + if (extra.range) { + node.range = [marker.offset, index]; + } + if (extra.loc) { + node.loc = { + start: { + line: marker.line, + column: marker.col + }, + end: { + line: lineNumber, + column: index - lineStart + } + }; + node = delegate.postProcess(node); + } + return node; + } + + SyntaxTreeDelegate = { + + name: 'SyntaxTree', + + postProcess: function (node) { + return node; + }, + + createArrayExpression: function (elements) { + return { + type: Syntax.ArrayExpression, + elements: elements + }; + }, + + createAssignmentExpression: function (operator, left, right) { + return { + type: Syntax.AssignmentExpression, + operator: operator, + left: left, + right: right + }; + }, + + createBinaryExpression: function (operator, left, right) { + var type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : + Syntax.BinaryExpression; + return { + type: type, + operator: operator, + left: left, + right: right + }; + }, + + createBlockStatement: function (body) { + return { + type: Syntax.BlockStatement, + body: body + }; + }, + + createBreakStatement: function (label) { + return { + type: Syntax.BreakStatement, + label: label + }; + }, + + createCallExpression: function (callee, args) { + return { + type: Syntax.CallExpression, + callee: callee, + 'arguments': args + }; + }, + + createCatchClause: function (param, body) { + return { + type: Syntax.CatchClause, + param: param, + body: body + }; + }, + + createConditionalExpression: function (test, consequent, alternate) { + return { + type: Syntax.ConditionalExpression, + test: test, + consequent: consequent, + alternate: alternate + }; + }, + + createContinueStatement: function (label) { + return { + type: Syntax.ContinueStatement, + label: label + }; + }, + + createDebuggerStatement: function () { + return { + type: Syntax.DebuggerStatement + }; + }, + + createDoWhileStatement: function (body, test) { + return { + type: Syntax.DoWhileStatement, + body: body, + test: test + }; + }, + + createEmptyStatement: function () { + return { + type: Syntax.EmptyStatement + }; + }, + + createExpressionStatement: function (expression) { + return { + type: Syntax.ExpressionStatement, + expression: expression + }; + }, + + createForStatement: function (init, test, update, body) { + return { + type: Syntax.ForStatement, + init: init, + test: test, + update: update, + body: body + }; + }, + + createForInStatement: function (left, right, body) { + return { + type: Syntax.ForInStatement, + left: left, + right: right, + body: body, + each: false + }; + }, + + createForOfStatement: function (left, right, body) { + return { + type: Syntax.ForOfStatement, + left: left, + right: right, + body: body + }; + }, + + createFunctionDeclaration: function (id, params, defaults, body, rest, generator, expression) { + return { + type: Syntax.FunctionDeclaration, + id: id, + params: params, + defaults: defaults, + body: body, + rest: rest, + generator: generator, + expression: expression + }; + }, + + createFunctionExpression: function (id, params, defaults, body, rest, generator, expression) { + return { + type: Syntax.FunctionExpression, + id: id, + params: params, + defaults: defaults, + body: body, + rest: rest, + generator: generator, + expression: expression + }; + }, + + createIdentifier: function (name) { + return { + type: Syntax.Identifier, + name: name + }; + }, + + createIfStatement: function (test, consequent, alternate) { + return { + type: Syntax.IfStatement, + test: test, + consequent: consequent, + alternate: alternate + }; + }, + + createLabeledStatement: function (label, body) { + return { + type: Syntax.LabeledStatement, + label: label, + body: body + }; + }, + + createLiteral: function (token) { + return { + type: Syntax.Literal, + value: token.value, + raw: source.slice(token.range[0], token.range[1]) + }; + }, + + createMemberExpression: function (accessor, object, property) { + return { + type: Syntax.MemberExpression, + computed: accessor === '[', + object: object, + property: property + }; + }, + + createNewExpression: function (callee, args) { + return { + type: Syntax.NewExpression, + callee: callee, + 'arguments': args + }; + }, + + createObjectExpression: function (properties) { + return { + type: Syntax.ObjectExpression, + properties: properties + }; + }, + + createPostfixExpression: function (operator, argument) { + return { + type: Syntax.UpdateExpression, + operator: operator, + argument: argument, + prefix: false + }; + }, + + createProgram: function (body) { + return { + type: Syntax.Program, + body: body + }; + }, + + createProperty: function (kind, key, value, method, shorthand) { + return { + type: Syntax.Property, + key: key, + value: value, + kind: kind, + method: method, + shorthand: shorthand + }; + }, + + createReturnStatement: function (argument) { + return { + type: Syntax.ReturnStatement, + argument: argument + }; + }, + + createSequenceExpression: function (expressions) { + return { + type: Syntax.SequenceExpression, + expressions: expressions + }; + }, + + createSwitchCase: function (test, consequent) { + return { + type: Syntax.SwitchCase, + test: test, + consequent: consequent + }; + }, + + createSwitchStatement: function (discriminant, cases) { + return { + type: Syntax.SwitchStatement, + discriminant: discriminant, + cases: cases + }; + }, + + createThisExpression: function () { + return { + type: Syntax.ThisExpression + }; + }, + + createThrowStatement: function (argument) { + return { + type: Syntax.ThrowStatement, + argument: argument + }; + }, + + createTryStatement: function (block, guardedHandlers, handlers, finalizer) { + return { + type: Syntax.TryStatement, + block: block, + guardedHandlers: guardedHandlers, + handlers: handlers, + finalizer: finalizer + }; + }, + + createUnaryExpression: function (operator, argument) { + if (operator === '++' || operator === '--') { + return { + type: Syntax.UpdateExpression, + operator: operator, + argument: argument, + prefix: true + }; + } + return { + type: Syntax.UnaryExpression, + operator: operator, + argument: argument, + prefix: true + }; + }, + + createVariableDeclaration: function (declarations, kind) { + return { + type: Syntax.VariableDeclaration, + declarations: declarations, + kind: kind + }; + }, + + createVariableDeclarator: function (id, init) { + return { + type: Syntax.VariableDeclarator, + id: id, + init: init + }; + }, + + createWhileStatement: function (test, body) { + return { + type: Syntax.WhileStatement, + test: test, + body: body + }; + }, + + createWithStatement: function (object, body) { + return { + type: Syntax.WithStatement, + object: object, + body: body + }; + }, + + createTemplateElement: function (value, tail) { + return { + type: Syntax.TemplateElement, + value: value, + tail: tail + }; + }, + + createTemplateLiteral: function (quasis, expressions) { + return { + type: Syntax.TemplateLiteral, + quasis: quasis, + expressions: expressions + }; + }, + + createSpreadElement: function (argument) { + return { + type: Syntax.SpreadElement, + argument: argument + }; + }, + + createTaggedTemplateExpression: function (tag, quasi) { + return { + type: Syntax.TaggedTemplateExpression, + tag: tag, + quasi: quasi + }; + }, + + createArrowFunctionExpression: function (params, defaults, body, rest, expression) { + return { + type: Syntax.ArrowFunctionExpression, + id: null, + params: params, + defaults: defaults, + body: body, + rest: rest, + generator: false, + expression: expression + }; + }, + + createMethodDefinition: function (propertyType, kind, key, value) { + return { + type: Syntax.MethodDefinition, + key: key, + value: value, + kind: kind, + 'static': propertyType === ClassPropertyType.static + }; + }, + + createClassBody: function (body) { + return { + type: Syntax.ClassBody, + body: body + }; + }, + + createClassExpression: function (id, superClass, body) { + return { + type: Syntax.ClassExpression, + id: id, + superClass: superClass, + body: body + }; + }, + + createClassDeclaration: function (id, superClass, body) { + return { + type: Syntax.ClassDeclaration, + id: id, + superClass: superClass, + body: body + }; + }, + + createExportSpecifier: function (id, name) { + return { + type: Syntax.ExportSpecifier, + id: id, + name: name + }; + }, + + createExportBatchSpecifier: function () { + return { + type: Syntax.ExportBatchSpecifier + }; + }, + + createExportDeclaration: function (declaration, specifiers, source) { + return { + type: Syntax.ExportDeclaration, + declaration: declaration, + specifiers: specifiers, + source: source + }; + }, + + createImportSpecifier: function (id, name) { + return { + type: Syntax.ImportSpecifier, + id: id, + name: name + }; + }, + + createImportDeclaration: function (specifiers, kind, source) { + return { + type: Syntax.ImportDeclaration, + specifiers: specifiers, + kind: kind, + source: source + }; + }, + + createYieldExpression: function (argument, delegate) { + return { + type: Syntax.YieldExpression, + argument: argument, + delegate: delegate + }; + }, + + createModuleDeclaration: function (id, source, body) { + return { + type: Syntax.ModuleDeclaration, + id: id, + source: source, + body: body + }; + }, + + createComprehensionExpression: function (filter, blocks, body) { + return { + type: Syntax.ComprehensionExpression, + filter: filter, + blocks: blocks, + body: body + }; + } + + }; + + // Return true if there is a line terminator before the next token. + + function peekLineTerminator() { + var pos, line, start, found; + + pos = index; + line = lineNumber; + start = lineStart; + skipComment(); + found = lineNumber !== line; + index = pos; + lineNumber = line; + lineStart = start; + + return found; + } + + // Throw an exception + + function throwError(token, messageFormat) { + var error, + args = Array.prototype.slice.call(arguments, 2), + msg = messageFormat.replace( + /%(\d)/g, + function (whole, index) { + assert(index < args.length, 'Message reference must be in range'); + return args[index]; + } + ); + + if (typeof token.lineNumber === 'number') { + error = new Error('Line ' + token.lineNumber + ': ' + msg); + error.index = token.range[0]; + error.lineNumber = token.lineNumber; + error.column = token.range[0] - lineStart + 1; + } else { + error = new Error('Line ' + lineNumber + ': ' + msg); + error.index = index; + error.lineNumber = lineNumber; + error.column = index - lineStart + 1; + } + + error.description = msg; + throw error; + } + + function throwErrorTolerant() { + try { + throwError.apply(null, arguments); + } catch (e) { + if (extra.errors) { + extra.errors.push(e); + } else { + throw e; + } + } + } + + + // Throw an exception because of the token. + + function throwUnexpected(token) { + if (token.type === Token.EOF) { + throwError(token, Messages.UnexpectedEOS); + } + + if (token.type === Token.NumericLiteral) { + throwError(token, Messages.UnexpectedNumber); + } + + if (token.type === Token.StringLiteral) { + throwError(token, Messages.UnexpectedString); + } + + if (token.type === Token.Identifier) { + throwError(token, Messages.UnexpectedIdentifier); + } + + if (token.type === Token.Keyword) { + if (isFutureReservedWord(token.value)) { + throwError(token, Messages.UnexpectedReserved); + } else if (strict && isStrictModeReservedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictReservedWord); + return; + } + throwError(token, Messages.UnexpectedToken, token.value); + } + + if (token.type === Token.Template) { + throwError(token, Messages.UnexpectedTemplate, token.value.raw); + } + + // BooleanLiteral, NullLiteral, or Punctuator. + throwError(token, Messages.UnexpectedToken, token.value); + } + + // Expect the next token to match the specified punctuator. + // If not, an exception will be thrown. + + function expect(value) { + var token = lex(); + if (token.type !== Token.Punctuator || token.value !== value) { + throwUnexpected(token); + } + } + + // Expect the next token to match the specified keyword. + // If not, an exception will be thrown. + + function expectKeyword(keyword) { + var token = lex(); + if (token.type !== Token.Keyword || token.value !== keyword) { + throwUnexpected(token); + } + } + + // Return true if the next token matches the specified punctuator. + + function match(value) { + return lookahead.type === Token.Punctuator && lookahead.value === value; + } + + // Return true if the next token matches the specified keyword + + function matchKeyword(keyword) { + return lookahead.type === Token.Keyword && lookahead.value === keyword; + } + + + // Return true if the next token matches the specified contextual keyword + + function matchContextualKeyword(keyword) { + return lookahead.type === Token.Identifier && lookahead.value === keyword; + } + + // Return true if the next token is an assignment operator + + function matchAssign() { + var op; + + if (lookahead.type !== Token.Punctuator) { + return false; + } + op = lookahead.value; + return op === '=' || + op === '*=' || + op === '/=' || + op === '%=' || + op === '+=' || + op === '-=' || + op === '<<=' || + op === '>>=' || + op === '>>>=' || + op === '&=' || + op === '^=' || + op === '|='; + } + + function consumeSemicolon() { + var line; + + // Catch the very common case first: immediately a semicolon (char #59). + if (source.charCodeAt(index) === 59) { + lex(); + return; + } + + line = lineNumber; + skipComment(); + if (lineNumber !== line) { + return; + } + + if (match(';')) { + lex(); + return; + } + + if (lookahead.type !== Token.EOF && !match('}')) { + throwUnexpected(lookahead); + } + } + + // Return true if provided expression is LeftHandSideExpression + + function isLeftHandSide(expr) { + return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; + } + + function isAssignableLeftHandSide(expr) { + return isLeftHandSide(expr) || expr.type === Syntax.ObjectPattern || expr.type === Syntax.ArrayPattern; + } + + // 11.1.4 Array Initialiser + + function parseArrayInitialiser() { + var elements = [], blocks = [], filter = null, tmp, possiblecomprehension = true, body, + marker = markerCreate(); + + expect('['); + while (!match(']')) { + if (lookahead.value === 'for' && + lookahead.type === Token.Keyword) { + if (!possiblecomprehension) { + throwError({}, Messages.ComprehensionError); + } + matchKeyword('for'); + tmp = parseForStatement({ignoreBody: true}); + tmp.of = tmp.type === Syntax.ForOfStatement; + tmp.type = Syntax.ComprehensionBlock; + if (tmp.left.kind) { // can't be let or const + throwError({}, Messages.ComprehensionError); + } + blocks.push(tmp); + } else if (lookahead.value === 'if' && + lookahead.type === Token.Keyword) { + if (!possiblecomprehension) { + throwError({}, Messages.ComprehensionError); + } + expectKeyword('if'); + expect('('); + filter = parseExpression(); + expect(')'); + } else if (lookahead.value === ',' && + lookahead.type === Token.Punctuator) { + possiblecomprehension = false; // no longer allowed. + lex(); + elements.push(null); + } else { + tmp = parseSpreadOrAssignmentExpression(); + elements.push(tmp); + if (tmp && tmp.type === Syntax.SpreadElement) { + if (!match(']')) { + throwError({}, Messages.ElementAfterSpreadElement); + } + } else if (!(match(']') || matchKeyword('for') || matchKeyword('if'))) { + expect(','); // this lexes. + possiblecomprehension = false; + } + } + } + + expect(']'); + + if (filter && !blocks.length) { + throwError({}, Messages.ComprehensionRequiresBlock); + } + + if (blocks.length) { + if (elements.length !== 1) { + throwError({}, Messages.ComprehensionError); + } + return markerApply(marker, delegate.createComprehensionExpression(filter, blocks, elements[0])); + } + return markerApply(marker, delegate.createArrayExpression(elements)); + } + + // 11.1.5 Object Initialiser + + function parsePropertyFunction(options) { + var previousStrict, previousYieldAllowed, params, defaults, body, + marker = markerCreate(); + + previousStrict = strict; + previousYieldAllowed = state.yieldAllowed; + state.yieldAllowed = options.generator; + params = options.params || []; + defaults = options.defaults || []; + + body = parseConciseBody(); + if (options.name && strict && isRestrictedWord(params[0].name)) { + throwErrorTolerant(options.name, Messages.StrictParamName); + } + strict = previousStrict; + state.yieldAllowed = previousYieldAllowed; + + return markerApply(marker, delegate.createFunctionExpression( + null, + params, + defaults, + body, + options.rest || null, + options.generator, + body.type !== Syntax.BlockStatement + )); + } + + + function parsePropertyMethodFunction(options) { + var previousStrict, tmp, method; + + previousStrict = strict; + strict = true; + + tmp = parseParams(); + + if (tmp.stricted) { + throwErrorTolerant(tmp.stricted, tmp.message); + } + + + method = parsePropertyFunction({ + params: tmp.params, + defaults: tmp.defaults, + rest: tmp.rest, + generator: options.generator + }); + + strict = previousStrict; + + return method; + } + + + function parseObjectPropertyKey() { + var marker = markerCreate(), + token = lex(); + + // Note: This function is called only from parseObjectProperty(), where + // EOF and Punctuator tokens are already filtered out. + + if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { + if (strict && token.octal) { + throwErrorTolerant(token, Messages.StrictOctalLiteral); + } + return markerApply(marker, delegate.createLiteral(token)); + } + + return markerApply(marker, delegate.createIdentifier(token.value)); + } + + function parseObjectProperty() { + var token, key, id, value, param, expr, + marker = markerCreate(); + + token = lookahead; + + if (token.type === Token.Identifier) { + + id = parseObjectPropertyKey(); + + // Property Assignment: Getter and Setter. + + if (token.value === 'get' && !(match(':') || match('('))) { + key = parseObjectPropertyKey(); + expect('('); + expect(')'); + return markerApply(marker, delegate.createProperty('get', key, parsePropertyFunction({ generator: false }), false, false)); + } + if (token.value === 'set' && !(match(':') || match('('))) { + key = parseObjectPropertyKey(); + expect('('); + token = lookahead; + param = [ parseVariableIdentifier() ]; + expect(')'); + return markerApply(marker, delegate.createProperty('set', key, parsePropertyFunction({ params: param, generator: false, name: token }), false, false)); + } + if (match(':')) { + lex(); + return markerApply(marker, delegate.createProperty('init', id, parseAssignmentExpression(), false, false)); + } + if (match('(')) { + return markerApply(marker, delegate.createProperty('init', id, parsePropertyMethodFunction({ generator: false }), true, false)); + } + return markerApply(marker, delegate.createProperty('init', id, id, false, true)); + } + if (token.type === Token.EOF || token.type === Token.Punctuator) { + if (!match('*')) { + throwUnexpected(token); + } + lex(); + + id = parseObjectPropertyKey(); + + if (!match('(')) { + throwUnexpected(lex()); + } + + return markerApply(marker, delegate.createProperty('init', id, parsePropertyMethodFunction({ generator: true }), true, false)); + } + key = parseObjectPropertyKey(); + if (match(':')) { + lex(); + return markerApply(marker, delegate.createProperty('init', key, parseAssignmentExpression(), false, false)); + } + if (match('(')) { + return markerApply(marker, delegate.createProperty('init', key, parsePropertyMethodFunction({ generator: false }), true, false)); + } + throwUnexpected(lex()); + } + + function parseObjectInitialiser() { + var properties = [], property, name, key, kind, map = {}, toString = String, + marker = markerCreate(); + + expect('{'); + + while (!match('}')) { + property = parseObjectProperty(); + + if (property.key.type === Syntax.Identifier) { + name = property.key.name; + } else { + name = toString(property.key.value); + } + kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; + + key = '$' + name; + if (Object.prototype.hasOwnProperty.call(map, key)) { + if (map[key] === PropertyKind.Data) { + if (strict && kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.StrictDuplicateProperty); + } else if (kind !== PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } + } else { + if (kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } else if (map[key] & kind) { + throwErrorTolerant({}, Messages.AccessorGetSet); + } + } + map[key] |= kind; + } else { + map[key] = kind; + } + + properties.push(property); + + if (!match('}')) { + expect(','); + } + } + + expect('}'); + + return markerApply(marker, delegate.createObjectExpression(properties)); + } + + function parseTemplateElement(option) { + var marker = markerCreate(), + token = scanTemplateElement(option); + if (strict && token.octal) { + throwError(token, Messages.StrictOctalLiteral); + } + return markerApply(marker, delegate.createTemplateElement({ raw: token.value.raw, cooked: token.value.cooked }, token.tail)); + } + + function parseTemplateLiteral() { + var quasi, quasis, expressions, marker = markerCreate(); + + quasi = parseTemplateElement({ head: true }); + quasis = [ quasi ]; + expressions = []; + + while (!quasi.tail) { + expressions.push(parseExpression()); + quasi = parseTemplateElement({ head: false }); + quasis.push(quasi); + } + + return markerApply(marker, delegate.createTemplateLiteral(quasis, expressions)); + } + + // 11.1.6 The Grouping Operator + + function parseGroupExpression() { + var expr; + + expect('('); + + ++state.parenthesizedCount; + + expr = parseExpression(); + + expect(')'); + + return expr; + } + + + // 11.1 Primary Expressions + + function parsePrimaryExpression() { + var marker, type, token, expr; + + type = lookahead.type; + + if (type === Token.Identifier) { + marker = markerCreate(); + return markerApply(marker, delegate.createIdentifier(lex().value)); + } + + if (type === Token.StringLiteral || type === Token.NumericLiteral) { + if (strict && lookahead.octal) { + throwErrorTolerant(lookahead, Messages.StrictOctalLiteral); + } + marker = markerCreate(); + return markerApply(marker, delegate.createLiteral(lex())); + } + + if (type === Token.Keyword) { + if (matchKeyword('this')) { + marker = markerCreate(); + lex(); + return markerApply(marker, delegate.createThisExpression()); + } + + if (matchKeyword('function')) { + return parseFunctionExpression(); + } + + if (matchKeyword('class')) { + return parseClassExpression(); + } + + if (matchKeyword('super')) { + marker = markerCreate(); + lex(); + return markerApply(marker, delegate.createIdentifier('super')); + } + } + + if (type === Token.BooleanLiteral) { + marker = markerCreate(); + token = lex(); + token.value = (token.value === 'true'); + return markerApply(marker, delegate.createLiteral(token)); + } + + if (type === Token.NullLiteral) { + marker = markerCreate(); + token = lex(); + token.value = null; + return markerApply(marker, delegate.createLiteral(token)); + } + + if (match('[')) { + return parseArrayInitialiser(); + } + + if (match('{')) { + return parseObjectInitialiser(); + } + + if (match('(')) { + return parseGroupExpression(); + } + + if (match('/') || match('/=')) { + marker = markerCreate(); + return markerApply(marker, delegate.createLiteral(scanRegExp())); + } + + if (type === Token.Template) { + return parseTemplateLiteral(); + } + + throwUnexpected(lex()); + } + + // 11.2 Left-Hand-Side Expressions + + function parseArguments() { + var args = [], arg; + + expect('('); + + if (!match(')')) { + while (index < length) { + arg = parseSpreadOrAssignmentExpression(); + args.push(arg); + + if (match(')')) { + break; + } else if (arg.type === Syntax.SpreadElement) { + throwError({}, Messages.ElementAfterSpreadElement); + } + + expect(','); + } + } + + expect(')'); + + return args; + } + + function parseSpreadOrAssignmentExpression() { + if (match('...')) { + var marker = markerCreate(); + lex(); + return markerApply(marker, delegate.createSpreadElement(parseAssignmentExpression())); + } + return parseAssignmentExpression(); + } + + function parseNonComputedProperty() { + var marker = markerCreate(), + token = lex(); + + if (!isIdentifierName(token)) { + throwUnexpected(token); + } + + return markerApply(marker, delegate.createIdentifier(token.value)); + } + + function parseNonComputedMember() { + expect('.'); + + return parseNonComputedProperty(); + } + + function parseComputedMember() { + var expr; + + expect('['); + + expr = parseExpression(); + + expect(']'); + + return expr; + } + + function parseNewExpression() { + var callee, args, marker = markerCreate(); + + expectKeyword('new'); + callee = parseLeftHandSideExpression(); + args = match('(') ? parseArguments() : []; + + return markerApply(marker, delegate.createNewExpression(callee, args)); + } + + function parseLeftHandSideExpressionAllowCall() { + var expr, args, marker = markerCreate(); + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[') || match('(') || lookahead.type === Token.Template) { + if (match('(')) { + args = parseArguments(); + expr = markerApply(marker, delegate.createCallExpression(expr, args)); + } else if (match('[')) { + expr = markerApply(marker, delegate.createMemberExpression('[', expr, parseComputedMember())); + } else if (match('.')) { + expr = markerApply(marker, delegate.createMemberExpression('.', expr, parseNonComputedMember())); + } else { + expr = markerApply(marker, delegate.createTaggedTemplateExpression(expr, parseTemplateLiteral())); + } + } + + return expr; + } + + function parseLeftHandSideExpression() { + var expr, marker = markerCreate(); + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[') || lookahead.type === Token.Template) { + if (match('[')) { + expr = markerApply(marker, delegate.createMemberExpression('[', expr, parseComputedMember())); + } else if (match('.')) { + expr = markerApply(marker, delegate.createMemberExpression('.', expr, parseNonComputedMember())); + } else { + expr = markerApply(marker, delegate.createTaggedTemplateExpression(expr, parseTemplateLiteral())); + } + } + + return expr; + } + + // 11.3 Postfix Expressions + + function parsePostfixExpression() { + var marker = markerCreate(), + expr = parseLeftHandSideExpressionAllowCall(), + token; + + if (lookahead.type !== Token.Punctuator) { + return expr; + } + + if ((match('++') || match('--')) && !peekLineTerminator()) { + // 11.3.1, 11.3.2 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPostfix); + } + + if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + token = lex(); + expr = markerApply(marker, delegate.createPostfixExpression(token.value, expr)); + } + + return expr; + } + + // 11.4 Unary Operators + + function parseUnaryExpression() { + var marker, token, expr; + + if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) { + return parsePostfixExpression(); + } + + if (match('++') || match('--')) { + marker = markerCreate(); + token = lex(); + expr = parseUnaryExpression(); + // 11.4.4, 11.4.5 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPrefix); + } + + if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + return markerApply(marker, delegate.createUnaryExpression(token.value, expr)); + } + + if (match('+') || match('-') || match('~') || match('!')) { + marker = markerCreate(); + token = lex(); + expr = parseUnaryExpression(); + return markerApply(marker, delegate.createUnaryExpression(token.value, expr)); + } + + if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { + marker = markerCreate(); + token = lex(); + expr = parseUnaryExpression(); + expr = markerApply(marker, delegate.createUnaryExpression(token.value, expr)); + if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { + throwErrorTolerant({}, Messages.StrictDelete); + } + return expr; + } + + return parsePostfixExpression(); + } + + function binaryPrecedence(token, allowIn) { + var prec = 0; + + if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { + return 0; + } + + switch (token.value) { + case '||': + prec = 1; + break; + + case '&&': + prec = 2; + break; + + case '|': + prec = 3; + break; + + case '^': + prec = 4; + break; + + case '&': + prec = 5; + break; + + case '==': + case '!=': + case '===': + case '!==': + prec = 6; + break; + + case '<': + case '>': + case '<=': + case '>=': + case 'instanceof': + prec = 7; + break; + + case 'in': + prec = allowIn ? 7 : 0; + break; + + case '<<': + case '>>': + case '>>>': + prec = 8; + break; + + case '+': + case '-': + prec = 9; + break; + + case '*': + case '/': + case '%': + prec = 11; + break; + + default: + break; + } + + return prec; + } + + // 11.5 Multiplicative Operators + // 11.6 Additive Operators + // 11.7 Bitwise Shift Operators + // 11.8 Relational Operators + // 11.9 Equality Operators + // 11.10 Binary Bitwise Operators + // 11.11 Binary Logical Operators + + function parseBinaryExpression() { + var expr, token, prec, previousAllowIn, stack, right, operator, left, i, + marker, markers; + + previousAllowIn = state.allowIn; + state.allowIn = true; + + marker = markerCreate(); + left = parseUnaryExpression(); + + token = lookahead; + prec = binaryPrecedence(token, previousAllowIn); + if (prec === 0) { + return left; + } + token.prec = prec; + lex(); + + markers = [marker, markerCreate()]; + right = parseUnaryExpression(); + + stack = [left, token, right]; + + while ((prec = binaryPrecedence(lookahead, previousAllowIn)) > 0) { + + // Reduce: make a binary expression from the three topmost entries. + while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) { + right = stack.pop(); + operator = stack.pop().value; + left = stack.pop(); + expr = delegate.createBinaryExpression(operator, left, right); + markers.pop(); + marker = markers.pop(); + markerApply(marker, expr); + stack.push(expr); + markers.push(marker); + } + + // Shift. + token = lex(); + token.prec = prec; + stack.push(token); + markers.push(markerCreate()); + expr = parseUnaryExpression(); + stack.push(expr); + } + + state.allowIn = previousAllowIn; + + // Final reduce to clean-up the stack. + i = stack.length - 1; + expr = stack[i]; + markers.pop(); + while (i > 1) { + expr = delegate.createBinaryExpression(stack[i - 1].value, stack[i - 2], expr); + i -= 2; + marker = markers.pop(); + markerApply(marker, expr); + } + + return expr; + } + + + // 11.12 Conditional Operator + + function parseConditionalExpression() { + var expr, previousAllowIn, consequent, alternate, marker = markerCreate(); + expr = parseBinaryExpression(); + + if (match('?')) { + lex(); + previousAllowIn = state.allowIn; + state.allowIn = true; + consequent = parseAssignmentExpression(); + state.allowIn = previousAllowIn; + expect(':'); + alternate = parseAssignmentExpression(); + + expr = markerApply(marker, delegate.createConditionalExpression(expr, consequent, alternate)); + } + + return expr; + } + + // 11.13 Assignment Operators + + function reinterpretAsAssignmentBindingPattern(expr) { + var i, len, property, element; + + if (expr.type === Syntax.ObjectExpression) { + expr.type = Syntax.ObjectPattern; + for (i = 0, len = expr.properties.length; i < len; i += 1) { + property = expr.properties[i]; + if (property.kind !== 'init') { + throwError({}, Messages.InvalidLHSInAssignment); + } + reinterpretAsAssignmentBindingPattern(property.value); + } + } else if (expr.type === Syntax.ArrayExpression) { + expr.type = Syntax.ArrayPattern; + for (i = 0, len = expr.elements.length; i < len; i += 1) { + element = expr.elements[i]; + if (element) { + reinterpretAsAssignmentBindingPattern(element); + } + } + } else if (expr.type === Syntax.Identifier) { + if (isRestrictedWord(expr.name)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + } else if (expr.type === Syntax.SpreadElement) { + reinterpretAsAssignmentBindingPattern(expr.argument); + if (expr.argument.type === Syntax.ObjectPattern) { + throwError({}, Messages.ObjectPatternAsSpread); + } + } else { + if (expr.type !== Syntax.MemberExpression && expr.type !== Syntax.CallExpression && expr.type !== Syntax.NewExpression) { + throwError({}, Messages.InvalidLHSInAssignment); + } + } + } + + + function reinterpretAsDestructuredParameter(options, expr) { + var i, len, property, element; + + if (expr.type === Syntax.ObjectExpression) { + expr.type = Syntax.ObjectPattern; + for (i = 0, len = expr.properties.length; i < len; i += 1) { + property = expr.properties[i]; + if (property.kind !== 'init') { + throwError({}, Messages.InvalidLHSInFormalsList); + } + reinterpretAsDestructuredParameter(options, property.value); + } + } else if (expr.type === Syntax.ArrayExpression) { + expr.type = Syntax.ArrayPattern; + for (i = 0, len = expr.elements.length; i < len; i += 1) { + element = expr.elements[i]; + if (element) { + reinterpretAsDestructuredParameter(options, element); + } + } + } else if (expr.type === Syntax.Identifier) { + validateParam(options, expr, expr.name); + } else { + if (expr.type !== Syntax.MemberExpression) { + throwError({}, Messages.InvalidLHSInFormalsList); + } + } + } + + function reinterpretAsCoverFormalsList(expressions) { + var i, len, param, params, defaults, defaultCount, options, rest; + + params = []; + defaults = []; + defaultCount = 0; + rest = null; + options = { + paramSet: {} + }; + + for (i = 0, len = expressions.length; i < len; i += 1) { + param = expressions[i]; + if (param.type === Syntax.Identifier) { + params.push(param); + defaults.push(null); + validateParam(options, param, param.name); + } else if (param.type === Syntax.ObjectExpression || param.type === Syntax.ArrayExpression) { + reinterpretAsDestructuredParameter(options, param); + params.push(param); + defaults.push(null); + } else if (param.type === Syntax.SpreadElement) { + assert(i === len - 1, 'It is guaranteed that SpreadElement is last element by parseExpression'); + reinterpretAsDestructuredParameter(options, param.argument); + rest = param.argument; + } else if (param.type === Syntax.AssignmentExpression) { + params.push(param.left); + defaults.push(param.right); + ++defaultCount; + validateParam(options, param.left, param.left.name); + } else { + return null; + } + } + + if (options.message === Messages.StrictParamDupe) { + throwError( + strict ? options.stricted : options.firstRestricted, + options.message + ); + } + + if (defaultCount === 0) { + defaults = []; + } + + return { + params: params, + defaults: defaults, + rest: rest, + stricted: options.stricted, + firstRestricted: options.firstRestricted, + message: options.message + }; + } + + function parseArrowFunctionExpression(options, marker) { + var previousStrict, previousYieldAllowed, body; + + expect('=>'); + + previousStrict = strict; + previousYieldAllowed = state.yieldAllowed; + state.yieldAllowed = false; + body = parseConciseBody(); + + if (strict && options.firstRestricted) { + throwError(options.firstRestricted, options.message); + } + if (strict && options.stricted) { + throwErrorTolerant(options.stricted, options.message); + } + + strict = previousStrict; + state.yieldAllowed = previousYieldAllowed; + + return markerApply(marker, delegate.createArrowFunctionExpression( + options.params, + options.defaults, + body, + options.rest, + body.type !== Syntax.BlockStatement + )); + } + + function parseAssignmentExpression() { + var marker, expr, token, params, oldParenthesizedCount; + + // Note that 'yield' is treated as a keyword in strict mode, but a + // contextual keyword (identifier) in non-strict mode, so we need + // to use matchKeyword and matchContextualKeyword appropriately. + if ((state.yieldAllowed && matchContextualKeyword('yield')) || (strict && matchKeyword('yield'))) { + return parseYieldExpression(); + } + + oldParenthesizedCount = state.parenthesizedCount; + + marker = markerCreate(); + + if (match('(')) { + token = lookahead2(); + if ((token.type === Token.Punctuator && token.value === ')') || token.value === '...') { + params = parseParams(); + if (!match('=>')) { + throwUnexpected(lex()); + } + return parseArrowFunctionExpression(params, marker); + } + } + + token = lookahead; + expr = parseConditionalExpression(); + + if (match('=>') && + (state.parenthesizedCount === oldParenthesizedCount || + state.parenthesizedCount === (oldParenthesizedCount + 1))) { + if (expr.type === Syntax.Identifier) { + params = reinterpretAsCoverFormalsList([ expr ]); + } else if (expr.type === Syntax.SequenceExpression) { + params = reinterpretAsCoverFormalsList(expr.expressions); + } + if (params) { + return parseArrowFunctionExpression(params, marker); + } + } + + if (matchAssign()) { + // 11.13.1 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant(token, Messages.StrictLHSAssignment); + } + + // ES.next draf 11.13 Runtime Semantics step 1 + if (match('=') && (expr.type === Syntax.ObjectExpression || expr.type === Syntax.ArrayExpression)) { + reinterpretAsAssignmentBindingPattern(expr); + } else if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + expr = markerApply(marker, delegate.createAssignmentExpression(lex().value, expr, parseAssignmentExpression())); + } + + return expr; + } + + // 11.14 Comma Operator + + function parseExpression() { + var marker, expr, expressions, sequence, coverFormalsList, spreadFound, oldParenthesizedCount; + + oldParenthesizedCount = state.parenthesizedCount; + + marker = markerCreate(); + expr = parseAssignmentExpression(); + expressions = [ expr ]; + + if (match(',')) { + while (index < length) { + if (!match(',')) { + break; + } + + lex(); + expr = parseSpreadOrAssignmentExpression(); + expressions.push(expr); + + if (expr.type === Syntax.SpreadElement) { + spreadFound = true; + if (!match(')')) { + throwError({}, Messages.ElementAfterSpreadElement); + } + break; + } + } + + sequence = markerApply(marker, delegate.createSequenceExpression(expressions)); + } + + if (match('=>')) { + // Do not allow nested parentheses on the LHS of the =>. + if (state.parenthesizedCount === oldParenthesizedCount || state.parenthesizedCount === (oldParenthesizedCount + 1)) { + expr = expr.type === Syntax.SequenceExpression ? expr.expressions : expressions; + coverFormalsList = reinterpretAsCoverFormalsList(expr); + if (coverFormalsList) { + return parseArrowFunctionExpression(coverFormalsList, marker); + } + } + throwUnexpected(lex()); + } + + if (spreadFound && lookahead2().value !== '=>') { + throwError({}, Messages.IllegalSpread); + } + + return sequence || expr; + } + + // 12.1 Block + + function parseStatementList() { + var list = [], + statement; + + while (index < length) { + if (match('}')) { + break; + } + statement = parseSourceElement(); + if (typeof statement === 'undefined') { + break; + } + list.push(statement); + } + + return list; + } + + function parseBlock() { + var block, marker = markerCreate(); + + expect('{'); + + block = parseStatementList(); + + expect('}'); + + return markerApply(marker, delegate.createBlockStatement(block)); + } + + // 12.2 Variable Statement + + function parseVariableIdentifier() { + var marker = markerCreate(), + token = lex(); + + if (token.type !== Token.Identifier) { + throwUnexpected(token); + } + + return markerApply(marker, delegate.createIdentifier(token.value)); + } + + function parseVariableDeclaration(kind) { + var id, + marker = markerCreate(), + init = null; + if (match('{')) { + id = parseObjectInitialiser(); + reinterpretAsAssignmentBindingPattern(id); + } else if (match('[')) { + id = parseArrayInitialiser(); + reinterpretAsAssignmentBindingPattern(id); + } else { + id = state.allowKeyword ? parseNonComputedProperty() : parseVariableIdentifier(); + // 12.2.1 + if (strict && isRestrictedWord(id.name)) { + throwErrorTolerant({}, Messages.StrictVarName); + } + } + + if (kind === 'const') { + if (!match('=')) { + throwError({}, Messages.NoUnintializedConst); + } + expect('='); + init = parseAssignmentExpression(); + } else if (match('=')) { + lex(); + init = parseAssignmentExpression(); + } + + return markerApply(marker, delegate.createVariableDeclarator(id, init)); + } + + function parseVariableDeclarationList(kind) { + var list = []; + + do { + list.push(parseVariableDeclaration(kind)); + if (!match(',')) { + break; + } + lex(); + } while (index < length); + + return list; + } + + function parseVariableStatement() { + var declarations, marker = markerCreate(); + + expectKeyword('var'); + + declarations = parseVariableDeclarationList(); + + consumeSemicolon(); + + return markerApply(marker, delegate.createVariableDeclaration(declarations, 'var')); + } + + // kind may be `const` or `let` + // Both are experimental and not in the specification yet. + // see http://wiki.ecmascript.org/doku.php?id=harmony:const + // and http://wiki.ecmascript.org/doku.php?id=harmony:let + function parseConstLetDeclaration(kind) { + var declarations, marker = markerCreate(); + + expectKeyword(kind); + + declarations = parseVariableDeclarationList(kind); + + consumeSemicolon(); + + return markerApply(marker, delegate.createVariableDeclaration(declarations, kind)); + } + + // http://wiki.ecmascript.org/doku.php?id=harmony:modules + + function parseModuleDeclaration() { + var id, src, body, marker = markerCreate(); + + lex(); // 'module' + + if (peekLineTerminator()) { + throwError({}, Messages.NewlineAfterModule); + } + + switch (lookahead.type) { + + case Token.StringLiteral: + id = parsePrimaryExpression(); + body = parseModuleBlock(); + src = null; + break; + + case Token.Identifier: + id = parseVariableIdentifier(); + body = null; + if (!matchContextualKeyword('from')) { + throwUnexpected(lex()); + } + lex(); + src = parsePrimaryExpression(); + if (src.type !== Syntax.Literal) { + throwError({}, Messages.InvalidModuleSpecifier); + } + break; + } + + consumeSemicolon(); + return markerApply(marker, delegate.createModuleDeclaration(id, src, body)); + } + + function parseExportBatchSpecifier() { + var marker = markerCreate(); + expect('*'); + return markerApply(marker, delegate.createExportBatchSpecifier()); + } + + function parseExportSpecifier() { + var id, name = null, marker = markerCreate(); + + id = parseVariableIdentifier(); + if (matchContextualKeyword('as')) { + lex(); + name = parseNonComputedProperty(); + } + + return markerApply(marker, delegate.createExportSpecifier(id, name)); + } + + function parseExportDeclaration() { + var previousAllowKeyword, decl, def, src, specifiers, + marker = markerCreate(); + + expectKeyword('export'); + + if (lookahead.type === Token.Keyword) { + switch (lookahead.value) { + case 'let': + case 'const': + case 'var': + case 'class': + case 'function': + return markerApply(marker, delegate.createExportDeclaration(parseSourceElement(), null, null)); + } + } + + if (isIdentifierName(lookahead)) { + previousAllowKeyword = state.allowKeyword; + state.allowKeyword = true; + decl = parseVariableDeclarationList('let'); + state.allowKeyword = previousAllowKeyword; + return markerApply(marker, delegate.createExportDeclaration(decl, null, null)); + } + + specifiers = []; + src = null; + + if (match('*')) { + specifiers.push(parseExportBatchSpecifier()); + } else { + expect('{'); + do { + specifiers.push(parseExportSpecifier()); + } while (match(',') && lex()); + expect('}'); + } + + if (matchContextualKeyword('from')) { + lex(); + src = parsePrimaryExpression(); + if (src.type !== Syntax.Literal) { + throwError({}, Messages.InvalidModuleSpecifier); + } + } + + consumeSemicolon(); + + return markerApply(marker, delegate.createExportDeclaration(null, specifiers, src)); + } + + function parseImportDeclaration() { + var specifiers, kind, src, marker = markerCreate(); + + expectKeyword('import'); + specifiers = []; + + if (isIdentifierName(lookahead)) { + kind = 'default'; + specifiers.push(parseImportSpecifier()); + + if (!matchContextualKeyword('from')) { + throwError({}, Messages.NoFromAfterImport); + } + lex(); + } else if (match('{')) { + kind = 'named'; + lex(); + do { + specifiers.push(parseImportSpecifier()); + } while (match(',') && lex()); + expect('}'); + + if (!matchContextualKeyword('from')) { + throwError({}, Messages.NoFromAfterImport); + } + lex(); + } + + src = parsePrimaryExpression(); + if (src.type !== Syntax.Literal) { + throwError({}, Messages.InvalidModuleSpecifier); + } + + consumeSemicolon(); + + return markerApply(marker, delegate.createImportDeclaration(specifiers, kind, src)); + } + + function parseImportSpecifier() { + var id, name = null, marker = markerCreate(); + + id = parseNonComputedProperty(); + if (matchContextualKeyword('as')) { + lex(); + name = parseVariableIdentifier(); + } + + return markerApply(marker, delegate.createImportSpecifier(id, name)); + } + + // 12.3 Empty Statement + + function parseEmptyStatement() { + var marker = markerCreate(); + expect(';'); + return markerApply(marker, delegate.createEmptyStatement()); + } + + // 12.4 Expression Statement + + function parseExpressionStatement() { + var marker = markerCreate(), expr = parseExpression(); + consumeSemicolon(); + return markerApply(marker, delegate.createExpressionStatement(expr)); + } + + // 12.5 If statement + + function parseIfStatement() { + var test, consequent, alternate, marker = markerCreate(); + + expectKeyword('if'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + consequent = parseStatement(); + + if (matchKeyword('else')) { + lex(); + alternate = parseStatement(); + } else { + alternate = null; + } + + return markerApply(marker, delegate.createIfStatement(test, consequent, alternate)); + } + + // 12.6 Iteration Statements + + function parseDoWhileStatement() { + var body, test, oldInIteration, marker = markerCreate(); + + expectKeyword('do'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + if (match(';')) { + lex(); + } + + return markerApply(marker, delegate.createDoWhileStatement(body, test)); + } + + function parseWhileStatement() { + var test, body, oldInIteration, marker = markerCreate(); + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + return markerApply(marker, delegate.createWhileStatement(test, body)); + } + + function parseForVariableDeclaration() { + var marker = markerCreate(), + token = lex(), + declarations = parseVariableDeclarationList(); + + return markerApply(marker, delegate.createVariableDeclaration(declarations, token.value)); + } + + function parseForStatement(opts) { + var init, test, update, left, right, body, operator, oldInIteration, + marker = markerCreate(); + init = test = update = null; + expectKeyword('for'); + + // http://wiki.ecmascript.org/doku.php?id=proposals:iterators_and_generators&s=each + if (matchContextualKeyword('each')) { + throwError({}, Messages.EachNotAllowed); + } + + expect('('); + + if (match(';')) { + lex(); + } else { + if (matchKeyword('var') || matchKeyword('let') || matchKeyword('const')) { + state.allowIn = false; + init = parseForVariableDeclaration(); + state.allowIn = true; + + if (init.declarations.length === 1) { + if (matchKeyword('in') || matchContextualKeyword('of')) { + operator = lookahead; + if (!((operator.value === 'in' || init.kind !== 'var') && init.declarations[0].init)) { + lex(); + left = init; + right = parseExpression(); + init = null; + } + } + } + } else { + state.allowIn = false; + init = parseExpression(); + state.allowIn = true; + + if (matchContextualKeyword('of')) { + operator = lex(); + left = init; + right = parseExpression(); + init = null; + } else if (matchKeyword('in')) { + // LeftHandSideExpression + if (!isAssignableLeftHandSide(init)) { + throwError({}, Messages.InvalidLHSInForIn); + } + operator = lex(); + left = init; + right = parseExpression(); + init = null; + } + } + + if (typeof left === 'undefined') { + expect(';'); + } + } + + if (typeof left === 'undefined') { + + if (!match(';')) { + test = parseExpression(); + } + expect(';'); + + if (!match(')')) { + update = parseExpression(); + } + } + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + if (!(opts !== undefined && opts.ignoreBody)) { + body = parseStatement(); + } + + state.inIteration = oldInIteration; + + if (typeof left === 'undefined') { + return markerApply(marker, delegate.createForStatement(init, test, update, body)); + } + + if (operator.value === 'in') { + return markerApply(marker, delegate.createForInStatement(left, right, body)); + } + return markerApply(marker, delegate.createForOfStatement(left, right, body)); + } + + // 12.7 The continue statement + + function parseContinueStatement() { + var label = null, key, marker = markerCreate(); + + expectKeyword('continue'); + + // Optimize the most common form: 'continue;'. + if (source.charCodeAt(index) === 59) { + lex(); + + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return markerApply(marker, delegate.createContinueStatement(null)); + } + + if (peekLineTerminator()) { + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return markerApply(marker, delegate.createContinueStatement(null)); + } + + if (lookahead.type === Token.Identifier) { + label = parseVariableIdentifier(); + + key = '$' + label.name; + if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.UnknownLabel, label.name); + } + } + + consumeSemicolon(); + + if (label === null && !state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return markerApply(marker, delegate.createContinueStatement(label)); + } + + // 12.8 The break statement + + function parseBreakStatement() { + var label = null, key, marker = markerCreate(); + + expectKeyword('break'); + + // Catch the very common case first: immediately a semicolon (char #59). + if (source.charCodeAt(index) === 59) { + lex(); + + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return markerApply(marker, delegate.createBreakStatement(null)); + } + + if (peekLineTerminator()) { + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return markerApply(marker, delegate.createBreakStatement(null)); + } + + if (lookahead.type === Token.Identifier) { + label = parseVariableIdentifier(); + + key = '$' + label.name; + if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.UnknownLabel, label.name); + } + } + + consumeSemicolon(); + + if (label === null && !(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return markerApply(marker, delegate.createBreakStatement(label)); + } + + // 12.9 The return statement + + function parseReturnStatement() { + var argument = null, marker = markerCreate(); + + expectKeyword('return'); + + if (!state.inFunctionBody) { + throwErrorTolerant({}, Messages.IllegalReturn); + } + + // 'return' followed by a space and an identifier is very common. + if (source.charCodeAt(index) === 32) { + if (isIdentifierStart(source.charCodeAt(index + 1))) { + argument = parseExpression(); + consumeSemicolon(); + return markerApply(marker, delegate.createReturnStatement(argument)); + } + } + + if (peekLineTerminator()) { + return markerApply(marker, delegate.createReturnStatement(null)); + } + + if (!match(';')) { + if (!match('}') && lookahead.type !== Token.EOF) { + argument = parseExpression(); + } + } + + consumeSemicolon(); + + return markerApply(marker, delegate.createReturnStatement(argument)); + } + + // 12.10 The with statement + + function parseWithStatement() { + var object, body, marker = markerCreate(); + + if (strict) { + throwErrorTolerant({}, Messages.StrictModeWith); + } + + expectKeyword('with'); + + expect('('); + + object = parseExpression(); + + expect(')'); + + body = parseStatement(); + + return markerApply(marker, delegate.createWithStatement(object, body)); + } + + // 12.10 The swith statement + + function parseSwitchCase() { + var test, + consequent = [], + sourceElement, + marker = markerCreate(); + + if (matchKeyword('default')) { + lex(); + test = null; + } else { + expectKeyword('case'); + test = parseExpression(); + } + expect(':'); + + while (index < length) { + if (match('}') || matchKeyword('default') || matchKeyword('case')) { + break; + } + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + consequent.push(sourceElement); + } + + return markerApply(marker, delegate.createSwitchCase(test, consequent)); + } + + function parseSwitchStatement() { + var discriminant, cases, clause, oldInSwitch, defaultFound, marker = markerCreate(); + + expectKeyword('switch'); + + expect('('); + + discriminant = parseExpression(); + + expect(')'); + + expect('{'); + + cases = []; + + if (match('}')) { + lex(); + return markerApply(marker, delegate.createSwitchStatement(discriminant, cases)); + } + + oldInSwitch = state.inSwitch; + state.inSwitch = true; + defaultFound = false; + + while (index < length) { + if (match('}')) { + break; + } + clause = parseSwitchCase(); + if (clause.test === null) { + if (defaultFound) { + throwError({}, Messages.MultipleDefaultsInSwitch); + } + defaultFound = true; + } + cases.push(clause); + } + + state.inSwitch = oldInSwitch; + + expect('}'); + + return markerApply(marker, delegate.createSwitchStatement(discriminant, cases)); + } + + // 12.13 The throw statement + + function parseThrowStatement() { + var argument, marker = markerCreate(); + + expectKeyword('throw'); + + if (peekLineTerminator()) { + throwError({}, Messages.NewlineAfterThrow); + } + + argument = parseExpression(); + + consumeSemicolon(); + + return markerApply(marker, delegate.createThrowStatement(argument)); + } + + // 12.14 The try statement + + function parseCatchClause() { + var param, body, marker = markerCreate(); + + expectKeyword('catch'); + + expect('('); + if (match(')')) { + throwUnexpected(lookahead); + } + + param = parseExpression(); + // 12.14.1 + if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) { + throwErrorTolerant({}, Messages.StrictCatchVariable); + } + + expect(')'); + body = parseBlock(); + return markerApply(marker, delegate.createCatchClause(param, body)); + } + + function parseTryStatement() { + var block, handlers = [], finalizer = null, marker = markerCreate(); + + expectKeyword('try'); + + block = parseBlock(); + + if (matchKeyword('catch')) { + handlers.push(parseCatchClause()); + } + + if (matchKeyword('finally')) { + lex(); + finalizer = parseBlock(); + } + + if (handlers.length === 0 && !finalizer) { + throwError({}, Messages.NoCatchOrFinally); + } + + return markerApply(marker, delegate.createTryStatement(block, [], handlers, finalizer)); + } + + // 12.15 The debugger statement + + function parseDebuggerStatement() { + var marker = markerCreate(); + expectKeyword('debugger'); + + consumeSemicolon(); + + return markerApply(marker, delegate.createDebuggerStatement()); + } + + // 12 Statements + + function parseStatement() { + var type = lookahead.type, + marker, + expr, + labeledBody, + key; + + if (type === Token.EOF) { + throwUnexpected(lookahead); + } + + if (type === Token.Punctuator) { + switch (lookahead.value) { + case ';': + return parseEmptyStatement(); + case '{': + return parseBlock(); + case '(': + return parseExpressionStatement(); + default: + break; + } + } + + if (type === Token.Keyword) { + switch (lookahead.value) { + case 'break': + return parseBreakStatement(); + case 'continue': + return parseContinueStatement(); + case 'debugger': + return parseDebuggerStatement(); + case 'do': + return parseDoWhileStatement(); + case 'for': + return parseForStatement(); + case 'function': + return parseFunctionDeclaration(); + case 'class': + return parseClassDeclaration(); + case 'if': + return parseIfStatement(); + case 'return': + return parseReturnStatement(); + case 'switch': + return parseSwitchStatement(); + case 'throw': + return parseThrowStatement(); + case 'try': + return parseTryStatement(); + case 'var': + return parseVariableStatement(); + case 'while': + return parseWhileStatement(); + case 'with': + return parseWithStatement(); + default: + break; + } + } + + marker = markerCreate(); + expr = parseExpression(); + + // 12.12 Labelled Statements + if ((expr.type === Syntax.Identifier) && match(':')) { + lex(); + + key = '$' + expr.name; + if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) { + throwError({}, Messages.Redeclaration, 'Label', expr.name); + } + + state.labelSet[key] = true; + labeledBody = parseStatement(); + delete state.labelSet[key]; + return markerApply(marker, delegate.createLabeledStatement(expr, labeledBody)); + } + + consumeSemicolon(); + + return markerApply(marker, delegate.createExpressionStatement(expr)); + } + + // 13 Function Definition + + function parseConciseBody() { + if (match('{')) { + return parseFunctionSourceElements(); + } + return parseAssignmentExpression(); + } + + function parseFunctionSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted, + oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, oldParenthesizedCount, + marker = markerCreate(); + + expect('{'); + + while (index < length) { + if (lookahead.type !== Token.StringLiteral) { + break; + } + token = lookahead; + + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = source.slice(token.range[0] + 1, token.range[1] - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + + oldLabelSet = state.labelSet; + oldInIteration = state.inIteration; + oldInSwitch = state.inSwitch; + oldInFunctionBody = state.inFunctionBody; + oldParenthesizedCount = state.parenthesizedCount; + + state.labelSet = {}; + state.inIteration = false; + state.inSwitch = false; + state.inFunctionBody = true; + state.parenthesizedCount = 0; + + while (index < length) { + if (match('}')) { + break; + } + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + + expect('}'); + + state.labelSet = oldLabelSet; + state.inIteration = oldInIteration; + state.inSwitch = oldInSwitch; + state.inFunctionBody = oldInFunctionBody; + state.parenthesizedCount = oldParenthesizedCount; + + return markerApply(marker, delegate.createBlockStatement(sourceElements)); + } + + function validateParam(options, param, name) { + var key = '$' + name; + if (strict) { + if (isRestrictedWord(name)) { + options.stricted = param; + options.message = Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { + options.stricted = param; + options.message = Messages.StrictParamDupe; + } + } else if (!options.firstRestricted) { + if (isRestrictedWord(name)) { + options.firstRestricted = param; + options.message = Messages.StrictParamName; + } else if (isStrictModeReservedWord(name)) { + options.firstRestricted = param; + options.message = Messages.StrictReservedWord; + } else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) { + options.firstRestricted = param; + options.message = Messages.StrictParamDupe; + } + } + options.paramSet[key] = true; + } + + function parseParam(options) { + var token, rest, param, def; + + token = lookahead; + if (token.value === '...') { + token = lex(); + rest = true; + } + + if (match('[')) { + param = parseArrayInitialiser(); + reinterpretAsDestructuredParameter(options, param); + } else if (match('{')) { + if (rest) { + throwError({}, Messages.ObjectPatternAsRestParameter); + } + param = parseObjectInitialiser(); + reinterpretAsDestructuredParameter(options, param); + } else { + param = parseVariableIdentifier(); + validateParam(options, token, token.value); + if (match('=')) { + if (rest) { + throwErrorTolerant(lookahead, Messages.DefaultRestParameter); + } + lex(); + def = parseAssignmentExpression(); + ++options.defaultCount; + } + } + + if (rest) { + if (!match(')')) { + throwError({}, Messages.ParameterAfterRestParameter); + } + options.rest = param; + return false; + } + + options.params.push(param); + options.defaults.push(def); + return !match(')'); + } + + function parseParams(firstRestricted) { + var options, marker = markerCreate(); + + options = { + params: [], + defaultCount: 0, + defaults: [], + rest: null, + firstRestricted: firstRestricted + }; + + expect('('); + + if (!match(')')) { + options.paramSet = {}; + while (index < length) { + if (!parseParam(options)) { + break; + } + expect(','); + } + } + + expect(')'); + + if (options.defaultCount === 0) { + options.defaults = []; + } + + return markerApply(marker, options); + } + + function parseFunctionDeclaration() { + var id, body, token, tmp, firstRestricted, message, previousStrict, previousYieldAllowed, generator, + marker = markerCreate(); + + expectKeyword('function'); + + generator = false; + if (match('*')) { + lex(); + generator = true; + } + + token = lookahead; + + id = parseVariableIdentifier(); + + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + + tmp = parseParams(firstRestricted); + firstRestricted = tmp.firstRestricted; + if (tmp.message) { + message = tmp.message; + } + + previousStrict = strict; + previousYieldAllowed = state.yieldAllowed; + state.yieldAllowed = generator; + + body = parseFunctionSourceElements(); + + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && tmp.stricted) { + throwErrorTolerant(tmp.stricted, message); + } + strict = previousStrict; + state.yieldAllowed = previousYieldAllowed; + + return markerApply(marker, delegate.createFunctionDeclaration(id, tmp.params, tmp.defaults, body, tmp.rest, generator, false)); + } + + function parseFunctionExpression() { + var token, id = null, firstRestricted, message, tmp, body, previousStrict, previousYieldAllowed, generator, + marker = markerCreate(); + + expectKeyword('function'); + + generator = false; + + if (match('*')) { + lex(); + generator = true; + } + + if (!match('(')) { + token = lookahead; + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + } + + tmp = parseParams(firstRestricted); + firstRestricted = tmp.firstRestricted; + if (tmp.message) { + message = tmp.message; + } + + previousStrict = strict; + previousYieldAllowed = state.yieldAllowed; + state.yieldAllowed = generator; + + body = parseFunctionSourceElements(); + + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && tmp.stricted) { + throwErrorTolerant(tmp.stricted, message); + } + strict = previousStrict; + state.yieldAllowed = previousYieldAllowed; + + return markerApply(marker, delegate.createFunctionExpression(id, tmp.params, tmp.defaults, body, tmp.rest, generator, false)); + } + + function parseYieldExpression() { + var yieldToken, delegateFlag, expr, marker = markerCreate(); + + yieldToken = lex(); + assert(yieldToken.value === 'yield', 'Called parseYieldExpression with non-yield lookahead.'); + + if (!state.yieldAllowed) { + throwErrorTolerant({}, Messages.IllegalYield); + } + + delegateFlag = false; + if (match('*')) { + lex(); + delegateFlag = true; + } + + expr = parseAssignmentExpression(); + + return markerApply(marker, delegate.createYieldExpression(expr, delegateFlag)); + } + + // 14 Classes + + function parseMethodDefinition(existingPropNames) { + var token, key, param, propType, isValidDuplicateProp = false, + marker = markerCreate(); + + if (lookahead.value === 'static') { + propType = ClassPropertyType.static; + lex(); + } else { + propType = ClassPropertyType.prototype; + } + + if (match('*')) { + lex(); + return markerApply(marker, delegate.createMethodDefinition( + propType, + '', + parseObjectPropertyKey(), + parsePropertyMethodFunction({ generator: true }) + )); + } + + token = lookahead; + key = parseObjectPropertyKey(); + + if (token.value === 'get' && !match('(')) { + key = parseObjectPropertyKey(); + + // It is a syntax error if any other properties have a name + // duplicating this one unless they are a setter + if (existingPropNames[propType].hasOwnProperty(key.name)) { + isValidDuplicateProp = + // There isn't already a getter for this prop + existingPropNames[propType][key.name].get === undefined + // There isn't already a data prop by this name + && existingPropNames[propType][key.name].data === undefined + // The only existing prop by this name is a setter + && existingPropNames[propType][key.name].set !== undefined; + if (!isValidDuplicateProp) { + throwError(key, Messages.IllegalDuplicateClassProperty); + } + } else { + existingPropNames[propType][key.name] = {}; + } + existingPropNames[propType][key.name].get = true; + + expect('('); + expect(')'); + return markerApply(marker, delegate.createMethodDefinition( + propType, + 'get', + key, + parsePropertyFunction({ generator: false }) + )); + } + if (token.value === 'set' && !match('(')) { + key = parseObjectPropertyKey(); + + // It is a syntax error if any other properties have a name + // duplicating this one unless they are a getter + if (existingPropNames[propType].hasOwnProperty(key.name)) { + isValidDuplicateProp = + // There isn't already a setter for this prop + existingPropNames[propType][key.name].set === undefined + // There isn't already a data prop by this name + && existingPropNames[propType][key.name].data === undefined + // The only existing prop by this name is a getter + && existingPropNames[propType][key.name].get !== undefined; + if (!isValidDuplicateProp) { + throwError(key, Messages.IllegalDuplicateClassProperty); + } + } else { + existingPropNames[propType][key.name] = {}; + } + existingPropNames[propType][key.name].set = true; + + expect('('); + token = lookahead; + param = [ parseVariableIdentifier() ]; + expect(')'); + return markerApply(marker, delegate.createMethodDefinition( + propType, + 'set', + key, + parsePropertyFunction({ params: param, generator: false, name: token }) + )); + } + + // It is a syntax error if any other properties have the same name as a + // non-getter, non-setter method + if (existingPropNames[propType].hasOwnProperty(key.name)) { + throwError(key, Messages.IllegalDuplicateClassProperty); + } else { + existingPropNames[propType][key.name] = {}; + } + existingPropNames[propType][key.name].data = true; + + return markerApply(marker, delegate.createMethodDefinition( + propType, + '', + key, + parsePropertyMethodFunction({ generator: false }) + )); + } + + function parseClassElement(existingProps) { + if (match(';')) { + lex(); + return; + } + return parseMethodDefinition(existingProps); + } + + function parseClassBody() { + var classElement, classElements = [], existingProps = {}, marker = markerCreate(); + + existingProps[ClassPropertyType.static] = {}; + existingProps[ClassPropertyType.prototype] = {}; + + expect('{'); + + while (index < length) { + if (match('}')) { + break; + } + classElement = parseClassElement(existingProps); + + if (typeof classElement !== 'undefined') { + classElements.push(classElement); + } + } + + expect('}'); + + return markerApply(marker, delegate.createClassBody(classElements)); + } + + function parseClassExpression() { + var id, previousYieldAllowed, superClass = null, marker = markerCreate(); + + expectKeyword('class'); + + if (!matchKeyword('extends') && !match('{')) { + id = parseVariableIdentifier(); + } + + if (matchKeyword('extends')) { + expectKeyword('extends'); + previousYieldAllowed = state.yieldAllowed; + state.yieldAllowed = false; + superClass = parseAssignmentExpression(); + state.yieldAllowed = previousYieldAllowed; + } + + return markerApply(marker, delegate.createClassExpression(id, superClass, parseClassBody())); + } + + function parseClassDeclaration() { + var id, previousYieldAllowed, superClass = null, marker = markerCreate(); + + expectKeyword('class'); + + id = parseVariableIdentifier(); + + if (matchKeyword('extends')) { + expectKeyword('extends'); + previousYieldAllowed = state.yieldAllowed; + state.yieldAllowed = false; + superClass = parseAssignmentExpression(); + state.yieldAllowed = previousYieldAllowed; + } + + return markerApply(marker, delegate.createClassDeclaration(id, superClass, parseClassBody())); + } + + // 15 Program + + function matchModuleDeclaration() { + var id; + if (matchContextualKeyword('module')) { + id = lookahead2(); + return id.type === Token.StringLiteral || id.type === Token.Identifier; + } + return false; + } + + function parseSourceElement() { + if (lookahead.type === Token.Keyword) { + switch (lookahead.value) { + case 'const': + case 'let': + return parseConstLetDeclaration(lookahead.value); + case 'function': + return parseFunctionDeclaration(); + case 'export': + return parseExportDeclaration(); + case 'import': + return parseImportDeclaration(); + default: + return parseStatement(); + } + } + + if (matchModuleDeclaration()) { + throwError({}, Messages.NestedModule); + } + + if (lookahead.type !== Token.EOF) { + return parseStatement(); + } + } + + function parseProgramElement() { + if (lookahead.type === Token.Keyword) { + switch (lookahead.value) { + case 'export': + return parseExportDeclaration(); + case 'import': + return parseImportDeclaration(); + } + } + + if (matchModuleDeclaration()) { + return parseModuleDeclaration(); + } + + return parseSourceElement(); + } + + function parseProgramElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted; + + while (index < length) { + token = lookahead; + if (token.type !== Token.StringLiteral) { + break; + } + + sourceElement = parseProgramElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = source.slice(token.range[0] + 1, token.range[1] - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + + while (index < length) { + sourceElement = parseProgramElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + return sourceElements; + } + + function parseModuleElement() { + return parseSourceElement(); + } + + function parseModuleElements() { + var list = [], + statement; + + while (index < length) { + if (match('}')) { + break; + } + statement = parseModuleElement(); + if (typeof statement === 'undefined') { + break; + } + list.push(statement); + } + + return list; + } + + function parseModuleBlock() { + var block, marker = markerCreate(); + + expect('{'); + + block = parseModuleElements(); + + expect('}'); + + return markerApply(marker, delegate.createBlockStatement(block)); + } + + function parseProgram() { + var body, marker = markerCreate(); + strict = false; + peek(); + body = parseProgramElements(); + return markerApply(marker, delegate.createProgram(body)); + } + + // The following functions are needed only when the option to preserve + // the comments is active. + + function addComment(type, value, start, end, loc) { + var comment; + + assert(typeof start === 'number', 'Comment must have valid position'); + + // Because the way the actual token is scanned, often the comments + // (if any) are skipped twice during the lexical analysis. + // Thus, we need to skip adding a comment if the comment array already + // handled it. + if (state.lastCommentStart >= start) { + return; + } + state.lastCommentStart = start; + + comment = { + type: type, + value: value + }; + if (extra.range) { + comment.range = [start, end]; + } + if (extra.loc) { + comment.loc = loc; + } + extra.comments.push(comment); + } + + function scanComment() { + var comment, ch, loc, start, blockComment, lineComment; + + comment = ''; + blockComment = false; + lineComment = false; + + while (index < length) { + ch = source[index]; + + if (lineComment) { + ch = source[index++]; + if (isLineTerminator(ch.charCodeAt(0))) { + loc.end = { + line: lineNumber, + column: index - lineStart - 1 + }; + lineComment = false; + addComment('Line', comment, start, index - 1, loc); + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + comment = ''; + } else if (index >= length) { + lineComment = false; + comment += ch; + loc.end = { + line: lineNumber, + column: length - lineStart + }; + addComment('Line', comment, start, length, loc); + } else { + comment += ch; + } + } else if (blockComment) { + if (isLineTerminator(ch.charCodeAt(0))) { + if (ch === '\r' && source[index + 1] === '\n') { + ++index; + comment += '\r\n'; + } else { + comment += ch; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + ch = source[index++]; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + comment += ch; + if (ch === '*') { + ch = source[index]; + if (ch === '/') { + comment = comment.substr(0, comment.length - 1); + blockComment = false; + ++index; + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Block', comment, start, index, loc); + comment = ''; + } + } + } + } else if (ch === '/') { + ch = source[index + 1]; + if (ch === '/') { + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + start = index; + index += 2; + lineComment = true; + if (index >= length) { + loc.end = { + line: lineNumber, + column: index - lineStart + }; + lineComment = false; + addComment('Line', comment, start, index, loc); + } + } else if (ch === '*') { + start = index; + index += 2; + blockComment = true; + loc = { + start: { + line: lineNumber, + column: index - lineStart - 2 + } + }; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + break; + } + } else if (isWhiteSpace(ch.charCodeAt(0))) { + ++index; + } else if (isLineTerminator(ch.charCodeAt(0))) { + ++index; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + } else { + break; + } + } + } + + function collectToken() { + var start, loc, token, range, value; + + skipComment(); + start = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + + token = extra.advance(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + if (token.type !== Token.EOF) { + range = [token.range[0], token.range[1]]; + value = source.slice(token.range[0], token.range[1]); + extra.tokens.push({ + type: TokenName[token.type], + value: value, + range: range, + loc: loc + }); + } + + return token; + } + + function collectRegex() { + var pos, loc, regex, token; + + skipComment(); + + pos = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + + regex = extra.scanRegExp(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + if (!extra.tokenize) { + // Pop the previous token, which is likely '/' or '/=' + if (extra.tokens.length > 0) { + token = extra.tokens[extra.tokens.length - 1]; + if (token.range[0] === pos && token.type === 'Punctuator') { + if (token.value === '/' || token.value === '/=') { + extra.tokens.pop(); + } + } + } + + extra.tokens.push({ + type: 'RegularExpression', + value: regex.literal, + range: [pos, index], + loc: loc + }); + } + + return regex; + } + + function filterTokenLocation() { + var i, entry, token, tokens = []; + + for (i = 0; i < extra.tokens.length; ++i) { + entry = extra.tokens[i]; + token = { + type: entry.type, + value: entry.value + }; + if (extra.range) { + token.range = entry.range; + } + if (extra.loc) { + token.loc = entry.loc; + } + tokens.push(token); + } + + extra.tokens = tokens; + } + + function patch() { + if (extra.comments) { + extra.skipComment = skipComment; + skipComment = scanComment; + } + + if (typeof extra.tokens !== 'undefined') { + extra.advance = advance; + extra.scanRegExp = scanRegExp; + + advance = collectToken; + scanRegExp = collectRegex; + } + } + + function unpatch() { + if (typeof extra.skipComment === 'function') { + skipComment = extra.skipComment; + } + + if (typeof extra.scanRegExp === 'function') { + advance = extra.advance; + scanRegExp = extra.scanRegExp; + } + } + + // This is used to modify the delegate. + + function extend(object, properties) { + var entry, result = {}; + + for (entry in object) { + if (object.hasOwnProperty(entry)) { + result[entry] = object[entry]; + } + } + + for (entry in properties) { + if (properties.hasOwnProperty(entry)) { + result[entry] = properties[entry]; + } + } + + return result; + } + + function tokenize(code, options) { + var toString, + token, + tokens; + + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); + } + + delegate = SyntaxTreeDelegate; + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + lookahead = null; + state = { + allowKeyword: true, + allowIn: true, + labelSet: {}, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + lastCommentStart: -1 + }; + + extra = {}; + + // Options matching. + options = options || {}; + + // Of course we collect tokens here. + options.tokens = true; + extra.tokens = []; + extra.tokenize = true; + // The following two fields are necessary to compute the Regex tokens. + extra.openParenToken = -1; + extra.openCurlyToken = -1; + + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; + + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } + + if (length > 0) { + if (typeof source[0] === 'undefined') { + // Try first to convert to a string. This is good as fast path + // for old IE which understands string indexing for string + // literals only and not for string object. + if (code instanceof String) { + source = code.valueOf(); + } + } + } + + patch(); + + try { + peek(); + if (lookahead.type === Token.EOF) { + return extra.tokens; + } + + token = lex(); + while (lookahead.type !== Token.EOF) { + try { + token = lex(); + } catch (lexError) { + token = lookahead; + if (extra.errors) { + extra.errors.push(lexError); + // We have to break on the first error + // to avoid infinite loops. + break; + } else { + throw lexError; + } + } + } + + filterTokenLocation(); + tokens = extra.tokens; + if (typeof extra.comments !== 'undefined') { + tokens.comments = extra.comments; + } + if (typeof extra.errors !== 'undefined') { + tokens.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + unpatch(); + extra = {}; + } + return tokens; + } + + function parse(code, options) { + var program, toString; + + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); + } + + delegate = SyntaxTreeDelegate; + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + lookahead = null; + state = { + allowKeyword: false, + allowIn: true, + labelSet: {}, + parenthesizedCount: 0, + inFunctionBody: false, + inIteration: false, + inSwitch: false, + lastCommentStart: -1, + yieldAllowed: false + }; + + extra = {}; + if (typeof options !== 'undefined') { + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; + + if (extra.loc && options.source !== null && options.source !== undefined) { + delegate = extend(delegate, { + 'postProcess': function (node) { + node.loc.source = toString(options.source); + return node; + } + }); + } + + if (typeof options.tokens === 'boolean' && options.tokens) { + extra.tokens = []; + } + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } + } + + if (length > 0) { + if (typeof source[0] === 'undefined') { + // Try first to convert to a string. This is good as fast path + // for old IE which understands string indexing for string + // literals only and not for string object. + if (code instanceof String) { + source = code.valueOf(); + } + } + } + + patch(); + try { + program = parseProgram(); + if (typeof extra.comments !== 'undefined') { + program.comments = extra.comments; + } + if (typeof extra.tokens !== 'undefined') { + filterTokenLocation(); + program.tokens = extra.tokens; + } + if (typeof extra.errors !== 'undefined') { + program.errors = extra.errors; + } + } catch (e) { + throw e; + } finally { + unpatch(); + extra = {}; + } + + return program; + } + + // Sync with *.json manifests. + exports.version = '1.1.0-dev-harmony'; + + exports.tokenize = tokenize; + + exports.parse = parse; + + // Deep copy. + exports.Syntax = (function () { + var name, types = {}; + + if (typeof Object.create === 'function') { + types = Object.create(null); + } + + for (name in Syntax) { + if (Syntax.hasOwnProperty(name)) { + types[name] = Syntax[name]; + } + } + + if (typeof Object.freeze === 'function') { + Object.freeze(types); + } + + return types; + }()); + +})); +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/third_party/jsdoc/node_modules/esprima/package.json b/third_party/jsdoc/node_modules/esprima/package.json new file mode 100644 index 0000000000..c4c1b815a2 --- /dev/null +++ b/third_party/jsdoc/node_modules/esprima/package.json @@ -0,0 +1,61 @@ +{ + "name": "esprima", + "description": "ECMAScript parsing infrastructure for multipurpose analysis", + "homepage": "http://esprima.org", + "main": "esprima.js", + "bin": { + "esparse": "./bin/esparse.js", + "esvalidate": "./bin/esvalidate.js" + }, + "version": "1.1.0-dev-harmony", + "engines": { + "node": ">=0.4.0" + }, + "maintainers": [ + { + "name": "Ariya Hidayat", + "email": "ariya.hidayat@gmail.com", + "url": "http://ariya.ofilabs.com" + } + ], + "repository": { + "type": "git", + "url": "http://github.com/ariya/esprima.git" + }, + "licenses": [ + { + "type": "BSD", + "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" + } + ], + "devDependencies": { + "jslint": "~0.1.9", + "eslint": "~0.1.0", + "istanbul": "~0.1.27", + "complexity-report": "~0.6.1", + "regenerate": "~0.5.4", + "unicode-6.3.0": "~0.1.0", + "json-diff": "~0.3.1" + }, + "scripts": { + "test": "npm run-script lint && node test/run.js && npm run-script coverage && npm run-script complexity", + "lint": "node tools/check-version.js && node_modules/eslint/bin/eslint.js esprima.js && node_modules/jslint/bin/jslint.js esprima.js", + "coverage": "npm run-script analyze-coverage && npm run-script check-coverage", + "analyze-coverage": "node node_modules/istanbul/lib/cli.js cover test/runner.js", + "check-coverage": "node node_modules/istanbul/lib/cli.js check-coverage --statement -8 --branch -28 --function 99.69", + "complexity": "npm run-script analyze-complexity && npm run-script check-complexity", + "analyze-complexity": "node tools/list-complexity.js", + "check-complexity": "node node_modules/complexity-report/src/cli.js --maxcc 31 --silent -l -w esprima.js", + "benchmark": "node test/benchmarks.js", + "benchmark-quick": "node test/benchmarks.js quick" + }, + "readme": "**Esprima** ([esprima.org](http://esprima.org), BSD license) is a high performance,\nstandard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\nparser written in ECMAScript (also popularly known as\n[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)).\nEsprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat),\nwith the help of [many contributors](https://github.com/ariya/esprima/contributors).\n\n### Features\n\n- Full support for ECMAScript 5.1 ([ECMA-262](http://www.ecma-international.org/publications/standards/Ecma-262.htm))\n- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla\n[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API)\n- Optional tracking of syntax node location (index-based and line-column)\n- Heavily tested (> 600 [unit tests](http://esprima.org/test/) with solid statement and branch coverage)\n- Experimental support for ES6/Harmony (module, class, destructuring, ...)\n\nEsprima serves as a **building block** for some JavaScript\nlanguage tools, from [code instrumentation](http://esprima.org/demo/functiontrace.html)\nto [editor autocompletion](http://esprima.org/demo/autocomplete.html).\n\nEsprima runs on many popular web browsers, as well as other ECMAScript platforms such as\n[Rhino](http://www.mozilla.org/rhino) and [Node.js](https://npmjs.org/package/esprima).\n\nFor more information, check the web site [esprima.org](http://esprima.org).\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/ariya/esprima/issues" + }, + "_id": "esprima@1.1.0-dev-harmony", + "_shasum": "a03eaca83ec1125aa3d4acddd2636b4dd707db67", + "_from": "https://github.com/ariya/esprima/tarball/49a2eccb243f29bd653b11e9419241a9d726af7c", + "_resolved": "https://github.com/ariya/esprima/tarball/49a2eccb243f29bd653b11e9419241a9d726af7c" +} diff --git a/third_party/jsdoc/node_modules/js2xmlparser/LICENSE.md b/third_party/jsdoc/node_modules/js2xmlparser/LICENSE.md new file mode 100644 index 0000000000..1b76d2f6a5 --- /dev/null +++ b/third_party/jsdoc/node_modules/js2xmlparser/LICENSE.md @@ -0,0 +1,16 @@ +js2xmlparser is licensed under the MIT license: + +> Copyright © 2012 Michael Kourlas and other contributors +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +> documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +> rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit +> persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +> Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +> WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +> OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/third_party/jsdoc/node_modules/js2xmlparser/lib/js2xmlparser.js b/third_party/jsdoc/node_modules/js2xmlparser/lib/js2xmlparser.js new file mode 100644 index 0000000000..f96c97b634 --- /dev/null +++ b/third_party/jsdoc/node_modules/js2xmlparser/lib/js2xmlparser.js @@ -0,0 +1,328 @@ +/* jshint node:true */ + +/** + * js2xmlparser + * Copyright © 2012 Michael Kourlas and other contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS + * OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +(function() { + "use strict"; + + var xmlDeclaration = true; + var xmlVersion = "1.0"; + var xmlEncoding = "UTF-8"; + var attributeString = "@"; + var valueString = "#"; + var prettyPrinting = true; + var indentString = "\t"; + var convertMap = {}; + var useCDATA = false; + + module.exports = function (root, data, options) { + return toXML(init(root, data, options)); + }; + + // Initialization + var init = function(root, data, options) { + // Set option defaults + setOptionDefaults(); + + // Error checking for root element + if (typeof root !== "string") { + throw new Error("root element must be a string"); + } + else if (root === "") { + throw new Error("root element cannot be empty"); + } + + // Error checking and variable initialization for options + if (typeof options === "object" && options !== null) { + if ("declaration" in options) { + if ("include" in options.declaration) { + if (typeof options.declaration.include === "boolean") { + xmlDeclaration = options.declaration.include; + } + else { + throw new Error("declaration.include option must be a boolean"); + } + } + + if ("encoding" in options.declaration) { + if (typeof options.declaration.encoding === "string" || options.declaration.encoding === null) { + xmlEncoding = options.declaration.encoding; + } + else { + throw new Error("declaration.encoding option must be a string or null"); + } + } + } + if ("attributeString" in options) { + if (typeof options.attributeString === "string") { + attributeString = options.attributeString; + } + else { + throw new Error("attributeString option must be a string"); + } + } + if ("valueString" in options) { + if (typeof options.valueString === "string") { + valueString = options.valueString; + } + else { + throw new Error("valueString option must be a string"); + } + } + if ("prettyPrinting" in options) { + if ("enabled" in options.prettyPrinting) { + if (typeof options.prettyPrinting.enabled === "boolean") { + prettyPrinting = options.prettyPrinting.enabled; + } + else { + throw new Error("prettyPrinting.enabled option must be a boolean"); + } + } + + if ("indentString" in options.prettyPrinting) { + if (typeof options.prettyPrinting.indentString === "string") { + indentString = options.prettyPrinting.indentString; + } + else { + throw new Error("prettyPrinting.indentString option must be a string"); + } + } + } + if ("convertMap" in options) { + if (Object.prototype.toString.call(options.convertMap) === "[object Object]") { + convertMap = options.convertMap; + } + else { + throw new Error("convertMap option must be an object"); + } + } + if ("useCDATA" in options) { + if (typeof options.useCDATA === "boolean") { + useCDATA = options.useCDATA; + } + else { + throw new Error("useCDATA option must be a boolean"); + } + } + } + + // Error checking and variable initialization for data + if (typeof data !== "string" && typeof data !== "object" && typeof data !== "number" && + typeof data !== "boolean" && data !== null) { + throw new Error("data must be an object (excluding arrays) or a JSON string"); + } + + if (data === null) { + throw new Error("data must be an object (excluding arrays) or a JSON string"); + } + + if (Object.prototype.toString.call(data) === "[object Array]") { + throw new Error("data must be an object (excluding arrays) or a JSON string"); + } + + if (typeof data === "string") { + data = JSON.parse(data); + } + + var tempData = {}; + tempData[root] = data; // Add root element to object + + return tempData; + }; + + // Convert object to XML + var toXML = function(object) { + // Initialize arguments, if necessary + var xml = arguments[1] || ""; + var level = arguments[2] || 0; + + var i = null; + var tempObject = {}; + + for (var property in object) { + if (object.hasOwnProperty(property)) { + // Element name cannot start with a number + var elementName = property; + if (/^\d/.test(property)) { + elementName = "_" + property; + } + + // Arrays + if (Object.prototype.toString.call(object[property]) === "[object Array]") { + // Create separate XML elements for each array element + for (i = 0; i < object[property].length; i++) { + tempObject = {}; + tempObject[property] = object[property][i]; + + xml = toXML(tempObject, xml, level); + } + } + // JSON-type objects with properties + else if (Object.prototype.toString.call(object[property]) === "[object Object]") { + xml += addIndent("<" + elementName, level); + + // Add attributes + var lengthExcludingAttributes = Object.keys(object[property]).length; + if (Object.prototype.toString.call(object[property][attributeString]) === "[object Object]") { + lengthExcludingAttributes -= 1; + for (var attribute in object[property][attributeString]) { + if (object[property][attributeString].hasOwnProperty(attribute)) { + xml += " " + attribute + "=\"" + + toString(object[property][attributeString][attribute], true) + "\""; + } + } + } + else if (typeof object[property][attributeString] !== "undefined") { + // Fix for the case where an object contains a single property with the attribute string as its + // name, but this property contains no attributes; in that case, lengthExcludingAttributes + // should be set to zero to ensure that the object is considered an empty object for the + // purposes of the following if statement. + lengthExcludingAttributes -= 1; + } + + if (lengthExcludingAttributes === 0) { // Empty object + xml += addBreak("/>"); + } + else if (lengthExcludingAttributes === 1 && valueString in object[property]) { // Value string only + xml += addBreak(">" + toString(object[property][valueString], false) + ""); + } + else { // Object with properties + xml += addBreak(">"); + + // Create separate object for each property and pass to this function + for (var subProperty in object[property]) { + if (object[property].hasOwnProperty(subProperty) && subProperty !== attributeString && subProperty !== valueString) { + tempObject = {}; + tempObject[subProperty] = object[property][subProperty]; + + xml = toXML(tempObject, xml, level + 1); + } + } + + xml += addBreak(addIndent("", level)); + } + } + // Everything else + else { + xml += addBreak(addIndent("<" + elementName + ">" + toString(object[property], false) + "", level)); + } + } + } + + // Finalize XML at end of process + if (level === 0) { + // Strip trailing whitespace + xml = xml.replace(/\s+$/g, ""); + + // Add XML declaration + if (xmlDeclaration) { + if (xmlEncoding === null) { + xml = addBreak("") + xml; + } + else { + xml = addBreak("") + xml; + } + } + } + + return xml; + }; + + // Add indenting to data for pretty printing + var addIndent = function(data, level) { + if (prettyPrinting) { + + var indent = ""; + for (var i = 0; i < level; i++) { + indent += indentString; + } + data = indent + data; + } + + return data; + }; + + // Add line break to data for pretty printing + var addBreak = function(data) { + return prettyPrinting ? data + "\n" : data; + }; + + // Convert anything into a valid XML string representation + var toString = function(data, isAttribute) { + // Recursive function used to handle nested functions + var functionHelper = function(data) { + if (Object.prototype.toString.call(data) === "[object Function]") { + return functionHelper(data()); + } + else { + return data; + } + }; + + // Convert map + if (Object.prototype.toString.call(data) in convertMap) { + data = convertMap[Object.prototype.toString.call(data)](data); + } + else if ("*" in convertMap) { + data = convertMap["*"](data); + } + // Functions + else if (Object.prototype.toString.call(data) === "[object Function]") { + data = functionHelper(data()); + } + // Empty objects + else if (Object.prototype.toString.call(data) === "[object Object]" && Object.keys(data).length === 0) { + data = ""; + } + + // Cast data to string + if (typeof data !== "string") { + data = (data === null || typeof data === "undefined") ? "" : data.toString(); + } + + // Output as CDATA instead of escaping if option set (and only if not an attribute value) + if (useCDATA && !isAttribute) { + data = "/gm, "]]]]>") + "]]>"; + } + else { + // Escape illegal XML characters + data = data.replace(/&/gm, "&") + .replace(//gm, ">") + .replace(/"/gm, """) + .replace(/'/gm, "'"); + } + + return data; + }; + + // Revert options back to their default settings + var setOptionDefaults = function() { + useCDATA = false; + convertMap = {}; + xmlDeclaration = true; + xmlVersion = "1.0"; + xmlEncoding = "UTF-8"; + attributeString = "@"; + valueString = "#"; + prettyPrinting = true; + indentString = "\t"; + }; +})(); diff --git a/third_party/jsdoc/node_modules/js2xmlparser/package.json b/third_party/jsdoc/node_modules/js2xmlparser/package.json new file mode 100644 index 0000000000..a5a850fc08 --- /dev/null +++ b/third_party/jsdoc/node_modules/js2xmlparser/package.json @@ -0,0 +1,54 @@ +{ + "name": "js2xmlparser", + "description": "Parses JavaScript objects into XML", + "keywords": [ + "convert", + "converter", + "js", + "json", + "object", + "objects", + "parse", + "parser", + "xml" + ], + "homepage": "http://www.kourlas.net", + "version": "0.1.5", + "author": { + "name": "Michael Kourlas", + "email": "michael@kourlas.net" + }, + "main": "./lib/js2xmlparser.js", + "repository": { + "type": "git", + "url": "git://github.com/michaelkourlas/node-js2xmlparser.git" + }, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/michaelkourlas/node-js2xmlparser/issues" + }, + "_id": "js2xmlparser@0.1.5", + "_shasum": "b42b3ac5a74bb282ff06cc93dfa67fb98a22959d", + "_from": "js2xmlparser@0.1.5", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "michaelkourlas", + "email": "michael@kourlas.net" + }, + "maintainers": [ + { + "name": "michaelkourlas", + "email": "michaelkourlas@gmail.com" + } + ], + "dist": { + "shasum": "b42b3ac5a74bb282ff06cc93dfa67fb98a22959d", + "tarball": "http://registry.npmjs.org/js2xmlparser/-/js2xmlparser-0.1.5.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-0.1.5.tgz" +} diff --git a/third_party/jsdoc/node_modules/marked/LICENSE b/third_party/jsdoc/node_modules/marked/LICENSE new file mode 100644 index 0000000000..a7b812ed61 --- /dev/null +++ b/third_party/jsdoc/node_modules/marked/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/third_party/jsdoc/node_modules/marked/index.js b/third_party/jsdoc/node_modules/marked/index.js new file mode 100644 index 0000000000..a12f90569f --- /dev/null +++ b/third_party/jsdoc/node_modules/marked/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/marked'); diff --git a/third_party/jsdoc/node_modules/marked/lib/marked.js b/third_party/jsdoc/node_modules/marked/lib/marked.js new file mode 100644 index 0000000000..e2f08c9983 --- /dev/null +++ b/third_party/jsdoc/node_modules/marked/lib/marked.js @@ -0,0 +1,1266 @@ +/** + * marked - a markdown parser + * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) + * https://github.com/chjj/marked + */ + +;(function() { + +/** + * Block-Level Grammar + */ + +var block = { + newline: /^\n+/, + code: /^( {4}[^\n]+\n*)+/, + fences: noop, + hr: /^( *[-*_]){3,} *(?:\n+|$)/, + heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/, + nptable: noop, + lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/, + blockquote: /^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/, + list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/, + html: /^ *(?:comment|closed|closing) *(?:\n{2,}|\s*$)/, + def: /^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/, + table: noop, + paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/, + text: /^[^\n]+/ +}; + +block.bullet = /(?:[*+-]|\d+\.)/; +block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/; +block.item = replace(block.item, 'gm') + (/bull/g, block.bullet) + (); + +block.list = replace(block.list) + (/bull/g, block.bullet) + ('hr', '\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))') + ('def', '\\n+(?=' + block.def.source + ')') + (); + +block.blockquote = replace(block.blockquote) + ('def', block.def) + (); + +block._tag = '(?!(?:' + + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code' + + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo' + + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b'; + +block.html = replace(block.html) + ('comment', //) + ('closed', /<(tag)[\s\S]+?<\/\1>/) + ('closing', /])*?>/) + (/tag/g, block._tag) + (); + +block.paragraph = replace(block.paragraph) + ('hr', block.hr) + ('heading', block.heading) + ('lheading', block.lheading) + ('blockquote', block.blockquote) + ('tag', '<' + block._tag) + ('def', block.def) + (); + +/** + * Normal Block Grammar + */ + +block.normal = merge({}, block); + +/** + * GFM Block Grammar + */ + +block.gfm = merge({}, block.normal, { + fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/, + paragraph: /^/ +}); + +block.gfm.paragraph = replace(block.paragraph) + ('(?!', '(?!' + + block.gfm.fences.source.replace('\\1', '\\2') + '|' + + block.list.source.replace('\\1', '\\3') + '|') + (); + +/** + * GFM + Tables Block Grammar + */ + +block.tables = merge({}, block.gfm, { + nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/, + table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/ +}); + +/** + * Block Lexer + */ + +function Lexer(options) { + this.tokens = []; + this.tokens.links = {}; + this.options = options || marked.defaults; + this.rules = block.normal; + + if (this.options.gfm) { + if (this.options.tables) { + this.rules = block.tables; + } else { + this.rules = block.gfm; + } + } +} + +/** + * Expose Block Rules + */ + +Lexer.rules = block; + +/** + * Static Lex Method + */ + +Lexer.lex = function(src, options) { + var lexer = new Lexer(options); + return lexer.lex(src); +}; + +/** + * Preprocessing + */ + +Lexer.prototype.lex = function(src) { + src = src + .replace(/\r\n|\r/g, '\n') + .replace(/\t/g, ' ') + .replace(/\u00a0/g, ' ') + .replace(/\u2424/g, '\n'); + + return this.token(src, true); +}; + +/** + * Lexing + */ + +Lexer.prototype.token = function(src, top, bq) { + var src = src.replace(/^ +$/gm, '') + , next + , loose + , cap + , bull + , b + , item + , space + , i + , l; + + while (src) { + // newline + if (cap = this.rules.newline.exec(src)) { + src = src.substring(cap[0].length); + if (cap[0].length > 1) { + this.tokens.push({ + type: 'space' + }); + } + } + + // code + if (cap = this.rules.code.exec(src)) { + src = src.substring(cap[0].length); + cap = cap[0].replace(/^ {4}/gm, ''); + this.tokens.push({ + type: 'code', + text: !this.options.pedantic + ? cap.replace(/\n+$/, '') + : cap + }); + continue; + } + + // fences (gfm) + if (cap = this.rules.fences.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'code', + lang: cap[2], + text: cap[3] + }); + continue; + } + + // heading + if (cap = this.rules.heading.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'heading', + depth: cap[1].length, + text: cap[2] + }); + continue; + } + + // table no leading pipe (gfm) + if (top && (cap = this.rules.nptable.exec(src))) { + src = src.substring(cap[0].length); + + item = { + type: 'table', + header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */), + align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), + cells: cap[3].replace(/\n$/, '').split('\n') + }; + + for (i = 0; i < item.align.length; i++) { + if (/^ *-+: *$/.test(item.align[i])) { + item.align[i] = 'right'; + } else if (/^ *:-+: *$/.test(item.align[i])) { + item.align[i] = 'center'; + } else if (/^ *:-+ *$/.test(item.align[i])) { + item.align[i] = 'left'; + } else { + item.align[i] = null; + } + } + + for (i = 0; i < item.cells.length; i++) { + item.cells[i] = item.cells[i].split(/ *\| */); + } + + this.tokens.push(item); + + continue; + } + + // lheading + if (cap = this.rules.lheading.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'heading', + depth: cap[2] === '=' ? 1 : 2, + text: cap[1] + }); + continue; + } + + // hr + if (cap = this.rules.hr.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'hr' + }); + continue; + } + + // blockquote + if (cap = this.rules.blockquote.exec(src)) { + src = src.substring(cap[0].length); + + this.tokens.push({ + type: 'blockquote_start' + }); + + cap = cap[0].replace(/^ *> ?/gm, ''); + + // Pass `top` to keep the current + // "toplevel" state. This is exactly + // how markdown.pl works. + this.token(cap, top, true); + + this.tokens.push({ + type: 'blockquote_end' + }); + + continue; + } + + // list + if (cap = this.rules.list.exec(src)) { + src = src.substring(cap[0].length); + bull = cap[2]; + + this.tokens.push({ + type: 'list_start', + ordered: bull.length > 1 + }); + + // Get each top-level item. + cap = cap[0].match(this.rules.item); + + next = false; + l = cap.length; + i = 0; + + for (; i < l; i++) { + item = cap[i]; + + // Remove the list item's bullet + // so it is seen as the next token. + space = item.length; + item = item.replace(/^ *([*+-]|\d+\.) +/, ''); + + // Outdent whatever the + // list item contains. Hacky. + if (~item.indexOf('\n ')) { + space -= item.length; + item = !this.options.pedantic + ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') + : item.replace(/^ {1,4}/gm, ''); + } + + // Determine whether the next list item belongs here. + // Backpedal if it does not belong in this list. + if (this.options.smartLists && i !== l - 1) { + b = block.bullet.exec(cap[i + 1])[0]; + if (bull !== b && !(bull.length > 1 && b.length > 1)) { + src = cap.slice(i + 1).join('\n') + src; + i = l - 1; + } + } + + // Determine whether item is loose or not. + // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/ + // for discount behavior. + loose = next || /\n\n(?!\s*$)/.test(item); + if (i !== l - 1) { + next = item.charAt(item.length - 1) === '\n'; + if (!loose) loose = next; + } + + this.tokens.push({ + type: loose + ? 'loose_item_start' + : 'list_item_start' + }); + + // Recurse. + this.token(item, false, bq); + + this.tokens.push({ + type: 'list_item_end' + }); + } + + this.tokens.push({ + type: 'list_end' + }); + + continue; + } + + // html + if (cap = this.rules.html.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: this.options.sanitize + ? 'paragraph' + : 'html', + pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', + text: cap[0] + }); + continue; + } + + // def + if ((!bq && top) && (cap = this.rules.def.exec(src))) { + src = src.substring(cap[0].length); + this.tokens.links[cap[1].toLowerCase()] = { + href: cap[2], + title: cap[3] + }; + continue; + } + + // table (gfm) + if (top && (cap = this.rules.table.exec(src))) { + src = src.substring(cap[0].length); + + item = { + type: 'table', + header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */), + align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), + cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') + }; + + for (i = 0; i < item.align.length; i++) { + if (/^ *-+: *$/.test(item.align[i])) { + item.align[i] = 'right'; + } else if (/^ *:-+: *$/.test(item.align[i])) { + item.align[i] = 'center'; + } else if (/^ *:-+ *$/.test(item.align[i])) { + item.align[i] = 'left'; + } else { + item.align[i] = null; + } + } + + for (i = 0; i < item.cells.length; i++) { + item.cells[i] = item.cells[i] + .replace(/^ *\| *| *\| *$/g, '') + .split(/ *\| */); + } + + this.tokens.push(item); + + continue; + } + + // top-level paragraph + if (top && (cap = this.rules.paragraph.exec(src))) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'paragraph', + text: cap[1].charAt(cap[1].length - 1) === '\n' + ? cap[1].slice(0, -1) + : cap[1] + }); + continue; + } + + // text + if (cap = this.rules.text.exec(src)) { + // Top-level should never reach here. + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'text', + text: cap[0] + }); + continue; + } + + if (src) { + throw new + Error('Infinite loop on byte: ' + src.charCodeAt(0)); + } + } + + return this.tokens; +}; + +/** + * Inline-Level Grammar + */ + +var inline = { + escape: /^\\([\\`*{}\[\]()#+\-.!_>])/, + autolink: /^<([^ >]+(@|:\/)[^ >]+)>/, + url: noop, + tag: /^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/, + link: /^!?\[(inside)\]\(href\)/, + reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/, + nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/, + strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/, + em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, + code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/, + br: /^ {2,}\n(?!\s*$)/, + del: noop, + text: /^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/; + +inline.link = replace(inline.link) + ('inside', inline._inside) + ('href', inline._href) + (); + +inline.reflink = replace(inline.reflink) + ('inside', inline._inside) + (); + +/** + * Normal Inline Grammar + */ + +inline.normal = merge({}, inline); + +/** + * Pedantic Inline Grammar + */ + +inline.pedantic = merge({}, inline.normal, { + strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, + em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/ +}); + +/** + * GFM Inline Grammar + */ + +inline.gfm = merge({}, inline.normal, { + escape: replace(inline.escape)('])', '~|])')(), + url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/, + del: /^~~(?=\S)([\s\S]*?\S)~~/, + text: replace(inline.text) + (']|', '~]|') + ('|', '|https?://|') + () +}); + +/** + * GFM + Line Breaks Inline Grammar + */ + +inline.breaks = merge({}, inline.gfm, { + br: replace(inline.br)('{2,}', '*')(), + text: replace(inline.gfm.text)('{2,}', '*')() +}); + +/** + * Inline Lexer & Compiler + */ + +function InlineLexer(links, options) { + this.options = options || marked.defaults; + this.links = links; + this.rules = inline.normal; + this.renderer = this.options.renderer || new Renderer; + this.renderer.options = this.options; + + if (!this.links) { + throw new + Error('Tokens array requires a `links` property.'); + } + + if (this.options.gfm) { + if (this.options.breaks) { + this.rules = inline.breaks; + } else { + this.rules = inline.gfm; + } + } else if (this.options.pedantic) { + this.rules = inline.pedantic; + } +} + +/** + * Expose Inline Rules + */ + +InlineLexer.rules = inline; + +/** + * Static Lexing/Compiling Method + */ + +InlineLexer.output = function(src, links, options) { + var inline = new InlineLexer(links, options); + return inline.output(src); +}; + +/** + * Lexing/Compiling + */ + +InlineLexer.prototype.output = function(src) { + var out = '' + , link + , text + , href + , cap; + + while (src) { + // escape + if (cap = this.rules.escape.exec(src)) { + src = src.substring(cap[0].length); + out += cap[1]; + continue; + } + + // autolink + if (cap = this.rules.autolink.exec(src)) { + src = src.substring(cap[0].length); + if (cap[2] === '@') { + text = cap[1].charAt(6) === ':' + ? this.mangle(cap[1].substring(7)) + : this.mangle(cap[1]); + href = this.mangle('mailto:') + text; + } else { + text = escape(cap[1]); + href = text; + } + out += this.renderer.link(href, null, text); + continue; + } + + // url (gfm) + if (!this.inLink && (cap = this.rules.url.exec(src))) { + src = src.substring(cap[0].length); + text = escape(cap[1]); + href = text; + out += this.renderer.link(href, null, text); + continue; + } + + // tag + if (cap = this.rules.tag.exec(src)) { + if (!this.inLink && /^/i.test(cap[0])) { + this.inLink = false; + } + src = src.substring(cap[0].length); + out += this.options.sanitize + ? escape(cap[0]) + : cap[0]; + continue; + } + + // link + if (cap = this.rules.link.exec(src)) { + src = src.substring(cap[0].length); + this.inLink = true; + out += this.outputLink(cap, { + href: cap[2], + title: cap[3] + }); + this.inLink = false; + continue; + } + + // reflink, nolink + if ((cap = this.rules.reflink.exec(src)) + || (cap = this.rules.nolink.exec(src))) { + src = src.substring(cap[0].length); + link = (cap[2] || cap[1]).replace(/\s+/g, ' '); + link = this.links[link.toLowerCase()]; + if (!link || !link.href) { + out += cap[0].charAt(0); + src = cap[0].substring(1) + src; + continue; + } + this.inLink = true; + out += this.outputLink(cap, link); + this.inLink = false; + continue; + } + + // strong + if (cap = this.rules.strong.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.strong(this.output(cap[2] || cap[1])); + continue; + } + + // em + if (cap = this.rules.em.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.em(this.output(cap[2] || cap[1])); + continue; + } + + // code + if (cap = this.rules.code.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.codespan(escape(cap[2], true)); + continue; + } + + // br + if (cap = this.rules.br.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.br(); + continue; + } + + // del (gfm) + if (cap = this.rules.del.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.del(this.output(cap[1])); + continue; + } + + // text + if (cap = this.rules.text.exec(src)) { + src = src.substring(cap[0].length); + out += escape(this.smartypants(cap[0])); + continue; + } + + if (src) { + throw new + Error('Infinite loop on byte: ' + src.charCodeAt(0)); + } + } + + return out; +}; + +/** + * Compile Link + */ + +InlineLexer.prototype.outputLink = function(cap, link) { + var href = escape(link.href) + , title = link.title ? escape(link.title) : null; + + return cap[0].charAt(0) !== '!' + ? this.renderer.link(href, title, this.output(cap[1])) + : this.renderer.image(href, title, escape(cap[1])); +}; + +/** + * Smartypants Transformations + */ + +InlineLexer.prototype.smartypants = function(text) { + if (!this.options.smartypants) return text; + return text + // em-dashes + .replace(/--/g, '\u2014') + // opening singles + .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018') + // closing singles & apostrophes + .replace(/'/g, '\u2019') + // opening doubles + .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c') + // closing doubles + .replace(/"/g, '\u201d') + // ellipses + .replace(/\.{3}/g, '\u2026'); +}; + +/** + * Mangle Links + */ + +InlineLexer.prototype.mangle = function(text) { + var out = '' + , l = text.length + , i = 0 + , ch; + + for (; i < l; i++) { + ch = text.charCodeAt(i); + if (Math.random() > 0.5) { + ch = 'x' + ch.toString(16); + } + out += '&#' + ch + ';'; + } + + return out; +}; + +/** + * Renderer + */ + +function Renderer(options) { + this.options = options || {}; +} + +Renderer.prototype.code = function(code, lang, escaped) { + if (this.options.highlight) { + var out = this.options.highlight(code, lang); + if (out != null && out !== code) { + escaped = true; + code = out; + } + } + + if (!lang) { + return '
    '
    +      + (escaped ? code : escape(code, true))
    +      + '\n
    '; + } + + return '
    '
    +    + (escaped ? code : escape(code, true))
    +    + '\n
    \n'; +}; + +Renderer.prototype.blockquote = function(quote) { + return '
    \n' + quote + '
    \n'; +}; + +Renderer.prototype.html = function(html) { + return html; +}; + +Renderer.prototype.heading = function(text, level, raw) { + return '' + + text + + '\n'; +}; + +Renderer.prototype.hr = function() { + return this.options.xhtml ? '
    \n' : '
    \n'; +}; + +Renderer.prototype.list = function(body, ordered) { + var type = ordered ? 'ol' : 'ul'; + return '<' + type + '>\n' + body + '\n'; +}; + +Renderer.prototype.listitem = function(text) { + return '
  2. ' + text + '
  3. \n'; +}; + +Renderer.prototype.paragraph = function(text) { + return '

    ' + text + '

    \n'; +}; + +Renderer.prototype.table = function(header, body) { + return '\n' + + '\n' + + header + + '\n' + + '\n' + + body + + '\n' + + '
    \n'; +}; + +Renderer.prototype.tablerow = function(content) { + return '\n' + content + '\n'; +}; + +Renderer.prototype.tablecell = function(content, flags) { + var type = flags.header ? 'th' : 'td'; + var tag = flags.align + ? '<' + type + ' style="text-align:' + flags.align + '">' + : '<' + type + '>'; + return tag + content + '\n'; +}; + +// span level renderer +Renderer.prototype.strong = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.em = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.codespan = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.br = function() { + return this.options.xhtml ? '
    ' : '
    '; +}; + +Renderer.prototype.del = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.link = function(href, title, text) { + if (this.options.sanitize) { + try { + var prot = decodeURIComponent(unescape(href)) + .replace(/[^\w:]/g, '') + .toLowerCase(); + } catch (e) { + return ''; + } + if (prot.indexOf('javascript:') === 0) { + return ''; + } + } + var out = '
    '; + return out; +}; + +Renderer.prototype.image = function(href, title, text) { + var out = '' + text + '' : '>'; + return out; +}; + +/** + * Parsing & Compiling + */ + +function Parser(options) { + this.tokens = []; + this.token = null; + this.options = options || marked.defaults; + this.options.renderer = this.options.renderer || new Renderer; + this.renderer = this.options.renderer; + this.renderer.options = this.options; +} + +/** + * Static Parse Method + */ + +Parser.parse = function(src, options, renderer) { + var parser = new Parser(options, renderer); + return parser.parse(src); +}; + +/** + * Parse Loop + */ + +Parser.prototype.parse = function(src) { + this.inline = new InlineLexer(src.links, this.options, this.renderer); + this.tokens = src.reverse(); + + var out = ''; + while (this.next()) { + out += this.tok(); + } + + return out; +}; + +/** + * Next Token + */ + +Parser.prototype.next = function() { + return this.token = this.tokens.pop(); +}; + +/** + * Preview Next Token + */ + +Parser.prototype.peek = function() { + return this.tokens[this.tokens.length - 1] || 0; +}; + +/** + * Parse Text Tokens + */ + +Parser.prototype.parseText = function() { + var body = this.token.text; + + while (this.peek().type === 'text') { + body += '\n' + this.next().text; + } + + return this.inline.output(body); +}; + +/** + * Parse Current Token + */ + +Parser.prototype.tok = function() { + switch (this.token.type) { + case 'space': { + return ''; + } + case 'hr': { + return this.renderer.hr(); + } + case 'heading': { + return this.renderer.heading( + this.inline.output(this.token.text), + this.token.depth, + this.token.text); + } + case 'code': { + return this.renderer.code(this.token.text, + this.token.lang, + this.token.escaped); + } + case 'table': { + var header = '' + , body = '' + , i + , row + , cell + , flags + , j; + + // header + cell = ''; + for (i = 0; i < this.token.header.length; i++) { + flags = { header: true, align: this.token.align[i] }; + cell += this.renderer.tablecell( + this.inline.output(this.token.header[i]), + { header: true, align: this.token.align[i] } + ); + } + header += this.renderer.tablerow(cell); + + for (i = 0; i < this.token.cells.length; i++) { + row = this.token.cells[i]; + + cell = ''; + for (j = 0; j < row.length; j++) { + cell += this.renderer.tablecell( + this.inline.output(row[j]), + { header: false, align: this.token.align[j] } + ); + } + + body += this.renderer.tablerow(cell); + } + return this.renderer.table(header, body); + } + case 'blockquote_start': { + var body = ''; + + while (this.next().type !== 'blockquote_end') { + body += this.tok(); + } + + return this.renderer.blockquote(body); + } + case 'list_start': { + var body = '' + , ordered = this.token.ordered; + + while (this.next().type !== 'list_end') { + body += this.tok(); + } + + return this.renderer.list(body, ordered); + } + case 'list_item_start': { + var body = ''; + + while (this.next().type !== 'list_item_end') { + body += this.token.type === 'text' + ? this.parseText() + : this.tok(); + } + + return this.renderer.listitem(body); + } + case 'loose_item_start': { + var body = ''; + + while (this.next().type !== 'list_item_end') { + body += this.tok(); + } + + return this.renderer.listitem(body); + } + case 'html': { + var html = !this.token.pre && !this.options.pedantic + ? this.inline.output(this.token.text) + : this.token.text; + return this.renderer.html(html); + } + case 'paragraph': { + return this.renderer.paragraph(this.inline.output(this.token.text)); + } + case 'text': { + return this.renderer.paragraph(this.parseText()); + } + } +}; + +/** + * Helpers + */ + +function escape(html, encode) { + return html + .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +function unescape(html) { + return html.replace(/&([#\w]+);/g, function(_, n) { + n = n.toLowerCase(); + if (n === 'colon') return ':'; + if (n.charAt(0) === '#') { + return n.charAt(1) === 'x' + ? String.fromCharCode(parseInt(n.substring(2), 16)) + : String.fromCharCode(+n.substring(1)); + } + return ''; + }); +} + +function replace(regex, opt) { + regex = regex.source; + opt = opt || ''; + return function self(name, val) { + if (!name) return new RegExp(regex, opt); + val = val.source || val; + val = val.replace(/(^|[^\[])\^/g, '$1'); + regex = regex.replace(name, val); + return self; + }; +} + +function noop() {} +noop.exec = noop; + +function merge(obj) { + var i = 1 + , target + , key; + + for (; i < arguments.length; i++) { + target = arguments[i]; + for (key in target) { + if (Object.prototype.hasOwnProperty.call(target, key)) { + obj[key] = target[key]; + } + } + } + + return obj; +} + + +/** + * Marked + */ + +function marked(src, opt, callback) { + if (callback || typeof opt === 'function') { + if (!callback) { + callback = opt; + opt = null; + } + + opt = merge({}, marked.defaults, opt || {}); + + var highlight = opt.highlight + , tokens + , pending + , i = 0; + + try { + tokens = Lexer.lex(src, opt) + } catch (e) { + return callback(e); + } + + pending = tokens.length; + + var done = function() { + var out, err; + + try { + out = Parser.parse(tokens, opt); + } catch (e) { + err = e; + } + + opt.highlight = highlight; + + return err + ? callback(err) + : callback(null, out); + }; + + if (!highlight || highlight.length < 3) { + return done(); + } + + delete opt.highlight; + + if (!pending) return done(); + + for (; i < tokens.length; i++) { + (function(token) { + if (token.type !== 'code') { + return --pending || done(); + } + return highlight(token.text, token.lang, function(err, code) { + if (code == null || code === token.text) { + return --pending || done(); + } + token.text = code; + token.escaped = true; + --pending || done(); + }); + })(tokens[i]); + } + + return; + } + try { + if (opt) opt = merge({}, marked.defaults, opt); + return Parser.parse(Lexer.lex(src, opt), opt); + } catch (e) { + e.message += '\nPlease report this to https://github.com/chjj/marked.'; + if ((opt || marked.defaults).silent) { + return '

    An error occured:

    '
    +        + escape(e.message + '', true)
    +        + '
    '; + } + throw e; + } +} + +/** + * Options + */ + +marked.options = +marked.setOptions = function(opt) { + merge(marked.defaults, opt); + return marked; +}; + +marked.defaults = { + gfm: true, + tables: true, + breaks: false, + pedantic: false, + sanitize: false, + smartLists: false, + silent: false, + highlight: null, + langPrefix: 'lang-', + smartypants: false, + headerPrefix: '', + renderer: new Renderer, + xhtml: false +}; + +/** + * Expose + */ + +marked.Parser = Parser; +marked.parser = Parser.parse; + +marked.Renderer = Renderer; + +marked.Lexer = Lexer; +marked.lexer = Lexer.lex; + +marked.InlineLexer = InlineLexer; +marked.inlineLexer = InlineLexer.output; + +marked.parse = marked; + +if (typeof exports === 'object') { + module.exports = marked; +} else if (typeof define === 'function' && define.amd) { + define(function() { return marked; }); +} else { + this.marked = marked; +} + +}).call(function() { + return this || (typeof window !== 'undefined' ? window : global); +}()); diff --git a/third_party/jsdoc/node_modules/marked/package.json b/third_party/jsdoc/node_modules/marked/package.json new file mode 100644 index 0000000000..bbea53418a --- /dev/null +++ b/third_party/jsdoc/node_modules/marked/package.json @@ -0,0 +1,50 @@ +{ + "name": "marked", + "description": "A markdown parser built for speed", + "author": { + "name": "Christopher Jeffrey" + }, + "version": "0.3.2", + "main": "./lib/marked.js", + "bin": { + "marked": "./bin/marked" + }, + "man": [ + "./man/marked.1" + ], + "preferGlobal": true, + "repository": { + "type": "git", + "url": "git://github.com/chjj/marked.git" + }, + "homepage": "https://github.com/chjj/marked", + "bugs": { + "url": "http://github.com/chjj/marked/issues" + }, + "license": "MIT", + "keywords": [ + "markdown", + "markup", + "html" + ], + "tags": [ + "markdown", + "markup", + "html" + ], + "devDependencies": { + "markdown": "*", + "showdown": "*", + "robotskirt": "*" + }, + "scripts": { + "test": "node test", + "bench": "node test --bench" + }, + "readme": "# marked\n\n> A full-featured markdown parser and compiler, written in JavaScript. Built\n> for speed.\n\n[![NPM version](https://badge.fury.io/js/marked.png)][badge]\n\n## Install\n\n``` bash\nnpm install marked --save\n```\n\n## Usage\n\nMinimal usage:\n\n```js\nvar marked = require('marked');\nconsole.log(marked('I am using __markdown__.'));\n// Outputs:

    I am using markdown.

    \n```\n\nExample setting options with default values:\n\n```js\nvar marked = require('marked');\nmarked.setOptions({\n renderer: new marked.Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: true,\n smartLists: true,\n smartypants: false\n});\n\nconsole.log(marked('I am using __markdown__.'));\n```\n\n## marked(markdownString [,options] [,callback])\n\n### markdownString\n\nType: `string`\n\nString of markdown source to be compiled.\n\n### options\n\nType: `object`\n\nHash of options. Can also be set using the `marked.setOptions` method as seen\nabove.\n\n### callback\n\nType: `function`\n\nFunction called when the `markdownString` has been fully parsed when using\nasync highlighting. If the `options` argument is omitted, this can be used as\nthe second argument.\n\n## Options\n\n### highlight\n\nType: `function`\n\nA function to highlight code blocks. The first example below uses async highlighting with\n[node-pygmentize-bundled][pygmentize], and the second is a synchronous example using\n[highlight.js][highlight]:\n\n```js\nvar marked = require('marked');\n\nvar markdownString = '```js\\n console.log(\"hello\"); \\n```';\n\n// Async highlighting with pygmentize-bundled\nmarked.setOptions({\n highlight: function (code, lang, callback) {\n require('pygmentize-bundled')({ lang: lang, format: 'html' }, code, function (err, result) {\n callback(err, result.toString());\n });\n }\n});\n\n// Using async version of marked\nmarked(markdownString, function (err, content) {\n if (err) throw err;\n console.log(content);\n});\n\n// Synchronous highlighting with highlight.js\nmarked.setOptions({\n highlight: function (code) {\n return require('highlight.js').highlightAuto(code).value;\n }\n});\n\nconsole.log(marked(markdownString));\n```\n\n#### highlight arguments\n\n`code`\n\nType: `string`\n\nThe section of code to pass to the highlighter.\n\n`lang`\n\nType: `string`\n\nThe programming language specified in the code block.\n\n`callback`\n\nType: `function`\n\nThe callback function to call when using an async highlighter.\n\n### renderer\n\nType: `object`\nDefault: `new Renderer()`\n\nAn object containing functions to render tokens to HTML.\n\n#### Overriding renderer methods\n\nThe renderer option allows you to render tokens in a custom manor. Here is an\nexample of overriding the default heading token rendering by adding an embedded anchor tag like on GitHub:\n\n```javascript\nvar marked = require('marked');\nvar renderer = new marked.Renderer();\n\nrenderer.heading = function (text, level) {\n var escapedText = text.toLowerCase().replace(/[^\\w]+/g, '-');\n\n return '
    ' +\n text + '';\n},\n\nconsole.log(marked('# heading+', { renderer: renderer }));\n```\nThis code will output the following HTML:\n```html\n

    \n \n \n \n heading+\n

    \n```\n\n#### Block level renderer methods\n\n- code(*string* code, *string* language)\n- blockquote(*string* quote)\n- html(*string* html)\n- heading(*string* text, *number* level)\n- hr()\n- list(*string* body, *boolean* ordered)\n- listitem(*string* text)\n- paragraph(*string* text)\n- table(*string* header, *string* body)\n- tablerow(*string* content)\n- tablecell(*string* content, *object* flags)\n\n`flags` has the following properties:\n\n```js\n{\n header: true || false,\n align: 'center' || 'left' || 'right'\n}\n```\n\n#### Inline level renderer methods\n\n- strong(*string* text)\n- em(*string* text)\n- codespan(*string* code)\n- br()\n- del(*string* text)\n- link(*string* href, *string* title, *string* text)\n- image(*string* href, *string* title, *string* text)\n\n### gfm\n\nType: `boolean`\nDefault: `true`\n\nEnable [GitHub flavored markdown][gfm].\n\n### tables\n\nType: `boolean`\nDefault: `true`\n\nEnable GFM [tables][tables].\nThis option requires the `gfm` option to be true.\n\n### breaks\n\nType: `boolean`\nDefault: `false`\n\nEnable GFM [line breaks][breaks].\nThis option requires the `gfm` option to be true.\n\n### pedantic\n\nType: `boolean`\nDefault: `false`\n\nConform to obscure parts of `markdown.pl` as much as possible. Don't fix any of\nthe original markdown bugs or poor behavior.\n\n### sanitize\n\nType: `boolean`\nDefault: `false`\n\nSanitize the output. Ignore any HTML that has been input.\n\n### smartLists\n\nType: `boolean`\nDefault: `true`\n\nUse smarter list behavior than the original markdown. May eventually be\ndefault with the old behavior moved into `pedantic`.\n\n### smartypants\n\nType: `boolean`\nDefault: `false`\n\nUse \"smart\" typograhic punctuation for things like quotes and dashes.\n\n## Access to lexer and parser\n\nYou also have direct access to the lexer and parser if you so desire.\n\n``` js\nvar tokens = marked.lexer(text, options);\nconsole.log(marked.parser(tokens));\n```\n\n``` js\nvar lexer = new marked.Lexer(options);\nvar tokens = lexer.lex(text);\nconsole.log(tokens);\nconsole.log(lexer.rules);\n```\n\n## CLI\n\n``` bash\n$ marked -o hello.html\nhello world\n^D\n$ cat hello.html\n

    hello world

    \n```\n\n## Philosophy behind marked\n\nThe point of marked was to create a markdown compiler where it was possible to\nfrequently parse huge chunks of markdown without having to worry about\ncaching the compiled output somehow...or blocking for an unnecesarily long time.\n\nmarked is very concise and still implements all markdown features. It is also\nnow fully compatible with the client-side.\n\nmarked more or less passes the official markdown test suite in its\nentirety. This is important because a surprising number of markdown compilers\ncannot pass more than a few tests. It was very difficult to get marked as\ncompliant as it is. It could have cut corners in several areas for the sake\nof performance, but did not in order to be exactly what you expect in terms\nof a markdown rendering. In fact, this is why marked could be considered at a\ndisadvantage in the benchmarks above.\n\nAlong with implementing every markdown feature, marked also implements [GFM\nfeatures][gfmf].\n\n## Benchmarks\n\nnode v0.8.x\n\n``` bash\n$ node test --bench\nmarked completed in 3411ms.\nmarked (gfm) completed in 3727ms.\nmarked (pedantic) completed in 3201ms.\nrobotskirt completed in 808ms.\nshowdown (reuse converter) completed in 11954ms.\nshowdown (new converter) completed in 17774ms.\nmarkdown-js completed in 17191ms.\n```\n\n__Marked is now faster than Discount, which is written in C.__\n\nFor those feeling skeptical: These benchmarks run the entire markdown test suite 1000 times. The test suite tests every feature. It doesn't cater to specific aspects.\n\n### Pro level\n\nYou also have direct access to the lexer and parser if you so desire.\n\n``` js\nvar tokens = marked.lexer(text, options);\nconsole.log(marked.parser(tokens));\n```\n\n``` js\nvar lexer = new marked.Lexer(options);\nvar tokens = lexer.lex(text);\nconsole.log(tokens);\nconsole.log(lexer.rules);\n```\n\n``` bash\n$ node\n> require('marked').lexer('> i am using marked.')\n[ { type: 'blockquote_start' },\n { type: 'paragraph',\n text: 'i am using marked.' },\n { type: 'blockquote_end' },\n links: {} ]\n```\n\n## Running Tests & Contributing\n\nIf you want to submit a pull request, make sure your changes pass the test\nsuite. If you're adding a new feature, be sure to add your own test.\n\nThe marked test suite is set up slightly strangely: `test/new` is for all tests\nthat are not part of the original markdown.pl test suite (this is where your\ntest should go if you make one). `test/original` is only for the original\nmarkdown.pl tests. `test/tests` houses both types of tests after they have been\ncombined and moved/generated by running `node test --fix` or `marked --test\n--fix`.\n\nIn other words, if you have a test to add, add it to `test/new/` and then\nregenerate the tests with `node test --fix`. Commit the result. If your test\nuses a certain feature, for example, maybe it assumes GFM is *not* enabled, you\ncan add `.nogfm` to the filename. So, `my-test.text` becomes\n`my-test.nogfm.text`. You can do this with any marked option. Say you want\nline breaks and smartypants enabled, your filename should be:\n`my-test.breaks.smartypants.text`.\n\nTo run the tests:\n\n``` bash\ncd marked/\nnode test\n```\n\n### Contribution and License Agreement\n\nIf you contribute code to this project, you are implicitly allowing your code\nto be distributed under the MIT license. You are also implicitly verifying that\nall code is your original work. ``\n\n## License\n\nCopyright (c) 2011-2014, Christopher Jeffrey. (MIT License)\n\nSee LICENSE for more info.\n\n[gfm]: https://help.github.com/articles/github-flavored-markdown\n[gfmf]: http://github.github.com/github-flavored-markdown/\n[pygmentize]: https://github.com/rvagg/node-pygmentize-bundled\n[highlight]: https://github.com/isagalaev/highlight.js\n[badge]: http://badge.fury.io/js/marked\n[tables]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#wiki-tables\n[breaks]: https://help.github.com/articles/github-flavored-markdown#newlines\n", + "readmeFilename": "README.md", + "_id": "marked@0.3.2", + "_shasum": "015db158864438f24a64bdd61a0428b418706d09", + "_from": "marked@0.3.2", + "_resolved": "https://registry.npmjs.org/marked/-/marked-0.3.2.tgz" +} diff --git a/third_party/jsdoc/node_modules/strip-json-comments/package.json b/third_party/jsdoc/node_modules/strip-json-comments/package.json new file mode 100644 index 0000000000..c55dc5f2a1 --- /dev/null +++ b/third_party/jsdoc/node_modules/strip-json-comments/package.json @@ -0,0 +1,61 @@ +{ + "name": "strip-json-comments", + "version": "0.1.3", + "description": "Strip comments from JSON. Lets you use comments in your JSON files!", + "keywords": [ + "json", + "strip", + "remove", + "delete", + "trim", + "comments", + "multiline", + "parse", + "config", + "configuration", + "conf", + "settings", + "util", + "env", + "environment", + "cli", + "bin" + ], + "license": "MIT", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "files": [ + "cli.js", + "strip-json-comments.js" + ], + "main": "strip-json-comments", + "bin": { + "strip-json-comments": "cli.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/sindresorhus/strip-json-comments" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "mocha": "*" + }, + "engines": { + "node": ">=0.8.0" + }, + "readme": "# strip-json-comments [![Build Status](https://travis-ci.org/sindresorhus/strip-json-comments.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-json-comments)\n\n> Strip comments from JSON. Lets you use comments in your JSON files!\n\nThis is now possible:\n\n```js\n{\n\t// rainbows\n\t\"unicorn\": /* ❤ */ \"cake\"\n}\n```\n\nIt will remove single-line comments `//` and mult-line comments `/**/`.\n\nAlso available as a [gulp](https://github.com/sindresorhus/gulp-strip-json-comments)/[grunt](https://github.com/sindresorhus/grunt-strip-json-comments)/[broccoli](https://github.com/sindresorhus/broccoli-strip-json-comments) plugin and a [require hook](https://github.com/uTest/autostrip-json-comments).\n\n\n*There's already [json-comments](https://npmjs.org/package/json-comments), but it's only for Node.js and uses a naive regex to strip comments which fails on simple cases like `{\"a\":\"//\"}`. This module however parses out the comments.*\n\n\n## Install\n\n```sh\n$ npm install --save strip-json-comments\n```\n\n```sh\n$ bower install --save strip-json-comments\n```\n\n```sh\n$ component install sindresorhus/strip-json-comments\n```\n\n\n## Usage\n\n```js\nvar json = '{/*rainbows*/\"unicorn\":\"cake\"}';\nJSON.parse(stripJsonComments(json));\n//=> {unicorn: 'cake'}\n```\n\n\n## API\n\n### stripJsonComments(input)\n\n#### input\n\nType: `string`\n\nAccepts a string with JSON and returns a string without comments.\n\n\n## CLI\n\n```sh\n$ npm install --global strip-json-comments\n```\n\n```sh\n$ strip-json-comments --help\n\nstrip-json-comments > \n# or\ncat | strip-json-comments > \n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", + "readmeFilename": "readme.md", + "bugs": { + "url": "https://github.com/sindresorhus/strip-json-comments/issues" + }, + "homepage": "https://github.com/sindresorhus/strip-json-comments", + "_id": "strip-json-comments@0.1.3", + "_shasum": "164c64e370a8a3cc00c9e01b539e569823f0ee54", + "_from": "strip-json-comments@0.1.3", + "_resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz" +} diff --git a/third_party/jsdoc/node_modules/strip-json-comments/strip-json-comments.js b/third_party/jsdoc/node_modules/strip-json-comments/strip-json-comments.js new file mode 100644 index 0000000000..2e7fdef27f --- /dev/null +++ b/third_party/jsdoc/node_modules/strip-json-comments/strip-json-comments.js @@ -0,0 +1,64 @@ +/*! + strip-json-comments + Strip comments from JSON. Lets you use comments in your JSON files! + https://github.com/sindresorhus/strip-json-comments + by Sindre Sorhus + MIT License +*/ +(function () { + 'use strict'; + + function stripJsonComments(str) { + var currentChar; + var nextChar; + var insideString = false; + var insideComment = false; + var ret = ''; + + for (var i = 0; i < str.length; i++) { + currentChar = str[i]; + nextChar = str[i + 1]; + + if (!insideComment && str[i - 1] !== '\\' && currentChar === '"') { + insideString = !insideString; + } + + if (insideString) { + ret += currentChar; + continue; + } + + if (!insideComment && currentChar + nextChar === '//') { + insideComment = 'single'; + i++; + } else if (insideComment === 'single' && currentChar + nextChar === '\r\n') { + insideComment = false; + i++; + } else if (insideComment === 'single' && currentChar === '\n') { + insideComment = false; + } else if (!insideComment && currentChar + nextChar === '/*') { + insideComment = 'multi'; + i++; + continue; + } else if (insideComment === 'multi' && currentChar + nextChar === '*/') { + insideComment = false; + i++; + continue; + } + + if (insideComment) { + continue; + } + + ret += currentChar; + } + + return ret; + } + + if (typeof module !== 'undefined' && module.exports) { + module.exports = stripJsonComments; + } else { + window.stripJsonComments = stripJsonComments; + } +})(); diff --git a/third_party/jsdoc/node_modules/taffydb/README.md b/third_party/jsdoc/node_modules/taffydb/README.md new file mode 100644 index 0000000000..52d14a3ae4 --- /dev/null +++ b/third_party/jsdoc/node_modules/taffydb/README.md @@ -0,0 +1 @@ +See [http://taffydb.com](http://taffydb.com). \ No newline at end of file diff --git a/third_party/jsdoc/node_modules/taffydb/package.json b/third_party/jsdoc/node_modules/taffydb/package.json new file mode 100644 index 0000000000..1165f2013c --- /dev/null +++ b/third_party/jsdoc/node_modules/taffydb/package.json @@ -0,0 +1,21 @@ +{ + "name": "taffydb", + "version": "2.6.2", + "description": "An open-source library that brings database features into your JavaScript applications.", + "main": "taffy.js", + "repository": { + "type": "git", + "url": "git://github.com/hegemonic/taffydb.git" + }, + "license": "BSD", + "readme": "See [http://taffydb.com](http://taffydb.com).", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/hegemonic/taffydb/issues" + }, + "homepage": "https://github.com/hegemonic/taffydb", + "_id": "taffydb@2.6.2", + "_shasum": "3c549d2f5712d7d1d109ad6bb1a4084f1b7add4e", + "_from": "https://github.com/hegemonic/taffydb/tarball/master", + "_resolved": "https://github.com/hegemonic/taffydb/tarball/master" +} diff --git a/third_party/jsdoc/node_modules/taffydb/taffy-test.html b/third_party/jsdoc/node_modules/taffydb/taffy-test.html new file mode 100644 index 0000000000..c4df78b489 --- /dev/null +++ b/third_party/jsdoc/node_modules/taffydb/taffy-test.html @@ -0,0 +1,84 @@ + + + + + taffy test + + + + + + +
    +Please open your javascript console to see test results +
    + + + + diff --git a/third_party/jsdoc/node_modules/taffydb/taffy.js b/third_party/jsdoc/node_modules/taffydb/taffy.js new file mode 100644 index 0000000000..b7ad88cdf9 --- /dev/null +++ b/third_party/jsdoc/node_modules/taffydb/taffy.js @@ -0,0 +1,1973 @@ +/* + + Software License Agreement (BSD License) + http://taffydb.com + Copyright (c) + All rights reserved. + + + Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following condition is met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + */ + +/*jslint browser : true, continue : true, + devel : true, indent : 2, maxerr : 500, + newcap : true, nomen : true, plusplus : true, + regexp : true, sloppy : true, vars : false, + white : true +*/ + +// BUILD 193d48d, modified by mmikowski to pass jslint + +// Setup TAFFY name space to return an object with methods +var TAFFY, exports, T; +(function () { + 'use strict'; + var + typeList, makeTest, idx, typeKey, + version, TC, idpad, cmax, + API, protectJSON, each, eachin, + isIndexable, returnFilter, runFilters, + numcharsplit, orderByCol, run + ; + + + if ( ! TAFFY ){ + // TC = Counter for Taffy DBs on page, used for unique IDs + // cmax = size of charnumarray conversion cache + // idpad = zeros to pad record IDs with + version = '2.6.2'; // proposed mmikowski 2012-08-06 + TC = 1; + idpad = '000000'; + cmax = 1000; + API = {}; + + protectJSON = function ( t ) { + // **************************************** + // * + // * Takes: a variable + // * Returns: the variable if object/array or the parsed variable if JSON + // * + // **************************************** + if ( TAFFY.isArray( t ) || TAFFY.isObject( t ) ){ + return t; + } + else { + return JSON.parse( t ); + } + }; + + each = function ( a, fun, u ) { + var r, i, x, y; + // **************************************** + // * + // * Takes: + // * a = an object/value or an array of objects/values + // * f = a function + // * u = optional flag to describe how to handle undefined values + // in array of values. True: pass them to the functions, + // False: skip. Default False; + // * Purpose: Used to loop over arrays + // * + // **************************************** + if ( a && ((T.isArray( a ) && a.length === 1) || (!T.isArray( a ))) ){ + fun( (T.isArray( a )) ? a[0] : a, 0 ); + } + else { + for ( r, i, x = 0, a = (T.isArray( a )) ? a : [a], y = a.length; + x < y; x++ ) + { + i = a[x]; + if ( !T.isUndefined( i ) || (u || false) ){ + r = fun( i, x ); + if ( r === T.EXIT ){ + break; + } + + } + } + } + }; + + eachin = function ( o, fun ) { + // **************************************** + // * + // * Takes: + // * o = an object + // * f = a function + // * Purpose: Used to loop over objects + // * + // **************************************** + var x = 0, r, i; + + for ( i in o ){ + if ( o.hasOwnProperty( i ) ){ + r = fun( o[i], i, x++ ); + if ( r === T.EXIT ){ + break; + } + } + } + + }; + + API.extend = function ( m, f ) { + // **************************************** + // * + // * Takes: method name, function + // * Purpose: Add a custom method to the API + // * + // **************************************** + API[m] = function () { + return f.apply( this, arguments ); + }; + }; + + isIndexable = function ( f ) { + var i; + // Check to see if record ID + if ( T.isString( f ) && /[t][0-9]*[r][0-9]*/i.test( f ) ){ + return true; + } + // Check to see if record + if ( T.isObject( f ) && f.___id && f.___s ){ + return true; + } + + // Check to see if array of indexes + if ( T.isArray( f ) ){ + i = true; + each( f, function ( r ) { + if ( !isIndexable( r ) ){ + i = false; + + return TAFFY.EXIT; + } + }); + return i; + } + + return false; + }; + + runFilters = function ( r, filter ) { + // **************************************** + // * + // * Takes: takes a record and a collection of filters + // * Returns: true if the record matches, false otherwise + // **************************************** + var match = true; + + + each( filter, function ( mf ) { + switch ( T.typeOf( mf ) ){ + case 'function': + // run function + if ( !mf.apply( r ) ){ + match = false; + return TAFFY.EXIT; + } + break; + case 'array': + // loop array and treat like a SQL or + match = (mf.length === 1) ? (runFilters( r, mf[0] )) : + (mf.length === 2) ? (runFilters( r, mf[0] ) || + runFilters( r, mf[1] )) : + (mf.length === 3) ? (runFilters( r, mf[0] ) || + runFilters( r, mf[1] ) || runFilters( r, mf[2] )) : + (mf.length === 4) ? (runFilters( r, mf[0] ) || + runFilters( r, mf[1] ) || runFilters( r, mf[2] ) || + runFilters( r, mf[3] )) : false; + if ( mf.length > 4 ){ + each( mf, function ( f ) { + if ( runFilters( r, f ) ){ + match = true; + } + }); + } + break; + } + }); + + return match; + }; + + returnFilter = function ( f ) { + // **************************************** + // * + // * Takes: filter object + // * Returns: a filter function + // * Purpose: Take a filter object and return a function that can be used to compare + // * a TaffyDB record to see if the record matches a query + // **************************************** + var nf = []; + if ( T.isString( f ) && /[t][0-9]*[r][0-9]*/i.test( f ) ){ + f = { ___id : f }; + } + if ( T.isArray( f ) ){ + // if we are working with an array + + each( f, function ( r ) { + // loop the array and return a filter func for each value + nf.push( returnFilter( r ) ); + }); + // now build a func to loop over the filters and return true if ANY of the filters match + // This handles logical OR expressions + f = function () { + var that = this, match = false; + each( nf, function ( f ) { + if ( runFilters( that, f ) ){ + match = true; + } + }); + return match; + }; + return f; + + } + // if we are dealing with an Object + if ( T.isObject( f ) ){ + if ( T.isObject( f ) && f.___id && f.___s ){ + f = { ___id : f.___id }; + } + + // Loop over each value on the object to prep match type and match value + eachin( f, function ( v, i ) { + + // default match type to IS/Equals + if ( !T.isObject( v ) ){ + v = { + 'is' : v + }; + } + // loop over each value on the value object - if any + eachin( v, function ( mtest, s ) { + // s = match type, e.g. is, hasAll, like, etc + var c = [], looper; + + // function to loop and apply filter + looper = (s === 'hasAll') ? + function ( mtest, func ) { + func( mtest ); + } : each; + + // loop over each test + looper( mtest, function ( mtest ) { + + // su = match success + // f = match false + var su = true, f = false, matchFunc; + + + // push a function onto the filter collection to do the matching + matchFunc = function () { + + // get the value from the record + var + mvalue = this[i], + eqeq = '==', + bangeq = '!=', + eqeqeq = '===', + lt = '<', + gt = '>', + lteq = '<=', + gteq = '>=', + bangeqeq = '!==', + r + ; + + + if ( (s.indexOf( '!' ) === 0) && s !== bangeq && + s !== bangeqeq ) + { + // if the filter name starts with ! as in '!is' then reverse the match logic and remove the ! + su = false; + s = s.substring( 1, s.length ); + } + // get the match results based on the s/match type + /*jslint eqeq : true */ + r = ( + (s === 'regex') ? (mtest.test( mvalue )) : (s === 'lt' || s === lt) + ? (mvalue < mtest) : (s === 'gt' || s === gt) + ? (mvalue > mtest) : (s === 'lte' || s === lteq) + ? (mvalue <= mtest) : (s === 'gte' || s === gteq) + ? (mvalue >= mtest) : (s === 'left') + ? (mvalue.indexOf( mtest ) === 0) : (s === 'leftnocase') + ? (mvalue.toLowerCase().indexOf( mtest.toLowerCase() ) + === 0) : (s === 'right') + ? (mvalue.substring( (mvalue.length - mtest.length) ) + === mtest) : (s === 'rightnocase') + ? (mvalue.toLowerCase().substring( + (mvalue.length - mtest.length) ) === mtest.toLowerCase()) + : (s === 'like') + ? (mvalue.indexOf( mtest ) >= 0) : (s === 'likenocase') + ? (mvalue.toLowerCase().indexOf(mtest.toLowerCase()) >= 0) + : (s === eqeqeq || s === 'is') + ? (mvalue === mtest) : (s === eqeq) + ? (mvalue == mtest) : (s === bangeqeq) + ? (mvalue !== mtest) : (s === bangeq) + ? (mvalue != mtest) : (s === 'isnocase') + ? (mvalue.toLowerCase + ? mvalue.toLowerCase() === mtest.toLowerCase() + : mvalue === mtest) : (s === 'has') + ? (T.has( mvalue, mtest )) : (s === 'hasall') + ? (T.hasAll( mvalue, mtest )) : ( + s.indexOf( 'is' ) === -1 + && !TAFFY.isNull( mvalue ) + && !TAFFY.isUndefined( mvalue ) + && !TAFFY.isObject( mtest ) + && !TAFFY.isArray( mtest ) + ) + ? (mtest === mvalue[s]) + : (T[s] && T.isFunction( T[s] ) + && s.indexOf( 'is' ) === 0) + ? T[s]( mvalue ) === mtest + : (T[s] && T.isFunction( T[s] )) + ? T[s]( mvalue, mtest ) : (false) + ); + /*jslint eqeq : false */ + r = (r && !su) ? false : (!r && !su) ? true : r; + + return r; + }; + c.push( matchFunc ); + + }); + // if only one filter in the collection push it onto the filter list without the array + if ( c.length === 1 ){ + + nf.push( c[0] ); + } + else { + // else build a function to loop over all the filters and return true only if ALL match + // this is a logical AND + nf.push( function () { + var that = this, match = false; + each( c, function ( f ) { + if ( f.apply( that ) ){ + match = true; + } + }); + return match; + }); + } + }); + }); + // finally return a single function that wraps all the other functions and will run a query + // where all functions have to return true for a record to appear in a query result + f = function () { + var that = this, match = true; + // faster if less than 4 functions + match = (nf.length === 1 && !nf[0].apply( that )) ? false : + (nf.length === 2 && + (!nf[0].apply( that ) || !nf[1].apply( that ))) ? false : + (nf.length === 3 && + (!nf[0].apply( that ) || !nf[1].apply( that ) || + !nf[2].apply( that ))) ? false : + (nf.length === 4 && + (!nf[0].apply( that ) || !nf[1].apply( that ) || + !nf[2].apply( that ) || !nf[3].apply( that ))) ? false + : true; + if ( nf.length > 4 ){ + each( nf, function ( f ) { + if ( !runFilters( that, f ) ){ + match = false; + } + }); + } + return match; + }; + return f; + } + + // if function + if ( T.isFunction( f ) ){ + return f; + } + }; + + orderByCol = function ( ar, o ) { + // **************************************** + // * + // * Takes: takes an array and a sort object + // * Returns: the array sorted + // * Purpose: Accept filters such as "[col], [col2]" or "[col] desc" and sort on those columns + // * + // **************************************** + + var sortFunc = function ( a, b ) { + // function to pass to the native array.sort to sort an array + var r = 0; + + T.each( o, function ( sd ) { + // loop over the sort instructions + // get the column name + var o, col, dir, c, d; + o = sd.split( ' ' ); + col = o[0]; + + // get the direction + dir = (o.length === 1) ? "logical" : o[1]; + + + if ( dir === 'logical' ){ + // if dir is logical than grab the charnum arrays for the two values we are looking at + c = numcharsplit( a[col] ); + d = numcharsplit( b[col] ); + // loop over the charnumarrays until one value is higher than the other + T.each( (c.length <= d.length) ? c : d, function ( x, i ) { + if ( c[i] < d[i] ){ + r = -1; + return TAFFY.EXIT; + } + else if ( c[i] > d[i] ){ + r = 1; + return TAFFY.EXIT; + } + } ); + } + else if ( dir === 'logicaldesc' ){ + // if logicaldesc than grab the charnum arrays for the two values we are looking at + c = numcharsplit( a[col] ); + d = numcharsplit( b[col] ); + // loop over the charnumarrays until one value is lower than the other + T.each( (c.length <= d.length) ? c : d, function ( x, i ) { + if ( c[i] > d[i] ){ + r = -1; + return TAFFY.EXIT; + } + else if ( c[i] < d[i] ){ + r = 1; + return TAFFY.EXIT; + } + } ); + } + else if ( dir === 'asec' && a[col] < b[col] ){ + // if asec - default - check to see which is higher + r = -1; + return T.EXIT; + } + else if ( dir === 'asec' && a[col] > b[col] ){ + // if asec - default - check to see which is higher + r = 1; + return T.EXIT; + } + else if ( dir === 'desc' && a[col] > b[col] ){ + // if desc check to see which is lower + r = -1; + return T.EXIT; + + } + else if ( dir === 'desc' && a[col] < b[col] ){ + // if desc check to see which is lower + r = 1; + return T.EXIT; + + } + // if r is still 0 and we are doing a logical sort than look to see if one array is longer than the other + if ( r === 0 && dir === 'logical' && c.length < d.length ){ + r = -1; + } + else if ( r === 0 && dir === 'logical' && c.length > d.length ){ + r = 1; + } + else if ( r === 0 && dir === 'logicaldesc' && c.length > d.length ){ + r = -1; + } + else if ( r === 0 && dir === 'logicaldesc' && c.length < d.length ){ + r = 1; + } + + if ( r !== 0 ){ + return T.EXIT; + } + + + } ); + return r; + }; + // call the sort function and return the newly sorted array + return (ar && ar.push) ? ar.sort( sortFunc ) : ar; + + + }; + + // **************************************** + // * + // * Takes: a string containing numbers and letters and turn it into an array + // * Returns: return an array of numbers and letters + // * Purpose: Used for logical sorting. String Example: 12ABC results: [12,'ABC'] + // **************************************** + (function () { + // creates a cache for numchar conversions + var cache = {}, cachcounter = 0; + // creates the numcharsplit function + numcharsplit = function ( thing ) { + // if over 1000 items exist in the cache, clear it and start over + if ( cachcounter > cmax ){ + cache = {}; + cachcounter = 0; + } + + // if a cache can be found for a numchar then return its array value + return cache['_' + thing] || (function () { + // otherwise do the conversion + // make sure it is a string and setup so other variables + var nthing = String( thing ), + na = [], + rv = '_', + rt = '', + x, xx, c; + + // loop over the string char by char + for ( x = 0, xx = nthing.length; x < xx; x++ ){ + // take the char at each location + c = nthing.charCodeAt( x ); + // check to see if it is a valid number char and append it to the array. + // if last char was a string push the string to the charnum array + if ( ( c >= 48 && c <= 57 ) || c === 46 ){ + if ( rt !== 'n' ){ + rt = 'n'; + na.push( rv.toLowerCase() ); + rv = ''; + } + rv = rv + nthing.charAt( x ); + } + else { + // check to see if it is a valid string char and append to string + // if last char was a number push the whole number to the charnum array + if ( rt !== 's' ){ + rt = 's'; + na.push( parseFloat( rv ) ); + rv = ''; + } + rv = rv + nthing.charAt( x ); + } + } + // once done, push the last value to the charnum array and remove the first uneeded item + na.push( (rt === 'n') ? parseFloat( rv ) : rv.toLowerCase() ); + na.shift(); + // add to cache + cache['_' + thing] = na; + cachcounter++; + // return charnum array + return na; + }()); + }; + }()); + + // **************************************** + // * + // * Runs a query + // **************************************** + + + run = function () { + this.context( { + results : this.getDBI().query( this.context() ) + }); + + }; + + API.extend( 'filter', function () { + // **************************************** + // * + // * Takes: takes unlimited filter objects as arguments + // * Returns: method collection + // * Purpose: Take filters as objects and cache functions for later lookup when a query is run + // **************************************** + var + nc = TAFFY.mergeObj( this.context(), { run : null } ), + nq = [] + ; + each( nc.q, function ( v ) { + nq.push( v ); + }); + nc.q = nq; + // Hadnle passing of ___ID or a record on lookup. + each( arguments, function ( f ) { + nc.q.push( returnFilter( f ) ); + nc.filterRaw.push( f ); + }); + + return this.getroot( nc ); + }); + + API.extend( 'order', function ( o ) { + // **************************************** + // * + // * Purpose: takes a string and creates an array of order instructions to be used with a query + // **************************************** + + o = o.split( ',' ); + var x = [], nc; + + each( o, function ( r ) { + x.push( r.replace( /^\s*/, '' ).replace( /\s*$/, '' ) ); + }); + + nc = TAFFY.mergeObj( this.context(), {sort : null} ); + nc.order = x; + + return this.getroot( nc ); + }); + + API.extend( 'limit', function ( n ) { + // **************************************** + // * + // * Purpose: takes a limit number to limit the number of rows returned by a query. Will update the results + // * of a query + // **************************************** + var nc = TAFFY.mergeObj( this.context(), {}), + limitedresults + ; + + nc.limit = n; + + if ( nc.run && nc.sort ){ + limitedresults = []; + each( nc.results, function ( i, x ) { + if ( (x + 1) > n ){ + return TAFFY.EXIT; + } + limitedresults.push( i ); + }); + nc.results = limitedresults; + } + + return this.getroot( nc ); + }); + + API.extend( 'start', function ( n ) { + // **************************************** + // * + // * Purpose: takes a limit number to limit the number of rows returned by a query. Will update the results + // * of a query + // **************************************** + var nc = TAFFY.mergeObj( this.context(), {} ), + limitedresults + ; + + nc.start = n; + + if ( nc.run && nc.sort && !nc.limit ){ + limitedresults = []; + each( nc.results, function ( i, x ) { + if ( (x + 1) > n ){ + limitedresults.push( i ); + } + }); + nc.results = limitedresults; + } + else { + nc = TAFFY.mergeObj( this.context(), {run : null, start : n} ); + } + + return this.getroot( nc ); + }); + + API.extend( 'update', function ( arg0, arg1, arg2 ) { + // **************************************** + // * + // * Takes: a object and passes it off DBI update method for all matched records + // **************************************** + var runEvent = true, o = {}, args = arguments, that; + if ( TAFFY.isString( arg0 ) && + (arguments.length === 2 || arguments.length === 3) ) + { + o[arg0] = arg1; + if ( arguments.length === 3 ){ + runEvent = arg2; + } + } + else { + o = arg0; + if ( args.length === 2 ){ + runEvent = arg1; + } + } + + that = this; + run.call( this ); + each( this.context().results, function ( r ) { + var c = o; + if ( TAFFY.isFunction( c ) ){ + c = c.apply( TAFFY.mergeObj( r, {} ) ); + } + else { + if ( T.isFunction( c ) ){ + c = c( TAFFY.mergeObj( r, {} ) ); + } + } + if ( TAFFY.isObject( c ) ){ + that.getDBI().update( r.___id, c, runEvent ); + } + }); + if ( this.context().results.length ){ + this.context( { run : null }); + } + return this; + }); + API.extend( 'remove', function ( runEvent ) { + // **************************************** + // * + // * Purpose: removes records from the DB via the remove and removeCommit DBI methods + // **************************************** + var that = this, c = 0; + run.call( this ); + each( this.context().results, function ( r ) { + that.getDBI().remove( r.___id ); + c++; + }); + if ( this.context().results.length ){ + this.context( { + run : null + }); + that.getDBI().removeCommit( runEvent ); + } + + return c; + }); + + + API.extend( 'count', function () { + // **************************************** + // * + // * Returns: The length of a query result + // **************************************** + run.call( this ); + return this.context().results.length; + }); + + API.extend( 'callback', function ( f, delay ) { + // **************************************** + // * + // * Returns null; + // * Runs a function on return of run.call + // **************************************** + if ( f ){ + var that = this; + setTimeout( function () { + run.call( that ); + f.call( that.getroot( that.context() ) ); + }, delay || 0 ); + } + + + return null; + }); + + API.extend( 'get', function () { + // **************************************** + // * + // * Returns: An array of all matching records + // **************************************** + run.call( this ); + return this.context().results; + }); + + API.extend( 'stringify', function () { + // **************************************** + // * + // * Returns: An JSON string of all matching records + // **************************************** + return JSON.stringify( this.get() ); + }); + API.extend( 'first', function () { + // **************************************** + // * + // * Returns: The first matching record + // **************************************** + run.call( this ); + return this.context().results[0] || false; + }); + API.extend( 'last', function () { + // **************************************** + // * + // * Returns: The last matching record + // **************************************** + run.call( this ); + return this.context().results[this.context().results.length - 1] || + false; + }); + + + API.extend( 'sum', function () { + // **************************************** + // * + // * Takes: column to sum up + // * Returns: Sums the values of a column + // **************************************** + var total = 0, that = this; + run.call( that ); + each( arguments, function ( c ) { + each( that.context().results, function ( r ) { + total = total + r[c]; + }); + }); + return total; + }); + + API.extend( 'min', function ( c ) { + // **************************************** + // * + // * Takes: column to find min + // * Returns: the lowest value + // **************************************** + var lowest = null; + run.call( this ); + each( this.context().results, function ( r ) { + if ( lowest === null || r[c] < lowest ){ + lowest = r[c]; + } + }); + return lowest; + }); + + // Taffy innerJoin Extension (OCD edition) + // ======================================= + // + // How to Use + // ********** + // + // left_table.innerJoin( right_table, condition1 <,... conditionN> ) + // + // A condition can take one of 2 forms: + // + // 1. An ARRAY with 2 or 3 values: + // A column name from the left table, an optional comparison string, + // and column name from the right table. The condition passes if the test + // indicated is true. If the condition string is omitted, '===' is assumed. + // EXAMPLES: [ 'last_used_time', '>=', 'current_use_time' ], [ 'user_id','id' ] + // + // 2. A FUNCTION: + // The function receives a left table row and right table row during the + // cartesian join. If the function returns true for the rows considered, + // the merged row is included in the result set. + // EXAMPLE: function (l,r){ return l.name === r.label; } + // + // Conditions are considered in the order they are presented. Therefore the best + // performance is realized when the least expensive and highest prune-rate + // conditions are placed first, since if they return false Taffy skips any + // further condition tests. + // + // Other notes + // *********** + // + // This code passes jslint with the exception of 2 warnings about + // the '==' and '!=' lines. We can't do anything about that short of + // deleting the lines. + // + // Credits + // ******* + // + // Heavily based upon the work of Ian Toltz. + // Revisions to API by Michael Mikowski. + // Code convention per standards in http://manning.com/mikowski + (function () { + var innerJoinFunction = (function () { + var fnCompareList, fnCombineRow, fnMain; + + fnCompareList = function ( left_row, right_row, arg_list ) { + var data_lt, data_rt, op_code, error; + + if ( arg_list.length === 2 ){ + data_lt = left_row[arg_list[0]]; + op_code = '==='; + data_rt = right_row[arg_list[1]]; + } + else { + data_lt = left_row[arg_list[0]]; + op_code = arg_list[1]; + data_rt = right_row[arg_list[2]]; + } + + /*jslint eqeq : true */ + switch ( op_code ){ + case '===' : + return data_lt === data_rt; + case '!==' : + return data_lt !== data_rt; + case '<' : + return data_lt < data_rt; + case '>' : + return data_lt > data_rt; + case '<=' : + return data_lt <= data_rt; + case '>=' : + return data_lt >= data_rt; + case '==' : + return data_lt == data_rt; + case '!=' : + return data_lt != data_rt; + default : + throw String( op_code ) + ' is not supported'; + } + // 'jslint eqeq : false' here results in + // "Unreachable '/*jslint' after 'return'". + // We don't need it though, as the rule exception + // is discarded at the end of this functional scope + }; + + fnCombineRow = function ( left_row, right_row ) { + var out_map = {}, i, prefix; + + for ( i in left_row ){ + if ( left_row.hasOwnProperty( i ) ){ + out_map[i] = left_row[i]; + } + } + for ( i in right_row ){ + if ( right_row.hasOwnProperty( i ) && i !== '___id' && + i !== '___s' ) + { + prefix = !TAFFY.isUndefined( out_map[i] ) ? 'right_' : ''; + out_map[prefix + String( i ) ] = right_row[i]; + } + } + return out_map; + }; + + fnMain = function ( table ) { + var + right_table, i, + arg_list = arguments, + arg_length = arg_list.length, + result_list = [] + ; + + if ( typeof table.filter !== 'function' ){ + if ( table.TAFFY ){ right_table = table(); } + else { + throw 'TAFFY DB or result not supplied'; + } + } + else { right_table = table; } + + this.context( { + results : this.getDBI().query( this.context() ) + } ); + + TAFFY.each( this.context().results, function ( left_row ) { + right_table.each( function ( right_row ) { + var arg_data, is_ok = true; + CONDITION: + for ( i = 1; i < arg_length; i++ ){ + arg_data = arg_list[i]; + if ( typeof arg_data === 'function' ){ + is_ok = arg_data( left_row, right_row ); + } + else if ( typeof arg_data === 'object' && arg_data.length ){ + is_ok = fnCompareList( left_row, right_row, arg_data ); + } + else { + is_ok = false; + } + + if ( !is_ok ){ break CONDITION; } // short circuit + } + + if ( is_ok ){ + result_list.push( fnCombineRow( left_row, right_row ) ); + } + } ); + } ); + return TAFFY( result_list )(); + }; + + return fnMain; + }()); + + API.extend( 'join', innerJoinFunction ); + }()); + + API.extend( 'max', function ( c ) { + // **************************************** + // * + // * Takes: column to find max + // * Returns: the highest value + // **************************************** + var highest = null; + run.call( this ); + each( this.context().results, function ( r ) { + if ( highest === null || r[c] > highest ){ + highest = r[c]; + } + }); + return highest; + }); + + API.extend( 'select', function () { + // **************************************** + // * + // * Takes: columns to select values into an array + // * Returns: array of values + // * Note if more than one column is given an array of arrays is returned + // **************************************** + + var ra = [], args = arguments; + run.call( this ); + if ( arguments.length === 1 ){ + + each( this.context().results, function ( r ) { + + ra.push( r[args[0]] ); + }); + } + else { + each( this.context().results, function ( r ) { + var row = []; + each( args, function ( c ) { + row.push( r[c] ); + }); + ra.push( row ); + }); + } + return ra; + }); + API.extend( 'distinct', function () { + // **************************************** + // * + // * Takes: columns to select unique alues into an array + // * Returns: array of values + // * Note if more than one column is given an array of arrays is returned + // **************************************** + var ra = [], args = arguments; + run.call( this ); + if ( arguments.length === 1 ){ + + each( this.context().results, function ( r ) { + var v = r[args[0]], dup = false; + each( ra, function ( d ) { + if ( v === d ){ + dup = true; + return TAFFY.EXIT; + } + }); + if ( !dup ){ + ra.push( v ); + } + }); + } + else { + each( this.context().results, function ( r ) { + var row = [], dup = false; + each( args, function ( c ) { + row.push( r[c] ); + }); + each( ra, function ( d ) { + var ldup = true; + each( args, function ( c, i ) { + if ( row[i] !== d[i] ){ + ldup = false; + return TAFFY.EXIT; + } + }); + if ( ldup ){ + dup = true; + return TAFFY.EXIT; + } + }); + if ( !dup ){ + ra.push( row ); + } + }); + } + return ra; + }); + API.extend( 'supplant', function ( template, returnarray ) { + // **************************************** + // * + // * Takes: a string template formated with key to be replaced with values from the rows, flag to determine if we want array of strings + // * Returns: array of values or a string + // **************************************** + var ra = []; + run.call( this ); + each( this.context().results, function ( r ) { + // TODO: The curly braces used to be unescaped + ra.push( template.replace( /\{([^\{\}]*)\}/g, function ( a, b ) { + var v = r[b]; + return typeof v === 'string' || typeof v === 'number' ? v : a; + } ) ); + }); + return (!returnarray) ? ra.join( "" ) : ra; + }); + + + API.extend( 'each', function ( m ) { + // **************************************** + // * + // * Takes: a function + // * Purpose: loops over every matching record and applies the function + // **************************************** + run.call( this ); + each( this.context().results, m ); + return this; + }); + API.extend( 'map', function ( m ) { + // **************************************** + // * + // * Takes: a function + // * Purpose: loops over every matching record and applies the function, returing the results in an array + // **************************************** + var ra = []; + run.call( this ); + each( this.context().results, function ( r ) { + ra.push( m( r ) ); + }); + return ra; + }); + + + + T = function ( d ) { + // **************************************** + // * + // * T is the main TAFFY object + // * Takes: an array of objects or JSON + // * Returns a new TAFFYDB + // **************************************** + var TOb = [], + ID = {}, + RC = 1, + settings = { + template : false, + onInsert : false, + onUpdate : false, + onRemove : false, + onDBChange : false, + storageName : false, + forcePropertyCase : null, + cacheSize : 100, + name : '' + }, + dm = new Date(), + CacheCount = 0, + CacheClear = 0, + Cache = {}, + DBI, runIndexes, root + ; + // **************************************** + // * + // * TOb = this database + // * ID = collection of the record IDs and locations within the DB, used for fast lookups + // * RC = record counter, used for creating IDs + // * settings.template = the template to merge all new records with + // * settings.onInsert = event given a copy of the newly inserted record + // * settings.onUpdate = event given the original record, the changes, and the new record + // * settings.onRemove = event given the removed record + // * settings.forcePropertyCase = on insert force the proprty case to be lower or upper. default lower, null/undefined will leave case as is + // * dm = the modify date of the database, used for query caching + // **************************************** + + + runIndexes = function ( indexes ) { + // **************************************** + // * + // * Takes: a collection of indexes + // * Returns: collection with records matching indexed filters + // **************************************** + + var records = [], UniqueEnforce = false; + + if ( indexes.length === 0 ){ + return TOb; + } + + each( indexes, function ( f ) { + // Check to see if record ID + if ( T.isString( f ) && /[t][0-9]*[r][0-9]*/i.test( f ) && + TOb[ID[f]] ) + { + records.push( TOb[ID[f]] ); + UniqueEnforce = true; + } + // Check to see if record + if ( T.isObject( f ) && f.___id && f.___s && + TOb[ID[f.___id]] ) + { + records.push( TOb[ID[f.___id]] ); + UniqueEnforce = true; + } + // Check to see if array of indexes + if ( T.isArray( f ) ){ + each( f, function ( r ) { + each( runIndexes( r ), function ( rr ) { + records.push( rr ); + }); + + }); + } + }); + if ( UniqueEnforce && records.length > 1 ){ + records = []; + } + + return records; + }; + + DBI = { + // **************************************** + // * + // * The DBI is the internal DataBase Interface that interacts with the data + // **************************************** + dm : function ( nd ) { + // **************************************** + // * + // * Takes: an optional new modify date + // * Purpose: used to get and set the DB modify date + // **************************************** + if ( nd ){ + dm = nd; + Cache = {}; + CacheCount = 0; + CacheClear = 0; + } + if ( settings.onDBChange ){ + setTimeout( function () { + settings.onDBChange.call( TOb ); + }, 0 ); + } + if ( settings.storageName ){ + setTimeout( function () { + localStorage.setItem( 'taffy_' + settings.storageName, + JSON.stringify( TOb ) ); + }); + } + return dm; + }, + insert : function ( i, runEvent ) { + // **************************************** + // * + // * Takes: a new record to insert + // * Purpose: merge the object with the template, add an ID, insert into DB, call insert event + // **************************************** + var columns = [], + records = [], + input = protectJSON( i ) + ; + each( input, function ( v, i ) { + var nv, o; + if ( T.isArray( v ) && i === 0 ){ + each( v, function ( av ) { + + columns.push( (settings.forcePropertyCase === 'lower') + ? av.toLowerCase() + : (settings.forcePropertyCase === 'upper') + ? av.toUpperCase() : av ); + }); + return true; + } + else if ( T.isArray( v ) ){ + nv = {}; + each( v, function ( av, ai ) { + nv[columns[ai]] = av; + }); + v = nv; + + } + else if ( T.isObject( v ) && settings.forcePropertyCase ){ + o = {}; + + eachin( v, function ( av, ai ) { + o[(settings.forcePropertyCase === 'lower') ? ai.toLowerCase() + : (settings.forcePropertyCase === 'upper') + ? ai.toUpperCase() : ai] = v[ai]; + }); + v = o; + } + + RC++; + v.___id = 'T' + String( idpad + TC ).slice( -6 ) + 'R' + + String( idpad + RC ).slice( -6 ); + v.___s = true; + records.push( v.___id ); + if ( settings.template ){ + v = T.mergeObj( settings.template, v ); + } + TOb.push( v ); + + ID[v.___id] = TOb.length - 1; + if ( settings.onInsert && + (runEvent || TAFFY.isUndefined( runEvent )) ) + { + settings.onInsert.call( v ); + } + DBI.dm( new Date() ); + }); + return root( records ); + }, + sort : function ( o ) { + // **************************************** + // * + // * Purpose: Change the sort order of the DB itself and reset the ID bucket + // **************************************** + TOb = orderByCol( TOb, o.split( ',' ) ); + ID = {}; + each( TOb, function ( r, i ) { + ID[r.___id] = i; + }); + DBI.dm( new Date() ); + return true; + }, + update : function ( id, changes, runEvent ) { + // **************************************** + // * + // * Takes: the ID of record being changed and the changes + // * Purpose: Update a record and change some or all values, call the on update method + // **************************************** + + var nc = {}, or, nr, tc, hasChange; + if ( settings.forcePropertyCase ){ + eachin( changes, function ( v, p ) { + nc[(settings.forcePropertyCase === 'lower') ? p.toLowerCase() + : (settings.forcePropertyCase === 'upper') ? p.toUpperCase() + : p] = v; + }); + changes = nc; + } + + or = TOb[ID[id]]; + nr = T.mergeObj( or, changes ); + + tc = {}; + hasChange = false; + eachin( nr, function ( v, i ) { + if ( TAFFY.isUndefined( or[i] ) || or[i] !== v ){ + tc[i] = v; + hasChange = true; + } + }); + if ( hasChange ){ + if ( settings.onUpdate && + (runEvent || TAFFY.isUndefined( runEvent )) ) + { + settings.onUpdate.call( nr, TOb[ID[id]], tc ); + } + TOb[ID[id]] = nr; + DBI.dm( new Date() ); + } + }, + remove : function ( id ) { + // **************************************** + // * + // * Takes: the ID of record to be removed + // * Purpose: remove a record, changes its ___s value to false + // **************************************** + TOb[ID[id]].___s = false; + }, + removeCommit : function ( runEvent ) { + var x; + // **************************************** + // * + // * + // * Purpose: loop over all records and remove records with ___s = false, call onRemove event, clear ID + // **************************************** + for ( x = TOb.length - 1; x > -1; x-- ){ + + if ( !TOb[x].___s ){ + if ( settings.onRemove && + (runEvent || TAFFY.isUndefined( runEvent )) ) + { + settings.onRemove.call( TOb[x] ); + } + ID[TOb[x].___id] = undefined; + TOb.splice( x, 1 ); + } + } + ID = {}; + each( TOb, function ( r, i ) { + ID[r.___id] = i; + }); + DBI.dm( new Date() ); + }, + query : function ( context ) { + // **************************************** + // * + // * Takes: the context object for a query and either returns a cache result or a new query result + // **************************************** + var returnq, cid, results, indexed, limitq, ni; + + if ( settings.cacheSize ) { + cid = ''; + each( context.filterRaw, function ( r ) { + if ( T.isFunction( r ) ){ + cid = 'nocache'; + return TAFFY.EXIT; + } + }); + if ( cid === '' ){ + cid = JSON.stringify( T.mergeObj( context, + {q : false, run : false, sort : false} ) ); + } + } + // Run a new query if there are no results or the run date has been cleared + if ( !context.results || !context.run || + (context.run && DBI.dm() > context.run) ) + { + results = []; + + // check Cache + + if ( settings.cacheSize && Cache[cid] ){ + + Cache[cid].i = CacheCount++; + return Cache[cid].results; + } + else { + // if no filter, return DB + if ( context.q.length === 0 && context.index.length === 0 ){ + each( TOb, function ( r ) { + results.push( r ); + }); + returnq = results; + } + else { + // use indexes + + indexed = runIndexes( context.index ); + + // run filters + each( indexed, function ( r ) { + // Run filter to see if record matches query + if ( context.q.length === 0 || runFilters( r, context.q ) ){ + results.push( r ); + } + }); + + returnq = results; + } + } + + + } + else { + // If query exists and run has not been cleared return the cache results + returnq = context.results; + } + // If a custom order array exists and the run has been clear or the sort has been cleared + if ( context.order.length > 0 && (!context.run || !context.sort) ){ + // order the results + returnq = orderByCol( returnq, context.order ); + } + + // If a limit on the number of results exists and it is less than the returned results, limit results + if ( returnq.length && + ((context.limit && context.limit < returnq.length) || + context.start) + ) { + limitq = []; + each( returnq, function ( r, i ) { + if ( !context.start || + (context.start && (i + 1) >= context.start) ) + { + if ( context.limit ){ + ni = (context.start) ? (i + 1) - context.start : i; + if ( ni < context.limit ){ + limitq.push( r ); + } + else if ( ni > context.limit ){ + return TAFFY.EXIT; + } + } + else { + limitq.push( r ); + } + } + }); + returnq = limitq; + } + + // update cache + if ( settings.cacheSize && cid !== 'nocache' ){ + CacheClear++; + + setTimeout( function () { + var bCounter, nc; + if ( CacheClear >= settings.cacheSize * 2 ){ + CacheClear = 0; + bCounter = CacheCount - settings.cacheSize; + nc = {}; + eachin( function ( r, k ) { + if ( r.i >= bCounter ){ + nc[k] = r; + } + }); + Cache = nc; + } + }, 0 ); + + Cache[cid] = { i : CacheCount++, results : returnq }; + } + return returnq; + } + }; + + + root = function () { + var iAPI, context; + // **************************************** + // * + // * The root function that gets returned when a new DB is created + // * Takes: unlimited filter arguments and creates filters to be run when a query is called + // **************************************** + // **************************************** + // * + // * iAPI is the the method collection valiable when a query has been started by calling dbname + // * Certain methods are or are not avaliable once you have started a query such as insert -- you can only insert into root + // **************************************** + iAPI = TAFFY.mergeObj( TAFFY.mergeObj( API, { insert : undefined } ), + { getDBI : function () { return DBI; }, + getroot : function ( c ) { return root.call( c ); }, + context : function ( n ) { + // **************************************** + // * + // * The context contains all the information to manage a query including filters, limits, and sorts + // **************************************** + if ( n ){ + context = TAFFY.mergeObj( context, + n.hasOwnProperty('results') + ? TAFFY.mergeObj( n, { run : new Date(), sort: new Date() }) + : n + ); + } + return context; + }, + extend : undefined + }); + + context = (this && this.q) ? this : { + limit : false, + start : false, + q : [], + filterRaw : [], + index : [], + order : [], + results : false, + run : null, + sort : null, + settings : settings + }; + // **************************************** + // * + // * Call the query method to setup a new query + // **************************************** + each( arguments, function ( f ) { + + if ( isIndexable( f ) ){ + context.index.push( f ); + } + else { + context.q.push( returnFilter( f ) ); + } + context.filterRaw.push( f ); + }); + + + return iAPI; + }; + + // **************************************** + // * + // * If new records have been passed on creation of the DB either as JSON or as an array/object, insert them + // **************************************** + TC++; + if ( d ){ + DBI.insert( d ); + } + + + root.insert = DBI.insert; + + root.merge = function ( i, key, runEvent ) { + var + search = {}, + finalSearch = [], + obj = {} + ; + + runEvent = runEvent || false; + key = key || 'id'; + + each( i, function ( o ) { + var existingObject; + search[key] = o[key]; + finalSearch.push( o[key] ); + existingObject = root( search ).first(); + if ( existingObject ){ + DBI.update( existingObject.___id, o, runEvent ); + } + else { + DBI.insert( o, runEvent ); + } + }); + + obj[key] = finalSearch; + return root( obj ); + }; + + root.TAFFY = true; + root.sort = DBI.sort; + // **************************************** + // * + // * These are the methods that can be accessed on off the root DB function. Example dbname.insert; + // **************************************** + root.settings = function ( n ) { + // **************************************** + // * + // * Getting and setting for this DB's settings/events + // **************************************** + if ( n ){ + settings = TAFFY.mergeObj( settings, n ); + if ( n.template ){ + + root().update( n.template ); + } + } + return settings; + }; + + // **************************************** + // * + // * These are the methods that can be accessed on off the root DB function. Example dbname.insert; + // **************************************** + root.store = function ( n ) { + // **************************************** + // * + // * Setup localstorage for this DB on a given name + // * Pull data into the DB as needed + // **************************************** + var r = false, i; + if ( localStorage ){ + if ( n ){ + i = localStorage.getItem( 'taffy_' + n ); + if ( i && i.length > 0 ){ + root.insert( i ); + r = true; + } + if ( TOb.length > 0 ){ + setTimeout( function () { + localStorage.setItem( 'taffy_' + settings.storageName, + JSON.stringify( TOb ) ); + }); + } + } + root.settings( {storageName : n} ); + } + return root; + }; + + // **************************************** + // * + // * Return root on DB creation and start having fun + // **************************************** + return root; + }; + // **************************************** + // * + // * Sets the global TAFFY object + // **************************************** + TAFFY = T; + + + // **************************************** + // * + // * Create public each method + // * + // **************************************** + T.each = each; + + // **************************************** + // * + // * Create public eachin method + // * + // **************************************** + T.eachin = eachin; + // **************************************** + // * + // * Create public extend method + // * Add a custom method to the API + // * + // **************************************** + T.extend = API.extend; + + + // **************************************** + // * + // * Creates TAFFY.EXIT value that can be returned to stop an each loop + // * + // **************************************** + TAFFY.EXIT = 'TAFFYEXIT'; + + // **************************************** + // * + // * Create public utility mergeObj method + // * Return a new object where items from obj2 + // * have replaced or been added to the items in + // * obj1 + // * Purpose: Used to combine objs + // * + // **************************************** + TAFFY.mergeObj = function ( ob1, ob2 ) { + var c = {}; + eachin( ob1, function ( v, n ) { c[n] = ob1[n]; }); + eachin( ob2, function ( v, n ) { c[n] = ob2[n]; }); + return c; + }; + + + // **************************************** + // * + // * Create public utility has method + // * Returns true if a complex object, array + // * or taffy collection contains the material + // * provided in the second argument + // * Purpose: Used to comare objects + // * + // **************************************** + TAFFY.has = function ( var1, var2 ) { + + var re = true, n; + + if ( (var1.TAFFY) ){ + re = var1( var2 ); + if ( re.length > 0 ){ + return true; + } + else { + return false; + } + } + else { + + switch ( T.typeOf( var1 ) ){ + case 'object': + if ( T.isObject( var2 ) ){ + eachin( var2, function ( v, n ) { + if ( re === true && !T.isUndefined( var1[n] ) && + var1.hasOwnProperty( n ) ) + { + re = T.has( var1[n], var2[n] ); + } + else { + re = false; + return TAFFY.EXIT; + } + }); + } + else if ( T.isArray( var2 ) ){ + each( var2, function ( v, n ) { + re = T.has( var1, var2[n] ); + if ( re ){ + return TAFFY.EXIT; + } + }); + } + else if ( T.isString( var2 ) ){ + if ( !TAFFY.isUndefined( var1[var2] ) ){ + return true; + } + else { + return false; + } + } + return re; + case 'array': + if ( T.isObject( var2 ) ){ + each( var1, function ( v, i ) { + re = T.has( var1[i], var2 ); + if ( re === true ){ + return TAFFY.EXIT; + } + }); + } + else if ( T.isArray( var2 ) ){ + each( var2, function ( v2, i2 ) { + each( var1, function ( v1, i1 ) { + re = T.has( var1[i1], var2[i2] ); + if ( re === true ){ + return TAFFY.EXIT; + } + }); + if ( re === true ){ + return TAFFY.EXIT; + } + }); + } + else if ( T.isString( var2 ) || T.isNumber( var2 ) ){ + for ( n = 0; n < var1.length; n++ ){ + re = T.has( var1[n], var2 ); + if ( re ){ + return true; + } + } + } + return re; + case 'string': + if ( T.isString( var2 ) && var2 === var1 ){ + return true; + } + break; + default: + if ( T.typeOf( var1 ) === T.typeOf( var2 ) && var1 === var2 ){ + return true; + } + break; + } + } + return false; + }; + + // **************************************** + // * + // * Create public utility hasAll method + // * Returns true if a complex object, array + // * or taffy collection contains the material + // * provided in the call - for arrays it must + // * contain all the material in each array item + // * Purpose: Used to comare objects + // * + // **************************************** + TAFFY.hasAll = function ( var1, var2 ) { + + var T = TAFFY, ar; + if ( T.isArray( var2 ) ){ + ar = true; + each( var2, function ( v ) { + ar = T.has( var1, v ); + if ( ar === false ){ + return TAFFY.EXIT; + } + }); + return ar; + } + else { + return T.has( var1, var2 ); + } + }; + + + // **************************************** + // * + // * typeOf Fixed in JavaScript as public utility + // * + // **************************************** + TAFFY.typeOf = function ( v ) { + var s = typeof v; + if ( s === 'object' ){ + if ( v ){ + if ( typeof v.length === 'number' && + !(v.propertyIsEnumerable( 'length' )) ) + { + s = 'array'; + } + } + else { + s = 'null'; + } + } + return s; + }; + + // **************************************** + // * + // * Create public utility getObjectKeys method + // * Returns an array of an objects keys + // * Purpose: Used to get the keys for an object + // * + // **************************************** + TAFFY.getObjectKeys = function ( ob ) { + var kA = []; + eachin( ob, function ( n, h ) { + kA.push( h ); + }); + kA.sort(); + return kA; + }; + + // **************************************** + // * + // * Create public utility isSameArray + // * Returns an array of an objects keys + // * Purpose: Used to get the keys for an object + // * + // **************************************** + TAFFY.isSameArray = function ( ar1, ar2 ) { + return (TAFFY.isArray( ar1 ) && TAFFY.isArray( ar2 ) && + ar1.join( ',' ) === ar2.join( ',' )) ? true : false; + }; + + // **************************************** + // * + // * Create public utility isSameObject method + // * Returns true if objects contain the same + // * material or false if they do not + // * Purpose: Used to comare objects + // * + // **************************************** + TAFFY.isSameObject = function ( ob1, ob2 ) { + var T = TAFFY, rv = true; + + if ( T.isObject( ob1 ) && T.isObject( ob2 ) ){ + if ( T.isSameArray( T.getObjectKeys( ob1 ), + T.getObjectKeys( ob2 ) ) ) + { + eachin( ob1, function ( v, n ) { + if ( ! ( (T.isObject( ob1[n] ) && T.isObject( ob2[n] ) && + T.isSameObject( ob1[n], ob2[n] )) || + (T.isArray( ob1[n] ) && T.isArray( ob2[n] ) && + T.isSameArray( ob1[n], ob2[n] )) || (ob1[n] === ob2[n]) ) + ) { + rv = false; + return TAFFY.EXIT; + } + }); + } + else { + rv = false; + } + } + else { + rv = false; + } + return rv; + }; + + // **************************************** + // * + // * Create public utility is[DataType] methods + // * Return true if obj is datatype, false otherwise + // * Purpose: Used to determine if arguments are of certain data type + // * + // * mmikowski 2012-08-06 refactored to make much less "magical": + // * fewer closures and passes jslint + // * + // **************************************** + + typeList = [ + 'String', 'Number', 'Object', 'Array', + 'Boolean', 'Null', 'Function', 'Undefined' + ]; + + makeTest = function ( thisKey ) { + return function ( data ) { + return TAFFY.typeOf( data ) === thisKey.toLowerCase() ? true : false; + }; + }; + + for ( idx = 0; idx < typeList.length; idx++ ){ + typeKey = typeList[idx]; + TAFFY['is' + typeKey] = makeTest( typeKey ); + } + } +}()); + +if ( typeof(exports) === 'object' ){ + exports.taffy = TAFFY; +} + diff --git a/third_party/jsdoc/node_modules/tv4/LICENSE.txt b/third_party/jsdoc/node_modules/tv4/LICENSE.txt new file mode 100644 index 0000000000..f421228be3 --- /dev/null +++ b/third_party/jsdoc/node_modules/tv4/LICENSE.txt @@ -0,0 +1,8 @@ +/* +Author: Geraint Luff and others +Year: 2013 + +This code is released into the "public domain" by its author(s). Anybody may use, alter and distribute the code without restriction. The author makes no guarantees, and takes no liability of any kind for use of this code. + +If you find a bug or make an improvement, it would be courteous to let the author know, but it is not compulsory. +*/ \ No newline at end of file diff --git a/third_party/jsdoc/node_modules/tv4/README.md b/third_party/jsdoc/node_modules/tv4/README.md new file mode 100644 index 0000000000..66f263f0f1 --- /dev/null +++ b/third_party/jsdoc/node_modules/tv4/README.md @@ -0,0 +1,453 @@ +# Tiny Validator (for v4 JSON Schema) + +[![Build Status](https://secure.travis-ci.org/geraintluff/tv4.png?branch=master)](http://travis-ci.org/geraintluff/tv4) [![Dependency Status](https://gemnasium.com/geraintluff/tv4.png)](https://gemnasium.com/geraintluff/tv4) [![NPM version](https://badge.fury.io/js/tv4.png)](http://badge.fury.io/js/tv4) + +Use [json-schema](http://json-schema.org/) [draft v4](http://json-schema.org/latest/json-schema-core.html) to validate simple values and complex objects using a rich [validation vocabulary](http://json-schema.org/latest/json-schema-validation.html) ([examples](http://json-schema.org/examples.html)). + +There is support for `$ref` with JSON Pointer fragment paths (```other-schema.json#/properties/myKey```). + +## Usage 1: Simple validation + +```javascript +var valid = tv4.validate(data, schema); +``` + +If validation returns ```false```, then an explanation of why validation failed can be found in ```tv4.error```. + +The error object will look something like: +```json +{ + "code": 0, + "message": "Invalid type: string", + "dataPath": "/intKey", + "schemaKey": "/properties/intKey/type" +} +``` + +The `"code"` property will refer to one of the values in `tv4.errorCodes` - in this case, `tv4.errorCodes.INVALID_TYPE`. + +To enable external schema to be referenced, you use: +```javascript +tv4.addSchema(url, schema); +``` + +If schemas are referenced (```$ref```) but not known, then validation will return ```true``` and the missing schema(s) will be listed in ```tv4.missing```. For more info see the API documentation below. + +## Usage 2: Multi-threaded validation + +Storing the error and missing schemas does not work well in multi-threaded environments, so there is an alternative syntax: + +```javascript +var result = tv4.validateResult(data, schema); +``` + +The result will look something like: +```json +{ + "valid": false, + "error": {...}, + "missing": [...] +} +``` + +## Usage 3: Multiple errors + +Normally, `tv4` stops when it encounters the first validation error. However, you can collect an array of validation errors using: + +```javascript +var result = tv4.validateMultiple(data, schema); +``` + +The result will look something like: +```json +{ + "valid": false, + "errors": [ + {...}, + ... + ], + "missing": [...] +} +``` + +## Asynchronous validation + +Support for asynchronous validation (where missing schemas are fetched) can be added by including an extra JavaScript file. Currently, the only version requires jQuery (`tv4.async-jquery.js`), but the code is very short and should be fairly easy to modify for other libraries (such as MooTools). + +Usage: + +```javascript +tv4.validate(data, schema, function (isValid, validationError) { ... }); +``` + +`validationFailure` is simply taken from `tv4.error`. + +## Options + +You can use several options to change tv4's behavior when validating objects. Pass in an object to set these options for any of the regular validation methods: + +```javascript +tv4.validate(data, schema, {checkRecursive: true}); +var result = tv4.validateResult(data, schema, {checkRecursive: true}); +var multiple = tv4.validateMultiple(data, schema, {checkRecursive: true}); +``` + +For backwards compatibility, you can also pass in two booleans to set the `checkRecursive` and `banUnknownProperties` options; this method signature is deprecated: + +```javascript +// Set checkRecursive to false (the default) and banUnknownProperties to true +tv4.validate(data, schema, false, true); +``` + +The following sections describe the validation options. + +### Cyclical JavaScript objects + +While they don't occur in proper JSON, JavaScript does support self-referencing objects. Any of the above calls support a checkRecursive option. If true, tv4 will handle self-referencing objects properly - this slows down validation slightly, but that's better than a hanging script. + +Consider this data, notice how both `a` and `b` refer to each other: + +```javascript +var a = {}; +var b = { a: a }; +a.b = b; +var aSchema = { properties: { b: { $ref: 'bSchema' }}}; +var bSchema = { properties: { a: { $ref: 'aSchema' }}}; +tv4.addSchema('aSchema', aSchema); +tv4.addSchema('bSchema', bSchema); +``` + +By default, this causes the validation methods to throw a "too much recursion" error. + +To enable support for self-referencing objects, set the checkRecursive option to `true`: + +```javascript +tv4.validate(a, aSchema, {checkRecursive: true}); +tv4.validate(a, schema, asynchronousFunction, {checkRecursive: true}); + +tv4.validateResult(a, aSchema, {checkRecursive: true}); +tv4.validateMultiple(a, aSchema, {checkRecursive: true}); +``` + +### Properties not defined in the schema + +An object's schema may include an additionalProperties setting. When additionalProperties is set to `false`, objects will fail validation if they include properties that are not defined in the schema. + +You can enforce this behavior for all object schema by setting tv4's banUnknownProperties option to `true`: + +```javascript +tv4.validate(data, schema, {banUnknownProperties: true}); +tv4.validate(data, schema, asynchronousFunction, {banUnknownProperties: true}); + +tv4.validateResult(data, schema, {banUnknownProperties: true}); +tv4.validateMultiple(data, schema, {banUnknownProperties: true}); +``` + +### Inherited properties + +By default, tv4 does not validate an object's inherited properties, which are ignored when you convert an object to JSON. This behavior differs from tv4 1.0.16 and earlier, which always validated inherited properties. + +To validate inherited properties, set tv4's checkInheritedProperties option to `true`: + +```javascript +tv4.validate(data, schema, {checkInheritedProperties: true}); +tv4.validate(data, schema, asynchronousFunction, {checkInheritedProperties: true}); + +tv4.validateResult(data, schema, {checkInheritedProperties: true}); +tv4.validateMultiple(data, schema, {checkInheritedProperties: true}); +``` + +### Non-enumerable properties + +By default, tv4 does not validate an object's own non-enumerable properties, which are ignored when you convert an object to JSON. This behavior differs from tv4 1.0.16 and earlier, which always validated an object's own non-enumerable properties. + +To validate an object's own non-enumerable properties, set tv4's checkNonEnumerableProperties option to `true`: + +```javascript +tv4.validate(data, schema, {checkNonEnumerableProperties: true}); +tv4.validate(data, schema, asynchronousFunction, {checkNonEnumerableProperties: true}); + +tv4.validateResult(data, schema, {checkNonEnumerableProperties: true}); +tv4.validateMultiple(data, schema, {checkNonEnumerableProperties: true}); +``` + +## API + +There are additional api commands available for more complex use-cases: + +##### addSchema(uri, schema) +Pre-register a schema for reference by other schema and synchronous validation. + +````js +tv4.addSchema('http://example.com/schema', { ... }); +```` + +* `uri` the uri to identify this schema. +* `schema` the schema object. + +Schemas that have their `id` property set can be added directly. + +````js +tv4.addSchema({ ... }); +```` + +##### getSchema(uri) + +Return a schema from the cache. + +* `uri` the uri of the schema (may contain a `#` fragment) + +````js +var schema = tv4.getSchema('http://example.com/schema'); +```` + +##### getSchemaMap() + +Return a shallow copy of the schema cache, mapping schema document URIs to schema objects. + +```` +var map = tv4.getSchemaMap(); + +var schema = map[uri]; +```` + +##### getSchemaUris(filter) + +Return an Array with known schema document URIs. + +* `filter` optional RegExp to filter URIs + +```` +var arr = tv4.getSchemaUris(); + +// optional filter using a RegExp +var arr = tv4.getSchemaUris(/^https?://example.com/); +```` + +##### getMissingUris(filter) + +Return an Array with schema document URIs that are used as `$ref` in known schemas but which currently have no associated schema data. + +Use this in combination with `tv4.addSchema(uri, schema)` to preload the cache for complete synchronous validation with. + +* `filter` optional RegExp to filter URIs + +```` +var arr = tv4.getMissingUris(); + +// optional filter using a RegExp +var arr = tv4.getMissingUris(/^https?://example.com/); +```` + +##### dropSchemas() + +Drop all known schema document URIs from the cache. + +```` +tv4.dropSchemas(); +```` + +##### freshApi() + +Return a new tv4 instance with no shared state. + +```` +var otherTV4 = tv4.freshApi(); +```` + +##### reset() + +Manually reset validation status from the simple `tv4.validate(data, schema)`. Although tv4 will self reset on each validation there are some implementation scenarios where this is useful. + +```` +tv4.reset(); +```` + +##### language(code) + +Select the language map used for reporting. + +* `code` is a language code, like `'en'` or `'en-gb'` + +```` +tv4.language('en-gb'); +```` + +##### addLanguage(code, map) + +Add a new language map for selection by `tv4.language(code)` + +* `code` is new language code +* `map` is an object mapping error IDs or constant names (e.g. `103` or `"NUMBER_MAXIMUM"`) to language strings. + +```` +tv4.addLanguage('fr', { ... }); + +// select for use +tv4.language('fr') +```` + +##### addFormat(format, validationFunction) + +Add a custom format validator. (There are no built-in format validators.) + +* `format` is a string, corresponding to the `"format"` value in schemas. +* `validationFunction` is a function that either returns: + * `null` (meaning no error) + * an error string (explaining the reason for failure) + +```` +tv4.addFormat('decimal-digits', function (data, schema) { + if (typeof data === 'string' && !/^[0-9]+$/.test(data)) { + return null; + } + return "must be string of decimal digits"; +}); +```` + +Alternatively, multiple formats can be added at the same time using an object: +```` +tv4.addFormat({ + 'my-format': function () {...}, + 'other-format': function () {...} +}); +```` + +## Demos + +### Basic usage +
    +
    +var schema = {
    +	"items": {
    +		"type": "boolean"
    +	}
    +};
    +var data1 = [true, false];
    +var data2 = [true, 123];
    +
    +alert("data 1: " + tv4.validate(data1, schema)); // true
    +alert("data 2: " + tv4.validate(data2, schema)); // false
    +alert("data 2 error: " + JSON.stringify(tv4.error, null, 4));
    +
    +
    + +### Use of $ref +
    +
    +var schema = {
    +	"type": "array",
    +	"items": {"$ref": "#"}
    +};
    +var data1 = [[], [[]]];
    +var data2 = [[], [true, []]];
    +
    +alert("data 1: " + tv4.validate(data1, schema)); // true
    +alert("data 2: " + tv4.validate(data2, schema)); // false
    +
    +
    + +### Missing schema +
    +
    +var schema = {
    +	"type": "array",
    +	"items": {"$ref": "http://example.com/schema" }
    +};
    +var data = [1, 2, 3];
    +
    +alert("Valid: " + tv4.validate(data, schema)); // true
    +alert("Missing schemas: " + JSON.stringify(tv4.missing));
    +
    +
    + +### Referencing remote schema +
    +
    +tv4.addSchema("http://example.com/schema", {
    +	"definitions": {
    +		"arrayItem": {"type": "boolean"}
    +	}
    +});
    +var schema = {
    +	"type": "array",
    +	"items": {"$ref": "http://example.com/schema#/definitions/arrayItem" }
    +};
    +var data1 = [true, false, true];
    +var data2 = [1, 2, 3];
    +
    +alert("data 1: " + tv4.validate(data1, schema)); // true
    +alert("data 2: " + tv4.validate(data2, schema)); // false
    +
    +
    + +## Supported platforms + +* Node.js +* All modern browsers +* IE >= 7 + +## Installation + +You can manually download [`tv4.js`](https://raw.github.com/geraintluff/tv4/master/tv4.js) or the minified [`tv4.min.js`](https://raw.github.com/geraintluff/tv4/master/tv4.min.js) and include it in your html to create the global `tv4` variable. + +Alternately use it as a CommonJS module: + +````js +var tv4 = require('tv4'); +```` + +#### npm + +```` +$ npm install tv4 +```` + +#### bower + +```` +$ bower install tv4 +```` + +#### component.io + +```` +$ component install geraintluff/tv4 +```` + +## Build and test + +You can rebuild and run the node and browser tests using node.js and [grunt](http://http://gruntjs.com/): + +Make sure you have the global grunt cli command: +```` +$ npm install grunt-cli -g +```` + +Clone the git repos, open a shell in the root folder and install the development dependencies: + +```` +$ npm install +```` + +Rebuild and run the tests: +```` +$ grunt +```` + +It will run a build and display one Spec-style report for the node.js and two Dot-style reports for both the plain and minified browser tests (via phantomJS). You can also use your own browser to manually run the suites by opening [`test/index.html`](http://geraintluff.github.io/tv4/test/index.html) and [`test/index-min.html`](http://geraintluff.github.io/tv4/test/index-min.html). + +## Contributing + +Pull-requests for fixes and expansions are welcome. Edit the partial files in `/source` and add your tests in a suitable suite or folder under `/test/tests` and run `grunt` to rebuild and run the test suite. Try to maintain an idiomatic coding style and add tests for any new features. It is recommend to discuss big changes in an Issue. + +## Packages using tv4 + +* [chai-json-schema](http://chaijs.com/plugins/chai-json-schema) is a [Chai Assertion Library](http://chaijs.com) plugin to assert values against json-schema. +* [grunt-tv4](http://www.github.com/Bartvds/grunt-tv4) is a plugin for [Grunt](http://http://gruntjs.com/) that uses tv4 to bulk validate json files. + +## License + +The code is available as "public domain", meaning that it is completely free to use, without any restrictions at all. Read the full license [here](http://geraintluff.github.com/tv4/LICENSE.txt). + +It's also available under an [MIT license](http://jsonary.com/LICENSE.txt). diff --git a/third_party/jsdoc/node_modules/tv4/lang/de.js b/third_party/jsdoc/node_modules/tv4/lang/de.js new file mode 100644 index 0000000000..aeb9f12fc6 --- /dev/null +++ b/third_party/jsdoc/node_modules/tv4/lang/de.js @@ -0,0 +1,29 @@ +tv4.addLanguage('de', { + INVALID_TYPE: "Ungültiger Typ: {type} (erwartet wurde: {expected})", + ENUM_MISMATCH: "Keine Übereinstimmung mit der Aufzählung (enum) für: {value}", + ANY_OF_MISSING: "Daten stimmen nicht überein mit einem der Schemas von \"anyOf\"", + ONE_OF_MISSING: "Daten stimmen nicht überein mit einem der Schemas von \"oneOf\"", + ONE_OF_MULTIPLE: "Daten sind valid in Bezug auf mehreren Schemas von \"oneOf\": index {index1} und {index2}", + NOT_PASSED: "Daten stimmen mit dem \"not\" Schema überein", + // Numeric errors + NUMBER_MULTIPLE_OF: "Wert {value} ist kein Vielfaches von {multipleOf}", + NUMBER_MINIMUM: "Wert {value} ist kleiner als das Minimum {minimum}", + NUMBER_MINIMUM_EXCLUSIVE: "Wert {value} ist gleich dem Exklusiven Minimum {minimum}", + NUMBER_MAXIMUM: "Wert {value} ist größer als das Maximum {maximum}", + NUMBER_MAXIMUM_EXCLUSIVE: "Wert {value} ist gleich dem Exklusiven Maximum {maximum}", + // String errors + STRING_LENGTH_SHORT: "Zeichenkette zu kurz ({length} chars), minimum {minimum}", + STRING_LENGTH_LONG: "Zeichenkette zu lang ({length} chars), maximum {maximum}", + STRING_PATTERN: "Zeichenkette entspricht nicht dem Muster: {pattern}", + // Object errors + OBJECT_PROPERTIES_MINIMUM: "Zu wenige Attribute definiert ({propertyCount}), minimum {minimum}", + OBJECT_PROPERTIES_MAXIMUM: "Zu viele Attribute definiert ({propertyCount}), maximum {maximum}", + OBJECT_REQUIRED: "Notwendiges Attribut fehlt: {key}", + OBJECT_ADDITIONAL_PROPERTIES: "Zusätzliche Attribute nicht erlaubt", + OBJECT_DEPENDENCY_KEY: "Abhängigkeit fehlt - Schlüssel nicht vorhanden: {missing} (wegen Schlüssel: {key})", + // Array errors + ARRAY_LENGTH_SHORT: "Array zu kurz ({length}), minimum {minimum}", + ARRAY_LENGTH_LONG: "Array zu lang ({length}), maximum {maximum}", + ARRAY_UNIQUE: "Array Einträge nicht eindeutig (Index {match1} und {match2})", + ARRAY_ADDITIONAL_ITEMS: "Zusätzliche Einträge nicht erlaubt" +}); diff --git a/third_party/jsdoc/node_modules/tv4/package.json b/third_party/jsdoc/node_modules/tv4/package.json new file mode 100644 index 0000000000..922346c8a0 --- /dev/null +++ b/third_party/jsdoc/node_modules/tv4/package.json @@ -0,0 +1,73 @@ +{ + "name": "tv4", + "version": "1.0.15", + "author": { + "name": "Geraint Luff" + }, + "description": "A public domain JSON Schema validator for JavaScript", + "keywords": [ + "json-schema", + "schema", + "validator", + "tv4" + ], + "maintainers": [ + { + "name": "Geraint Luff", + "email": "luffgd@gmail.com", + "url": "https://github.com/geraintluff/" + } + ], + "main": "tv4.js", + "repository": { + "type": "git", + "url": "https://github.com/geraintluff/tv4.git" + }, + "license:": [ + { + "type": "Public Domain", + "url": "http://geraintluff.github.io/tv4/LICENSE.txt" + }, + { + "type": "MIT", + "url": "http://jsonary.com/LICENSE.txt" + } + ], + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-clean": "~0.4.1", + "grunt-contrib-jshint": "~0.6.2", + "mocha": "~1.11.0", + "grunt-mocha": "~0.4", + "grunt-mocha-test": "~0.5.0", + "grunt-cli": "~0.1.9", + "grunt-contrib-uglify": "~0.2.2", + "grunt-contrib-copy": "~0.4.1", + "proclaim": "1.4", + "mocha-unfunk-reporter": "~0.2", + "jshint-path-reporter": "~0.1", + "grunt-concat-sourcemap": "~0.2", + "source-map-support": "~0.1", + "grunt-markdown": "~0.3.0", + "grunt-component": "~0.1.4", + "grunt-push-release": "~0.1.1", + "grunt-regex-replace": "~0.2.5" + }, + "engines": { + "node": ">= 0.8.0" + }, + "scripts": { + "test": "grunt test", + "prepublish": "grunt prepublish" + }, + "readme": "# Tiny Validator (for v4 JSON Schema)\n\n[![Build Status](https://secure.travis-ci.org/geraintluff/tv4.png?branch=master)](http://travis-ci.org/geraintluff/tv4) [![Dependency Status](https://gemnasium.com/geraintluff/tv4.png)](https://gemnasium.com/geraintluff/tv4) [![NPM version](https://badge.fury.io/js/tv4.png)](http://badge.fury.io/js/tv4)\n\nUse [json-schema](http://json-schema.org/) [draft v4](http://json-schema.org/latest/json-schema-core.html) to validate simple values and complex objects using a rich [validation vocabulary](http://json-schema.org/latest/json-schema-validation.html) ([examples](http://json-schema.org/examples.html)).\n\nThere is support for `$ref` with JSON Pointer fragment paths (```other-schema.json#/properties/myKey```).\n\n## Usage 1: Simple validation\n\n```javascript\nvar valid = tv4.validate(data, schema);\n```\n\nIf validation returns ```false```, then an explanation of why validation failed can be found in ```tv4.error```.\n\nThe error object will look something like:\n```json\n{\n \"code\": 0,\n \"message\": \"Invalid type: string\",\n \"dataPath\": \"/intKey\",\n \"schemaKey\": \"/properties/intKey/type\"\n}\n```\n\nThe `\"code\"` property will refer to one of the values in `tv4.errorCodes` - in this case, `tv4.errorCodes.INVALID_TYPE`.\n\nTo enable external schema to be referenced, you use:\n```javascript\ntv4.addSchema(url, schema);\n```\n\nIf schemas are referenced (```$ref```) but not known, then validation will return ```true``` and the missing schema(s) will be listed in ```tv4.missing```. For more info see the API documentation below.\n\n## Usage 2: Multi-threaded validation\n\nStoring the error and missing schemas does not work well in multi-threaded environments, so there is an alternative syntax:\n\n```javascript\nvar result = tv4.validateResult(data, schema);\n```\n\nThe result will look something like:\n```json\n{\n \"valid\": false,\n \"error\": {...},\n \"missing\": [...]\n}\n```\n\n## Usage 3: Multiple errors\n\nNormally, `tv4` stops when it encounters the first validation error. However, you can collect an array of validation errors using:\n\n```javascript\nvar result = tv4.validateMultiple(data, schema);\n```\n\nThe result will look something like:\n```json\n{\n \"valid\": false,\n \"errors\": [\n {...},\n ...\n ],\n \"missing\": [...]\n}\n```\n\n## Asynchronous validation\n\nSupport for asynchronous validation (where missing schemas are fetched) can be added by including an extra JavaScript file. Currently, the only version requires jQuery (`tv4.async-jquery.js`), but the code is very short and should be fairly easy to modify for other libraries (such as MooTools).\n\nUsage:\n\n```javascript\ntv4.validate(data, schema, function (isValid, validationError) { ... });\n```\n\n`validationFailure` is simply taken from `tv4.error`.\n\n## Options\n\nYou can use several options to change tv4's behavior when validating objects. Pass in an object to set these options for any of the regular validation methods:\n\n```javascript\ntv4.validate(data, schema, {checkRecursive: true});\nvar result = tv4.validateResult(data, schema, {checkRecursive: true});\nvar multiple = tv4.validateMultiple(data, schema, {checkRecursive: true});\n```\n\nFor backwards compatibility, you can also pass in two booleans to set the `checkRecursive` and `banUnknownProperties` options; this method signature is deprecated:\n\n```javascript\n// Set checkRecursive to false (the default) and banUnknownProperties to true\ntv4.validate(data, schema, false, true);\n```\n\nThe following sections describe the validation options.\n\n### Cyclical JavaScript objects\n\nWhile they don't occur in proper JSON, JavaScript does support self-referencing objects. Any of the above calls support a checkRecursive option. If true, tv4 will handle self-referencing objects properly - this slows down validation slightly, but that's better than a hanging script.\n\nConsider this data, notice how both `a` and `b` refer to each other:\n\n```javascript\nvar a = {};\nvar b = { a: a };\na.b = b;\nvar aSchema = { properties: { b: { $ref: 'bSchema' }}};\nvar bSchema = { properties: { a: { $ref: 'aSchema' }}};\ntv4.addSchema('aSchema', aSchema);\ntv4.addSchema('bSchema', bSchema);\n```\n\nBy default, this causes the validation methods to throw a \"too much recursion\" error.\n\nTo enable support for self-referencing objects, set the checkRecursive option to `true`:\n\n```javascript\ntv4.validate(a, aSchema, {checkRecursive: true});\ntv4.validate(a, schema, asynchronousFunction, {checkRecursive: true});\n\ntv4.validateResult(a, aSchema, {checkRecursive: true});\ntv4.validateMultiple(a, aSchema, {checkRecursive: true});\n```\n\n### Properties not defined in the schema\n\nAn object's schema may include an additionalProperties setting. When additionalProperties is set to `false`, objects will fail validation if they include properties that are not defined in the schema.\n\nYou can enforce this behavior for all object schema by setting tv4's banUnknownProperties option to `true`:\n\n```javascript\ntv4.validate(data, schema, {banUnknownProperties: true});\ntv4.validate(data, schema, asynchronousFunction, {banUnknownProperties: true});\n\ntv4.validateResult(data, schema, {banUnknownProperties: true});\ntv4.validateMultiple(data, schema, {banUnknownProperties: true});\n```\n\n### Inherited properties\n\nBy default, tv4 does not validate an object's inherited properties, which are ignored when you convert an object to JSON. This behavior differs from tv4 1.0.16 and earlier, which always validated inherited properties.\n\nTo validate inherited properties, set tv4's checkInheritedProperties option to `true`:\n\n```javascript\ntv4.validate(data, schema, {checkInheritedProperties: true});\ntv4.validate(data, schema, asynchronousFunction, {checkInheritedProperties: true});\n\ntv4.validateResult(data, schema, {checkInheritedProperties: true});\ntv4.validateMultiple(data, schema, {checkInheritedProperties: true});\n```\n\n### Non-enumerable properties\n\nBy default, tv4 does not validate an object's own non-enumerable properties, which are ignored when you convert an object to JSON. This behavior differs from tv4 1.0.16 and earlier, which always validated an object's own non-enumerable properties.\n\nTo validate an object's own non-enumerable properties, set tv4's checkNonEnumerableProperties option to `true`:\n\n```javascript\ntv4.validate(data, schema, {checkNonEnumerableProperties: true});\ntv4.validate(data, schema, asynchronousFunction, {checkNonEnumerableProperties: true});\n\ntv4.validateResult(data, schema, {checkNonEnumerableProperties: true});\ntv4.validateMultiple(data, schema, {checkNonEnumerableProperties: true});\n```\n\n## API\n\nThere are additional api commands available for more complex use-cases:\n\n##### addSchema(uri, schema)\nPre-register a schema for reference by other schema and synchronous validation.\n\n````js\ntv4.addSchema('http://example.com/schema', { ... });\n````\n\n* `uri` the uri to identify this schema.\n* `schema` the schema object.\n\nSchemas that have their `id` property set can be added directly.\n\n````js\ntv4.addSchema({ ... });\n````\n\n##### getSchema(uri)\n\nReturn a schema from the cache.\n\n* `uri` the uri of the schema (may contain a `#` fragment)\n\n````js\nvar schema = tv4.getSchema('http://example.com/schema');\n````\n\n##### getSchemaMap()\n\nReturn a shallow copy of the schema cache, mapping schema document URIs to schema objects.\n\n````\nvar map = tv4.getSchemaMap();\n\nvar schema = map[uri];\n````\n\n##### getSchemaUris(filter)\n\nReturn an Array with known schema document URIs.\n\n* `filter` optional RegExp to filter URIs\n\n````\nvar arr = tv4.getSchemaUris();\n\n// optional filter using a RegExp\nvar arr = tv4.getSchemaUris(/^https?://example.com/);\n````\n\n##### getMissingUris(filter)\n\nReturn an Array with schema document URIs that are used as `$ref` in known schemas but which currently have no associated schema data.\n\nUse this in combination with `tv4.addSchema(uri, schema)` to preload the cache for complete synchronous validation with.\n\n* `filter` optional RegExp to filter URIs\n\n````\nvar arr = tv4.getMissingUris();\n\n// optional filter using a RegExp\nvar arr = tv4.getMissingUris(/^https?://example.com/);\n````\n\n##### dropSchemas()\n\nDrop all known schema document URIs from the cache.\n\n````\ntv4.dropSchemas();\n````\n\n##### freshApi()\n\nReturn a new tv4 instance with no shared state.\n\n````\nvar otherTV4 = tv4.freshApi();\n````\n\n##### reset()\n\nManually reset validation status from the simple `tv4.validate(data, schema)`. Although tv4 will self reset on each validation there are some implementation scenarios where this is useful.\n\n````\ntv4.reset();\n````\n\n##### language(code)\n\nSelect the language map used for reporting.\n\n* `code` is a language code, like `'en'` or `'en-gb'`\n\n````\ntv4.language('en-gb');\n````\n\n##### addLanguage(code, map)\n\nAdd a new language map for selection by `tv4.language(code)`\n\n* `code` is new language code\n* `map` is an object mapping error IDs or constant names (e.g. `103` or `\"NUMBER_MAXIMUM\"`) to language strings.\n\n````\ntv4.addLanguage('fr', { ... });\n\n// select for use\ntv4.language('fr')\n````\n\n##### addFormat(format, validationFunction)\n\nAdd a custom format validator. (There are no built-in format validators.)\n\n* `format` is a string, corresponding to the `\"format\"` value in schemas.\n* `validationFunction` is a function that either returns:\n * `null` (meaning no error)\n * an error string (explaining the reason for failure)\n\n````\ntv4.addFormat('decimal-digits', function (data, schema) {\n\tif (typeof data === 'string' && !/^[0-9]+$/.test(data)) {\n\t\treturn null;\n\t}\n\treturn \"must be string of decimal digits\";\n});\n````\n\nAlternatively, multiple formats can be added at the same time using an object:\n````\ntv4.addFormat({\n\t'my-format': function () {...},\n\t'other-format': function () {...}\n});\n````\n\n## Demos\n\n### Basic usage\n
    \n
    \nvar schema = {\n\t\"items\": {\n\t\t\"type\": \"boolean\"\n\t}\n};\nvar data1 = [true, false];\nvar data2 = [true, 123];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\nalert(\"data 2 error: \" + JSON.stringify(tv4.error, null, 4));\n
    \n
    \n\n### Use of $ref\n
    \n
    \nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"#\"}\n};\nvar data1 = [[], [[]]];\nvar data2 = [[], [true, []]];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\n
    \n
    \n\n### Missing schema\n
    \n
    \nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"http://example.com/schema\" }\n};\nvar data = [1, 2, 3];\n\nalert(\"Valid: \" + tv4.validate(data, schema)); // true\nalert(\"Missing schemas: \" + JSON.stringify(tv4.missing));\n
    \n
    \n\n### Referencing remote schema\n
    \n
    \ntv4.addSchema(\"http://example.com/schema\", {\n\t\"definitions\": {\n\t\t\"arrayItem\": {\"type\": \"boolean\"}\n\t}\n});\nvar schema = {\n\t\"type\": \"array\",\n\t\"items\": {\"$ref\": \"http://example.com/schema#/definitions/arrayItem\" }\n};\nvar data1 = [true, false, true];\nvar data2 = [1, 2, 3];\n\nalert(\"data 1: \" + tv4.validate(data1, schema)); // true\nalert(\"data 2: \" + tv4.validate(data2, schema)); // false\n
    \n
    \n\n## Supported platforms\n\n* Node.js\n* All modern browsers\n* IE >= 7\n\n## Installation\n\nYou can manually download [`tv4.js`](https://raw.github.com/geraintluff/tv4/master/tv4.js) or the minified [`tv4.min.js`](https://raw.github.com/geraintluff/tv4/master/tv4.min.js) and include it in your html to create the global `tv4` variable.\n\nAlternately use it as a CommonJS module:\n\n````js\nvar tv4 = require('tv4');\n````\n\n#### npm\n\n````\n$ npm install tv4\n````\n\n#### bower\n\n````\n$ bower install tv4\n````\n\n#### component.io\n\n````\n$ component install geraintluff/tv4\n````\n\n## Build and test\n\nYou can rebuild and run the node and browser tests using node.js and [grunt](http://http://gruntjs.com/):\n\nMake sure you have the global grunt cli command:\n````\n$ npm install grunt-cli -g\n````\n\nClone the git repos, open a shell in the root folder and install the development dependencies:\n\n````\n$ npm install\n````\n\nRebuild and run the tests:\n````\n$ grunt\n````\n\nIt will run a build and display one Spec-style report for the node.js and two Dot-style reports for both the plain and minified browser tests (via phantomJS). You can also use your own browser to manually run the suites by opening [`test/index.html`](http://geraintluff.github.io/tv4/test/index.html) and [`test/index-min.html`](http://geraintluff.github.io/tv4/test/index-min.html).\n\n## Contributing\n\nPull-requests for fixes and expansions are welcome. Edit the partial files in `/source` and add your tests in a suitable suite or folder under `/test/tests` and run `grunt` to rebuild and run the test suite. Try to maintain an idiomatic coding style and add tests for any new features. It is recommend to discuss big changes in an Issue.\n\n## Packages using tv4\n\n* [chai-json-schema](http://chaijs.com/plugins/chai-json-schema) is a [Chai Assertion Library](http://chaijs.com) plugin to assert values against json-schema.\n* [grunt-tv4](http://www.github.com/Bartvds/grunt-tv4) is a plugin for [Grunt](http://http://gruntjs.com/) that uses tv4 to bulk validate json files.\n\n## License\n\nThe code is available as \"public domain\", meaning that it is completely free to use, without any restrictions at all. Read the full license [here](http://geraintluff.github.com/tv4/LICENSE.txt).\n\nIt's also available under an [MIT license](http://jsonary.com/LICENSE.txt).\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/geraintluff/tv4/issues" + }, + "homepage": "https://github.com/geraintluff/tv4", + "_id": "tv4@1.0.15", + "_shasum": "081e6823ee51d67aabe5b92ea3a00804902be155", + "_from": "https://github.com/hegemonic/tv4/tarball/own-properties", + "_resolved": "https://github.com/hegemonic/tv4/tarball/own-properties" +} diff --git a/third_party/jsdoc/node_modules/tv4/tv4.async-jquery.js b/third_party/jsdoc/node_modules/tv4/tv4.async-jquery.js new file mode 100644 index 0000000000..761f232ad7 --- /dev/null +++ b/third_party/jsdoc/node_modules/tv4/tv4.async-jquery.js @@ -0,0 +1,34 @@ +// Provides support for asynchronous validation (fetching schemas) using jQuery +// Callback is optional third argument to tv4.validate() - if not present, synchronous operation +// callback(result, error); +if (typeof (tv4.asyncValidate) === 'undefined') { + tv4.syncValidate = tv4.validate; + tv4.validate = function (data, schema, callback, checkRecursive, banUnknownProperties) { + if (typeof (callback) === 'undefined') { + return this.syncValidate(data, schema, checkRecursive, banUnknownProperties); + } else { + return this.asyncValidate(data, schema, callback, checkRecursive, banUnknownProperties); + } + }; + tv4.asyncValidate = function (data, schema, callback, checkRecursive, banUnknownProperties) { + var $ = jQuery; + var result = tv4.validate(data, schema, checkRecursive, banUnknownProperties); + if (!tv4.missing.length) { + callback(result, tv4.error); + } else { + // Make a request for each missing schema + var missingSchemas = $.map(tv4.missing, function (schemaUri) { + return $.getJSON(schemaUri).success(function (fetchedSchema) { + tv4.addSchema(schemaUri, fetchedSchema); + }).error(function () { + // If there's an error, just use an empty schema + tv4.addSchema(schemaUri, {}); + }); + }); + // When all requests done, try again + $.when.apply($, missingSchemas).done(function () { + var result = tv4.asyncValidate(data, schema, callback, checkRecursive, banUnknownProperties); + }); + } + }; +} diff --git a/third_party/jsdoc/node_modules/tv4/tv4.js b/third_party/jsdoc/node_modules/tv4/tv4.js new file mode 100644 index 0000000000..37a36241f1 --- /dev/null +++ b/third_party/jsdoc/node_modules/tv4/tv4.js @@ -0,0 +1,1388 @@ +/* +Author: Geraint Luff and others +Year: 2013 + +This code is released into the "public domain" by its author(s). Anybody may use, alter and distribute the code without restriction. The author makes no guarantees, and takes no liability of any kind for use of this code. + +If you find a bug or make an improvement, it would be courteous to let the author know, but it is not compulsory. +*/ +(function (global) { +'use strict'; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FObject%2Fkeys +if (!Object.keys) { + Object.keys = (function () { + var hasOwnProperty = Object.prototype.hasOwnProperty, + hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), + dontEnums = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor' + ], + dontEnumsLength = dontEnums.length; + + return function (obj) { + if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) { + throw new TypeError('Object.keys called on non-object'); + } + + var result = []; + + for (var prop in obj) { + if (hasOwnProperty.call(obj, prop)) { + result.push(prop); + } + } + + if (hasDontEnumBug) { + for (var i=0; i < dontEnumsLength; i++) { + if (hasOwnProperty.call(obj, dontEnums[i])) { + result.push(dontEnums[i]); + } + } + } + return result; + }; + })(); +} +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create +if (!Object.create) { + Object.create = (function(){ + function F(){} + + return function(o){ + if (arguments.length !== 1) { + throw new Error('Object.create implementation only accepts one parameter.'); + } + F.prototype = o; + return new F(); + }; + })(); +} +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray%2FisArray +if(!Array.isArray) { + Array.isArray = function (vArg) { + return Object.prototype.toString.call(vArg) === "[object Array]"; + }; +} +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray%2FindexOf +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { + if (this === null) { + throw new TypeError(); + } + var t = Object(this); + var len = t.length >>> 0; + + if (len === 0) { + return -1; + } + var n = 0; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n !== n) { // shortcut for verifying if it's NaN + n = 0; + } else if (n !== 0 && n !== Infinity && n !== -Infinity) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + if (n >= len) { + return -1; + } + var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); + for (; k < len; k++) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + }; +} + +// Grungey Object.isFrozen hack +if (!Object.isFrozen) { + Object.isFrozen = function (obj) { + var key = "tv4_test_frozen_key"; + while (obj.hasOwnProperty(key)) { + key += Math.random(); + } + try { + obj[key] = true; + delete obj[key]; + return false; + } catch (e) { + return true; + } + }; +} +var ValidatorContext = function ValidatorContext(parent, collectMultiple, errorMessages, options) { + this.missing = []; + this.missingMap = {}; + this.formatValidators = parent ? Object.create(parent.formatValidators) : {}; + this.schemas = parent ? Object.create(parent.schemas) : {}; + this.collectMultiple = collectMultiple; + this.errors = []; + this.handleError = collectMultiple ? this.collectError : this.returnError; + options = options || {}; + if (options.checkRecursive) { + this.checkRecursive = true; + this.scanned = []; + this.scannedFrozen = []; + this.scannedFrozenSchemas = []; + this.scannedFrozenValidationErrors = []; + this.validatedSchemasKey = 'tv4_validation_id'; + this.validationErrorsKey = 'tv4_validation_errors_id'; + } + if (options.banUnknownProperties) { + this.trackUnknownProperties = true; + this.knownPropertyPaths = {}; + this.unknownPropertyPaths = {}; + } + if (options.checkInheritedProperties) { + this.checkInheritedProperties = true; + } + if (options.checkNonEnumerableProperties) { + this.checkNonEnumerableProperties = true; + } + this.errorMessages = errorMessages; +}; +ValidatorContext.prototype.createError = function (code, messageParams, dataPath, schemaPath, subErrors) { + var messageTemplate = this.errorMessages[code] || ErrorMessagesDefault[code]; + if (typeof messageTemplate !== 'string') { + return new ValidationError(code, "Unknown error code " + code + ": " + JSON.stringify(messageParams), dataPath, schemaPath, subErrors); + } + // Adapted from Crockford's supplant() + var message = messageTemplate.replace(/\{([^{}]*)\}/g, function (whole, varName) { + var subValue = messageParams[varName]; + return typeof subValue === 'string' || typeof subValue === 'number' ? subValue : whole; + }); + return new ValidationError(code, message, dataPath, schemaPath, subErrors); +}; +ValidatorContext.prototype.returnError = function (error) { + return error; +}; +ValidatorContext.prototype.collectError = function (error) { + if (error) { + this.errors.push(error); + } + return null; +}; +ValidatorContext.prototype.prefixErrors = function (startIndex, dataPath, schemaPath) { + for (var i = startIndex; i < this.errors.length; i++) { + this.errors[i] = this.errors[i].prefixWith(dataPath, schemaPath); + } + return this; +}; +ValidatorContext.prototype.banUnknownProperties = function () { + if (this.trackUnknownProperties) { + var unknownPaths = Object.keys(this.unknownPropertyPaths); + for (var i = 0; i < unknownPaths.length; i++) { + var unknownPath = unknownPaths[i]; + var error = this.createError(ErrorCodes.UNKNOWN_PROPERTY, {path: unknownPath}, unknownPath, ""); + var result = this.handleError(error); + if (result) { + return result; + } + } + } + return null; +}; + +ValidatorContext.prototype.addFormat = function (format, validator) { + if (typeof format === 'object') { + var formatKeys = Object.keys(format); + for (var i = 0; i < formatKeys.length; i++) { + var key = formatKeys[i]; + this.addFormat(key, format[key]); + } + return this; + } + this.formatValidators[format] = validator; +}; +ValidatorContext.prototype.resolveRefs = function (schema, urlHistory) { + if (schema['$ref'] !== undefined) { + urlHistory = urlHistory || {}; + if (urlHistory[schema['$ref']]) { + return this.createError(ErrorCodes.CIRCULAR_REFERENCE, {urls: Object.keys(urlHistory).join(', ')}, '', ''); + } + urlHistory[schema['$ref']] = true; + schema = this.getSchema(schema['$ref'], urlHistory); + } + return schema; +}; +ValidatorContext.prototype.getSchema = function (url, urlHistory) { + var schema; + if (this.schemas[url] !== undefined) { + schema = this.schemas[url]; + return this.resolveRefs(schema, urlHistory); + } + var baseUrl = url; + var fragment = ""; + if (url.indexOf('#') !== -1) { + fragment = url.substring(url.indexOf("#") + 1); + baseUrl = url.substring(0, url.indexOf("#")); + } + if (typeof this.schemas[baseUrl] === 'object') { + schema = this.schemas[baseUrl]; + var pointerPath = decodeURIComponent(fragment); + if (pointerPath === "") { + return this.resolveRefs(schema, urlHistory); + } else if (pointerPath.charAt(0) !== "/") { + return undefined; + } + var parts = pointerPath.split("/").slice(1); + for (var i = 0; i < parts.length; i++) { + var component = parts[i].replace(/~1/g, "/").replace(/~0/g, "~"); + if (schema[component] === undefined) { + schema = undefined; + break; + } + schema = schema[component]; + } + if (schema !== undefined) { + return this.resolveRefs(schema, urlHistory); + } + } + if (this.missing[baseUrl] === undefined) { + this.missing.push(baseUrl); + this.missing[baseUrl] = baseUrl; + this.missingMap[baseUrl] = baseUrl; + } +}; +ValidatorContext.prototype.searchSchemas = function (schema, url) { + if (schema && typeof schema === "object") { + if (typeof schema.id === "string") { + if (isTrustedUrl(url, schema.id)) { + if (this.schemas[schema.id] === undefined) { + this.schemas[schema.id] = schema; + } + } + } + var schemaKeys = Object.keys(schema); + for (var i = 0; i < schemaKeys.length; i++) { + var key = schemaKeys[i]; + if (key !== "enum") { + if (typeof schema[key] === "object") { + this.searchSchemas(schema[key], url); + } else if (key === "$ref") { + var uri = getDocumentUri(schema[key]); + if (uri && this.schemas[uri] === undefined && this.missingMap[uri] === undefined) { + this.missingMap[uri] = uri; + } + } + } + } + } +}; +ValidatorContext.prototype.addSchema = function (url, schema) { + //overload + if (typeof url !== 'string' || typeof schema === 'undefined') { + if (typeof url === 'object' && typeof url.id === 'string') { + schema = url; + url = schema.id; + } + else { + return; + } + } + if (url = getDocumentUri(url) + "#") { + // Remove empty fragment + url = getDocumentUri(url); + } + this.schemas[url] = schema; + delete this.missingMap[url]; + normSchema(schema, url); + this.searchSchemas(schema, url); +}; + +ValidatorContext.prototype.getSchemaMap = function () { + var map = {}; + var schemaKeys = Object.keys(this.schemas); + for (var i = 0; i < schemaKeys.length; i++) { + var key = schemaKeys[i]; + map[key] = this.schemas[key]; + } + return map; +}; + +ValidatorContext.prototype.getSchemaUris = function (filterRegExp) { + var list = []; + var schemaKeys = Object.keys(this.schemas); + for (var i = 0; i < schemaKeys.length; i++) { + var key = schemaKeys[i]; + if (!filterRegExp || filterRegExp.test(key)) { + list.push(key); + } + } + return list; +}; + +ValidatorContext.prototype.getMissingUris = function (filterRegExp) { + var list = []; + var missingKeys = Object.keys(this.missingMap); + for (var i = 0; i < missingKeys.length; i++) { + var key = missingKeys[i]; + if (!filterRegExp || filterRegExp.test(key)) { + list.push(key); + } + } + return list; +}; + +ValidatorContext.prototype.dropSchemas = function () { + this.schemas = {}; + this.reset(); +}; +ValidatorContext.prototype.reset = function () { + this.missing = []; + this.missingMap = {}; + this.errors = []; +}; + +ValidatorContext.prototype.validateAll = function (data, schema, dataPathParts, schemaPathParts, dataPointerPath) { + var topLevel; + schema = this.resolveRefs(schema); + if (!schema) { + return null; + } else if (schema instanceof ValidationError) { + this.errors.push(schema); + return schema; + } + + var startErrorCount = this.errors.length; + var frozenIndex, scannedFrozenSchemaIndex = null, scannedSchemasIndex = null; + if (this.checkRecursive && (typeof data) === 'object') { + topLevel = !this.scanned.length; + if (data[this.validatedSchemasKey]) { + var schemaIndex = data[this.validatedSchemasKey].indexOf(schema); + if (schemaIndex !== -1) { + this.errors = this.errors.concat(data[this.validationErrorsKey][schemaIndex]); + return null; + } + } + if (Object.isFrozen(data)) { + frozenIndex = this.scannedFrozen.indexOf(data); + if (frozenIndex !== -1) { + var frozenSchemaIndex = this.scannedFrozenSchemas[frozenIndex].indexOf(schema); + if (frozenSchemaIndex !== -1) { + this.errors = this.errors.concat(this.scannedFrozenValidationErrors[frozenIndex][frozenSchemaIndex]); + return null; + } + } + } + this.scanned.push(data); + if (Object.isFrozen(data)) { + if (frozenIndex === -1) { + frozenIndex = this.scannedFrozen.length; + this.scannedFrozen.push(data); + this.scannedFrozenSchemas.push([]); + } + scannedFrozenSchemaIndex = this.scannedFrozenSchemas[frozenIndex].length; + this.scannedFrozenSchemas[frozenIndex][scannedFrozenSchemaIndex] = schema; + this.scannedFrozenValidationErrors[frozenIndex][scannedFrozenSchemaIndex] = []; + } else { + if (!data[this.validatedSchemasKey]) { + try { + Object.defineProperty(data, this.validatedSchemasKey, { + value: [], + configurable: true + }); + Object.defineProperty(data, this.validationErrorsKey, { + value: [], + configurable: true + }); + } catch (e) { + //IE 7/8 workaround + data[this.validatedSchemasKey] = []; + data[this.validationErrorsKey] = []; + } + } + scannedSchemasIndex = data[this.validatedSchemasKey].length; + data[this.validatedSchemasKey][scannedSchemasIndex] = schema; + data[this.validationErrorsKey][scannedSchemasIndex] = []; + } + } + + var errorCount = this.errors.length; + var error = this.validateBasic(data, schema, dataPointerPath) + || this.validateNumeric(data, schema, dataPointerPath) + || this.validateString(data, schema, dataPointerPath) + || this.validateArray(data, schema, dataPointerPath) + || this.validateObject(data, schema, dataPointerPath) + || this.validateCombinations(data, schema, dataPointerPath) + || this.validateFormat(data, schema, dataPointerPath) + || null; + + if (topLevel) { + while (this.scanned.length) { + var item = this.scanned.pop(); + delete item[this.validatedSchemasKey]; + } + this.scannedFrozen = []; + this.scannedFrozenSchemas = []; + } + + if (error || errorCount !== this.errors.length) { + while ((dataPathParts && dataPathParts.length) || (schemaPathParts && schemaPathParts.length)) { + var dataPart = (dataPathParts && dataPathParts.length) ? "" + dataPathParts.pop() : null; + var schemaPart = (schemaPathParts && schemaPathParts.length) ? "" + schemaPathParts.pop() : null; + if (error) { + error = error.prefixWith(dataPart, schemaPart); + } + this.prefixErrors(errorCount, dataPart, schemaPart); + } + } + + if (scannedFrozenSchemaIndex !== null) { + this.scannedFrozenValidationErrors[frozenIndex][scannedFrozenSchemaIndex] = this.errors.slice(startErrorCount); + } else if (scannedSchemasIndex !== null) { + data[this.validationErrorsKey][scannedSchemasIndex] = this.errors.slice(startErrorCount); + } + + return this.handleError(error); +}; +ValidatorContext.prototype.validateFormat = function (data, schema) { + if (typeof schema.format !== 'string' || !this.formatValidators[schema.format]) { + return null; + } + var errorMessage = this.formatValidators[schema.format].call(null, data, schema); + if (typeof errorMessage === 'string' || typeof errorMessage === 'number') { + return this.createError(ErrorCodes.FORMAT_CUSTOM, {message: errorMessage}).prefixWith(null, "format"); + } else if (errorMessage && typeof errorMessage === 'object') { + return this.createError(ErrorCodes.FORMAT_CUSTOM, {message: errorMessage.message || "?"}, errorMessage.dataPath || null, errorMessage.schemaPath || "/format"); + } + return null; +}; + +function recursiveCompare(A, B) { + if (A === B) { + return true; + } + if (typeof A === "object" && typeof B === "object") { + if (Array.isArray(A) !== Array.isArray(B)) { + return false; + } else if (Array.isArray(A)) { + if (A.length !== B.length) { + return false; + } + for (var i = 0; i < A.length; i++) { + if (!recursiveCompare(A[i], B[i])) { + return false; + } + } + } else { + var key; + for (key in A) { + if (B[key] === undefined && A[key] !== undefined) { + return false; + } + } + for (key in B) { + if (A[key] === undefined && B[key] !== undefined) { + return false; + } + } + for (key in A) { + if (!recursiveCompare(A[key], B[key])) { + return false; + } + } + } + return true; + } + return false; +} + +ValidatorContext.prototype.validateBasic = function validateBasic(data, schema, dataPointerPath) { + var error; + if (error = this.validateType(data, schema, dataPointerPath)) { + return error.prefixWith(null, "type"); + } + if (error = this.validateEnum(data, schema, dataPointerPath)) { + return error.prefixWith(null, "type"); + } + return null; +}; + +ValidatorContext.prototype.validateType = function validateType(data, schema) { + if (schema.type === undefined) { + return null; + } + var dataType = typeof data; + if (data === null) { + dataType = "null"; + } else if (Array.isArray(data)) { + dataType = "array"; + } + var allowedTypes = schema.type; + if (typeof allowedTypes !== "object") { + allowedTypes = [allowedTypes]; + } + + for (var i = 0; i < allowedTypes.length; i++) { + var type = allowedTypes[i]; + if (type === dataType || (type === "integer" && dataType === "number" && (data % 1 === 0))) { + return null; + } + } + return this.createError(ErrorCodes.INVALID_TYPE, {type: dataType, expected: allowedTypes.join("/")}); +}; + +ValidatorContext.prototype.validateEnum = function validateEnum(data, schema) { + if (schema["enum"] === undefined) { + return null; + } + for (var i = 0; i < schema["enum"].length; i++) { + var enumVal = schema["enum"][i]; + if (recursiveCompare(data, enumVal)) { + return null; + } + } + return this.createError(ErrorCodes.ENUM_MISMATCH, {value: (typeof JSON !== 'undefined') ? JSON.stringify(data) : data}); +}; + +ValidatorContext.prototype.validateNumeric = function validateNumeric(data, schema, dataPointerPath) { + return this.validateMultipleOf(data, schema, dataPointerPath) + || this.validateMinMax(data, schema, dataPointerPath) + || null; +}; + +ValidatorContext.prototype.validateMultipleOf = function validateMultipleOf(data, schema) { + var multipleOf = schema.multipleOf || schema.divisibleBy; + if (multipleOf === undefined) { + return null; + } + if (typeof data === "number") { + if (data % multipleOf !== 0) { + return this.createError(ErrorCodes.NUMBER_MULTIPLE_OF, {value: data, multipleOf: multipleOf}); + } + } + return null; +}; + +ValidatorContext.prototype.validateMinMax = function validateMinMax(data, schema) { + if (typeof data !== "number") { + return null; + } + if (schema.minimum !== undefined) { + if (data < schema.minimum) { + return this.createError(ErrorCodes.NUMBER_MINIMUM, {value: data, minimum: schema.minimum}).prefixWith(null, "minimum"); + } + if (schema.exclusiveMinimum && data === schema.minimum) { + return this.createError(ErrorCodes.NUMBER_MINIMUM_EXCLUSIVE, {value: data, minimum: schema.minimum}).prefixWith(null, "exclusiveMinimum"); + } + } + if (schema.maximum !== undefined) { + if (data > schema.maximum) { + return this.createError(ErrorCodes.NUMBER_MAXIMUM, {value: data, maximum: schema.maximum}).prefixWith(null, "maximum"); + } + if (schema.exclusiveMaximum && data === schema.maximum) { + return this.createError(ErrorCodes.NUMBER_MAXIMUM_EXCLUSIVE, {value: data, maximum: schema.maximum}).prefixWith(null, "exclusiveMaximum"); + } + } + return null; +}; + +ValidatorContext.prototype.validateString = function validateString(data, schema, dataPointerPath) { + return this.validateStringLength(data, schema, dataPointerPath) + || this.validateStringPattern(data, schema, dataPointerPath) + || null; +}; + +ValidatorContext.prototype.validateStringLength = function validateStringLength(data, schema) { + if (typeof data !== "string") { + return null; + } + if (schema.minLength !== undefined) { + if (data.length < schema.minLength) { + return this.createError(ErrorCodes.STRING_LENGTH_SHORT, {length: data.length, minimum: schema.minLength}).prefixWith(null, "minLength"); + } + } + if (schema.maxLength !== undefined) { + if (data.length > schema.maxLength) { + return this.createError(ErrorCodes.STRING_LENGTH_LONG, {length: data.length, maximum: schema.maxLength}).prefixWith(null, "maxLength"); + } + } + return null; +}; + +ValidatorContext.prototype.validateStringPattern = function validateStringPattern(data, schema) { + if (typeof data !== "string" || schema.pattern === undefined) { + return null; + } + var regexp = new RegExp(schema.pattern); + if (!regexp.test(data)) { + return this.createError(ErrorCodes.STRING_PATTERN, {pattern: schema.pattern}).prefixWith(null, "pattern"); + } + return null; +}; +ValidatorContext.prototype.validateArray = function validateArray(data, schema, dataPointerPath) { + if (!Array.isArray(data)) { + return null; + } + return this.validateArrayLength(data, schema, dataPointerPath) + || this.validateArrayUniqueItems(data, schema, dataPointerPath) + || this.validateArrayItems(data, schema, dataPointerPath) + || null; +}; + +ValidatorContext.prototype.validateArrayLength = function validateArrayLength(data, schema) { + var error; + if (schema.minItems !== undefined) { + if (data.length < schema.minItems) { + error = (this.createError(ErrorCodes.ARRAY_LENGTH_SHORT, {length: data.length, minimum: schema.minItems})).prefixWith(null, "minItems"); + if (this.handleError(error)) { + return error; + } + } + } + if (schema.maxItems !== undefined) { + if (data.length > schema.maxItems) { + error = (this.createError(ErrorCodes.ARRAY_LENGTH_LONG, {length: data.length, maximum: schema.maxItems})).prefixWith(null, "maxItems"); + if (this.handleError(error)) { + return error; + } + } + } + return null; +}; + +ValidatorContext.prototype.validateArrayUniqueItems = function validateArrayUniqueItems(data, schema) { + if (schema.uniqueItems) { + for (var i = 0; i < data.length; i++) { + for (var j = i + 1; j < data.length; j++) { + if (recursiveCompare(data[i], data[j])) { + var error = (this.createError(ErrorCodes.ARRAY_UNIQUE, {match1: i, match2: j})).prefixWith(null, "uniqueItems"); + if (this.handleError(error)) { + return error; + } + } + } + } + } + return null; +}; + +ValidatorContext.prototype.validateArrayItems = function validateArrayItems(data, schema, dataPointerPath) { + if (schema.items === undefined) { + return null; + } + var error, i; + if (Array.isArray(schema.items)) { + for (i = 0; i < data.length; i++) { + if (i < schema.items.length) { + if (error = this.validateAll(data[i], schema.items[i], [i], ["items", i], dataPointerPath + "/" + i)) { + return error; + } + } else if (schema.additionalItems !== undefined) { + if (typeof schema.additionalItems === "boolean") { + if (!schema.additionalItems) { + error = (this.createError(ErrorCodes.ARRAY_ADDITIONAL_ITEMS, {})).prefixWith("" + i, "additionalItems"); + if (this.handleError(error)) { + return error; + } + } + } else if (error = this.validateAll(data[i], schema.additionalItems, [i], ["additionalItems"], dataPointerPath + "/" + i)) { + return error; + } + } + } + } else { + for (i = 0; i < data.length; i++) { + if (error = this.validateAll(data[i], schema.items, [i], ["items"], dataPointerPath + "/" + i)) { + return error; + } + } + } + return null; +}; + +ValidatorContext.prototype.validateObject = function validateObject(data, schema, dataPointerPath) { + if (typeof data !== "object" || data === null || Array.isArray(data)) { + return null; + } + return this.validateObjectMinMaxProperties(data, schema, dataPointerPath) + || this.validateObjectRequiredProperties(data, schema, dataPointerPath) + || this.validateObjectProperties(data, schema, dataPointerPath) + || this.validateObjectDependencies(data, schema, dataPointerPath) + || null; +}; + +ValidatorContext.prototype.validateObjectMinMaxProperties = function validateObjectMinMaxProperties(data, schema) { + var keys = Object.keys(data); + var error; + if (schema.minProperties !== undefined) { + if (keys.length < schema.minProperties) { + error = this.createError(ErrorCodes.OBJECT_PROPERTIES_MINIMUM, {propertyCount: keys.length, minimum: schema.minProperties}).prefixWith(null, "minProperties"); + if (this.handleError(error)) { + return error; + } + } + } + if (schema.maxProperties !== undefined) { + if (keys.length > schema.maxProperties) { + error = this.createError(ErrorCodes.OBJECT_PROPERTIES_MAXIMUM, {propertyCount: keys.length, maximum: schema.maxProperties}).prefixWith(null, "maxProperties"); + if (this.handleError(error)) { + return error; + } + } + } + return null; +}; + +ValidatorContext.prototype.validateObjectRequiredProperties = function validateObjectRequiredProperties(data, schema) { + if (schema.required !== undefined) { + for (var i = 0; i < schema.required.length; i++) { + var key = schema.required[i]; + if (data[key] === undefined) { + var error = this.createError(ErrorCodes.OBJECT_REQUIRED, {key: key}).prefixWith(key, "" + i).prefixWith(null, "required"); + if (this.handleError(error)) { + return error; + } + } + } + } + return null; +}; + +function findProperties(obj, checkInheritedProperties, checkNonEnumerableProperties) { + // Start with the object's own enumerable properties + var properties = Object.keys(obj); + if (checkInheritedProperties) { + for (var key in obj) { + if (properties.indexOf(key) === -1) { + properties.push(key); + } + } + } + // Object.getOwnPropertyNames is not available in IE 8 and below (and cannot be polyfilled) + if (checkNonEnumerableProperties && Object.getOwnPropertyNames) { + Object.getOwnPropertyNames(obj).forEach(function (name) { + if (properties.indexOf(name) === -1) { + properties.push(name); + } + }); + } + return properties; +} + +ValidatorContext.prototype.validateObjectProperties = function validateObjectProperties(data, schema, dataPointerPath) { + var error; + var dataKeys = findProperties(data, this.checkInheritedProperties, this.checkNonEnumerableProperties); + for (var i = 0; i < dataKeys.length; i++) { + var key = dataKeys[i]; + var keyPointerPath = dataPointerPath + "/" + key.replace(/~/g, '~0').replace(/\//g, '~1'); + var foundMatch = false; + if (schema.properties !== undefined && schema.properties[key] !== undefined) { + foundMatch = true; + if (error = this.validateAll(data[key], schema.properties[key], [key], ["properties", key], keyPointerPath)) { + return error; + } + } + if (schema.patternProperties !== undefined) { + var patternKeys = Object.keys(schema.patternProperties); + for (var j = 0; j < patternKeys.length; j++) { + var patternKey = patternKeys[j]; + var regexp = new RegExp(patternKey); + if (regexp.test(key)) { + foundMatch = true; + if (error = this.validateAll(data[key], schema.patternProperties[patternKey], [key], ["patternProperties", patternKey], keyPointerPath)) { + return error; + } + } + } + } + if (!foundMatch) { + if (schema.additionalProperties !== undefined) { + if (this.trackUnknownProperties) { + this.knownPropertyPaths[keyPointerPath] = true; + delete this.unknownPropertyPaths[keyPointerPath]; + } + if (typeof schema.additionalProperties === "boolean") { + if (!schema.additionalProperties) { + error = this.createError(ErrorCodes.OBJECT_ADDITIONAL_PROPERTIES, {}).prefixWith(key, "additionalProperties"); + if (this.handleError(error)) { + return error; + } + } + } else { + if (error = this.validateAll(data[key], schema.additionalProperties, [key], ["additionalProperties"], keyPointerPath)) { + return error; + } + } + } else if (this.trackUnknownProperties && !this.knownPropertyPaths[keyPointerPath]) { + this.unknownPropertyPaths[keyPointerPath] = true; + } + } else if (this.trackUnknownProperties) { + this.knownPropertyPaths[keyPointerPath] = true; + delete this.unknownPropertyPaths[keyPointerPath]; + } + } + return null; +}; + +ValidatorContext.prototype.validateObjectDependencies = function validateObjectDependencies(data, schema, dataPointerPath) { + var error; + if (schema.dependencies !== undefined) { + var depKeys = Object.keys(schema.dependencies); + for (var i = 0; i < depKeys.length; i++) { + var depKey = depKeys[i]; + if (data[depKey] !== undefined) { + var dep = schema.dependencies[depKey]; + if (typeof dep === "string") { + if (data[dep] === undefined) { + error = this.createError(ErrorCodes.OBJECT_DEPENDENCY_KEY, {key: depKey, missing: dep}).prefixWith(null, depKey).prefixWith(null, "dependencies"); + if (this.handleError(error)) { + return error; + } + } + } else if (Array.isArray(dep)) { + for (var j = 0; j < dep.length; j++) { + var requiredKey = dep[j]; + if (data[requiredKey] === undefined) { + error = this.createError(ErrorCodes.OBJECT_DEPENDENCY_KEY, {key: depKey, missing: requiredKey}).prefixWith(null, "" + i).prefixWith(null, depKey).prefixWith(null, "dependencies"); + if (this.handleError(error)) { + return error; + } + } + } + } else { + if (error = this.validateAll(data, dep, [], ["dependencies", depKey], dataPointerPath)) { + return error; + } + } + } + } + } + return null; +}; + +ValidatorContext.prototype.validateCombinations = function validateCombinations(data, schema, dataPointerPath) { + return this.validateAllOf(data, schema, dataPointerPath) + || this.validateAnyOf(data, schema, dataPointerPath) + || this.validateOneOf(data, schema, dataPointerPath) + || this.validateNot(data, schema, dataPointerPath) + || null; +}; + +ValidatorContext.prototype.validateAllOf = function validateAllOf(data, schema, dataPointerPath) { + if (schema.allOf === undefined) { + return null; + } + var error; + for (var i = 0; i < schema.allOf.length; i++) { + var subSchema = schema.allOf[i]; + if (error = this.validateAll(data, subSchema, [], ["allOf", i], dataPointerPath)) { + return error; + } + } + return null; +}; + +ValidatorContext.prototype.validateAnyOf = function validateAnyOf(data, schema, dataPointerPath) { + if (schema.anyOf === undefined) { + return null; + } + var errors = []; + var startErrorCount = this.errors.length; + var oldUnknownPropertyPaths, oldKnownPropertyPaths; + if (this.trackUnknownProperties) { + oldUnknownPropertyPaths = this.unknownPropertyPaths; + oldKnownPropertyPaths = this.knownPropertyPaths; + } + var errorAtEnd = true; + for (var i = 0; i < schema.anyOf.length; i++) { + if (this.trackUnknownProperties) { + this.unknownPropertyPaths = {}; + this.knownPropertyPaths = {}; + } + var subSchema = schema.anyOf[i]; + + var errorCount = this.errors.length; + var error = this.validateAll(data, subSchema, [], ["anyOf", i], dataPointerPath); + + if (error === null && errorCount === this.errors.length) { + this.errors = this.errors.slice(0, startErrorCount); + + if (this.trackUnknownProperties) { + var knownKeys = Object.keys(this.knownPropertyPaths); + for (var j = 0; j < knownKeys.length; j++) { + var knownKey = knownKeys[j]; + oldKnownPropertyPaths[knownKey] = true; + delete oldUnknownPropertyPaths[knownKey]; + } + var unknownKeys = Object.keys(this.unknownPropertyPaths); + for (j = 0; j < unknownKeys.length; j++) { + var unknownKey = unknownKeys[j]; + if (!oldKnownPropertyPaths[unknownKey]) { + oldUnknownPropertyPaths[unknownKey] = true; + } + } + // We need to continue looping so we catch all the property definitions, but we don't want to return an error + errorAtEnd = false; + continue; + } + + return null; + } + if (error) { + errors.push(error.prefixWith(null, "" + i).prefixWith(null, "anyOf")); + } + } + if (this.trackUnknownProperties) { + this.unknownPropertyPaths = oldUnknownPropertyPaths; + this.knownPropertyPaths = oldKnownPropertyPaths; + } + if (errorAtEnd) { + errors = errors.concat(this.errors.slice(startErrorCount)); + this.errors = this.errors.slice(0, startErrorCount); + return this.createError(ErrorCodes.ANY_OF_MISSING, {}, "", "/anyOf", errors); + } +}; + +ValidatorContext.prototype.validateOneOf = function validateOneOf(data, schema, dataPointerPath) { + if (schema.oneOf === undefined) { + return null; + } + var validIndex = null; + var errors = []; + var startErrorCount = this.errors.length; + var oldUnknownPropertyPaths, oldKnownPropertyPaths; + if (this.trackUnknownProperties) { + oldUnknownPropertyPaths = this.unknownPropertyPaths; + oldKnownPropertyPaths = this.knownPropertyPaths; + } + for (var i = 0; i < schema.oneOf.length; i++) { + if (this.trackUnknownProperties) { + this.unknownPropertyPaths = {}; + this.knownPropertyPaths = {}; + } + var subSchema = schema.oneOf[i]; + + var errorCount = this.errors.length; + var error = this.validateAll(data, subSchema, [], ["oneOf", i], dataPointerPath); + + if (error === null && errorCount === this.errors.length) { + if (validIndex === null) { + validIndex = i; + } else { + this.errors = this.errors.slice(0, startErrorCount); + return this.createError(ErrorCodes.ONE_OF_MULTIPLE, {index1: validIndex, index2: i}, "", "/oneOf"); + } + if (this.trackUnknownProperties) { + var knownKeys = Object.keys(this.knownPropertyPaths); + for (var j = 0; j < knownKeys.length; j++) { + var knownKey = knownKeys[j]; + oldKnownPropertyPaths[knownKey] = true; + delete oldUnknownPropertyPaths[knownKey]; + } + var unknownKeys = Object.keys(this.unknownPropertyPaths); + for (j = 0; j < unknownKeys.length; j++) { + var unknownKey = unknownKeys[j]; + if (!oldKnownPropertyPaths[unknownKey]) { + oldUnknownPropertyPaths[unknownKey] = true; + } + } + } + } else if (error) { + errors.push(error.prefixWith(null, "" + i).prefixWith(null, "oneOf")); + } + } + if (this.trackUnknownProperties) { + this.unknownPropertyPaths = oldUnknownPropertyPaths; + this.knownPropertyPaths = oldKnownPropertyPaths; + } + if (validIndex === null) { + errors = errors.concat(this.errors.slice(startErrorCount)); + this.errors = this.errors.slice(0, startErrorCount); + return this.createError(ErrorCodes.ONE_OF_MISSING, {}, "", "/oneOf", errors); + } else { + this.errors = this.errors.slice(0, startErrorCount); + } + return null; +}; + +ValidatorContext.prototype.validateNot = function validateNot(data, schema, dataPointerPath) { + if (schema.not === undefined) { + return null; + } + var oldErrorCount = this.errors.length; + var oldUnknownPropertyPaths, oldKnownPropertyPaths; + if (this.trackUnknownProperties) { + oldUnknownPropertyPaths = this.unknownPropertyPaths; + oldKnownPropertyPaths = this.knownPropertyPaths; + this.unknownPropertyPaths = {}; + this.knownPropertyPaths = {}; + } + var error = this.validateAll(data, schema.not, null, null, dataPointerPath); + var notErrors = this.errors.slice(oldErrorCount); + this.errors = this.errors.slice(0, oldErrorCount); + if (this.trackUnknownProperties) { + this.unknownPropertyPaths = oldUnknownPropertyPaths; + this.knownPropertyPaths = oldKnownPropertyPaths; + } + if (error === null && notErrors.length === 0) { + return this.createError(ErrorCodes.NOT_PASSED, {}, "", "/not"); + } + return null; +}; + +// parseURI() and resolveUrl() are from https://gist.github.com/1088850 +// - released as public domain by author ("Yaffle") - see comments on gist + +function parseURI(url) { + var m = String(url).replace(/^\s+|\s+$/g, '').match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/); + // authority = '//' + user + ':' + pass '@' + hostname + ':' port + return (m ? { + href : m[0] || '', + protocol : m[1] || '', + authority: m[2] || '', + host : m[3] || '', + hostname : m[4] || '', + port : m[5] || '', + pathname : m[6] || '', + search : m[7] || '', + hash : m[8] || '' + } : null); +} + +function resolveUrl(base, href) {// RFC 3986 + + function removeDotSegments(input) { + var output = []; + input.replace(/^(\.\.?(\/|$))+/, '') + .replace(/\/(\.(\/|$))+/g, '/') + .replace(/\/\.\.$/, '/../') + .replace(/\/?[^\/]*/g, function (p) { + if (p === '/..') { + output.pop(); + } else { + output.push(p); + } + }); + return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : ''); + } + + href = parseURI(href || ''); + base = parseURI(base || ''); + + return !href || !base ? null : (href.protocol || base.protocol) + + (href.protocol || href.authority ? href.authority : base.authority) + + removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) + + (href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) + + href.hash; +} + +function getDocumentUri(uri) { + return uri.split('#')[0]; +} +function normSchema(schema, baseUri) { + if (schema && typeof schema === "object") { + var i; + if (baseUri === undefined) { + baseUri = schema.id; + } else if (typeof schema.id === "string") { + baseUri = resolveUrl(baseUri, schema.id); + schema.id = baseUri; + } + if (Array.isArray(schema)) { + for (i = 0; i < schema.length; i++) { + normSchema(schema[i], baseUri); + } + } else if (typeof schema['$ref'] === "string") { + schema['$ref'] = resolveUrl(baseUri, schema['$ref']); + } else { + var schemaKeys = Object.keys(schema); + for (i = 0; i < schemaKeys.length; i++) { + var key = schemaKeys[i]; + if (key !== "enum") { + normSchema(schema[key], baseUri); + } + } + } + } +} + +var ErrorCodes = { + INVALID_TYPE: 0, + ENUM_MISMATCH: 1, + ANY_OF_MISSING: 10, + ONE_OF_MISSING: 11, + ONE_OF_MULTIPLE: 12, + NOT_PASSED: 13, + // Numeric errors + NUMBER_MULTIPLE_OF: 100, + NUMBER_MINIMUM: 101, + NUMBER_MINIMUM_EXCLUSIVE: 102, + NUMBER_MAXIMUM: 103, + NUMBER_MAXIMUM_EXCLUSIVE: 104, + // String errors + STRING_LENGTH_SHORT: 200, + STRING_LENGTH_LONG: 201, + STRING_PATTERN: 202, + // Object errors + OBJECT_PROPERTIES_MINIMUM: 300, + OBJECT_PROPERTIES_MAXIMUM: 301, + OBJECT_REQUIRED: 302, + OBJECT_ADDITIONAL_PROPERTIES: 303, + OBJECT_DEPENDENCY_KEY: 304, + // Array errors + ARRAY_LENGTH_SHORT: 400, + ARRAY_LENGTH_LONG: 401, + ARRAY_UNIQUE: 402, + ARRAY_ADDITIONAL_ITEMS: 403, + // Format errors + FORMAT_CUSTOM: 500, + // Schema structure + CIRCULAR_REFERENCE: 600, + // Non-standard validation options + UNKNOWN_PROPERTY: 1000 +}; +var ErrorMessagesDefault = { + INVALID_TYPE: "invalid type: {type} (expected {expected})", + ENUM_MISMATCH: "No enum match for: {value}", + ANY_OF_MISSING: "Data does not match any schemas from \"anyOf\"", + ONE_OF_MISSING: "Data does not match any schemas from \"oneOf\"", + ONE_OF_MULTIPLE: "Data is valid against more than one schema from \"oneOf\": indices {index1} and {index2}", + NOT_PASSED: "Data matches schema from \"not\"", + // Numeric errors + NUMBER_MULTIPLE_OF: "Value {value} is not a multiple of {multipleOf}", + NUMBER_MINIMUM: "Value {value} is less than minimum {minimum}", + NUMBER_MINIMUM_EXCLUSIVE: "Value {value} is equal to exclusive minimum {minimum}", + NUMBER_MAXIMUM: "Value {value} is greater than maximum {maximum}", + NUMBER_MAXIMUM_EXCLUSIVE: "Value {value} is equal to exclusive maximum {maximum}", + // String errors + STRING_LENGTH_SHORT: "String is too short ({length} chars), minimum {minimum}", + STRING_LENGTH_LONG: "String is too long ({length} chars), maximum {maximum}", + STRING_PATTERN: "String does not match pattern: {pattern}", + // Object errors + OBJECT_PROPERTIES_MINIMUM: "Too few properties defined ({propertyCount}), minimum {minimum}", + OBJECT_PROPERTIES_MAXIMUM: "Too many properties defined ({propertyCount}), maximum {maximum}", + OBJECT_REQUIRED: "Missing required property: {key}", + OBJECT_ADDITIONAL_PROPERTIES: "Additional properties not allowed", + OBJECT_DEPENDENCY_KEY: "Dependency failed - key must exist: {missing} (due to key: {key})", + // Array errors + ARRAY_LENGTH_SHORT: "Array is too short ({length}), minimum {minimum}", + ARRAY_LENGTH_LONG: "Array is too long ({length}), maximum {maximum}", + ARRAY_UNIQUE: "Array items are not unique (indices {match1} and {match2})", + ARRAY_ADDITIONAL_ITEMS: "Additional items not allowed", + // Format errors + FORMAT_CUSTOM: "Format validation failed ({message})", + // Schema structure + CIRCULAR_REFERENCE: "Circular $refs: {urls}", + // Non-standard validation options + UNKNOWN_PROPERTY: "Unknown property (not in schema)" +}; + +function ValidationError(code, message, dataPath, schemaPath, subErrors) { + Error.call(this); + if (code === undefined) { + throw new Error ("No code supplied for error: "+ message); + } + this.message = message; + this.code = code; + this.dataPath = dataPath || ""; + this.schemaPath = schemaPath || ""; + this.subErrors = subErrors || null; + + var err = new Error(this.message); + this.stack = err.stack || err.stacktrace; + if (!this.stack) { + try { + throw err; + } + catch(err) { + this.stack = err.stack || err.stacktrace; + } + } +} +ValidationError.prototype = Object.create(Error.prototype); +ValidationError.prototype.constructor = ValidationError; +ValidationError.prototype.name = 'ValidationError'; + +ValidationError.prototype.prefixWith = function (dataPrefix, schemaPrefix) { + if (dataPrefix !== null) { + dataPrefix = dataPrefix.replace(/~/g, "~0").replace(/\//g, "~1"); + this.dataPath = "/" + dataPrefix + this.dataPath; + } + if (schemaPrefix !== null) { + schemaPrefix = schemaPrefix.replace(/~/g, "~0").replace(/\//g, "~1"); + this.schemaPath = "/" + schemaPrefix + this.schemaPath; + } + if (this.subErrors !== null) { + for (var i = 0; i < this.subErrors.length; i++) { + this.subErrors[i].prefixWith(dataPrefix, schemaPrefix); + } + } + return this; +}; + +function isTrustedUrl(baseUrl, testUrl) { + if(testUrl.substring(0, baseUrl.length) === baseUrl){ + var remainder = testUrl.substring(baseUrl.length); + if ((testUrl.length > 0 && testUrl.charAt(baseUrl.length - 1) === "/") + || remainder.charAt(0) === "#" + || remainder.charAt(0) === "?") { + return true; + } + } + return false; +} + +function makeOptionsObject(opts) { + var options = {}; + // old method signatures accepted checkRecursive and banUnknownProperties + if (opts[0] !== undefined) { + options.checkRecursive = opts[0]; + } + if (opts[1] !== undefined) { + options.banUnknownProperties = opts[1]; + } + return options; +} + +var languages = {}; +function createApi(language) { + var globalContext = new ValidatorContext(); + var currentLanguage = language || 'en'; + var api = { + addFormat: function () { + globalContext.addFormat.apply(globalContext, arguments); + }, + language: function (code) { + if (!code) { + return currentLanguage; + } + if (!languages[code]) { + code = code.split('-')[0]; // fall back to base language + } + if (languages[code]) { + currentLanguage = code; + return code; // so you can tell if fall-back has happened + } + return false; + }, + addLanguage: function (code, messageMap) { + var key; + for (key in ErrorCodes) { + if (messageMap[key] && !messageMap[ErrorCodes[key]]) { + messageMap[ErrorCodes[key]] = messageMap[key]; + } + } + var rootCode = code.split('-')[0]; + if (!languages[rootCode]) { // use for base language if not yet defined + languages[code] = messageMap; + languages[rootCode] = messageMap; + } else { + languages[code] = Object.create(languages[rootCode]); + for (key in messageMap) { + if (typeof languages[rootCode][key] === 'undefined') { + languages[rootCode][key] = messageMap[key]; + } + languages[code][key] = messageMap[key]; + } + } + return this; + }, + freshApi: function (language) { + var result = createApi(); + if (language) { + result.language(language); + } + return result; + }, + validate: function (data, schema, options) { + if (typeof schema === "string") { + schema = {"$ref": schema}; + } + if (typeof options !== "object" || options === null) { + options = makeOptionsObject(Array.prototype.slice.call(arguments, 2)); + } + var context = new ValidatorContext(globalContext, false, languages[currentLanguage], options); + context.addSchema("", schema); + var error = context.validateAll(data, schema, null, null, ""); + if (!error && options.banUnknownProperties) { + error = context.banUnknownProperties(); + } + this.error = error; + this.missing = context.missing; + this.valid = (error === null); + return this.valid; + }, + validateResult: function () { + var result = {}; + this.validate.apply(result, arguments); + return result; + }, + validateMultiple: function (data, schema, options) { + if (typeof schema === "string") { + schema = {"$ref": schema}; + } + if (typeof options !== "object" || options === null) { + options = makeOptionsObject(Array.prototype.slice.call(arguments, 2)); + } + var context = new ValidatorContext(globalContext, true, languages[currentLanguage], options); + context.addSchema("", schema); + context.validateAll(data, schema, null, null, ""); + if (options.banUnknownProperties) { + context.banUnknownProperties(); + } + var result = {}; + result.errors = context.errors; + result.missing = context.missing; + result.valid = (result.errors.length === 0); + return result; + }, + addSchema: function () { + return globalContext.addSchema.apply(globalContext, arguments); + }, + getSchema: function () { + return globalContext.getSchema.apply(globalContext, arguments); + }, + getSchemaMap: function () { + return globalContext.getSchemaMap.apply(globalContext, arguments); + }, + getSchemaUris: function () { + return globalContext.getSchemaUris.apply(globalContext, arguments); + }, + getMissingUris: function () { + return globalContext.getMissingUris.apply(globalContext, arguments); + }, + dropSchemas: function () { + globalContext.dropSchemas.apply(globalContext, arguments); + }, + reset: function () { + globalContext.reset(); + this.error = null; + this.missing = []; + this.valid = true; + }, + missing: [], + error: null, + valid: true, + normSchema: normSchema, + resolveUrl: resolveUrl, + getDocumentUri: getDocumentUri, + errorCodes: ErrorCodes + }; + return api; +} + +var tv4 = createApi(); +tv4.addLanguage('en-gb', ErrorMessagesDefault); + +//legacy property +tv4.tv4 = tv4; + +if (typeof module !== 'undefined' && module.exports){ + module.exports = tv4; +} +else { + global.tv4 = tv4; +} + +})(this); diff --git a/third_party/jsdoc/node_modules/underscore/LICENSE b/third_party/jsdoc/node_modules/underscore/LICENSE new file mode 100644 index 0000000000..0d6b8739d9 --- /dev/null +++ b/third_party/jsdoc/node_modules/underscore/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative +Reporters & Editors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/third_party/jsdoc/node_modules/underscore/package.json b/third_party/jsdoc/node_modules/underscore/package.json new file mode 100644 index 0000000000..d561286b9d --- /dev/null +++ b/third_party/jsdoc/node_modules/underscore/package.json @@ -0,0 +1,52 @@ +{ + "name": "underscore", + "description": "JavaScript's functional programming helper library.", + "homepage": "http://underscorejs.org", + "keywords": [ + "util", + "functional", + "server", + "client", + "browser" + ], + "author": { + "name": "Jeremy Ashkenas", + "email": "jeremy@documentcloud.org" + }, + "repository": { + "type": "git", + "url": "git://github.com/jashkenas/underscore.git" + }, + "main": "underscore.js", + "version": "1.6.0", + "devDependencies": { + "docco": "0.6.x", + "phantomjs": "1.9.0-1", + "uglify-js": "2.4.x" + }, + "scripts": { + "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true", + "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/ .*/\" -m --source-map underscore-min.map -o underscore-min.js", + "doc": "docco underscore.js" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://raw.github.com/jashkenas/underscore/master/LICENSE" + } + ], + "files": [ + "underscore.js", + "underscore-min.js", + "LICENSE" + ], + "readme": " __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nUnderscore is an open-sourced component of DocumentCloud:\nhttps://github.com/documentcloud\n\nMany thanks to our contributors:\nhttps://github.com/jashkenas/underscore/contributors\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/jashkenas/underscore/issues" + }, + "_id": "underscore@1.6.0", + "_shasum": "8b38b10cacdef63337b8b24e4ff86d45aea529a8", + "_from": "underscore@1.6.0", + "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" +} diff --git a/third_party/jsdoc/node_modules/underscore/underscore.js b/third_party/jsdoc/node_modules/underscore/underscore.js new file mode 100644 index 0000000000..9a4cabecf7 --- /dev/null +++ b/third_party/jsdoc/node_modules/underscore/underscore.js @@ -0,0 +1,1343 @@ +// Underscore.js 1.6.0 +// http://underscorejs.org +// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Establish the object that gets returned to break out of a loop iteration. + var breaker = {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeForEach = ArrayProto.forEach, + nativeMap = ArrayProto.map, + nativeReduce = ArrayProto.reduce, + nativeReduceRight = ArrayProto.reduceRight, + nativeFilter = ArrayProto.filter, + nativeEvery = ArrayProto.every, + nativeSome = ArrayProto.some, + nativeIndexOf = ArrayProto.indexOf, + nativeLastIndexOf = ArrayProto.lastIndexOf, + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object via a string identifier, + // for Closure Compiler "advanced" mode. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.6.0'; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles objects with the built-in `forEach`, arrays, and raw objects. + // Delegates to **ECMAScript 5**'s native `forEach` if available. + var each = _.each = _.forEach = function(obj, iterator, context) { + if (obj == null) return obj; + if (nativeForEach && obj.forEach === nativeForEach) { + obj.forEach(iterator, context); + } else if (obj.length === +obj.length) { + for (var i = 0, length = obj.length; i < length; i++) { + if (iterator.call(context, obj[i], i, obj) === breaker) return; + } + } else { + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return; + } + } + return obj; + }; + + // Return the results of applying the iterator to each element. + // Delegates to **ECMAScript 5**'s native `map` if available. + _.map = _.collect = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); + each(obj, function(value, index, list) { + results.push(iterator.call(context, value, index, list)); + }); + return results; + }; + + var reduceError = 'Reduce of empty array with no initial value'; + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. + _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduce && obj.reduce === nativeReduce) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); + } + each(obj, function(value, index, list) { + if (!initial) { + memo = value; + initial = true; + } else { + memo = iterator.call(context, memo, value, index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // The right-associative version of reduce, also known as `foldr`. + // Delegates to **ECMAScript 5**'s native `reduceRight` if available. + _.reduceRight = _.foldr = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); + } + var length = obj.length; + if (length !== +length) { + var keys = _.keys(obj); + length = keys.length; + } + each(obj, function(value, index, list) { + index = keys ? keys[--length] : --length; + if (!initial) { + memo = obj[index]; + initial = true; + } else { + memo = iterator.call(context, memo, obj[index], index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var result; + any(obj, function(value, index, list) { + if (predicate.call(context, value, index, list)) { + result = value; + return true; + } + }); + return result; + }; + + // Return all the elements that pass a truth test. + // Delegates to **ECMAScript 5**'s native `filter` if available. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + if (obj == null) return results; + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context); + each(obj, function(value, index, list) { + if (predicate.call(context, value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, function(value, index, list) { + return !predicate.call(context, value, index, list); + }, context); + }; + + // Determine whether all of the elements match a truth test. + // Delegates to **ECMAScript 5**'s native `every` if available. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate || (predicate = _.identity); + var result = true; + if (obj == null) return result; + if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context); + each(obj, function(value, index, list) { + if (!(result = result && predicate.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if at least one element in the object matches a truth test. + // Delegates to **ECMAScript 5**'s native `some` if available. + // Aliased as `any`. + var any = _.some = _.any = function(obj, predicate, context) { + predicate || (predicate = _.identity); + var result = false; + if (obj == null) return result; + if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context); + each(obj, function(value, index, list) { + if (result || (result = predicate.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; + if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; + return any(obj, function(value) { + return value === target; + }); + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + return (isFunc ? method : value[method]).apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matches(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matches(attrs)); + }; + + // Return the maximum element or (element-based computation). + // Can't optimize arrays of integers longer than 65,535 elements. + // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797) + _.max = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.max.apply(Math, obj); + } + var result = -Infinity, lastComputed = -Infinity; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + if (computed > lastComputed) { + result = value; + lastComputed = computed; + } + }); + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.min.apply(Math, obj); + } + var result = Infinity, lastComputed = Infinity; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + if (computed < lastComputed) { + result = value; + lastComputed = computed; + } + }); + return result; + }; + + // Shuffle an array, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var rand; + var index = 0; + var shuffled = []; + each(obj, function(value) { + rand = _.random(index++); + shuffled[index - 1] = shuffled[rand]; + shuffled[rand] = value; + }); + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (obj.length !== +obj.length) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // An internal function to generate lookup iterators. + var lookupIterator = function(value) { + if (value == null) return _.identity; + if (_.isFunction(value)) return value; + return _.property(value); + }; + + // Sort the object's values by a criterion produced by an iterator. + _.sortBy = function(obj, iterator, context) { + iterator = lookupIterator(iterator); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iterator.call(context, value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iterator, context) { + var result = {}; + iterator = lookupIterator(iterator); + each(obj, function(value, index) { + var key = iterator.call(context, value, index, obj); + behavior(result, key, value); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, key, value) { + _.has(result, key) ? result[key].push(value) : result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, key, value) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, key) { + _.has(result, key) ? result[key]++ : result[key] = 1; + }); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iterator, context) { + iterator = lookupIterator(iterator); + var value = iterator.call(context, obj); + var low = 0, high = array.length; + while (low < high) { + var mid = (low + high) >>> 1; + iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; + } + return low; + }; + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (obj.length === +obj.length) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if ((n == null) || guard) return array[0]; + if (n < 0) return []; + return slice.call(array, 0, n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. The **guard** check allows it to work with + // `_.map`. + _.initial = function(array, n, guard) { + return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. The **guard** check allows it to work with `_.map`. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if ((n == null) || guard) return array[array.length - 1]; + return slice.call(array, Math.max(array.length - n, 0)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. The **guard** + // check allows it to work with `_.map`. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, (n == null) || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, output) { + if (shallow && _.every(input, _.isArray)) { + return concat.apply(output, input); + } + each(input, function(value) { + if (_.isArray(value) || _.isArguments(value)) { + shallow ? push.apply(output, value) : flatten(value, shallow, output); + } else { + output.push(value); + } + }); + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, []); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Split an array into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(array, predicate) { + var pass = [], fail = []; + each(array, function(elem) { + (predicate(elem) ? pass : fail).push(elem); + }); + return [pass, fail]; + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iterator, context) { + if (_.isFunction(isSorted)) { + context = iterator; + iterator = isSorted; + isSorted = false; + } + var initial = iterator ? _.map(array, iterator, context) : array; + var results = []; + var seen = []; + each(initial, function(value, index) { + if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { + seen.push(value); + results.push(array[index]); + } + }); + return results; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(_.flatten(arguments, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var rest = slice.call(arguments, 1); + return _.filter(_.uniq(array), function(item) { + return _.every(rest, function(other) { + return _.contains(other, item); + }); + }); + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); + return _.filter(array, function(value){ return !_.contains(rest, value); }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + var length = _.max(_.pluck(arguments, 'length').concat(0)); + var results = new Array(length); + for (var i = 0; i < length; i++) { + results[i] = _.pluck(arguments, '' + i); + } + return results; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + if (list == null) return {}; + var result = {}; + for (var i = 0, length = list.length; i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), + // we need this function. Return the position of the first occurrence of an + // item in an array, or -1 if the item is not included in the array. + // Delegates to **ECMAScript 5**'s native `indexOf` if available. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = function(array, item, isSorted) { + if (array == null) return -1; + var i = 0, length = array.length; + if (isSorted) { + if (typeof isSorted == 'number') { + i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted); + } else { + i = _.sortedIndex(array, item); + return array[i] === item ? i : -1; + } + } + if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); + for (; i < length; i++) if (array[i] === item) return i; + return -1; + }; + + // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. + _.lastIndexOf = function(array, item, from) { + if (array == null) return -1; + var hasIndex = from != null; + if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { + return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); + } + var i = (hasIndex ? from : array.length); + while (i--) if (array[i] === item) return i; + return -1; + }; + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (arguments.length <= 1) { + stop = start || 0; + start = 0; + } + step = arguments[2] || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var idx = 0; + var range = new Array(length); + + while(idx < length) { + range[idx++] = start; + start += step; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Reusable constructor function for prototype setting. + var ctor = function(){}; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + var args, bound; + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError; + args = slice.call(arguments, 2); + return bound = function() { + if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); + ctor.prototype = func.prototype; + var self = new ctor; + ctor.prototype = null; + var result = func.apply(self, args.concat(slice.call(arguments))); + if (Object(result) === result) return result; + return self; + }; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + return function() { + var position = 0; + var args = boundArgs.slice(); + for (var i = 0, length = args.length; i < length; i++) { + if (args[i] === _) args[i] = arguments[position++]; + } + while (position < arguments.length) args.push(arguments[position++]); + return func.apply(this, args); + }; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var funcs = slice.call(arguments, 1); + if (funcs.length === 0) throw new Error('bindAll must be passed function names'); + each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memo = {}; + hasher || (hasher = _.identity); + return function() { + var key = hasher.apply(this, arguments); + return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); + }; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ return func.apply(null, args); }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + options || (options = {}); + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + if (last < wait) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) { + timeout = setTimeout(later, wait); + } + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = function(func) { + var ran = false, memo; + return function() { + if (ran) return memo; + ran = true; + memo = func.apply(this, arguments); + func = null; + return memo; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var funcs = arguments; + return function() { + var args = arguments; + for (var i = funcs.length - 1; i >= 0; i--) { + args = [funcs[i].apply(this, args)]; + } + return args[0]; + }; + }; + + // Returns a function that will only be executed after being called N times. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Object Functions + // ---------------- + + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = new Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = new Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + each(keys, function(key) { + if (key in obj) copy[key] = obj[key]; + }); + return copy; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + for (var key in obj) { + if (!_.contains(keys, key)) copy[key] = obj[key]; + } + return copy; + }; + + // Fill in a given object with default properties. + _.defaults = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + if (obj[prop] === void 0) obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a == 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className != toString.call(b)) return false; + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') return false; + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) return bStack[length] == b; + } + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && + _.isFunction(bCtor) && (bCtor instanceof bCtor)) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0, result = true; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack))) break; + } + } + } else { + // Deep compare objects. + for (var key in a) { + if (_.has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (_.has(b, key) && !(size--)) break; + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return result; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b, [], []); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; + for (var key in obj) if (_.has(obj, key)) return false; + return true; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) == '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + return obj === Object(obj); + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. + each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) == '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return !!(obj && _.has(obj, 'callee')); + }; + } + + // Optimize `isFunction` if appropriate. + if (typeof (/./) !== 'function') { + _.isFunction = function(obj) { + return typeof obj === 'function'; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj != +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iterators. + _.identity = function(value) { + return value; + }; + + _.constant = function(value) { + return function () { + return value; + }; + }; + + _.property = function(key) { + return function(obj) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of `key:value` pairs. + _.matches = function(attrs) { + return function(obj) { + if (obj === attrs) return true; //avoid comparing an object to itself. + for (var key in attrs) { + if (attrs[key] !== obj[key]) + return false; + } + return true; + } + }; + + // Run a function **n** times. + _.times = function(n, iterator, context) { + var accum = Array(Math.max(0, n)); + for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { return new Date().getTime(); }; + + // List of HTML entities for escaping. + var entityMap = { + escape: { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + } + }; + entityMap.unescape = _.invert(entityMap.escape); + + // Regexes containing the keys and values listed immediately above. + var entityRegexes = { + escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), + unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + _.each(['escape', 'unescape'], function(method) { + _[method] = function(string) { + if (string == null) return ''; + return ('' + string).replace(entityRegexes[method], function(match) { + return entityMap[method][match]; + }); + }; + }); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property) { + if (object == null) return void 0; + var value = object[property]; + return _.isFunction(value) ? value.call(object) : value; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result.call(this, func.apply(_, args)); + }; + }); + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function, which will delegate to the wrapper. + _.chain = function(obj) { + return _(obj).chain(); + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(obj) { + return this._chain ? _(obj).chain() : obj; + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; + return result.call(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result.call(this, method.apply(this._wrapped, arguments)); + }; + }); + + _.extend(_.prototype, { + + // Start chaining a wrapped Underscore object. + chain: function() { + this._chain = true; + return this; + }, + + // Extracts the result from a wrapped and chained object. + value: function() { + return this._wrapped; + } + + }); + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}).call(this); diff --git a/third_party/jsdoc/node_modules/wrench/LICENSE b/third_party/jsdoc/node_modules/wrench/LICENSE new file mode 100644 index 0000000000..a85a94a61b --- /dev/null +++ b/third_party/jsdoc/node_modules/wrench/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2010 Ryan McGrath + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/third_party/jsdoc/node_modules/wrench/lib/wrench.js b/third_party/jsdoc/node_modules/wrench/lib/wrench.js new file mode 100644 index 0000000000..00f4166bae --- /dev/null +++ b/third_party/jsdoc/node_modules/wrench/lib/wrench.js @@ -0,0 +1,399 @@ +/* wrench.js + * + * A collection of various utility functions I've found myself in need of + * for use with Node.js (http://nodejs.org/). This includes things like: + * + * - Recursively deleting directories in Node.js (Sync, not Async) + * - Recursively copying directories in Node.js (Sync, not Async) + * - Recursively chmoding a directory structure from Node.js (Sync, not Async) + * - Other things that I'll add here as time goes on. Shhhh... + * + * ~ Ryan McGrath (ryan [at] venodesigns.net) + */ + +var fs = require("fs"), + _path = require("path"); + + +/* wrench.readdirSyncRecursive("directory_path"); + * + * Recursively dives through directories and read the contents of all the + * children directories. + */ +exports.readdirSyncRecursive = function(baseDir) { + baseDir = baseDir.replace(/\/$/, ''); + + var readdirSyncRecursive = function(baseDir) { + var files = [], + curFiles, + nextDirs, + isDir = function(fname){ + return fs.statSync( _path.join(baseDir, fname) ).isDirectory(); + }, + prependBaseDir = function(fname){ + return _path.join(baseDir, fname); + }; + + curFiles = fs.readdirSync(baseDir); + nextDirs = curFiles.filter(isDir); + curFiles = curFiles.map(prependBaseDir); + + files = files.concat( curFiles ); + + while (nextDirs.length) { + files = files.concat( readdirSyncRecursive( _path.join(baseDir, nextDirs.shift()) ) ); + } + + return files; + }; + + // convert absolute paths to relative + var fileList = readdirSyncRecursive(baseDir).map(function(val){ + return _path.relative(baseDir, val); + }); + + return fileList; +}; + +/* wrench.readdirRecursive("directory_path", function(error, files) {}); + * + * Recursively dives through directories and read the contents of all the + * children directories. + * + * Asynchronous, so returns results/error in callback. + * Callback receives the of files in currently recursed directory. + * When no more directories are left, callback is called with null for all arguments. + * + */ +exports.readdirRecursive = function(baseDir, fn) { + baseDir = baseDir.replace(/\/$/, ''); + + var waitCount = 0; + + function readdirRecursive(curDir) { + var files = [], + curFiles, + nextDirs, + prependcurDir = function(fname){ + return _path.join(curDir, fname); + }; + + waitCount++; + fs.readdir(curDir, function(e, curFiles) { + waitCount--; + + curFiles = curFiles.map(prependcurDir); + + curFiles.forEach(function(it) { + waitCount++; + + fs.stat(it, function(e, stat) { + waitCount--; + + if (e) { + fn(e); + } else { + if (stat.isDirectory()) { + readdirRecursive(it); + } + } + + if (waitCount == 0) { + fn(null, null); + } + }); + }); + + fn(null, curFiles.map(function(val) { + // convert absolute paths to relative + return _path.relative(baseDir, val); + })); + + if (waitCount == 0) { + fn(null, null); + } + }); + }; + + readdirRecursive(baseDir); +}; + + + +/* wrench.rmdirSyncRecursive("directory_path", forceDelete, failSilent); + * + * Recursively dives through directories and obliterates everything about it. This is a + * Sync-function, which blocks things until it's done. No idea why anybody would want an + * Asynchronous version. :\ + */ +exports.rmdirSyncRecursive = function(path, failSilent) { + var files; + + try { + files = fs.readdirSync(path); + } catch (err) { + if(failSilent) return; + throw new Error(err.message); + } + + /* Loop through and delete everything in the sub-tree after checking it */ + for(var i = 0; i < files.length; i++) { + var currFile = fs.lstatSync(path + "/" + files[i]); + + if(currFile.isDirectory()) // Recursive function back to the beginning + exports.rmdirSyncRecursive(path + "/" + files[i]); + + else if(currFile.isSymbolicLink()) // Unlink symlinks + fs.unlinkSync(path + "/" + files[i]); + + else // Assume it's a file - perhaps a try/catch belongs here? + fs.unlinkSync(path + "/" + files[i]); + } + + /* Now that we know everything in the sub-tree has been deleted, we can delete the main + directory. Huzzah for the shopkeep. */ + return fs.rmdirSync(path); +}; + +/* wrench.copyDirSyncRecursive("directory_to_copy", "new_directory_location", opts); + * + * Recursively dives through a directory and moves all its files to a new location. This is a + * Synchronous function, which blocks things until it's done. If you need/want to do this in + * an Asynchronous manner, look at wrench.copyDirRecursively() below. + * + * Note: Directories should be passed to this function without a trailing slash. + */ +exports.copyDirSyncRecursive = function(sourceDir, newDirLocation, opts) { + + if (!opts || !opts.preserve) { + try { + if(fs.statSync(newDirLocation).isDirectory()) exports.rmdirSyncRecursive(newDirLocation); + } catch(e) { } + } + + /* Create the directory where all our junk is moving to; read the mode of the source directory and mirror it */ + var checkDir = fs.statSync(sourceDir); + try { + fs.mkdirSync(newDirLocation, checkDir.mode); + } catch (e) { + //if the directory already exists, that's okay + if (e.code !== 'EEXIST') throw e; + } + + var files = fs.readdirSync(sourceDir); + + for(var i = 0; i < files.length; i++) { + var currFile = fs.lstatSync(sourceDir + "/" + files[i]); + + if(currFile.isDirectory()) { + /* recursion this thing right on back. */ + exports.copyDirSyncRecursive(sourceDir + "/" + files[i], newDirLocation + "/" + files[i], opts); + } else if(currFile.isSymbolicLink()) { + var symlinkFull = fs.readlinkSync(sourceDir + "/" + files[i]); + fs.symlinkSync(symlinkFull, newDirLocation + "/" + files[i]); + } else { + /* At this point, we've hit a file actually worth copying... so copy it on over. */ + var contents = fs.readFileSync(sourceDir + "/" + files[i]); + fs.writeFileSync(newDirLocation + "/" + files[i], contents); + } + } +}; + +/* wrench.chmodSyncRecursive("directory", filemode); + * + * Recursively dives through a directory and chmods everything to the desired mode. This is a + * Synchronous function, which blocks things until it's done. + * + * Note: Directories should be passed to this function without a trailing slash. + */ +exports.chmodSyncRecursive = function(sourceDir, filemode) { + var files = fs.readdirSync(sourceDir); + + for(var i = 0; i < files.length; i++) { + var currFile = fs.lstatSync(sourceDir + "/" + files[i]); + + if(currFile.isDirectory()) { + /* ...and recursion this thing right on back. */ + exports.chmodSyncRecursive(sourceDir + "/" + files[i], filemode); + } else { + /* At this point, we've hit a file actually worth copying... so copy it on over. */ + fs.chmod(sourceDir + "/" + files[i], filemode); + } + } + + /* Finally, chmod the parent directory */ + fs.chmod(sourceDir, filemode); +}; + + +/* wrench.chownSyncRecursive("directory", uid, gid); + * + * Recursively dives through a directory and chowns everything to the desired user and group. This is a + * Synchronous function, which blocks things until it's done. + * + * Note: Directories should be passed to this function without a trailing slash. + */ +exports.chownSyncRecursive = function(sourceDir, uid, gid) { + var files = fs.readdirSync(sourceDir); + + for(var i = 0; i < files.length; i++) { + var currFile = fs.lstatSync(sourceDir + "/" + files[i]); + + if(currFile.isDirectory()) { + /* ...and recursion this thing right on back. */ + exports.chownSyncRecursive(sourceDir + "/" + files[i], uid, gid); + } else { + /* At this point, we've hit a file actually worth chowning... so own it. */ + fs.chownSync(sourceDir + "/" + files[i], uid, gid); + } + } + + /* Finally, chown the parent directory */ + fs.chownSync(sourceDir, uid, gid); +}; + + + +/* wrench.rmdirRecursive("directory_path", callback); + * + * Recursively dives through directories and obliterates everything about it. + */ +exports.rmdirRecursive = function rmdirRecursive(dir, clbk){ + fs.readdir(dir, function(err, files){ + if (err) return clbk(err); + (function rmFile(err){ + if (err) return clbk(err); + + var filename = files.shift(); + if (filename === null || typeof filename == 'undefined') + return fs.rmdir(dir, clbk); + + var file = dir+'/'+filename; + fs.stat(file, function(err, stat){ + if (err) return clbk(err); + if (stat.isDirectory()) + rmdirRecursive(file, rmFile); + else + fs.unlink(file, rmFile); + }); + })(); + }); +}; + +/* wrench.copyDirRecursive("directory_to_copy", "new_location", callback); + * + * Recursively dives through a directory and moves all its files to a new + * location. + * + * Note: Directories should be passed to this function without a trailing slash. + */ +exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, clbk) { + fs.stat(newDir, function(err, newDirStat){ + if (!err) return exports.rmdirRecursive(newDir, function(err){ + copyDirRecursive(srcDir, newDir, clbk); + }); + + fs.stat(srcDir, function(err, srcDirStat){ + if (err) return clbk(err); + fs.mkdir(newDir, srcDirStat.mode, function(err){ + if (err) return clbk(err); + fs.readdir(srcDir, function(err, files){ + if (err) return clbk(err); + (function copyFiles(err){ + if (err) return clbk(err); + + var filename = files.shift(); + if (filename === null || typeof filename == 'undefined') + return clbk(); + + var file = srcDir+'/'+filename, + newFile = newDir+'/'+filename; + + fs.stat(file, function(err, fileStat){ + if (fileStat.isDirectory()) + copyDirRecursive(file, newFile, copyFiles); + else if (fileStat.isSymbolicLink()) + fs.readlink(file, function(err, link){ + fs.symlink(link, newFile, copyFiles); + }); + else + fs.readFile(file, function(err, data){ + fs.writeFile(newFile, data, copyFiles); + }); + }); + })(); + }); + }); + }); + }); +}; + +var mkdirSyncRecursive = function(path, mode) { + var self = this; + + try { + fs.mkdirSync(path, mode); + } catch(err) { + if(err.code == "ENOENT") { + var slashIdx = path.lastIndexOf("/"); + if(slashIdx < 0) { + slashIdx = path.lastIndexOf("\\"); + } + + if(slashIdx > 0) { + var parentPath = path.substring(0, slashIdx); + mkdirSyncRecursive(parentPath, mode); + mkdirSyncRecursive(path, mode); + } else { + throw err; + } + } else if(err.code == "EEXIST") { + return; + } else { + throw err; + } + } +}; +exports.mkdirSyncRecursive = mkdirSyncRecursive; + +exports.LineReader = function(filename, bufferSize) { + this.bufferSize = bufferSize || 8192; + this.buffer = ""; + this.fd = fs.openSync(filename, "r"); + this.currentPosition = 0; +}; + +exports.LineReader.prototype = { + getBufferAndSetCurrentPosition: function(position) { + var res = fs.readSync(this.fd, this.bufferSize, position, "ascii"); + + this.buffer += res[0]; + if(res[1] === 0) { + this.currentPosition = -1; + } else { + this.currentPosition = position + res[1]; + } + + return this.currentPosition; + }, + + hasNextLine: function() { + while(this.buffer.indexOf('\n') === -1) { + this.getBufferAndSetCurrentPosition(this.currentPosition); + if(this.currentPosition === -1) return false; + } + + if(this.buffer.indexOf("\n") > -1) return true; + return false; + }, + + getNextLine: function() { + var lineEnd = this.buffer.indexOf("\n"), + result = this.buffer.substring(0, lineEnd); + + this.buffer = this.buffer.substring(result.length + 1, this.buffer.length); + return result; + } +}; + +// vim: et ts=4 sw=4 diff --git a/third_party/jsdoc/node_modules/wrench/package.json b/third_party/jsdoc/node_modules/wrench/package.json new file mode 100644 index 0000000000..80124ffe3c --- /dev/null +++ b/third_party/jsdoc/node_modules/wrench/package.json @@ -0,0 +1,43 @@ +{ + "name": "wrench", + "description": "Recursive filesystem (and other) operations that Node *should* have.", + "version": "1.3.9", + "author": { + "name": "Ryan McGrath", + "email": "ryan@venodesigns.net" + }, + "repository": { + "type": "git", + "url": "https://ryanmcgrath@github.com/ryanmcgrath/wrench-js.git" + }, + "bugs": { + "url": "http://github.com/ryanmcgrath/wrench-js/issues" + }, + "directories": { + "lib": "./lib/" + }, + "dependencies": {}, + "devDependencies": { + "nodeunit": ">= 0.6.4" + }, + "main": "./lib/wrench", + "engines": { + "node": ">=0.1.97" + }, + "scripts": { + "test": "nodeunit tests/runner.js" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/ryanmcgrath/wrench-js/raw/master/LICENSE" + } + ], + "readme": "wrench.js - Recursive file operations in Node.js\n----------------------------------------------------------------------------\nWhile I love Node.js, I've found myself missing some functions. Things like\nrecursively deleting/chmodding a directory (or even deep copying a directory),\nor even a basic line reader, shouldn't need to be re-invented time and time again.\n\nThat said, here's my attempt at a re-usable solution, at least until something\nmore formalized gets integrated into Node.js (*hint hint*). wrench.js is fairly simple\nto use - check out the documentation/examples below:\n\nInstallation\n-----------------------------------------------------------------------------\n\n npm install wrench\n\nUsage\n-----------------------------------------------------------------------------\n``` javascript\nvar wrench = require('wrench'),\n\tutil = require('util');\n```\n\n### Synchronous operations\n``` javascript\n// Recursively create directories, sub-trees and all.\nwrench.mkdirSyncRecursive(dir, 0777);\n\n// Recursively delete the entire sub-tree of a directory, then kill the directory\nwrench.rmdirSyncRecursive('my_directory_name', failSilently);\n\n// Recursively read directories contents.\nwrench.readdirSyncRecursive('my_directory_name');\n\n// Recursively chmod the entire sub-tree of a directory\nwrench.chmodSyncRecursive('my_directory_name', 0755);\n\n// Recursively chown the entire sub-tree of a directory\nwrench.chownSyncRecursive(\"directory\", uid, gid);\n\n// Deep-copy an existing directory\nwrench.copyDirSyncRecursive('directory_to_copy', 'location_where_copy_should_end_up');\n\n// Read lines in from a file until you hit the end\nvar f = new wrench.LineReader('x.txt');\nwhile(f.hasNextLine()) {\n\tutil.puts(x.getNextLine());\n}\n```\n\n### Asynchronous operations\n``` javascript\n// Recursively read directories contents\nvar files = [];\nwrench.readdirRecursive('my_directory_name', function(error, curFiles) {\n // curFiles is what you want\n});\n\n```\n\nQuestions, comments? Hit me up. (ryan [at] venodesigns.net | http://twitter.com/ryanmcgrath)\n", + "readmeFilename": "readme.md", + "homepage": "https://github.com/ryanmcgrath/wrench-js", + "_id": "wrench@1.3.9", + "_shasum": "6f13ec35145317eb292ca5f6531391b244111411", + "_from": "wrench@1.3.9", + "_resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz" +} diff --git a/third_party/jsdoc/package.json b/third_party/jsdoc/package.json new file mode 100644 index 0000000000..e64678ceda --- /dev/null +++ b/third_party/jsdoc/package.json @@ -0,0 +1,59 @@ +{ + "name": "jsdoc", + "version": "3.3.0-dev", + "revision": "1413822926905", + "description": "An API documentation generator for JavaScript.", + "keywords": [ + "documentation", + "javascript" + ], + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/jsdoc3/jsdoc" + }, + "dependencies": { + "async": "~0.1.22", + "catharsis": "~0.8.3", + "escape-string-regexp": "~1.0.0", + "esprima": "https://github.com/ariya/esprima/tarball/49a2eccb243f29bd653b11e9419241a9d726af7c", + "js2xmlparser": "~0.1.0", + "marked": "~0.3.1", + "requizzle": "~0.2.0", + "strip-json-comments": "~0.1.3", + "taffydb": "https://github.com/hegemonic/taffydb/tarball/master", + "underscore": "~1.6.0", + "wrench": "~1.3.9" + }, + "devDependencies": { + "eslint": "~0.9.1", + "gulp": "~3.8.5", + "gulp-eslint": "~0.1.7", + "gulp-json-editor": "~2.0.2", + "istanbul": "~0.2.1", + "tv4": "https://github.com/hegemonic/tv4/tarball/own-properties" + }, + "engines": { + "node": ">=0.10" + }, + "scripts": { + "test": "gulp test" + }, + "bin": { + "jsdoc": "./jsdoc.js" + }, + "bugs": "https://github.com/jsdoc3/jsdoc/issues", + "author": { + "name": "Michael Mathews", + "email": "micmath@gmail.com" + }, + "contributors": [ + { + "url": "https://github.com/jsdoc3/jsdoc/graphs/contributors" + } + ], + "maintainers": { + "name": "Jeff Williams", + "email": "jeffrey.l.williams@gmail.com" + } +} diff --git a/third_party/jsdoc/plugins/commentConvert.js b/third_party/jsdoc/plugins/commentConvert.js new file mode 100644 index 0000000000..64347e0d92 --- /dev/null +++ b/third_party/jsdoc/plugins/commentConvert.js @@ -0,0 +1,23 @@ +/** + @overview Demonstrate how to modify the source code before the parser sees it. + @module plugins/commentConvert + @author Michael Mathews + */ +'use strict'; + +/*eslint spaced-line-comment: 0 */ + +exports.handlers = { + /// + /// Convert ///-style comments into jsdoc comments. + /// @param e + /// @param e.filename + /// @param e.source + /// + beforeParse: function(e) { + e.source = e.source.replace(/(\n[ \t]*\/\/\/[^\n]*)+/g, function($) { + var replacement = '\n/**' + $.replace(/^[ \t]*\/\/\//mg, '').replace(/(\n$|$)/, '*/$1'); + return replacement; + }); + } +}; diff --git a/third_party/jsdoc/plugins/commentsOnly.js b/third_party/jsdoc/plugins/commentsOnly.js new file mode 100644 index 0000000000..a35e96f13e --- /dev/null +++ b/third_party/jsdoc/plugins/commentsOnly.js @@ -0,0 +1,18 @@ +/** + * @overview Remove everything in a file except JSDoc-style comments. By enabling this plugin, you + * can document source files that are not valid JavaScript (including source files for other + * languages). + * @module plugins/commentsOnly + * @author Jeff Williams + */ +'use strict'; + +exports.handlers = { + beforeParse: function(e) { + // a JSDoc comment looks like: /**[one or more chars]*/ + var comments = e.source.match(/\/\*\*[\s\S]+?\*\//g); + if (comments) { + e.source = comments.join('\n\n'); + } + } +}; diff --git a/third_party/jsdoc/plugins/escapeHtml.js b/third_party/jsdoc/plugins/escapeHtml.js new file mode 100644 index 0000000000..d587405277 --- /dev/null +++ b/third_party/jsdoc/plugins/escapeHtml.js @@ -0,0 +1,21 @@ +/** + @overview Escape HTML tags in descriptions. + @module plugins/escapeHtml + @author Michael Mathews + */ +'use strict'; + +exports.handlers = { + /** + Translate HTML tags in descriptions into safe entities. + Replaces <, & and newlines + */ + newDoclet: function(e) { + if (e.doclet.description) { + e.doclet.description = e.doclet.description + .replace(/&/g,'&') + .replace(/'); + } + } +}; diff --git a/third_party/jsdoc/plugins/eventDumper.js b/third_party/jsdoc/plugins/eventDumper.js new file mode 100644 index 0000000000..38ca84387a --- /dev/null +++ b/third_party/jsdoc/plugins/eventDumper.js @@ -0,0 +1,115 @@ +/*global env: true */ +/** + * @overview Dump information about parser events to the console. + * @module plugins/eventDumper + * @author Jeff Williams + */ +'use strict'; + +var _ = require('underscore'); +var util = require('util'); + +var conf = env.conf.eventDumper || {}; +var isRhino = require('jsdoc/util/runtime').isRhino(); + +// Dump the included parser events (defaults to all events) +var events = conf.include || [ + 'parseBegin', + 'fileBegin', + 'beforeParse', + 'jsdocCommentFound', + 'symbolFound', + 'newDoclet', + 'fileComplete', + 'parseComplete', + 'processingComplete' +]; +// Don't dump the excluded parser events +if (conf.exclude) { + events = _.difference(events, conf.exclude); +} + +/** + * Check whether a variable appears to be a Java native object. + * + * @param {*} o - The variable to check. + * @return {boolean} Set to `true` for Java native objects and `false` in all other cases. + */ +function isJavaNativeObject(o) { + if (!isRhino) { + return false; + } + + return o && typeof o === 'object' && typeof o.getClass === 'function'; +} + +/** + * Replace AST node objects in events with a placeholder. + * + * @param {Object} o - An object whose properties may contain AST node objects. + * @return {Object} The modified object. + */ +function replaceNodeObjects(o) { + var doop = require('jsdoc/util/doop'); + + var OBJECT_PLACEHOLDER = ''; + + if (o.code && o.code.node) { + // don't break the original object! + o.code = doop(o.code); + o.code.node = OBJECT_PLACEHOLDER; + } + + if (o.doclet && o.doclet.meta && o.doclet.meta.code && o.doclet.meta.code.node) { + // don't break the original object! + o.doclet.meta.code = doop(o.doclet.meta.code); + o.doclet.meta.code.node = OBJECT_PLACEHOLDER; + } + + if (o.astnode) { + o.astnode = OBJECT_PLACEHOLDER; + } + + return o; +} + +/** + * Get rid of unwanted crud in an event object. + * + * @param {object} e The event object. + * @return {object} The fixed-up object. + */ +function cleanse(e) { + var result = {}; + + Object.keys(e).forEach(function(prop) { + // by default, don't stringify properties that contain an array of functions + if (!conf.includeFunctions && util.isArray(e[prop]) && e[prop][0] && + String(typeof e[prop][0]) === 'function') { + result[prop] = 'function[' + e[prop].length + ']'; + } + // never include functions that belong to the object + else if (typeof e[prop] !== 'function') { + // don't call JSON.stringify() on Java native objects--Rhino will throw an exception + result[prop] = isJavaNativeObject(e[prop]) ? String(e[prop]) : e[prop]; + } + }); + + // allow users to omit node objects, which can be enormous + if (conf.omitNodes) { + result = replaceNodeObjects(result); + } + + return result; +} + +exports.handlers = {}; + +events.forEach(function(eventType) { + exports.handlers[eventType] = function(e) { + console.log( JSON.stringify({ + type: eventType, + content: cleanse(e) + }, null, 4) ); + }; +}); diff --git a/third_party/jsdoc/plugins/markdown.js b/third_party/jsdoc/plugins/markdown.js new file mode 100644 index 0000000000..91f918d807 --- /dev/null +++ b/third_party/jsdoc/plugins/markdown.js @@ -0,0 +1,89 @@ +/** + * @overview Translate doclet descriptions from MarkDown into HTML. + * @module plugins/markdown + * @author Michael Mathews + * @author Ben Blank + */ +'use strict'; + +var config = global.env.conf.markdown || {}; +var defaultTags = [ + 'classdesc', + 'description', + 'exceptions', + 'params', + 'properties', + 'returns', + 'see' +]; +var hasOwnProp = Object.prototype.hasOwnProperty; +var parse = require('jsdoc/util/markdown').getParser(); +var tags = []; +var excludeTags = []; + +function shouldProcessString(tagName, text) { + var shouldProcess = false; + + if (tagName !== 'see') { + shouldProcess = true; + } + // we only want to process `@see` tags that contain Markdown links + else if (tagName === 'see' && text.indexOf('[') !== -1) { + shouldProcess = true; + } + + return shouldProcess; +} + +/** + * Process the markdown source in a doclet. The properties that should be + * processed are configurable, but always include "classdesc", "description", + * "params", "properties", and "returns". Handled properties can be bare + * strings, objects, or arrays of objects. + */ +function process(doclet) { + tags.forEach(function(tag) { + if ( !hasOwnProp.call(doclet, tag) ) { + return; + } + + if (typeof doclet[tag] === 'string' && shouldProcessString(tag, doclet[tag]) ) { + doclet[tag] = parse(doclet[tag]); + } + else if ( Array.isArray(doclet[tag]) ) { + doclet[tag].forEach(function(value, index, original) { + var inner = {}; + inner[tag] = value; + process(inner); + original[index] = inner[tag]; + }); + } + else if (doclet[tag]) { + process(doclet[tag]); + } + }); +} + +// set up the list of "tags" (properties) to process +if (config.tags) { + tags = config.tags.slice(); +} +// set up the list of default tags to exclude from processing +if (config.excludeTags) { + excludeTags = config.excludeTags.slice(); +} +defaultTags.forEach(function(tag) { + if (excludeTags.indexOf(tag) === -1 && tags.indexOf(tag) === -1) { + tags.push(tag); + } +}); + +exports.handlers = { + /** + * Translate markdown syntax in a new doclet's description into HTML. Is run + * by JSDoc 3 whenever a "newDoclet" event fires. + */ + newDoclet: function(e) { + process(e.doclet); + } +}; diff --git a/third_party/jsdoc/plugins/overloadHelper.js b/third_party/jsdoc/plugins/overloadHelper.js new file mode 100644 index 0000000000..29c384d965 --- /dev/null +++ b/third_party/jsdoc/plugins/overloadHelper.js @@ -0,0 +1,185 @@ +/** + * The Overload Helper plugin automatically adds a signature-like string to the longnames of + * overloaded functions and methods. In JSDoc, this string is known as a _variation_. (The longnames + * of overloaded constructor functions are _not_ updated, so that JSDoc can identify the class' + * members correctly.) + * + * Using this plugin allows you to link to overloaded functions without manually adding `@variation` + * tags to your documentation. + * + * For example, suppose your code includes a function named `foo` that you can call in the + * following ways: + * + * + `foo()` + * + `foo(bar)` + * + `foo(bar, baz)` (where `baz` is repeatable) + * + * This plugin assigns the following variations and longnames to each version of `foo`: + * + * + `foo()` gets the variation `()` and the longname `foo()`. + * + `foo(bar)` gets the variation `(bar)` and the longname `foo(bar)`. + * + `foo(bar, baz)` (where `baz` is repeatable) gets the variation `(bar, ...baz)` and the longname + * `foo(bar, ...baz)`. + * + * You can then link to these functions with `{@link foo()}`, `{@link foo(bar)}`, and + * `{@link foo(bar, ...baz)`. Note that the variation is based on the names of the function + * parameters, _not_ their types. + * + * If you prefer to manually assign variations to certain functions, you can still do so with the + * `@variation` tag. This plugin will not change these variations or add more variations for that + * function, as long as the variations you've defined result in unique longnames. + * + * If an overloaded function includes multiple signatures with the same parameter names, the plugin + * will assign numeric variations instead, starting at `(1)` and counting upwards. + * + * @module plugins/overloadHelper + * @author Jeff Williams + * @license Apache License 2.0 + */ +'use strict'; + +// lookup table of function doclets by longname +var functionDoclets; + +function hasUniqueValues(obj) { + var isUnique = true; + var seen = []; + Object.keys(obj).forEach(function(key) { + if (seen.indexOf(obj[key]) !== -1) { + isUnique = false; + } + + seen.push(obj[key]); + }); + + return isUnique; +} + +function getParamNames(params) { + var names = []; + + params.forEach(function(param) { + var name = param.name || ''; + if (param.variable) { + name = '...' + name; + } + if (name !== '') { + names.push(name); + } + }); + + return names.length ? names.join(', ') : ''; +} + +function getParamVariation(doclet) { + return getParamNames(doclet.params || []); +} + +function getUniqueVariations(doclets) { + var counter = 0; + var variations = {}; + var docletKeys = Object.keys(doclets); + + function getUniqueNumbers() { + var format = require('util').format; + + docletKeys.forEach(function(doclet) { + var newLongname; + + while (true) { + counter++; + variations[doclet] = String(counter); + + // is this longname + variation unique? + newLongname = format('%s(%s)', doclets[doclet].longname, variations[doclet]); + if ( !functionDoclets[newLongname] ) { + break; + } + } + }); + } + + function getUniqueNames() { + // start by trying to preserve existing variations + docletKeys.forEach(function(doclet) { + variations[doclet] = doclets[doclet].variation || getParamVariation(doclets[doclet]); + }); + + // if they're identical, try again, without preserving existing variations + if ( !hasUniqueValues(variations) ) { + docletKeys.forEach(function(doclet) { + variations[doclet] = getParamVariation(doclets[doclet]); + }); + + // if they're STILL identical, switch to numeric variations + if ( !hasUniqueValues(variations) ) { + getUniqueNumbers(); + } + } + } + + // are we already using numeric variations? if so, keep doing that + if (functionDoclets[doclets.newDoclet.longname + '(1)']) { + getUniqueNumbers(); + } + else { + getUniqueNames(); + } + + return variations; +} + +function ensureUniqueLongname(newDoclet) { + var doclets = { + oldDoclet: functionDoclets[newDoclet.longname], + newDoclet: newDoclet + }; + var docletKeys = Object.keys(doclets); + var oldDocletLongname; + var variations = {}; + + if (doclets.oldDoclet) { + oldDocletLongname = doclets.oldDoclet.longname; + // if the shared longname has a variation, like MyClass#myLongname(variation), + // remove the variation + if (doclets.oldDoclet.variation || doclets.oldDoclet.variation === '') { + docletKeys.forEach(function(doclet) { + doclets[doclet].longname = doclets[doclet].longname.replace(/\([\s\S]*\)$/, ''); + doclets[doclet].variation = null; + }); + } + + variations = getUniqueVariations(doclets); + + // update the longnames/variations + docletKeys.forEach(function(doclet) { + doclets[doclet].longname += '(' + variations[doclet] + ')'; + doclets[doclet].variation = variations[doclet]; + }); + + // update the old doclet in the lookup table + functionDoclets[oldDocletLongname] = null; + functionDoclets[doclets.oldDoclet.longname] = doclets.oldDoclet; + } + + // always store the new doclet in the lookup table + functionDoclets[doclets.newDoclet.longname] = doclets.newDoclet; + + return doclets.newDoclet; +} + +exports.handlers = { + parseBegin: function() { + functionDoclets = {}; + }, + + newDoclet: function(e) { + if (e.doclet.kind === 'function') { + e.doclet = ensureUniqueLongname(e.doclet); + } + }, + + parseComplete: function() { + functionDoclets = null; + } +}; diff --git a/third_party/jsdoc/plugins/partial.js b/third_party/jsdoc/plugins/partial.js new file mode 100644 index 0000000000..9b5171579f --- /dev/null +++ b/third_party/jsdoc/plugins/partial.js @@ -0,0 +1,31 @@ +/** + @overview Adds support for reusable partial jsdoc files. + @module plugins/partial + @author Ludo Antonov + */ +'use strict'; + +var fs = require('jsdoc/fs'); +var path = require('path'); + +exports.handlers = { + /** + * Include a partial jsdoc + * + * @param e + * @param e.filename + * @param e.source + * @example + * @partial "partial_doc.jsdoc" + */ + beforeParse: function(e) { + e.source = e.source.replace(/(@partial \".*\")+/g, function($) { + var pathArg = $.match(/\".*\"/)[0].replace(/"/g,''); + var fullPath = path.join(e.filename , '..', pathArg); + + var partialData = fs.readFileSync(fullPath, global.env.opts.encoding); + + return partialData; + }); + } +}; diff --git a/third_party/jsdoc/plugins/railsTemplate.js b/third_party/jsdoc/plugins/railsTemplate.js new file mode 100644 index 0000000000..270381c6bb --- /dev/null +++ b/third_party/jsdoc/plugins/railsTemplate.js @@ -0,0 +1,20 @@ +/** + @overview Strips the rails template tags from a js.erb file + @module plugins/railsTemplate + @author Jannon Frank + */ +'use strict'; + +exports.handlers = { + /** + * Remove rails tags from the source input (e.g. <% foo bar %>) + * @param e + * @param e.filename + * @param e.source + */ + beforeParse: function(e) { + if (e.filename.match(/\.erb$/)) { + e.source = e.source.replace(/<%.*%>/g, ''); + } + } +}; diff --git a/third_party/jsdoc/plugins/shout.js b/third_party/jsdoc/plugins/shout.js new file mode 100644 index 0000000000..05c5d9f8aa --- /dev/null +++ b/third_party/jsdoc/plugins/shout.js @@ -0,0 +1,17 @@ +/** + @overview This is just an example. + @module plugins/shout + @author Michael Mathews + */ +'use strict'; + +exports.handlers = { + /** + Make your descriptions more shoutier. + */ + newDoclet: function(e) { + if (typeof e.doclet.description === 'string') { + e.doclet.description = e.doclet.description.toUpperCase(); + } + } +}; diff --git a/third_party/jsdoc/plugins/sourcetag.js b/third_party/jsdoc/plugins/sourcetag.js new file mode 100644 index 0000000000..c773283d81 --- /dev/null +++ b/third_party/jsdoc/plugins/sourcetag.js @@ -0,0 +1,51 @@ +/** + @module plugins/sourcetag + @author Michael Mathews + */ +'use strict'; + +var logger = require('jsdoc/util/logger'); + +exports.handlers = { + /** + Support @source tag. Expected value like: + { "filename": "myfile.js", "lineno": 123 } + Modifies the corresponding meta values on the given doclet. + + WARNING: If you are using a JSDoc template that generates pretty-printed source files, + such as JSDoc's default template, this plugin can cause JSDoc to crash. To fix this issue, + update your template settings to disable pretty-printed source files. + + @source { "filename": "sourcetag.js", "lineno": 13 } + */ + newDoclet: function(e) { + var tags = e.doclet.tags, + tag, + value; + + // any user-defined tags in this doclet? + if (typeof tags !== 'undefined') { + // only interested in the @source tags + tags = tags.filter(function($) { + return $.title === 'source'; + }); + + if (tags.length) { + // take the first one + tag = tags[0]; + + try { + value = JSON.parse(tag.value); + } + catch(e) { + logger.error('@source tag expects a valid JSON value, like { "filename": "myfile.js", "lineno": 123 }.'); + return; + } + + e.doclet.meta = e.doclet.meta || {}; + e.doclet.meta.filename = value.filename || ''; + e.doclet.meta.lineno = value.lineno || ''; + } + } + } +}; diff --git a/third_party/jsdoc/plugins/summarize.js b/third_party/jsdoc/plugins/summarize.js new file mode 100644 index 0000000000..da72f73869 --- /dev/null +++ b/third_party/jsdoc/plugins/summarize.js @@ -0,0 +1,61 @@ +/** + * @overview This plugin creates a summary tag, if missing, from the first sentence in the + * description. + * @module plugins/summarize + * @author Mads Bondo Dydensborg + */ +'use strict'; + +exports.handlers = { + /** + * Autogenerate summaries, if missing, from the description, if present. + */ + newDoclet: function(e) { + var endTag; + var tags; + var stack; + + // If the summary is missing, grab the first sentence from the description + // and use that. + if (e.doclet && !e.doclet.summary && e.doclet.description) { + // The summary may end with `.$`, `. `, or `.<` (a period followed by an HTML tag). + e.doclet.summary = e.doclet.description.split(/\.$|\.\s|\.]+>/g) || []; + stack = []; + + tags.forEach(function(tag) { + var idx = tag.indexOf('/'); + + if (idx === -1) { + // start tag -- push onto the stack + stack.push(tag); + } else if (idx === 1) { + // end tag -- pop off of the stack + stack.pop(); + } + + // otherwise, it's a self-closing tag; don't modify the stack + }); + + // stack should now contain only the start tags that lack end tags, + // with the most deeply nested start tag at the top + while (stack.length > 0) { + // pop the unmatched tag off the stack + endTag = stack.pop(); + // get just the tag name + endTag = endTag.substring(1, endTag.search(/[ >]/)); + // append the end tag + e.doclet.summary += ''; + } + + // and, finally, if the summary starts and ends with a

    tag, remove it; let the + // template decide whether to wrap the summary in a

    tag + e.doclet.summary = e.doclet.summary.replace(/^

    (.*)<\/p>$/i, '$1'); + } + } +}; diff --git a/third_party/jsdoc/plugins/test/fixtures/markdown.js b/third_party/jsdoc/plugins/test/fixtures/markdown.js new file mode 100644 index 0000000000..a727d65568 --- /dev/null +++ b/third_party/jsdoc/plugins/test/fixtures/markdown.js @@ -0,0 +1,24 @@ +'use strict'; + +/** + * @see [Nowhere](http://nowhere.com) + */ +function foo() {} + +/** + * @see AnObject#myProperty + */ +function bar() {} + +/** + * @classdesc My class. + * @description My class. + * @exception {Error} Some error. + * @param {string} myParam - My parameter. + * @property {string} value - Value of myParam. + * @return {MyClass} Class instance. + * @see [Example Inc.](http://example.com) + */ +function MyClass(myParam) { + this.value = myParam; +} diff --git a/third_party/jsdoc/plugins/test/fixtures/overloadHelper.js b/third_party/jsdoc/plugins/test/fixtures/overloadHelper.js new file mode 100644 index 0000000000..12c298c628 --- /dev/null +++ b/third_party/jsdoc/plugins/test/fixtures/overloadHelper.js @@ -0,0 +1,50 @@ +/** + * A bowl of non-spicy soup. + * @class + *//** + * A bowl of spicy soup. + * @class + * @param {number} spiciness - The spiciness of the soup, in Scoville heat units (SHU). + */ +function Soup(spiciness) {} + +/** + * Slurp the soup. + *//** + * Slurp the soup loudly. + * @param {number} dBA - The slurping volume, in A-weighted decibels. + */ +Soup.prototype.slurp = function(dBA) {}; + +/** + * Salt the soup as needed, using a highly optimized soup-salting heuristic. + *//** + * Salt the soup, specifying the amount of salt to add. + * @variation mg + * @param {number} amount - The amount of salt to add, in milligrams. + */ +Soup.prototype.salt = function(amount) {}; + +/** + * Heat the soup by the specified number of degrees. + * @param {number} degrees - The number of degrees, in Fahrenheit, by which to heat the soup. + *//** + * Heat the soup by the specified number of degrees. + * @variation 1 + * @param {string} degrees - The number of degrees, in Fahrenheit, by which to heat the soup, but + * as a string for some reason. + *//** + * Heat the soup by the specified number of degrees. + * @param {boolean} degrees - The number of degrees, as a boolean. Wait, what? + */ +Soup.prototype.heat = function(degrees) {}; + +/** + * Discard the soup. + * @variation discardSoup + *//** + * Discard the soup by pouring it into the specified container. + * @variation discardSoup + * @param {Object} container - The container in which to discard the soup. + */ +Soup.prototype.discard = function(container) {}; diff --git a/third_party/jsdoc/plugins/test/fixtures/railsTemplate.js.erb b/third_party/jsdoc/plugins/test/fixtures/railsTemplate.js.erb new file mode 100644 index 0000000000..c3df649549 --- /dev/null +++ b/third_party/jsdoc/plugins/test/fixtures/railsTemplate.js.erb @@ -0,0 +1,19 @@ +/** + @overview Strips the rails template tags from a js.erb file + @module plugins/railsTemplate + @author Jannon Frank + */ + +exports.handlers = { + /** + * Remove rails tags from the source input (e.g. <% foo bar %>) + * @param e + * @param e.filename + * @param e.source + */ + beforeParse: function(e) { + if (e.filename.match(/\.erb$/)) { + e.source = e.source.replace(/<%.*%> /g, ""); + } + } +}; \ No newline at end of file diff --git a/third_party/jsdoc/plugins/test/specs/commentConvert.js b/third_party/jsdoc/plugins/test/specs/commentConvert.js new file mode 100644 index 0000000000..dc29b80d72 --- /dev/null +++ b/third_party/jsdoc/plugins/test/specs/commentConvert.js @@ -0,0 +1,19 @@ +/*global describe: true, env: true, expect: true, it: true, jasmine: true */ +describe("commentConvert plugin", function() { + var parser = jasmine.createParser(); + var path = require('jsdoc/path'); + + var docSet; + + var pluginPath = 'plugins/commentConvert'; + var pluginPathResolved = path.join(env.dirname, pluginPath); + var plugin = require(pluginPathResolved); + + require('jsdoc/plugins').installPlugins([pluginPathResolved], parser); + docSet = jasmine.getDocSetFromFile(pluginPath + '.js', parser); + + it("should convert '///-style comments into jsdoc comments", function() { + var doclet = docSet.getByLongname("module:plugins/commentConvert.handlers.beforeParse"); + expect(doclet.length).toEqual(1); + }); +}); diff --git a/third_party/jsdoc/plugins/test/specs/escapeHtml.js b/third_party/jsdoc/plugins/test/specs/escapeHtml.js new file mode 100644 index 0000000000..06989389a0 --- /dev/null +++ b/third_party/jsdoc/plugins/test/specs/escapeHtml.js @@ -0,0 +1,19 @@ +/*global describe: true, env: true, expect: true, it: true, jasmine: true */ +describe("escapeHtml plugin", function() { + var parser = jasmine.createParser(); + var path = require('jsdoc/path'); + + var docSet; + + var pluginPath = 'plugins/escapeHtml'; + var pluginPathResolved = path.join(env.dirname,pluginPath); + var plugin = require(pluginPathResolved); + + require('jsdoc/plugins').installPlugins([pluginPathResolved], parser); + docSet = jasmine.getDocSetFromFile(pluginPath + '.js', parser); + + it("should escape '&', '<' and newlines in doclet descriptions", function() { + var doclet = docSet.getByLongname("module:plugins/escapeHtml.handlers.newDoclet"); + expect(doclet[0].description).toEqual("Translate HTML tags in descriptions into safe entities.
    Replaces <, & and newlines"); + }); +}); diff --git a/third_party/jsdoc/plugins/test/specs/markdown.js b/third_party/jsdoc/plugins/test/specs/markdown.js new file mode 100644 index 0000000000..af3a070646 --- /dev/null +++ b/third_party/jsdoc/plugins/test/specs/markdown.js @@ -0,0 +1,48 @@ +'use strict'; + +var path = require('jsdoc/path'); + +describe('markdown plugin', function() { + var pluginPath = 'plugins/markdown'; + var pluginPathResolved = path.join(global.env.dirname, pluginPath); + var plugin = require(pluginPathResolved); + + var docSet = jasmine.getDocSetFromFile('plugins/test/fixtures/markdown.js'); + + // TODO: more tests; refactor the plugin so multiple settings can be tested + + it('should process the correct tags by default', function() { + var myClass = docSet.getByLongname('MyClass')[0]; + + plugin.handlers.newDoclet({ doclet: myClass }); + [ + myClass.classdesc, + myClass.description, + myClass.exceptions[0].description, + myClass.params[0].description, + myClass.properties[0].description, + myClass.returns[0].description, + myClass.see + ].forEach(function(value) { + // if we processed the value, it should be wrapped in a

    tag + expect( /^

    (?:.+)<\/p>$/.test(value) ).toBe(true); + }); + }); + + describe('@see tag support', function() { + var foo = docSet.getByLongname('foo')[0]; + var bar = docSet.getByLongname('bar')[0]; + + it('should parse @see tags containing links', function() { + plugin.handlers.newDoclet({ doclet: foo }); + expect(typeof foo).toEqual('object'); + expect(foo.see[0]).toEqual('

    Nowhere

    '); + }); + + it('should not parse @see tags that do not contain links', function() { + plugin.handlers.newDoclet({ doclet: bar }); + expect(typeof bar).toEqual('object'); + expect(bar.see[0]).toEqual('AnObject#myProperty'); + }); + }); +}); diff --git a/third_party/jsdoc/plugins/test/specs/overloadHelper.js b/third_party/jsdoc/plugins/test/specs/overloadHelper.js new file mode 100644 index 0000000000..0538fa4cfa --- /dev/null +++ b/third_party/jsdoc/plugins/test/specs/overloadHelper.js @@ -0,0 +1,101 @@ +/*global describe: true, env: true, expect: true, it: true, jasmine: true, xit: true */ +describe('plugins/overloadHelper', function() { + var parser = jasmine.createParser(); + var path = require('jsdoc/path'); + + var docSet; + + var pluginPath = 'plugins/overloadHelper'; + var pluginPathResolved = path.resolve(env.dirname, pluginPath); + var plugin = require(pluginPathResolved); + + require('jsdoc/plugins').installPlugins([pluginPathResolved], parser); + docSet = jasmine.getDocSetFromFile('plugins/test/fixtures/overloadHelper.js', parser); + + it('should exist', function() { + expect(plugin).toBeDefined(); + expect(typeof plugin).toBe('object'); + }); + + it('should export handlers', function() { + expect(plugin.handlers).toBeDefined(); + expect(typeof plugin.handlers).toBe('object'); + }); + + it('should export a "newDoclet" handler', function() { + expect(plugin.handlers.newDoclet).toBeDefined(); + expect(typeof plugin.handlers.newDoclet).toBe('function'); + }); + + it('should export a "parseComplete" handler', function() { + expect(plugin.handlers.parseComplete).toBeDefined(); + expect(typeof plugin.handlers.parseComplete).toBe('function'); + }); + + describe('newDoclet handler', function() { + it('should not add unique longnames to constructors', function() { + var soup = docSet.getByLongname('Soup'); + var soup1 = docSet.getByLongname('Soup()'); + var soup2 = docSet.getByLongname('Soup(spiciness)'); + + expect(soup.length).toBe(2); + expect(soup1.length).toBe(0); + expect(soup2.length).toBe(0); + }); + + it('should add unique longnames to methods', function() { + var slurp = docSet.getByLongname('Soup#slurp'); + var slurp1 = docSet.getByLongname('Soup#slurp()'); + var slurp2 = docSet.getByLongname('Soup#slurp(dBA)'); + + expect(slurp.length).toBe(0); + expect(slurp1.length).toBe(1); + expect(slurp2.length).toBe(1); + }); + + it('should update the "variation" property of the method', function() { + var slurp1 = docSet.getByLongname('Soup#slurp()')[0]; + var slurp2 = docSet.getByLongname('Soup#slurp(dBA)')[0]; + + expect(slurp1.variation).toBe(''); + expect(slurp2.variation).toBe('dBA'); + }); + + it('should not add to or change existing variations that are unique', function() { + var salt1 = docSet.getByLongname('Soup#salt'); + var salt2 = docSet.getByLongname('Soup#salt(mg)'); + + expect(salt1.length).toBe(1); + expect(salt2.length).toBe(1); + }); + + it('should not duplicate the names of existing numeric variations', function() { + var heat1 = docSet.getByLongname('Soup#heat(1)'); + var heat2 = docSet.getByLongname('Soup#heat(2)'); + var heat3 = docSet.getByLongname('Soup#heat(3)'); + + expect(heat1.length).toBe(1); + expect(heat2.length).toBe(1); + expect(heat3.length).toBe(1); + }); + + it('should replace identical variations with new, unique variations', function() { + var discard1 = docSet.getByLongname('Soup#discard()'); + var discard2 = docSet.getByLongname('Soup#discard(container)'); + + expect(discard1.length).toBe(1); + expect(discard2.length).toBe(1); + }); + }); + + describe('parseComplete handler', function() { + // disabled because on the second run, each comment is being parsed twice; who knows why... + xit('should not retain parse results between parser runs', function() { + parser.clear(); + docSet = jasmine.getDocSetFromFile('plugins/test/fixtures/overloadHelper.js', parser); + var heat = docSet.getByLongname('Soup#heat(4)'); + + expect(heat.length).toBe(0); + }); + }); +}); diff --git a/third_party/jsdoc/plugins/test/specs/railsTemplate.js b/third_party/jsdoc/plugins/test/specs/railsTemplate.js new file mode 100644 index 0000000000..feebd74ab3 --- /dev/null +++ b/third_party/jsdoc/plugins/test/specs/railsTemplate.js @@ -0,0 +1,17 @@ +/*global describe: true, env: true, expect: true, it: true, jasmine: true */ +describe("railsTemplate plugin", function() { + var parser = jasmine.createParser(); + var path = require('jsdoc/path'); + + var pluginPath = path.join(env.dirname, 'plugins/railsTemplate'); + var plugin = require(pluginPath); + + require('jsdoc/plugins').installPlugins([pluginPath], parser); + require('jsdoc/src/handlers').attachTo(parser); + + it("should remove <% %> rails template tags from the source of *.erb files", function() { + var docSet = parser.parse([path.join(env.dirname, "plugins/test/fixtures/railsTemplate.js.erb")]); + + expect(docSet[2].description).toEqual("Remove rails tags from the source input (e.g. )"); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/plugins/test/specs/shout.js b/third_party/jsdoc/plugins/test/specs/shout.js new file mode 100644 index 0000000000..7b591843e8 --- /dev/null +++ b/third_party/jsdoc/plugins/test/specs/shout.js @@ -0,0 +1,19 @@ +/*global describe: true, env: true, expect: true, it: true, jasmine: true */ +describe("shout plugin", function() { + var parser = jasmine.createParser(); + var path = require('jsdoc/path'); + + var docSet; + + var pluginPath = 'plugins/shout'; + var pluginPathResolved = path.join(env.dirname, pluginPath); + var plugin = require(pluginPathResolved); + + require('jsdoc/plugins').installPlugins([pluginPathResolved], parser); + docSet = jasmine.getDocSetFromFile(pluginPath + '.js', parser); + + it("should make the description uppercase", function() { + var doclet = docSet.getByLongname("module:plugins/shout.handlers.newDoclet"); + expect(doclet[0].description).toEqual("MAKE YOUR DESCRIPTIONS MORE SHOUTIER."); + }); +}); diff --git a/third_party/jsdoc/plugins/test/specs/sourcetag.js b/third_party/jsdoc/plugins/test/specs/sourcetag.js new file mode 100644 index 0000000000..5c6568b1bd --- /dev/null +++ b/third_party/jsdoc/plugins/test/specs/sourcetag.js @@ -0,0 +1,23 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('sourcetag plugin', function() { + var parser = jasmine.createParser(); + var path = require('jsdoc/path'); + + var docSet; + + var pluginPath = 'plugins/sourcetag'; + var pluginPathResolved = path.join(global.env.dirname, pluginPath); + var plugin = require(pluginPathResolved); + + require('jsdoc/plugins').installPlugins([pluginPathResolved], parser); + docSet = jasmine.getDocSetFromFile(pluginPath + '.js', parser); + + it("should set the lineno and filename of the doclet's meta property", function() { + var doclet = docSet.getByLongname('module:plugins/sourcetag.handlers.newDoclet'); + expect(doclet[0].meta).toBeDefined(); + expect(doclet[0].meta.filename).toEqual('sourcetag.js'); + expect(doclet[0].meta.lineno).toEqual(13); + }); +}); diff --git a/third_party/jsdoc/plugins/test/specs/summarize.js b/third_party/jsdoc/plugins/test/specs/summarize.js new file mode 100644 index 0000000000..9fb5ab80a0 --- /dev/null +++ b/third_party/jsdoc/plugins/test/specs/summarize.js @@ -0,0 +1,112 @@ +/*global describe, expect, it */ +'use strict'; + +var summarize = require('../../summarize'); + +describe('summarize', function() { + it('should export handlers', function() { + expect(summarize.handlers).toBeDefined(); + expect(typeof summarize.handlers).toBe('object'); + }); + + it('should export a newDoclet handler', function() { + expect(summarize.handlers.newDoclet).toBeDefined(); + expect(typeof summarize.handlers.newDoclet).toBe('function'); + }); + + describe('newDoclet handler', function() { + var handler = summarize.handlers.newDoclet; + + it('should not blow up if the doclet is missing', function() { + function noDoclet() { + return handler({}); + } + + expect(noDoclet).not.toThrow(); + }); + + it('should not change the summary if it is already defined', function() { + var doclet = { + summary: 'This is a summary.', + description: 'Descriptions are good.' + }; + handler({ doclet: doclet }); + + expect(doclet.summary).not.toBe(doclet.description); + }); + + it('should not do anything if the description is missing', function() { + var doclet = {}; + handler({ doclet: doclet }); + + expect(doclet.summary).not.toBeDefined(); + }); + + it('should use the first sentence as the summary', function() { + var doclet = { + description: 'This sentence is the summary. This sentence is not.' + }; + handler({ doclet: doclet }); + + expect(doclet.summary).toBe('This sentence is the summary.'); + }); + + it('should not add an extra period if there is only one sentence in the description', + function() { + var doclet = { + description: 'This description has only one sentence.' + }; + handler({ doclet: doclet }); + + expect(doclet.summary).toBe('This description has only one sentence.'); + }); + + it('should use the entire description, plus a period, as the summary if the description ' + + 'does not contain a period', function() { + var doclet = { + description: 'This is a description' + }; + handler({ doclet: doclet }); + + expect(doclet.summary).toBe('This is a description.'); + }); + + it('should use the entire description as the summary if the description contains only ' + + 'one sentence', function() { + var doclet = { + description: 'This is a description.' + }; + handler({ doclet: doclet }); + + expect(doclet.description).toBe('This is a description.'); + }); + + it('should work when an HTML tag immediately follows the first sentence', function() { + var doclet = { + description: 'This sentence is the summary.This sentence is small.' + }; + handler({ doclet: doclet }); + + expect(doclet.summary).toBe('This sentence is the summary.'); + }); + + it('should generate valid HTML if a tag is opened, but not closed, in the summary', + function() { + var doclet = { + description: 'This description has a tag. The tag straddles sentences.' + }; + handler({ doclet: doclet }); + + expect(doclet.summary).toBe('This description has a tag.'); + }); + + it('should not include a

    tag in the summary', function() { + var doclet = { + description: '

    This description contains HTML.

    And plenty of it!

    ' + }; + handler({ doclet: doclet }); + + expect(doclet.summary).toBe('This description contains HTML.'); + }); + }); +}); diff --git a/third_party/jsdoc/rhino/MPL_2.0.txt b/third_party/jsdoc/rhino/MPL_2.0.txt new file mode 100644 index 0000000000..a612ad9813 --- /dev/null +++ b/third_party/jsdoc/rhino/MPL_2.0.txt @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/third_party/jsdoc/rhino/assert.js b/third_party/jsdoc/rhino/assert.js new file mode 100644 index 0000000000..5c762d0727 --- /dev/null +++ b/third_party/jsdoc/rhino/assert.js @@ -0,0 +1,315 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// UTILITY +var util = require('util'); +var pSlice = Array.prototype.slice; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + this.message = options.message || getMessage(this); +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + try { + var ka = Object.keys(a), + kb = Object.keys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; diff --git a/third_party/jsdoc/rhino/crypto.js b/third_party/jsdoc/rhino/crypto.js new file mode 100644 index 0000000000..35e162b7d0 --- /dev/null +++ b/third_party/jsdoc/rhino/crypto.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('crypto-browserify'); diff --git a/third_party/jsdoc/rhino/events.js b/third_party/jsdoc/rhino/events.js new file mode 100644 index 0000000000..488025a5d0 --- /dev/null +++ b/third_party/jsdoc/rhino/events.js @@ -0,0 +1,292 @@ +/** + * Shim for Node.js `events` module. + * @see https://github.com/Gozala/events + * @license MIT + */ +'use strict'; + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; +if (!process.EventEmitter) { + process.EventEmitter = EventEmitter; +} + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + throw TypeError('Uncaught, unspecified "error" event.'); + } + return false; + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} \ No newline at end of file diff --git a/third_party/jsdoc/rhino/fs.js b/third_party/jsdoc/rhino/fs.js new file mode 100644 index 0000000000..8261e31991 --- /dev/null +++ b/third_party/jsdoc/rhino/fs.js @@ -0,0 +1,167 @@ +/** + * Partial Rhino shim for Node.js' `fs` module. + * @see http://nodejs.org/api/fs.html + */ +'use strict'; + +var path = require('path'); +var util = require('util'); + +var asyncify = path._asyncify; + +function checkEncoding(enc, name) { + // we require the `encoding` parameter for Node.js compatibility; on Node.js, if you omit the + // encoding, you get a stream instead of a string + if (!enc || typeof enc === 'function') { + throw new Error(name + ' requires an encoding on Rhino!'); + } + + // Node.js wants 'utf8', but Java wants 'utf-8' + if (enc === 'utf8') { + enc = 'utf-8'; + } + + return enc; +} + +// provide an error that's consistent with Node.js +function errorFactory(filepath) { + return new Error( util.format("ENOENT, no such file or directory '%s'", filepath) ); +} + +exports.readFileSync = function readFileSync(filename, encoding) { + encoding = checkEncoding(encoding, 'fs.readFile[Sync]'); + + return readFile(filename, encoding); +}; +exports.readFile = asyncify(exports.readFileSync); + +// in node 0.8, path.exists() and path.existsSync() moved to the "fs" module +exports.existsSync = path.existsSync; +exports.exists = path.exists; + +var statSync = exports.statSync = function statSync(_path) { + var f = new java.io.File(_path); + if (!f) { + throw errorFactory(_path); + } + + return { + isFile: function isFile() { + return f.isFile(); + }, + isDirectory: function isDirectory() { + return f.isDirectory(); + }, + isSymlink: function isSymlink() { + // java.io.File resolves symlinks + return false; + } + }; +}; +exports.stat = asyncify(statSync); + +// java.io.File resolves symlinks, so we can alias `lstat` to `stat` +var lstatSync = exports.lstatSync = statSync; +exports.lstat = asyncify(lstatSync); + +var readdirSync = exports.readdirSync = function readdirSync(_path) { + var dir; + var files; + + dir = new java.io.File(_path); + if (!dir.directory) { + throw errorFactory(_path); + } + + files = dir.list() + .map(function(fileName) { + return String(fileName); + }); + + return files; +}; +exports.readdir = asyncify(readdirSync); + +// JSDoc extension to `fs` module +var toDir = exports.toDir = function toDir(_path) { + var f; + + _path = path.normalize(_path); + f = new java.io.File( path.resolve(global.env.pwd, _path) ); + + if ( f.isDirectory() ){ + return _path; + } else { + return path.dirname(_path); + } +}; + +var mkdirSync = exports.mkdirSync = function mkdirSync(_path) { + var dir_path = toDir(_path); + ( new java.io.File(dir_path) ).mkdir(); +}; +exports.mkdir = asyncify(mkdirSync); + +// JSDoc extension to `fs` module +exports.mkPath = function mkPath(_path) { + if ( Array.isArray(_path) ) { + _path = _path.join(''); + } + + ( new java.io.File(path.resolve(global.env.pwd, _path)) ).mkdirs(); +}; + +// JSDoc extension to `fs` module +exports.copyFileSync = function copyFileSync(inFile, outDir, fileName) { + if (fileName === undefined || fileName === null) { + fileName = path.basename(inFile); + } + + outDir = toDir(outDir); + + inFile = new java.io.File(inFile); + var outFile = new java.io.File(outDir + '/' + fileName); + + var bis = new java.io.BufferedInputStream(new java.io.FileInputStream(inFile), 4096); + var bos = new java.io.BufferedOutputStream(new java.io.FileOutputStream(outFile), 4096); + var theChar = bis.read(); + while (theChar !== -1) { + bos.write(theChar); + theChar = bis.read(); + } + + bos.close(); + bis.close(); +}; +exports.copyFile = asyncify(exports.copyFileSync); + +exports.writeFileSync = function writeFileSync(filename, data, encoding) { + encoding = checkEncoding(encoding, 'fs.writeFile[Sync]'); + + var out = new java.io.PrintWriter( + new java.io.OutputStreamWriter( + new java.io.FileOutputStream(filename), + encoding + ) + ); + + try { + out.write(data); + } + finally { + out.flush(); + out.close(); + } +}; +exports.writeFile = asyncify(exports.writeFileSync); + +exports.rmdirSync = function rmdirSync(_path) { + throw new Error('not implemented'); +}; +exports.rmdir = asyncify(exports.rmdirSync); + +exports.unlinkSync = function unlinkSync(_path) { + throw new Error('not implemented'); +}; +exports.unlink = asyncify(exports.unlinkSync); diff --git a/third_party/jsdoc/rhino/js.jar b/third_party/jsdoc/rhino/js.jar new file mode 100644 index 0000000000000000000000000000000000000000..696a37d4f92ca5340309cf12296c0391181a3d5b GIT binary patch literal 1168318 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%0AAs+xn4GZS;jBZ6p`{*VX5^qLTH9V_tryUDU^` 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

    To!cYvY;!M1YLQz-~CANi3^ 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

    hfm9jeZEct+E6u9 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

      9@jtX9vAAwL%F{xIqKAf$jzaE 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�G#mFE+-`krm@qGx0VL!ufOrw( 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

      d(g+yjz9r+YwdM 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

      9%M&IV3>S!)X7mD8^zl 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­gB%JW!iJ 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 z zrO6Mpkzp2P*r@kVVoFJjTQBLT=IO;8s|2@i zW4tV)WGt%$Lf{@@wgtH<*PcK5g05a?smBZWGZeZ^$Y-t-StGHfksW0^jw$5)GgmIV z(8-^r2dXISB9jb@;`-BMz~V8?@IJ^qsnKnbnHQoVuW%> z9@k7v-K-F0stkf#RVV`@=VOURxQovvDDm)_J;ZPjdYiP{UPE~R7?%@@ifjE0I_F>^ z@!o&4ENX}aj2a!&~vO1MO4KeTr33d^Uwq# zU}0Wx2F4rcxG<(TIiB;jcR0F$x5Uu z5u`7qOzq25Qh4WJB6&Ll#YwZDs%MlWmtDmkLnWq4^lvEtg6<`zg?80ukoBIa-8VE{ zFJ3OSOVH%oE9hHX0vjORrd=I&@4w6nLi!C2ZfOfB=Cc>&nXc3W^DL~wfI=*`5>>5U z!x3mp9LBxQz?uS@K64YFvP8mFo#3>xm98@?0Kk}BZUYs`r5!yA6-_%_6{I-!(KY$K zg|wFFHO-tQ$p@Y=LTb;=uifVXa~eB zEld-ae0Mq>AK^lpR~#b?ThB#m(R3=csIRPeP$wm9y=1xcvLnQ;N((At%d8f}R?51% zyHF-wN`{AdWWLFNrjEPM5D(1o5-IV>dSNylW2uzrO(bjUT#MyyAcUt(XO^lFEA2r)h5Gig9tJhgS_4>f~>V z{`nt{cLM^u2gpytWP#&&nQunlj9k3*O_Ce}THwXw_;=LgV7!OBati;kgu%N&A;dq@ zAwZ&_8W)|w2_YnK&NZpb7lVdJLKf-D^;ZdybbLJ6r)>ME15Shph6hy}qlity|@CU}%n~;Ye4yT9xOS z)ksMbstp8&;~n`}T0|5ldWcU0;{jPrk8Q%QdRC(=ZNj`nf)u_NQFkBEMwMY4&$ZLO z+QqxbCABs4VGF`?YF|K|RQO4Ue^7ChZVvL#s@Ac^o*e#yrYS@49$$^)hj(7R`E7x- zpfcF#(AiYq!cRkYA>l&$a!%P&+kD*f9(`%ijY=mgu5?aL#NjB!q3|4i$3;Glamf~7 zS&?+qXG_ofn+2>S$4~e?K)2eGJy}Qz#L-xgcvuezq!2WNfdB-8@e{&coOFNlLVE#LbIK1j2JvME6Q&vGS!wAacWh zEPj@;u1mU#i$}hoKE=}`Gt&*1V^ig}5n;kEaNAI6R(K{8qDeh4x#c(I>Ubu7v$g!V z>r#)0T7!61!fuN2)}*Qm3thl>A?Sr%$aO_a#Q0jkwsSGC(0rmZBlTBtUQR143Cs7%@u=-|R2Jp=>J7SSu^T6DZ2pDq<7s@AgY zlIRPuNQl)7vPcPm{uU|h@0J<#9bbaL>b<$VzQA!xDzvql9I67(i}5S&Y{eY(!oAe+ zW)qh^fj)xcZV$Fcc%uD9C?Gc4EJrT3n{eK^?i z;o+~FDcm#Lf`+TXx72W|UH4Xrp77TTDhm09%e-pb@+g|`7}guo9r56rf#9!vz<$XW z8M=_cmls>m$(BX3jdCO@;Rp(Z+X9xa=<0@Tb;6f8x@4I>x?}IWaSp&@8@^$Y{gC@C z2RQMu;vo942RKoO>;h}dP7ioS#yAK63xY?+AK*KM_v{v=ZYhWt*2IsGF6Y0GGj2*^ z^t_rl4yG=uD`lEbVb!8-x8+8;tb!h8F6BU|vMa)@SWd{r)0nz956ImSBD9NEag1<3p?_n2pwy6?rngiG9WKM2rH_W70vOK2mt;yvql--K@iMb~Ypx+nu9!X3HdtQ`2MzD)yt zc+J07!xn5Us}0d&oSj~ld1s%%A@&+Fx?y7z-IIe>jcDov&p@#aHDmY=(_~viUX!>E z=2TS4Zi-ORm+4jl)T-62%fG?Gp|v1<5=;kzTZo^NAaBQ~!1CFlxNb`o5O>fWg0zyg zle?tAV<_YYO8eBnK?z!S+^pc#AbF>-)+Wat`Os1skFt7z>tTSWPafYS`85yGF>2WL zY*XhXzhU~bx>9jK_v?nz3!#DSL-l?0J6xLMgICbMm!7JxUEa(DUj4ou7~uz9)WhO5 zaL}L!NUOZgN#Nfu-NZsiY<}PH{TY;h@2D)i#!2oPAxc66JiO8^vCLe%XlB*Xdg=1Fs0cb zt(K`AoT-#5hg#IXsD6;IPgH*B{u{2@4`%X6Q^AXXRzHOMCzl|sm=7A$6Pc%1&ijnd zE0({AGvi$LWl@_qWcSa(6T;e3w+~zIIQcK`jpK4pr2a9dAlgvUgu)br#CyCT?GK03p-)tQJO_4apE9)WsTM10 z?jC9-Dp}@-PZi3uPBAd2yU4@3S)uAt#&c`@B?eW?yC{~UE_LFXLuBz`_gh}uL>=c3Dic&jUXEA%JNl# zWpoPHF7(NA!3BLDoUug_id`6Q*@8o!T(Luac%r$fkx_biLOd1)*LvEdMyxH>x2Aq( zUSs1)Rv4V@ZL-!|hF^A=`8jv*n^5h}!jPnMYqK$pOqCd|2Pa9N1iHL32X6kqohl{Q z7Crg?J1T8c2eCv{Ye~47N2gxQj)!T%R}Y(ydF6Jb zk;@z|VY3|zqLyM)8c_U~rIU`)AE7Z5ujtug!rnCNV&hP!1JPZEXQC;ua4?um`wYZ< z%nXvPy}TYe_n-A3b;<)=)zF72d?hUWNE;i?Iu!;2PFw?(727Tt%Pt*!__}G|J|g(* ziQ%p|)0YL{PLv=5ai;qX>?HI?9- zmFR2KCrgWXOzeqjF(Q_psJ3u^69gHMVHJHhOkwRBIII$v<|IaZ>M~ z)zPjbL32>+P^A#CJ2&HW=&LK5@|7w|*uP)GOU^-`3m#DLtpKS$jgm+N7VwvjTrT9w zie!@ZL7q7?3K@_#=ua1_*$dWSEN1rMmOZAm0Nga+e|hv}VcfB|gwz)+zk6u~d*`&% zK-UBbu98yqfM-V(bHj zrvHWHr%r7HUGkcjblvaL(qz_KPxkk=hWDUPtpy+xl7RY0K{`W8VGflzBIo5;RG$|2 zd8p1VO!q5<=B?ZXX^iwuO}iI;eKF{EA&#z!cP37;b*c?)4zev(zouAnXIG71COpM! zBn7V3l>V#qqc6e_Si~J@A$LLsTV$38iQRp@uoNYzMJQSv6Wz$mwe5W6{PQe`MQ_dR zhwwwexEp0Y$Tr5f3jS(er)K)M&#~R9N=g9Cb~Jk@!3xZ^d-5PpBEX%vWe+mDlhE;& z(*eP%-hq4^0B$5+(R0D^~+QVb~Kv;1fY8 zKVdLGVIY708_LJ$GC$hc>Wb*Z)I(~*VvwgGSQM&PQ|#x!IJnxC2MqPMrNlM%NZjd_ z&~QkKUD5ngrkWZDF%PE?gQkq2hgP+1nuL+nEXD&M%lmu+=M-M02w{??1&L9NJF9Rd ztM)9hiKexR+1y#Jm{Ik#K~@Na!Ven6JJhEqJnCK5;+Z{#$o^Ncy&`_UZ0x5zAZf2~ z@{@u6Xh-IIz%C;CcRzE>IFhN`azu+g)olC(>%3-Gw{QWRbsp^fs9~i3_o3jUXD!Av zTJ?%ExBY^6VA&t11^PHM-F?*!Z~`tDZo7>cgIjd-xLzXO&^P0VZ`6iYYLsVlHn_jB zY#Bjef=BR>vLlZs!?x9A5t(6CUsf)%BvBbg>8A*8mKD({?^B&}&TSZj^up2E)qgGa zm?oK`Ce2e6G8OaE+nUXJAudAIT~=<}tQ(SD(2*Lr8Ik)HOdAZv+EGd(MDHh)@#>(Sa3 zHomv=4C`ar&^+le5xWLgouf^yUHf3z5*j5}ofElNU7Lv3tJxK#j2^!&P&RwBV(dU>_9@D|GohcS8hNsc|C5{VgS=N|ghAUl=gj$$n z+IEy4G^@7>XLWdt*a$5qR-E0qiyt56jx>}Na<|e(rAEpqIUyj3KWL{`MAfGJ2H25| zUFSJg4{3SN&4Pcc5B)$38>9aH8^+>{t!nHGsd&fD4AEu1Jo}r1}m3sJ7S5;7@tHwrVMw7ZCboh-s!ichcD`f8)DPAcH%m2c z{Z{ZhN^&6FfD8Lr`=m84OviKHj`{b7M*F1$4?7ly7W9*H$F`!fE%1Xx%{r@G@MU8V6O(Xr}G6Zdo#$rL824$sYs=ShuK)O1=Y%s>;nIKI^m{hEFPI(Wp)nrp#S~f{_+3G0h}Gda(k8jC`r!W4|Q<0>1A%P@Iy-g z-bit^4&kEO>lVZ8&$b3|t!=6*>FZ+(`Cz<>YJEH{5WV-w!GB4y;{vZ_Jg+^uQGt{M zUI0KhvM1FKbVjhqWp?je&!>#!hn zcybZ~r>&F68C`h#oa5UWNO*qVEtZHnm(&?Rocb9sbuIUS#`UDpCAS^fwsp8;N9)}E zr4F){dcwUdu}l*?t7ht%wC9zw(v=utybX19r+_Q!iKpgKSaQ!RSnVG;=e7G_pMr=& ze2cGypX%w~y5D;5VauzB8?TO=K8PCnuh|5X3e;@?F|Nqo_z!u9KjvfFgW?%(?+@tz zl`o+lwzQ#8fPgw^|G)C(|IVuH)r9?*Ma=y1&y=Ld+z!bM1d{Xs3qdlY_}8hM4iyqU zNY)c<($kj)}77p z_?_#n*44!y?$_q5>j@zAzN;U7i^SCHIUAL~XI<$j$?{ir)_XDH(YxQ@ zTiHivEb?d#>CMMH!qnRi`%$R(KOeN#Q>mH<{;b04SF83fhUizFy|fy{t@2cc-&5-S zdD`#q$uN`rv?o7zuX+{GV>_^2`K-_S@Mc`y$6xsy?DblA@ukRqTZ!ne#Ah1ui@hid zWTivpNKKYFT{7{)Gpcl*lzjA1wO(q4R+!z?O5-L`k>I|vZZ8@gMWJ_r0DCy_&?r`= zf)jWJx7zC{A2Rk<|Fs?|pbI&DIPJeO84LGoh9WTpCk3N5oL?6krxOT5h6 zky?-XKMh)8Ru?L)%9Ai&WMp@xGbU^()||=zS!+`2S^8@gW-1HiUIl<6-!5*{Yj)7t zjF94~rqiyY;33PqXzNvyw*zl`1rzhfV_Sw}l%z5x6J^FqlB^r23w2G@xKUzQHBmQF zMVw_b*=~IYKiche1c%`!u9X}xYw7iFG+1F_16x>@VqGyDbK$4a(yr;8#ZwFw$g;9lYT_&h{#EiT+-1wygcoljn+af%vgHINt-+TFPy6= z7X^>+n}-{GM>JdBT#Us7D#`K``Q4AZsENvQ1|Q^ZrJ5-%-9#46$_r|5Tnv6FE9!R1 z_zEgWEtP$$5$Y;|B#;^zG$!QJFhty#4<;PFJOgn9ps+R4zx|Lyu)) zLKHgaw(~_szM4Cw`mFF(-CfzpU6b%mK-CoCu-s&G3J0iU3Gbr8zGbE?BDc2VaI^7a z9)a>Jd}eSkL8kQtuh06xxJe)JsZ?QLY-7d-dL+HP+cV9O`nB2$&ZRDB{(%1doY91kW=Wdw>VUuz2I$Uydx+J|STBT^ zL#)Ar<%0%(>1+&>CY>}KHz6dvW>psKT@LZINoU~rov*N(L~1$$DAr=!}8wL|%8zvKG8%7e{ z3ae@-*qGDg7sDLF45^6NPS|!V$4;F?3AE%!6K>~sP_wM2;l#Qvif&aTUN$#O=KR_0 z(+SnbRx2Ym1v?&U3a$_ZxU={Kk*9;IZZRz3F)ee)g}!0r*-ysC_PqG2N!HFgEKca0 z1Z5^XP2v8gacuSHu_HDhC*?BuEX8(adFTevut~F#7`hODdUPJ{ z7%y4E(e(7p?q|E;j`yRG)22vyBPw=rIqO@Ex%R4!)PP%fopZSaZnrG$2&9xZ@E9ks z$vhMFvYw+u2KMkfH%m6ElOt~i*E=7Af8h_BDy)1jv~1Mslyc95=ap=rF8S%GujSm9 znxOTX+~wI_?~nD!;ttBCi+OozD4p#Tj-O>Ku*y@YrIkuH^E6Jk2vi;~)ma_hu!kSmS zj9a8?r#NTin3?q)#ACi=&5g$tJ?F?nFbhTRjfs_XH76}7cc%jOtJeA{$X>1U3t0Ld zWd)qxJB~&5ch#Ny_FWtWnr);9HDj=-S&6`dtRoa49W4aPLCM6yGz9->mS6D0%6!SJ z%d2Jh$OWsTujnK~lmy;t<{YNd?8$Q8hzqAOIw2KT`K?jl;{vPS zdrqVgkL@38;9p6>AM)~#<#U|E4{sPE3}d(QP^QkH$4gZKKSnYGgQ@AeM5+R{tJe2` zDh3g~N>>HvjRTPtWZWWx1`-P!*C`Z>*iQ$fE{RE z{aLE6L&Wg(*rK@QkM5B*C$iU(d+=#~-VW7tz9b~_*{eAKlds45b?+BLSvpP_uy?Cu zlaf3lVpf}X@VcgB;9I5X*0mGcqNaH(n9=K{#U1U&`TJ(0#hc+eFFZ6OUNxr^9o7L{ zoNzRW4&kPmn`+GUtzmX>o@!_IRCEwHr3G&+WA&G12cek2)Q7?u0L71FIsW01@`)JB z>Dd@9@Wrsn`+Ni%(ZI%{$nR*Y-t5M8@<6%Yk&xJAAx~GPiT+HwQ+GhBPkXw(S|Mm< zyM}$c#w=?gO44FjrKVW%(sBSoCm>d1?ig2L>_sx=iP?{SUqBDdR{8Y4G7&s}_=i1Q9ULVhA@o{P2mMgZN5^^eGN0Z6 z{Yk%`=>rTT9dG0)!iv6x`PRZ@D!xFe z!+NJ2^E$V@QdHkTP$r5FM1v`ys(864dY%BsKxkrj0SW|zMG|*%?_}B?@zjlE77e<+ zJ>lVc(#*Bwb=2yYkF_t&Ii^tr zq!ne#WF>!01VEwD=q6WH#hLiEB;Z-GdoLav8@J|+2kN<5d@Rl}?#?%Ef%{ZZm zu5W2~k%OIpkS~*vTRw56_qbwzdjj?CJDhPV9Na!F9=_pibLL` znQb?jBQ2>N;6K!_^jhN9hZ3!#F=IKG6Qf?GBZ0CMSLRZgid*#-@@- z1?2EPGgECQN^;U{-|4Jx<%_ogz;S(opYg~m(1$-1_x{mu^7}fxsi9wZklysRZ4I1& zbzJex@nEBmHio-S5 z2+D<%z<%?;Z0?`fMSw`?Hw47dWT*pgIgpBiHJTPXT_&nB^k73s+jT+QwgsWDMKj}V z8}suA1&t5paHRj>?46=JiN0;&bnJ9&+qUzIZQHhO+qT`Y*|BZgPRF^q! zJ7ZKm)=SM*bMIPv%{ie+S$IzT@~S`lznPAktZvksJLgUq`OkHGJ*S7O6I(=c&BamxYC6RQ))W$0&)&wbVJ zn=N&+JdcfVFp%FeKdYSUh5^$gwZtE!IZ{Ignxb}=P64N}RqtA_1~91A?TZ=B&z9N_ z&_f!usuuDcLV21jttM716a=1gYif5k<-1+0^v2oYKV5Ygvz7^|aV$f;y zf3Cfq{fm~6EbIMo_jEdIxX@R16ufJ!8~G`G_u1Yo5rd4PeCa4uon%TC$$rL1EokWR zms|squUm;^P_$M&QH>W$nlqz7-d>kkooIPpOl?n$Iw$XbiRcrf44rz6$cLlH;uGV9 zEGe}|LOfq2>P3$)l*~7Il`~%?nNRh#Fogn7m(jZO5zC8*OunYoh)R5PzHm;<>&(aj zUlw|*N}Bno;kBE#RQhE{8-BX^wF|E>Oy(y8v^q`w@N!KwR8>cp3ty&E;}*nKU^gQL zkp$mQ0+^if0qAjy>yZxM>K!d%&fanwXNwrZ5`!GgRzhk5TjPovwozK(I+Q+oy66O= z=oCZgWTeGNbeIwp>SCO#zhP*1Mn%#6Y!&{LMh-E`Msd=8HB5+Z<8DnCJct7nSgiN77bB=z zL0s8YfS!C_tmtz~vP|l@P;aGIU73BwtsSg;+6G-(rTIr1*!CPL^2i}$`^!F-Ga+$T z!&>1#%C$mC&P6&%r^&fAPKDDp)B}JIlBwH@UbD4h77lcFG_S#NJ&BXHrq^4Yx87#= zps69@k%mtSwa<7qM~L%u2Pz2q;)y5*USK?8otkp6vkx16V?Eu38pqNb-xf2`vxsLx@Nbbel8-e#!iE6ei4m2~!dy~cHEo;M!U*&tj4zSoiNCh0#j6@q^p z*_(q66I@%*7Ov3lnOpr#m!`PITkdpW_)D-m_W;fh$aDJc=l$2`I1v#+_8XtUO7vIg z7_LOpg3*Nd(F)&j`zJA{%5U^adJdh>zu>CoGE@R81MMO6 z&X^gwqL-Qf>?rwd5EESx0Ri=@0Rb`nw+yc23@uHJod2)KRn3pb)lV4c&!J|ov0D

      |y`p1dqn;t`*Uy+mq#`eo=;=wRoQbk27HUoQo1W zcaQ8e&F;m^5?b9zFN=mW+q?NQUCW1i1zo(GqoQt}ekpb@kHWO+fA=Kx_yUWO5%LHwG$?#5O%wzxXcO(Cc)NthOA=|5tlN#L@0E$`P-LqU*Dc4EA!C~r zxfMFHNx0n_{4Yqf=+`I{Lr69VG;)le5<^HgC^UkMvq+-c-JNnf*72MxCzmLi$;Jwq z05oxx?HZO^BvDe!L>fX3s)S}$i!EcKw&Q#_)D6x>C{V{u^z%T zcCd+dMQ*u<2hvUfc^!&1kwhP<20IujdNd9HQ@??oyL-}N&zf4DHuL4c_Qte2J-!Eb z#ek43fEGX{robGqR0x+f=n_#;96dY=u6P7vbQfA#x@wUyJS?B$Y*i5@mWiygk%dJp zGZmvE(9F0)UITKs8gM|0pVSod}^ zCc<8u?@1P3$|n0RQfzg4CnRb-OcTn&b;t#HR#sB6*dcH8-AKxAlw^f z)oE{oX>FqZLP<}N&)X7K3>zt{xFB!pepp?nT!A9BMab(@0fMHXQ+VrrC2tYPZ6n)W z$A|(?QrM6U24ZzHV)%TJT)5CPE)tjJkGoPiqhqEh^DJ2zCyLuCwsDk{6VIj~19%eE z@)TozBPo(ixdSLYryf+rmn+0nL1t?E+;XWsPg8-y3^VAs|ID4elC@P^5CNVbm7Jf2 zt+Qt6`o%*^b$%N`q&67ILl7GA`G2v*4)(VfRkm6Y(tmh*hR=mnOkX z(UMHV8V9dg^Q>fH*!A>lb<3G{6=mx=Q437KxE{CD)7y{~I;~!l_tbv-h1GHVcn(^G zC=#={4fRz(i`$Y*23>H0j_WVB{=@W4Mrw(SMnWL{(E)K59BZ5P-?8-Qu!fnzQPhCD z@IKk1A3=u&AuAh<=FOpM^IlO-E6P$TBjpJN}|94yDHB5cEeTBiYQKut``4f)^pzj_nQu3SL?OWR1uK)$d?GL^-Aua)SQbzr9$%J!+?zn%G7871&us)jRTUQyPCBpH~EwGLZZOT z65{xxI)Mf~R$lc$b`OWdN+*MPmG?r>p%fUT3I~mZxqgEOGCP@;?Y3IB-%Ws8mipD4 zI;Pz~pOCq0bh_N0#b%*a{kZoOQ|0KwNjJ#H8E3cOc_?_?6tbS@If!M`E_U+{=wr2G ztE4+eqX%5O9JjO4Q?!j+>}Rh!l0iS(hrf%>HsF@Ztk=6z<-_uqOEt#9m#rWxs7r_9`Mpw z1-!(kxU*S}_Z6lL6q6a5K(b`cUj_+i8^?6*-J48AQ>`|>Wlg!y(2D?i46eFX%2i65 zS)J&qnUf7=^cK9E<;iKezY6LoX;x-R3{E!^2lX9RQjsZ!q7ak7*++9t+mWe)I$jhL zsIR(84aL3@t|1>qbnv(*1vz@Ch@Km*j1~lSJ5P~=`8!!@(n+Mt=cXe_ zQ=38$R=thh*=QP>q80>yo5v|a4!!0zsccaXuG65VwBnJjx#N5xnUq^-U~E&^TDf~U z(d4GDHRxwNBmPM!v1;yW4K`pk@bR<@-jd{;VSUmu2bw0(j8P5)rRgTsoi#{~00VC1U!aUHfFs#s%Op)U9TX%q?QhM#)IwXD{syY~Q=u>&SdtD-d;eztXwhCak(t1%c8$m~~gB^@OZ8Tdm zpoEg3H9tF)c_g49&DAD}9P~^ee(bT=Q8M?C-mwH1_pz1IDd*&2ws^^bxht1;B~Hpq z?<`?W{jEY*XEoW`7Iq+rRGawi!)t zWJSvv>gLa>FxS{V{yiMp)give%gE1OAKv|iENWx%SCnk23)tINsL*v|#I2??uR&o>lawX9`wKbRce34|7uBzfFuTSV*KMmiT<@}`O|Z}F{sb~? z1?#)5Rk)t8jee+YvpHPnGLfsUok9LqbBG+%JNg&h(?1Wt12P{12?C@}P(`kXE6f;x z&Q9pWi!UhQCX1&HL$a?tw}- zxVmlkaHd{7jqm88oMA6=2WQK#xu?J(Xk79}$AEee%rsNU6P@|>?>;|(%q1?&WsHp4 z2p2h+w`Zx??5>|X>>FVlPJy}PT;I5&@DIcK(xyv?_QPHgqwq^SqjHPOXnbL_WYOnE zim5yueOg`!_-z%4om273^fVr=-nxgx7PQd5BlGIrk@zj{+!4#mUM!-@?wHYdrPE(E ze5dy-KDve$66TEOMle4DMOts`XmbO6d19xVUN8hzXw`@B?MS@l_9GsbS1c9Z^c&n8 zZg)w2*Y>G=hxREyw4$)glTK%EXd)G*8)VQ}qiWWOG;nzK)L#Fg{lq1nvHEW9v%g?P zX_oA$n)BNfC7{`)T{{1IrbyFlxX0Gs1( zsBA6p_<;ZJ-*+JM8kLt8{OUrYZ<(~3jN~axK2k6;;05+9p?PR4h*jC=CuQlR3o9NUF;||t~ z+K)})I;+3l(g>UHNR;0I(_Y7t5jKAKxP3&XCYt*@caX+a5c88H&t@86Ehdw?7ur+N z9Mzft`}%19%6sdSeIz#>+a=wznXna`EClkTN ziFWEJqpm9ZqVd~^mk8^CsV@C^AJV7*tZ-)$itgU<#EdSM%6pp*#PUpn<804kS%OxT zn!1!5w}G7l4M)?^Jvn~fAocsh7bL(3+(cf2fO8$L{z}5_?wiXtz_x_n0+)&6$C3i0 zJsCa_8mz8E@HAdsfgL7uQz|!U|4^LXD6W_{C=zd?TV8~vNAIM@aU`q0>M!g(=TxK1 z36$lZJ#f~-n>bha^5byX`V~F2C8>;{`+kMpVy4Bjs7<^VQy5!EX%534Y*LU?!s``~ zhVRc&(1_d!^t}xB4S!oj_wvtQ z&#Au-#CH&^7wUx;{ex}SP5TxfsP`gp2jrs%<_qW+U*|Rt$nP|eANa!z{eyA0w{5o< z_$v$Mi+fj2`<5Tb?>vwn*9}e9b zc-o=A-Jh3k6=wA$@B!$gQy<2j9$g!#trg}O)duQLffsyYUJdowt)mL}YLx3KS_NlB6O@bbbOnl*%b_x8wM=DrakH>G)Di5v%3I zb-b`lk-2kdf4dhq9Ni4VDm|jB*{$;|iSnzly+`N0v#5LtBFb8hBFuvVX3B(HrFem6 zpom1BQ2rgBvZ@CrRgY^5xjj}*w~H8cTxR}(7LyJUBa@EPgzXwonySB%2jB`(P4ld0?d^S_jKf zm~bM8*Mt>J(*+qv z5b}S97JA@2(lbh?w^H+ozO$J0=+OJkOyg*PA3wn7Z@PdJ<3l%f5je}21EsSJRxq;Q z?R`Uxz!_HF&xd*%Z7KuKdP*!OH@%AqkK1l?^sct4StB5oTQuTAkFFC%Uv zD)i<;R!m1s*gqMJ;!0+W3>o1pI7$>2Khy+j1iAv{uYo*Y8yWn2P((ZlMrOP+za=>} zAo+-nC~Y3Psd}-vdH}S_A_idHoVEIubEVn^BeVitP?~tc4ECDp#-vkQrsRxS2-i_v zb`$tgcS z>r8nly*wfFF<2pz^N37`Z4g|deTeb^-heiF)}(5|uBtKLrv5_F)@>ZuIg?JVjM=$8 ze0uRnW4f&o*Zai$gG4S7i!W_@;pi3KI{?pY{2)59H~tOHXTxArl0oBpDLH*JU;*Mr zv4?vppDo3!3~N(E5P#sA=W<`77e(%EZfJe+s1o=M{*96C9jRk6!PKbqfP>3lp`A03V9Lq1at0 zk>MYM0o(jVr&B7U>k(P**pXdpAKO4Jh-c)@=!1}D=3g&$N)^`S5-S7e-=v>0s|uwH zdm#`q<-am}JJ>Tt>QNKlK8J@Xgkr8R+Hp=LO=8_4+JYO{H|A^t{3EW{$R0h#Mtq;C6XsKnLF59 z2L>MUEV&|msa}v=NV~EURYuyOKNgg+DJ2{&Nv~SA{h)+589l@WBvPVP;zCd3Ju0`0FeNI^P{#gj=?2!SsuHkHc_vO$@buD@JQ?zwV(tSRL7u~IXVuCX&Y zuEAXcBj1D}=lP*F$mxIj9Gim{{#Z~SCM*<1`zpm0wc>xOh)6|2lnj4VgeSA@SO>6T z(Uz=nRMw1C7n23V2AiPxpPEK8j(8r?-XseYk2;lg*YvY%QN4bt zfK%fu8@W~JrXZC6ISSfPS^9bHZB39?3m|4|fRaA#(zk&|9C6g!)hb1zEp+A2c zC6ts>4tZ#Jo_%>|fEtR5e_;`P2_!cgAF>Ftz?`tWGb}|WY-Fi_p#^WgdFb@j;-UlAd06UpkNk-xdd?`PE7DV@Ckh?WCS92Gg10kor{W`Se=p6 zEy{K45B*o#t&$b??a3KmdVGSNmNxxW3Jg!J(=~$e&XeOFRHTq;## z#K5pyhOkMoLT#O&$yS+k^ga*tS~_IS)C`|amaQfF$Zz^qjxQ_`&?DJ1n75(ywhEBL zKf=9T61uPC?i9H#fiC|w-ckXB-Z!iZ#DC?wUZvyDeJY#gA0d%xG4T)M1+#miQU>wi zJe$qrEK)$)63J2pV3Ac>jB5#;Q(M}nC21@3E8P>FCZgi4zoZ+x8E3QUQ+7ihvSJHdNC_q@ zV|^gQIqun}*mOgWzj=YrEJ9E}-Y$SisrKuOF+K}3XnpBV6_-|Hl>SXG*t7RWvy81( z3w~o?=G@E~I-BhS-QzEnVKgHyFazSa_lj#v8U;zML?TiHgpyj}4)8OBVn3tOiTLfo zLo~(B>zO!0-l#|Dc{SH8*`)YbkxV_?rmBpjNudS3RxynL4MD%JM>by=d*$6VK|jRZ zlON&ZEph;-;J0`m0{AibXM6djT%29<*F)f!ulX0@?lEr{x4ri)KjiJvnXSVa8~-VO zzKhOGszyy6MENqNxK9)P8SzJ#K? zIqGRnZ{o(;K_-H}0?IETt06t*Z7qt-Gert`src)eC_t;1u>n%RRe`=|<~M1)?6m+* z&kzJLZWd`5cjk?~5uvb9)PNPXS30oMC z=sQ~W?l0|KN+1c4!FYxp-Qc}6OHrI3^(cB)?YhO%o_U4SM; z*;e6<@x!Ta`4LEEE}nAPJmB2fQ(Z?ot{i{X=zPRkeoH8>%Ii$+T*6baTR^U&^~~bQ z%`-GTx9H&1BU6rk7yiRaeHPt;)H_19D9u5|E2Ia|TT*rE_UPl8f>*XvbYkVNTjq8O z_ZGkXW3WK`mb`76w7uv1NJn4%&z-Y-hI|eJr)g%@&}U9wf!wRfTl7xx%&X5Exu5Je6VD@lk$(?E=&WDNpT`nL5V!t=jOd}s zVJx;73@@eHT#IbUf9Ljd6`>NnizjHXiu2Y5u6eEltKpn3IzNFg59UjQnZIyyaMK z6~F#fma>{4ln-;OILEik4OQ;3fL^OiS&e6>(sJ}i?ja4`FqnbL*4h*uDAbC2(2S!} z#4(zJsuorQ^PnG@_f^T`1vny(e^HqvXA zIB65_?gv@y)UMt>=s!22Q^>pf{X~i{*v^v-{UT1aZ@>~9wm^X=Xyid6v#-DsB(}gq zS3(e1kfJSm(U#5T2qw~=*mAGV6;*W#j3<_Mui(szFSBw7+7UrMZ^IL@{))lXr*z7g zD>-w^;u%r4aKQso=|Qu2!%@C2{g!CvKsR#?oI5DOlNNT%gE#cx!9%}m;VpE&{>svo z0HLoe{RIAj*$HkUL4|Iqb`BATU{Rs^ll3tRjX~fLs^JTJ@j?J~V#wF_(dT2SRl`_R zyx#{`=_VrKG4^6|g1Pv-v_r+k*?^9~f9uK2^J7ZK z^)E_PmqEgx3ql=^&A8%1A9LK1w9UOQJ->5vm3GY^adm)r$(^1iEGD`oksI)_irQfg z5BQCpslf}Ht8u#yIt9nk@$K`utm~#Hm<5c$IX8?cdY21mfAV%i z1!<-kpR9L=OeIj{vtRut==@w~Trc~de@BPTRrPZ- zB}*WqL_^O`zyvGXw`&3NOW8p;ag`5S&1n}5Mz_$&HGGlmnd2OPyl<@>5+(y&yWo2y z@4%VWGnyBqT9%bdRbLnbI4smE>=^YkisAjm^Z2T(%ct(#8ZXy(K@(???P{HGF}7b9 zy46~YRlf9W>4(JP0UVUPIW+7-hU&k^D>e50Y>6i;HTJcwbrmhK0mUnJa`JbHhWiEM zBeWXH^3BTjknx#k%RSgOa-bweE2J%(T9?gS;U={c5wE8(Zn6R^!jA0)7-#L-o4oR|Qm)o~;hra1w`v<5!!ghz-8O44j zvpvkah5w?=o8dp8eqr-&$DPgTio4kl@@D6s_;+gu)II+Gs`CZ*9fEL+?%lh06c#Py z`!-!~)N8{W?*VL&EpDpO*Nwm-dT+yoc z3Wl+-d2)Il24M0V1K>1@k$b=>I<6rOvy{Lh;c;f+Df+tG0$*h2fcCbl&&`Tg0R6;W z6GxpAg8UEj(t*};X70hflaMo2FJ+ch_QIR5T+*d!Da`9j-t(9GeKeIj#{KmLb14UX zA77DhOsU>Qol9kJ?W_Iy(SqD5yZJ^$<}j?n6h(sRVQ*gZ2|UiQ&gBYtz*?p1v4+8?b735v1V<}?Lnmn+m4EKbY%SGg;g zqsrG~r8YJ=1-!Pbxc!bts*e<&*A2ona-x$CKY2`V0=+eYk#QI3R7@jn1&rQYk+b!p z^@IBfy-nxW7hgFu;}jj9o?e6RV?pMB>L+)fhCjEAXH^vY)${b}h}&K1XUhX1$gM-T zxsJI~LMPvIK=27-Gs0TADx2Y_(_-mo6QVI!8_RsLu{6WY`+}iFNV=e{oBNJC*hBC} z(0OA)KO=W@0Bk15B+SC*UFu>mU!3FB3XnRVHs%c{B$9Nc!lL|361(fCr=1dqIGJHX(q382?+N zGinyj=1N9(_9p+wP%=eD#|c>l!&f$Gip=0$ka1a4Nx)o&4XOfPfbuuC=A8bz;=7UfW<;kiS z0sT>Cor(GtnU%)uV@(rXflZ{-Jg3ZDJC;wELEEhHhvuDeKktXr3W2{ZmcZ?m2ezoK zIbx|c*hBBbv3pB8RY&M zG@G!WB6ISj19c4$zMx10VFH-gZQrGBl)lHCOpCAjbh6E?*M#n6iJ4VQZdt2%(yog- zRk^2|r6{ngt7&S%scNnzbPq=Ekdn@@V54;QdpHhRbhqpuz2|GnNzzl$e!;n)ez}HH5FHp5b@0A!k^ZKZmcGI!PHCP~VP=o{H#mDM2AW z<#hlabp07ILkoiQ;CxKh)MOq6TbqDA?F#98X`zbd)Lr0Vl`_)q%vKnOTAjk<>ITO1 z{xX2dIxK~$y_i*jJGtr;tYHTjGb@U|;Ez~nX761()fOdZ=F)$_7MwiK{xiz=Nj(tA z=MBX0$;oeJZ=Xkabbvnz&?h^H&}R#f&>UaWiYB#T9(5)55#w%GTILSFB-UIa_L4X5 zQ@>U#k8|K^MQ|b95&Y1~o`3jp+&9FR_~POyxZp3S1F=E)6uTu$*i9GB4tQ_JGF?>& z#W9Sb2?b;%6NC!5ceL`az03A*2gn!r*c&6v zLXv{kHkBw#_zOFsNwlqD*xCQUiSqI>dFzoblEUr-Ri!?R8=GeUr?r4awW^`iG=MQhK6|EgT3olVw;x3m3=g&{30M)Ow@ zh7-fJej;HfB~gMcqx#d361bOEGbi8=C6TW)YKyz~ek+Lwl?>|3{bF1Q-@hDJPeLTa zOX!UI^!}|lB0M`OehH4({#o#QBZ5s-a)s$@win#JaZv@7j zRf24M(5@^ddcJ(bBQ;8w$Xey3WuqavaJ{J|7kIQmrfD0Og2q zt}vc%c^h<)QLc1H#u!ZSo4gvXbQASgH6*~9*$iw5yj-)3kcv6n0wS_o%sC6i4bI1fT>9Xu5dBYEy9~#kM?(@r^0>wGRO$&EV28Ei>d1)-yI2Oz zPYl!X>6YrAWKVqW@${mUq5GWR))}KJ--Ra0b=7$`%om#(-js1<_p4C_`vKPKThfr? z<1&MACo$rW>hl?VlKR?eixSmVpA1t#$|0ka(^MB!~JYl;afWnKM#eo0-EQY#CSWtL0 zu@Z*JAZC^4i%V#-7BtlhD48X<-4i$D+`nM)XL%O+8pB)-01pV(%;a)%}5@0`l11ya@uweD^qi4?@ zpLXMT7?J-t;7n_9*8OHRmANVAQ?*fMR3`LAX`*?+3^oM@pX!RS+@(%T$Vp}b^(w)M z;)9OAX)MXcldSb$o88#w--=KWYJ!@RR9xshLA$ov+Y2@XU_oC7<+4a_*DMkkqevl{ z&}kVZSU_lq!|9D>>D&VjV4qE@4$}}2W$>Ek#@%BUNl?G(I|wJ_XB?V(f|PbH`f5Cb z%vj8|J<1M7i7b={+CXPi3~b$AdL_}53JIYrCx(fND^cuR{HM}DW`qkiw4_4e)IGd1 zRE*1VRiD9>COmWm)`}U|aP;cZcBPdoNA!JYL$q^Y%SYpetz`oi0{td*%{KPD0>uQv zzsS&-lYm&TLo!&gU{&)eHQ54r_;vC_s^0vTalJlOIfsZn?0xd_F-*HuUpRSP z!kSCsA{>1M4`hqO2y#HURU6(=GQZNq0l4jt;kg##gw1AwO35TzgbdU0DBXT#X1@24 z_y^d3mg$3~sDtnSn08qHKiZLz8xZ&%x>J%u#1csH^65YT&Z-%)&7dofjC=^pI2=W3 z0%FxdYjJT>cXvD#MP3Bq=g&XRp%o6%JxbQe&HXUV+}N3?cY_Z^r7i;yV+_Ka#7bwb z?~C6=&kcviXu5yH4AOnz&L-4C$FtM!w83k-Y$1{Bx#n)+X#^>l29)7F35!P?5fbAu zq?6~41Z6f2#wX#!rgY#t)2{gaR$O0B@i7XMC3s74Ig#9ZE^)aY2T!4a`(4sawP!uD z_ZeOwAKPf>hFf*enL4ksLSJ5u&Ytm&Z6eP8dC|8QOdP^lY*#hlTtz&S;7ieUO&RCu zJMtGJ5gbj1#vr2~>yHWuHLMmfDdVB*r9Zw{VCzq9GD)Vn-dx8Cb4tYu#7}Vl31}1NEQit$pnCtKb%gc5 z09BZf9Q@&(q+*$xIm@P}KXi&D>qBZQB>XiklZQ;63o45aiQI4{e z+=4y^?~UfOZS!b4Q$I|;thQkJMxT`EM+0nw@da#E@N0;3Nq?els%`n5n#FU#U(zoi zzvR0!(&3k(7_uvm+*aNbo|~hy8ND4pAc}+LU=a$OEF{I%eRnd!;6xGl4IFMH_v~_< z8B%cv#p81E^tdFd5xfzY(8qwQ=xTpKThCn7MO-6}rchY@-6z@3tyyRA<|Bxc$_u|g zxFhoP(Q(7Gu$TSfpO;)M-1dveD{~*rRTxoA7{c8SLc-hTtcFku{GKZWojx0lVs;q8 ziH_1mE{2RWP1ZB>bXz^Br=mLr3EmUza3`yfmke^?Lvs*WlGI(i=Zn}|wo2SQHkLX_ zwHH&d!?V<%t<$bj%-U6@lYE46?yySSv&wJ_P2j|#CFze9mX&5bRiPcMN4x;j9p}WQ z_>M0Vea%BrJV(PGj}-`Sc9c1cwu>CLPR)mHewQb-{oG z)WK(I=}_&Lm~)Kn_VqJ8buydj5F0K(0#7vRU(&4apq#w5_3*%q5)}+6G$~8 zl(SOYQrAwo1WEDku=XkHdOMWjTmRfMdwGsNsv*aZU&}}tE_1x zh_l~Fqx*<>V$UKx5y5O<%5!8txirY(-PDsY3Az4C$(UjLNFwaR@#N`cr^gsD1|>91 z<6)5lgd_zq8v~T8U{QZ_MMIM9qw0l*4(p@3(hKqsiL5C5l>>PM8HacNvkVPRx{ynL zN{|s62#E8)UxpI4Kfe&R2G;*Ksv<{4OAcEM5 zEx#?{vOSyg!DlDi$@Dp`*Y5?Y&udid_XsUm1|)DBswj-@$^m>sSB6@B-+Lz_li%O0 zI1eZKKvNnjb;Wud!Q?vOKZUz||9tXy3j$TZtdKGzL#@u2Blpl`Ms%kqCF5#ob>2EzJvm;GeqKAOzF1xGv7tmHkhK27Nf5)YiqPL2-8Yi_NLW6|CrC7+s8O| z#1_RfdFafX{D@Gjc;Q#**N`l?1#n8uP&mX&>z-u<7pAc{{-zY%wu|INZ?U3 z*&7dPj`>{LN-CMDh@#;vX*=C!aUZGj8LqSUuG|$<9GqHo!F<*6hMo-&;pRf|E;Rg| zSNQ^afz)9o6&m@gx+;ArJJPqSsu10WiZ6_g&;xvc33ZXU!{HT6e4KH278{AKds|Bc z-U+F;N04-GLJ3zF%E5ps=dsXzVlwAm={N5ycuvB#isX1Hq3YRiPGTpxW=@OE$O5k? zA*p%y_krQ_qGODR&bWxvh(O}@HHSEC_aju(9!|_oVVnTa$(bCOz=JGfuRr9IGOcmD zcoDWf3vgx=i1>OOBo7bJJKlZkz&ld2!aWcSz!Z_C!Bd+oOLIGj?h%ro3Krik)%4eO zfe!?yOSnGJzqtCBG)S6A&t(ex_3<7)czg?SDC^4B$N?t9Wa1WlB9uNUiXCMJz-Hc1 z?4AgM{0^aYF8R8EN;{iE>f%PBFvBxr{dt&hK{4O{|E;DIm3}lQ_g$#$kW}9R;1bP=3 z30gJA90GmK);A zXlsV=(b7qHg3g)PIKb(L;5Q$^D?HJ_#B^F)1g83psJ!AAAhfM?Iwh^*F zVMYYH@61&izDjVsj0??E#BUQo(Asgoa2xwHN%mRDXk2!NGulTw#EK*#7(6_rLwEoa_yZ{;Q>$qr9Vp ztcLRS44z18{TrlQy{f`L1XN~mU9*7dzDgVvM(9wMtvu25s*?HFV1&6*(0VnOr@Hq zE=pacMxzsLsA9;b#*@Rh5ifk`BRtom>fuG$PK-3e34Phoazh;?MjF-BOsXc{WZE~8 zFPw<4?Lgh=gP$16P*-fN&P(ctsWoX+Ar*{J^DGnP^kZ?laT6J%ooy7RbsPO87%%RIJqchWl9?{BFS-#96l`tf_ryI9* zKc-tUo=nj*;emoK+xrYlix@4pMb;n~U6Yt#MG3lwPk>=un30 zUD!92$3nS*GpyZYgWE#OX!Rk>h^*0+EHe`62#Za}57 zTMAL+Aupu=n{a|@Wq9S6RkcoV-fL%@-N&crd|vn0gjh)?-l&Y2J#4S z9@g;;PH{MM{S2oQWII42qvn|r&G~32kc$<6ZfmE9XfpG8dh3cV`!qs;TbSp_g;N<`mDho+~oYsQCaR8HBJZ6QO)EY%R zv%q4Rph?{l0cFT7zY4%H)mxItf~6qadPUOUgT`XUc4kZYEDu;^C)9z{hJ!PW>EF3V zuuXG-TR}*C-KXv+_Pvdn-Sx>B3=(5JhS0lviY{gDjK>QT^;#F{Hg{vcwj?(qYD4wZ z#?NP!n8D|G!;a;3J?Q~&5ui)54U9WuLMfsmusy&X{r>fz%=*7Ld#4!DqHbHaY}>YN z+qP}nwr#AkZQEMqT4mdIojTb&cjxSbq}|!! zUg6(=U88^N+)70&l*jC6U$x({*YmnG?};qO7(yquoM(Aoc;+}?a%8u^o<6Jri0gw- zM~b5=2zWAV2FBV6)3XI#j5|@=7>G+WDQ7A&(kI!e(1QLlP{!V=`9yEjNEj&6NuJe{ zxThaEiHl0{sjF-%H&hzM4rCvQhCL6{`A-s)YGWjd>g5<%NJd`qv`LrFI<)w)tEs`} z?Zg$^C?B?w$7z>Rh*?jdP=}f-`_nvQd@?4YKcfhSfvIDrWD2RJj}z6AOLsKe)!sG> zrp<~F4#le4K~;2#jcg;L2{TMMcd8y@=AzK%&0QSF4A4qfsw06qb0<;rAcqYQCncmZ ziq6Mf9>FA1Vn?1!0n5NO9a+~5*y@W%Ez|ZK&Bm{aX3v zRc4qDk4tyGB^l@;#jJhsV5u~urQ1@R@2PIp>LP_^YIjAlh{rHEtvt(bugTt|%W#_W znf$BU#BQ7A!%s+)&E|dHWzgrb1bHV0ZZzYZ42va$DrF{?kIqzo{H~KW#_AIW?Lw3m1G|%h8Di@daEDNuXKS9sq1F(791)5C32#RNp=h@DIzY5TJT&1r3-h z8zl38vOaQdH8?=PuSoawA%yIo@F?5Da~%cx1tI!_{t(N-ZKr$-XUH5P(dgDDcd0E= z;YI24lJQiDc$uKt1C(sheystDXk#>8R|#j7z-r^ugfY@^1BNGqP^J978 zRqxm!`h`!Ppi18ifYM6a(yR==s2O}B2(AWVSc4Qd0~9}?$wV2c{(+dThPAuY=*RN+ zcZ@Hjuq zBK~2_a*QZ4#JZiZ`79Bj=gM?9qYtU-IN!^3d4knP);Z?hV>@qD*5MwZE)04zmKmM zvmGz(jLO`S&1`kdd%B*vTqz?L(H3~Hz&B(MMoCEj#;qEAFZ}yAb8WN2c%-{b zO5%HK(GR+r)Earkf+Q(eNs2Wry$@RnP(kn-2*M8lImyX?;nd1%=ClIr8`MqY8nO1#ut^1M~PZM94D_nq%xW@%Y4rhhywoAi&cP5qqSB zj|IK@Am|(9j(Pgg1ds>48X=6O7od`397y8j89kMGdXNRsgWj4#ws^9ZQNI7lnzF_; zmY-9DT#$oY)@BmhR)KL=n1`;sIb{6F_GiaiCn=azSg_)&DqaHU6rCSLgQIj`k(0)nd|;_7ZT@t)-MpQTsiv(15w^-qDSCnm zxu>Tlbsoi-g~Q;S#VCdSS&>tj@wn_B-ZK?LmwV#0+d2}YQEd|L4n0G%^k@~ft}g*! z(ZQWcxYd{?&rqJAZh1`;wMhtxD}96!sb_a;q?YD`Ax~JAXx+r=DuSJkuwI#zLBtL( z4S_>L(aGkdF&HMAxv0iy#cmm9wk;$x-zw;o$62Zv1~L=VBRn{1Val8O&+?*k#BoOy z1~VAvnlTzPDlWVF%@&5l@KLJKbOOs}>|K=kpP~V-{wR*JGt#+~y!XdnKvq*Ob8IdL zOI;59iF9Krzv)@Ydq;THqP&Ss?eS|TBQ5i6A-GD#9CXdeT1E-layDQF$-OPTZMo#h3HD`R@-k) z#S4NP#=#o^dZ`ZFy5)rqg6_JY!zxOaZ4W3}t(CCT99(G%kBG%aV-hOX9fobAncVjO z0mw;7(2(|MT=g(*N5(RBHb{=jzGA_vB+Wp(J)U-QRi0)$7lA&jMDkW$ZX-yd-vFT=7^;yg5T0&elU_Ac*;lulw^Aiy>7w02F2JPq=cZNA_)v;F)mKK zktdHBH59Ea4|vz!Twa>2V!n~I;7St|=?_aY>5W=qny)o~5fHlvAa%5MgH(iSN^6mE z8f=xXhitubr)Mdq2h6>UbwYi`JNLLco+3TdHG1j`et)YLvu=(-n^UnVAtK_KaSxR$9t{S1amV?@WUErO_+d^4gp3iF|t|i;om5NLHja@r) ziD_(Y?{4;ff|pqHC}HOeIM_E!LHxgW#N*+!uK59tt#NdOD`gfDf+_Y`5NB9_?*lQ z^x1<2_KIA>1Vz4Ls*uWQ8r&2#;PD~F8>M<+SdS1}AjTKU@`TMi(i#nM9nvuNgtR;Y z`%GIyBaTv`CEE7auZ4hrMoUDWWT>NV(hB14ro>hOTN z+P9oa@WNgo3MKs)24S}d=ZN0(k44`G%$2^=flv)~Zjf3|OQEp`vgZ)hE^x^lH(;wd zxla_Ac<9MQ=aQvzZB4ZmCuekd4{Yp|DW6w82;cP@{YQYsig zIX~P<^jWb02*-e>BVK@&O_Ox*TbTb^xwx z&G2%B4?3Gp9{j_MJX@`P%NfFh46)I9ZynTu``Ve*QGYLJVar@ta%@*LK#gwngxZK! zU1U?PY_ur?;!#m&Wu&CZ0_oH~KbU`W^Ty}qnayLPMoci;H&5H*#PGp)e*EI z6Scwqg<_x3j(0an>vHYYkT`#yX*HAVIH4tm9A1;{{7DP%w_oz1dQivPds*{a5)^qQq;DEQsKHvDQ1RBLRWHHz*E4h5;oPfg%wWa0r2DLOOyN zO*Zo0?ZkF@rR8nScMtx`t0IB&SK-e76*%JG6Dpxxpok;8GxNiCcV>2eU!NcFEkX^L znFICU6~qjLJ5e<=4ceeot=Ayh!fDSHE!cCEVXv{vUb`D_?P%fir})E1nf@7=@K@y0 zf-Tc@^Ys%(B`z}p476^=$SlVV^heeUs%Tm#8L^h!;iE2C)wKW`%#^)Ti*P&ddCv&0 z|HP93KT_J+XOSSbS!^BLYN)&ncCoVk`wK&~d0(EA*iqbuc{E2n)dhjlj zi?-z|GD*~hVGOOC3urq6zygV7JFX|oTi3-;DR5Q!UtBc>QCJvtMR5_gG`Z#=POn|^qH!KiNKLU; zx1ZluW(B9TZC88~Yz+ebJQM@OlZhlQ9h!lU0;I+MF~D|C$uxl*+5;s5*s5mL^i9J*Md^PqF|F$k}^C9B`T#=qNQe>*3QTR7-X@Sj56G=lX5nBMz*X_ zE?4ef=>|fHLT13?-Z9gV!t0O})ThRlg&tWO z-E0AW6F;Ub(*Jxm^Y9Tnv$wxB;eF?%A8W#FQBbpYygh(6C)m3^(1JEc*r!fx+4a^0 zWWAcbwQtS1qx?ns4)WPN+w0=-X*2jNwCNMi=usEbPa5+D_2Iuk+|@_h?%Ut1^Lhn* zlbbvc1iWK~_t%y473O=Mv`DY^6+V1R$bN}*z<*YXz(+J#{WWm}_UsJ#+VK%kOR0k& z&C}<{cfKWb_fa}LPdysnbI_3BI6f%SKRNtHy){tkZOSx{48fh3~dGP0k2-a2z#eG%ol zYMKbgg_D7X#Ow~4+}Pa1J;)+S>pDgUCr&iLwMR0K3I9TJQIB!V?(!wB31f_ znYNr0Z?_p9#3T~EKS$Ps8MQ66s330p8n)ndayLvuV*VdwZSXGcj@JUFY8Nz8CJM{p zAA@=j8Ex1<8~X!zrC9^WS64CNK@$qpW|=XsY6{q}w$_m$oduDsdxyuV1y_=##KC|a zG%nJSeDUk2)zTaqQmzT8s_U zq|JGB8s+v7>AoHV*s@=EUb5PT%ov@Dq3|(U*F)IefD@pR;|7RUvDJ7<59|?Ay$+QZ zZVFXXY9htEx>M*=;4sX&OoW%52`gHPDLd()!V7EBZg30pN)FS8?62;&XRTf59m18e z3KP3hD3&m<0E0|{Uo8p;Tt$(xOH++&BgBOzLnHE7tDs2Q!42)|=oY~CWM_n}%1os~ zY0JooPY#DqHbofT8+5AiWPS!5_nchqMY2Sgzy5xv-9Sjfe>_CaLPl zGt|nAvO_GLB>?zql)|q&Xcy@gTsh#B=K%gohOmza=n-jcgMyhDOcLEMxL#XH;DS3_ zZiXtTtp_b9zyuymiNOlDBIg9j$3MS>tCa&yRv`HWl}QUhk|p0=7XS9~aU#WzbOk5g zj_jN6QQXIl*bsBTFEzuFjpvPm=b3xohww3a?~69y)sKn%!XKT2^c*j4RHJ+B-{Ikr5m`0F&V_Ip^cS5CJvbMwS{vY19BjUdY&nk zXAo&ADfjE9eeT99{$MZ~p(H0nn^4&cK^;}QK82)=PRp_LMF~far4-dkfe1vhiFtq*pEZ~tNBOS^&i*)UV+8<~YorgoXnZqJ2W|^xZ>5BOr zBP%T9w1;20L$)bToqXl-0I?3?Y z`2M^qdb6yAG#hIYq;-@SmQnT!)-F!wGxbMnf>OR@yh7gq@g0+_O_Ufh>`$~l+k5`k ze6pYDAKL{)fZ~y2X5%qBROZ(G0OxoLH@PZj&mAl}4(l;|}MhkbpC?FI=F*hMaJd z^a^)MBN=0io)lL4T1%{w!bmGlmTzF@sEGqpW6fhR-J=Y#On@wc3uSdt(Y(n%A>C!S zY*pqOFJl_L8t9{8mk6g_IZf3Sl6x#WtRo|Eb4+3x<6?mD`Sw`FQpJIrtVjHeGRAd` zV1hcXVK5F=R}z%1lueicbu3k~9_b%Z$;x?E_ZPBZwd7@Nq2>8)iD8z}#??a~o)||l zS2XQT0;brzQIN%q@g`a0B#FPE#)(dD#|cw*$c;Z8utFci6l;5g4pTV=!H#D!3w) zV9#ZXMl;Nuz&~Vb4P$^D42H<}vj~a%5E(ks%Cg01t5LN-rMOBNx5}AgF%x*_5+QEW z7#CU0Fq^hUDN7wI8Nr!m6H8=_YXM{P$>`e<>O+pi&=r=*F?h8nw4FOhn^8c_$Xz)@xrv%)y} zAJfCi1QwVGVAR=+Y3UNR_t=RZti$ZkPs~!`Z}Mv+2|Q~)eY>haZ+K|I7`2ezcT*N}=|OV|?(HQsPv;AnjBOYlZvJdQ(S&0@thm{f~g;|2|~?Kq`g`?1zDfL4RY(HU@h1Nb?4U1E!&+z$FL35KbmRef9F8lW`_p9=G-<1g&iM=e??Vr;k2B>rNQ=u(eJ5Ci&{!z5`s+bsSG@l7K&U| z7@4PF?qSTalnTT-s^mWFF|y=^RPY#r&eDmxtZ7iM$R$oR3GF6j`^VX+EFe%;e-EDa9pZfUubh8gX%cL%4&A1fqyLLbC6{mT0&4gCr{OX)G$<7 zkyJG~*p9Sx>#%hGk+c*3;3IPUkL{}%aO|DMJCpB7-VaqT{vYtGo4P&z=4q=KHT9nP zoV}ie?gc>O6F{Gt5gsljs>dthYjT%R@d-m*?g;Zdt?E+0q*_(mVsTWCI+i)CaU~}s ze#Jd7M7UOMT$yb zer5}%nc-=hEYUJE1(&E&3k=y1f)FBjUb&q{iv5XQf?m@lqe$G(al`R6HRqKxV|mc@Wk;+V~)gT4t=3)OOEKs+abuU=Sk4+G~w zSwOzv7Kmn8cRDhVT0q!b!L@~IBhOCJgkC{;Dp6~qJ8Cvlrx?5?A&t?!z|qbC$8hg- zys(5zi%{=)AV)ycZtr|w0AWc1px+68Akk0bPho2NMm57kh++EkziCiY{p-vs3MPw6 z#kWyVem2-6O5I1p5K|OTzT%X1`C`nuN7w*u5r=b8vw*Bqgz>1DU_3%qYr^~m`9^J^ z%LUKgzJ8~MGH_6<6cEcRblF1myk!(A^FtVzkIXT-8E>4s{PKN&RpyrTj-ON2@QN#K zc27(bPFDJR7GN(9%FYf%`PLA9tZn27Yv%%#MCca`TfV8^TWX-fwW#lK|2XyvtH7RM z_T}eT(zk@Pg2K2A=+jLHs0;Ne-bVOI(_4CMX|*K7&w~VHtsT2R&Xah`q>Z6?$~-|& z_^Kq6xv`9sMhWpTf+XWnl|);Rj8q_@rL+c3U=@T{o|;04G=E3MdZnU8{2<5zTj^Ky z#RKsj`Lw`jXXxxns|Eyhjl$$Cp@`g-MFC z4fs7nSu!5(&`gYJ8OoSiG!>^uyuaitP5`p0LQxTPVUy|#m^#y_PCH?e#;joUKtlP4 zazQSz*(SW3xm$+LP5^@M2*8~4m4Z>+MkKR~3Kr_tI>LY3Zogcz1RD?hoK*SR7k7DY zdYmGTbG5bn1CH?v0tvsEQ{>qLrsozs-f@K9Vk11*6@f=($8#y|b0bc&AJIi!y2!kE zi1zi*?4wTm7PYfZkJf0r#GnCNtH&s^-Yo+ieYm=Sh2Dh16vQ@+@MZ0R%ld!7zm$jU z|FR|ecS~zvb#nu&^ukiW5dA)h+7)+=gu~-CUxX#FUiNQ zY#MpjR^(^Zbf9_LN%H3!&d{oQ!ZO*TW=>HY8Jn-uxuShq28dNpJL3nfelbMwvVgTn z!d518Es;Viq_Yg@q!*BB3hS2yRj@Yb)bq+kyCv&8FM=6cB5zol z57rCw&ZR|~!f7>yldT=Q!eA1ywt@k(a-cOMofFU(ic;3E7`mbD(ulZmfLHLBL@5pD zyPy7`)J)lG{TMHLWj)K)g&yLR+E9A}QTZ?h8`r@e>Au&6-J_vU`Ja202%MFxl8W?4 zJxwKklAe`)`c3n)D4)lrsHq818_m#-3n%SF4%5Ws8X?*S<*``(AigEMvV(q4IFw=$h4PP1`Vv#^ldgP12)`^Wl>Z!@PaG;f;l)* zIO3^`xUC>^3AuNJDmmQtaLP-$WRDcUsS7IN|l_ro0KOnF#&87CT^(|Gzs!s zs$ejWE_phT36i`eX~0`k(MC3AKa`CDC5h{cQ@Is5R-@E6}O@ zY^s;7uDGRX5A$F7lgRw^k7`6U{zA1qI@DRd_ftEnRyDk`2m2x+e@oLVL9HEebP$!# za(B+-!_*Vi_IFAODT@k+)S{G40^GlaUcaE3d@j&$6<(?Px`f0&RFj2tyO&>@^{80nm-XfJy9#rmH|>mC%U?_vFaQSBhN!05(t+8QYzQ?W%we1;TBKap5X;c< zI}BS%V`aDr)x)C(mC1vCV^-NiNX$&*jG8}LDGP`0bg>=c;USa=MUB-?+*_y?1J|fz z8^8j7hH8eR$`vtX^BB*{tl&(C93yP;lssY`YOK>@rwl01Qn6n)x`Od-KuRHq$31)n z#ol#udC7G&ce4QdnV4rb-C`O+ex$0_rPe3GC^JwXIFpLp=?}&aYdL8RkrO1Htn!jcA2n~u0#rVFbbw@F6P24h1C zwrB6|BK#vc<^52NP-MM1WDlsAa5;tx=Tbq-vN3f125V|(F41ng8;6DE;BY?kh#N5* z)rvf-P-F&%;FSNag^ky&Wo=E*9i|=Aqdtz$!+t zA?}>=f3p6T=%eV|6jdwx*b_7Cgn64Xu0B<|)+JLgm=iPc8AC9l*;GPnWlD$>@@H9v z8?2(T9jT}al%E)}GX5Gta~r}XTo~@JR$qa@E|OUi)CfCp1KWTF+oBI|b`Vc^*?-^0 z{|M!UjFDv@lF^D_zM)KneToL;qPaNG)u@abqoQ}VQ_9RWe*hzu*=jApLIvCQ;s<)l z$MwggvEXLdPPg!EJ>yn!We2SNFy5iLN>VUU)NEGulsD(|*(tECfLmbjN4R`E!R%xj zJa7kID0E1dunrwNRUJ2uKF70dn6E2N0-9KcdOhS>P)ha+yV%Ddr ze%u+R5XLJb`bUf1Av@%e8)om6iek|3-4uTNV7dN#Io0_l41L2qKQcda`tC4tr@VA! zo6L9buZ6B@-hl&DUt8}MvR)KTzo*2&vwGMT=BVq!!;Tqzo_1_%oBg%*cfuM(QY4{ zWb&glb(QTl<@yEK=>?yg*2->c0jwNmn_=X?ij&W{WJ=Tr#Qll;`NImbvNP289k74z znmsFZzaeN@A$zAJ>j+7|3nqKw+DT>CFmDyl?#waXPkO}Y<|e2hVb*nm?U2M?kkw}b zQ7@Xz9Oknwc^vSNl1y{B$ZF^$PfM%leC}t^`Z>ItaX{rR$zGQwp<&!1-I93!5tPx+ zO~6mA)0KTc-}E@|%B{Z~yFQQhQZ*AF*eXb6Rt`i~URbh>%(r=Ffyp0lE zW(R;)-6wJ&Kl0qGqVfg3!fa!phRaOT+MG%^Z^Slh(VN-%Pn43a-}32mj`n*8u*(5r zAC&r^zO9D($vWfJ2!Yf-D%5VZa_+=cAWLNBRZTHK&sZTWQY3oN^sz)C9SO|$Nru)FT*N(jam+$*+|+j|;+yW6Vkl{hLZ z2mMN`v@W)b!kVpKrX_wd7?=>MGt7f=Q3yNtHX-*0 z>Z`6@aaDGy2(t6Rr^m+|u7se?textb?^|A#GwA+fbHWRaIwchT$yxnGAN8h}*9#NV zlTj5XY*rOJnWFiycrr}CtZ4UOMQHB2ChBP_U;b+qx9^}{v5e8GB~}=UW=<<u7=6?#838b(Sw)Zq@uDN!5q;tvx_qIi0J z8iVD+zhb2~B0rFPU&K+z$1V20_ydn5H>o2cH=k2G=X?G>Uhn6=x9^JwbpYe>atkr3 z&?prcVXB4p3-}=_u|FR-Vya59)a_-vy+Pnmcud2(gtB(FP-j_jUrb%o{dr8yG@Pv$ zjvE_?YLX&)?6BXjZ%0GkVW%;c+1oh6%1kX22zpL#Ai^7!meD6AgRKeJJ{yG+AC<-k zX~;QwRRi^H)}1hsPr8e4PSDzzl(=sp8{BCLFj_0Ep*oH27f?#HwOmYf=sCcPjqSZ- zJ5H+!X7h_vpi?v`w7yjaHIicpwHM=oO$m!Im2K3yUj*ZS^I;NF>bknClf7c4)lDYD zD7>0KEd9k}&M$ie#t;xui{Hb%H!JT`ed%l$XQ?wx0ERpo3ut3NFTy8_V7!7ORU~F9 zC55Xq{PO8n`|$1-S(^`_gdaw`3Lz?08A|pLOIfE4)CO|G#xhnNfZ0)LEHs9bfbIuB zfARo1r{x!E?M|N1H@pXLF*?sTKFYWd%VovqKzmu>sb(?l%JE^g{CNee)b%{(BxW8! zKB+VsgZ3$-@>VU`0F~MdlNYG_2NH>_FhizCtp-H5})LF&ZJiTHU6K&4B zljkr%@&1%I<~g&tSn?{Cg0)E~x)i@u?u&=TF{8cAq}lzcIW3Zph(e$fBzD#pht{&R zE3%h|a1^m5iB}{MM9eko1df2gC3<8`aQTY?8-#pXtXKu%kgD+Q-KfXviD~Eswtppi zCJ(VlkF?Dx^tb^zYtnyKZBd2uqtEUYbmVP4%(?Jdd8+V^FzLu^g^*i9b$qTdk43Fz z{Paa^9jFnFUT?Ro@xby?nb9{#JS?}sq)@LU9=&YQ07VOD^)8UgrdskQYi`co6BN0` zfVerDOJK|Jm)sGSk4eOwH;|61DBo<@xbJ_hBPYZTnsRgi06CWbEIrEB=Kotq|Lw=u z^fXXeUgkeBZI#g@fPrKPA-yzALO_VXBH}i(Kx(a53zfVV5+h@FGy@8uYS~q)X>kk0 zYN^=|YEhd{i$tWhxKQf)H=@;IW&NVnRiR(ga{o2!YfqLuaUgxV%7485aqV>dFP(eN z?{?f+ghf32^5`GW*p&I*rViKmg9(d%78QN|%*ps>hhFV5=)zL_8xOswXMqg;{Q{xh zNDc6KvG zoZZ3%Z4(rS1$LU_Ob5fi~~KbVaSe_#hI?| z<{b2?)UF2)cz4OB)fxQ65BlU|C(a)Fc>YQC!+E~#>%DkSkG^#H+f*jcR2qF+>h!KR zEO!6Rp;a$S;;}8C+{gR`?^^c<@*Wq$o!w)3&oiUF$5_4f*?hDPpV6WGr`wZmp9FYM zkF0S1o4stF$6gtit~WFG9U^lS)V9eU{e<}^yzj!zA5wTPDJ!JaJH`1iM~JfBZIP`8Zm zltjbS$cqO5ixPo=Zl!uX^ZUJ-x%5R9Udgv`DaCBylhE~hSNfW@7fW~ zsdQG+qC|dMSi6bPqDSc<#Iy#*Vk!vihJ^-h#fZ`1MTxPk(wXn5NJZAUQYa9uG)q=WQK&eiRLpJXx6vwM34fev@=IDldX;B&4}^fMctP69jco+0Tb4g z4Cw5wph;sq#OwbVOkPA_MvAOvX;35qR359_7LO#z*P2dRMz%78p3^~ILtR&FF5=Z* zLW~AjcRP7DcPL-$tz$y9VKh7h&qP{OTLUIL%UiRA3724oBQ+S1&@HCMRwy1PCenTd z)%yN0Mb2WBYw;ci zvj!u#8W8@u5aYL`t%)9WQ)v}{2^-uqC<%yQ9}~ib3`DlNfl#-zgV$Dy7%g3w#9`=R zBwlOmJVPqN?9MZAs$xQ^VJWjB#?6goWR)E}O^RbL^ zZKUQ(QvNAwRnb93;tn^>1GLuXLsoK;kkjt?X3g6Z@Te|YHtSWn7}4BUYkyJIMU zbf2Xy4GoOPN!6o=qfg^-j1-T!MHXMF5!I(K0;{FDwYE~xPJvTR615YxQyF)2JeFp!-ehY#-|RS<-B9cD+ZZKvMVjG(ga!i&X#^^D zwrSp(#k1ik2`wc`F;mdaMhK)LFCFV5iew{3v{GyHP-+mpV+U4|GDS0?AID8=j#}`m zcXKVRoNiSdV67DIw}ZVp#VOY%)|TO4L$G1z9Sg(oQG_FCf6I;-Ml^o8XDKz7GS7ok zpIIwvw`>&891;jz_l)Wm(LXiKV$pCJjcfwnaMm&c4$ht4yo?g(Hr|&kTgy{=tgF?p zW1D#1V&vG#kf0^SNgkE8(sLV*X^-Mywgt=*tX+UHzgSYkp03@~LE=k7ebKYljgcZf?fAd0v^h-i*WfS^Y1teHXq z5~c!J!R&%r+rK3vhH$pM(n{={wT~~3T80yZT7c1HRDo|LOPM8IGWScKuMBE`g3Xrr zyJ;TtOoOyk!wLdX5^~UObL7Dxf5GRBPNl*3vWte z$yr_}9Mf4|mlD_OeWZ-c@GrfIKjzHxALpNb^8BcnAEUc`WA;JRv05Cio`EtX>KCTF z_+|RnK2Qt9>mRLVn87fj_Ok|8wr2YmJkY3)_`2P#rg}YKx!aJ;Q4a{CL)HTod~O}g{V|vC*fE&_h;H45SA^f_Cf#6-tN0=)_&gI z#ZS9fDZ!SUt8eJ1=z;%LH+P%h_9UOHZ|vvSkrKa#vst79sn*ufTT4>uW71vByQT`n zDhDE*m}F2`%!?(TB0?+{sc}lf-dFd~_XeCRZ&|!Z{b&W%^<97oX^nre;!1>T&(4JQ z1dI6kdCWFZX~sCi)kFZdVo|*a?oydglt-pCVP^|a#;)05J&FLFEHE+88h#8?ZsAR# z7)XptE9T5$VH9pLZ#uk{CB3?tC4LS_VqfbvT<>yoA>rLo$=Xk_*lR9a-FBpO=#_6EvOUkJ2Pv`n+m(r`aR z`l{8eaKd=G+G4cU!WJiYw(emYR4cnAKhRCWo?SVh);FS+MOVHa{eZz z6PI#!w&^}`{fB3%SlUlROrMd@*WyNOoJsl$nP-E&6cHE)*oe7u<567E(#*<4R(e0K zLqWqN*^E1Zr|L0gJK(sSsES~tZb)TF%tX8p7P!4+4e6r92(vdB7ncg2hEA7_!CZRv zCA6d!QrAwL1&5CxC7G)EC(T9fe5#z|eIJ@+;m6deThcSaQdW*+1I+GD43zj{ zlBlcNlNzc1`-##9-n8^hq9Caej2U-|&Yy{@QK-xFFEoVfuS?CL;VMYD#`fwojT|<0 ziVLYS!*xs&Tn8loLoEeB|XgTdCPa(Cy=-~>N zQs2D`Y!2xC^`JX2Rb39EN@Tq{MN6SzuSkmKy%v&dM%5bXik#Z75e z@1iEVYwGCIywT>BDmvSSp{yb`F*8yW^qhg{AlO&ba!(WzO4O`9U}Uj#$U_%=cs55(@ zUYF6o8sN=Niwc=&Yy9`x>o#3xsGH|A6Nipkgl2G)`+TVLg2J6@;aSqAZRW03XMENL zeGs9M>q{nf-A$Bso|}p#EiGl91d&895}e0|?E)lOwe-%}L*wGIrW90LR#o3e!Y(Lj z56}HH)l7P03IQ7V`*T>q4Y>Q7xQHm;s+rY! z8(;=JB2}}@zvdM%6(R651V-PyZk9B=5_*GAQKE%Y>DPj7^&Ijov}H2BA5-p!!$+wh$V@tJj2Ye7m2y) z%qB}%@{)q_rU=g~Ln7Ae3~^Ue?9Bxy#p02|O!t)iFFS*fYpm+P6I=hvUwwqr0v`fK z8|at6x5g?65(^OpdwN9<^s}S90KLe|K;JM_e^gZ@@PV#fSwhbP)q!(Gt1JO)3R0WZ z<{2i3hYAe?LpdKMsobGAX4ZyI$G`&O<+BnOP=28)4rG=pJ730v^oqosf=%gc3l8fb zIBd!Jt>qss$VsmHfjqDpZ8RVt10$#ud}2i(1YXORp#dI>V57AxtGbV}7V!q3wB8!V zjfS@1)w=}sdClQRb79Ls8l%7C#&A|PY&C3yP_V!!7G7iUDh_NljQVwX;ERp4ko=Mx zje4s2Xq_B|*7=tb!Hy*p@vz+-%K_ij=X(ARhr#FD7aREa3BK;J-;phR{0yH@=G7kl zUuU-P=q7l5LuZX-p%pG4ewm#>zhy_PwvzDC)e{;V_&(-62G!J9`Gw)2&kYNme;#9Q znBMlptB6>-db_ep6ThHA{o3d8u~bfw2xXl4%H|05`S>&P{v~1QGtc)5r4;m2bGDEZoS9#+3hf^Kf^=Fs zD@{#y$dFeOS$;94tEs#)9?rid64@&1As@k{()1@lJWv6Vw*J&@DEC`XtXKsGM7nx; zPI683qrDH)cTPI=u`_`_(2KgiRcObyuSin922U`80KSwM=jHwiggNklbC>SaD+n_8 zh+zwMFkA=VEF4zURi z84;X-LU_Q0@?PtZ?#oaJd0-JlJHZ9UbL=YV`6ZpPoGNidis>BpAs z&Nf~^U|!5es;|dYsY}h%xt!FMjhc$GLx1@o)p$hjyLoZ)IuS(V!@IKJ-97PqGnLzj^VaLvF+H0MCPRJ^-!c?xb14?zkSS^xV^jd(`dg=@IIcV3N za?tGWxVwcrS-D|G?;rfx#QUUhq1_>@~VZmvsGWwux(#n2g$ zqSmeAcNV3qGKxPCUVRUjrjVR$0G7YV14h>XD!GgW{LJZ>qYtqiCP~K%fa16*=i1iW zjt#ZE2eUde$zF2{WiD7id)AfjP&|Q9d7HOyIM3aWC{zccAm!<7hhhI=SK*FX9-!@% z;;s7(;y@R*<(1D~ZKQewd6nFO^~SL|B)mx0^}^4iJ^4!LkoG2uSJ|J{9dMVlJwDiB zkPUQLI+QK$z5+S8M(-V~4OXx8udxZ|y9uY)hOy~Fe{~>cEyCV7a>Lw^G~a{&ox&Gv z(kuQMsPH#<(w!~wzsK;3k3RFwll(dMd<0zmO9|HHNy~gY?+JYZT!gbd0k=IRw_Ez) zH?2En*PF-d6XEVDqG#(~igXfc2G( z16T3{A zPT>h~f{4KoC+q*zb{$|%Wm`9h6?+@IqN3Qb_eNC^6am44Vt@$2kYET1 z>Zq|R_A>S!dmnqlUIx2k9lK)hU1!w!*A5Up$+7~eb}Ywfe!*{2`fxUlM- zfz49`H)-?TAGYmd(Au@_opUIH*Ir7mc*|p!bNKdRvKEv69NA;&DbM|{!e`xUoHX}& zk40$*VyZ`9_l{Yecraitlf;km9=5(&QyLI>DXqZ*Q=l!4<0w15jAw~vY;G~>)e%nIZ(Fi zkWv@><%mu1wq33(e5JZC&%-yOAO!AZ9-^`?9Y7%rqB18=0ES= zp1G~|%d^LhR1Z8bHN5+wq&hIUxYq70nTHj*#J=a(IC@)P`F?{OMjH|Nch04+lP0|GIn3n@{0yUN@dKpzghL5pI94 z&(rdkV)dFfnVM4X{NZK>zb}eE4`00+^7pKne|O2*_*>oL(@RWWdH1M3-{TF68tvxV z>(6w~GgB+OvcNfK>k@b0v{*g=zFoa1HK)GYn-pGhE%P+v=2XF}3eWr>bvdzkfV(rKoJng-w$pW>$E%`%+8Y{P&;p zynXw3t&;cc%HF!{zR>rKVfMA`F5cID%HOp6csA$gqDwXn$}>ngrcYdpQ+IRcTW>${ zLBL;!>+PCc^uo#c#qRXHaAdc#LjQAJ_RM^7f6`g|LCvZpS7?=1VOg8E#ozsst?FyL zDr@t~FN|y$uxvzuSvQK6-*7Ov+=zy*tHQD`y%Y1IbMv{*+Ob7;Hz>Du-fv6aIQE_t zd~xy2Z%3vDja&7{zlPXF`WQBY#g&Qp&oP4ZbZ{oALn>jzKs z-eos(VTFOQzpQ_EJ8k#4>o*#9x^cIEmB)djm0qP1Z;tUexhkOXzBR|E89G(Y^K99f z^vTIjl8biT>O3+=-EqeD<2A1?K3MPe$70E~w|qzloYJOAE4x$vGY8r|Xf{MWwRMl@ z?+31%9zSe+P}SAjCEv`@OY>U0iGMju=^v-N1-O&fOX&@XRWN(X8>DT1O z!R=>Dd=4H^=xwVnRiZD)zKczrKX~*vztohQcXm%nE$2FPSFQ)&6bnYaZkbwe?Dde( zl~NaOe`~K=6!+-v=;>8&j+Q;_(D!bw9kog|o01T^)~oyl{pOQ}8=UG=*(G${>A*Wd zZwifHzUqQ++LXP@=hxREK| zY-iqg9X;E&$rtrcfk(C7?>=z7vUB|42^T|Wj2au*=;O?YeLI8ojq>X&IGmZ${_zpN z7+ukFPBmUR>YKLTKKbJiO#9nqD`ts1C7Z1=r?>beyKr?nMvSfZF^?5Ul7RE z(=i~4W+0WbFpN#eg#}PjR#p>!0FkTJ8l7CH)TrY{0dY3;2dUbN0LF_;=9q~{#d2oQ_DMjC)kG$kS-@O*bs5m?_JYbYiI@o*r`04XBNbXklR7iglw;5X zgwZ1v;R&pRn+wW9O%R5PiR@di0V7p^QK^oLLp5Tc%%v*JG|(P#E8u%E@fx)#Qbh)- zl`xVfPN$4j4lvWaxnSiPxIw~jT1Av1Db5Dbc8FocYZA2BR$&7i-Rmr%Gn~~|%2jA8 z11E0H#<-_a08XdTs94F&p{g=U>t_wh=(JI0hA_uu18l2gOr2Jt(8aa%5Vm7Y95Z{0sv^9pLF@vbr%ZkRQF2E9ALe7)U0I|h2z(Ix4= z*FPCG*N*svB8_1BZuw=h?}=C@Gw40gTaXkP^^a@3&MiTyLT8orn2$Nq!EE;SRJr9u zr|M`DfRHxB)3`{UYMnMYW4nhrn%9`m3q}K}0)m~YzpT%oZ&*bDt-UfbQlZ8+k~oD{ zr&MI#>u3(VYR%0h`aCk3H)=1ZEL8ky&}XkE0PGX*p^2d9jQFCCFP<`H9XugNL36}o zcsGsPZ~_ZT##%lf@onn);AAxZ74kY-Yx)fOZMZj`i)gLcwd|IC_==l4Dh-gyN}B+w z+1i$TNK4VEyl-Fd@rys;VSksB$-XBL!dapG5yz-AKV$6#(Tr6NAF$@oMID0SfHeWi zI^d>+9{~f6y<&hu4i~gU(jo>b^_cZ(I4oNY?PD$LIw%7vtDgN{Si2?b6z*KhQjx#) ziY_%bN}CpN!WxXya*h&0bf=;n&t56KlnPa(rKE)0^zE5$Ut!;G7S0_!)+(-_LKm$O z0G{15NF_%M_5ipCBk;WOR)IsbN_wm7djmAuSh>zKDMEp2Nu%aBrBz~LNTEtHS%_Q4 zo&H&*27TB>sf>X-c|>17d0Y^6)qI-I)z545wvfqwA8wuwj&77l!v~Hja^>8{0y5bg zWIM#a=`-j{KNAGT;72D{>-_E?=xR@|0N(%iWglbZ>Q4IpAk-W#V z?$J$40elnL0TFHb4Eon!guso?*h!n=I{}J5e6h3t8WYzIvDhY`Ojgx|OJd*rR|q*U z0qNFFrHSav$NaUC?A(2ftlJegkII2L?Toq1GAb!GdaL_r_=wq6tyYF0*Pcav&PutY zFpK!ZxYbn~l@O~?>o^&gbb9XGfN42O%4BVEgK%}G<*h0TV!FxW62HhjAEVLgdr)1y2~S?IoW`!ojErK zCVD}}xA>vQ2(vze{$YD@P!B~PrCLb_GliR_labtZ(}(t-0o={_VJ$b*N1P%sIzfj# z%7-0VdRF;LwPmu~LFSeV?H~+`4yv6(tPBB$|1o>{lz99N{8Xuz`;?4lQeR>ueGv`Tf9B`A5?;pvAi9fp+DS+P0n z+DK7QowY*eRFBlnB@k}Whz~Y9JRT*6tWzZEgi70MtExSH1xfcq4J@X|SgV-zEj2)s zov+_3iXMXoVt|XJWBLsGq!g=|#y&dJ(E=5GcOw$_r4N4zLVZ_vp?UJ1KHeIMrPyS+ zV~1Yl9S>nibT;+W_`@2at3akC+|A=!jV=eXEryC&2mWRi*GnFOz)0p2+Nb{hUwB>E&MMuV;?L$&y{RH`4D_$;OJ zC$u>VbmV#&w%40JgZ|JNsVwxE5~UPA!|V5t-d98sphp+Wj=rv)mB_#cc5@oye-i?e zg4nqCykQMkT;!CoM=Cu4Y6V#N`+N~uIrgR~vQnL3oX_@Gs3W=gin;^Ggw-ym9c41y zuOX{wQaGV6hHKG?EUSw7q2}-i(zsfxf#4>4K3Y*11JJ!lsBBJMZe(* zDmX8%C?L#hf86V(L{1GxSICY+2G_QZX{A7NzS-!h8-yL2$2^i7))fRd4nthkks0F< zPQgK9cbqaaDh(?B40W(o=>CSn$bxk^c~|v)9gFtI^jHBTGd7={YGf6%Q+SLbLTBj? z1U&UX!{L8IRx0w@n491u2%K5VDI!Iqg2oT6eD<6_)D2ZAT#ogM4IKpGy#q3PExyQS zALm&)3m&1z;Gt4hj=-OoTv{fK86h}H^4p_jOIPCe1E2y{w-eV0iWl>A^} zw&?d!2wguIjx7m>td#&PWHw`Dw0Pe6YhIab70Tr{j1KB;6@d;kE~L_6Cj;CG#i&lB z!)P@afykT9BeMBDiReO{g>N5+xyOPPzQ#FHr+7K|7lfPHb)3H&O~J-HFaePMv>o z1-b*-B%rfClM*9{?1P;fB0)qFPg_^9gFSGU!*5vJaj8Y_8KQ_C zF-2=6;r<|dpfXA=*Cl8KI>nFEEhptE8}4%1()3^TekWs=%NQ$c}9KDso;F zHKTVDDccA={6Kh9TA@pXdD-52X7I7R+ z*@eoA3s=N|EtNoh=Eb0VIZ}~Ev=Ec+Gh^VG0@=z}jvZIY#!*J3JE~${-$USjqigG; z;M&UznfE;jk0gUz%1!RI1h9K6n-^@(uLPkpoX$;?WQj?dE#LoGTo34B6+~vE z{2=z%3Fx9D#UB~}(!kzEolCwma?M#si8szcu8s2f<^ zCb=ZxHsI?a-<*`?o7`ox;}guoZKZ=0Tt4d8har1=K(hm|2*gUeu%i`JH?03)uHF)t zoGfkYz2Eu*_m6_+LwvVjE4ciUnA~g2l<9{)!dwd>EE^VYdRhbhq5HO!nCy1MtNjPh z#z>fb%q4CdX$2fzA1A*P=!rdEo10)J=>ZmHkt$7}LBD^F6;P2;c-J|KKl4Bj`%%NQ zS*+CxE2zRNAS7<@A=+up5firn4p%dM2K}V9R)9@~3sz7y@!u!xGiE(`xrhi;!-HG3 z2H^t`x|--HZPwWEKN0e6{Kc(X4q7=W4@ysl?${>Dbf%UX8yab)$C)swXvgueQ(P(Y zvMO$~R7!qh`u=v|Ycj??bx_Z;YcyW_tRWkxb1h+MOVgd@NkMC&qvFV6Y^9v@h80+E zjCg21#wk#ziOcvG?#emQRFBy=e=y9@0G4ORpm}adr3ul> z7-2j1Rj~n+en%o1A9%!(!U+@5ih@Y?$Q`B+`%0c$0rm;()DeoJMIvRNWPx&@G&QA7 zO3G|_Pd^MOoJ|ZABZ1fjgvx_$fSt#g?qKC0IzI~euW()=B^?Inf5Jc6KJu-5}&%4 z-MdD6)WfuN2aL$^AJb>h_pc@aUub6vDW&6;50%m@$YiSa=Fo3jOMn)d%pvIYADfl^ z#X%;!hsm5eCYi}SDuqda_Q&QEc@(GnB8~sC^l#-96yh=P5_W!Xgi-=FCRjw_%PaGh z+KU3=I*Ml2vm@iJ!28K{(Uw*uneW)IZ{dnqZw*VbX|d06E1(?{X!yg2mCw1Ee*v7Y z1cHW*^cNGYz-G>t8TYhc3C*bxc+k#9pFKRY^% znP&?=AN`U`^ZHkTo{l~VyRA&0L4Rz4G<4%csJlj`!jw6>J|RQfS6hGSD$MX2s$%=t z&x?PGh~J(a_m`xX!3<*;^c-v`R5wVX;lmDoy?TQIS)mRx4hx&I#|mu5Ae|5UEv(^+ zFw`^UG3UaaP>pj?ON@3je@tWhHJCf z-Cv7i({2-5cLsi}rO^m`QTy_Fw!#m7Z*IOaod2yTwj~@HEBpP$Lw-SLbG4dz@nDxX zr=YQ*fgmk5nfJk#Oe#1y_ z2P(BHj7MCmD2R`oCs0WdWa^}WXE9$VYmV-K?R`tQh(QKvund6>rB1?bLGV5&SH(`l zl$9$ahPq9kL7xv^C=eKsI1Ap=g0w^0-J$NlCBV9jA65_d+X|xk%e6SE!;1}qTpYN@ z8QY>{f5CrQJ*2r>gT%Cbq;bO=e|nnWr`+0IFOEC|@O1HO)@RT!aJL4ZA-ITZ5W(D8 zty=7X9SmDI+AIeQmg6iF7T-AQ#>BF}z`or%$3W?2?aWeAKW{56mX@Sg z%(nXJ#3s;5KJj!3Q^z2evt2B6xFC0TpPb`s9~9Fe3w4y_Q3mQ;qiu;jRag`w$&Xc23X zeutm`b&oOYKoe}T&+$zhI4kM+$<-Lpa)xmv_saf9?I*!(H}F%LF<*)-mr$oCRJGFZ zdtvP2y$#@53dqY&cl5Bc0vM2hCFNLdNl3`E`sTiK1J>Jy&~s%(y<#sB8T-9ydz&9_ zDThknDFP>vh;Cq5-D>aQf^R{|_EN=iOQiFT^i<=R0p%bIR!8^Xz8%}^*;=j$?nv* zGh0BZT0k0+Wq?uaZt=cw3tL!ZYBYdd>xi6S1=o0>$Wx`D10R;)6a~R6-j}9nfFb~A z$3&wiTLI_iFamAUt=?DKgnzBDxdR=ZDgiWe{NK*FpF2>c5fJ_3?5p=jz(tROiFKe} zbEUHcC{#*yUqz%aPYIvG-UATRyD`vZ#|zCDO6L*Ae^z7OMZGUpKGvG&=IjQ^_?FhC z6gsec+WFV8ZZ?R|&UT-DB@9g^TV@%+E5r#{xv_KJ!_a+i=$-|3cqGlG4mEr9tX~3D~5gp0NsLA---$_0FDjmw!1Y@;x zSOI4zFv928WVFV>_K3H$32up8ht?0nr02dm&+bV?P*Zi;vze~d3Q@-Q83NV7nHoX-Yy0jCVU zvG)*FBC${oD|?B8HlPc5W`AEz@J66_v7GQJEFGP%^#b;36*eKY2Vr#2ruSLJgt6lk z5x6Tuu<(u52Q~16z`LLh*1IQ`76wgLM?~Xr6ka5qS%V!WWLuoy@EKlB_8$lcS3)A8wVlxcQLQhLmG(V zVVzGQ7pNd=9XizdAvCZX7GpJ#KU@SgWACaHT}yzCiJVCRl6a-J{330;n*&d%Vk)+1 zsMuCv728q?)XgX4IRE|<;1*$G8G1E+27Qsff{z^{7x?@p{faw zgshP)jHr&J!;A{f_=Fm+9lr4v9oKk?#P~{F~Q?0dfI;SnE4Zuma6V03@tpOSW7kVSQQ;VHeiYg%N+ehs!4r z(@erEyTmbZ(yom)f&VXl*eO2$NrF8h(akMcJ{DU91k3KnBB0)ys%ZGQK z5_Xvn?=@8-ywEvGQqQO52l~1|^1SdFb~$SQG^y}(D_VrGlE`=LZ=U*RF}k~4sE=4H zc+C)|!3Al?Ida;8sZ~TP)bWCY%U36E<&h)k%cBTm=lPn>vys48qY>ERohSXtvVCa9 z04!Xy!S!OHbrN4C?UCUeIUoh)djFv$9qQhWzL2f2KP?xBj*rJaWBz!L(o8_Nkgpq| zn6r?Z9W*suWd&GA>q|}^bh(;8_NwTDmGMf!9Ta%oAjSbsrFES~Ly)G(o9t%D!>QI#12h`$0cyha zJ7d46K2+Zm60=!;#{nt0meP{9l>JqAZZ?eC9^PJ+$?|oNi=ql#S3#Ja=1f|W4$RjW z;jx2({3pdRQQ!16ZerqlA%XAS^loxvdMZf(QC z(F;3x*lC7(H?48dc@%{eonL%k_3k`4$9ep)`1kIL;(I7Ex>T&=sH42Fu*%nwSM%_c z6VN>BU$ddcnS0{+8sQXMX3@zRp-{>QD22^~w;qauW=?vcE47r?SO=7DS(r|Y(8a9m zkZ!~?ap2fE9o89yZAs{-j&JA}4s`5aGz*@KFRY`B7?Qx7S6;r)1HeYZ#3(i^{dV+4y90$qSl=lOw7eOT~@!EX|g zxEDK`i=Ly9WPHo0BpXI=3N1MkTFHaDkoA(I?CBPDVO7l$gPp1{eDz=K(-xAhQ5Httatb>Lct(3zXz zY}=41SnOwEqSzTraH81171Pz;54p!6IM_1esX_uaZ79U`q@4WE zH2p~_3XW}9m82wG7B4p}=Z+2K!vUKuADpC6H3pRR01W9tOOIqQ$fI&tVsy>lyL3e3qNGwkv} z=tYQi)@O1jiy{XoXcLO4&;0twyT5{gt$Br@wG3UMk8-8W zhrxEZoJFM94UB*ol2rkt(NQ7UjX!#S(z6 z*w4##Sr58N=QzT}nGrkNDslAW*l^wrq$Kjr@*at&p=V6{nWd?*>qJ3=uv*n$L}CK} zwz}m=ngOfJ+>yU}tYwM|pB0@#ea)L9kJ@#yHFT?BD#CrUhHDE3%NqcGc=o3c)`Us$G_$_;B4HS#u+#3c-*v5G#mn{S> z96@@j%Jc%8--zONJ5F%kTT! zDmp0j(r4A5mqTv@;P>oWQRn;)LUo(Dbut+;-)6AXT=K+$ z?k_9!|Mw8I)))qgW;EwtNHS4e)>}n%FEhM2%Pq)YS(>B^v7PAe6_G#wHD4-EL)q3^ zG(Elu_5d+b%`WnvOJyknS>WE%ZHwrte19mWJ0rs2(zc6`x!1UhR)ytwb;kKej0}|8 zWK3E{B&hfoH3m%@=w4$>tHIqN$2-X3#>mmRob7UCs^0is0>9l)%;Kn zb^PD>vOIy$o332@`6TjY$^1Bg%kaLg_}}o72lBbq1xGzTg!W<;Pu7Xyu3qgYxUs2R z`J<1EH~dVm(=mP^ryWl181inlY$rFKxr(HtMS`2Z$g3`HJyy>Nr1el5DHzhcb!{gN z)b!DbguYY85dn0Y3d}@AaEw4Ag7?%Ai9c>3nESG*ow@}0;#j&e zlAnM{j<~|zR@cglUD7yx?Z>F&eTV-{4og>{nU?KoFD_=M&KW+*7S`iK1gSHg`ZMlH z5xDY^HYzUhT;69ATC)p3>~^DTU8O)reZT3HFZ-I`W|W~z$my0)mSA@`$pk`Yi%2;G zO5~h&3er=}#|{nJ^^ios+jL9*-=TER4@J@2PKWcclJ^W11kQLBF>60#nDJkQc4q%` zr~dm+NHK#^-LUH&2YTB?V5xa}$IZU+k%=>q+oywqg%67sg>U4-$lu5kp44-{p5n$- z==?Se%a*3@Dq(nfp3w*Y$T$=1Wc)*9Hzg5W*wuAxDrS*7S2Q09*HKF);y1x7b?ng9 zaGgi^VW%@14;DoJ{w}0(i;$3UJ*KrBH455qf?9$-4_a%8WNa_FPGBDrDQ0%(F^-+# zJH0U$WTyyn43|p5SIpXmhNJmlSGqx@GnA9{8T5;0NI}*_;#6}aUc6L0nT(rx;_&kZIpccCUtUctq#L8>dJM(5iIC;9?= zbYPrlSZ$k_Iwj~#R8E<%Ghz9%Zvy9B3K4g^QvYsuR7L+_)*d&gnLdMluFFpoTc!>& zS+aeJ$kAA+*^A`L28w@EL8^?m)5YJhCGZ_OL()>1$sS(ER(DQ#m{VXsM+SHhZlt!d zk&+nFll6&SFwbE)1goi1K2{h^@3kAJACq(;N_C{BKmSHYqS6!?I)6GeIcT{}rkab1i&k@z<6Sb>f!8;VKnU32`+2yW&AwNaLr%_c%a$5%< zeuf{mq;cvamBvFE%NxRyT^6e<=dT9yFGo$rs>?CT7Whmz;P+KV2e_QQ<7Y%=PGmS% zU5oqLLWH(>qle+$^g}dG(ZS)=;l4r{+u9WRG|GFevxO#WXps@7eADFEbj$%KePul{ zgk=wtZSQXjR|W@vs7!4d|8RQ6Er^|om>p$#1`M@{hu&8fm?tEjmc6e#1Y%@SG}Jts zjT&tO4_{esi+n<9v#UQE!LC79T_+XX6Yrb_;eAe5^g4W&d{f$7xq#@egy?6-l&`ki z!jh5B_#AsvHtt=5j*V97*-=tSTm&VWmrYrdS|adb8(E_1ue)20g|b46nl~eVs#FSk zd%V5CGwH<9yO&*Iy0LpHqMr@OC&z8!@Ylp8#Q7=I34CoWzrS+RRs_il%u%p*KYhX$ z8gaW%dYOO13e4etu~6963%0O`*F7^5G8vzwYOlffnu5RpE3p^d40$D$#3vB!(gb{*%UT?NpwvC13pQ7V-m7UG=5de7LHf6M*~ zKUiPZe7G9(w=E?6CcK{bwm%Qed#Q=acvnGy&2#BN(nTD9jLu* zD3t`$%pz6oAKh{CztUc?-FcDJMvh&_W=@u@!V%rPm z&-(D-k>=-!vS|6!jO1>|XU`mjGc~eyznFXVQteN1@^zTw*Xp(DG8EkSC2OD6F8pcG z#}AT9gLy86jxvCYYdEe0z(e!y3YE$eH)``{#Hn!w*L~~$2>yo`h-3*2YxAMDv-$*O zr64D|hCWC`{~oBwd|kn4+04Gm`1hv25v}?TdPR4lJKdDX^}QJpw+{RN6p?SHI=h^w z(K8UZm`N7INV914|0In`b=FMQ>GN{gTj(PK`Uqwuupj^5Nf3bd<*_$Tps3iicGhsZ zj8u*Jn6``zF;o5*8TdN)>pgODJveDOL_S+v{PmmdY$ipEbjbQs)63G}W*qeF$FwhY z*8j>V@=7X2VAy!7l8&Bf7 z&;}FZWlKWg@}O*?m$a$lH`tX8m*?xGlF&qn8+Nle1t{WFc(I!Q#s}&0R@ePC=*=y4 ze)InR{03Xu_)7a&Z1IW%Xiq^n3ahm6?NS-MBaM&m_{)_7Ii`QO*NUMfap0hi`6w@G zr&JOeO7fd9DnW642`2emP#Cc#i`RLn=z&J_n|4I-iB3*mcexDadm2alF_|vKPFD^qY70vU-mwrE0Nt(FsC5l^Y-dbTv$b~5;xO>_rY4gv_kvZIsUaNf&Ew~B>cJyWc z^+|t)Hdbl8g-&q3t<412ny1R@d$KvpKlgWiJ)_WQkU^!wj}|zU~8^i2e+dIcofNO=Z$=qBmzvhs)a@sGY&qADgh&t zq1k#yu~!m!*4ZbKDcwRjRyG|8C!+n^?U_(Nn<|ZiO2Dl3smwn`H)WAsCU!gDsTGWl zXBcGO4D0SgwzK;9;@Z5dUlWKGbXv!D$-_FvEn^jR)|3Hmwv9#&BbSCl>%a+h)y~YQ6G#dbX6=Iof$*r4$_=!y; zbsD*gF-=GMYx*m+@tMcXjsL=D3X7=e`W$9ihGRx`8J%suZ3`10ecfMW2jxR9s)WL_ zI)nb=i8XW&WwMvRUdBR?Hl3!0KOBoT6WaB)Rai{|1|#hiDqJ+i7utUMmMtqW0PTSZ z_*#t62R~Rt_rjH`9Wzx5epm3lb#7s$9DI`T8ouoid%CS6CCgYVzDgNq|2Kcy?oFxPuMwmdYXU%IEIi zI*#b=j%g%kM(xh|B!F9jQXsty)m6)ZAU%X!hnW}CXV5n+Yz;Kyx;sl;dXVr?^^W5o z0dpi)P}vQ2`eLHElr3GL@o)tmq;>JtL@6V13v|B(oWSK>dq-T0RaHiKAb_@F`vJQq ze59-mTy#ZZd>m%-_$?~6s#;$+czth7fw3(LtNt@ALJ>wSD)K>hfo3eC%9+=_UmM!M z)tP_mBQe;u8ItWA?B3X-j_`J~fdOIRWYXIYw_98qvm#1t2Oj=f`&7#NQ~+G??<(6i&6C?^N#3Qd)pZKUa>p+k25!rWpiLC#MXQR z#@dF@KP5wL=)KG-EMIAvY(9EAc8s!Sx@{atVf<4NL^J-)#=E{qTwRfXJx!*e5p01C zw$jAwoW5IzmLB=q8yB@`e~HSteY&f;_V#YFos!QnqqXz3t7sB!A!035?V@cQ!qJq? zWySm3$UYUl%*&B3*KFg+$f?3cS~L6G0(uMi1#&Ap^q%y|HYR$UUEo@#BzVJwZ1oFl zM9nkB$^5*H;folNF@KvJOw5c6z3Z;BLTvFIWEY=_2o-G}J8j_6^_zsp;s;9H5AHG&NdAMMVN)6zU;S^f^*FUwc>^2%Bghk z%10=Q9jz=mXd?x`4f2P3iY^0qJro#h$6x)3WP+?c$^2fJ+EL^1h~S*)Arq10*dDS< znq(R)DZl^FQEPnBlrCsW6DBneIb%Bqr@W+wWZR$a;D&;>JCYMS>)?1nGKon4QZZsm zxjXPF<3TZ|5x-xTjE_4>DbBm#bR->n65MJ<4O$j+`P?{k5TD%5Gwr*ZQVIF4)$7r> zvs=)F&-h_|_xRsZkTFFWfp>W{f{AM9Y*j=$f};;+H&7LsK7;-gPFM=8hh+8f(9w5- z0DAR2(6y`aWTL3Lw1s!pT8TouBi0Jo^j`d5n>e#{mIK0L?bz;byLo$LvV0}5Cq?#u DM<7~s literal 0 HcmV?d00001 diff --git a/third_party/jsdoc/rhino/jsdoc/src/astbuilder.js b/third_party/jsdoc/rhino/jsdoc/src/astbuilder.js new file mode 100644 index 0000000000..1d62560e2f --- /dev/null +++ b/third_party/jsdoc/rhino/jsdoc/src/astbuilder.js @@ -0,0 +1,18 @@ +/*global Packages: true */ +/** + * Creates an Esprima-compatible AST using Rhino's JavaScript parser. + * @module rhino/jsdoc/src/astbuilder + */ +'use strict'; + +var AstBuilder = exports.AstBuilder = function() { + this._builder = new Packages.org.jsdoc.AstBuilder(); +}; + +AstBuilder.prototype.build = function(sourceCode, sourceName) { + return this._builder.build(sourceCode, sourceName); +}; + +AstBuilder.prototype.getRhinoNodes = function() { + return this._builder.getRhinoNodes(); +}; diff --git a/third_party/jsdoc/rhino/jsdoc/src/parser.js b/third_party/jsdoc/rhino/jsdoc/src/parser.js new file mode 100644 index 0000000000..1b1c05b216 --- /dev/null +++ b/third_party/jsdoc/rhino/jsdoc/src/parser.js @@ -0,0 +1,38 @@ +// TODO: module docs +'use strict'; + +// TODO: docs +exports.createParser = require('jsdoc/src/parser').createParser; + +// TODO: docs +var Parser = exports.Parser = function() { + var astBuilder; + var visitor; + + var runtime = require('jsdoc/util/runtime'); + if ( !runtime.isRhino() ) { + throw new Error('You must run JSDoc on Mozilla Rhino to use the Rhino parser.'); + } + + astBuilder = new ( require(runtime.getModulePath('jsdoc/src/astbuilder')) ).AstBuilder(); + visitor = new ( require(runtime.getModulePath('jsdoc/src/visitor')) ).Visitor(this); + + Parser.super_.call(this, astBuilder, visitor); +}; +require('util').inherits(Parser, require('jsdoc/src/parser').Parser); + +// TODO: update docs +/** + * Adds a node visitor to use in parsing + */ +Parser.prototype.addNodeVisitor = function(visitor) { + this._visitor.addRhinoNodeVisitor(visitor); +}; + +// TODO: docs +/** + * Get the node visitors used in parsing + */ +Parser.prototype.getNodeVisitors = function() { + return this._visitor.getRhinoNodeVisitors(); +}; diff --git a/third_party/jsdoc/rhino/jsdoc/src/visitor.js b/third_party/jsdoc/rhino/jsdoc/src/visitor.js new file mode 100644 index 0000000000..0295f2df15 --- /dev/null +++ b/third_party/jsdoc/rhino/jsdoc/src/visitor.js @@ -0,0 +1,57 @@ +// TODO: module docs +'use strict'; + +// TODO: docs +var Visitor = exports.Visitor = function(parser) { + var runtime = require('jsdoc/util/runtime'); + if ( !runtime.isRhino() ) { + throw new Error('You must run JSDoc on Mozilla Rhino to use the Rhino node visitor.'); + } + + Visitor.super_.call(this, parser); + + // Rhino node visitors added by plugins (deprecated in JSDoc 3.3) + this._rhinoNodeVisitors = []; + // Rhino nodes retrieved from the org.jsdoc.AstBuilder instance + this._rhinoNodes = null; + + this.addAstNodeVisitor({ + visitNode: this._visitRhinoNode.bind(this) + }); +}; +require('util').inherits(Visitor, require('jsdoc/src/visitor').Visitor); + +// TODO: docs (deprecated) +Visitor.prototype.addRhinoNodeVisitor = function(visitor) { + this._rhinoNodeVisitors.push(visitor); +}; + +// TODO: docs (deprecated) +Visitor.prototype.getRhinoNodeVisitors = function() { + return this._rhinoNodeVisitors; +}; + +// TODO: docs (deprecated) +Visitor.prototype._visitRhinoNode = function(astNode, e, parser, filename) { + var rhinoNode; + + var visitors = this._rhinoNodeVisitors; + // if there are no visitors, bail out before we retrieve all the nodes + if (!visitors.length) { + return; + } + + if (!this._rhinoNodes) { + this._rhinoNodes = parser.astBuilder.getRhinoNodes(); + } + + rhinoNode = this._rhinoNodes ? this._rhinoNodes.get(astNode.nodeId) : null; + if (rhinoNode) { + for (var i = 0, l = visitors.length; i < l; i++) { + visitors[i].visitNode(rhinoNode, e, parser, filename); + if (e.stopPropagation) { + break; + } + } + } +}; diff --git a/third_party/jsdoc/rhino/os.js b/third_party/jsdoc/rhino/os.js new file mode 100644 index 0000000000..e3d2b78719 --- /dev/null +++ b/third_party/jsdoc/rhino/os.js @@ -0,0 +1,19 @@ +/** + * Partial Rhino implementation of Node.js' `os` module. + * @module os + * @author Jeff Williams + * @see http://nodejs.org/api/os.html + */ +'use strict'; + +exports.EOL = String( java.lang.System.getProperty('line.separator') ); + +// clearly not accurate, but probably good enough +exports.platform = function() { + if ( String(java.lang.System.getProperty('os.name')).match(/^[Ww]in/) ) { + return 'win32'; + } + else { + return 'linux'; + } +}; \ No newline at end of file diff --git a/third_party/jsdoc/rhino/path.js b/third_party/jsdoc/rhino/path.js new file mode 100644 index 0000000000..c4218f939d --- /dev/null +++ b/third_party/jsdoc/rhino/path.js @@ -0,0 +1,432 @@ +'use strict'; + +var isWindows = java.lang.System.getProperty("os.name").toLowerCase().contains("windows"); +var fileSeparator = exports.sep = String( java.lang.System.getProperty("file.separator") ); + +function noOp() {} + +// exported for the benefit of our `fs` shim +var asyncify = exports._asyncify = function(func) { + return function() { + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + var data; + + callback = typeof callback === 'function' ? callback : noOp; + + try { + data = func.apply(this, args); + process.nextTick(function() { + callback(null, data); + }); + } + catch (e) { + process.nextTick(function() { + callback(e); + }); + } + }; +}; + +/** + * Returns everything on a path except for the last item + * e.g. if the path was 'path/to/something', the return value would be 'path/to' + */ +exports.dirname = function(_path) { + var f = new java.io.File(_path); + return String(f.getParent()); +}; + +/** + * Returns the last item on a path + */ +exports.basename = function(_path, ext) { + var f = new java.io.File(_path); + var p = f.getParentFile(); + var base = String(f.getName()); + if (p != null) { + var idx = ext ? base.indexOf(ext) : -1; + if (idx !== -1) { + base = base.substring(0, base.length - ext.length); + } + } + return base; +}; + +exports.existsSync = function(_path) { + var f = new java.io.File(_path); + + if (f.isDirectory()){ + return true; + } + if (!f.exists()){ + return false; + } + if (!f.canRead()){ + return false; + } + return true; +}; + +exports.exists = asyncify(exports.existsSync); + +//Code below taken from node + +//resolves . and .. elements in a path array with directory names there +//must be no slashes, empty elements, or device names (c:\) in the array +//(so also no leading and trailing slashes - it does not distinguish +//relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for ( var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last == '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +if (isWindows) { + // Regex to split a windows path into three parts: [*, device, slash, + // tail] windows-only + var splitDeviceRe = + /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?([\\\/])?([\s\S]*?)$/; + + // Regex to split the tail part of the above into [*, dir, basename, ext] + var splitTailRe = + /^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/; + + // Function to split a filename into [root, dir, basename, ext] + // windows version + var splitPath = function(filename) { + // Separate device+slash from tail + var result = splitDeviceRe.exec(filename), + device = (result[1] || '') + (result[2] || ''), + tail = result[3] || ''; + // Split the tail into dir, basename and extension + var result2 = splitTailRe.exec(tail), + dir = result2[1], + basename = result2[2], + ext = result2[3]; + return [device, dir, basename, ext]; + }; + + // path.resolve([from ...], to) + // windows version + exports.resolve = function() { + var resolvedDevice = '', + resolvedTail = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1; i--) { + var path; + if (i >= 0) { + path = arguments[i]; + } else if (!resolvedDevice) { + path = process.cwd(); + } else { + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive. We're sure the device is not + // an unc path at this points, because unc paths are always absolute. + path = process.env['=' + resolvedDevice]; + // Verify that a drive-local cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if (!path || path.substr(0, 3).toLowerCase() !== + resolvedDevice.toLowerCase() + '\\') { + path = resolvedDevice + '\\'; + } + } + + // Skip empty and invalid entries + if (typeof path !== 'string' || !path) { + continue; + } + + var result = splitDeviceRe.exec(path), + device = result[1] || '', + isUnc = device && device.charAt(1) !== ':', + isAbsolute = !!result[2] || isUnc, // UNC paths are always absolute + tail = result[3]; + + if (device && + resolvedDevice && + device.toLowerCase() !== resolvedDevice.toLowerCase()) { + // This path points to another device so it is not applicable + continue; + } + + if (!resolvedDevice) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = tail + '\\' + resolvedTail; + resolvedAbsolute = isAbsolute; + } + + if (resolvedDevice && resolvedAbsolute) { + break; + } + } + + // Replace slashes (in UNC share name) by backslashes + resolvedDevice = resolvedDevice.replace(/\//g, '\\'); + + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + + // Normalize the tail path + + function f(p) { + return !!p; + } + + resolvedTail = normalizeArray(resolvedTail.split(/[\\\/]+/).filter(f), + !resolvedAbsolute).join('\\'); + + return (resolvedDevice + (resolvedAbsolute ? '\\' : '') + resolvedTail) || + '.'; + }; + + // windows version + exports.normalize = function(_path) { + var result = splitDeviceRe.exec(_path), + device = result[1] || '', + isUnc = device && device.charAt(1) !== ':', + isAbsolute = !!result[2] || isUnc, // UNC paths are always absolute + tail = result[3], + trailingSlash = /[\\\/]$/.test(tail); + + // Normalize the tail path + tail = normalizeArray(tail.split(/[\\\/]+/).filter(function(p) { + return !!p; + }), !isAbsolute).join('\\'); + + if (!tail && !isAbsolute) { + tail = '.'; + } + if (tail && trailingSlash) { + tail += '\\'; + } + + return device + (isAbsolute ? '\\' : '') + tail; + }; + + //windows version + exports.join = function() { + function f(p) { + return p && typeof p === 'string'; + } + + var _paths = Array.prototype.slice.call(arguments, 0).filter(f); + var joined = _paths.join('\\'); + + // Make sure that the joined path doesn't start with two slashes + // - it will be mistaken for an unc path by normalize() - + // unless the _paths[0] also starts with two slashes + if (/^[\\\/]{2}/.test(joined) && !/^[\\\/]{2}/.test(_paths[0])) { + joined = joined.slice(1); + } + + return exports.normalize(joined); + }; + + // path.relative(from, to) + // it will solve the relative path from 'from' to 'to', for instance: + // from = 'C:\\orandea\\test\\aaa' + // to = 'C:\\orandea\\impl\\bbb' + // The output of the function should be: '..\\..\\impl\\bbb' + // windows version + exports.relative = function(from, to) { + from = exports.resolve(from); + to = exports.resolve(to); + + // windows is not case sensitive + var lowerFrom = from.toLowerCase(); + var lowerTo = to.toLowerCase(); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') { + break; + } + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') { + break; + } + } + + if (start > end) { + return []; + } + return arr.slice(start, end - start + 1); + } + + var toParts = trim(to.split('\\')); + + var lowerFromParts = trim(lowerFrom.split('\\')); + var lowerToParts = trim(lowerTo.split('\\')); + + var length = Math.min(lowerFromParts.length, lowerToParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (lowerFromParts[i] !== lowerToParts[i]) { + samePartsLength = i; + break; + } + } + + if (samePartsLength === 0) { + return to; + } + + var outputParts = []; + for (i = samePartsLength; i < lowerFromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('\\'); + }; +} else { + // Split a filename into [root, dir, basename, ext], unix version + // 'root' is just a slash, or nothing. + var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); + }; + + // path.resolve([from ...], to) + // posix version + exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string' || !path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + }; + + // path.normalize(_path) + // posix version + exports.normalize = function(_path) { + var isAbsolute = _path.charAt(0) === '/', + trailingSlash = _path.slice(-1) === '/'; + + // Normalize the path + _path = normalizeArray(_path.split('/').filter(function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!_path && !isAbsolute) { + _path = '.'; + } + if (_path && trailingSlash) { + _path += '/'; + } + + return (isAbsolute ? '/' : '') + _path; + }; + + // posix version + exports.join = function() { + var _paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(_paths.filter(function(p, index) { + return p && typeof p === 'string'; + }).join('/')); + }; + + // path.relative(from, to) + // posix version + exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') { + break; + } + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') { + break; + } + } + + if (start > end) { + return []; + } + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); + }; +} \ No newline at end of file diff --git a/third_party/jsdoc/rhino/querystring.js b/third_party/jsdoc/rhino/querystring.js new file mode 100644 index 0000000000..a24ec97ff9 --- /dev/null +++ b/third_party/jsdoc/rhino/querystring.js @@ -0,0 +1,121 @@ +/** + * Adapted version of Node.js' `querystring` module. + * @module querystring + * @see http://nodejs.org/api/querystring.html + * @see https://github.com/joyent/node/blob/f105f2f2/lib/querystring.js + * @license MIT + */ +'use strict'; + +var QueryString = exports; + +// If obj.hasOwnProperty has been overridden, then calling +// obj.hasOwnProperty(prop) will break. +// See: https://github.com/joyent/node/issues/1707 +function hasOwnProp(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +QueryString.unescape = function(s) { + return decodeURIComponent(s); +}; + +QueryString.escape = function(str) { + return encodeURIComponent(str); +}; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +QueryString.stringify = QueryString.encode = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return Object.keys(obj).map(function(k) { + var ks = QueryString.escape(stringifyPrimitive(k)) + eq; + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { + return ks + QueryString.escape(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + QueryString.escape(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) { + return ''; + } + return QueryString.escape(stringifyPrimitive(name)) + eq + + QueryString.escape(stringifyPrimitive(obj)); +}; + +// Parse a key=val string. +QueryString.parse = QueryString.decode = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = QueryString.unescape(kstr); + v = QueryString.unescape(vstr); + + if (!hasOwnProp(obj, k)) { + obj[k] = v; + } else if (Array.isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; diff --git a/third_party/jsdoc/rhino/rhino-shim.js b/third_party/jsdoc/rhino/rhino-shim.js new file mode 100644 index 0000000000..720202f9d1 --- /dev/null +++ b/third_party/jsdoc/rhino/rhino-shim.js @@ -0,0 +1,181 @@ +/*global env: true, Packages: true */ +/** + * @overview A minimal emulation of the standard features of Node.js necessary + * to get JSDoc to run. + */ + +// Set the JS version that the Rhino interpreter will use. +version(180); + +/** + * Emulate DOM timeout/interval functions. + * @see https://developer.mozilla.org/en-US/docs/DOM/window#Methods + */ +(function() { + 'use strict'; + + var timerPool = new java.util.concurrent.ScheduledThreadPoolExecutor(1); + var timers = {}; + var timerCount = 1; + var timerUnits = java.util.concurrent.TimeUnit.MILLISECONDS; + var queue = {}; + var queueActive = false; + + function getCallback(fn) { + return new java.lang.Runnable({ + run: Packages.org.mozilla.javascript.Context.call(fn) + }); + } + + global.setTimeout = function setTimeout(fn, delay) { + var timerId = timerCount++; + var callback = getCallback(fn); + timers[timerId] = timerPool.schedule(callback, delay, timerUnits); + return timerId; + }; + + global.clearTimeout = function clearTimeout(timerId) { + if (timers[timerId]) { + timerPool.remove(timers[timerId]); + delete timers[timerId]; + } + }; + + global.setInterval = function setInterval(fn, delay) { + var timerId = timerCount++; + var callback = getCallback(fn); + timers[timerId] = timerPool.scheduleAtFixedRate(callback, delay, delay, timerUnits); + return timerId; + }; + + global.clearInterval = global.clearTimeout; + + // adapted from https://github.com/alexgorbatchev/node-browser-builtins + // MIT license + global.setImmediate = (function() { + function drain() { + var key; + + var keys = Object.keys(queue); + + queueActive = false; + + for (var i = 0, l = keys.length; i < l; i++) { + key = keys[i]; + var fn = queue[key]; + delete queue[key]; + fn(); + } + } + + return function setImmediate(fn) { + var timerId = timerCount++; + queue[timerId] = fn; + + if (!queueActive) { + queueActive = true; + global.setTimeout(drain, 0); + } + + return timerId; + }; + })(); + + global.clearImmediate = function clearImmediate(id) { + delete queue[id]; + }; +})(); + +/** + * Emulate Node.js console functions. + * @see http://nodejs.org/api/stdio.html + */ +global.console = (function() { + function println(stream, args) { + java.lang.System[stream].println( require('util').format.apply(this, args) ); + } + + return { + error: function error() { + println('err', arguments); + }, + info: function info() { + println('out', arguments); + }, + log: function log() { + println('out', arguments); + }, + trace: function trace(label) { + // this puts some extra junk at the top of the stack trace, but it's close enough + var e = new java.lang.Exception(label || 'Trace'); + e.printStackTrace(); + }, + warn: function warn() { + println('err', arguments); + } + }; +})(); + +/** + * Emulate Node.js process functions. + * @see http://nodejs.org/api/process.html + */ +global.process = { + // not quite right, but close enough + argv: ['java', env.dirname + '/jsdoc.js'] + .concat( Array.prototype.slice.call(arguments, 0) ), + // this depends on a hack in our version of Rhino + cwd: function cwd() { + var f = new java.io.File( java.lang.System.getProperty('user.dir') ); + return String( f.getAbsolutePath() ); + }, + env: (function() { + var result = {}; + + var env = java.lang.System.getenv(); + var keys = env.keySet().toArray(); + var key; + for (var i = 0, l = keys.length; i < l; i++) { + key = keys[i]; + result[key + ''] = env.get(key) + ''; + } + + return result; + })(), + exit: function exit(n) { + n = n || 0; + java.lang.System.exit(n); + }, + nextTick: function nextTick(callback) { + setTimeout(callback, 0); + }, + stderr: { + // Java can't reliably find the terminal width across platforms, so we hard-code a + // reasonable value + columns: 80, + write: function write(str) { + java.lang.System.err.print(str); + } + }, + stdout: { + // Java can't reliably find the terminal width across platforms, so we hard-code a + // reasonable value + columns: 80, + write: function write(str) { + java.lang.System.out.print(str); + } + } +}; + +/** + * Emulate other Node.js globals. + * @see http://nodejs.org/docs/latest/api/globals.html + */ +Object.defineProperties(global, { + '__dirname': { + get: function() { + return global.process.cwd(); + }, + enumerable: true + } +}); diff --git a/third_party/jsdoc/rhino/util.js b/third_party/jsdoc/rhino/util.js new file mode 100644 index 0000000000..3dc3311353 --- /dev/null +++ b/third_party/jsdoc/rhino/util.js @@ -0,0 +1,532 @@ +/** + * Adapted version of Node.js' `util` module. + * @module util + * @see http://nodejs.org/api/util.html + * @see https://github.com/joyent/node/blob/85090734/lib/util.js + * @license MIT + */ + +function hasOwnProp(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +// placate JSHint +var stylizeNoColor, stylizeWithColor, formatValue, formatPrimitive; + +/** + * Echoes the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) { + ctx.depth = arguments[2]; + } + if (arguments.length >= 4) { + ctx.colors = arguments[3]; + } + if (typeof opts === 'boolean') { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (typeof ctx.showHidden === 'undefined') { + ctx.showHidden = false; + } + if (typeof ctx.depth === 'undefined') { + ctx.depth = 2; + } + if (typeof ctx.colors === 'undefined') { + ctx.colors = false; + } + if (typeof ctx.customInspect === 'undefined') { + ctx.customInspect = true; + } + if (ctx.colors) { + ctx.stylize = stylizeWithColor; + } + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + +stylizeWithColor = function(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +}; + +stylizeNoColor = function(str, styleType) { + return str; +}; + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + var i, len; + + if (typeof f !== 'string') { + var objects = []; + for (i = 0, len = arguments.length; i < len; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + i = 1; + var args = arguments; + len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') { + return '%'; + } + if (i >= len) { + return x; + } + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': return require('jsdoc/util/dumper').dump(args[i++]); + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (x === null || typeof x !== 'object') { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + +exports.print = function() { + var args = Array.prototype.slice.call(arguments, 0); + for (var i = 0, len = args.length; i < len; ++i) { + process.stdout.write(String(args[i])); + } +}; + +exports.puts = function() { + var args = Array.prototype.slice.call(arguments, 0); + for (var i = 0, len = args.length; i < len; ++i) { + process.stdout.write(args[i] + '\n'); + } +}; + +exports.debug = function(x) { + process.stderr.write('DEBUG: ' + x + '\n'); +}; + +var error = exports.error = function(x) { + var args = Array.prototype.slice.call(arguments, 0); + for (var i = 0, len = args.length; i < len; ++i) { + process.stderr.write(args[i] + '\n'); + } +}; + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProp(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (recurseTimes === null) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (typeof name === 'undefined') { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProp(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) { + numLinesEst++; + } + return prev + cur.length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar) || + (typeof ar === 'object' && objectToString(ar) === '[object Array]'); +} +exports.isArray = isArray; + +function isRegExp(re) { + return typeof re === 'object' && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isDate(d) { + return typeof d === 'object' && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return typeof e === 'object' && objectToString(e) === '[object Error]'; +} +exports.isError = isError; + +formatValue = function(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && value && typeof value.inspect === 'function' && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + return String(value.inspect(recurseTimes)); + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (typeof value === 'function') { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (typeof value === 'function') { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length === 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +}; + +formatPrimitive = function(ctx, value) { + switch (typeof value) { + case 'undefined': + return ctx.stylize('undefined', 'undefined'); + + case 'string': + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + + case 'number': + return ctx.stylize('' + value, 'number'); + + case 'boolean': + return ctx.stylize('' + value, 'boolean'); + } + // For some reason typeof null is "object", so special case here. + if (value === null) { + return ctx.stylize('null', 'null'); + } +}; + +exports.p = exports.deprecate(function() { + var args = Array.prototype.slice.call(arguments, 0); + for (var i = 0, len = args.length; i < len; ++i) { + error(exports.inspect(args[i])); + } +}, 'util.p: Use console.error() instead.'); + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + +exports.log = function(msg) { + exports.puts(timestamp() + ' - ' + msg.toString()); +}; + +exports.exec = function() { + throw new Error('util.exec() is not implemented on Rhino (and was deprecated in Node.js 0.2)'); +}; + +exports.pump = function() { + throw new Error('util.pump() is not implemented on Rhino (and was deprecated in Node.js 0.8'); +}; + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = function(ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); +}; + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || typeof add !== 'object') { + return origin; + } + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; diff --git a/third_party/jsdoc/templates/README.md b/third_party/jsdoc/templates/README.md new file mode 100644 index 0000000000..7424e74142 --- /dev/null +++ b/third_party/jsdoc/templates/README.md @@ -0,0 +1,27 @@ +To create or use your own template: + +1. Create a folder with the same name as your template (for example, `mycooltemplate`). +2. Within the template folder, create a file named `publish.js`. This file must be a CommonJS module that exports a method named `publish`. + +For example: + +````javascript +/** @module publish */ + +/** + * Generate documentation output. + * + * @param {TAFFY} data - A TaffyDB collection representing + * all the symbols documented in your code. + * @param {object} opts - An object with options information. + */ +exports.publish = function(data, opts) { + // do stuff here to generate your output files +}; +```` + +To invoke JSDoc 3 with your own template, use the `-t` command line option, and specify the path to your template folder: + +```` +./jsdoc mycode.js -t /path/to/mycooltemplate +```` diff --git a/third_party/jsdoc/templates/default/README.md b/third_party/jsdoc/templates/default/README.md new file mode 100644 index 0000000000..a7bd96bfd5 --- /dev/null +++ b/third_party/jsdoc/templates/default/README.md @@ -0,0 +1 @@ +The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://documentcloud.github.com/underscore/#template). diff --git a/third_party/jsdoc/templates/default/publish.js b/third_party/jsdoc/templates/default/publish.js new file mode 100644 index 0000000000..28028d6aeb --- /dev/null +++ b/third_party/jsdoc/templates/default/publish.js @@ -0,0 +1,697 @@ +/*global env: true */ +'use strict'; + +var doop = require('jsdoc/util/doop'); +var fs = require('jsdoc/fs'); +var helper = require('jsdoc/util/templateHelper'); +var logger = require('jsdoc/util/logger'); +var path = require('jsdoc/path'); +var taffy = require('taffydb').taffy; +var template = require('jsdoc/template'); +var util = require('util'); + +var htmlsafe = helper.htmlsafe; +var linkto = helper.linkto; +var resolveAuthorLinks = helper.resolveAuthorLinks; +var scopeToPunc = helper.scopeToPunc; +var hasOwnProp = Object.prototype.hasOwnProperty; + +var data; +var view; + +var outdir = path.normalize(env.opts.destination); + +function find(spec) { + return helper.find(data, spec); +} + +function tutoriallink(tutorial) { + return helper.toTutorial(tutorial, null, { tag: 'em', classname: 'disabled', prefix: 'Tutorial: ' }); +} + +function getAncestorLinks(doclet) { + return helper.getAncestorLinks(data, doclet); +} + +function hashToLink(doclet, hash) { + if ( !/^(#.+)/.test(hash) ) { return hash; } + + var url = helper.createLink(doclet); + + url = url.replace(/(#.+|$)/, hash); + return '' + hash + ''; +} + +function needsSignature(doclet) { + var needsSig = false; + + // function and class definitions always get a signature + if (doclet.kind === 'function' || doclet.kind === 'class') { + needsSig = true; + } + // typedefs that contain functions get a signature, too + else if (doclet.kind === 'typedef' && doclet.type && doclet.type.names && + doclet.type.names.length) { + for (var i = 0, l = doclet.type.names.length; i < l; i++) { + if (doclet.type.names[i].toLowerCase() === 'function') { + needsSig = true; + break; + } + } + } + + return needsSig; +} + +function getSignatureAttributes(item) { + var attributes = []; + + if (item.optional) { + attributes.push('opt'); + } + + if (item.nullable === true) { + attributes.push('nullable'); + } + else if (item.nullable === false) { + attributes.push('non-null'); + } + + return attributes; +} + +function updateItemName(item) { + var attributes = getSignatureAttributes(item); + var itemName = item.name || ''; + + if (item.variable) { + itemName = '…' + itemName; + } + + if (attributes && attributes.length) { + itemName = util.format( '%s%s', itemName, + attributes.join(', ') ); + } + + return itemName; +} + +function addParamAttributes(params) { + return params.filter(function(param) { + return param.name && param.name.indexOf('.') === -1; + }).map(updateItemName); +} + +function buildItemTypeStrings(item) { + var types = []; + + if (item && item.type && item.type.names) { + item.type.names.forEach(function(name) { + types.push( linkto(name, htmlsafe(name)) ); + }); + } + + return types; +} + +function buildAttribsString(attribs) { + var attribsString = ''; + + if (attribs && attribs.length) { + attribsString = htmlsafe( util.format('(%s) ', attribs.join(', ')) ); + } + + return attribsString; +} + +function addNonParamAttributes(items) { + var types = []; + + items.forEach(function(item) { + types = types.concat( buildItemTypeStrings(item) ); + }); + + return types; +} + +function addSignatureParams(f) { + var params = f.params ? addParamAttributes(f.params) : []; + + f.signature = util.format( '%s(%s)', (f.signature || ''), params.join(', ') ); +} + +function addSignatureReturns(f) { + var attribs = []; + var attribsString = ''; + var returnTypes = []; + var returnTypesString = ''; + + // jam all the return-type attributes into an array. this could create odd results (for example, + // if there are both nullable and non-nullable return types), but let's assume that most people + // who use multiple @return tags aren't using Closure Compiler type annotations, and vice-versa. + if (f.returns) { + f.returns.forEach(function(item) { + helper.getAttribs(item).forEach(function(attrib) { + if (attribs.indexOf(attrib) === -1) { + attribs.push(attrib); + } + }); + }); + + attribsString = buildAttribsString(attribs); + } + + if (f.returns) { + returnTypes = addNonParamAttributes(f.returns); + } + if (returnTypes.length) { + returnTypesString = util.format( ' → %s{%s}', attribsString, returnTypes.join('|') ); + } + + f.signature = '' + (f.signature || '') + '' + + '' + returnTypesString + ''; +} + +function addSignatureTypes(f) { + var types = f.type ? buildItemTypeStrings(f) : []; + + f.signature = (f.signature || '') + '' + + (types.length ? ' :' + types.join('|') : '') + ''; +} + +function addAttribs(f) { + var attribs = helper.getAttribs(f); + var attribsString = buildAttribsString(attribs); + + f.attribs = util.format('%s', attribsString); +} + +function shortenPaths(files, commonPrefix) { + Object.keys(files).forEach(function(file) { + files[file].shortened = files[file].resolved.replace(commonPrefix, '') + // always use forward slashes + .replace(/\\/g, '/'); + }); + + return files; +} + +function getPathFromDoclet(doclet) { + if (!doclet.meta) { + return null; + } + + return doclet.meta.path && doclet.meta.path !== 'null' ? + path.join(doclet.meta.path, doclet.meta.filename) : + doclet.meta.filename; +} + +function generate(title, docs, filename, resolveLinks) { + resolveLinks = resolveLinks === false ? false : true; + + var docData = { + title: title, + docs: docs + }; + + var outpath = path.join(outdir, filename), + html = view.render('container.tmpl', docData); + + if (resolveLinks) { + html = helper.resolveLinks(html); // turn {@link foo} into foo + } + + fs.writeFileSync(outpath, html, 'utf8'); +} + +function generateSourceFiles(sourceFiles, encoding) { + encoding = encoding || 'utf8'; + Object.keys(sourceFiles).forEach(function(file) { + var source; + // links are keyed to the shortened path in each doclet's `meta.shortpath` property + var sourceOutfile = helper.getUniqueFilename(sourceFiles[file].shortened); + helper.registerLink(sourceFiles[file].shortened, sourceOutfile); + + try { + source = { + kind: 'source', + code: helper.htmlsafe( fs.readFileSync(sourceFiles[file].resolved, encoding) ) + }; + } + catch(e) { + logger.error('Error while generating source file %s: %s', file, e.message); + } + + generate('Source: ' + sourceFiles[file].shortened, [source], sourceOutfile, + false); + }); +} + +/** + * Look for classes or functions with the same name as modules (which indicates that the module + * exports only that class or function), then attach the classes or functions to the `module` + * property of the appropriate module doclets. The name of each class or function is also updated + * for display purposes. This function mutates the original arrays. + * + * @private + * @param {Array.} doclets - The array of classes and functions to + * check. + * @param {Array.} modules - The array of module doclets to search. + */ +function attachModuleSymbols(doclets, modules) { + var symbols = {}; + + // build a lookup table + doclets.forEach(function(symbol) { + symbols[symbol.longname] = symbols[symbol.longname] || []; + symbols[symbol.longname].push(symbol); + }); + + return modules.map(function(module) { + if (symbols[module.longname]) { + module.modules = symbols[module.longname].map(function(symbol) { + symbol = doop(symbol); + + if (symbol.kind === 'class' || symbol.kind === 'function') { + symbol.name = symbol.name.replace('module:', '(require("') + '"))'; + } + + return symbol; + }); + } + }); +} + +/** + * Create the navigation sidebar. + * @param {object} members The members that will be used to create the sidebar. + * @param {array} members.classes + * @param {array} members.externals + * @param {array} members.globals + * @param {array} members.mixins + * @param {array} members.modules + * @param {array} members.namespaces + * @param {array} members.tutorials + * @param {array} members.events + * @param {array} members.interfaces + * @return {string} The HTML for the navigation sidebar. + */ +function buildNav(members) { + var nav = '

      Home

      ', + seen = {}, + hasClassList = false, + classNav = '', + globalNav = ''; + + if (members.tutorials.length) { + nav += '

      Tutorials

        '; + members.tutorials.forEach(function(t) { + nav += '
      • ' + tutoriallink(t.name) + '
      • '; + }); + + nav += '
      '; + } + + if (members.modules.length) { + nav += '

      Modules

        '; + members.modules.forEach(function(m) { + if ( !hasOwnProp.call(seen, m.longname) ) { + nav += '
      • ' + linkto(m.longname, m.longname) + '
      • '; + } + seen[m.longname] = true; + }); + + nav += '
      '; + } + + if (members.externals.length) { + nav += '

      Externals

        '; + members.externals.forEach(function(e) { + if ( !hasOwnProp.call(seen, e.longname) ) { + nav += '
      • ' + linkto( e.longname, e.name.replace(/(^"|"$)/g, '') ) + '
      • '; + } + seen[e.longname] = true; + }); + + nav += '
      '; + } + + if (members.namespaces.length) { + nav += '

      Namespaces

        '; + members.namespaces.forEach(function(n) { + if ( !hasOwnProp.call(seen, n.longname) ) { + nav += '
      • ' + linkto(n.longname, n.longname) + '
      • '; + } + seen[n.longname] = true; + }); + + nav += '
      '; + } + + if (members.classes.length) { + members.classes.forEach(function(c) { + if ( !hasOwnProp.call(seen, c.longname) ) { + var showLevel = (c.visibility ? '0' : '1'); + var classNames = 'visibility-' + (c.visibility || '') + + ' show' + showLevel; + classNav += '
    1. ' + linkto(c.longname, c.longname) + '
    2. '; + } + seen[c.longname] = true; + }); + + if (classNav !== '') { + nav += '

      Classes

        '; + nav += classNav; + nav += '
      '; + } + } + + if (members.mixins.length) { + nav += '

      Mixins

        '; + members.mixins.forEach(function(m) { + if ( !hasOwnProp.call(seen, m.longname) ) { + nav += '
      • ' + linkto(m.longname, m.longname) + '
      • '; + } + seen[m.longname] = true; + }); + + nav += '
      '; + } + + if (members.interfaces.length) { + nav += '

      Interfaces

        '; + members.interfaces.forEach(function(i) { + var showLevel = (i.visibility ? '0' : '1'); + var classNames = 'visibility-' + (i.visibility || '') + + ' show' + showLevel; + nav += '
      • ' + linkto(i.longname, i.longname) + '
      • '; + }); + nav += '
      '; + } + + if (members.events.length) { + nav += '

      Events

        '; + members.events.forEach(function(e) { + var showLevel = (e.visibility ? '0' : '1'); + var classNames = 'visibility-' + (e.visibility || '') + + ' show' + showLevel; + if ( !hasOwnProp.call(seen, e.longname) ) { + nav += '
      • ' + linkto(e.longname, e.longname) + '
      • '; + } + seen[e.longname] = true; + }); + + nav += '
      '; + } + + if (members.globals.length) { + members.globals.forEach(function(g) { + if ( g.kind !== 'typedef' && !hasOwnProp.call(seen, g.longname) ) { + globalNav += '
    3. ' + linkto(g.longname, g.longname) + '
    4. '; + } + seen[g.longname] = true; + }); + + if (!globalNav) { + // turn the heading into a link so you can actually get to the global page + nav += '

      ' + linkto('global', 'Global') + '

      '; + } + else { + nav += '

      Global

        ' + globalNav + '
      '; + } + } + + return nav; +} + +/** + @param {TAFFY} taffyData See . + @param {object} opts + @param {Tutorial} tutorials + */ +exports.publish = function(taffyData, opts, tutorials) { + data = taffyData; + + var conf = env.conf.templates || {}; + conf['default'] = conf['default'] || {}; + + var templatePath = path.normalize(opts.template); + view = new template.Template( path.join(templatePath, 'tmpl') ); + + // claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness + // doesn't try to hand them out later + var indexUrl = helper.getUniqueFilename('index'); + // don't call registerLink() on this one! 'index' is also a valid longname + + var globalUrl = helper.getUniqueFilename('global'); + helper.registerLink('global', globalUrl); + + // set up templating + view.layout = conf['default'].layoutFile ? + path.getResourcePath(path.dirname(conf['default'].layoutFile), + path.basename(conf['default'].layoutFile) ) : + 'layout.tmpl'; + + // set up tutorials for helper + helper.setTutorials(tutorials); + + data = helper.prune(data); + data.sort('longname, version, since'); + helper.addEventListeners(data); + + var sourceFiles = {}; + var sourceFilePaths = []; + data().each(function(doclet) { + doclet.attribs = ''; + + if (doclet.examples) { + doclet.examples = doclet.examples.map(function(example) { + var caption, code; + + if (example.match(/^\s*([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) { + caption = RegExp.$1; + code = RegExp.$3; + } + + return { + caption: caption || '', + code: code || example + }; + }); + } + if (doclet.see) { + doclet.see.forEach(function(seeItem, i) { + doclet.see[i] = hashToLink(doclet, seeItem); + }); + } + + // build a list of source files + var sourcePath; + if (doclet.meta) { + sourcePath = getPathFromDoclet(doclet); + sourceFiles[sourcePath] = { + resolved: sourcePath, + shortened: null + }; + if (sourceFilePaths.indexOf(sourcePath) === -1) { + sourceFilePaths.push(sourcePath); + } + } + }); + + // update outdir if necessary, then create outdir + var packageInfo = ( find({kind: 'package'}) || [] ) [0]; + if (packageInfo && packageInfo.name) { + outdir = path.join( outdir, packageInfo.name, (packageInfo.version || '') ); + } + fs.mkPath(outdir); + + // copy the template's static files to outdir + var fromDir = path.join(templatePath, 'static'); + var staticFiles = fs.ls(fromDir, 3); + + staticFiles.forEach(function(fileName) { + var toDir = fs.toDir( fileName.replace(fromDir, outdir) ); + fs.mkPath(toDir); + fs.copyFileSync(fileName, toDir); + }); + + // copy user-specified static files to outdir + var staticFilePaths; + var staticFileFilter; + var staticFileScanner; + if (conf['default'].staticFiles) { + // The canonical property name is `include`. We accept `paths` for backwards compatibility + // with a bug in JSDoc 3.2.x. + staticFilePaths = conf['default'].staticFiles.include || + conf['default'].staticFiles.paths || + []; + staticFileFilter = new (require('jsdoc/src/filter')).Filter(conf['default'].staticFiles); + staticFileScanner = new (require('jsdoc/src/scanner')).Scanner(); + + staticFilePaths.forEach(function(filePath) { + var extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter); + + extraStaticFiles.forEach(function(fileName) { + var sourcePath = fs.toDir(filePath); + var toDir = fs.toDir( fileName.replace(sourcePath, outdir) ); + fs.mkPath(toDir); + fs.copyFileSync(fileName, toDir); + }); + }); + } + + if (sourceFilePaths.length) { + sourceFiles = shortenPaths( sourceFiles, path.commonPrefix(sourceFilePaths) ); + } + data().each(function(doclet) { + var url = helper.createLink(doclet); + helper.registerLink(doclet.longname, url); + + // add a shortened version of the full path + var docletPath; + if (doclet.meta) { + docletPath = getPathFromDoclet(doclet); + docletPath = sourceFiles[docletPath].shortened; + if (docletPath) { + doclet.meta.shortpath = docletPath; + } + } + }); + + data().each(function(doclet) { + var url = helper.longnameToUrl[doclet.longname]; + + if (url.indexOf('#') > -1) { + doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop(); + } + else { + doclet.id = doclet.name; + } + + if ( needsSignature(doclet) ) { + addSignatureParams(doclet); + addSignatureReturns(doclet); + addAttribs(doclet); + } + }); + + // do this after the urls have all been generated + data().each(function(doclet) { + doclet.ancestors = getAncestorLinks(doclet); + + if (doclet.kind === 'member') { + addSignatureTypes(doclet); + addAttribs(doclet); + } + + if (doclet.kind === 'constant') { + addSignatureTypes(doclet); + addAttribs(doclet); + doclet.kind = 'member'; + } + }); + + var members = helper.getMembers(data); + members.tutorials = tutorials.children; + + // output pretty-printed source files by default + var outputSourceFiles = conf['default'] && conf['default'].outputSourceFiles !== false ? true : + false; + + // add template helpers + view.find = find; + view.linkto = linkto; + view.resolveAuthorLinks = resolveAuthorLinks; + view.tutoriallink = tutoriallink; + view.htmlsafe = htmlsafe; + view.outputSourceFiles = outputSourceFiles; + + // once for all + view.nav = buildNav(members); + attachModuleSymbols( find({ longname: {left: 'module:'} }), members.modules ); + + // generate the pretty-printed source files first so other pages can link to them + if (outputSourceFiles) { + generateSourceFiles(sourceFiles, opts.encoding); + } + + if (members.globals.length) { generate('Global', [{kind: 'globalobj'}], globalUrl); } + + // index page displays information from package.json and lists files + var files = find({kind: 'file'}), + packages = find({kind: 'package'}); + + generate('Home', + packages.concat( + [{kind: 'mainpage', readme: opts.readme, longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page'}] + ), + indexUrl); + + // set up the lists that we'll use to generate pages + var classes = taffy(members.classes); + var modules = taffy(members.modules); + var namespaces = taffy(members.namespaces); + var mixins = taffy(members.mixins); + var externals = taffy(members.externals); + var interfaces = taffy(members.interfaces); + + Object.keys(helper.longnameToUrl).forEach(function(longname) { + var myClasses = helper.find(classes, {longname: longname}); + if (myClasses.length) { + generate('Class: ' + myClasses[0].longname, myClasses, helper.longnameToUrl[longname]); + } + + var myModules = helper.find(modules, {longname: longname}); + if (myModules.length) { + generate('Module: ' + myModules[0].longname, myModules, helper.longnameToUrl[longname]); + } + + var myNamespaces = helper.find(namespaces, {longname: longname}); + if (myNamespaces.length) { + generate('Namespace: ' + myNamespaces[0].longname, myNamespaces, helper.longnameToUrl[longname]); + } + + var myMixins = helper.find(mixins, {longname: longname}); + if (myMixins.length) { + generate('Mixin: ' + myMixins[0].longname, myMixins, helper.longnameToUrl[longname]); + } + + var myExternals = helper.find(externals, {longname: longname}); + if (myExternals.length) { + generate('External: ' + myExternals[0].longname, myExternals, helper.longnameToUrl[longname]); + } + + var myInterfaces = helper.find(interfaces, {longname: longname}); + if (myInterfaces.length) { + generate('Interface: ' + myInterfaces[0].longname, myInterfaces, helper.longnameToUrl[longname]); + } + }); + + // TODO: move the tutorial functions to templateHelper.js + function generateTutorial(title, tutorial, filename) { + var tutorialData = { + title: title, + header: tutorial.title, + content: tutorial.parse(), + children: tutorial.children + }; + + var tutorialPath = path.join(outdir, filename), + html = view.render('tutorial.tmpl', tutorialData); + + // yes, you can use {@link} in tutorials too! + html = helper.resolveLinks(html); // turn {@link foo} into foo + + fs.writeFileSync(tutorialPath, html, 'utf8'); + } + + // tutorials can have only one parent so there is no risk for loops + function saveChildren(node) { + node.children.forEach(function(child) { + generateTutorial('Tutorial: ' + child.title, child, helper.tutorialToUrl(child.name)); + saveChildren(child); + }); + } + saveChildren(tutorials); +}; diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.eot b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..5d20d916338a5890a033952e2e07ba7380f5a7d3 GIT binary patch literal 19544 zcmZsBRZtvE7wqD@i!HFY1b24`kj35I-CYBL;O-Dy7Y*)i!Ciy9OMu`K2ubeuzujAP z&(u^;b@!=xJ5w`f^ppUAR7C&)@xOr#_z%&6s7NTth=|AtfF4A^f1HxqH6mcokP-l6 z{7?U16e0j9|A(M9nJ@pt|2J>}ssJ~DHNfRRlP19YKlJ?100c+?Tmeo1tN+$S0Gx`?s1CFN7eMUDk_WsHBTfGwNlSoSO;j5Y2+U^b7c?fa0Y^S_)w3$t3v&# z{~&TTlM zt?Lt*SHuem8SrEC@7zaU<-qSuQW-60?>}hkJOK8c63ZzHHJk8oZ^lJI@4J}J-UW#v z``};wWo2yOy5j-i>^G*aArwT)Vs*SHt6!%SuA2O<_J=(LpNDHvxaKhxXh#=~9&&Ym z(3h3}YEDIOIJiClxPx>szhB_|HF$A3M_(n`EZ{OfeopPhu5a!iV`!-MGz%=Z=6_KhH^># zc0eZ(i}Fam9zt=@^nI}P1TS0OA-NjllZr>npsHhjY^(twm8{D3gzMI3wz*wpNrf_@ z*a?QZ6Zge*92n!$$Tj4PYIXRs9DZwFAPAN5P1wKY;CH_ec^<;uNX&@i#260}94dT^ zt<=Np#*{u2jSWT-*MlH7@a5$;Wa{AyjRD3+-J*f z6&WMZwq>z5b$RG4+v&bc?4gk|zg$9}VoVrJ;Y}$~Y0v{16FHY4IxFkRaW%N-2|Ez= z_qUxB0-(|bh+%0a;3Ta?`XQ4zkOvWpkM=>=!Ky%oa>mUWp zD$PDk^y_cvj^9Y{zV+u>JQ0cidbEQJqsLJULLuYmMt{g`2A(e4Jx<)36FnSe9e>oE zxzOk@q#7!!I{#p>ubQPjK^X81+Uk6pgDIe@S%bvBM{r0gP<&p2HpJ{Dw?tBkQcYmf z)epzhSW{ofDYZ3@A~&Vc)p5lIB(G1Z(li%c#2C<(XdagusQ++&BM8?0j@5^olZU_% z=m7z5F=9%B3}Q*r?Z~~~QTicWnWMz%)ac2D(&K?a;ZmiIghUkmX^}3?DlhKXR*uytr?z?QgE=}; zOa!lz=(^W8!o_2yeZanFSf4l&pD~$9%qw3~q-JTwS{q=h8Z&*)#=pau`crUY8{{Xe zbG(-h4xKWAgfOI21Y+*SHvt*(jZOiBe~sW$i5tg5gJmQj!DRql3=`3nCTPe<85)Wv zDNcRZs>LpDMFIfBrMTi`Q=*uwc+(sNa(GH4V2;xllPE^eRd>%>?~<(DMkaHf*T4XQ z+U1nL|7aS>kOnGROHo}SZGERinov(cPMN+*C&qAc;KcZoErZ@htW9oyc8;-|!FrJq zWzc0=Z%7ImftY2Q1-AIz!2659@GzAk9Jg;F=}^jfq7YR0o}=6_?iu=(#FW0B7rvDm zn1c)hm^PqMaV$*U;T1f3Mq+R(f~gewI%O_(HCtJrr?aR}fm z^A5Nj&5bCD$&Zf4xcV+~Qxl;W7z!#yKm?fy{LsOD_z)&hz#E*1kcMLh{L3Pv46?s4 zdU|hZ!MYD2kv5!^pxI+?dVB71MvQ>)UiEJ@W37&wY1Frz(*jm6 zk|~Vew*ICqWr+{TfI1k%y(OI(S@~Ybjw34_tN3CkER8Wz-_7e@GSF5bBv56k)#w>4 zBJ&uc1o(x~|0<=JLj1+p9|#)e_9d6LEKN9K6?7Zwu+&cA2(Tf`G1&JnTKK;q|8>j2ztI4Bd}xKh$Ra!yFi$u>QQy2jhQuk%;V z8agmZLNW??oDq5&mtPbcc$hRlu<_ThWmGOqdt~T%1iy#AFDP1tgms>gw;8T?hb`>- zpN@N7#D#?I|Gg50kkVY{;9rb?KBbHtYoEAIxuhIL7e2Bsk5YeGX)!~AZ%NT z@&|>qOb$uDe$|(76~Ihc3bzsC+AjB$L*`YX<|&XOMtpbN4l0ut6#XN*X#vhU z+W6Gx3F=~fCf?=t_d~;Bdeqnz%~sZ;ekDKz4XwxFBddSrhzj3j1Jx`IIUD7y7M8-- z-9-|ccrC_9J}BI}K~etcC?%Lm7$E;WF#P(W9Zi2^2NJL14lA!Nnqs0@Ne^Y`t~emz zB2hvC!<7eO00Y@WTsb!3As(&f{2(ZZ5D=lqP_1J+;AFv#Xh&%UU^zhl(yskwZrrh+ z1Y!^Hp|{%zjqwuA`_$m);XzPJsr7e&oK+bW75~_?>-XkyGpurn*Ov-WXDxIF!;6a; zY-Rzp;&@DcWDuKI8W;90BZ=z^)~PWz?xdLaj?*X-U(m)W#`J;5_wz@sJtx``4)rL# zL&rY@x9GxIjC9gy0kve>w+5W);Q6CV7Fe>C&Xpu}y9Vz@x$_sEZSnSMr{M^gjfYei z4Lb-Z)j=!#Gdf15PpC8HP@nD~7jq9rpMR!R$FWbTnm&Qw| zBL@G`s*^SEq1DA>ns}cS_A&ZUva;SsX0Hy-uYli3k!hLB%m zorJ;k*m^ztGZh7lwDzBDWXH%&iJy8N%c}9$Kil z;I*C{Av2(ZOxfmo$P>uLtJg3|rJM=4da4&75^UCP4-RVvUM)jo-EI(FpHS*$V2U_@ zr`a0Xa*AQj!lE&v6M^TzPTem1DF8pYve zy>^orHFfarN*2R6;&Fl%pvuE%oo3g+v6L!wT+_d;>E7j8ep)$;7iBcIV#$v7gNOS; z!!V4jg30}|4l4jhf=N++7>kqop0bhFx0qJGFqto$2hsOAgXajjDV$l-1vOtt9z7pD z%UR9KT1HC2Xmv%LNiBW**YOQjYJZ**N4u*X|5;J1qjZ@M+O`0X*B#EL?%oV z=<4VYw>B%iK*J{E7=*En`lt!SIyyQocG0XUYRk?Sz#;>+MZmyHD}tFtVPj#OXgl432N05e@4`#Pra z7?)%r5rWZ3n@CmbgiK6azZ~#lSx9lkC(-B%dM?liI&R@-{N??}2=t;5D=kOdM{!Ys z;E(^B(6?fpxblMb-ePZ^Ow@4aaA*Ym+eU-B*OfnZj0KGOJhNU&sb;FwWe$wm=$AU+ zeIQHU7^-f8)Nrlyma2pcxs!K}!%1(11a1&DM&{SRI=zhLzqA-MW5g_rSOI!PeTCSB1V@ ze5`RMw(u1EoNxZf6c!%RlwjE+{w4agvwuZ!%)ZWe;m_>=FkC|uH+n9I5! zBObd>e}@6L>RXGvvNaHa7;_ymEU`+rJ7$n8uz$nuHC%YBB+nz}L9j^$A6#cwG!Fia zKgt)k+#A#80|9m(b!qE5iKFniV`82mQnwE=i46L{EE$C63p@ z1&V@Og*CSVFU^D_aAJp({4FeasEPR_ZU+MM*4+HagyvFnm8=*2aiWqG(kq^i6y9 zK9o~%mqLo^jdN0`4SDyMRQ+DizvAXDkH%SC1`{v-_^G*tU;#v3ZzUaPdQs|bqB}yi zFBYhuG}IG1{F?bu=BMR-nlmWhZ(jG}G6w^ejf+{OjANnCgJtiU7g8z$A!{$2Q60>_*AY^h^%3 zet=#D#2HqPia@kP1azEQ6PQ*BtH<5*9)o*`D7uNpNXqG_G@65yccncDNR&wvq8^T# zbQn<%?0SRg{$#fFGOA(3DqNG4=^UNn4WvpuT>E&R0QarW;0ld z$|U|uy2YYF`A`r<+ig8f_MUr)mh_MG3QLNODZrpY{AbgZ>)7C-Qu2~r9Ih)Ov+!Ia zuE#Y3aWo~S+;9aKW!Xcy{=XkxCeG%W`xvb6(Dm5E8z~!?a&*Yh*y77RvFe`kZcPfF z5z@rD$JQ&M#t(zX_-ya&iKs&BX~pSUkafVww)ym{?ig;xT{7ucGXy;6LXi2M*wJVW zhnO6L7JJ6TrRJf4oy+sFdw0$X?PmDUo4`R_;n_C4dS2~k%I4xEBMXN}cH?$9b_G5D zR4nV7LJMc?koICX{)5|5m=9>5{v#@_p58o-OeLsy6U6m5Rtc_7TYr|Ug)O#X-UGq@ zBvRTOiWMD$f+5Rfn#gFp!P>&0zaVyn|7`@7K;XDu{r z5#ymDq$&2BeA)XU2Qr$2+8S*NE0&9u2TvtBWA2I)ZhFPvUCbbzA|7qMzy9arvdZEP zzrIhYUFFJ3E_OGqe1(-MZs$YF{-tCA+c-=y_)w&z*bhY*8uETY*uRjts_e*Zm> z#X4q!T|V}5Rx<7LGq}QtCr;m4r$n8BtY3l=WqWOeq#82!twIBu)sWGLL^)3(&cjGM zUwfS&mh>T^!-F(kP_TI16N%k=A(^2bD)?9BH^g>TBRZ%+9*7-^f}R8UDofvwlsOr2 z#6(Gco__DIrTU8}>`=00_)gU5T8&haeZDXn86`otY)G&Vk(KLdt-#)_QkDl^$F-EA zfYe}zpa}86yJL#%gKaEj;&N2d|9AamL$8r5VM?$j!q^9ws4Q~j5fB^(X)xXpBPZpb zZQ zpO=8PS-{sKI;g}8ml2+lFmx<-I2PuOjDh%x;|M%1!PTw&^*n-eArC>mdGFPz!S&By z#=SiyQ$uF-(_D|80kf??b5#a5G;1~le8{Zv4&w&U3RqXZ9^h1>7DGPmfzjVy*m5!` zaD}I`Ow_{DE)twMGqD#tqf7LvO>`{gO=&1s6T7xE7B*om)eshq{JM*5u*L9a1aPpo z=+epa^`tIb%9Ew@A?QA3uJS$ZO75hy$I2sC@CIsiCUa%guB=h?l1+u;px_cgd3I^+ z9&WN@a8qCW#PAR80=!-D9X%rSoBLUX{%66>d?hDa`E`jjPw$uiq(&5bR(sVfMV8mGIBKX-)TfR_(3b9gX70B zNaSCKW_e}3Xypy7H`NccT{m~yeH-?F`qDIan#6ou5=``K5mra)aRGdhwUg*$Q~$d6 zD5FQRL0tn$q~tL}%nZEGj~cnGOJ89eW5t}> z@0A6;=QNnj_uUjxFXkL8SH%{PsavXCG>sX_-_wpOJx|IE=DUO&OQhb$n_H3rR0`BIukhCmxU^YjqQ`Q`RNf*DnAb0^=-uVUKg(fxVB1W7i3 zNXx*3IxRTVOhXspC7V|;(HpL4ju6c)+d2S$!a^3709WB84fUhL`{U13IEzpZgG%GOE>27OZH9Zx;8v10YJS_PuMP-SSy z@hb8;mB>V22sgWaE>r)ck|QLG8%qS#e&mh|a|Xv(&yWnXQTd4OgM)st6xkUhOpXmk zIe}ThDr(&LK>v>e;?ymsWQ2Js82J;(i&P7AX1+iKP*ufIY_zPy+_X%clOY$rG8K}3 zITj1C{lni?LHp=6TFfxJVJ#nNuby~c?_SbC>-q*c?5sIsTr&K|YtzAn)e^k%uXva@%|y7dICt9o$5nk($aa){E^) z%D(=0GY9d_&W-Q~yr1u|D4zoDkn*LBJ)7~@c%m}7SA~VbFzpI4^(@_jfLcc~gq7ZJ zi=pxzEzu0_Nhy@gIls@Y);UMB1OVHSwxm3&4U~{93qXW#v8)8;BjvXU1U{82xLl7N ze&kF|a}(a|UP3%rn~Kq;j30Gtw@^9NcMott3sv zS4~$V9oEy>lXPO*9$Qxwa!WCC4Wz>>p{kBJB-=BP@=-)Trv*vO9pe05&$S1lfPyGB zfb^eW)|RXG7z$2DdhGX3-!wPr826oG29$3&X$!0|jzTB`ii(E|0Zix`E&u*neyI9B zU5U1&I&fbpb}j>G0+ikqtK-~LlBn=ubci}C7*^kUez`*jPV5Ehzi?Z(&c#Y-X z&j1%Rmi_#T)|_vde52V!D51BdYuFVW2Xw4_HbMI>9q&ilzD)qt#*aOR^9;c9ufEq- zLNzyh8iO`BQCT*~rt>|GkO?gb(FA&uK(Kp7oQX~LLkDg{*XlwxmcU#Jb=EA}F$h-EvIyzO76 zjmLNnr&RR1XDGG7Z6+l&zc98A$pp)t<%#_Jgj`+LD5;WZ|2$Lksy0G?#24YMQX@Q% z8ahfr!cFn-Bd|3Yi3-u5CP8zJztxw^y0B8D@$YW%CnPmo_cocpe`fSZ8?H)plyFu4 z$W-Pz^PpyKH12~w33&kvo@GS}m_F5rfB8vBKk>kWSkr5gAC6WO^GH@jd7J!LRA1h8 z-PBMx>plM3hBZJfJKCgYAAoGu?|$XyeGMN>A&Zh&}7?JTI2?-MF1MTMivF#oKx z9#C-EDIlZ)_JsWLpqzC^+Uxb| zk2*~=5SW;gKG^aMy-)RTvShQ9e3#QonW+-5k-#GpeS7P}#OKASEJ{K0?LxQX3B5(s zCah5;$LH4{tR+{}@KuMa>$dUL9~xdv+j*$C7B4nsiX>KV)(5j7XM($`1K<}Tur5l> zn4y&dREx5rDQ0@ot6SKAv*C5&>c^DsumrXf1w`H3gaXH5jOMazHhIBdFrquOtHJIc zV>ubojQKtF4vXjyfx>+by#l%^_y|BR%8#;Fcv8L~2J2SfHZ+IccP2$4WaSUV9j=ny zXtD1AgvTn#>#(Ng=cSb2C(OQ7OU6#3hmC+-6*@(~YA(`O^w@~qk96WW#6fP6YeXW%#x>EBL>LX8mbVL*)cLcGYoWIxZ?T{nFH1I}u)u-elaKU^Y3T z%;Ft&iF|Yxg9E^E_h&u+81*x7LrCZ!edSV_0?lXEArHXMKb3nB?+v67oCLqLNjiPE zI|ZbfNEj$#VA5jhCKkO&wO=4_EAsJ5Z>*ANyds+#=u>L-ysutu!`&ro&Qf3>1X$H^ z;Z*?=4w#`xXATFp3lPv!ocA4{p9b(AS#TlT70PSlT1v)-dCOw-i*z<{y!am^=aT8e#k)=Um2u*1%^ zpu{A&EK!(#qWH$qqlN}LSs`4&&27+MRTLMkJf$<(RLq5f=H73q!- z36EksF&O3<+8Q-*lhG6#mxko5sGHPet|EKcC6+5074 zMNgbI$-rcOxp|OsEAsnHc=v^&SgFyjL-VLGHF^>oa~CN5r`nRm{jWmV6*xn`Z}rGB z_G#!x6}2Q@_F6~xhZ=pX3_U#0hC)d`A``H`E!`>x?#de8ld;Hrlb{6Zz z9Ml2%p-ctIF5+n^ek58Um*N)G+x6>E2fQIwZ~$bAISo3tY<6j(OoQcV{w8N7JpQR}h2|iw)$tMk0rdyZb=HD0IQD zj#pL~@lk~9GLmu61|JuYEsD&ST)*$)G-6fM%6@nGwd6H=4BKCwkdJLn4`(ab*tu{r z!tfQWvbTT_gb(AdYME3^nAc*E_l zQK+rDS?+S?u3-U~zm$!&AVy9^k9aDALo=S;Wl0F_?i(sZzllHnR}3PPY>yQ}b}a;s z*$7^43R8}sqSQ=-uX$5j_79}o#5UyO(SoC2j%-M%A9c$gEredV2iFcgq1%>@o(H9N zMAW0>EQ$$3H_a?1&j{DN{aeg)r_AGXe}?fz_TcKK&`+#zlX`ySK}+O>Vfj%8OSa~z#HMIXO}die4ICwC>%-QEDdxc(5s0Gy?x>! zBlW{zAn`tO-ff-FSGp+5cn`R;Thpd>Fl;|ss=$Pu4%{@9M%cO%Tmo01BD9Du{`Q%w z0EY8Zy?}VQ1jl_Odt>}aCY<*yI?Y=H`3#$)a{OV$#o4Kg8g*&7mttP3b7f+b&QV>? zDsrq&dM-V(+CK^a+7pl5wtaXKy2(e3Lzxnn{MtD%hVomjO;Wl zs#5qMGZ9;8xhLPEBcw1108zI~z0$#90(wuh1b?XKlHK*=A@h+6xwi~#)C%ozNGX-8 zS+m^d=Z5#Pg;t@H{4ArWqGSX`$^PIyy%BAK@yj2KV>YX!igE$_a1P`5h zp4Fb2;G66W5@n2tSn(}y@!8*x8hBEjd?ld!LD3=Mg?A3Y`N;;i>x1`oEn=HIGUVIGf`TofG?m4+W#Ej>yod>Q4Dowr}CW^=$M ztkLXFgXH4*xE|`jRij;ZaB>7r6BwPdDuv{HzGP*?rL_fQs}%P>M$q(O2Kgu{chae{ zBV(i`hMG6S+YuWvs^dDdvz59w*9_iR2M`_!XrGq48EleMtg!ll&)vKs4mLJyD@BoN z0|>oEz0bb^?P?l7=4@y77)5JZ;0II#KR^y->9T0E0Ot&#g!z zrfL{#lgA?m(H!Yad47GA94Rme#C$K=d9TX|J}*XK=CGn&lEWFjI#u@bsmtAgw(UCfg{I4{&8bNd)cdo)kdWz5mGV?wkDq|?y&-UHH z!Imsw#_ymHnlaZ3h?KSJjB+Av^uP%Y7?h&wf`7vfe};&-n0+`glRqxbn3~33Cc%K} zCjR-mgoT*t001+OCO z3w(H5c8WIm4Ne%3tHW&^%Qgb*Q-y{dp$f5}uxZcvr7^H(^Q}l5#0n`P|D%!Bov+29 z-bw47KR&9lcFr@Js&NaucP;?%&Mv3)4$}g7TY@$J;?oA(hz#)g0s`Okp5RQ2%|SvKgp>JMYD&_HTWV>pQy@M9$ru-)i>!v4XH{ zPp~I)d2F}5tf(z!59#CBIa0Obwkse?X9b~bxCSv?GQ$hv4@N&`XVD^*%!o4l8x<_a zA+k`RC`~r-p;t{WbJ0=}WhKRC6zg+^Wha`zXC`0ebzY5-)JWa;8uh2X`u`-j8yQ6v zOC3{vGZkLwIj|Ep_H>wZ?oeUIG_E{>IuPf+2<{TJGBO^nSW9!BBsW|NqBq2Sx}hY@ ztEyj!;@&O|I%E56EuqFKfpb(Ng|S zi6l~+SkYFpOD+uCJJ;It{a=)UlR*f-YZ{p%iI^yCmey>C9}vWdP-Y!>b26zo85;tY z8P`PLBoOhJRS9gVoeTQ3yZ=orJ0&8Mm+m7RYVJ+?D)PoD!@vv0Nw0>xoUeVRVY;Mv z9=ze0!9U#lZ^e9ivhuO)P#4$#H8tSoMnrtv9&7}r1M1r7kP)tZTPKBi<6NT9X>H6b zaQMA{nduha_d4f0EaKu|D6jzYW4&fPt~SvqEu)ujxmx|VyK@9&O^X;F3A=r6yeVu# zK&zj;MGq2tX})pC7pCF@hWc=*LA;;xGE7!`l^iFvu~%U4n!ea3eXPbrAeq%$+>#Yh z-IA0YhS&CLvwf!ls1+;OS*Q5&U2iuQaZ1cu-a6{=<`@3tyF5hLORT+nbnGxG z!>{As#j?;3Hu@=9{}n_Ml;iMU-9f$a9Vpj?9WEe16B{I(HRUSw)a)MziQ^~E*P}aI zHiM`i31(l$7HHU|XEUKx#5*b#?OR*OOe#^|?Rn)Iv3v2SJw_`rXSrjrwEMG5Ri?Qr z#f7lj`N9zNLZ_mLZ3U02yn%OWuH*=){kKl4S|GZ zJ5YIlRAAF2V7?`#Q(*iIuPnx%Aw4zfOoQ2^kmpGE51X~7-w`}5l?*%1ElC;I?GMdG zV*9k%%jl@zG%`WX@a%uU%vR&PKYP3VN@xa;^BOcNUpIUc{wr;Y*g^x&I)zx=ku$Q z(-j)=rQG-xTut9%k<5xv!K^$53m>Mv$ow7T{edMR-%pxWcw<;O+k^{DUhpc@E@{@F z#)cVx8bYfH3?jM^H#QyqT(Q?eW(wvUUuzJiqn|&STP#&(kpcwO!02v*40y^OMKt#h zv)SX2{ifd8Vs%)WI%6%j{<1m}@vIS(tum)C$gQP&`Fu#5g23PN(AQ6$nqQZ9v5s~= z`bGJ_E;3n_lPm@hE;(?jwl={A7z(k)R8cffljocpxYIPMb$>+@30)$fBYEwUjw#b9 z3XV^xp_At9dzbTpEL<+QG%1U%-%l94EG8;knb@F-TUbn>T1QzNl7bb@CPAuP!4@0? zj*!LVHBqqewA$pIe4m-~gDYY-dg_k1*OQtLI+LvBqc7gV`I7|1s9J0xO*bETcsnWX zkxtpCjKhy?FMIcZaU(wo{rMWVtGk3)EO$mqPyzO_VP=t0v1%e9c_Vd63iEy-8_@gTBdrIizyy3Z z+Mg(&J+XnU;&H-F$!PK;-=|sM4~33IXb$3uL5Y(;m=M~JZo_Uh#@_@z4-WYgPqZy5 zKrQeIT(fIb98(nrgobElbw-wS_~z;NX+1B_igY27EB@N5SS|I=OD)a!3rTWH!ND6Y zrcnzL$F||p05v=DPp#+kJhZc@`>DtG3Yb@BB;t^fkeTP@4D|JO8ezMS7U(B zx=@0?JrAca9 z_}FybrE%n+Z!(fjthd%-=y4lYVwW$RVL+T5@ItyBEnOWZIbGW#@T;wVxbELF%fCgo z@@+SJP;DtA@{R8Dlc0~^O8Oj~b!Fx!nCD#j1afR=cVfKje(dIGgU?W{rjh25PN zU}B5=S?lpic-Df`!!OyYvjL6uL7o;!vb^755rQ^b%>%3B_k97e7pZNg^530kHbmIA zm(EAi*};J4IPuoz%%X86mnA-ldN#X558mxTR5j)g?e4p{b*dlGa$rVmfXA{S`f{0T zfUR<4P3BqEYc8eBut`V=5=q(}uIeAR_m+gXJQyfN2rGljuC8E%R@!b;wX?&r*ADly zWITeso~Zx~2EDds7hWSx1n#gy&?N-a$C&!fuBkuv_~8AF94nmh@m4mHFq%T$3W#Rr za=-{X*=r)?LNfmETs4U;s-7St+d_3Z`~kr9^ezqkE~P!`-Mg%S+F|cVMX6T9KHi+e zQNAiyf-Q#P4a3IgBan%z#VhFN3ut~OU;*gek$)F58p(98B+C(v)h7wEYw7sE2+z~2qC5cHk8Xe{j+DPZ&p1Eoh9W^RU4d^Gb&TRq?J zi25fp(Z0<@^~bpByECH*O!o=y<2KP>c|M~34)m<@5c%uiL$HL!opW}|YIgUmfdmzv zlWJpmVdG^D7)t{rx*EHopm#@$u3mL!%UwNb6X#X3zLoH^@zN!xVJ;PNIb+EC;un86 z+5K1#X5kgneZ%N$*E_>R_<`+Sul6N@7+os8^aInlTKgI)dV4LcZvCA5J->*6J<%OK z6!&@=m53kb#BJR-vj4r4Gz5*8wCR+FKF0QVp-`^P4f5KBfc4Dm%&k9QLH~V__#G@$@%r4OW4%Vp7s1W7*)Oa9;|1dr+|FV0(Ym#xtd$$te(6nu-155nKBkC0@j z@2c#r!lJq1e@atM>4b-#L{aAQ;=7&a9;_erO^6Dl&4Z2mJ-a)diP59#rR4(oUC zIC&ib2x$R-jYd{PfALCl%Fcx6UY+Fpb}ECF*RPrFMW*+xzSvRcU63P7NFsS&(864M!S9aqZ1*dGyjTzm!xzewUADc1 z>2YXxP9i`Qel3cb#p^q@6K^Xn+$X=qcL;am*Xe7_WiEs43rtz^VQ2U>7mpVtI!NpU z3L^#_$Y=R^Y{U0MMN zThXIK_rbKd#V{y3x?1upDv}!|>pwur8pD8jukyYiSEIY=SAXL64d06M)h;WgVc)_` znC^PRMdbYerDr*jcm-|NHjNPAotqX~Z^gkNPUHydv@fbC9)pn)2NJqQIgPu6#5sey z7&P&1)K#ldPdi-lv; z)WcWpSKfX@!X34ga@gs@&#Y)M2UXIvaCh$J78^%2Nm~6Rh2%-Xv&>&^M%eH9h0NtM z09fqkz^_@qbW~W{!Q-C8Z^>G8+4-)zIxK_{p@Z2StD($PsyJneDH>UMMJC8`0V?j8 z269&NVpQdXDRdf!))G0Bks80FT*OQXW1m$b?)GX=5MHxbD~-L-wwZA!i`#)h`xrI6 z)Cmd}!yS!M_aVIRN;taqi}Whuc}y&L*jQ%_zB}H;Y(4(6@N;=itQOOAG%osygsJD* zef9Z?hrp)b>ba!%!?0PQh{zvyF)0+6Bn1J!rEld@c%U_D!u1}BwbU0YvZDkkyN>;@6f4A1 z0Vl!QO0vrEKKdH6o)gMCq}?&1@1N@7{k$JNqH8Bfk9G69DT zMtK_UEChKMb)+=xJ9V*sed12tw3`ZsBl?){!c6LaM}Ll_eM%;h<7Uh9`bA*)1-Ikl zS54H=FrW_fCW$uzz@RCyO zh+P85tK4!)5{ZuLTGEQ>v-ePgxif@o$T-cfC~b2ajF5_3JIl?Ylvu`?YU~_v6gFO6)T3ypp`Ccl_qoDukY+hi3;Ca#ie_q!DxqKaIsDH)svQrpD5T2%7bMd-E+zuZl8|m2k6rv>ycqm$2IF#FqQM{DO?ZzJF{T2g z9w1PqSsOln9d}reg6Kqc7LhD0Y(aIMBxz4CIPfE{ZfMco0ZMAwW`;w_lr2_>{tSl? zgN_wwrLvC9skr<9P|Hx!AJt9*GoKZ~0SQhlCRiUn^nWROnQ4r}qAFo-3MW>@%D=t} zMZiGE@aR)8PGaCJI3X&)Obpnh6r*v?05426F)Wl)AwRwri51ztJMICE3eO z=ryFWrTzfa{&lAxLT^hhZZD6iu^G7gb&f&MCMXqV<^OTEF~q}o%=iF#*vDG zE$sZXvmwFu!~C|Wo56r=1u*9}-2v&yT%P+ujZwC_x;Z_K(5$pGYAKtIvSM%|XG|{d zYK#?hRFVZ)(y4S3dvgyXWz`ah=uugangy*Q#GJ_4@RR(YDp^L@8?a&@FUwMSuQ+%x z6rF?2)^DNgmgu!s8Nu%nKCJMe{Awh!u^0nToUE*Eul9?7WMeyZU`)bitpbXzzZbLE zYxgo2Vg$#V7UaWX{L`!dSt{p)p+SghWwazC$FZKbZG>gHN_rp;FF8c*5=~i#Y5kjB z4_zzT7i(Xs=c4BPdQ`G+bqN=~?|)2;nPG4e`QEI)2eRh&4MU0(n9Xe8_aIBSzhtb| z*PXBUGEb0N`RkV0u@ zGX8{-*3J-p+fZae^U`Z}rulP}c{^If-7kd#q_Xt%HD^+YjPESii zWm_M5v^2ls)z`^2Jd77fZwo~z{Dhscefo`{1d+X1zzt7lP$}*!7aG`dc%dr?XE3jQ z(9N5j@MlK%O#9YjOp6LF_l8h#$T7MiiBGAFW3e$jNt}`4H>-wm1;kWv9tq9BSY%%M zt;qkrCVD+0FUbp6b4TPJv4niSpJYB+^+&Fd86iYJuzBXC0_InWxAz@#J34&TzC=Jh zGA|#6cy+ORwjh&ANqq+kTWeGtBEcQaGHaKMz!6aMm}x$kvhd^z!9bsbA~G+NBc1U` zBT9n>8@n)QjfWvl!)G3-JhAxr7J9c7{AL zsTohq6#D{uOsfrUj?%8T)8)B;N>F2hTNfUYscznjGzo6B(7(9Y*MutjJ7+ir|4xIR zUi($vyc=1xb?kz8}gf_O)_D54> zX3fJ~{bW#TR%I+|G91{NClMg!qt!YOT+|q$d%9I_GW8=ZKL03g29 z0rtUW3YJh$IcWzU8Iy6_C}IfD8f6(tGm7{fyHg5DKY%gUM)|=`WO;@CZ2KBwsnF%A&dRlYI+za zvxN*ygU(v986N+MpM#J162e8M`14tIOOGL2N^EvrY%`T8j;3v+5X4-{LI3a%btZ>v zH#!X&df)!W@e2=jY@KdAVdyQtJ)U4sJQ3hBXOCA8@J%{;#$mGOQIPtmLf%QpOA;L) zx?0!Z<3W@>93NN5;GeA^hk!(ekZxA1TnVbHRO@m5$cU~GvH%kSBQH+U*lV|GLXSqj z7Xg{C$v&+CpQu(~GNn3iWCymI=F{P57~o*cvpHyR6q@ygx8om0l zzR>IQZ2qkDSX|a36AmOHHskY(u@)6gcOgiQ9(kS#mfeREGc9Rk`m)}?+Kg^vCiQ*% zyE7uMc5$Tfi{WabhJq4bH=^5HdJ`=a5fw93eYhu~W^Kt{oJooIbNK9uD0SEe)eyPZ z5Q>5#uBAzjy;Nu=v(h-+Uggq|I)x0{%2yd=RQR-!xgPIf?OO#P?k;uOKyi!Y#bq0J zD@+keg%VlU#u4yIv*flA)6%+;3G$K@{IVV-LH>a!8(hmj8C30K^JtN?`8D0uoPjuJ zMlk>@i;cW_LAt$?ejjMmE`WrHS{wChP%DKo4JbKdrL+J^TT3+;>0EY43mwiGW|3?O zBu`J5MGbUxF3385CiwoCv8h7PdQM zSxA+6&hp4<%pFj$Qz}F9Ui}Gix`ccg7U=T(EL&(YiH4nl<(xScV@*_oF3XO1b=tkQ z71?5Et;JFwj2uG;HxvNyU5|8oOr|^3*~sPkb)j|i9MZDrseZl6cR5l=-?Vupla>4- zSno4Md5`-aaC~0k6-s8mD3DWRRItK^eM_m1f8UM7^Frz)f$-{C9LE6&Ly#Ii}?2*#498P zkeNK%4TV^!>cn5>XCO38o@OBsg(@9E1S3)mk&1e4tB%H&{{&-Zo5~ZK@CIF+qef;E z#bM+Q=gO04I0ty9H-?B(v+)?^uMe>YF%>-m7(3TAXPME|Yz)oDps;aD<$mlQ;U|{v zRCpa($hs_K24TSBVU0?5&V71u3xux0Xx0FhhVyh0mC6i573NVlt;QN(ZJh{gOm-qDPtPY~6~)A^KX;i44Oxa=zAB7z%I zO7X@OhQ9v_g=y0DA1A|_I(@)0Z?S@&fnW$jU`K2Aho6bC0Vfm5CBu~R zCy9^bL2U%7QAL8tW-NV_fQGrb+U2v0?YKv&;s$;nE8JDG90pb&03i#w1+>ancLH6F z1lkMjbHxy?i(e;xO9l#Ur;z|4zR17nN%OcVFbDt)m8~=Gn-+}Wh2728a5&6@p-gB9 zto;!k8AK7Ph;bkzgzN$qBql`qr){z$+!>7m$cVF~Rvg2XRk72Ox)_Eno0)?SSTkf5 zvLIt2+lnDIXuGat?WN{;`^HG=SlJz|n~lR`;(~Q5ZVoxY^$7qC_F;nKS3RS#DKs8$ zI!AWIy1!xj)cE%``Xe~r&AKb)F|gF$c0S*B8T=+>iufG#{p_pqvy9d zudlwlI1O9Z{7|xqPzB>ng3kf1ZLO>{)u35eV^#U+><}VHD8z{ilM5!@m2DW!1dE_> z5E_x6Y#`tOO+?2Jte_ZZ!_6gc=1fOfDMf**8ID1O=V!7(qn!$w@g){M!oXj`NJ4igaH?3ltH;0TeEQ$Y4_D|14~fgQBO zfTE&MQf(r10G?e40TwpI^PXQX2<<+2o$Sh%v=~#%o739L&hdGIVq$M|5p;FC|12QL z0a`scrA!d}ccxfK021(pn`32S&WcXw7~nfx&+z@pHy4pY;$zIg+VB50!EWb*V~)dB zcA&@=HKUEuQ9)!effMo>yYaq)^sh2tMn)HOGZhAV5;ebJ_-C*oTA9*j$5QKxpeHVP zMHv_+DK_x)KwJ0&^*MUr8veBx>uI%Ybuy4a98EJ7MTP7T%C6jsAS{v>T)(cdC+euk zYz`p`4?z2+I0ALUtDdKlL~1{43<1jhV`2UpLFkwN#5__wROh(?FNwMp25Eeryt*H~ zYPvL;h+>4wXWlB15tpop13tLlT?%x*vTt@p5bPCO2o<0$1bKFbak$^%xdq`-Sp@RP z!>9u@?9q!aN-9nDF{LeHY9DroQ}RedIY*eLPJNm~vxPh>L<9n&6HKZ^Mf!DZo{@gZly4ZtAf!u zPC8ilcR++GH8_Zb*@R#-N<%_orT#j}DVoUOIP>_XacM4s4f2^-v~LEoB-|H>J_u^kBN z`n0NgoQ8f$pn$nwKoo_+5=HQtHZZZglX5U=7SIeuf39`+x7`eu+dirX?L4o%azeHI zU^y#^S$Mhgfo>x!@)BJpIT*t%3SkLBPu!XU6wfZWln#)!vn-^#ww!r*Sq0l&Iya&7 zq$=gKg+X?O3rIfGK5S+qNXS8~$ajnkytXB3ghSRZH7-=tHRz->lMLIlYT5_E)LZ7z zG=2MF1nsPeEMk%;z@IXVNy;=EEBMTgr)Yo~Wf;w}7R#N(QL{|4(ad2sAyLk2q{l;z zGWclgWIz%X9VwG*vJV0neWo{;GRjn-8Cm!77%B((2r0QQreG$3m%PEEYx@P85O{m( zj&OXjmB{Tql0<0lV^vYvn+(We5D;X0Jf80ScA>LL0n(435RqaIK)`B?p7f8wBQ5aX zpEafAJIl#jK8TkZHS)tspx0DwYCMhO>_Etb*Fa1N1$&2Tr96D96-EixlLD%sa1cvJ zvDIZx*elZ>BS1P5cX`Pj=0A!92EOY(96oPa>ATkVP7V_?Ji;lVtn@^PlmKlm)zRg9 z`wjZk3??Lqse^mSAcXl+mSG_PMfqi{3lHGVNN3(9FF`|G{UL1EVq7vqJBs4O8QAr% zl!(iTELsbT%L?{eBm^3FmNeo?iE%kJu=JvD2I!hgChJxfhCuh&w|@<+uvP5!P{RtD z2-YaPidG;g(@Qqd4p0)fJ_VtdSQ_Zep%l$e@CeMuxn{kl*qAU#h?sVoGFip%Y^f3S z_1;|*MJ0g=9GH#h_o_lM07Z)PkCubs=jRE1bI-tVTDC$bxWF)P(~rPOq2-WRFCs(YN`snG z+z#;qq$pKcq}GCqu{0)1iGl6OiTXueo>emK{@Im9dy-tv2Yfs6y0y)M!esqTLK&lwl^FSZgwyDV*OW&Do7b62)h#&IIjOV=O^tZ=HT(~)0R<&6r@VQp%NrXIBR5yf*>G{kVnx$XXKG!b$+0y z_odiIvn8?}Pg{!R`I6`|9aSRt1iD8s9T#*ABdSYi3=CUn{OCHsyaDeSfzkqv5z5qL zhV;?~%L4>c%M_s<4w8JkW|SHLF}4ntk)hHGA?L9ExfEv&1Ua3!5{ain#8Cm@-+Ea| zW4yEmUr0!%p}P%=)+dpJPDWLmPtM2S#aKAI;&DGXI@{;$;=1N-!(?WV%;v-S#dz`o j!x{jHm-dM!L@tgKC!1~`DFP}XH6$TyA!EyeVAY!l>$s0Q literal 0 HcmV?d00001 diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.svg b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 0000000000..3ed7be4bc5 --- /dev/null +++ b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.woff b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..1205787b0ed50db71ebd4f8a7f85d106721ff258 GIT binary patch literal 22432 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 ig3W + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-BoldItalic-webfont.woff b/third_party/jsdoc/templates/default/static/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..ed760c0628b6a0026041f5b8bba466a0471fd2e0 GIT binary patch literal 23048 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-Italic-webfont.woff b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..ff652e64356b538c001423b6aedefcf1ee66cd17 GIT binary patch literal 23188 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 literal 0 HcmV?d00001 diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.svg b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 0000000000..11a472ca8a --- /dev/null +++ b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.woff b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..e786074813a27d0a7a249047832988d5bf0fe756 GIT binary patch literal 22248 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 literal 0 HcmV?d00001 diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.eot b/third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..8f445929ffb03b50e98c2a2f7d831a0cb1b276a2 GIT binary patch literal 20535 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 Z%0#`NexefPFV?Xj51H#Y#AC7WXn+Jg($4?@ literal 0 HcmV?d00001 diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.svg b/third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 0000000000..431d7e3546 --- /dev/null +++ b/third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.woff b/third_party/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..43e8b9e6cc061ff17fd2903075cbde12715512b3 GIT binary patch literal 23400 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 + diff --git a/third_party/jsdoc/templates/default/tmpl/container.tmpl b/third_party/jsdoc/templates/default/tmpl/container.tmpl new file mode 100644 index 0000000000..fa0b9c0bfb --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/container.tmpl @@ -0,0 +1,177 @@ + + + + + + + + + +
      + +
      + +

      + + + + + +

      + +
      + + + + +
      + + + +
      + +
      +
      + + +
      + + + + + + + + + +
      + + + + + +

      Example 1? 's':'' ?>

      + + + +
      + + +

      Requires

      + +
        +
      • +
      + + + +

      Classes

      + +
      +
      +
      +
      + + + +

      Mixins

      + +
      +
      +
      +
      + + + +

      Namespaces

      + +
      +
      +
      +
      + + + +

      Members

      + +
      + +
      + + + +

      Methods

      + +
      + +
      + + + +

      Type Definitions

      + +
      + + + +
      + + + +

      Events

      + +
      + +
      + +
      + +
      + + + diff --git a/third_party/jsdoc/templates/default/tmpl/details.tmpl b/third_party/jsdoc/templates/default/tmpl/details.tmpl new file mode 100644 index 0000000000..aa5ab98236 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/details.tmpl @@ -0,0 +1,152 @@ +" + data.defaultvalue + ""; + defaultObjectClass = ' class="object-value"'; +} +?> + + +
      Properties:
      + +
      + + + +
      + + +
      Version:
      +
      + + + +
      Since:
      +
      + + + +
      Inherited From:
      +
      • + +
      + + + +
      Overrides:
      +
      • + +
      + + + +
      Implementations:
      +
        + +
      • + +
      + + + +
      Implements:
      +
        + +
      • + +
      + + + +
      Extends:
      +
        + +
      • + +
      + + + +
      Mixes In:
      + +
        + +
      • + +
      + + + +
      Deprecated:
      • Yes
        + + + +
        Author:
        +
        +
          +
        • +
        +
        + + + + + + + + +
        License:
        +
        + + + +
        Default Value:
        +
          + > +
        + + + +
        Source:
        +
        • + , +
        + + + +
        Tutorials:
        +
        +
          +
        • +
        +
        + + + +
        See:
        +
        +
          +
        • +
        +
        + + + +
        To Do:
        +
        +
          +
        • +
        +
        + +
        diff --git a/third_party/jsdoc/templates/default/tmpl/example.tmpl b/third_party/jsdoc/templates/default/tmpl/example.tmpl new file mode 100644 index 0000000000..e87caa5b72 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/example.tmpl @@ -0,0 +1,2 @@ + +
        diff --git a/third_party/jsdoc/templates/default/tmpl/examples.tmpl b/third_party/jsdoc/templates/default/tmpl/examples.tmpl new file mode 100644 index 0000000000..04d975e96d --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/examples.tmpl @@ -0,0 +1,13 @@ + +

        + +
        + \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/tmpl/exceptions.tmpl b/third_party/jsdoc/templates/default/tmpl/exceptions.tmpl new file mode 100644 index 0000000000..78c4e250d0 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/exceptions.tmpl @@ -0,0 +1,30 @@ + + +
        +
        +
        + +
        +
        +
        +
        +
        + Type +
        +
        + +
        +
        +
        +
        + +
        + + + + + +
        + diff --git a/third_party/jsdoc/templates/default/tmpl/layout.tmpl b/third_party/jsdoc/templates/default/tmpl/layout.tmpl new file mode 100644 index 0000000000..4ef2273cea --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/layout.tmpl @@ -0,0 +1,47 @@ + + + + + JSDoc: <?js= title ?> + + + + + + + + + + + +
        + +

        + + +
        + + + +
        + +
        + + + + + + diff --git a/third_party/jsdoc/templates/default/tmpl/mainpage.tmpl b/third_party/jsdoc/templates/default/tmpl/mainpage.tmpl new file mode 100644 index 0000000000..64e9e5943a --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/mainpage.tmpl @@ -0,0 +1,14 @@ + + + +

        + + + +
        +
        +
        + diff --git a/third_party/jsdoc/templates/default/tmpl/members.tmpl b/third_party/jsdoc/templates/default/tmpl/members.tmpl new file mode 100644 index 0000000000..2f0b4ac09e --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/members.tmpl @@ -0,0 +1,42 @@ + +
        +

        + + +

        + +
        +
        + +
        + +
        + + + +
        Type:
        +
          +
        • + +
        • +
        + + + + + +
        Fires:
        +
          +
        • +
        + + + +
        Example 1? 's':'' ?>
        + + +
        diff --git a/third_party/jsdoc/templates/default/tmpl/method.tmpl b/third_party/jsdoc/templates/default/tmpl/method.tmpl new file mode 100644 index 0000000000..e566554f88 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/method.tmpl @@ -0,0 +1,111 @@ + +
        + + + +

        Constructor

        + + +

        + + + +

        + + +
        +
        + +
        + +
        + + + +
        Extends:
        + + + + +
        Type:
        +
          +
        • + +
        • +
        + + + +
        This:
        +
        + + + +
        Parameters:
        + + + + + + +
        Requires:
        +
          +
        • +
        + + + +
        Fires:
        +
          +
        • +
        + + + +
        Listens to Events:
        +
          +
        • +
        + + + +
        Listeners of This Event:
        +
          +
        • +
        + + + +
        Throws:
        + 1) { ?>
          +
        • +
        + + + + +
        Returns:
        + 1) { ?>
          +
        • +
        + + + + +
        Example 1? 's':'' ?>
        + + +
        diff --git a/third_party/jsdoc/templates/default/tmpl/params.tmpl b/third_party/jsdoc/templates/default/tmpl/params.tmpl new file mode 100644 index 0000000000..66ab04593c --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/params.tmpl @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        NameTypeAttributesDefaultDescription
        + + + + + + <optional>
        + + + + <nullable>
        + + + + <repeatable>
        + +
        + + + + +
        Properties
        + +
        \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/tmpl/properties.tmpl b/third_party/jsdoc/templates/default/tmpl/properties.tmpl new file mode 100644 index 0000000000..40e0909712 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/properties.tmpl @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        NameTypeAttributesDefaultDescription
        + + + + + + <optional>
        + + + + <nullable>
        + +
        + + + + +
        Properties
        +
        diff --git a/third_party/jsdoc/templates/default/tmpl/returns.tmpl b/third_party/jsdoc/templates/default/tmpl/returns.tmpl new file mode 100644 index 0000000000..d07045920a --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/returns.tmpl @@ -0,0 +1,19 @@ + +
        + +
        + + + +
        +
        + Type +
        +
        + +
        +
        + \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/tmpl/source.tmpl b/third_party/jsdoc/templates/default/tmpl/source.tmpl new file mode 100644 index 0000000000..e559b5d103 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/source.tmpl @@ -0,0 +1,8 @@ + +
        +
        +
        +
        +
        \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/tmpl/tutorial.tmpl b/third_party/jsdoc/templates/default/tmpl/tutorial.tmpl new file mode 100644 index 0000000000..9dfe909977 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/tutorial.tmpl @@ -0,0 +1,17 @@ +
        + + 0) { ?> +
        +
          +
        • +
        +
        + + +
        + +
        + +
        diff --git a/third_party/jsdoc/templates/default/tmpl/type.tmpl b/third_party/jsdoc/templates/default/tmpl/type.tmpl new file mode 100644 index 0000000000..ec2c6c0df7 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/type.tmpl @@ -0,0 +1,7 @@ + + +| + \ No newline at end of file diff --git a/third_party/jsdoc/templates/haruki/README.md b/third_party/jsdoc/templates/haruki/README.md new file mode 100644 index 0000000000..ee6d36f1de --- /dev/null +++ b/third_party/jsdoc/templates/haruki/README.md @@ -0,0 +1,39 @@ +OVERVIEW +======== + +JSDoc 3 Haruki is an experimental template optimised for use with publishing processes that consume either JSON or XML. Whereas the default JSDoc template outputs an HTML representation of your API, Haruki will output a JSON, or optionally an XML, representation. + +Currently Haruki only supports a subset of the tags supported by the default template. Those are: + + * @name + * @desc + * @type + * @namespace + * @method (or @function) + * @member (or @var) + * @class + * @mixin + * @event + * @param + * @returns + * @throws + * @example + * @access (like @private or @public) + +This limited support set is intentional, as it is meant to be a usable set that could be shared with either JavaScript or PHP documentation -- another experimental tool, named "Vonnegut", can produce Haruki compatible JSON from PHPDoc tags. + +Note: `@link`s will appear in the output untransformed, there is no way to know at this stage what the file layout of your output will eventually be. It is assumed that whatever process emits the final output file/s will transform `@link` tags at that point. + +USAGE +===== + + ./jsdoc myscript.js -t templates/haruki -d console -q format=xml + +The results of this command will appear in `stdout` and can be piped into other tools for further processing. + +MORE +===== + +If you are interested in Haruki, you are encouraged to discuss your questions or ideas on the JSDoc-Users mailing list and fork/contribute to this project. + +For more information contact Michael Mathews at . \ No newline at end of file diff --git a/third_party/jsdoc/templates/haruki/publish.js b/third_party/jsdoc/templates/haruki/publish.js new file mode 100644 index 0000000000..657c859172 --- /dev/null +++ b/third_party/jsdoc/templates/haruki/publish.js @@ -0,0 +1,220 @@ +/*eslint no-nested-ternary:0, space-infix-ops: 0 */ +/** + @overview Builds a tree-like JSON string from the doclet data. + @version 0.0.3 + @example + ./jsdoc scratch/jsdoc_test.js -t templates/haruki -d console -q format=xml + */ +'use strict'; + +function graft(parentNode, childNodes, parentLongname, parentName) { + childNodes + .filter(function (element) { + return (element.memberof === parentLongname); + }) + .forEach(function (element, index) { + var i, + len; + + if (element.kind === 'namespace') { + if (! parentNode.namespaces) { + parentNode.namespaces = []; + } + + var thisNamespace = { + 'name': element.name, + 'description': element.description || '', + 'access': element.access || '', + 'virtual': !!element.virtual + }; + + parentNode.namespaces.push(thisNamespace); + + graft(thisNamespace, childNodes, element.longname, element.name); + } + else if (element.kind === 'mixin') { + if (! parentNode.mixins) { + parentNode.mixins = []; + } + + var thisMixin = { + 'name': element.name, + 'description': element.description || '', + 'access': element.access || '', + 'virtual': !!element.virtual + }; + + parentNode.mixins.push(thisMixin); + + graft(thisMixin, childNodes, element.longname, element.name); + } + else if (element.kind === 'function') { + if (! parentNode.functions) { + parentNode.functions = []; + } + + var thisFunction = { + 'name': element.name, + 'access': element.access || '', + 'virtual': !!element.virtual, + 'description': element.description || '', + 'parameters': [ ], + 'examples': [] + }; + + parentNode.functions.push(thisFunction); + + if (element.returns) { + thisFunction.returns = { + 'type': element.returns[0].type? (element.returns[0].type.names.length === 1? element.returns[0].type.names[0] : element.returns[0].type.names) : '', + 'description': element.returns[0].description || '' + }; + } + + if (element.examples) { + for (i = 0, len = element.examples.length; i < len; i++) { + thisFunction.examples.push(element.examples[i]); + } + } + + if (element.params) { + for (i = 0, len = element.params.length; i < len; i++) { + thisFunction.parameters.push({ + 'name': element.params[i].name, + 'type': element.params[i].type? (element.params[i].type.names.length === 1? element.params[i].type.names[0] : element.params[i].type.names) : '', + 'description': element.params[i].description || '', + 'default': element.params[i].defaultvalue || '', + 'optional': typeof element.params[i].optional === 'boolean'? element.params[i].optional : '', + 'nullable': typeof element.params[i].nullable === 'boolean'? element.params[i].nullable : '' + }); + } + } + } + else if (element.kind === 'member') { + if (! parentNode.properties) { + parentNode.properties = []; + } + parentNode.properties.push({ + 'name': element.name, + 'access': element.access || '', + 'virtual': !!element.virtual, + 'description': element.description || '', + 'type': element.type? (element.type.length === 1? element.type[0] : element.type) : '' + }); + } + + else if (element.kind === 'event') { + if (! parentNode.events) { + parentNode.events = []; + } + + var thisEvent = { + 'name': element.name, + 'access': element.access || '', + 'virtual': !!element.virtual, + 'description': element.description || '', + 'parameters': [], + 'examples': [] + }; + + parentNode.events.push(thisEvent); + + if (element.returns) { + thisEvent.returns = { + 'type': element.returns.type? (element.returns.type.names.length === 1? element.returns.type.names[0] : element.returns.type.names) : '', + 'description': element.returns.description || '' + }; + } + + if (element.examples) { + for (i = 0, len = element.examples.length; i < len; i++) { + thisEvent.examples.push(element.examples[i]); + } + } + + if (element.params) { + for (i = 0, len = element.params.length; i < len; i++) { + thisEvent.parameters.push({ + 'name': element.params[i].name, + 'type': element.params[i].type? (element.params[i].type.names.length === 1? element.params[i].type.names[0] : element.params[i].type.names) : '', + 'description': element.params[i].description || '', + 'default': element.params[i].defaultvalue || '', + 'optional': typeof element.params[i].optional === 'boolean'? element.params[i].optional : '', + 'nullable': typeof element.params[i].nullable === 'boolean'? element.params[i].nullable : '' + }); + } + } + } + else if (element.kind === 'class') { + if (! parentNode.classes) { + parentNode.classes = []; + } + + var thisClass = { + 'name': element.name, + 'description': element.classdesc || '', + 'extends': element.augments || [], + 'access': element.access || '', + 'virtual': !!element.virtual, + 'fires': element.fires || '', + 'constructor': { + 'name': element.name, + 'description': element.description || '', + 'parameters': [ + ], + 'examples': [] + } + }; + + parentNode.classes.push(thisClass); + + if (element.examples) { + for (i = 0, len = element.examples.length; i < len; i++) { + thisClass.constructor.examples.push(element.examples[i]); + } + } + + if (element.params) { + for (i = 0, len = element.params.length; i < len; i++) { + thisClass.constructor.parameters.push({ + 'name': element.params[i].name, + 'type': element.params[i].type? (element.params[i].type.names.length === 1? element.params[i].type.names[0] : element.params[i].type.names) : '', + 'description': element.params[i].description || '', + 'default': element.params[i].defaultvalue || '', + 'optional': typeof element.params[i].optional === 'boolean'? element.params[i].optional : '', + 'nullable': typeof element.params[i].nullable === 'boolean'? element.params[i].nullable : '' + }); + } + } + + graft(thisClass, childNodes, element.longname, element.name); + } + }); +} + +/** + @param {TAFFY} data + @param {object} opts + */ +exports.publish = function(data, opts) { + var root = {}, + docs; + + data({undocumented: true}).remove(); + docs = data().get(); // <-- an array of Doclet objects + + graft(root, docs); + + if (opts.destination === 'console') { + if (opts.query && opts.query.format === 'xml') { + var xml = require('js2xmlparser'); + console.log( xml('jsdoc', root) ); + } + else { + global.dump(root); + } + } + else { + console.log('This template only supports output to the console. Use the option "-d console" when you run JSDoc.'); + } +}; diff --git a/third_party/jsdoc/test/README.md b/third_party/jsdoc/test/README.md new file mode 100644 index 0000000000..464562264d --- /dev/null +++ b/third_party/jsdoc/test/README.md @@ -0,0 +1,45 @@ +Testing JSDoc 3 +=============== + +Running Tests +------------- + +Running tests is easy. Just change your working directory to the jsdoc folder +and run the following command on Windows: + + jsdoc -T + +Or on OS X, Linux, and other POSIX-compliant platforms: + + ./jsdoc -T + +If you can't get the short-form commands to work, try invoking Java directly: + + java -cp lib/js.jar org.mozilla.javascript.tools.shell.Main \ + -modules node_modules -modules rhino -modules lib -modules . \ + jsdoc.js -T + +Writing Tests +------------- + +Adding tests is pretty easy, too. You can write tests for JSDoc itself (to +make sure tags and the parser, etc. are working properly), tests for plugins, and/or +tests for templates. + +JSDoc 3 uses Jasmine (https://github.com/pivotal/jasmine) as its testing framework. +Take a look at that project's wiki for documentation on writing tests in general. + +### Tests for JSDoc + +Take a look at the files in the ```test``` directory for many examples of +writing tests for JSDoc itself. The ```test\fixtures``` directory hold fixtures +for use in the tests, and the ```test\specs``` directory holds the tests themselves. + +### Tests for plugins + +Tests for plugins are found in the ```plugins\test``` directory. Plugins containing +tests that were installed with the Jakefile install task will be run automatically. + +### Tests for templates + +TODO diff --git a/third_party/jsdoc/test/async-callback.js b/third_party/jsdoc/test/async-callback.js new file mode 100644 index 0000000000..d2388fa477 --- /dev/null +++ b/third_party/jsdoc/test/async-callback.js @@ -0,0 +1,57 @@ +/*global jasmine: true */ +(function() { + var withoutAsync = {}; + + ["it", "beforeEach", "afterEach"].forEach(function(jasmineFunction) { + withoutAsync[jasmineFunction] = jasmine.Env.prototype[jasmineFunction]; + return jasmine.Env.prototype[jasmineFunction] = function() { + var args = Array.prototype.slice.call(arguments, 0); + var timeout = null; + if (isLastArgumentATimeout(args)) { + timeout = args.pop(); + } + if (isLastArgumentAnAsyncSpecFunction(args)) + { + var specFunction = args.pop(); + args.push(function() { + return asyncSpec(specFunction, this, timeout); + }); + } + return withoutAsync[jasmineFunction].apply(this, args); + }; + }); + + function isLastArgumentATimeout(args) + { + return args.length > 0 && (typeof args[args.length-1]) === "number"; + } + + function isLastArgumentAnAsyncSpecFunction(args) + { + return args.length > 0 && (typeof args[args.length-1]) === "function" && args[args.length-1].length > 0; + } + + function asyncSpec(specFunction, spec, timeout) { + if (timeout == null){timeout = jasmine.DEFAULT_TIMEOUT_INTERVAL || 1000;} + var done = false; + spec.runs(function() { + try { + return specFunction(function(error) { + done = true; + if (error != null) { + return spec.fail(error); + } + }); + } catch (e) { + done = true; + throw e; + } + }); + return spec.waitsFor(function() { + if (done === true) { + return true; + } + }, "spec to complete", timeout); + } + +}).call(this); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/abstracttag.js b/third_party/jsdoc/test/fixtures/abstracttag.js new file mode 100644 index 0000000000..a54db3721f --- /dev/null +++ b/third_party/jsdoc/test/fixtures/abstracttag.js @@ -0,0 +1,17 @@ +/** @constructor */ +function Thingy() { + + /** @abstract */ + this.pez = 2; + +} + +// same as... + +/** @constructor */ +function OtherThingy() { + + /** @virtual */ + this.pez = 2; + +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/accesstag.js b/third_party/jsdoc/test/fixtures/accesstag.js new file mode 100644 index 0000000000..7d1d8b52a9 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/accesstag.js @@ -0,0 +1,29 @@ +/** @constructor */ +function Thingy() { + + /** @access private */ + var foo = 0; + + /** @access protected */ + this._bar = 1; + + /** @access public */ + this.pez = 2; + +} + +// same as... + +/** @constructor */ +function OtherThingy() { + + /** @private */ + var foo = 0; + + /** @protected */ + this._bar = 1; + + /** @public */ + this.pez = 2; + +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/alias.js b/third_party/jsdoc/test/fixtures/alias.js new file mode 100644 index 0000000000..924abb70c3 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/alias.js @@ -0,0 +1,13 @@ +var myObject = (function() { + + /** Give x another name. + @alias myObject + @namespace + */ + var x = { + /** document me */ + myProperty: 'foo' + } + + return x; +})(); diff --git a/third_party/jsdoc/test/fixtures/alias2.js b/third_party/jsdoc/test/fixtures/alias2.js new file mode 100644 index 0000000000..6c54c0a5c6 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/alias2.js @@ -0,0 +1,10 @@ +(function() { + + /** @alias ns.Myclass# */ + var x = { + /** document me */ + myProperty: 'foo' + } + + return x; +})(); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/alias3.js b/third_party/jsdoc/test/fixtures/alias3.js new file mode 100644 index 0000000000..673a82c20b --- /dev/null +++ b/third_party/jsdoc/test/fixtures/alias3.js @@ -0,0 +1,12 @@ +Klass('trackr.CookieManager', + + /** @class + @alias trackr.CookieManager + @param {object} kv + */ + function(kv) { + /** document me */ + this.value = kv; + } + +); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/alias4.js b/third_party/jsdoc/test/fixtures/alias4.js new file mode 100644 index 0000000000..dbc41dac24 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/alias4.js @@ -0,0 +1,12 @@ +/** @module jacket */ +define('jacket', function () { + /** + * Jacket constructor. + * + * @constructor + * @alias module:jacket + */ + function Jacket() {} + + return Jacket; +}); diff --git a/third_party/jsdoc/test/fixtures/aliasglobal.js b/third_party/jsdoc/test/fixtures/aliasglobal.js new file mode 100644 index 0000000000..0be1a61cd2 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/aliasglobal.js @@ -0,0 +1,7 @@ +(function() { + + /** @alias .log */ + var log = function() { + } + +})(); diff --git a/third_party/jsdoc/test/fixtures/aliasglobal2.js b/third_party/jsdoc/test/fixtures/aliasglobal2.js new file mode 100644 index 0000000000..00f6e8d04c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/aliasglobal2.js @@ -0,0 +1,18 @@ +(function () { + /** + * Creates a new test object. + * @alias Test + * @constructor + */ + var Test = function(testName) { + /** Document me. */ + this.name = testName; + } + + /** Document me. */ + Test.prototype.run = function(message) { + }; + + /** Document me. */ + Test.counter = 1; +})(); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/aliasresolve.js b/third_party/jsdoc/test/fixtures/aliasresolve.js new file mode 100644 index 0000000000..8e9ec18689 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/aliasresolve.js @@ -0,0 +1,19 @@ +/** + * @namespace + */ +var A = {}; + +(function(ns) { + /** + * @namespace + * @alias A.F + */ + var f = {}; + + /** + * @return {String} + */ + f.method = function(){}; + + ns.F = f; +})(A); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/aliasresolve2.js b/third_party/jsdoc/test/fixtures/aliasresolve2.js new file mode 100644 index 0000000000..4ff8b2821c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/aliasresolve2.js @@ -0,0 +1,19 @@ +/** + * @namespace + */ +var A = {}; + +/** + * @namespace + * @alias A.F + */ +var f = {}; + +(function(ns) { + /** + * @return {String} + */ + f.method = function(){}; + + ns.F = f; +})(A); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/also.js b/third_party/jsdoc/test/fixtures/also.js new file mode 100644 index 0000000000..96a109ef73 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/also.js @@ -0,0 +1,46 @@ +/** @class */ +function Asset() { + this._name = ''; + this._shape = ''; + this._shhhhKeepThisSecret = ''; +} + +/** + * + * Set the value of the name property. + * @param {string} newName + * + *//** + * + * Get the value of the name property. + * @returns {string} + * + */ +Asset.prototype.name = function(newName) { + if (newName) { this._name = newName; } + else { return this._name; } +}; + +/** + * Set the value of the shape property. + * @param {string} newShape + *//** + * Set the value of the shape property, plus some other property. + * @param {string} newShape + * @param {string} mysteryProperty + *//** + * Get the value of the shape property. + * @returns {string} + */ +Asset.prototype.shape = function(newShape, mysteryProperty) { + if (newShape && mysteryProperty) { + this._shape = newShape; + this._shhhhKeepThisSecret = mysteryProperty; + } + else if (newShape) { + this._shape = newShape; + } + else { + return this._shape; + } +}; diff --git a/third_party/jsdoc/test/fixtures/also2.js b/third_party/jsdoc/test/fixtures/also2.js new file mode 100644 index 0000000000..85abe4f698 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/also2.js @@ -0,0 +1,14 @@ +/** @class */ +function BowlingAlley() { + this._lanes = 0; +} + +/** + * Add a lane to the bowling alley. + * @also + * Add the specified number of lanes to the bowling alley. + * @param {number} [lanes=1] - The number of lanes to add. + */ +BowlingAlley.prototype.addLanes = function addLanes(lanes) { + this._lanes += (typeof lanes === undefined) ? 1 : lanes; +}; diff --git a/third_party/jsdoc/test/fixtures/augmentstag.js b/third_party/jsdoc/test/fixtures/augmentstag.js new file mode 100644 index 0000000000..b5e4418140 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/augmentstag.js @@ -0,0 +1,51 @@ +/** + * @constructor + */ +function Foo() { + /** First property */ + this.prop1 = true; +} + +/** + * Second property + * @type {String} + */ +Foo.prototype.prop2 = "parent prop2"; + +/** + * First parent method. + */ +Foo.prototype.method1 = function() {}; + +/** + * Second parent method. + */ +Foo.prototype.method2 = function() {}; + +/** + * @constructor + * @extends Foo + */ +function Bar() { + /** Third prop **/ + this.prop3 = true; +} + +/** + * Second child method. + */ +Bar.prototype.method2 = function() {}; + +/** + * @constructor + * @extends {Bar} + */ +function Baz() { + /** Override prop1 */ + this.prop1 = "new"; +} + +/** + * Third grandchild method. + */ +Baz.prototype.method3 = function() {}; diff --git a/third_party/jsdoc/test/fixtures/augmentstag2.js b/third_party/jsdoc/test/fixtures/augmentstag2.js new file mode 100644 index 0000000000..8def33a93f --- /dev/null +++ b/third_party/jsdoc/test/fixtures/augmentstag2.js @@ -0,0 +1,6 @@ +// Test for @augments/@extends tags that refer to undefined symbols +/** + * @constructor + * @extends UndocumentedThing + */ +function Qux() {} diff --git a/third_party/jsdoc/test/fixtures/augmentstag3.js b/third_party/jsdoc/test/fixtures/augmentstag3.js new file mode 100644 index 0000000000..80851817ad --- /dev/null +++ b/third_party/jsdoc/test/fixtures/augmentstag3.js @@ -0,0 +1,18 @@ +// test to see that we can @augment multiple things (code allows for it) +/** @class */ +function Foo() { +} +/** A method. */ +Foo.prototype.method1 = function () {}; + +/** @class */ +function Bar() { +} +/** Another method. */ +Bar.prototype.method2 = function () {} + +/** @class + * @augments Foo + * @augments Bar */ +function FooBar() { +} diff --git a/third_party/jsdoc/test/fixtures/augmentstag4.js b/third_party/jsdoc/test/fixtures/augmentstag4.js new file mode 100644 index 0000000000..3ead27520d --- /dev/null +++ b/third_party/jsdoc/test/fixtures/augmentstag4.js @@ -0,0 +1,21 @@ +// used to test jsdoc/augments module directly + +/** + * @constructor + * @classdesc Base class + */ +var Base = function() { + /** member */ + this.test1 = "base"; + /** another member */ + this.test2 = null; +}; + +/** + * @constructor + * @extends Base + * @classdesc Extension of Base + */ +var Derived = function() { + this.test1 = "derived"; +}; diff --git a/third_party/jsdoc/test/fixtures/augmentstag5.js b/third_party/jsdoc/test/fixtures/augmentstag5.js new file mode 100644 index 0000000000..dca225f14c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/augmentstag5.js @@ -0,0 +1,36 @@ +/** @class */ +'use strict'; + +function Base0() {} + +Base0.prototype = /** @lends Base0# */ { + /** Description for {@link Base0#methodOfBaseCommon}. */ + methodOfBaseCommon: function() {}, + + /** Description for {@link Base0#methodOfBase0}. */ + methodOfBase0: function() {} +}; + +/** @class */ +function Base1() {} + +Base1.prototype = /** @lends Base1# */ { + /** Description for {@link Base1#methodOfBaseCommon}. */ + methodOfBaseCommon: function() {}, + + /** Description for {@link Base1#methodOfBase1}. */ + methodOfBase1: function() {} +}; + +/** + * @class + * @augments Base0 + * @augments Base1 + */ +function Class() {} + +Class.prototype = Object.create(Base0.prototype); + +Object.getOwnPropertyNames(Base1.prototype).forEach(function (prop) { + Object.defineProperty(Class.prototype, prop, Object.getOwnPropertyDescriptor(Base1.prototype, prop)); +}); diff --git a/third_party/jsdoc/test/fixtures/authortag.js b/third_party/jsdoc/test/fixtures/authortag.js new file mode 100644 index 0000000000..3bba0f0f9b --- /dev/null +++ b/third_party/jsdoc/test/fixtures/authortag.js @@ -0,0 +1,10 @@ +/** @constructor + @author Michael Mathews +*/ +function Thingy() { +} + +/** @author John Doe + * @author Jane Doe */ +function Thingy2() { +} diff --git a/third_party/jsdoc/test/fixtures/borrowstag.js b/third_party/jsdoc/test/fixtures/borrowstag.js new file mode 100644 index 0000000000..7a571adedc --- /dev/null +++ b/third_party/jsdoc/test/fixtures/borrowstag.js @@ -0,0 +1,13 @@ +/** @namespace + @borrows trstr as trim +*/ +var util = { + "trim": trstr +}; + +/** + Remove whitespace from around a string. + @param {string} str + */ +function trstr(str) { +} diff --git a/third_party/jsdoc/test/fixtures/borrowstag2.js b/third_party/jsdoc/test/fixtures/borrowstag2.js new file mode 100644 index 0000000000..22a16435f9 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/borrowstag2.js @@ -0,0 +1,20 @@ +/** @namespace + @borrows rtrim +*/ +var str = { + rtrim: util.rtrim +}; + +/** @namespace + @borrows rtrim +*/ +var util = { + rtrim: rtrim +}; + +/** + Remove whitespace from the right side of a string. + @param {string} str + */ +function rtrim(str) { +} diff --git a/third_party/jsdoc/test/fixtures/callbacktag.js b/third_party/jsdoc/test/fixtures/callbacktag.js new file mode 100644 index 0000000000..5dd468d5d7 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/callbacktag.js @@ -0,0 +1,21 @@ +/** + * @param {requestResponseCallback} cb + */ +function makeSpecialRequest(cb) { +} + +/** + * @param {wrongTypeCallback} cb + */ +function makeExtraSpecialRequest(cb) { +} + +/** + * @callback requestResponseCallback + * @param {number} responseCode + * @param {string} responseText + */ + +/** + * @callback {(object|string)} wrongTypeCallback + */ \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/classdesctag.js b/third_party/jsdoc/test/fixtures/classdesctag.js new file mode 100644 index 0000000000..707a79e62c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/classdesctag.js @@ -0,0 +1,7 @@ +/** + * Asdf. + * @class + * @classdesc A description of the class. + */ +function Foo () { +} diff --git a/third_party/jsdoc/test/fixtures/classtag.js b/third_party/jsdoc/test/fixtures/classtag.js new file mode 100644 index 0000000000..1212b8b170 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/classtag.js @@ -0,0 +1,12 @@ +/** + Describe the Ticker class here. + @class + */ +var Ticker = function() { + +}; + +/** + Describe the NewsSource class here. + @class NewsSource + */ diff --git a/third_party/jsdoc/test/fixtures/classwithoutname.js b/third_party/jsdoc/test/fixtures/classwithoutname.js new file mode 100644 index 0000000000..7e9e42e4f3 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/classwithoutname.js @@ -0,0 +1,9 @@ +// JSDoc should not be able to identify the name of this class. + +var MyClass = Class.define({ + /** + * Create an instance of MyClass. + * @constructs + */ + initialize: function() {} +}); diff --git a/third_party/jsdoc/test/fixtures/constanttag.js b/third_party/jsdoc/test/fixtures/constanttag.js new file mode 100644 index 0000000000..3ca74aae8f --- /dev/null +++ b/third_party/jsdoc/test/fixtures/constanttag.js @@ -0,0 +1,15 @@ +/** @constant */ +var FOO = 1; + +/** @const BAR */ + +/** @const {string} BAZ */ + +/** @const {number} */ +var QUX = 0; + +/** @const {Object} SOCKET */ +var mySocket; + +/** @const ROCKET */ +var myRocket; diff --git a/third_party/jsdoc/test/fixtures/constructortag.js b/third_party/jsdoc/test/fixtures/constructortag.js new file mode 100644 index 0000000000..275ef3c62e --- /dev/null +++ b/third_party/jsdoc/test/fixtures/constructortag.js @@ -0,0 +1,15 @@ +/** + Describe your constructor function here. + @class Describe your class here. + @constructor + @param {string} url + @throws MalformedURL + */ +function Feed(url) { +} + +/** + Document your method here. +*/ +Feed.prototype.refresh = function() { +} diff --git a/third_party/jsdoc/test/fixtures/constructstag.js b/third_party/jsdoc/test/fixtures/constructstag.js new file mode 100644 index 0000000000..9b78dba926 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/constructstag.js @@ -0,0 +1,19 @@ +Classify('TextBlock', { + + /** + Document your constructor function here. + @constructs TextBlock + @classdesc Describe your class here + @param {object} opts + @throws MissingNode + */ + construct: function(node, opts) { + }, + + /** + Document your method here. + @memberof TextBlock# + */ + align: function() { + } +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/constructstag2.js b/third_party/jsdoc/test/fixtures/constructstag2.js new file mode 100644 index 0000000000..92b06fd594 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/constructstag2.js @@ -0,0 +1,16 @@ +Classify('Menu', + /** + @constructs Menu + @param items + */ + function (items) { + + }, + { + /** + @memberof Menu# + */ + show: function(){ + } + } +); diff --git a/third_party/jsdoc/test/fixtures/constructstag3.js b/third_party/jsdoc/test/fixtures/constructstag3.js new file mode 100644 index 0000000000..c992ddeebd --- /dev/null +++ b/third_party/jsdoc/test/fixtures/constructstag3.js @@ -0,0 +1,26 @@ +/** + A class that represents a person. + @class + */ +var Person = Class.create({ + + /** + @constructs Person + @param {string} name + */ + initialize: function(name) { + + /** The name of the person. */ + this.name = name; + }, + + /** + @memberof Person# + @param {string} message + */ + say: function(message) { + + /** The person's message. */ + this.message = message; + } +}); diff --git a/third_party/jsdoc/test/fixtures/constructstag4.js b/third_party/jsdoc/test/fixtures/constructstag4.js new file mode 100644 index 0000000000..a14f8dd921 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/constructstag4.js @@ -0,0 +1,23 @@ +var Person = Class.create(/** @lends Person# */{ + + /** + Describe the constructor. + @classdesc A class that represents a person. + @constructs + @param {string} name + */ + initialize: function(name) { + + /** The name of the person. */ + this.name = name; + }, + + /** + @param {string} message + */ + say: function(message) { + + /** The person's message. */ + this.message = message; + } +}); diff --git a/third_party/jsdoc/test/fixtures/constructstag5.js b/third_party/jsdoc/test/fixtures/constructstag5.js new file mode 100644 index 0000000000..caff0fe538 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/constructstag5.js @@ -0,0 +1,14 @@ +Duck = (function() { + return /** @lends Duck# */ { + /** + Constructs a duck. + @constructs + @param tog + */ + constructor: function(tog) { + }, + /** Say hello. */ + quack: function() { + } + } +})(); diff --git a/third_party/jsdoc/test/fixtures/copyrighttag.js b/third_party/jsdoc/test/fixtures/copyrighttag.js new file mode 100644 index 0000000000..b9eac48eec --- /dev/null +++ b/third_party/jsdoc/test/fixtures/copyrighttag.js @@ -0,0 +1,6 @@ +/** @constructor + @copyright (c) 2011 Michael Mathews +*/ +function Thingy() { + +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/defaulttag.js b/third_party/jsdoc/test/fixtures/defaulttag.js new file mode 100644 index 0000000000..a4ec8488d5 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/defaulttag.js @@ -0,0 +1,57 @@ +/** + @default + */ +var request = null; + +/** + @default + */ +var response = 'ok'; + +/** + @default + */ +var rcode = 200; + +/** + @default + */ +var rvalid = true; + +/** + @default + */ +var rerrored = false; + +/** + @default the parent window + */ +var win = getParentWindow(); + +/** + @default + */ +var header = getHeaders(request); + +/** + @default + */ +var obj = {valueA: 'a', valueB: false, valueC: 7}; + +/** + * @default + */ +var multilineObject = { + valueA : 'a', + valueB : false, + valueC : 7 +}; + +/** @default */ +var arr = ['foo', true, 19]; + +/** + * @default + * @type {string} + */ +var defaultWithType = 'a'; diff --git a/third_party/jsdoc/test/fixtures/deprecatedtag.js b/third_party/jsdoc/test/fixtures/deprecatedtag.js new file mode 100644 index 0000000000..fed82082ac --- /dev/null +++ b/third_party/jsdoc/test/fixtures/deprecatedtag.js @@ -0,0 +1,11 @@ +/** @deprecated +*/ +function foo() { + +} + +/** @deprecated since version 2.0 +*/ +function bar() { + +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/descriptiontag.js b/third_party/jsdoc/test/fixtures/descriptiontag.js new file mode 100644 index 0000000000..78d9d05a0e --- /dev/null +++ b/third_party/jsdoc/test/fixtures/descriptiontag.js @@ -0,0 +1,7 @@ +/** Blah Blah Blah + * @desc halb halb halb + */ +var x; + +/** @description lkjasdf */ +var y; diff --git a/third_party/jsdoc/test/fixtures/destructuring.js b/third_party/jsdoc/test/fixtures/destructuring.js new file mode 100644 index 0000000000..2b13f928e3 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/destructuring.js @@ -0,0 +1,5 @@ +/** + A builder function for the Stick application; + @var {function} Application + */ +var {Application} = require("stick"); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/doclet.js b/third_party/jsdoc/test/fixtures/doclet.js new file mode 100644 index 0000000000..ae7e485091 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/doclet.js @@ -0,0 +1,23 @@ +/** + Markdown asterisks in a doclet that does not use leading asterisks. + **Strong** is strong. + + * List item 1. + * List item 2. + @param {string} thingy - The thingy. + */ +function test1(thingy) { + +} + +/** + * Markdown asterisks in a doclet that uses leading asterisks. + * **Strong** is strong. + * + * * List item 1. + * * List item 2. + * @param {string} thingy - The thingy. + */ +function test2(thingy) { + +} diff --git a/third_party/jsdoc/test/fixtures/emptycomments.js b/third_party/jsdoc/test/fixtures/emptycomments.js new file mode 100644 index 0000000000..6ddd67eebe --- /dev/null +++ b/third_party/jsdoc/test/fixtures/emptycomments.js @@ -0,0 +1,27 @@ +/** */ +function first() {} + +/** */ +function second() {} + +// the next comment must contain a single hard tab (\t) character +/** */ +function third() {} + +// the next comment must contain at least two hard tab (\t) characters +/** */ +function fourth() {} + +// the next comment must contain one newline (\n) character +/** + */ +function fifth() {} + +// the next comment must contain multiple newline (\n) characters +/** + * + * + * + * + */ +function sixth() {} diff --git a/third_party/jsdoc/test/fixtures/enumtag.js b/third_party/jsdoc/test/fixtures/enumtag.js new file mode 100644 index 0000000000..2374f09e75 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/enumtag.js @@ -0,0 +1,11 @@ +/** + * Enum for tri-state values. + * @enum {number} + */ +var TriState = { + /** true */ + TRUE: 1, + FALSE: -1, + /** @type {boolean} */ + MAYBE: true +}; \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/enumtag2.js b/third_party/jsdoc/test/fixtures/enumtag2.js new file mode 100644 index 0000000000..2b0f9e630f --- /dev/null +++ b/third_party/jsdoc/test/fixtures/enumtag2.js @@ -0,0 +1,32 @@ +/** @module my/enums */ + +/** + * Enum for quad-state values. + * @enum {number} + * @memberof module:my/enums + */ +var QuadState = exports.QuadState = { + /** true */ + TRUE: 1, + FALSE: -1, + MAYBE: 0, + UNKNOWN: -99 +}; + +/** + * Enum for penta-state values. + * @enum {number} + */ +exports.PentaState = +/** + * Enum for penta-state values, BUT SHOUTIER. + * @enum {number} + */ +exports.PENTASTATE = { + /** true */ + TRUE: 1, + FALSE: -1, + MAYBE: 0, + UNKNOWN: -99, + DONTCARE: 99 +}; diff --git a/third_party/jsdoc/test/fixtures/es6.js b/third_party/jsdoc/test/fixtures/es6.js new file mode 100644 index 0000000000..355d2c4709 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/es6.js @@ -0,0 +1,48 @@ +'use strict'; + +// ArrowFunctionExpression +["Model", "View", "Controller"].forEach(name => console.log(name)); + +// ClassBody, ClassDeclaration, MethodDefinition +class Socket { + constructor(port) { + // ... + } + open() { + // ... + } + close() { + // ... + } +} + +// ClassExpression +var WebSocket = class extends Socket { + // ... +}; + +// ExportBatchSpecifier, ExportDeclaration +export * from 'lib/network'; + +// ExportSpecifier +export {Socket}; + +// ImportDeclaration, ImportSpecifier +import {Packet} from 'lib/data'; + +// ModuleDeclaration +module util from 'lib/util'; + +// SpreadElement +function logItems(...items) { + items.forEach(function(item) { + console.log(item); + }); +} +logItems(...['hello', 'world!']); + +// TaggedTemplateExpression +console.log`hello world!`; + +// TemplateElement, TemplateLiteral +var piMessage = `pi equals ${Math.PI}`; diff --git a/third_party/jsdoc/test/fixtures/eventfirestag.js b/third_party/jsdoc/test/fixtures/eventfirestag.js new file mode 100644 index 0000000000..331eaf8c3c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/eventfirestag.js @@ -0,0 +1,30 @@ +/** + * @class + */ +var Hurl = function () { +}; + +/** + * Throw a snowball. + * + * @fires Hurl#snowball + * @fires Hurl#event:brick + */ +Hurl.prototype.snowball = function () { + /** + * @event Hurl#snowball + */ + this.emit('snowball', {}); +}; + +/** + * Throw a football match. + * + * @emits Hurl#footballMatch + */ +Hurl.prototype.footballMatch = function () { + /** + * @event Hurl#footballMatch + */ + this.emit('footballMatch', {}); +}; diff --git a/third_party/jsdoc/test/fixtures/exampletag.js b/third_party/jsdoc/test/fixtures/exampletag.js new file mode 100644 index 0000000000..b20f75305a --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exampletag.js @@ -0,0 +1,14 @@ +/** @example + * console.log("foo"); + * console.log("bar"); + */ +var x; + +/** @example + * console.log("foo"); + * console.log("bar"); + * @example + * Example 2 + * 1 + 2; + */ +var y; diff --git a/third_party/jsdoc/test/fixtures/exceptiontag.js b/third_party/jsdoc/test/fixtures/exceptiontag.js new file mode 100644 index 0000000000..d210638b26 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exceptiontag.js @@ -0,0 +1,27 @@ +/** + @throws {InvalidArgumentException} +*/ +function foo(x) { + +} + +/** + @exception Will throw an error if argument is null. +*/ +function bar(x) { + +} + +/** + @exception {DivideByZero} Argument x must be non-zero. +*/ +function pez(x) { + +} + +/** + * A description of the function. + * + * @exception {Object} A description of the exception. + */ +function cos(x) {} diff --git a/third_party/jsdoc/test/fixtures/exports.js b/third_party/jsdoc/test/fixtures/exports.js new file mode 100644 index 0000000000..21d11e768e --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exports.js @@ -0,0 +1,24 @@ +/** + * An example of a server-side JavaScript module. + * @module hello/world + * @example + * var g = require('hello/world').sayHello('Gracie'); + */ + +/** + * Generate a greeting. + * @param {string} [subject="world"] To whom we say hello. + * @returns {string} + */ +exports.sayHello = function(subject) { + return 'Hello ' + (subject || 'World'); +}; + +/** + * Generate a morose farewell. + * @param {string} [subject="world"] To whom we say goodbye. + * @returns {string} + */ +module.exports.sayGoodbye = function(subject) { + return 'Goodbye Cruel ' + (subject || 'World'); +}; diff --git a/third_party/jsdoc/test/fixtures/exportstag.js b/third_party/jsdoc/test/fixtures/exportstag.js new file mode 100644 index 0000000000..e7eab02422 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exportstag.js @@ -0,0 +1,20 @@ +define(function () { + /** + A module representing a shirt. + @exports my/shirt + @version 1.0 + */ + var shirt = { + + /** A property of the module. */ + color: "black", + + /** @constructor */ + Turtleneck: function(size) { + /** A property of the class. */ + this.size = size; + } + }; + + return shirt; +}); diff --git a/third_party/jsdoc/test/fixtures/exportstag2.js b/third_party/jsdoc/test/fixtures/exportstag2.js new file mode 100644 index 0000000000..4b89f65a47 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exportstag2.js @@ -0,0 +1,18 @@ +define( + ["my/buttons"], + function () { + /** + A module representing a coat. + @exports my/coat + @requires my/buttons + @version 1.0 + */ + var myModule = function(wool) { + /** document me */ + this.wool = wool; + } + + return myModule; + + } +); diff --git a/third_party/jsdoc/test/fixtures/exportstag3.js b/third_party/jsdoc/test/fixtures/exportstag3.js new file mode 100644 index 0000000000..a26efd513a --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exportstag3.js @@ -0,0 +1,22 @@ +define( + /** + Utility functions to ease working with DOM elements. + @exports html/utils + */ + function () { + + var exports = { + /** Get the value of a property on an element. */ + getStyleProperty: function(element, propertyName) { + // ... + } + }; + + /** Determine if an element is in the document head. */ + exports.isInHead = function(element) { + // ... + } + + return exports; + } +); diff --git a/third_party/jsdoc/test/fixtures/exportstag4.js b/third_party/jsdoc/test/fixtures/exportstag4.js new file mode 100644 index 0000000000..3097a5650d --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exportstag4.js @@ -0,0 +1,12 @@ +define( + /** @exports some/module */ + function () { + /** @class */ + function myClass() {} + + /** Some method */ + myClass.prototype.myMethod = function () {}; + + return new myClass(); + } +); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/exportstag5.js b/third_party/jsdoc/test/fixtures/exportstag5.js new file mode 100644 index 0000000000..b2c5fc8e08 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exportstag5.js @@ -0,0 +1,13 @@ +define(function() { + 'use strict'; + var bar = function() {}; + /** @exports Foo */ + var Foo = Object.create( + /** @lends module:Foo.prototype */ + { + /** This should be in the Foo module doc. */ + bar : function() {} + } + ); + return Foo; +}); diff --git a/third_party/jsdoc/test/fixtures/exportstag6.js b/third_party/jsdoc/test/fixtures/exportstag6.js new file mode 100644 index 0000000000..18bca55ede --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exportstag6.js @@ -0,0 +1,18 @@ +define(function( +/** + * A module representing a shirt. + * @exports my/shirt + * @version 1.0 + */ +shirtModule) { + /** A property of the module. */ + shirtModule.color = 'black'; + + /** @constructor */ + shirtModule.Turtleneck = function(size) { + /** A property of the class. */ + this.size = size; + }; + + return shirtModule; +}); diff --git a/third_party/jsdoc/test/fixtures/exportstag7.js b/third_party/jsdoc/test/fixtures/exportstag7.js new file mode 100644 index 0000000000..8236f2c5cc --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exportstag7.js @@ -0,0 +1,16 @@ +'use strict'; + +/** @exports my/shirt */ +var myShirt = exports; + +/** A property of the module. */ +myShirt.color = 'black'; + +/** @constructor */ +myShirt.Turtleneck = function(size) { + /** A property of the class. */ + this.size = size; +}; + +/** Iron the turtleneck. */ +myShirt.Turtleneck.prototype.iron = function() {}; diff --git a/third_party/jsdoc/test/fixtures/exportstag8.js b/third_party/jsdoc/test/fixtures/exportstag8.js new file mode 100644 index 0000000000..87b52aa6a8 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/exportstag8.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @exports module:my/shirt */ +var myShirt = exports; diff --git a/third_party/jsdoc/test/fixtures/externaltag.js b/third_party/jsdoc/test/fixtures/externaltag.js new file mode 100644 index 0000000000..d68e05fb46 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/externaltag.js @@ -0,0 +1,24 @@ +/** + * The built in string object. + * @external String + * @see {@link https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String String} + */ + +/** + * Adds a new method to the built-in string. + * @function external:String#rot13 + * @example + * var greeting = new String('hello world'); + * console.log( greeting.rot13() ); // uryyb jbeyq + */ + +/** + * The jQuery plugin namespace. + * @external "jQuery.fn" + * @see {@link http://docs.jquery.com/Plugins/Authoring The jQuery Plugin Guide} + */ + +/** + * A jQuery plugin to make stars fly around your home page. + * @function external:"jQuery.fn".starfairy + */ diff --git a/third_party/jsdoc/test/fixtures/externaltag2.js b/third_party/jsdoc/test/fixtures/externaltag2.js new file mode 100644 index 0000000000..0099f0c1f3 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/externaltag2.js @@ -0,0 +1,11 @@ +/** + Namespace provided by the browser. + @external XMLHttpRequest + @see https://developer.mozilla.org/en/xmlhttprequest + */ + +/** + Extends the built in XMLHttpRequest to send data encoded with a secret key. + @class EncryptedRequest + @extends external:XMLHttpRequest +*/ \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/externaltag3.js b/third_party/jsdoc/test/fixtures/externaltag3.js new file mode 100644 index 0000000000..4948c8eb47 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/externaltag3.js @@ -0,0 +1,22 @@ +/** + * The built in string object. + * @external {String} + * @see {@link https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String String} + */ + +/** + * Adds a new method to the built-in string. + * @function external:String#rot13 + * @example + * var greeting = new String('hello world'); + * console.log( greeting.rot13() ); // uryyb jbeyq + */ + +/** + * @external {"foo.bar.baz"} + */ + + /** + * Blah blah + * @function external:"foo.bar.baz"#blah + */ diff --git a/third_party/jsdoc/test/fixtures/file.js b/third_party/jsdoc/test/fixtures/file.js new file mode 100644 index 0000000000..e6d62cdc2d --- /dev/null +++ b/third_party/jsdoc/test/fixtures/file.js @@ -0,0 +1,7 @@ +/** + * @overview This is a file doclet. + * @copyright Michael Mathews 2011 + */ + +function ignoreMe() { +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/funcExpression.js b/third_party/jsdoc/test/fixtures/funcExpression.js new file mode 100644 index 0000000000..924a659fb7 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/funcExpression.js @@ -0,0 +1,7 @@ +/** @class */ +var Foo = function Bar(a) { + /** document me */ + var var1 = 1; + /** document me */ + this.member1 = 2; +}; diff --git a/third_party/jsdoc/test/fixtures/funcExpression2.js b/third_party/jsdoc/test/fixtures/funcExpression2.js new file mode 100644 index 0000000000..0223092ab4 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/funcExpression2.js @@ -0,0 +1,7 @@ +/** @class */ +Foo = function Bar(a) { + /** document me */ + var var1 = 1; + /** document me */ + this.member1 = 2; +}; diff --git a/third_party/jsdoc/test/fixtures/funcExpression3.js b/third_party/jsdoc/test/fixtures/funcExpression3.js new file mode 100644 index 0000000000..8f1858161c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/funcExpression3.js @@ -0,0 +1,9 @@ +ns = { + /** @class */ + Foo: function Bar(a) { + /** document me */ + var var1 = 1; + /** document me */ + this.member1 = 2; + } +}; \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/functiontag.js b/third_party/jsdoc/test/fixtures/functiontag.js new file mode 100644 index 0000000000..9783268fc8 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/functiontag.js @@ -0,0 +1,7 @@ +/** @func Foo */ +function Foo() { +} + +/** @method */ +function Bar() { +} diff --git a/third_party/jsdoc/test/fixtures/getset.js b/third_party/jsdoc/test/fixtures/getset.js new file mode 100644 index 0000000000..34a362f3d4 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/getset.js @@ -0,0 +1,37 @@ +/** @class */ +var Person = makeClass( + /** @lends Person# */ + { + /** Set up initial values. */ + initialize: function(name) { + }, + + /** Speak a message. */ + say: function(message) { + return this.name + " says: " + message; + }, + + /** + * The name of the person. + * @type {string} + */ + get name() { + return this._name; + }, + + /** + * @type {string} + * @param val + */ + set name(val) { + this._name = name; + }, + + /** + * @type {number} + */ + get age() { + return 25; + } + } +); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/globaltag.js b/third_party/jsdoc/test/fixtures/globaltag.js new file mode 100644 index 0000000000..935e7a136f --- /dev/null +++ b/third_party/jsdoc/test/fixtures/globaltag.js @@ -0,0 +1,16 @@ +/** + @global + @constructor + */ +window.Bar = new Function('', a, b, c); + +(function() { + + /** @global */ + var foo; + + foo = 'hello foo'; + + this.foo = foo; + +}).apply(window); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/ignoretag.js b/third_party/jsdoc/test/fixtures/ignoretag.js new file mode 100644 index 0000000000..64b21e1015 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/ignoretag.js @@ -0,0 +1,6 @@ +/** + @ignore +*/ +function foo(x) { + +} diff --git a/third_party/jsdoc/test/fixtures/ignoretag2.js b/third_party/jsdoc/test/fixtures/ignoretag2.js new file mode 100644 index 0000000000..1769e7443c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/ignoretag2.js @@ -0,0 +1,6 @@ +/** + @ignore value that shouldn't be here +*/ +function foo(x) { + +} diff --git a/third_party/jsdoc/test/fixtures/inlinecomment.js b/third_party/jsdoc/test/fixtures/inlinecomment.js new file mode 100644 index 0000000000..883d5f0b9b --- /dev/null +++ b/third_party/jsdoc/test/fixtures/inlinecomment.js @@ -0,0 +1,2 @@ +/** Inline Comment 1 */ this.test = function(){} +/** Inline Comment 2 */ this.test2 = function(){}; diff --git a/third_party/jsdoc/test/fixtures/inner.js b/third_party/jsdoc/test/fixtures/inner.js new file mode 100644 index 0000000000..04ec2ca0d3 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/inner.js @@ -0,0 +1,7 @@ +function sendMessage(text) { + /** document me */ + var encoding = 'utf8'; + + /** document me */ + function encrypt(){} +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/innerscope.js b/third_party/jsdoc/test/fixtures/innerscope.js new file mode 100644 index 0000000000..b9acc35fdf --- /dev/null +++ b/third_party/jsdoc/test/fixtures/innerscope.js @@ -0,0 +1,17 @@ +/** @constructor */ +function Message(to) { + + var headers = {}, + response; + + /** document me */ + headers.to = to; + + (function() { + /** document me */ + response.code = '200'; + + /** document me */ + headers.from = ''; + })() +} diff --git a/third_party/jsdoc/test/fixtures/innerscope2.js b/third_party/jsdoc/test/fixtures/innerscope2.js new file mode 100644 index 0000000000..4b82f10ecc --- /dev/null +++ b/third_party/jsdoc/test/fixtures/innerscope2.js @@ -0,0 +1,18 @@ +/** @constructor */ +function Message(to) { + + var headers = {}; + + /** document me */ + headers.to = to; + + (function() { + var headers = { + /** document me */ + cache: {} + }; + + /** document me */ + headers.from = ''; + })() +} diff --git a/third_party/jsdoc/test/fixtures/interface-implements.js b/third_party/jsdoc/test/fixtures/interface-implements.js new file mode 100644 index 0000000000..58b9a3d238 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/interface-implements.js @@ -0,0 +1,73 @@ +'use strict'; + +/** + * @interface + */ +function ITester() {} + +/** + * @type {string} + */ +ITester.prototype.hello = '123'; + +/** + * @enum + */ +ITester.type = { + KEYDOWN: 9, + KEYUP: 11 +}; + +/** + * before each method + */ +ITester.prototype.beforeEach = function() {}; + +/** + * it method. + */ +ITester.prototype.it = function() {}; + +/** + * @constructor + * @implements {ITester} + */ +function MyTester() {} + +/** @type {string} */ +MyTester.prototype.hello = '234'; + +/** @enum */ +MyTester.type = { + /** keyboard up */ + KEYDOWN: 9, + KEYUP: 11, + KEYLEFT: 10 +}; +/** + * my tester's beforeEach method. + */ +MyTester.prototype.beforeEach = function() {}; +MyTester.prototype.it = function() {}; + +/** + * @interface + */ +function IWorker() {} +/** Interface for doing some work. */ +IWorker.prototype.work = function() {}; + +/** + * @constructor + * @implements {IWorker} + */ +function MyWorker() {} +/** Do some work. */ +MyWorker.prototype.work = function() {}; +MyWorker.prototype.process = function() {}; + +/** + * @constructor + * @implements {IWorker} + */ +function MyIncompleteWorker() {} diff --git a/third_party/jsdoc/test/fixtures/jslangnames.js b/third_party/jsdoc/test/fixtures/jslangnames.js new file mode 100644 index 0000000000..a80d9439d0 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/jslangnames.js @@ -0,0 +1,23 @@ +/** @namespace */ +var constructor = { + /** document me */ + toString: function(){} +}; + +/** @namespace */ +var prototype = { + /** document me */ + valueOf: function(){} +}; + +/** + * This is Object + * @namespace Object + */ + +/** + * This is Object.hasOwnProperty + * @method Object.hasOwnProperty + */ + +// NOTE: you can't document a prototype of an object in JSDoc -- seriously, you just can't diff --git a/third_party/jsdoc/test/fixtures/kindtag.js b/third_party/jsdoc/test/fixtures/kindtag.js new file mode 100644 index 0000000000..72c5682f7c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/kindtag.js @@ -0,0 +1,2 @@ +/** @kind function */ +var x; diff --git a/third_party/jsdoc/test/fixtures/lends.js b/third_party/jsdoc/test/fixtures/lends.js new file mode 100644 index 0000000000..0b8381509d --- /dev/null +++ b/third_party/jsdoc/test/fixtures/lends.js @@ -0,0 +1,16 @@ +/** @class */ +var Person = makeClass( + /** @lends Person# */ + { + /** Set up initial values. */ + initialize: function(name) { + /** The name of the person. */ + this.name = name; + }, + + /** Speak a message. */ + say: function(message) { + return this.name + " says: " + message; + } + } +); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/lends2.js b/third_party/jsdoc/test/fixtures/lends2.js new file mode 100644 index 0000000000..d2087512b0 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/lends2.js @@ -0,0 +1,18 @@ + +var Person = makeClass( + /** @lends Person# */ + { + /** Construct a Person. + @constructs Person + */ + initialize: function(name) { + /** The name of the person. */ + this.name = name; + }, + + /** Speak a message. */ + say: function(message) { + return this.name + " says: " + message; + } + } +); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/lends3.js b/third_party/jsdoc/test/fixtures/lends3.js new file mode 100644 index 0000000000..de42828c02 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/lends3.js @@ -0,0 +1,18 @@ +/** @class */ +var Person = makeClass( + /** + * @lends Person# + */ + { + /** Set up initial values. */ + initialize: function(name) { + /** The name of the person. */ + this.name = name; + }, + + /** Speak a message. */ + say: function(message) { + return this.name + " says: " + message; + } + } +); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/lends4.js b/third_party/jsdoc/test/fixtures/lends4.js new file mode 100644 index 0000000000..b3ffb759fd --- /dev/null +++ b/third_party/jsdoc/test/fixtures/lends4.js @@ -0,0 +1,16 @@ +define([], function () { + var Person = makeClass( + /** @lends Person.prototype */ + { + /** @constructs */ + initialize: function(name) { + this.name = name; + }, + /** Speak a message. */ + say: function(message) { + return this.name + " says: " + message; + } + } + ); + return Person; +}); diff --git a/third_party/jsdoc/test/fixtures/lends5.js b/third_party/jsdoc/test/fixtures/lends5.js new file mode 100644 index 0000000000..846cd17aa4 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/lends5.js @@ -0,0 +1,15 @@ +(function() { + /** + * @class Person + */ + function Person(name) {} + + Person.prototype = Object.create(null, /** @lends Person.prototype */ { + /** Speak a message. */ + say: function(message) { + return this.name + " says: " + message; + } + }); + + this.Person = Person; +}).call(this); diff --git a/third_party/jsdoc/test/fixtures/lends6.js b/third_party/jsdoc/test/fixtures/lends6.js new file mode 100644 index 0000000000..db6bb069fd --- /dev/null +++ b/third_party/jsdoc/test/fixtures/lends6.js @@ -0,0 +1,29 @@ +define([], function() { + var Person = makeClass( + /** @lends Person.prototype */ + { + /** @constructs */ + initialize: function(name) { + this.name = name; + }, + /** Speak a message. */ + say: function(message) { + return this.name + " says: " + message; + } + } + ); + + var Robot = makeClass( + /** @lends Robot.prototype */ + { + /** @constructs */ + initialize: function(name) { + this.name = name; + }, + /** Feign emotion. */ + emote: function() { + return this.name + " loves you!"; + } + } + ); +}); diff --git a/third_party/jsdoc/test/fixtures/lendsglobal.js b/third_party/jsdoc/test/fixtures/lendsglobal.js new file mode 100644 index 0000000000..48a41761ea --- /dev/null +++ b/third_party/jsdoc/test/fixtures/lendsglobal.js @@ -0,0 +1,14 @@ +declare({ + globals: /** @lends */ { + + /** document me */ + 'test': function() { }, + + /** @namespace */ + 'test1': { + + /** document me */ + 'test2': function() { } + } + } +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/letkeyword.js b/third_party/jsdoc/test/fixtures/letkeyword.js new file mode 100644 index 0000000000..3cbf88fd5b --- /dev/null +++ b/third_party/jsdoc/test/fixtures/letkeyword.js @@ -0,0 +1,17 @@ +/*global define: true */ +define( [], function() { + "use strict"; + + /** + * My example module. + * @exports exampleModule + */ + let myModule = { + /** + * My example method. + */ + exampleMethod: function() {} + }; + + return myModule; +} ); diff --git a/third_party/jsdoc/test/fixtures/licensetag.js b/third_party/jsdoc/test/fixtures/licensetag.js new file mode 100644 index 0000000000..e9d852f5b3 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/licensetag.js @@ -0,0 +1,2 @@ +/** @license GPL v2 */ +var x; diff --git a/third_party/jsdoc/test/fixtures/linktag.js b/third_party/jsdoc/test/fixtures/linktag.js new file mode 100644 index 0000000000..6f23ff1f7a --- /dev/null +++ b/third_party/jsdoc/test/fixtures/linktag.js @@ -0,0 +1,15 @@ +/** @namespace ns */ +var ns = {}; + +/** +* Similar to [the bar function]{@link bar}. +* @see {@link bar} +*/ +ns.foo = function () { +} + +/** +* @see {@link ns.foo} +*/ +function bar() { +} diff --git a/third_party/jsdoc/test/fixtures/listenstag.js b/third_party/jsdoc/test/fixtures/listenstag.js new file mode 100644 index 0000000000..2c72bdafe2 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/listenstag.js @@ -0,0 +1,33 @@ +/** @module myModule */ + +/** An event (has listeners). + * @event MyEvent + * @memberof module:myModule + * @param {number} foo - asdf. */ + +/** A handler. + * @listens module:myModule.MyEvent + * @listens module:myModule~Events.event:Event2 + * @listens fakeEvent + */ +function MyHandler() { +} + +/** Another handler. + * @listens module:myModule.MyEvent + */ +function AnotherHandler() { +} + +/** a namespace. + * @namespace */ +var Events = { +}; + +/** Another event (has listeners). + * @event Event2 + * @memberof module:myModule~Events + */ + +/** An event with no listeners. + * @event module:myModule#Event3 */ diff --git a/third_party/jsdoc/test/fixtures/markdowntest.md b/third_party/jsdoc/test/fixtures/markdowntest.md new file mode 100644 index 0000000000..276aada8f3 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/markdowntest.md @@ -0,0 +1,10 @@ +This is a header +---- + +This is some text. + + this is some code + +* this +* a +* list \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/memberoftag.js b/third_party/jsdoc/test/fixtures/memberoftag.js new file mode 100644 index 0000000000..33595c93df --- /dev/null +++ b/third_party/jsdoc/test/fixtures/memberoftag.js @@ -0,0 +1,11 @@ +/** @constructor + @memberof mathlib + */ +function Data() { + + /** @member */ + this.point = {}; +} + +/** @namespace */ +mathlib = {Data: Data}; diff --git a/third_party/jsdoc/test/fixtures/memberoftag2.js b/third_party/jsdoc/test/fixtures/memberoftag2.js new file mode 100644 index 0000000000..1f3d1480a2 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/memberoftag2.js @@ -0,0 +1,10 @@ +create( + 'Observable', + { + /** @memberof Observable */ + cache: [], + + /** @memberof Observable.prototype */ + publish: function(msg) {} + } +); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/memberoftag3.js b/third_party/jsdoc/test/fixtures/memberoftag3.js new file mode 100644 index 0000000000..a19f13573b --- /dev/null +++ b/third_party/jsdoc/test/fixtures/memberoftag3.js @@ -0,0 +1,19 @@ +/** @module terrain + @example + var terrain = require('terrain'), + forest = new terrain.Forest(), + tree = new forest.Tree(); +*/ + +/** @class */ +exports.Forest = function(){} +var Forest = exports.Forest; + +/** + @class + @memberof module:terrain +*/ +Forest.prototype.Tree = function() { + /** A leaf */ + this.leaf = 1; +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/memberoftag4.js b/third_party/jsdoc/test/fixtures/memberoftag4.js new file mode 100644 index 0000000000..521343d80a --- /dev/null +++ b/third_party/jsdoc/test/fixtures/memberoftag4.js @@ -0,0 +1,16 @@ +/** + * Namespace doStuff. + * @namespace doStuff + */ + +/** + * Function with the same name as its namespace. + * @memberof doStuff + */ +function doStuff() {} + +/** + * Function with a different name than the namespace. + * @memberof doStuff + */ +function doOtherStuff() {} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/memberoftagforced.js b/third_party/jsdoc/test/fixtures/memberoftagforced.js new file mode 100644 index 0000000000..d116bf5e25 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/memberoftagforced.js @@ -0,0 +1,44 @@ + +/** @constructor +*/ +function Data() { + + /** + The current position. + @type {object} + @property {boolean} needsRevalidate Does this point need to be revalidated? + */ + this.point = { + /** + The x coordinate of the point. + @type {number} + @name point.x + @memberof! Data# + */ + x: 0, + + /** + The y coordinate of the point. + @type {number} + @name point.y + @memberof! Data# + @see {@link Data#point.x} + */ + y: 0, + + needsRevalidate: false + }; +} + +var map = { + /** + @type {Array} + @name map.routes + @memberof! + @property {Data#point} point + */ + routes: [] +} + +/** The current cursor. */ +var cursor = {}; diff --git a/third_party/jsdoc/test/fixtures/membertag.js b/third_party/jsdoc/test/fixtures/membertag.js new file mode 100644 index 0000000000..606b20ad3e --- /dev/null +++ b/third_party/jsdoc/test/fixtures/membertag.js @@ -0,0 +1,8 @@ +/** @member */ +var x; + +/** @var foobar */ +/** @var {string} baz */ + +/** @member {Object} */ +var y; diff --git a/third_party/jsdoc/test/fixtures/mixintag.js b/third_party/jsdoc/test/fixtures/mixintag.js new file mode 100644 index 0000000000..33845f9dfd --- /dev/null +++ b/third_party/jsdoc/test/fixtures/mixintag.js @@ -0,0 +1,26 @@ +/** + * This provides methods used for event handling. It's not meant to + * be used directly, except as a provider of related methods. + * + * @mixin + */ +var Eventful = { + /** fires something. */ + fires: function () {}, + /** handles a signal. */ + on: function () {} +}; + +/** + * @constructor + * @mixes Eventful + */ +var FormButton = function() { +}; + +/** @mixin AnotherMixin*/ + +/** I mix in multiple things + * @constructor MyClass + * @mixes Eventful + * @mixes AnotherMixin */ diff --git a/third_party/jsdoc/test/fixtures/moduleinner.js b/third_party/jsdoc/test/fixtures/moduleinner.js new file mode 100644 index 0000000000..8f0670881b --- /dev/null +++ b/third_party/jsdoc/test/fixtures/moduleinner.js @@ -0,0 +1,28 @@ +/** +* @module my/module +*/ +(function() { + +/** document fooIn */ +fooIn = function() { +}; + +/** @namespace */ +bar = { + /** document bar.Zop */ + zop: function() { + } +} + +/** @constructor */ +exports.Frotz = function() { + /** document exports.Frotz#quaz */ + this.quaz = 1; +} + +}) (); + +/** document fooOut +*/ +fooOut = function() { +}; diff --git a/third_party/jsdoc/test/fixtures/moduleisconstructor.js b/third_party/jsdoc/test/fixtures/moduleisconstructor.js new file mode 100644 index 0000000000..c7a22803e6 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/moduleisconstructor.js @@ -0,0 +1,19 @@ +/** + Describe the module here. + @module mymodule/config +*/ + +/** + Create a new configuration. + + @classdesc Describe the class here. + @class + @alias module:mymodule/config + @param {string} id +*/ +function Config(id) { + /** Document me. */ + this.id = id; +} + +module.exports = Config; \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/moduleisfunction.js b/third_party/jsdoc/test/fixtures/moduleisfunction.js new file mode 100644 index 0000000000..21c29bda5b --- /dev/null +++ b/third_party/jsdoc/test/fixtures/moduleisfunction.js @@ -0,0 +1,10 @@ +/** + * This is a module called foo. + * @module foo + */ + +/** + * The module exports a single function. + * @param {string} bar + */ +module.exports = function(bar) {}; diff --git a/third_party/jsdoc/test/fixtures/modules/data/mod-1.js b/third_party/jsdoc/test/fixtures/modules/data/mod-1.js new file mode 100644 index 0000000000..a5de108fe9 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/modules/data/mod-1.js @@ -0,0 +1,5 @@ +/** @module */ +define({ + property: "foo", + method: function() {} +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/modules/data/mod-2.js b/third_party/jsdoc/test/fixtures/modules/data/mod-2.js new file mode 100644 index 0000000000..1027fd9d3b --- /dev/null +++ b/third_party/jsdoc/test/fixtures/modules/data/mod-2.js @@ -0,0 +1,5 @@ +/** @module my/module/name */ +define({ + property: "foo", + method: function() {} +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/modules/data/mod-3.js b/third_party/jsdoc/test/fixtures/modules/data/mod-3.js new file mode 100644 index 0000000000..00c744f247 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/modules/data/mod-3.js @@ -0,0 +1,21 @@ +/** + My test module. + @module my/module + */ +define(function() { + + /** + @undocumented + @alias module:my/module + */ + var mod = { + + /** Document a property. */ + myProperty: "foo", + + /** Document a method. */ + myMethod: function() {} + }; + + return mod; +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/moduletag.js b/third_party/jsdoc/test/fixtures/moduletag.js new file mode 100644 index 0000000000..fb4c4665c5 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/moduletag.js @@ -0,0 +1,11 @@ +/** + * @module bookshelf + */ + +/** + * @class + */ +this.Book = function(title) { + /** document me */ + this.title = title; +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/moduletag2.js b/third_party/jsdoc/test/fixtures/moduletag2.js new file mode 100644 index 0000000000..0dd0bc3ec1 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/moduletag2.js @@ -0,0 +1,9 @@ +/** @module color/mixer */ + +module.exports = { + /** Blend two colors together. */ + blend: function(color1, color2) { } +} + +/** Darken a color by the given shade. */ +exports.darken = function(color, shade) { } \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/moduletag3.js b/third_party/jsdoc/test/fixtures/moduletag3.js new file mode 100644 index 0000000000..5cea89bb10 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/moduletag3.js @@ -0,0 +1,19 @@ +/** +@module foo/Photo/manager +@desc Manage a collection of photos. +*/ + +/** +Construct a new Photo manager +@constructor module:foo/Photo/manager +@param {String} collectionId The identifier of the managed collection. +*/ +module.exports = function(collectionId) { + + /** + @function module:foo/Photo/manager#getPhoto + @param {String} photoName + */ + this.getPhoto = function() {} + +} diff --git a/third_party/jsdoc/test/fixtures/moduletag4.js b/third_party/jsdoc/test/fixtures/moduletag4.js new file mode 100644 index 0000000000..cbca4746af --- /dev/null +++ b/third_party/jsdoc/test/fixtures/moduletag4.js @@ -0,0 +1,37 @@ +/** @module M1 */ + +/** + * The differnet kind of mouse buttons. + * + * @summary Blah blah + * @readonly + * @enum {string} + */ +exports.MouseButtons = { + Left: "Left", + Middle: "Middle", + Right: "Right" +}; + +/** + * @typedef ClickProperties + * @type {object} + * @property {MouseButtons} Button - Which mouse button is clicking. + */ + +/** + * Virtual comment function + * + * @function VirtualComment + * @static + * @param {string} comment - comment + * + */ + +/** + * Virtual comment function 2 + * @function VirtualComment2 + * @instance + * @param {string} comment - comment + */ + diff --git a/third_party/jsdoc/test/fixtures/moduletag5.js b/third_party/jsdoc/test/fixtures/moduletag5.js new file mode 100644 index 0000000000..ff5b957c7e --- /dev/null +++ b/third_party/jsdoc/test/fixtures/moduletag5.js @@ -0,0 +1,3 @@ +/** + * @module module:bookshelf + */ diff --git a/third_party/jsdoc/test/fixtures/namespacetag.js b/third_party/jsdoc/test/fixtures/namespacetag.js new file mode 100644 index 0000000000..da20b05920 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/namespacetag.js @@ -0,0 +1,11 @@ +/** @namespace */ +var x = { +}; +/** @namespace Foo */ +/** @namespace {function} Bar */ + +/** @namespace */ +var S = { + /** Member of the namespace S. */ + Socket: function() {} +}; diff --git a/third_party/jsdoc/test/fixtures/nametag.js b/third_party/jsdoc/test/fixtures/nametag.js new file mode 100644 index 0000000000..fdf961eebc --- /dev/null +++ b/third_party/jsdoc/test/fixtures/nametag.js @@ -0,0 +1,24 @@ +/** + * A view. + * @name View + */ + +/** + * A controller. + * @name Controller + * @class + */ +function someOtherName() {} + +/** + * Helper methods for models, views, and controllers. + * @name MvcHelpers + * @namespace + */ + +/** + * Add the item to its parent. + * @name addToParent + * @memberof MvcHelpers + * @inner + */ diff --git a/third_party/jsdoc/test/fixtures/objectlit.js b/third_party/jsdoc/test/fixtures/objectlit.js new file mode 100644 index 0000000000..f976cfb446 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/objectlit.js @@ -0,0 +1,8 @@ +/** document me */ +var tools = { + /** document me */ + serialiser: { + /** document me */ + value: '' + } +}; diff --git a/third_party/jsdoc/test/fixtures/objectlit2.js b/third_party/jsdoc/test/fixtures/objectlit2.js new file mode 100644 index 0000000000..072d4eda5a --- /dev/null +++ b/third_party/jsdoc/test/fixtures/objectlit2.js @@ -0,0 +1,8 @@ +/** document me */ +var position = { + axis: { + /** document me */ + x: 0, + y: 0 + } +}; \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/objectlit3.js b/third_party/jsdoc/test/fixtures/objectlit3.js new file mode 100644 index 0000000000..10fb33ec39 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/objectlit3.js @@ -0,0 +1,10 @@ +/** Tokens that can appear in the stream. */ +var tokens = { + /** Open parenthesis. */ + '(': { + /** Executed before the token is processed. */ + before: function(token) {}, + /** Executed after the token is processed. */ + after: function(token) {} + } +}; diff --git a/third_party/jsdoc/test/fixtures/objectpropertykeys.js b/third_party/jsdoc/test/fixtures/objectpropertykeys.js new file mode 100644 index 0000000000..abc611f2d4 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/objectpropertykeys.js @@ -0,0 +1,22 @@ +Call( +{ + methodA: function() + { + this.id = this.createUUID(); + }, + + valueOf: function() + { + return this.id; + }, + + toString: function() + { + return this.id; + } +}); + +//Simple inheritance model with correct constructor +function Test() {} +function Test2() { Test.call(this); } +Test2.prototype = Object.create(Test.prototype, {constructor: {value: Test2}}); \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/paramtag.js b/third_party/jsdoc/test/fixtures/paramtag.js new file mode 100644 index 0000000000..247fdc99ff --- /dev/null +++ b/third_party/jsdoc/test/fixtures/paramtag.js @@ -0,0 +1,55 @@ +/** +* @param { String | Array} targetName The name (or names) of what to find. +*/ +function find(targetName) { +} + +/** +* @param {function} callback +*/ +function bind(callback) { +} + +/** +* @param {function} +*/ +function unbind(callback) { +} + +/** +* @param id The id of the element. +*/ +function getElement(id) { +} + +/** +* @param ... Two or more elements. +*/ +function combine() { +} + +/** +* @param delimiter - What to split on. +*/ +function split(delimiter) { +} + +/** +* @param - If true make the commit atomic. +*/ +function commit(atomic) { +} + +/** + * @param [async=true] - whether to be asynchronous + */ +function request(async) { +} + +/** @class */ +function MySocket() {} +/** + * @param {string} - Hostname. + * @param {number} - Port number. + */ +MySocket.prototype.open = function(hostname, port) {}; diff --git a/third_party/jsdoc/test/fixtures/paramtag2.js b/third_party/jsdoc/test/fixtures/paramtag2.js new file mode 100644 index 0000000000..7b5d3f97dd --- /dev/null +++ b/third_party/jsdoc/test/fixtures/paramtag2.js @@ -0,0 +1,7 @@ +/** @module mysocket */ + +/** + * @param {string} - Hostname. + * @param {number} - Port number. + */ +exports.open = function(hostname, port) {}; diff --git a/third_party/jsdoc/test/fixtures/paramtaginvalidtype.js b/third_party/jsdoc/test/fixtures/paramtaginvalidtype.js new file mode 100644 index 0000000000..2419d3f1a8 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/paramtaginvalidtype.js @@ -0,0 +1,9 @@ +/** + * @constructor + */ +var Test = function () {}; + +/** + * @param {string, number} a + */ +Test.prototype.test = function (a) {}; diff --git a/third_party/jsdoc/test/fixtures/plugins.js b/third_party/jsdoc/test/fixtures/plugins.js new file mode 100644 index 0000000000..d71e6e9dea --- /dev/null +++ b/third_party/jsdoc/test/fixtures/plugins.js @@ -0,0 +1,10 @@ +/** + * @name virtual + */ + +var foo = "bar"; + +/** + * @foo bar + */ +var test = "tada"; \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/privatetag.js b/third_party/jsdoc/test/fixtures/privatetag.js new file mode 100644 index 0000000000..e25b598ceb --- /dev/null +++ b/third_party/jsdoc/test/fixtures/privatetag.js @@ -0,0 +1,9 @@ +/** +* @constructor +* @private +*/ +function Foo() { + + /** document me */ + this.bar = 1; +} diff --git a/third_party/jsdoc/test/fixtures/privatetag2.js b/third_party/jsdoc/test/fixtures/privatetag2.js new file mode 100644 index 0000000000..f41b893aad --- /dev/null +++ b/third_party/jsdoc/test/fixtures/privatetag2.js @@ -0,0 +1,8 @@ +/** + * @private {Object.} + */ +var connectionPorts = { + 'devServer': 6464, + 'prodServer': 2232, + 'stagingServer': 4997 +}; diff --git a/third_party/jsdoc/test/fixtures/projecttag.js b/third_party/jsdoc/test/fixtures/projecttag.js new file mode 100644 index 0000000000..b00c8e2c68 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/projecttag.js @@ -0,0 +1,9 @@ +/** + An automated documentation generator for JavaScript. + @project JSDoc + @version 3.0.0 + @copyright 2011 (c) Michael Mathews + @license Apache Version 2 + */ +function blah(url) { +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/propertytag.js b/third_party/jsdoc/test/fixtures/propertytag.js new file mode 100644 index 0000000000..6448182eb3 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/propertytag.js @@ -0,0 +1,15 @@ +/** + * @namespace + * @property {String} id=abc123 The identifier. + * @property {Object} defaults The default values. + * @property {Number} defaults.a The a property of the defaults. + * @property {String} defaults.b The b property of the defaults. + */ +var myobject = { + id: "abc123", + defaults: { + a: 1, + b: "Hit the light", + c: true + } +}; diff --git a/third_party/jsdoc/test/fixtures/protectedtag.js b/third_party/jsdoc/test/fixtures/protectedtag.js new file mode 100644 index 0000000000..68744ba0ad --- /dev/null +++ b/third_party/jsdoc/test/fixtures/protectedtag.js @@ -0,0 +1,20 @@ +/** @module uid */ + +/** @protected */ +var uidCounter = 1; + +/** @protected */ +var uidObjects = { + /** Root object. */ + root: {} +}; + +/** Obtain a unique ID. */ +exports.getUid = function getUid() { + return uidCounter++; +}; + +/** Associate an object with a unique ID. */ +exports.setObjectForUid = function setObjectForUid(obj, uid) { + uidObjects[uid] = obj; +}; diff --git a/third_party/jsdoc/test/fixtures/protectedtag2.js b/third_party/jsdoc/test/fixtures/protectedtag2.js new file mode 100644 index 0000000000..a67e0a8155 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/protectedtag2.js @@ -0,0 +1,13 @@ +/** @protected {number} */ +var uidCounter = 1; + +/** + * Unique ID generator. + * @constructor + */ +function UidGenerator() {} + +/** Generate a unique ID. */ +UidGenerator.prototype.generate = function generate() { + return uidCounter++; +}; diff --git a/third_party/jsdoc/test/fixtures/quotename.js b/third_party/jsdoc/test/fixtures/quotename.js new file mode 100644 index 0000000000..de907eaf12 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/quotename.js @@ -0,0 +1,18 @@ +/** @namespace */ +var chat = {}; + +/** + @namespace + */ +chat["#channel"] = {}; + +/** + @member + @type {boolean} + @defaultvalue + */ +chat["#channel"].open = true; + +/** + @event chat."#channel"."op:announce-motd" + */ \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/quotename2.js b/third_party/jsdoc/test/fixtures/quotename2.js new file mode 100644 index 0000000000..dd383f1ba1 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/quotename2.js @@ -0,0 +1,10 @@ +/** @namespace */ +var contacts = { + + /** @namespace */ + 'say-"hello"@example.com': { + + /** document me */ + "username": 'Sue Smart' + } +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/readonlytag.js b/third_party/jsdoc/test/fixtures/readonlytag.js new file mode 100644 index 0000000000..9495617fb4 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/readonlytag.js @@ -0,0 +1,8 @@ +/** +* @constructor +*/ +function Collection() { + + /** @readonly */ + this.length = 0; +} diff --git a/third_party/jsdoc/test/fixtures/requirestag.js b/third_party/jsdoc/test/fixtures/requirestag.js new file mode 100644 index 0000000000..49b626fe8a --- /dev/null +++ b/third_party/jsdoc/test/fixtures/requirestag.js @@ -0,0 +1,20 @@ +/** + * @requires module:foo/helper + */ +function foo() { +} + +/** + * @requires foo + * @requires Pez#blat this text is ignored + */ +function bar() { +} + +/** + * @requires {@link module:zest} + * @requires {@linkplain module:zing} + * @requires {@linkstupid module:pizzazz} + */ +function baz() { +} diff --git a/third_party/jsdoc/test/fixtures/returnstag.js b/third_party/jsdoc/test/fixtures/returnstag.js new file mode 100644 index 0000000000..7c6d453543 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/returnstag.js @@ -0,0 +1,23 @@ +/** + * @returns {string|Array} The names of the found item(s). + */ +function find(targetName) { +} + +/** + * @returns {!string} The name, if defined. + */ +function getName() { +} + +/** + * @return The binding id. + */ +function bind(callback) { +} + +/** + * @return An object to be passed to {@link find}. + */ +function convert(name) { +} diff --git a/third_party/jsdoc/test/fixtures/scopetags.js b/third_party/jsdoc/test/fixtures/scopetags.js new file mode 100644 index 0000000000..1eeeb204e8 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/scopetags.js @@ -0,0 +1,10 @@ +/** (scope tags for global objects do not override globalness hence need a container class) + * @module scopetags */ +/** @inner */ +var myInner; + +/** @instance */ +var myInstance; + +/** @static */ +var myStatic; diff --git a/third_party/jsdoc/test/fixtures/seetag.js b/third_party/jsdoc/test/fixtures/seetag.js new file mode 100644 index 0000000000..b439c26183 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/seetag.js @@ -0,0 +1,11 @@ +/** +* @see {@link bar} +*/ +function foo() { +} + +/** +* @see http://example.com/someref +*/ +function bar() { +} diff --git a/third_party/jsdoc/test/fixtures/sincetag.js b/third_party/jsdoc/test/fixtures/sincetag.js new file mode 100644 index 0000000000..890ffb0f14 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/sincetag.js @@ -0,0 +1,6 @@ +/** + @since 1.2.3 +*/ +function foo(x) { + +} diff --git a/third_party/jsdoc/test/fixtures/specialnames.js b/third_party/jsdoc/test/fixtures/specialnames.js new file mode 100644 index 0000000000..d775a0b19f --- /dev/null +++ b/third_party/jsdoc/test/fixtures/specialnames.js @@ -0,0 +1,2 @@ +/** document me */ +var hasOwnProperty = Object.prototype.hasOwnProperty; \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/src/_dir2/four.js b/third_party/jsdoc/test/fixtures/src/_dir2/four.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/jsdoc/test/fixtures/src/_ignored.js b/third_party/jsdoc/test/fixtures/src/_ignored.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/jsdoc/test/fixtures/src/dir1/three.js b/third_party/jsdoc/test/fixtures/src/dir1/three.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/jsdoc/test/fixtures/src/ignored.txt b/third_party/jsdoc/test/fixtures/src/ignored.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/jsdoc/test/fixtures/src/one.js b/third_party/jsdoc/test/fixtures/src/one.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/jsdoc/test/fixtures/src/two.js b/third_party/jsdoc/test/fixtures/src/two.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/third_party/jsdoc/test/fixtures/starbangstar.js b/third_party/jsdoc/test/fixtures/starbangstar.js new file mode 100644 index 0000000000..262da969a2 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/starbangstar.js @@ -0,0 +1,12 @@ +/*!* +* Script that does something awesome +* +* @copyright (c) 2011 Rotorz Limited. All rights reserved. +* @author Lea Hayes +* @module myscript/core +*/ + +/*!********************************* + * This should be ignored by JSDoc + * @var x + */ \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/summarytag.js b/third_party/jsdoc/test/fixtures/summarytag.js new file mode 100644 index 0000000000..b1f4c496d9 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/summarytag.js @@ -0,0 +1,3 @@ +/** @summary I do not like green eggs and ham! */ +function Sam() { +} diff --git a/third_party/jsdoc/test/fixtures/testPlugin1.js b/third_party/jsdoc/test/fixtures/testPlugin1.js new file mode 100644 index 0000000000..282397c350 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/testPlugin1.js @@ -0,0 +1,31 @@ +global.jsdocPluginsTest.plugin1 = {}; + +exports.handlers = { + fileBegin: function() { + global.jsdocPluginsTest.plugin1.fileBegin = true; + }, + beforeParse: function() { + global.jsdocPluginsTest.plugin1.beforeParse = true; + }, + jsdocCommentFound: function() { + global.jsdocPluginsTest.plugin1.jsdocCommentFound = true; + }, + symbolFound: function() { + global.jsdocPluginsTest.plugin1.symbolFound = true; + }, + newDoclet: function() { + global.jsdocPluginsTest.plugin1.newDoclet = true; + }, + fileComplete: function() { + global.jsdocPluginsTest.plugin1.fileComplete = true; + } +}; + +exports.defineTags = function(dictionary) { + dictionary.defineTag("foo", { + canHaveName: true, + onTagged: function(doclet, tag) { + doclet.foo = true; + } + }); +}; diff --git a/third_party/jsdoc/test/fixtures/testPlugin2.js b/third_party/jsdoc/test/fixtures/testPlugin2.js new file mode 100644 index 0000000000..441bc3d511 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/testPlugin2.js @@ -0,0 +1,22 @@ +global.jsdocPluginsTest.plugin2 = {}; + +exports.handlers = { + fileBegin: function() { + global.jsdocPluginsTest.plugin2.fileBegin = true; + }, + beforeParse: function() { + global.jsdocPluginsTest.plugin2.beforeParse = true; + }, + jsdocCommentFound: function() { + global.jsdocPluginsTest.plugin2.jsdocCommentFound = true; + }, + symbolFound: function() { + global.jsdocPluginsTest.plugin2.symbolFound = true; + }, + newDoclet: function() { + global.jsdocPluginsTest.plugin2.newDoclet = true; + }, + fileComplete: function() { + global.jsdocPluginsTest.plugin2.fileComplete = true; + } +}; diff --git a/third_party/jsdoc/test/fixtures/this-and-objectlit.js b/third_party/jsdoc/test/fixtures/this-and-objectlit.js new file mode 100644 index 0000000000..66b22fe533 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/this-and-objectlit.js @@ -0,0 +1,11 @@ +/** @constructor */ +function Page(title) { + this.parts = { + title: title, + body: { + /** document me */ + heading: '', + main: '' + } + }; +} diff --git a/third_party/jsdoc/test/fixtures/this.js b/third_party/jsdoc/test/fixtures/this.js new file mode 100644 index 0000000000..7c167606da --- /dev/null +++ b/third_party/jsdoc/test/fixtures/this.js @@ -0,0 +1,10 @@ +/** + @constructor + */ +function Singer() { + + this.tralala = function() { // method of constructor Singer + /** document me */ + this.isSinging = true; // setting a member of constructor Singer + }; +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/this2.js b/third_party/jsdoc/test/fixtures/this2.js new file mode 100644 index 0000000000..d443ed9cb4 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/this2.js @@ -0,0 +1,15 @@ +/** @constructor */ +function TemplateBuilder(templateType) { + //** document me */ + //this.templateType = templateType; + + /** @constructor */ + this.Template = function() { // nested constructor of constructor TemplateFactory + /** document me */ + this.render = function(data) { + /** document me */ + this.rendered = true; + } + }; + +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/this3.js b/third_party/jsdoc/test/fixtures/this3.js new file mode 100644 index 0000000000..f78279bd5c --- /dev/null +++ b/third_party/jsdoc/test/fixtures/this3.js @@ -0,0 +1,4 @@ +function setPosition(newP) { + /** document me */ + this.position = newP; // sets global property +} diff --git a/third_party/jsdoc/test/fixtures/thistag.js b/third_party/jsdoc/test/fixtures/thistag.js new file mode 100644 index 0000000000..1ea79253fe --- /dev/null +++ b/third_party/jsdoc/test/fixtures/thistag.js @@ -0,0 +1,10 @@ +/** @constructor */ +function Foo(name) { + setName.apply(this, name); +} + +/** @this Foo */ +function setName(name) { + /** document me */ + this.name = name; +} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/todotag.js b/third_party/jsdoc/test/fixtures/todotag.js new file mode 100644 index 0000000000..5ecfac4b32 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/todotag.js @@ -0,0 +1,6 @@ +/** A function. + * @todo something + * @todo something else + */ +function x() { +} diff --git a/third_party/jsdoc/test/fixtures/tutorialtag.js b/third_party/jsdoc/test/fixtures/tutorialtag.js new file mode 100644 index 0000000000..b0124dbee4 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/tutorialtag.js @@ -0,0 +1,5 @@ +/** Some documentation. + * @tutorial tute1 + * @tutorial tute2 + */ +var x; diff --git a/third_party/jsdoc/test/fixtures/typedeftag.js b/third_party/jsdoc/test/fixtures/typedeftag.js new file mode 100644 index 0000000000..6b3512f111 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/typedeftag.js @@ -0,0 +1,13 @@ +/** @typedef {(string|number)} calc.NumberLike */ + +/** @typedef {string} */ +calc.Operator; + +/** @typedef {calc.NumberLike} calc.Result */ +calc.Outcome; + +/** @param {calc.NumberLike} x A number or a string. */ +calc.readNumber = function(x) { +}; + +/** @typedef {Object} CalculatorBattery */ diff --git a/third_party/jsdoc/test/fixtures/typekind.js b/third_party/jsdoc/test/fixtures/typekind.js new file mode 100644 index 0000000000..46d6c1ebf8 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/typekind.js @@ -0,0 +1,17 @@ +/** + @module {ConnectServer} blog/server +*/ + +module.exports = require('connect').createServer( + Connect.logger(), + Connect.conditionalGet(), + Connect.favicon(), + Connect.cache(), + Connect.gzip(), + require('wheat')(__dirname) +); + +/** + @member {number} module:blog/server.port + @default 8080 +*/ \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/typetag.js b/third_party/jsdoc/test/fixtures/typetag.js new file mode 100644 index 0000000000..12300eed0d --- /dev/null +++ b/third_party/jsdoc/test/fixtures/typetag.js @@ -0,0 +1,14 @@ +/** + * @type {string|Array} + */ +var foo; + +/** + * @type integer + */ +var bar = +(new Date()).getTime(); + +/** + * @type {!Array.} + */ +var baz = [1, 2, 3]; diff --git a/third_party/jsdoc/test/fixtures/typetag2.js b/third_party/jsdoc/test/fixtures/typetag2.js new file mode 100644 index 0000000000..25790895c5 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/typetag2.js @@ -0,0 +1,4 @@ +/** + * @type {(string|number)} A string or a number. + */ +var stringOrNumber; diff --git a/third_party/jsdoc/test/fixtures/typetaginline.js b/third_party/jsdoc/test/fixtures/typetaginline.js new file mode 100644 index 0000000000..a763776118 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/typetaginline.js @@ -0,0 +1,35 @@ +/** + * Inline type info only. + */ +function dispense(/** @type {string} */ candy) {} + +/** + * Inline type info that conflicts with `@param` tag. + * + * @class + * @param {number} candyId - The candy's identifier. + */ +function Dispenser(/** @type {string} */ candyId) {} + +/** + * Inline type info for leading param only. + * + * @param {string} item + */ +function restock(/** @type {Dispenser} */ dispenser, item) {} + +/** + * Inline type info for trailing param only. + * + * @param {Dispenser} dispenser + */ +function clean(dispenser, /** @type {string} */ cleaner) {} + +/** + * Inline type info for inner param only. + * + * @param {Dispenser} dispenser + * @param {number} shade + * @param {string} brand + */ +function paint(dispenser, /** @type {Color} */ color, shade, brand) {} diff --git a/third_party/jsdoc/test/fixtures/typetagwithnewline.js b/third_party/jsdoc/test/fixtures/typetagwithnewline.js new file mode 100644 index 0000000000..88a12f183d --- /dev/null +++ b/third_party/jsdoc/test/fixtures/typetagwithnewline.js @@ -0,0 +1,14 @@ +/** @class Matryoshka */ +function Matryoshka() {} + +/** + * @type {(!Array.| + * !Array.>)} + */ +Matryoshka.mini; + +/** + * @type (!Array.|!Array.>| + * !Array.>>) + */ +Matryoshka.mega; diff --git a/third_party/jsdoc/test/fixtures/undocumentedtag.js b/third_party/jsdoc/test/fixtures/undocumentedtag.js new file mode 100644 index 0000000000..01ab4fc350 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/undocumentedtag.js @@ -0,0 +1,3 @@ +/** Undocumented doclet. + * @undocumented */ +var x; diff --git a/third_party/jsdoc/test/fixtures/utf8.js b/third_party/jsdoc/test/fixtures/utf8.js new file mode 100644 index 0000000000..ec6eea741f --- /dev/null +++ b/third_party/jsdoc/test/fixtures/utf8.js @@ -0,0 +1,6 @@ +/** + * @constructor + * @desc Τεκμηρίωση είναι η επικοινωνία! + */ +Test = function() { +}; \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/var.js b/third_party/jsdoc/test/fixtures/var.js new file mode 100644 index 0000000000..30be5e826f --- /dev/null +++ b/third_party/jsdoc/test/fixtures/var.js @@ -0,0 +1,10 @@ +/** document me */ +const GREEN = 1, + RED = 0; + +/** document me */ +var validate = function(){}; + +var i, + /** document me */ + results; \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/variations.js b/third_party/jsdoc/test/fixtures/variations.js new file mode 100644 index 0000000000..68f4911061 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/variations.js @@ -0,0 +1,26 @@ +/** + * @namespace anim + */ + +/** + * @method anim.fadein(1) + * @desc Show the nodelist elements by fading them to opaque. + * @since 1.0 + * + * @param {number} [duration=400] How long the animation will run. + * @param {function} [callback] Called once the animation is complete. + * + * @returns {this} + */ + +/** + * @method anim.fadein(2) + * @desc Show the nodelist elements by fading them to opaque. + * @since 1.4.3 + * + * @param {number} [duration=400] How long the animation will run. + * @param {string} [easing=swing] The easing function for the transition. + * @param {function} [callback] Called once the animation is complete. + * + * @returns {this} + */ diff --git a/third_party/jsdoc/test/fixtures/variations2.js b/third_party/jsdoc/test/fixtures/variations2.js new file mode 100644 index 0000000000..2105c463fb --- /dev/null +++ b/third_party/jsdoc/test/fixtures/variations2.js @@ -0,0 +1,36 @@ +/** +* Describe the namespace. +* @namespace dollar(1) +*/ + +/** +* Describe the constructor. +* @constructor dollar(2) +* @param {object} [options] +*/ + +/** +* Describe the global function. +* @function dollar(3) +* @param {string} selector - The selector string. +*/ +dollar = function(a, b) { +}; + +/** +* Describe the instance method. +* @instance +* @function empty +* @memberof dollar(2) +*/ +dollar.prototype.empty = function() { +} + +/** +* Describe the static method. +* @function klass +* @memberof dollar(1) +* @param {string} name +*/ +dollar.klass = function(name) { +}; diff --git a/third_party/jsdoc/test/fixtures/variations3.js b/third_party/jsdoc/test/fixtures/variations3.js new file mode 100644 index 0000000000..0b3fdfc432 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/variations3.js @@ -0,0 +1,15 @@ +/** +* @constructor +*/ +someObject = function() {} + +/** +* @constructor +* @variation 2 +*/ +someObject = function() {} + +/** +* @memberof someObject(2) +*/ +someMethod = function() {} \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/versiontag.js b/third_party/jsdoc/test/fixtures/versiontag.js new file mode 100644 index 0000000000..c16dad66e4 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/versiontag.js @@ -0,0 +1,6 @@ +/** + @version 1.2.3 +*/ +function foo(x) { + +} diff --git a/third_party/jsdoc/test/fixtures/virtual.js b/third_party/jsdoc/test/fixtures/virtual.js new file mode 100644 index 0000000000..4eb25c1d20 --- /dev/null +++ b/third_party/jsdoc/test/fixtures/virtual.js @@ -0,0 +1,3 @@ +/** @name dimensions */ + +var width = 12 \ No newline at end of file diff --git a/third_party/jsdoc/test/fixtures/virtual2.js b/third_party/jsdoc/test/fixtures/virtual2.js new file mode 100644 index 0000000000..329b2ab3fd --- /dev/null +++ b/third_party/jsdoc/test/fixtures/virtual2.js @@ -0,0 +1,28 @@ +var Person = Klass.extend( +/** @lends Person.prototype */ +{ + /** @constructs Person */ + initialize: function(name) { + this.name = name; + }, + + /** + * Callback for `say`. + * + * @callback Person~sayCallback + * @param {?string} err - Information about the error, if any. + * @param {?string} message - The message. + */ + /** + * Speak a message asynchronously. + * + * @param {Person~sayCallback} cb + */ + say: function(message, cb) { + if (!message) { + cb('You forgot the message!'); + } + + cb(null, this.name + ' says: ' + message); + } +}); diff --git a/third_party/jsdoc/test/fixtures/virtual3.js b/third_party/jsdoc/test/fixtures/virtual3.js new file mode 100644 index 0000000000..9be56164ae --- /dev/null +++ b/third_party/jsdoc/test/fixtures/virtual3.js @@ -0,0 +1,11 @@ +/** @module connection + +/** + * @param {string} name - The connection name. + * @constructor module:connection + *//** + * @constructor module:connection + */ +module.exports = function() { + // ... +}; diff --git a/third_party/jsdoc/test/jasmine-jsdoc.js b/third_party/jsdoc/test/jasmine-jsdoc.js new file mode 100644 index 0000000000..ecf0a6acdf --- /dev/null +++ b/third_party/jsdoc/test/jasmine-jsdoc.js @@ -0,0 +1,187 @@ +/*global env: true, expect: true, runs: true, waits: true */ +var fs = require('jsdoc/fs'); +var path = require('jsdoc/path'); +var util = require('util'); + +var jsdoc = { + augment: require('jsdoc/augment'), + borrow: require('jsdoc/borrow'), + schema: require('jsdoc/schema'), + src: { + handlers: require('jsdoc/src/handlers'), + parser: require('jsdoc/src/parser') + }, + util: { + runtime: require('jsdoc/util/runtime') + } +}; + +var hasOwnProp = Object.prototype.hasOwnProperty; + +var jasmineAll = require('./lib/jasmine'); +var jasmine = jasmineAll.jasmine; +var jasmineNode = ( require('./reporter') )(jasmine); + +var reporter = null; + +var parseResults = []; + +jasmine.addParseResults = function(filename, doclets) { + parseResults.push({ + filename: filename, + doclets: doclets + }); +}; + +jasmine.getParseResults = function() { + return parseResults; +}; + +// use the requested parser, or default to Esprima (on Node.js) or Rhino (on Rhino) +jasmine.jsParser = (function() { + var parser = jsdoc.util.runtime.isRhino() ? 'rhino' : 'esprima'; + + if (env.opts.query && env.opts.query.parser) { + parser = env.opts.query.parser; + // remove this so the config tests don't complain + delete env.opts.query; + } + + return parser; +})(); + +jasmine.initialize = function(done, verbose) { + var jasmineEnv = jasmine.getEnv(); + + if (reporter !== null) { + // If we've run before, we need to reset the runner + jasmineEnv.currentRunner_ = new jasmine.Runner(jasmineEnv); + // And clear the reporter + jasmineEnv.reporter.subReporters_.splice(jasmineEnv.reporter.subReporters_.indexOf(reporter)); + } + + var reporterOpts = { + color: env.opts.nocolor === true ? false : true, + onComplete: done + }; + + reporter = env.opts.verbose ? new jasmineNode.TerminalVerboseReporter(reporterOpts) : + new jasmineNode.TerminalReporter(reporterOpts); + jasmineEnv.addReporter(reporter); + + // updateInterval is set to 0 because there were not-fully-understood + // issues with asynchronous behavior in jasmine otherwise. + jasmineEnv.updateInterval = 0; + + return jasmineEnv; +}; + +jasmine.createParser = function(type) { + return jsdoc.src.parser.createParser(type || jasmine.jsParser); +}; + +function capitalize(str) { + return str[0].toUpperCase() + str.slice(1); +} + +/** + * Execute the specs in the specified folder. + * + * @param {string} folder The folder in which the specs are to be found. + * @param {function?} done Callback function to execute when finished. + * @param {object} opts Options for executing the specs. + * @param {boolean} opts.verbose Whether or not to output verbose results. + * @param {RegExp} opts.matcher A regular expression to filter specs by. Only matching specs run. + */ +jasmine.executeSpecsInFolder = function(folder, done, opts) { + var fileMatcher = opts.matcher || new RegExp(".(js)$", "i"), + specs = require('./spec-collection'), + jasmineEnv = jasmine.initialize(done, opts.verbose); + + // Load the specs + specs.load(folder, fileMatcher, true); + + var specsList = specs.getSpecs(); + var filename; + + // Add the specs to the context + for (var i = 0, len = specsList.length; i < len; ++i) { + filename = specsList[i]; + require(filename.path().replace(/\\/g, '/'). + replace(new RegExp('^' + env.dirname + '/test'), './'). + replace(/\.\w+$/, '')); + } + + // Run Jasmine + jasmineEnv.execute(); +}; + +function now() { + return new Date().getTime(); +} + +jasmine.asyncSpecWait = function() { + var wait = this.asyncSpecWait; + wait.start = now(); + wait.done = false; + (function innerWait() { + waits(10); + runs(function() { + if (wait.start + wait.timeout < now()) { + expect('timeout waiting for spec').toBeNull(); + } else if (wait.done) { + wait.done = false; + } else { + innerWait(); + } + }); + })(); +}; +jasmine.asyncSpecWait.timeout = 4 * 1000; +jasmine.asyncSpecDone = function() { + jasmine.asyncSpecWait.done = true; +}; + +jasmine.getDocSetFromFile = function(filename, parser, validate) { + var doclets; + var validationResult; + + var sourceCode = fs.readFileSync( path.join(env.dirname, filename), 'utf8' ); + var testParser = parser || jasmine.createParser(); + + jsdoc.src.handlers.attachTo(testParser); + + doclets = testParser.parse('javascript:' + sourceCode); + jsdoc.borrow.indexAll(doclets); + + jsdoc.augment.addInherited(doclets); + jsdoc.augment.addImplemented(doclets); + + // test assume borrows have not yet been resolved + // require('jsdoc/borrow').resolveBorrows(doclets); + + // store the parse results for later validation + if (validate !== false) { + jasmine.addParseResults(filename, doclets); + } + + return { + doclets: doclets, + getByLongname: function(longname) { + return doclets.filter(function(doclet) { + return (doclet.longname || doclet.name) === longname; + }); + } + }; +}; + +// set up jasmine's global functions +Object.keys(jasmine).forEach(function(key) { + exports[key] = global[key] = jasmine[key]; +}); +global.jasmine = jasmine; +require('./async-callback'); +['spyOn', 'it', 'xit', 'expect', 'runs', 'waitsFor', 'beforeEach', 'afterEach', 'describe', + 'xdescribe'].forEach(function(item) { + global[item] = jasmineAll[item]; +}); diff --git a/third_party/jsdoc/test/lib/jasmine.js b/third_party/jsdoc/test/lib/jasmine.js new file mode 100644 index 0000000000..a261473dc7 --- /dev/null +++ b/third_party/jsdoc/test/lib/jasmine.js @@ -0,0 +1,2537 @@ +var isCommonJS = typeof window == "undefined"; + +/** + * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework. + * + * @namespace + */ +var jasmine = {}; +if (isCommonJS){exports.jasmine = jasmine;} +/** + * @private + */ +jasmine.unimplementedMethod_ = function() { + throw new Error("unimplemented method"); +}; + +/** + * Use jasmine.undefined instead of undefined, since undefined is just + * a plain old variable and may be redefined by somebody else. + * + * @private + */ +jasmine.undefined = jasmine.___undefined___; + +/** + * Show diagnostic messages in the console if set to true + * + */ +jasmine.VERBOSE = false; + +/** + * Default interval in milliseconds for event loop yields (e.g. to allow network activity or to refresh the screen with the HTML-based runner). Small values here may result in slow test running. Zero means no updates until all tests have completed. + * + */ +jasmine.DEFAULT_UPDATE_INTERVAL = 250; + +/** + * Default timeout interval in milliseconds for waitsFor() blocks. + */ +jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000; + +jasmine.getGlobal = function() { + function getGlobal() { + return this; + } + + return getGlobal(); +}; + +/** + * Allows for bound functions to be compared. Internal use only. + * + * @ignore + * @private + * @param base {Object} bound 'this' for the function + * @param name {Function} function to find + */ +jasmine.bindOriginal_ = function(base, name) { + var original = base[name]; + if (original.apply) { + return function() { + return original.apply(base, arguments); + }; + } else { + // IE support + return jasmine.getGlobal()[name]; + } +}; + +jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout'); +jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout'); +jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval'); +jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval'); + +jasmine.MessageResult = function(values) { + this.type = 'log'; + this.values = values; + this.trace = new Error(); // todo: test better +}; + +jasmine.MessageResult.prototype.toString = function() { + var text = ""; + for (var i = 0; i < this.values.length; i++) { + if (i > 0){text += " ";} + if (jasmine.isString_(this.values[i])) { + text += this.values[i]; + } else { + text += jasmine.pp(this.values[i]); + } + } + return text; +}; + +jasmine.ExpectationResult = function(params) { + this.type = 'expect'; + this.matcherName = params.matcherName; + this.passed_ = params.passed; + this.expected = params.expected; + this.actual = params.actual; + this.message = this.passed_ ? 'Passed.' : params.message; + + var trace = (params.trace || new Error(this.message)); + this.trace = this.passed_ ? '' : trace; +}; + +jasmine.ExpectationResult.prototype.toString = function () { + return this.message; +}; + +jasmine.ExpectationResult.prototype.passed = function () { + return this.passed_; +}; + +/** + * Getter for the Jasmine environment. Ensures one gets created + */ +jasmine.getEnv = function() { + var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env(); + return env; +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isArray_ = function(value) { + return jasmine.isA_("Array", value); +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isString_ = function(value) { + return jasmine.isA_("String", value); +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isNumber_ = function(value) { + return jasmine.isA_("Number", value); +}; + +/** + * @ignore + * @private + * @param {String} typeName + * @param value + * @returns {Boolean} + */ +jasmine.isA_ = function(typeName, value) { + return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; +}; + +/** + * Pretty printer for expecations. Takes any object and turns it into a human-readable string. + * + * @param value {Object} an object to be outputted + * @returns {String} + */ +jasmine.pp = function(value) { + var stringPrettyPrinter = new jasmine.StringPrettyPrinter(); + stringPrettyPrinter.format(value); + return stringPrettyPrinter.string; +}; + +/** + * Returns true if the object is a DOM Node. + * + * @param {Object} obj object to check + * @returns {Boolean} + */ +jasmine.isDomNode = function(obj) { + return obj.nodeType > 0; +}; + +/** + * Returns a matchable 'generic' object of the class type. For use in expecations of type when values don't matter. + * + * @example + * // don't care about which function is passed in, as long as it's a function + * expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function)); + * + * @param {Class} clazz + * @returns matchable object of the type clazz + */ +jasmine.any = function(clazz) { + return new jasmine.Matchers.Any(clazz); +}; + +/** + * Returns a matchable subset of a JSON object. For use in expectations when you don't care about all of the + * attributes on the object. + * + * @example + * // don't care about any other attributes than foo. + * expect(mySpy).toHaveBeenCalledWith(jasmine.objectContaining({foo: "bar"}); + * + * @param sample {Object} sample + * @returns matchable object for the sample + */ +jasmine.objectContaining = function (sample) { + return new jasmine.Matchers.ObjectContaining(sample); +}; + +/** + * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks. + * + * Spies should be created in test setup, before expectations. They can then be checked, using the standard Jasmine + * expectation syntax. Spies can be checked if they were called or not and what the calling params were. + * + * A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs). + * + * Spies are torn down at the end of every spec. + * + * Note: Do not call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj. + * + * @example + * // a stub + * var myStub = jasmine.createSpy('myStub'); // can be used anywhere + * + * // spy example + * var foo = { + * not: function(bool) { return !bool; } + * } + * + * // actual foo.not will not be called, execution stops + * spyOn(foo, 'not'); + + // foo.not spied upon, execution will continue to implementation + * spyOn(foo, 'not').andCallThrough(); + * + * // fake example + * var foo = { + * not: function(bool) { return !bool; } + * } + * + * // foo.not(val) will return val + * spyOn(foo, 'not').andCallFake(function(value) {return value;}); + * + * // mock example + * foo.not(7 == 7); + * expect(foo.not).toHaveBeenCalled(); + * expect(foo.not).toHaveBeenCalledWith(true); + * + * @constructor + * @see spyOn, jasmine.createSpy, jasmine.createSpyObj + * @param {String} name + */ +jasmine.Spy = function(name) { + /** + * The name of the spy, if provided. + */ + this.identity = name || 'unknown'; + /** + * Is this Object a spy? + */ + this.isSpy = true; + /** + * The actual function this spy stubs. + */ + this.plan = function() { + }; + /** + * Tracking of the most recent call to the spy. + * @example + * var mySpy = jasmine.createSpy('foo'); + * mySpy(1, 2); + * mySpy.mostRecentCall.args = [1, 2]; + */ + this.mostRecentCall = {}; + + /** + * Holds arguments for each call to the spy, indexed by call count + * @example + * var mySpy = jasmine.createSpy('foo'); + * mySpy(1, 2); + * mySpy(7, 8); + * mySpy.mostRecentCall.args = [7, 8]; + * mySpy.argsForCall[0] = [1, 2]; + * mySpy.argsForCall[1] = [7, 8]; + */ + this.argsForCall = []; + this.calls = []; +}; + +/** + * Tells a spy to call through to the actual implemenatation. + * + * @example + * var foo = { + * bar: function() { // do some stuff } + * } + * + * // defining a spy on an existing property: foo.bar + * spyOn(foo, 'bar').andCallThrough(); + */ +jasmine.Spy.prototype.andCallThrough = function() { + this.plan = this.originalValue; + return this; +}; + +/** + * For setting the return value of a spy. + * + * @example + * // defining a spy from scratch: foo() returns 'baz' + * var foo = jasmine.createSpy('spy on foo').andReturn('baz'); + * + * // defining a spy on an existing property: foo.bar() returns 'baz' + * spyOn(foo, 'bar').andReturn('baz'); + * + * @param {Object} value + */ +jasmine.Spy.prototype.andReturn = function(value) { + this.plan = function() { + return value; + }; + return this; +}; + +/** + * For throwing an exception when a spy is called. + * + * @example + * // defining a spy from scratch: foo() throws an exception w/ message 'ouch' + * var foo = jasmine.createSpy('spy on foo').andThrow('baz'); + * + * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch' + * spyOn(foo, 'bar').andThrow('baz'); + * + * @param {String} exceptionMsg + */ +jasmine.Spy.prototype.andThrow = function(exceptionMsg) { + this.plan = function() { + throw exceptionMsg; + }; + return this; +}; + +/** + * Calls an alternate implementation when a spy is called. + * + * @example + * var baz = function() { + * // do some stuff, return something + * } + * // defining a spy from scratch: foo() calls the function baz + * var foo = jasmine.createSpy('spy on foo').andCall(baz); + * + * // defining a spy on an existing property: foo.bar() calls an anonymnous function + * spyOn(foo, 'bar').andCall(function() { return 'baz';} ); + * + * @param {Function} fakeFunc + */ +jasmine.Spy.prototype.andCallFake = function(fakeFunc) { + this.plan = fakeFunc; + return this; +}; + +/** + * Resets all of a spy's the tracking variables so that it can be used again. + * + * @example + * spyOn(foo, 'bar'); + * + * foo.bar(); + * + * expect(foo.bar.callCount).toEqual(1); + * + * foo.bar.reset(); + * + * expect(foo.bar.callCount).toEqual(0); + */ +jasmine.Spy.prototype.reset = function() { + this.wasCalled = false; + this.callCount = 0; + this.argsForCall = []; + this.calls = []; + this.mostRecentCall = {}; +}; + +jasmine.createSpy = function(name) { + + var spyObj = function() { + spyObj.wasCalled = true; + spyObj.callCount++; + var args = jasmine.util.argsToArray(arguments); + spyObj.mostRecentCall.object = this; + spyObj.mostRecentCall.args = args; + spyObj.argsForCall.push(args); + spyObj.calls.push({object: this, args: args}); + return spyObj.plan.apply(this, arguments); + }; + + var spy = new jasmine.Spy(name); + + for (var prop in spy) { + spyObj[prop] = spy[prop]; + } + + spyObj.reset(); + + return spyObj; +}; + +/** + * Determines whether an object is a spy. + * + * @param {jasmine.Spy|Object} putativeSpy + * @returns {Boolean} + */ +jasmine.isSpy = function(putativeSpy) { + return putativeSpy && putativeSpy.isSpy; +}; + +/** + * Creates a more complicated spy: an Object that has every property a function that is a spy. Used for stubbing something + * large in one call. + * + * @param {String} baseName name of spy class + * @param {Array} methodNames array of names of methods to make spies + */ +jasmine.createSpyObj = function(baseName, methodNames) { + if (!jasmine.isArray_(methodNames) || methodNames.length === 0) { + throw new Error('createSpyObj requires a non-empty array of method names to create spies for'); + } + var obj = {}; + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]); + } + return obj; +}; + +/** + * All parameters are pretty-printed and concatenated together, then written to the current spec's output. + * + * Be careful not to leave calls to jasmine.log in production code. + */ +jasmine.log = function() { + var spec = jasmine.getEnv().currentSpec; + spec.log.apply(spec, arguments); +}; + +/** + * Function that installs a spy on an existing object's method name. Used within a Spec to create a spy. + * + * @example + * // spy example + * var foo = { + * not: function(bool) { return !bool; } + * } + * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops + * + * @see jasmine.createSpy + * @param obj + * @param methodName + * @returns a Jasmine spy that can be chained with all spy methods + */ +var spyOn = function(obj, methodName) { + return jasmine.getEnv().currentSpec.spyOn(obj, methodName); +}; +if (isCommonJS){exports.spyOn = spyOn;} + +/** + * Creates a Jasmine spec that will be added to the current suite. + * + * // TODO: pending tests + * + * @example + * it('should be true', function() { + * expect(true).toEqual(true); + * }); + * + * @param {String} desc description of this specification + * @param {Function} func defines the preconditions and expectations of the spec + */ +var it = function(desc, func) { + return jasmine.getEnv().it(desc, func); +}; +if (isCommonJS){exports.it = it;} + +/** + * Creates a disabled Jasmine spec. + * + * A convenience method that allows existing specs to be disabled temporarily during development. + * + * @param {String} desc description of this specification + * @param {Function} func defines the preconditions and expectations of the spec + */ +var xit = function(desc, func) { + return jasmine.getEnv().xit(desc, func); +}; +if (isCommonJS){exports.xit = xit;} + +/** + * Starts a chain for a Jasmine expectation. + * + * It is passed an Object that is the actual value and should chain to one of the many + * jasmine.Matchers functions. + * + * @param {Object} actual Actual value to test against and expected value + */ +var expect = function(actual) { + return jasmine.getEnv().currentSpec.expect(actual); +}; +if (isCommonJS){exports.expect = expect;} + +/** + * Defines part of a jasmine spec. Used in cominbination with waits or waitsFor in asynchrnous specs. + * + * @param {Function} func Function that defines part of a jasmine spec. + */ +var runs = function(func) { + jasmine.getEnv().currentSpec.runs(func); +}; +if (isCommonJS){exports.runs = runs;} + +/** + * Waits a fixed time period before moving to the next block. + * + * @deprecated Use waitsFor() instead + * @param {Number} timeout milliseconds to wait + */ +var waits = function(timeout) { + jasmine.getEnv().currentSpec.waits(timeout); +}; +if (isCommonJS){exports.waits = waits;} + +/** + * Waits for the latchFunction to return true before proceeding to the next block. + * + * @param {Function} latchFunction + * @param {String} optional_timeoutMessage + * @param {Number} optional_timeout + */ +var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { + jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments); +}; +if (isCommonJS){exports.waitsFor = waitsFor;} + +/** + * A function that is called before each spec in a suite. + * + * Used for spec setup, including validating assumptions. + * + * @param {Function} beforeEachFunction + */ +var beforeEach = function(beforeEachFunction) { + jasmine.getEnv().beforeEach(beforeEachFunction); +}; +if (isCommonJS){exports.beforeEach = beforeEach;} + +/** + * A function that is called after each spec in a suite. + * + * Used for restoring any state that is hijacked during spec execution. + * + * @param {Function} afterEachFunction + */ +var afterEach = function(afterEachFunction) { + jasmine.getEnv().afterEach(afterEachFunction); +}; +if (isCommonJS){exports.afterEach = afterEach;} + +/** + * Defines a suite of specifications. + * + * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared + * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization + * of setup in some tests. + * + * @example + * // TODO: a simple suite + * + * // TODO: a simple suite with a nested describe block + * + * @param {String} description A string, usually the class under test. + * @param {Function} specDefinitions function that defines several specs. + */ +var describe = function(description, specDefinitions) { + return jasmine.getEnv().describe(description, specDefinitions); +}; +if (isCommonJS){exports.describe = describe;} + +/** + * Disables a suite of specifications. Used to disable some suites in a file, or files, temporarily during development. + * + * @param {String} description A string, usually the class under test. + * @param {Function} specDefinitions function that defines several specs. + */ +var xdescribe = function(description, specDefinitions) { + return jasmine.getEnv().xdescribe(description, specDefinitions); +}; +if (isCommonJS){exports.xdescribe = xdescribe;} + +// Provide the XMLHttpRequest class for IE 5.x-6.x: +jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() { + function tryIt(f) { + try { + return f(); + } catch(e) { + } + return null; + } + + var xhr = tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP.6.0"); + }) || + tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP.3.0"); + }) || + tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP"); + }) || + tryIt(function() { + return new ActiveXObject("Microsoft.XMLHTTP"); + }); + + if (!xhr) { + throw new Error("This browser does not support XMLHttpRequest."); +} + + return xhr; +} : XMLHttpRequest; +/** + * @namespace + */ +jasmine.util = {}; + +/** + * Declare that a child class inherit it's prototype from the parent class. + * + * @private + * @param {Function} childClass + * @param {Function} parentClass + */ +jasmine.util.inherit = function(childClass, parentClass) { + /** + * @private + */ + var subclass = function() { + }; + subclass.prototype = parentClass.prototype; + childClass.prototype = new subclass(); +}; + +jasmine.util.formatException = function(e) { + var lineNumber; + if (e.line) { + lineNumber = e.line; + } + else if (e.lineNumber) { + lineNumber = e.lineNumber; + } + + var file; + + if (e.sourceURL) { + file = e.sourceURL; + } + else if (e.fileName) { + file = e.fileName; + } + + var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString(); + + if (file && lineNumber) { + message += ' in ' + file + ' (line ' + lineNumber + ')'; + } + + return message; +}; + +jasmine.util.htmlEscape = function(str) { + if (!str) { + return str; +} + return str.replace(/&/g, '&') + .replace(//g, '>'); +}; + +jasmine.util.argsToArray = function(args) { + var arrayOfArgs = []; + for (var i = 0; i < args.length; i++) {arrayOfArgs.push(args[i]);} + return arrayOfArgs; +}; + +jasmine.util.extend = function(destination, source) { + for (var property in source) destination[property] = source[property]; + return destination; +}; + +/** + * Environment for Jasmine + * + * @constructor + */ +jasmine.Env = function() { + this.currentSpec = null; + this.currentSuite = null; + this.currentRunner_ = new jasmine.Runner(this); + + this.reporter = new jasmine.MultiReporter(); + + this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL; + this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL; + this.lastUpdate = 0; + this.specFilter = function() { + return true; + }; + + this.nextSpecId_ = 0; + this.nextSuiteId_ = 0; + this.equalityTesters_ = []; + + // wrap matchers + this.matchersClass = function() { + jasmine.Matchers.apply(this, arguments); + }; + jasmine.util.inherit(this.matchersClass, jasmine.Matchers); + + jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass); +}; + +jasmine.Env.prototype.setTimeout = jasmine.setTimeout; +jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout; +jasmine.Env.prototype.setInterval = jasmine.setInterval; +jasmine.Env.prototype.clearInterval = jasmine.clearInterval; + +/** + * @returns an object containing jasmine version build info, if set. + */ +jasmine.Env.prototype.version = function () { + if (jasmine.version_) { + return jasmine.version_; + } else { + throw new Error('Version not set'); + } +}; + +/** + * @returns string containing jasmine version build info, if set. + */ +jasmine.Env.prototype.versionString = function() { + if (!jasmine.version_) { + return "version unknown"; + } + + var version = this.version(); + var versionString = version.major + "." + version.minor + "." + version.build; + if (version.release_candidate) { + versionString += ".rc" + version.release_candidate; + } + versionString += " revision " + version.revision; + return versionString; +}; + +/** + * @returns a sequential integer starting at 0 + */ +jasmine.Env.prototype.nextSpecId = function () { + return this.nextSpecId_++; +}; + +/** + * @returns a sequential integer starting at 0 + */ +jasmine.Env.prototype.nextSuiteId = function () { + return this.nextSuiteId_++; +}; + +/** + * Register a reporter to receive status updates from Jasmine. + * @param {jasmine.Reporter} reporter An object which will receive status updates. + */ +jasmine.Env.prototype.addReporter = function(reporter) { + this.reporter.addReporter(reporter); +}; + +jasmine.Env.prototype.execute = function() { + this.currentRunner_.execute(); +}; + +jasmine.Env.prototype.describe = function(description, specDefinitions) { + var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite); + + var parentSuite = this.currentSuite; + if (parentSuite) { + parentSuite.add(suite); + } else { + this.currentRunner_.add(suite); + } + + this.currentSuite = suite; + + var declarationError = null; + try { + specDefinitions.call(suite); + } catch(e) { + declarationError = e; + } + + if (declarationError) { + this.it("encountered a declaration exception", function() { + throw declarationError; + }); + } + + this.currentSuite = parentSuite; + + return suite; +}; + +jasmine.Env.prototype.beforeEach = function(beforeEachFunction) { + if (this.currentSuite) { + this.currentSuite.beforeEach(beforeEachFunction); + } else { + this.currentRunner_.beforeEach(beforeEachFunction); + } +}; + +jasmine.Env.prototype.currentRunner = function () { + return this.currentRunner_; +}; + +jasmine.Env.prototype.afterEach = function(afterEachFunction) { + if (this.currentSuite) { + this.currentSuite.afterEach(afterEachFunction); + } else { + this.currentRunner_.afterEach(afterEachFunction); + } + +}; + +jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) { + return { + execute: function() { + } + }; +}; + +jasmine.Env.prototype.it = function(description, func) { + var spec = new jasmine.Spec(this, this.currentSuite, description); + this.currentSuite.add(spec); + this.currentSpec = spec; + + if (func) { + spec.runs(func); + } + + return spec; +}; + +jasmine.Env.prototype.xit = function(desc, func) { + return { + id: this.nextSpecId(), + runs: function() { + } + }; +}; + +jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) { + if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) { + return true; + } + + a.__Jasmine_been_here_before__ = b; + b.__Jasmine_been_here_before__ = a; + + var hasKey = function(obj, keyName) { + return obj !== null && obj[keyName] !== jasmine.undefined; + }; + + for (var property in b) { + if (!hasKey(a, property) && hasKey(b, property)) { + mismatchKeys.push("expected has key '" + property + "', but missing from actual."); + } + } + for (property in a) { + if (!hasKey(b, property) && hasKey(a, property)) { + mismatchKeys.push("expected missing key '" + property + "', but present in actual."); + } + } + for (property in b) { + if (property == '__Jasmine_been_here_before__') { + continue; + } + if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) { + mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual."); + } + } + + if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) { + mismatchValues.push("arrays were not the same length"); + } + + delete a.__Jasmine_been_here_before__; + delete b.__Jasmine_been_here_before__; + return (mismatchKeys.length === 0 && mismatchValues.length === 0); +}; + +jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) { + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + for (var i = 0; i < this.equalityTesters_.length; i++) { + var equalityTester = this.equalityTesters_[i]; + var result = equalityTester(a, b, this, mismatchKeys, mismatchValues); + if (result !== jasmine.undefined) { + return result; + } + } + + if (a === b) { + return true; +} + + if (a === jasmine.undefined || a === null || b === jasmine.undefined || b === null) { + return (a == jasmine.undefined && b == jasmine.undefined); + } + + if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) { + return a === b; + } + + if (a instanceof Date && b instanceof Date) { + return a.getTime() == b.getTime(); + } + + if (a.jasmineMatches) { + return a.jasmineMatches(b); + } + + if (b.jasmineMatches) { + return b.jasmineMatches(a); + } + + if (a instanceof jasmine.Matchers.ObjectContaining) { + return a.matches(b); + } + + if (b instanceof jasmine.Matchers.ObjectContaining) { + return b.matches(a); + } + + if (jasmine.isString_(a) && jasmine.isString_(b)) { + return (a == b); + } + + if (jasmine.isNumber_(a) && jasmine.isNumber_(b)) { + return (a == b); + } + + if (typeof a === "object" && typeof b === "object") { + return this.compareObjects_(a, b, mismatchKeys, mismatchValues); + } + + //Straight check + return (a === b); +}; + +jasmine.Env.prototype.contains_ = function(haystack, needle) { + if (jasmine.isArray_(haystack)) { + for (var i = 0; i < haystack.length; i++) { + if (this.equals_(haystack[i], needle)) { + return true; + } + } + return false; + } + return haystack.indexOf(needle) >= 0; +}; + +jasmine.Env.prototype.addEqualityTester = function(equalityTester) { + this.equalityTesters_.push(equalityTester); +}; +/** No-op base class for Jasmine reporters. + * + * @constructor + */ +jasmine.Reporter = function() { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportRunnerStarting = function(runner) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportRunnerResults = function(runner) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSuiteResults = function(suite) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSpecStarting = function(spec) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSpecResults = function(spec) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.log = function(str) { +}; + +/** + * Blocks are functions with executable code that make up a spec. + * + * @constructor + * @param {jasmine.Env} env + * @param {Function} func + * @param {jasmine.Spec} spec + */ +jasmine.Block = function(env, func, spec) { + this.env = env; + this.func = func; + this.spec = spec; +}; + +jasmine.Block.prototype.execute = function(onComplete) { + try { + this.func.apply(this.spec); + } catch (e) { + this.spec.fail(e); + } + onComplete(); +}; +/** JavaScript API reporter. + * + * @constructor + */ +jasmine.JsApiReporter = function() { + this.started = false; + this.finished = false; + this.suites_ = []; + this.results_ = {}; +}; + +jasmine.JsApiReporter.prototype.reportRunnerStarting = function(runner) { + this.started = true; + var suites = runner.topLevelSuites(); + for (var i = 0; i < suites.length; i++) { + var suite = suites[i]; + this.suites_.push(this.summarize_(suite)); + } +}; + +jasmine.JsApiReporter.prototype.suites = function() { + return this.suites_; +}; + +jasmine.JsApiReporter.prototype.summarize_ = function(suiteOrSpec) { + var isSuite = suiteOrSpec instanceof jasmine.Suite; + var summary = { + id: suiteOrSpec.id, + name: suiteOrSpec.description, + type: isSuite ? 'suite' : 'spec', + children: [] + }; + + if (isSuite) { + var children = suiteOrSpec.children(); + for (var i = 0; i < children.length; i++) { + summary.children.push(this.summarize_(children[i])); + } + } + return summary; +}; + +jasmine.JsApiReporter.prototype.results = function() { + return this.results_; +}; + +jasmine.JsApiReporter.prototype.resultsForSpec = function(specId) { + return this.results_[specId]; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportRunnerResults = function(runner) { + this.finished = true; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportSuiteResults = function(suite) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportSpecResults = function(spec) { + this.results_[spec.id] = { + messages: spec.results().getItems(), + result: spec.results().failedCount > 0 ? "failed" : "passed" + }; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.log = function(str) { +}; + +jasmine.JsApiReporter.prototype.resultsForSpecs = function(specIds){ + var results = {}; + for (var i = 0; i < specIds.length; i++) { + var specId = specIds[i]; + results[specId] = this.summarizeResult_(this.results_[specId]); + } + return results; +}; + +jasmine.JsApiReporter.prototype.summarizeResult_ = function(result){ + var summaryMessages = []; + var messagesLength = result.messages.length; + for (var messageIndex = 0; messageIndex < messagesLength; messageIndex++) { + var resultMessage = result.messages[messageIndex]; + summaryMessages.push({ + text: resultMessage.type == 'log' ? resultMessage.toString() : jasmine.undefined, + passed: resultMessage.passed ? resultMessage.passed() : true, + type: resultMessage.type, + message: resultMessage.message, + trace: { + stack: resultMessage.passed && !resultMessage.passed() ? resultMessage.trace.stack : jasmine.undefined + } + }); + } + + return { + result : result.result, + messages : summaryMessages + }; +}; + +/** + * @constructor + * @param {jasmine.Env} env + * @param actual + * @param {jasmine.Spec} spec + */ +jasmine.Matchers = function(env, actual, spec, opt_isNot) { + this.env = env; + this.actual = actual; + this.spec = spec; + this.isNot = opt_isNot || false; + this.reportWasCalled_ = false; +}; + +// todo: @deprecated as of Jasmine 0.11, remove soon [xw] +jasmine.Matchers.pp = function(str) { + throw new Error("jasmine.Matchers.pp() is no longer supported, please use jasmine.pp() instead!"); +}; + +// todo: @deprecated Deprecated as of Jasmine 0.10. Rewrite your custom matchers to return true or false. [xw] +jasmine.Matchers.prototype.report = function(result, failing_message, details) { + throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs"); +}; + +jasmine.Matchers.wrapInto_ = function(prototype, matchersClass) { + for (var methodName in prototype) { + if (methodName == 'report') { + continue; + } + var orig = prototype[methodName]; + matchersClass.prototype[methodName] = jasmine.Matchers.matcherFn_(methodName, orig); + } +}; + +jasmine.Matchers.matcherFn_ = function(matcherName, matcherFunction) { + return function() { + var matcherArgs = jasmine.util.argsToArray(arguments); + var result = matcherFunction.apply(this, arguments); + + if (this.isNot) { + result = !result; + } + + if (this.reportWasCalled_) { + return result; + } + + var message; + if (!result) { + if (this.message) { + message = this.message.apply(this, arguments); + if (jasmine.isArray_(message)) { + message = message[this.isNot ? 1 : 0]; + } + } else { + var englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); + message = "Expected " + jasmine.pp(this.actual) + (this.isNot ? " not " : " ") + englishyPredicate; + if (matcherArgs.length > 0) { + for (var i = 0; i < matcherArgs.length; i++) { + if (i > 0){message += ",";} + message += " " + jasmine.pp(matcherArgs[i]); + } + } + message += "."; + } + } + var expectationResult = new jasmine.ExpectationResult({ + matcherName: matcherName, + passed: result, + expected: matcherArgs.length > 1 ? matcherArgs : matcherArgs[0], + actual: this.actual, + message: message + }); + this.spec.addMatcherResult(expectationResult); + return jasmine.undefined; + }; +}; + +/** + * toBe: compares the actual to the expected using === + * @param expected + */ +jasmine.Matchers.prototype.toBe = function(expected) { + return this.actual === expected; +}; + +/** + * toNotBe: compares the actual to the expected using !== + * @param expected + * @deprecated as of 1.0. Use not.toBe() instead. + */ +jasmine.Matchers.prototype.toNotBe = function(expected) { + return this.actual !== expected; +}; + +/** + * toEqual: compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc. + * + * @param expected + */ +jasmine.Matchers.prototype.toEqual = function(expected) { + return this.env.equals_(this.actual, expected); +}; + +/** + * toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual + * @param expected + * @deprecated as of 1.0. Use not.toEqual() instead. + */ +jasmine.Matchers.prototype.toNotEqual = function(expected) { + return !this.env.equals_(this.actual, expected); +}; + +/** + * Matcher that compares the actual to the expected using a regular expression. Constructs a RegExp, so takes + * a pattern or a String. + * + * @param expected + */ +jasmine.Matchers.prototype.toMatch = function(expected) { + return new RegExp(expected).test(this.actual); +}; + +/** + * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch + * @param expected + * @deprecated as of 1.0. Use not.toMatch() instead. + */ +jasmine.Matchers.prototype.toNotMatch = function(expected) { + return !(new RegExp(expected).test(this.actual)); +}; + +/** + * Matcher that compares the actual to jasmine.undefined. + */ +jasmine.Matchers.prototype.toBeDefined = function() { + return (this.actual !== jasmine.undefined); +}; + +/** + * Matcher that compares the actual to jasmine.undefined. + */ +jasmine.Matchers.prototype.toBeUndefined = function() { + return (this.actual === jasmine.undefined); +}; + +/** + * Matcher that compares the actual to null. + */ +jasmine.Matchers.prototype.toBeNull = function() { + return (this.actual === null); +}; + +/** + * Matcher that boolean not-nots the actual. + */ +jasmine.Matchers.prototype.toBeTruthy = function() { + return !!this.actual; +}; + +/** + * Matcher that boolean nots the actual. + */ +jasmine.Matchers.prototype.toBeFalsy = function() { + return !this.actual; +}; + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was called. + */ +jasmine.Matchers.prototype.toHaveBeenCalled = function() { + if (arguments.length > 0) { + throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); + } + + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy " + this.actual.identity + " to have been called.", + "Expected spy " + this.actual.identity + " not to have been called." + ]; + }; + + return this.actual.wasCalled; +}; + +/** @deprecated Use expect(xxx).toHaveBeenCalled() instead */ +jasmine.Matchers.prototype.wasCalled = jasmine.Matchers.prototype.toHaveBeenCalled; + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was not called. + * + * @deprecated Use expect(xxx).not.toHaveBeenCalled() instead + */ +jasmine.Matchers.prototype.wasNotCalled = function() { + if (arguments.length > 0) { + throw new Error('wasNotCalled does not take arguments'); + } + + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy " + this.actual.identity + " to not have been called.", + "Expected spy " + this.actual.identity + " to have been called." + ]; + }; + + return !this.actual.wasCalled; +}; + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was called with a set of parameters. + * + * @example + * + */ +jasmine.Matchers.prototype.toHaveBeenCalledWith = function() { + var expectedArgs = jasmine.util.argsToArray(arguments); + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + this.message = function() { + if (this.actual.callCount === 0) { + // todo: what should the failure message for .not.toHaveBeenCalledWith() be? is this right? test better. [xw] + return [ + "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but it was never called.", + "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but it was." + ]; + } else { + return [ + "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall), + "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall) + ]; + } + }; + + return this.env.contains_(this.actual.argsForCall, expectedArgs); +}; + +/** @deprecated Use expect(xxx).toHaveBeenCalledWith() instead */ +jasmine.Matchers.prototype.wasCalledWith = jasmine.Matchers.prototype.toHaveBeenCalledWith; + +/** @deprecated Use expect(xxx).not.toHaveBeenCalledWith() instead */ +jasmine.Matchers.prototype.wasNotCalledWith = function() { + var expectedArgs = jasmine.util.argsToArray(arguments); + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy not to have been called with " + jasmine.pp(expectedArgs) + " but it was", + "Expected spy to have been called with " + jasmine.pp(expectedArgs) + " but it was" + ]; + }; + + return !this.env.contains_(this.actual.argsForCall, expectedArgs); +}; + +/** + * Matcher that checks that the expected item is an element in the actual Array. + * + * @param {Object} expected + */ +jasmine.Matchers.prototype.toContain = function(expected) { + return this.env.contains_(this.actual, expected); +}; + +/** + * Matcher that checks that the expected item is NOT an element in the actual Array. + * + * @param {Object} expected + * @deprecated as of 1.0. Use not.toContain() instead. + */ +jasmine.Matchers.prototype.toNotContain = function(expected) { + return !this.env.contains_(this.actual, expected); +}; + +jasmine.Matchers.prototype.toBeLessThan = function(expected) { + return this.actual < expected; +}; + +jasmine.Matchers.prototype.toBeGreaterThan = function(expected) { + return this.actual > expected; +}; + +/** + * Matcher that checks that the expected item is equal to the actual item + * up to a given level of decimal precision (default 2). + * + * @param {Number} expected + * @param {Number} precision + */ +jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) { + if (!(precision === 0)) { + precision = precision || 2; + } + var multiplier = Math.pow(10, precision); + var actual = Math.round(this.actual * multiplier); + expected = Math.round(expected * multiplier); + return expected == actual; +}; + +/** + * Matcher that checks that the expected exception was thrown by the actual. + * + * @param {String} expected + */ +jasmine.Matchers.prototype.toThrow = function(expected) { + var result = false; + var exception; + if (typeof this.actual != 'function') { + throw new Error('Actual is not a function'); + } + try { + this.actual(); + } catch (e) { + exception = e; + } + if (exception) { + result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected)); + } + + var not = this.isNot ? "not " : ""; + + this.message = function() { + if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) { + return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' '); + } else { + return "Expected function to throw an exception."; + } + }; + + return result; +}; + +jasmine.Matchers.Any = function(expectedClass) { + this.expectedClass = expectedClass; +}; + +jasmine.Matchers.Any.prototype.jasmineMatches = function(other) { + if (this.expectedClass == String) { + return typeof other == 'string' || other instanceof String; + } + + if (this.expectedClass == Number) { + return typeof other == 'number' || other instanceof Number; + } + + if (this.expectedClass == Function) { + return typeof other == 'function' || other instanceof Function; + } + + if (this.expectedClass == Object) { + return typeof other == 'object'; + } + + return other instanceof this.expectedClass; +}; + +jasmine.Matchers.Any.prototype.jasmineToString = function() { + return ''; +}; + +jasmine.Matchers.ObjectContaining = function (sample) { + this.sample = sample; +}; + +jasmine.Matchers.ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) { + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + var env = jasmine.getEnv(); + + var hasKey = function(obj, keyName) { + return obj != null && obj[keyName] !== jasmine.undefined; + }; + + for (var property in this.sample) { + if (!hasKey(other, property) && hasKey(this.sample, property)) { + mismatchKeys.push("expected has key '" + property + "', but missing from actual."); + } + else if (!env.equals_(this.sample[property], other[property], mismatchKeys, mismatchValues)) { + mismatchValues.push("'" + property + "' was '" + (other[property] ? jasmine.util.htmlEscape(other[property].toString()) : other[property]) + "' in expected, but was '" + (this.sample[property] ? jasmine.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + "' in actual."); + } + } + + return (mismatchKeys.length === 0 && mismatchValues.length === 0); +}; + +jasmine.Matchers.ObjectContaining.prototype.jasmineToString = function () { + return ""; +}; +// Mock setTimeout, clearTimeout +// Contributed by Pivotal Computer Systems, www.pivotalsf.com + +jasmine.FakeTimer = function() { + this.reset(); + + var self = this; + self.setTimeout = function(funcToCall, millis) { + self.timeoutsMade++; + self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false); + return self.timeoutsMade; + }; + + self.setInterval = function(funcToCall, millis) { + self.timeoutsMade++; + self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true); + return self.timeoutsMade; + }; + + self.clearTimeout = function(timeoutKey) { + self.scheduledFunctions[timeoutKey] = jasmine.undefined; + }; + + self.clearInterval = function(timeoutKey) { + self.scheduledFunctions[timeoutKey] = jasmine.undefined; + }; + +}; + +jasmine.FakeTimer.prototype.reset = function() { + this.timeoutsMade = 0; + this.scheduledFunctions = {}; + this.nowMillis = 0; +}; + +jasmine.FakeTimer.prototype.tick = function(millis) { + var oldMillis = this.nowMillis; + var newMillis = oldMillis + millis; + this.runFunctionsWithinRange(oldMillis, newMillis); + this.nowMillis = newMillis; +}; + +jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) { + var scheduledFunc; + var funcsToRun = []; + for (var timeoutKey in this.scheduledFunctions) { + scheduledFunc = this.scheduledFunctions[timeoutKey]; + if (scheduledFunc != jasmine.undefined && + scheduledFunc.runAtMillis >= oldMillis && + scheduledFunc.runAtMillis <= nowMillis) { + funcsToRun.push(scheduledFunc); + this.scheduledFunctions[timeoutKey] = jasmine.undefined; + } + } + + if (funcsToRun.length > 0) { + funcsToRun.sort(function(a, b) { + return a.runAtMillis - b.runAtMillis; + }); + for (var i = 0; i < funcsToRun.length; ++i) { + try { + var funcToRun = funcsToRun[i]; + this.nowMillis = funcToRun.runAtMillis; + funcToRun.funcToCall(); + if (funcToRun.recurring) { + this.scheduleFunction(funcToRun.timeoutKey, + funcToRun.funcToCall, + funcToRun.millis, + true); + } + } catch(e) { + } + } + this.runFunctionsWithinRange(oldMillis, nowMillis); + } +}; + +jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) { + this.scheduledFunctions[timeoutKey] = { + runAtMillis: this.nowMillis + millis, + funcToCall: funcToCall, + recurring: recurring, + timeoutKey: timeoutKey, + millis: millis + }; +}; + +/** + * @namespace + */ +jasmine.Clock = { + defaultFakeTimer: new jasmine.FakeTimer(), + + reset: function() { + jasmine.Clock.assertInstalled(); + jasmine.Clock.defaultFakeTimer.reset(); + }, + + tick: function(millis) { + jasmine.Clock.assertInstalled(); + jasmine.Clock.defaultFakeTimer.tick(millis); + }, + + runFunctionsWithinRange: function(oldMillis, nowMillis) { + jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis); + }, + + scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) { + jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring); + }, + + useMock: function() { + if (!jasmine.Clock.isInstalled()) { + var spec = jasmine.getEnv().currentSpec; + spec.after(jasmine.Clock.uninstallMock); + + jasmine.Clock.installMock(); + } + }, + + installMock: function() { + jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer; + }, + + uninstallMock: function() { + jasmine.Clock.assertInstalled(); + jasmine.Clock.installed = jasmine.Clock.real; + }, + + real: { + setTimeout: jasmine.getGlobal().setTimeout, + clearTimeout: jasmine.getGlobal().clearTimeout, + setInterval: jasmine.getGlobal().setInterval, + clearInterval: jasmine.getGlobal().clearInterval + }, + + assertInstalled: function() { + if (!jasmine.Clock.isInstalled()) { + throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()"); + } + }, + + isInstalled: function() { + return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer; + }, + + installed: null +}; +jasmine.Clock.installed = jasmine.Clock.real; + +//else for IE support +jasmine.getGlobal().setTimeout = function(funcToCall, millis) { + if (jasmine.Clock.installed.setTimeout.apply) { + return jasmine.Clock.installed.setTimeout.apply(this, arguments); + } else { + return jasmine.Clock.installed.setTimeout(funcToCall, millis); + } +}; + +jasmine.getGlobal().setInterval = function(funcToCall, millis) { + if (jasmine.Clock.installed.setInterval.apply) { + return jasmine.Clock.installed.setInterval.apply(this, arguments); + } else { + return jasmine.Clock.installed.setInterval(funcToCall, millis); + } +}; + +jasmine.getGlobal().clearTimeout = function(timeoutKey) { + if (jasmine.Clock.installed.clearTimeout.apply) { + return jasmine.Clock.installed.clearTimeout.apply(this, arguments); + } else { + return jasmine.Clock.installed.clearTimeout(timeoutKey); + } +}; + +jasmine.getGlobal().clearInterval = function(timeoutKey) { + if (jasmine.Clock.installed.clearTimeout.apply) { + return jasmine.Clock.installed.clearInterval.apply(this, arguments); + } else { + return jasmine.Clock.installed.clearInterval(timeoutKey); + } +}; + +/** + * @constructor + */ +jasmine.MultiReporter = function() { + this.subReporters_ = []; +}; +jasmine.util.inherit(jasmine.MultiReporter, jasmine.Reporter); + +jasmine.MultiReporter.prototype.addReporter = function(reporter) { + this.subReporters_.push(reporter); +}; + +(function() { + var functionNames = [ + "reportRunnerStarting", + "reportRunnerResults", + "reportSuiteResults", + "reportSpecStarting", + "reportSpecResults", + "log" + ]; + for (var i = 0; i < functionNames.length; i++) { + var functionName = functionNames[i]; + jasmine.MultiReporter.prototype[functionName] = (function(functionName) { + return function() { + for (var j = 0; j < this.subReporters_.length; j++) { + var subReporter = this.subReporters_[j]; + if (subReporter[functionName]) { + subReporter[functionName].apply(subReporter, arguments); + } + } + }; + })(functionName); + } +})(); +/** + * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults + * + * @constructor + */ +jasmine.NestedResults = function() { + /** + * The total count of results + */ + this.totalCount = 0; + /** + * Number of passed results + */ + this.passedCount = 0; + /** + * Number of failed results + */ + this.failedCount = 0; + /** + * Was this suite/spec skipped? + */ + this.skipped = false; + /** + * @ignore + */ + this.items_ = []; +}; + +/** + * Roll up the result counts. + * + * @param result + */ +jasmine.NestedResults.prototype.rollupCounts = function(result) { + this.totalCount += result.totalCount; + this.passedCount += result.passedCount; + this.failedCount += result.failedCount; +}; + +/** + * Adds a log message. + * @param values Array of message parts which will be concatenated later. + */ +jasmine.NestedResults.prototype.log = function(values) { + this.items_.push(new jasmine.MessageResult(values)); +}; + +/** + * Getter for the results: message & results. + */ +jasmine.NestedResults.prototype.getItems = function() { + return this.items_; +}; + +/** + * Adds a result, tracking counts (total, passed, & failed) + * @param {jasmine.ExpectationResult|jasmine.NestedResults} result + */ +jasmine.NestedResults.prototype.addResult = function(result) { + if (result.type != 'log') { + if (result.items_) { + this.rollupCounts(result); + } else { + this.totalCount++; + if (result.passed()) { + this.passedCount++; + } else { + this.failedCount++; + } + } + } + this.items_.push(result); +}; + +/** + * @returns {Boolean} True if everything below passed + */ +jasmine.NestedResults.prototype.passed = function() { + return this.passedCount === this.totalCount; +}; +/** + * Base class for pretty printing for expectation results. + */ +jasmine.PrettyPrinter = function() { + this.ppNestLevel_ = 0; +}; + +/** + * Formats a value in a nice, human-readable string. + * + * @param value + */ +jasmine.PrettyPrinter.prototype.format = function(value) { + if (this.ppNestLevel_ > 40) { + throw new Error('jasmine.PrettyPrinter: format() nested too deeply!'); + } + + this.ppNestLevel_++; + try { + if (value === jasmine.undefined) { + this.emitScalar('undefined'); + } else if (value === null) { + this.emitScalar('null'); + } else if (value === jasmine.getGlobal()) { + this.emitScalar(''); + } else if (value.jasmineToString) { + this.emitScalar(value.jasmineToString()); + } else if (typeof value === 'string') { + this.emitString(value); + } else if (jasmine.isSpy(value)) { + this.emitScalar("spy on " + value.identity); + } else if (value instanceof RegExp) { + this.emitScalar(value.toString()); + } else if (typeof value === 'function') { + this.emitScalar('Function'); + } else if (typeof value.nodeType === 'number') { + this.emitScalar('HTMLNode'); + } else if (value instanceof Date) { + this.emitScalar('Date(' + value + ')'); + } else if (value.__Jasmine_been_here_before__) { + this.emitScalar(''); + } else if (jasmine.isArray_(value) || typeof value == 'object') { + value.__Jasmine_been_here_before__ = true; + if (jasmine.isArray_(value)) { + this.emitArray(value); + } else { + this.emitObject(value); + } + delete value.__Jasmine_been_here_before__; + } else { + this.emitScalar(value.toString()); + } + } finally { + this.ppNestLevel_--; + } +}; + +jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) { + for (var property in obj) { + if (property == '__Jasmine_been_here_before__') { + continue; + } + fn(property, obj.__lookupGetter__ ? (obj.__lookupGetter__(property) !== jasmine.undefined && + obj.__lookupGetter__(property) !== null) : false); + } +}; + +jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitString = jasmine.unimplementedMethod_; + +jasmine.StringPrettyPrinter = function() { + jasmine.PrettyPrinter.call(this); + + this.string = ''; +}; +jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter); + +jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) { + this.append(value); +}; + +jasmine.StringPrettyPrinter.prototype.emitString = function(value) { + this.append("'" + value + "'"); +}; + +jasmine.StringPrettyPrinter.prototype.emitArray = function(array) { + this.append('[ '); + for (var i = 0; i < array.length; i++) { + if (i > 0) { + this.append(', '); + } + this.format(array[i]); + } + this.append(' ]'); +}; + +jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) { + var self = this; + this.append('{ '); + var first = true; + + this.iterateObject(obj, function(property, isGetter) { + if (first) { + first = false; + } else { + self.append(', '); + } + + self.append(property); + self.append(' : '); + if (isGetter) { + self.append(''); + } else { + self.format(obj[property]); + } + }); + + this.append(' }'); +}; + +jasmine.StringPrettyPrinter.prototype.append = function(value) { + this.string += value; +}; +jasmine.Queue = function(env) { + this.env = env; + this.blocks = []; + this.running = false; + this.index = 0; + this.offset = 0; + this.abort = false; +}; + +jasmine.Queue.prototype.addBefore = function(block) { + this.blocks.unshift(block); +}; + +jasmine.Queue.prototype.add = function(block) { + this.blocks.push(block); +}; + +jasmine.Queue.prototype.insertNext = function(block) { + this.blocks.splice((this.index + this.offset + 1), 0, block); + this.offset++; +}; + +jasmine.Queue.prototype.start = function(onComplete) { + this.running = true; + this.onComplete = onComplete; + this.next_(); +}; + +jasmine.Queue.prototype.isRunning = function() { + return this.running; +}; + +jasmine.Queue.LOOP_DONT_RECURSE = true; + +jasmine.Queue.prototype.next_ = function() { + var self = this; + var goAgain = true; + + while (goAgain) { + goAgain = false; + if (self.index < self.blocks.length && !this.abort) { + var calledSynchronously = true; + var completedSynchronously = false; + + var onComplete = function () { + if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) { + completedSynchronously = true; + return; + } + + if (self.blocks[self.index].abort) { + self.abort = true; + } + + self.offset = 0; + self.index++; + + var now = new Date().getTime(); + if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) { + self.env.lastUpdate = now; + self.env.setTimeout(function() { + self.next_(); + }, 0); + } else { + if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) { + goAgain = true; + } else { + self.next_(); + } + } + }; + self.blocks[self.index].execute(onComplete); + + calledSynchronously = false; + if (completedSynchronously) { + onComplete(); + } + + } else { + self.running = false; + if (self.onComplete) { + self.onComplete(); + } + } + } +}; + +jasmine.Queue.prototype.results = function() { + var results = new jasmine.NestedResults(); + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].results) { + results.addResult(this.blocks[i].results()); + } + } + return results; +}; + +/** + * Runner + * + * @constructor + * @param {jasmine.Env} env + */ +jasmine.Runner = function(env) { + var self = this; + self.env = env; + self.queue = new jasmine.Queue(env); + self.before_ = []; + self.after_ = []; + self.suites_ = []; +}; + +jasmine.Runner.prototype.execute = function() { + var self = this; + if (self.env.reporter.reportRunnerStarting) { + self.env.reporter.reportRunnerStarting(this); + } + self.queue.start(function () { + self.finishCallback(); + }); +}; + +jasmine.Runner.prototype.beforeEach = function(beforeEachFunction) { + beforeEachFunction.typeName = 'beforeEach'; + this.before_.splice(0,0,beforeEachFunction); +}; + +jasmine.Runner.prototype.afterEach = function(afterEachFunction) { + afterEachFunction.typeName = 'afterEach'; + this.after_.splice(0,0,afterEachFunction); +}; + +jasmine.Runner.prototype.finishCallback = function() { + this.env.reporter.reportRunnerResults(this); +}; + +jasmine.Runner.prototype.addSuite = function(suite) { + this.suites_.push(suite); +}; + +jasmine.Runner.prototype.add = function(block) { + if (block instanceof jasmine.Suite) { + this.addSuite(block); + } + this.queue.add(block); +}; + +jasmine.Runner.prototype.specs = function () { + var suites = this.suites(); + var specs = []; + for (var i = 0; i < suites.length; i++) { + specs = specs.concat(suites[i].specs()); + } + return specs; +}; + +jasmine.Runner.prototype.suites = function() { + return this.suites_; +}; + +jasmine.Runner.prototype.topLevelSuites = function() { + var topLevelSuites = []; + for (var i = 0; i < this.suites_.length; i++) { + if (!this.suites_[i].parentSuite) { + topLevelSuites.push(this.suites_[i]); + } + } + return topLevelSuites; +}; + +jasmine.Runner.prototype.results = function() { + return this.queue.results(); +}; +/** + * Internal representation of a Jasmine specification, or test. + * + * @constructor + * @param {jasmine.Env} env + * @param {jasmine.Suite} suite + * @param {String} description + */ +jasmine.Spec = function(env, suite, description) { + if (!env) { + throw new Error('jasmine.Env() required'); + } + if (!suite) { + throw new Error('jasmine.Suite() required'); + } + var spec = this; + spec.id = env.nextSpecId ? env.nextSpecId() : null; + spec.env = env; + spec.suite = suite; + spec.description = description; + spec.queue = new jasmine.Queue(env); + + spec.afterCallbacks = []; + spec.spies_ = []; + + spec.results_ = new jasmine.NestedResults(); + spec.results_.description = description; + spec.matchersClass = null; +}; + +jasmine.Spec.prototype.getFullName = function() { + return this.suite.getFullName() + ' ' + this.description + '.'; +}; + +jasmine.Spec.prototype.results = function() { + return this.results_; +}; + +/** + * All parameters are pretty-printed and concatenated together, then written to the spec's output. + * + * Be careful not to leave calls to jasmine.log in production code. + */ +jasmine.Spec.prototype.log = function() { + return this.results_.log(arguments); +}; + +jasmine.Spec.prototype.runs = function (func) { + var block = new jasmine.Block(this.env, func, this); + this.addToQueue(block); + return this; +}; + +jasmine.Spec.prototype.addToQueue = function (block) { + if (this.queue.isRunning()) { + this.queue.insertNext(block); + } else { + this.queue.add(block); + } +}; + +/** + * @param {jasmine.ExpectationResult} result + */ +jasmine.Spec.prototype.addMatcherResult = function(result) { + this.results_.addResult(result); +}; + +jasmine.Spec.prototype.expect = function(actual) { + var positive = new (this.getMatchersClass_())(this.env, actual, this); + positive.not = new (this.getMatchersClass_())(this.env, actual, this, true); + return positive; +}; + +/** + * Waits a fixed time period before moving to the next block. + * + * @deprecated Use waitsFor() instead + * @param {Number} timeout milliseconds to wait + */ +jasmine.Spec.prototype.waits = function(timeout) { + var waitsFunc = new jasmine.WaitsBlock(this.env, timeout, this); + this.addToQueue(waitsFunc); + return this; +}; + +/** + * Waits for the latchFunction to return true before proceeding to the next block. + * + * @param {Function} latchFunction + * @param {String} optional_timeoutMessage + * @param {Number} optional_timeout + */ +jasmine.Spec.prototype.waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { + var latchFunction_ = null; + var optional_timeoutMessage_ = null; + var optional_timeout_ = null; + + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + switch (typeof arg) { + case 'function': + latchFunction_ = arg; + break; + case 'string': + optional_timeoutMessage_ = arg; + break; + case 'number': + optional_timeout_ = arg; + break; + } + } + + var waitsForFunc = new jasmine.WaitsForBlock(this.env, optional_timeout_, latchFunction_, optional_timeoutMessage_, this); + this.addToQueue(waitsForFunc); + return this; +}; + +jasmine.Spec.prototype.fail = function (e) { + var expectationResult = new jasmine.ExpectationResult({ + passed: false, + message: e ? jasmine.util.formatException(e) : 'Exception', + trace: { stack: e.stack } + }); + this.results_.addResult(expectationResult); +}; + +jasmine.Spec.prototype.getMatchersClass_ = function() { + return this.matchersClass || this.env.matchersClass; +}; + +jasmine.Spec.prototype.addMatchers = function(matchersPrototype) { + var parent = this.getMatchersClass_(); + var newMatchersClass = function() { + parent.apply(this, arguments); + }; + jasmine.util.inherit(newMatchersClass, parent); + jasmine.Matchers.wrapInto_(matchersPrototype, newMatchersClass); + this.matchersClass = newMatchersClass; +}; + +jasmine.Spec.prototype.finishCallback = function() { + this.env.reporter.reportSpecResults(this); +}; + +jasmine.Spec.prototype.finish = function(onComplete) { + this.removeAllSpies(); + this.finishCallback(); + if (onComplete) { + onComplete(); + } +}; + +jasmine.Spec.prototype.after = function(doAfter) { + if (this.queue.isRunning()) { + this.queue.add(new jasmine.Block(this.env, doAfter, this)); + } else { + this.afterCallbacks.unshift(doAfter); + } +}; + +jasmine.Spec.prototype.execute = function(onComplete) { + var spec = this; + if (!spec.env.specFilter(spec)) { + spec.results_.skipped = true; + spec.finish(onComplete); + return; + } + + this.env.reporter.reportSpecStarting(this); + + spec.env.currentSpec = spec; + + spec.addBeforesAndAftersToQueue(); + + spec.queue.start(function () { + spec.finish(onComplete); + }); +}; + +jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() { + var runner = this.env.currentRunner(); + var i; + + for (var suite = this.suite; suite; suite = suite.parentSuite) { + for (i = 0; i < suite.before_.length; i++) { + this.queue.addBefore(new jasmine.Block(this.env, suite.before_[i], this)); + } + } + for (i = 0; i < runner.before_.length; i++) { + this.queue.addBefore(new jasmine.Block(this.env, runner.before_[i], this)); + } + for (i = 0; i < this.afterCallbacks.length; i++) { + this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this)); + } + for (suite = this.suite; suite; suite = suite.parentSuite) { + for (i = 0; i < suite.after_.length; i++) { + this.queue.add(new jasmine.Block(this.env, suite.after_[i], this)); + } + } + for (i = 0; i < runner.after_.length; i++) { + this.queue.add(new jasmine.Block(this.env, runner.after_[i], this)); + } +}; + +jasmine.Spec.prototype.explodes = function() { + throw 'explodes function should not have been called'; +}; + +jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) { + if (obj == jasmine.undefined) { + throw "spyOn could not find an object to spy upon for " + methodName + "()"; + } + + if (!ignoreMethodDoesntExist && obj[methodName] === jasmine.undefined) { + throw methodName + '() method does not exist'; + } + + if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) { + throw new Error(methodName + ' has already been spied upon'); + } + + var spyObj = jasmine.createSpy(methodName); + + this.spies_.push(spyObj); + spyObj.baseObj = obj; + spyObj.methodName = methodName; + spyObj.originalValue = obj[methodName]; + + obj[methodName] = spyObj; + + return spyObj; +}; + +jasmine.Spec.prototype.removeAllSpies = function() { + for (var i = 0; i < this.spies_.length; i++) { + var spy = this.spies_[i]; + spy.baseObj[spy.methodName] = spy.originalValue; + } + this.spies_ = []; +}; + +/** + * Internal representation of a Jasmine suite. + * + * @constructor + * @param {jasmine.Env} env + * @param {String} description + * @param {Function} specDefinitions + * @param {jasmine.Suite} parentSuite + */ +jasmine.Suite = function(env, description, specDefinitions, parentSuite) { + var self = this; + self.id = env.nextSuiteId ? env.nextSuiteId() : null; + self.description = description; + self.queue = new jasmine.Queue(env); + self.parentSuite = parentSuite; + self.env = env; + self.before_ = []; + self.after_ = []; + self.children_ = []; + self.suites_ = []; + self.specs_ = []; +}; + +jasmine.Suite.prototype.getFullName = function() { + var fullName = this.description; + for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { + fullName = parentSuite.description + ' ' + fullName; + } + return fullName; +}; + +jasmine.Suite.prototype.finish = function(onComplete) { + this.env.reporter.reportSuiteResults(this); + this.finished = true; + if (typeof(onComplete) == 'function') { + onComplete(); + } +}; + +jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) { + beforeEachFunction.typeName = 'beforeEach'; + this.before_.unshift(beforeEachFunction); +}; + +jasmine.Suite.prototype.afterEach = function(afterEachFunction) { + afterEachFunction.typeName = 'afterEach'; + this.after_.unshift(afterEachFunction); +}; + +jasmine.Suite.prototype.results = function() { + return this.queue.results(); +}; + +jasmine.Suite.prototype.add = function(suiteOrSpec) { + this.children_.push(suiteOrSpec); + if (suiteOrSpec instanceof jasmine.Suite) { + this.suites_.push(suiteOrSpec); + this.env.currentRunner().addSuite(suiteOrSpec); + } else { + this.specs_.push(suiteOrSpec); + } + this.queue.add(suiteOrSpec); +}; + +jasmine.Suite.prototype.specs = function() { + return this.specs_; +}; + +jasmine.Suite.prototype.suites = function() { + return this.suites_; +}; + +jasmine.Suite.prototype.children = function() { + return this.children_; +}; + +jasmine.Suite.prototype.execute = function(onComplete) { + var self = this; + this.queue.start(function () { + self.finish(onComplete); + }); +}; +jasmine.WaitsBlock = function(env, timeout, spec) { + this.timeout = timeout; + jasmine.Block.call(this, env, null, spec); +}; + +jasmine.util.inherit(jasmine.WaitsBlock, jasmine.Block); + +jasmine.WaitsBlock.prototype.execute = function (onComplete) { + if (jasmine.VERBOSE) { + this.env.reporter.log('>> Jasmine waiting for ' + this.timeout + ' ms...'); + } + this.env.setTimeout(function () { + onComplete(); + }, this.timeout); +}; +/** + * A block which waits for some condition to become true, with timeout. + * + * @constructor + * @extends jasmine.Block + * @param {jasmine.Env} env The Jasmine environment. + * @param {Number} timeout The maximum time in milliseconds to wait for the condition to become true. + * @param {Function} latchFunction A function which returns true when the desired condition has been met. + * @param {String} message The message to display if the desired condition hasn't been met within the given time period. + * @param {jasmine.Spec} spec The Jasmine spec. + */ +jasmine.WaitsForBlock = function(env, timeout, latchFunction, message, spec) { + this.timeout = timeout || env.defaultTimeoutInterval; + this.latchFunction = latchFunction; + this.message = message; + this.totalTimeSpentWaitingForLatch = 0; + jasmine.Block.call(this, env, null, spec); +}; +jasmine.util.inherit(jasmine.WaitsForBlock, jasmine.Block); + +jasmine.WaitsForBlock.TIMEOUT_INCREMENT = 10; + +jasmine.WaitsForBlock.prototype.execute = function(onComplete) { + if (jasmine.VERBOSE) { + this.env.reporter.log('>> Jasmine waiting for ' + (this.message || 'something to happen')); + } + var latchFunctionResult; + try { + latchFunctionResult = this.latchFunction.apply(this.spec); + } catch (e) { + this.spec.fail(e); + onComplete(); + return; + } + + if (latchFunctionResult) { + onComplete(); + } else if (this.totalTimeSpentWaitingForLatch >= this.timeout) { + var message = 'timed out after ' + this.timeout + ' msec waiting for ' + (this.message || 'something to happen'); + this.spec.fail({ + name: 'timeout', + message: message + }); + + this.abort = true; + onComplete(); + } else { + this.totalTimeSpentWaitingForLatch += jasmine.WaitsForBlock.TIMEOUT_INCREMENT; + var self = this; + this.env.setTimeout(function() { + self.execute(onComplete); + }, jasmine.WaitsForBlock.TIMEOUT_INCREMENT); + } +}; + +jasmine.version_= { + "major": 1, + "minor": 2, + "build": 0, + "revision": 1333557965, + "release_candidate": 3 +}; diff --git a/third_party/jsdoc/test/reporter.js b/third_party/jsdoc/test/reporter.js new file mode 100644 index 0000000000..b4d0ca0648 --- /dev/null +++ b/third_party/jsdoc/test/reporter.js @@ -0,0 +1,292 @@ +module.exports = function(jasmine) { + var util = require('util'); + + var jasmineNode = {}; + + // + // Helpers + // + function noop() { + } + + jasmineNode.ANSIColors = { + pass : function() { + return '\033[32m'; + }, // Green + fail : function() { + return '\033[31m'; + }, // Red + neutral : function() { + return '\033[0m'; + } // Normal + }; + + jasmineNode.NoColors = { + pass : function() { + return ''; + }, + fail : function() { + return ''; + }, + neutral : function() { + return ''; + } + }; + + jasmineNode.TerminalReporter = function(config) { + this.print_ = config.print || function (str) { process.stdout.write(util.format(str)); }; + this.color_ = config.color ? jasmineNode.ANSIColors : jasmineNode.NoColors; + + this.started_ = false; + this.finished_ = false; + + this.callback_ = config.onComplete || false; + + this.suites_ = []; + this.specResults_ = {}; + this.failures_ = {}; + this.failures_.length = 0; + }; + + jasmineNode.TerminalReporter.prototype = { + reportRunnerStarting : function(runner) { + this.started_ = true; + this.startedAt = new Date(); + var suites = runner.topLevelSuites(); + for ( var i = 0; i < suites.length; i++) { + var suite = suites[i]; + this.suites_.push(this.summarize_(suite)); + } + }, + + summarize_ : function(suiteOrSpec) { + var isSuite = suiteOrSpec instanceof jasmine.Suite; + + // We could use a separate object for suite and spec + var summary = { + id : suiteOrSpec.id, + name : suiteOrSpec.description, + type : isSuite ? 'suite' : 'spec', + suiteNestingLevel : 0, + children : [] + }; + + if (isSuite) { + var calculateNestingLevel = function(examinedSuite) { + var nestingLevel = 0; + while (examinedSuite.parentSuite !== null) { + nestingLevel += 1; + examinedSuite = examinedSuite.parentSuite; + } + return nestingLevel; + }; + + summary.suiteNestingLevel = calculateNestingLevel(suiteOrSpec); + + var children = suiteOrSpec.children(); + for ( var i = 0; i < children.length; i++) { + summary.children.push(this.summarize_(children[i])); + } + } + + return summary; + }, + + // This is heavily influenced by Jasmine's Html/Trivial Reporter + reportRunnerResults : function(runner) { + this.reportFailures_(); + + var results = runner.results(); + var resultColor = (results.failedCount > 0) ? this.color_.fail() : this.color_.pass(); + + var specs = runner.specs(); + var specCount = specs.length; + + var message = "\n\nFinished in " + + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + + " seconds"; + this.printLine_(message); + + // This is what jasmine-html.js has + // message = "" + specCount + " spec" + ( specCount === 1 ? "" : "s") + ", " + results.failedCount + " failure" + ((results.failedCount === 1) ? "" : "s"); + + this.printLine_(this.stringWithColor_(this.printRunnerResults_(runner), resultColor)); + + this.finished_ = true; + if (this.callback_) { + this.callback_(runner); + } + }, + + reportFailures_ : function() { + if (this.failures_.length === 0) { + return; + } + + var indent = ' ', failure, failures; + this.printLine_('\n'); + + this.print_('Failures:'); + + for ( var suite in this.failures_) { + if (this.failures_.hasOwnProperty(suite) && suite !== "length") { + this.printLine_('\n'); + this.printLine_(suite); + failures = this.failures_[suite]; + for ( var i = 0; i < failures.length; i++) { + failure = failures[i]; + this.printLine_('\n'); + this.printLine_(indent + (i + 1) + ') ' + failure.spec); + this.printLine_(indent + 'Message:'); + this.printLine_(indent + indent + this.stringWithColor_(failure.message, this.color_.fail())); + this.printLine_(indent + 'Stacktrace:'); + this.print_(indent + indent + failure.stackTrace); + } + } + } + + }, + + reportSuiteResults : function(suite) { + // Not used in this context + }, + + reportSpecResults : function(spec) { + var result = spec.results(); + var msg = ''; + if (result.skipped) { + msg = this.stringWithColor_('-', this.color_.ignore()); + } else if (result.passed()) { + msg = this.stringWithColor_('.', this.color_.pass()); + } else { + msg = this.stringWithColor_('F', this.color_.fail()); + this.addFailureToFailures_(spec); + } + this.spec_results += msg; + this.print_(msg); + }, + + addFailureToFailures_ : function(spec) { + var result = spec.results(); + var failureItem = null; + var suite = spec.suite.getFullName(); + var failures = null; + var items_length = result.items_.length; + for ( var i = 0; i < items_length; i++) { + if (result.items_[i].passed_ === false) { + failureItem = result.items_[i]; + var failure = { + spec : spec.description, + message : failureItem.message, + stackTrace : failureItem.trace.stack + }; + failures = this.failures_[suite]; + if (!failures) { + this.failures_[suite] = []; + } + this.failures_[suite].push(failure); + this.failures_.length++; + } + } + }, + + printRunnerResults_ : function(runner) { + var results = runner.results(); + var specs = runner.specs(); + var msg = ''; + msg += specs.length + ' test' + ((specs.length === 1) ? '' : 's') + ', '; + msg += results.totalCount + ' assertion' + ((results.totalCount === 1) ? '' : 's') + ', '; + msg += results.failedCount + ' failure' + ((results.failedCount === 1) ? '' : 's') + '\n'; + return msg; + }, + + // Helper Methods // + stringWithColor_ : function(stringValue, color) { + return (color || this.color_.neutral()) + stringValue + this.color_.neutral(); + }, + + printLine_ : function(stringValue) { + this.print_(stringValue); + this.print_('\n'); + } + }; + + // *************************************************************** + // TerminalVerboseReporter uses the TerminalReporter's constructor + // *************************************************************** + jasmineNode.TerminalVerboseReporter = function(config) { + jasmineNode.TerminalReporter.call(this, config); + // The extra field in this object + this.indent_ = 0; + }; + + jasmineNode.TerminalVerboseReporter.prototype = { + reportSpecResults : function(spec) { + if (spec.results().failedCount > 0) { + this.addFailureToFailures_(spec); + } + + this.specResults_[spec.id] = { + messages : spec.results().getItems(), + result : spec.results().failedCount > 0 ? 'failed' : 'passed' + }; + }, + + reportRunnerResults : function(runner) { + var messages = new Array(); + this.buildMessagesFromResults_(messages, this.suites_); + + var messages_length = messages.length; + for ( var i = 0; i < messages_length - 1; i++) { + this.printLine_(messages[i]); + } + + this.print_(messages[messages_length - 1]); + + // Call the parent object's method + jasmineNode.TerminalReporter.prototype.reportRunnerResults.call(this, runner); + }, + + buildMessagesFromResults_ : function(messages, results) { + var element, specResult, specIndentSpaces, msg = ''; + + var results_length = results.length; + for ( var i = 0; i < results_length; i++) { + element = results[i]; + + if (element.type === 'spec') { + specResult = this.specResults_[element.id.toString()]; + + specIndentSpaces = this.indent_ + 2; + if (specResult.result === 'passed') { + msg = this.stringWithColor_(this.indentMessage_(element.name, specIndentSpaces), this.color_.pass()); + } else { + msg = this.stringWithColor_(this.indentMessage_(element.name, specIndentSpaces), this.color_.fail()); + } + + messages.push(msg); + } else { + this.indent_ = element.suiteNestingLevel * 2; + + messages.push(''); + messages.push(this.indentMessage_(element.name,this.indent_)); + } + + this.buildMessagesFromResults_(messages, element.children); + } + }, + + indentMessage_ : function(message, indentCount) { + var _indent = ''; + for ( var i = 0; i < indentCount; i++) { + _indent += ' '; + } + return (_indent + message); + } + }; + + // Inherit from TerminalReporter + jasmineNode.TerminalVerboseReporter.prototype.__proto__ = jasmineNode.TerminalReporter.prototype; + + return jasmineNode; +}; \ No newline at end of file diff --git a/third_party/jsdoc/test/runner.js b/third_party/jsdoc/test/runner.js new file mode 100644 index 0000000000..bd65b47dd3 --- /dev/null +++ b/third_party/jsdoc/test/runner.js @@ -0,0 +1,65 @@ +/*global env: true, jasmine: true */ +/* + * Test Steps: + * 1. Get Jasmine + * 2. Get the test options + * 3. Get the list of directories to run tests from + * 4. Run Jasmine on each directory + */ +var fs = require('jsdoc/fs'); +var logger = require('jsdoc/util/logger'); +var path = require('path'); + +fs.existsSync = fs.existsSync || path.existsSync; + +require( path.join(env.dirname, 'test/jasmine-jsdoc') ); + +var hasOwnProp = Object.prototype.hasOwnProperty; + +var opts = { + verbose: env.opts.verbose || false, + showColors: env.opts.nocolor === true ? false : true +}; + +var extensions = 'js'; +var match = env.opts.match || '.'; +if (match instanceof Array) { + match = match.join("|"); +} +opts.matcher = new RegExp("(" + match + ")\\.(" + extensions + ")$", 'i'); + +var specFolders = [ + path.join(env.dirname, 'test/specs'), + path.join(env.dirname, 'plugins/test/specs') +]; + +var failedCount = 0; +var index = 0; + +var testsCompleteCallback; +var onComplete; + +var runNextFolder = module.exports = function(callback) { + testsCompleteCallback = testsCompleteCallback || callback; + + // silence the logger while we run the tests + logger.setLevel(logger.LEVELS.SILENT); + + if (index < specFolders.length) { + jasmine.executeSpecsInFolder(specFolders[index], onComplete, opts); + } + else { + process.nextTick(function() { + testsCompleteCallback(failedCount); + }); + } +}; + +onComplete = function(runner, log) { + if (runner.results().failedCount !== 0) { + failedCount += runner.results().failedCount; + } + + index++; + runNextFolder(); +}; diff --git a/third_party/jsdoc/test/spec-collection.js b/third_party/jsdoc/test/spec-collection.js new file mode 100644 index 0000000000..493d909029 --- /dev/null +++ b/third_party/jsdoc/test/spec-collection.js @@ -0,0 +1,93 @@ +/*global env: true */ +var fs = require('jsdoc/fs'); +var path = require('jsdoc/path'); +var runtime = require('jsdoc/util/runtime'); +var wrench = require('wrench'); + +var specs = []; +var finalSpecs = []; + +var createSpecObj = function(_path, root) { + function relativePath() { + return _path.replace(root, '').replace(/^[\/\\]/, '').replace(/\\/g, '/'); + } + + return { + path: function() { + return _path; + }, + relativePath: relativePath, + directory: function() { + return _path.replace(/[\/\\][\s\w\.\-]*$/, "").replace(/\\/g, '/'); + }, + relativeDirectory: function() { + return relativePath().replace(/[\/\\][\s\w\.\-]*$/, "").replace(/\\/g, '/'); + }, + filename: function() { + return _path.replace(/^.*[\\\/]/, ''); + } + }; +}; + +var clearSpecs = exports.clearSpecs = function() { + specs.splice(0, specs.length); +}; + +function addSpec(file, target) { + target = target || specs; + + target.push( createSpecObj(file) ); +} + +function isValidSpec(file, matcher) { + var result; + + var skipPath = runtime.isRhino() ? runtime.NODE : runtime.RHINO; + + // valid specs must... + try { + // ...be a file + result = fs.statSync(file).isFile() && + // ...match the matcher + matcher.test( path.basename(file) ) && + // ...be relevant to the current runtime + file.indexOf(skipPath) === -1; + } + catch(e) { + result = false; + } + + return result; +} + +function shouldLoad(file, matcher) { + var result = false; + + // should this spec run at the end? + if ( /schema\.js$/.test(file) && isValidSpec(file, matcher) ) { + addSpec(file, finalSpecs); + } + else { + result = isValidSpec(file, matcher); + } + + return result; +} + +exports.load = function(loadpath, matcher, clear) { + if (clear === true) { + clearSpecs(); + } + + var wannaBeSpecs = wrench.readdirSyncRecursive(loadpath); + for (var i = 0; i < wannaBeSpecs.length; i++) { + var file = path.join(loadpath, wannaBeSpecs[i]); + if ( shouldLoad(file, matcher) ) { + addSpec(file); + } + } +}; + +exports.getSpecs = function() { + return specs.concat(finalSpecs); +}; diff --git a/third_party/jsdoc/test/specs/documentation/alias.js b/third_party/jsdoc/test/specs/documentation/alias.js new file mode 100644 index 0000000000..ce84f59d34 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/alias.js @@ -0,0 +1,80 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('aliases', function() { + describe('standard', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/alias.js'); + var found = docSet.getByLongname('myObject').filter(function($) { + return ! $.undocumented; + }); + var foundMember = docSet.getByLongname('myObject.myProperty'); + + it('When a symbol is given an alias it is documented as if the name is the alias value.', function() { + expect(found[0].longname).toEqual('myObject'); + }); + + it('When a symbol is a member of an alias it is documented as if the memberof is the alias value.', function() { + expect(foundMember[0].longname).toEqual('myObject.myProperty'); + expect(foundMember[0].memberof).toEqual('myObject'); + }); + }); + + it('When a symbol is a member of an alias of a nested name it is documented as if the memberof is the nested alias value.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/alias2.js'); + var foundMember = docSet.getByLongname('ns.Myclass#myProperty'); + + expect(foundMember[0].longname).toEqual('ns.Myclass#myProperty'); + expect(foundMember[0].name).toEqual('myProperty'); + expect(foundMember[0].memberof).toEqual('ns.Myclass'); + expect(foundMember[0].scope).toEqual('instance'); + }); + + it('When a symbol is a member of an aliased class, a this-variable is documented as if it were a member that class.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/alias3.js'); + var tcm = docSet.getByLongname('trackr.CookieManager')[0]; + var tcmValue = docSet.getByLongname('trackr.CookieManager#value')[0]; + + expect(tcmValue.memberof).toEqual('trackr.CookieManager'); + }); + + it('When a symbol is a function expression that has an alias, the symbol should get the correct longname', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/alias4.js'); + var jacketClass = docSet.getByLongname('module:jacket').filter(function($) { + return $.kind === 'class'; + }); + + expect(jacketClass.length).toBe(1); + expect(jacketClass[0].longname).toBe('module:jacket'); + }); + + it('When a symbol is documented as a static member of , its scope is "global" and not "static".', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/aliasglobal.js'); + var log = docSet.getByLongname('log')[0]; + + expect(log.scope).toEqual('global'); + }); + + it('When a symbol is documented as an instance member of , its scope is "instance" and not "static".', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/aliasglobal2.js'); + var run = docSet.getByLongname('Test#run')[0]; + + expect(run.scope).toEqual('instance'); + expect(run.memberof).toEqual('Test'); + }); + + describe('resolving', function() { + it('When a local reference has alias, put all members into aliased definition. Local modifications should be visible to outside.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/aliasresolve.js'); + var method = docSet.getByLongname('A.F.method'); + + expect(method.length).toEqual(1); + }); + + it('When a reference in an outer scope has alias, put all members into aliased definition. Local modifications are visible to outside.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/aliasresolve2.js'); + var method = docSet.getByLongname('A.F.method'); + + expect(method.length).toEqual(1); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/also.js b/third_party/jsdoc/test/specs/documentation/also.js new file mode 100644 index 0000000000..5afc578340 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/also.js @@ -0,0 +1,69 @@ +/*global describe, expect, it, jasmine, spyOn */ +describe("multiple doclets per symbol", function() { + function undocumented($) { + return ! $.undocumented; + } + + function checkInequality(doclets, property) { + for (var l = doclets.length - 1; l > 0; l--) { + if (doclets[l][property] !== undefined && doclets[l - 1][property] !== undefined) { + expect(doclets[l][property]).not.toBe(doclets[l - 1][property]); + } + } + } + + var docSet = jasmine.getDocSetFromFile('test/fixtures/also.js'); + var name = docSet.getByLongname('Asset#name').filter(undocumented); + var shape = docSet.getByLongname('Asset#shape').filter(undocumented); + + it('When a symbol has multiple adjacent JSDoc comments, both apply to the symbol.', function() { + expect(name.length).toBe(2); + expect(shape.length).toBe(3); + }); + + it('When a symbol has multiple adjacent JSDoc comments that are not identical, the doclets ' + + 'have different comments.', function() { + checkInequality(name, 'comment'); + checkInequality(shape, 'comment'); + }); + + it('When a symbol has multiple adjacent JSDoc comments with different descriptions, ' + + 'the doclets have different descriptions.', function() { + checkInequality(name, 'description'); + checkInequality(shape, 'description'); + }); + + it('When a symbol has multiple adjacent JSDoc comments with different numbers of ' + + '@param tags, the doclets have different parameter lists.', function() { + checkInequality(name, 'params.length'); + checkInequality(shape, 'params.length'); + }); + + it('When a symbol has multiple adjacent JSDoc comments with different numbers of ' + + '@returns tags, the doclets have different lists of return values.', function() { + checkInequality(name, 'returns.length'); + checkInequality(shape, 'returns.length'); + }); + + it('When a file contains a JSDoc comment with an @also tag, and the "tags.allowUnknownTags" ' + + 'option is set to false, the file can be parsed without errors.', function() { + var logger = require('jsdoc/util/logger'); + + var allowUnknownTags = !!global.env.conf.tags.allowUnknownTags; + var docs; + var errors = []; + + function errorListener(err) { + errors.push(err); + } + + logger.addListener('logger:error', errorListener); + global.env.conf.tags.allowUnknownTags = false; + + docs = jasmine.getDocSetFromFile('test/fixtures/also2.js'); + expect(errors[0]).not.toBeDefined(); + + logger.removeListener('logger:error', errorListener); + global.env.conf.tags.allowUnknownTags = allowUnknownTags; + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/callback.js b/third_party/jsdoc/test/specs/documentation/callback.js new file mode 100644 index 0000000000..d8e1441290 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/callback.js @@ -0,0 +1,27 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe('callback tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/callbacktag.js'); + + function callbackTests(callback) { + expect(callback).toBeDefined(); + + expect(callback.type).toBeDefined(); + expect(typeof callback.type).toEqual('object'); + + expect(callback.type.names).toBeDefined(); + expect(callback.type.names instanceof Array).toEqual(true); + expect(callback.type.names.length).toEqual(1); + + expect(callback.type.names[0]).toEqual('function'); + } + + it('correctly handles callbacks that do not define a {type}', function() { + var callback = docSet.getByLongname('requestResponseCallback')[0]; + callbackTests(callback); + }); + + it('correctly handles callbacks that define an incorrect {type}', function() { + var callback = docSet.getByLongname('wrongTypeCallback')[0]; + callbackTests(callback); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/classwithoutname.js b/third_party/jsdoc/test/specs/documentation/classwithoutname.js new file mode 100644 index 0000000000..844ddbacb4 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/classwithoutname.js @@ -0,0 +1,14 @@ +/*global describe, expect, it, jasmine */ +describe('class without a name', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/classwithoutname.js').doclets + .filter(function(doclet) { + return doclet.name === ''; + }); + + it('When the doclet for a class has an empty name, it should also have an empty longname', function() { + expect(docSet).toBeDefined(); + expect(docSet.length).toBe(1); + expect(docSet[0].description).toBe('Create an instance of MyClass.'); + expect(docSet[0].longname).toBe(''); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/emptycomments.js b/third_party/jsdoc/test/specs/documentation/emptycomments.js new file mode 100644 index 0000000000..6747f1ad8b --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/emptycomments.js @@ -0,0 +1,15 @@ +/*global describe, expect, it, jasmine, spyOn */ +'use strict'; + +var logger = require('jsdoc/util/logger'); + +describe('empty JSDoc comments', function() { + it('should not report an error when a JSDoc comment contains only whitespace', function() { + var doclets; + + spyOn(logger, 'error'); + doclets = jasmine.getDocSetFromFile('test/fixtures/emptycomments.js'); + + expect(logger.error).not.toHaveBeenCalled(); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/exports.js b/third_party/jsdoc/test/specs/documentation/exports.js new file mode 100644 index 0000000000..eec64597be --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/exports.js @@ -0,0 +1,20 @@ +/*global describe, expect, it, jasmine */ +describe("'exports' symbol in modules", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exports.js'); + var sayHello = docSet.getByLongname('module:hello/world.sayHello')[0]; + var sayGoodbye = docSet.getByLongname('module:hello/world.sayGoodbye')[0]; + + it('When a symbol starts with the special name "exports" and is in a file with a ' + + '@module tag, the symbol is documented as a member of that module.', function() { + expect(typeof sayHello).toBe('object'); + expect(sayHello.kind).toBe('function'); + expect(sayHello.memberof).toBe('module:hello/world'); + }); + + it('When a symbol starts with the special name "module.exports" and is in a file with a ' + + '@module tag, the symbol is documented as a member of that module.', function() { + expect(typeof sayGoodbye).toBe('object'); + expect(sayGoodbye.kind).toBe('function'); + expect(sayGoodbye.memberof).toBe('module:hello/world'); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/funcExpression.js b/third_party/jsdoc/test/specs/documentation/funcExpression.js new file mode 100644 index 0000000000..7cb29eec8a --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/funcExpression.js @@ -0,0 +1,29 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe('function expressions', function() { + function checkLongnames(docSet, namespace) { + var memberName = (namespace || '') + 'Foo#member1'; + var variableName = (namespace || '') + 'Foo~var1'; + var fooMember = docSet.getByLongname(memberName)[0]; + var fooVariable = docSet.getByLongname(variableName)[0]; + + it('should assign the correct longname to members of a function expression', function() { + expect(fooMember.longname).toBe(memberName); + }); + + it('should assign the correct longname to variables in a function expression', function() { + expect(fooVariable.longname).toBe(variableName); + }); + } + + describe('standard', function() { + checkLongnames( jasmine.getDocSetFromFile('test/fixtures/funcExpression.js') ); + }); + + describe('global', function() { + checkLongnames( jasmine.getDocSetFromFile('test/fixtures/funcExpression2.js') ); + }); + + describe('as object literal property', function() { + checkLongnames( jasmine.getDocSetFromFile('test/fixtures/funcExpression3.js'), 'ns.' ); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/getset.js b/third_party/jsdoc/test/specs/documentation/getset.js new file mode 100644 index 0000000000..a73773ceaf --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/getset.js @@ -0,0 +1,24 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("When a getter or setter is the child of an object literal", function () { + var docSet = jasmine.getDocSetFromFile("test/fixtures/getset.js"); + var foundName = docSet.getByLongname("Person#name"); + var foundAge = docSet.getByLongname("Person#age"); + + it("should have a doclet with the correct longname", function () { + expect(foundName.length).toEqual(2); + expect(foundAge.length).toEqual(1); + }); + + it("should have a doclet with the correct name", function () { + expect(foundName[0].name).toEqual("name"); + expect(foundName[1].name).toEqual("name"); + expect(foundAge[0].name).toEqual("age"); + }); + + it("should have the correct memberof", function () { + expect(foundName[0].memberof).toEqual("Person"); + expect(foundName[1].memberof).toEqual("Person"); + expect(foundAge[0].memberof).toEqual("Person"); + }); + +}); diff --git a/third_party/jsdoc/test/specs/documentation/inlinecomment.js b/third_party/jsdoc/test/specs/documentation/inlinecomment.js new file mode 100644 index 0000000000..d2692ec164 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/inlinecomment.js @@ -0,0 +1,12 @@ +describe("inline comments", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/inlinecomment.js'), + t = docSet.getByLongname('test'), + t2 = docSet.getByLongname('test2'); + + it('When there is an inline comment on a line ending with no semicolon, that comment and the next comment are still captured', function() { + //Inline comment on line without semicolon is captured + expect(t.length).toEqual(1); + //Inline comment on line after line without semicolon is captured + expect(t2.length).toEqual(1); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/inner.js b/third_party/jsdoc/test/specs/documentation/inner.js new file mode 100644 index 0000000000..d69594ea2c --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/inner.js @@ -0,0 +1,24 @@ +describe("when a documented var memeber is inside a named function", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/inner.js'), + found1 = docSet.getByLongname('sendMessage~encoding'), + found2 = docSet.getByLongname('sendMessage~encrypt'); + + it("A Doclet with the correct longname should be found", function() { + expect(found1.length).toEqual(1); + expect(found2.length).toEqual(1); + }); + + it("The short name should be correct", function() { + expect(found1[0].name).toEqual('encoding'); + expect(found2[0].name).toEqual('encrypt'); + }); + + it("The member of should be correct", function() { + expect(found1[0].memberof).toEqual('sendMessage'); + expect(found2[0].memberof).toEqual('sendMessage'); + }); + it("The scope should default to 'inner'", function() { + expect(found1[0].scope).toEqual('inner'); + expect(found2[0].scope).toEqual('inner'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/innerscope.js b/third_party/jsdoc/test/specs/documentation/innerscope.js new file mode 100644 index 0000000000..41526ae013 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/innerscope.js @@ -0,0 +1,41 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("inner scope", function() { + describe("Outer~inner.member cases", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/innerscope.js'); + var to = docSet.getByLongname('Message~headers.to'); + var from = docSet.getByLongname('Message~headers.from'); + var response = docSet.getByLongname('Message~response.code'); + + it('should occur when a member of a var member is documented.', function() { + expect(to.length).toEqual(1); + }); + + it('should occur when a second member of a var member is documented.', function() { + expect(response.length).toEqual(1); + }); + + it('should occur when a deeply nested member of a var member is documented.', function() { + expect(from.length).toEqual(1); + }); + }); + + describe("other cases", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/innerscope2.js'); + var to = docSet.getByLongname('Message~headers.to'); + var from = docSet.getByLongname('~headers.from'); + var cache = docSet.getByLongname('~headers.cache'); + + it('When a var is declared in a function, It is like Inner~member', function() { + expect(cache.length).toEqual(1); + }); + + it('When a var is masked by an inner var and a member of the inner is documented, it is like Inner~inner.member', function() { + expect(from.length).toEqual(1); + }); + + it('When a documented member is assigned to a var that masks an outer var.', function() { + expect(from[0].name).toEqual('from'); + expect(from[0].memberof).toEqual('~headers'); + }); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/lends.js b/third_party/jsdoc/test/specs/documentation/lends.js new file mode 100644 index 0000000000..85253c808c --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/lends.js @@ -0,0 +1,137 @@ +/*global describe, expect, it, jasmine */ +describe("lends", function() { + describe("when a documented member is inside an object literal associated with a @lends tag", function() { + function removeUndocumented($) { + return !$.undocumented; + } + + describe("standard case", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/lends.js'), + init = docSet.getByLongname('Person#initialize'), + name = docSet.getByLongname('Person#name'); + + it("The member should be documented as a member of the lendee", function() { + expect(init.length, 1); + }); + + it("The this member should be documented as a member of the lendee", function() { + expect(name.length, 1); + }); + }); + + describe("case containing constructor", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/lends2.js'), + person = docSet.getByLongname('Person').filter(function($) { + return ! $.undocumented; + })[0], + name = docSet.getByLongname('Person#name'); + + it("A tag with a @constructs tag is documented as a constructor.", function() { + expect(person.description).toEqual('Construct a Person.'); + }); + + it("The member should be documented as a member of the lendee", function() { + expect(person.length, 1); + }); + + it("The this member should be documented as a member of the lendee", function() { + expect(name.length, 1); + }); + }); + + describe("case that uses @lends in a multiline doclet", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/lends3.js'), + init = docSet.getByLongname('Person#initialize'), + name = docSet.getByLongname('Person#name'); + + it("The member should be documented as a member of the lendee", function() { + expect(init.length, 1); + }); + + it("The this member should be documented as a member of the lendee", function() { + expect(name.length, 1); + }); + }); + + describe("case that uses @lends within a closure", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/lends4.js'); + var person = docSet.getByLongname('Person'); + var say = docSet.getByLongname('Person#say'); + + it("The class constructor should be documented with the name of the lendee", function() { + expect(person.length).toBe(1); + expect(person[0].name).toBe('Person'); + expect(person[0].kind).toBe('class'); + }); + + it("A class' instance method should be documented as a member of the lendee", function() { + expect(say.length).toBe(1); + }); + }); + + describe("case that uses @lends within nested function calls", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/lends5.js'); + var person = docSet.getByLongname('Person').filter(removeUndocumented)[0]; + var say = docSet.getByLongname('Person#say').filter(removeUndocumented)[0]; + + it("The class constructor should be documented with the name of the lendee", function() { + expect(person).toBeDefined(); + expect(person.name).toBe('Person'); + expect(person.kind).toBe('class'); + }); + + it("A class' instance method should be documented as a member of the lendee", function() { + expect(say).toBeDefined(); + }); + }); + + describe('case that uses @lends twice within a closure', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/lends6.js'); + + it('The first class with a @lends tag should appear in the parse results', function() { + var person = docSet.getByLongname('Person').filter(removeUndocumented)[0]; + var say = docSet.getByLongname('Person#say').filter(removeUndocumented)[0]; + + expect(person).toBeDefined(); + expect(person.name).toBe('Person'); + expect(person.kind).toBe('class'); + + expect(say).toBeDefined(); + expect(say.name).toBe('say'); + expect(say.kind).toBe('function'); + }); + + it('The second class with a @lends tag should appear in the parse results', function() { + var robot = docSet.getByLongname('Robot').filter(removeUndocumented)[0]; + var emote = docSet.getByLongname('Robot#emote').filter(removeUndocumented)[0]; + + expect(robot).toBeDefined(); + expect(robot.name).toBe('Robot'); + expect(robot.kind).toBe('class'); + + expect(emote).toBeDefined(); + expect(emote.name).toBe('emote'); + expect(emote.kind).toBe('function'); + }); + }); + }); + + describe("when a documented member is inside an objlit associated with a @lends tag that has no value.", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/lendsglobal.js'), + testf = docSet.getByLongname('test')[0], + test1 = docSet.getByLongname('test1')[0], + test12 = docSet.getByLongname('test1.test2')[0]; + + it("The members of the objlit are not members of any symbol", function() { + expect(typeof testf.memberof).toEqual('undefined'); + }); + + it("The members of the objlit are documented as global.", function() { + expect(testf.longname).toEqual('test'); + }); + + it("The nested members of the objlit are members of a global symbol", function() { + expect(test12.memberof).toEqual('test1'); + }); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/letkeyword.js b/third_party/jsdoc/test/specs/documentation/letkeyword.js new file mode 100644 index 0000000000..43d120638b --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/letkeyword.js @@ -0,0 +1,28 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe('let keyword', function() { + var docSet; + var exampleModule; + var exampleMethod; + + function getDocSet() { + docSet = jasmine.getDocSetFromFile('test/fixtures/letkeyword.js'); + exampleModule = docSet.getByLongname('module:exampleModule'); + exampleMethod = docSet.getByLongname('module:exampleModule.exampleMethod'); + } + + it('should be able to compile JS files that contain the "let" keyword', function() { + expect(getDocSet).not.toThrow(); + }); + + it('should correctly recognize a module defined with the "let" keyword', function() { + expect(exampleModule).toBeDefined(); + expect( Array.isArray(exampleModule) ).toBe(true); + expect(exampleModule.length).toBe(1); + }); + + it('should correctly recognize members of a module defined with the "let" keyword', function() { + expect(exampleMethod).toBeDefined(); + expect( Array.isArray(exampleMethod) ).toBe(true); + expect(exampleMethod.length).toBe(1); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/moduleinner.js b/third_party/jsdoc/test/specs/documentation/moduleinner.js new file mode 100644 index 0000000000..1a783c96c2 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/moduleinner.js @@ -0,0 +1,13 @@ +describe("inner scope for modules", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/moduleinner.js'), + fooIn = docSet.getByLongname('module:my/module~fooIn')[0], + fooOut = docSet.getByLongname('module:my/module~fooOut')[0]; + + it('When a function appears in the topscope of a module, the symbol is documented as an inner member of that module.', function() { + expect(typeof fooOut).toEqual('object'); + expect(fooOut.longname).toEqual('module:my/module~fooOut'); + + expect(typeof fooIn).toEqual('object'); + expect(fooIn.longname).toEqual('module:my/module~fooIn'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/moduleisconstructor.js b/third_party/jsdoc/test/specs/documentation/moduleisconstructor.js new file mode 100644 index 0000000000..45a1ac0b67 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/moduleisconstructor.js @@ -0,0 +1,37 @@ +/*global describe, expect, it, jasmine */ + +describe('module that exports a constructor', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/moduleisconstructor.js'); + var modules = docSet.doclets.filter(function(doclet) { + return doclet.kind === 'module'; + }); + var classes = docSet.doclets.filter(function(doclet) { + return doclet.kind === 'class'; + }); + + it('should include one doclet whose kind is "module"', function() { + expect(modules.length).toBe(1); + expect(modules[0].kind).toBe('module'); + }); + + it('should include one doclet whose kind is "class"', function() { + expect(classes.length).toBe(1); + expect(classes[0].kind).toBe('class'); + }); + + describe('class doclet', function() { + it('should include a "description" property that contains the constructor description', function() { + expect(classes[0].description).toEqual('Create a new configuration.'); + }); + + it('should include a "class-description" property', function() { + expect(classes[0].classdesc).toEqual('Describe the class here.'); + }); + }); + + describe('module doclet', function() { + it('should include a "description" property that contains the module description', function() { + expect(modules[0].description).toEqual('Describe the module here.'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/moduleisfunction.js b/third_party/jsdoc/test/specs/documentation/moduleisfunction.js new file mode 100644 index 0000000000..1aeb783d07 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/moduleisfunction.js @@ -0,0 +1,23 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ + +describe('module that exports a function that is not a constructor', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/moduleisfunction.js'); + var functions = docSet.doclets.filter(function(doclet) { + return doclet.kind === 'function'; + }); + + it('should include one doclet whose kind is "function"', function() { + expect(functions.length).toBe(1); + expect(functions[0].kind).toBe('function'); + }); + + describe('function doclet', function() { + it('should not include a "scope" property', function() { + expect(functions[0].scope).not.toBeDefined(); + }); + + it('should not include a "memberof" property', function() { + expect(functions[0].memberof).not.toBeDefined(); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/modules.js b/third_party/jsdoc/test/specs/documentation/modules.js new file mode 100644 index 0000000000..fd61cda749 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/modules.js @@ -0,0 +1,71 @@ +/*global afterEach: true, beforeEach: true, describe: true, env: true, expect: true, it: true, +jasmine: true, spyOn: true */ +describe("module names", function() { + var path = require('jsdoc/path'); + var runtime = require('jsdoc/util/runtime'); + + var doclets; + + var pwd = env.pwd; + var srcParser = null; + var sourceFiles = env.sourceFiles.slice(0); + var sourcePaths = env.opts._.slice(0); + + beforeEach(function() { + env.opts._ = [path.normalize(env.pwd + '/test/fixtures/modules/data/')]; + env.pwd = env.dirname; + env.sourceFiles = []; + srcParser = jasmine.createParser(); + require('jsdoc/src/handlers').attachTo(srcParser); + }); + + afterEach(function() { + env.opts._ = sourcePaths; + env.pwd = pwd; + env.sourceFiles = sourceFiles; + }); + + it("should create a name from the file path when no documented module name exists", function() { + var filename = 'test/fixtures/modules/data/mod-1.js'; + + env.sourceFiles.push(filename); + doclets = srcParser.parse( + path.normalize( path.join(env.pwd, filename) ) + ); + expect(doclets.length).toBeGreaterThan(1); + expect(doclets[0].longname).toEqual('module:mod-1'); + }); + + // only works on Windows (which is fine) + if ( /^win/.test(require('os').platform()) ) { + it("should always use forward slashes when creating a name from the file path", function() { + var Doclet = require('jsdoc/doclet').Doclet; + var doclet; + + env.sourceFiles = [ + 'C:\\Users\\Jane Smith\\myproject\\index.js', + 'C:\\Users\\Jane Smith\\myproject\\lib\\mymodule.js' + ]; + env.opts._ = []; + + doclet = new Doclet('/** @module */', { + lineno: 1, + filename: 'C:\\Users\\Jane Smith\\myproject\\lib\\mymodule.js' + }); + + expect(doclet.name).toBe('lib/mymodule'); + }); + } + + it("should use the documented module name if available", function() { + var filename = 'test/fixtures/modules/data/mod-2.js'; + + env.sourceFiles.push(filename); + doclets = srcParser.parse( + path.normalize( path.join(env.pwd, filename) ) + ); + + expect(doclets.length).toBeGreaterThan(1); + expect(doclets[0].longname).toEqual('module:my/module/name'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/objectlit.js b/third_party/jsdoc/test/specs/documentation/objectlit.js new file mode 100644 index 0000000000..39bca2f11c --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/objectlit.js @@ -0,0 +1,67 @@ +/*global describe, expect, it, jasmine */ + +describe('object literals', function() { + describe('When a child of an objlit has no @name or @memberof tags', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/objectlit.js'); + var found = docSet.getByLongname('tools.serialiser.value'); + + it('should have a doclet with the correct longname', function() { + expect(found.length).toBe(1); + }); + + it('should have a doclet with the correct name', function() { + expect(found[0].name).toBe('value'); + }); + + it('should have the correct memberof', function() { + expect(found[0].memberof).toBe('tools.serialiser'); + }); + + it('should have a static scope', function() { + expect(found[0].scope).toBe('static'); + }); + }); + + describe('When a parent of an objlit has no documentation', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/objectlit2.js'); + var found = docSet.getByLongname('position.axis.x'); + + it('should have a doclet with the correct longname', function() { + expect(found.length).toBe(1); + }); + + it('should have a doclet with the correct name', function() { + expect(found[0].name).toBe('x'); + }); + + it('should have the correct memberof', function() { + expect(found[0].memberof).toBe('position.axis'); + }); + + it('should have a static scope', function() { + expect(found[0].scope).toBe('static'); + }); + }); + + describe('When an object literal\'s property names must be escaped in a regexp', function() { + var docSet; + var found; + + function loadDocSet() { + docSet = jasmine.getDocSetFromFile('test/fixtures/objectlit3.js'); + found = docSet.getByLongname('tokens.(.before'); + } + + it('should not throw an error when creating a doclet', function() { + expect(loadDocSet).not.toThrow(); + }); + + it('should have a doclet with the correct name', function() { + expect(found[0].name).toBe('before'); + }); + + it('should have a doclet with the correct memberof', function() { + expect(found[0].memberof).toBe('tokens.('); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/objectpropertykeys.js b/third_party/jsdoc/test/specs/documentation/objectpropertykeys.js new file mode 100644 index 0000000000..0cb39e22a3 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/objectpropertykeys.js @@ -0,0 +1,6 @@ +describe("using existing Object properties as object literal keys", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/objectpropertykeys.js'); + it("should not crash", function() { + expect(true).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/quotename.js b/third_party/jsdoc/test/specs/documentation/quotename.js new file mode 100644 index 0000000000..16b24f575a --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/quotename.js @@ -0,0 +1,23 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("quoted names", function() { + + describe("when found in square brackets", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/quotename.js'); + var found1 = docSet.getByLongname('chat.\"#channel\".open')[0]; + + it('should have correct name and memberof', function() { + expect(found1.name).toEqual('open'); + expect(found1.memberof).toEqual('chat.\"#channel\"'); + }); + }); + + describe("when found in an object literal", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/quotename2.js'); + var found1 = docSet.getByLongname('contacts.say-"hello"@example.com.username')[0]; + + it('should have correct name and memberof', function() { + expect(found1.name).toEqual('username'); + expect(found1.memberof).toEqual('contacts.say-"hello"@example.com'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/specialnames.js b/third_party/jsdoc/test/specs/documentation/specialnames.js new file mode 100644 index 0000000000..f6d8b62bce --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/specialnames.js @@ -0,0 +1,10 @@ +describe("documenting symbols with special names", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/specialnames.js'), + name = docSet.getByLongname('hasOwnProperty').filter(function($) { + return ! $.undocumented; + }); + + it('When a symbol has the documented name of "hasOwnProperty," JSDoc should correctly include it in the docs.', function() { + expect(name.length).toEqual(1); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/starbangstar.js b/third_party/jsdoc/test/specs/documentation/starbangstar.js new file mode 100644 index 0000000000..0a875bb41f --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/starbangstar.js @@ -0,0 +1,13 @@ +describe("starbangstar", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/starbangstar.js'), + mod = docSet.getByLongname('module:myscript/core')[0], + x = docSet.getByLongname('module:myscript/core.x')[0]; + + it('should not treat a doclet starting with /*!* as a JSDoc comment.', function() { + expect(mod.description).toEqual('Script that does something awesome'); + }); + + it('should not treat a doclet starting with /*!** as a JSDoc comment.', function() { + expect(x).toBeUndefined(); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/this.js b/third_party/jsdoc/test/specs/documentation/this.js new file mode 100644 index 0000000000..6393dba4aa --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/this.js @@ -0,0 +1,102 @@ +describe("this", function() { + describe("attaching members to 'this'", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/this.js'), + found1 = docSet.getByLongname('Singer#tralala'), + found2 = docSet.getByLongname('Singer#isSinging'); + + describe("in a contructor", function() { + it("should have a longname like Constructor#member", function() { + expect(found1.length).toEqual(1); + }); + + it("should havea correct short name", function() { + expect(found1[0].name).toEqual('tralala'); + }); + + it("should havea correct memberof", function() { + expect(found1[0].memberof).toEqual('Singer'); + }); + + it("should default to a 'instance' scope", function() { + expect(found1[0].scope).toEqual('instance'); + }); + }); + + describe("in a method of a constructor", function() { + it("should have a longname like Constructor#member", function() { + expect(found2.length).toEqual(1); + }); + + it("should havea correct short name", function() { + expect(found2[0].name).toEqual('isSinging'); + }); + + it("should havea correct memberof", function() { + expect(found2[0].memberof).toEqual('Singer'); + }); + + it("should default to a 'instance' scope", function() { + expect(found2[0].scope).toEqual('instance'); + }); + }); + }); + + describe("when a contructor is nested inside another constructor", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/this2.js'), + found = docSet.getByLongname('TemplateBuilder#Template#rendered'); + + it("should have a longname like Constructor#Constructor#member", function() { + expect(found.length).toEqual(1); + }); + + it("should havea correct short name", function() { + expect(found[0].name).toEqual('rendered'); + }); + + it("should havea correct memberof", function() { + expect(found[0].memberof).toEqual('TemplateBuilder#Template'); + }); + + it("should default to a 'instance' scope", function() { + expect(found[0].scope).toEqual('instance'); + }); + }); + + describe("When a this is assigned to inside a non-constructor function", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/this3.js'), + found = docSet.getByLongname('position'); + + it("should have a global member name like 'member'", function() { + expect(found.length).toEqual(1); + }); + + it("should havea correct short name", function() { + expect(found[0].name).toEqual('position'); + }); + + it("should havea correct memberof", function() { + expect(found[0].memberof).toBeUndefined(); + }); + }); + + describe("When a member is nested inside an objectlit 'this' property inside a constructor", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/this-and-objectlit.js'), + found = docSet.getByLongname('Page#parts.body.heading'); + + it("should have a longname like Constructor#objlit.member", function() { + expect(found.length).toEqual(1); + }); + + it("should havea correct short name", function() { + expect(found[0].name).toEqual('heading'); + }); + + it("should havea correct memberof", function() { + expect(found[0].memberof).toEqual('Page#parts.body'); + }); + + it("should default to a 'static' scope", function() { + expect(found[0].scope).toEqual('static'); + }); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/typetaginline.js b/third_party/jsdoc/test/specs/documentation/typetaginline.js new file mode 100644 index 0000000000..2b1aec49b9 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/typetaginline.js @@ -0,0 +1,71 @@ +/*global beforeEach, describe, expect, it, jasmine */ +describe('@type tag inline with function parameters', function() { + var info; + + var docSet = jasmine.getDocSetFromFile('test/fixtures/typetaginline.js'); + + function checkParams(doclet, paramInfo) { + expect(doclet.params).toBeDefined(); + expect(doclet.params.length).toBe(paramInfo.length); + + doclet.params.forEach(function(param, i) { + expect(param.name).toBe(paramInfo[i].name); + expect(param.type.names[0]).toBe(paramInfo[i].typeName); + if (paramInfo[i].description !== undefined) { + expect(param.description).toBe(paramInfo[i].description); + } + }); + } + + beforeEach(function() { + info = []; + }); + + it('When a function parameter has an inline @type tag, the parameter type is documented', + function() { + var dispense = docSet.getByLongname('dispense')[0]; + info[0] = { name: 'candy', typeName: 'string' }; + + checkParams(dispense, info); + }); + + it('When a function parameter has a standard JSDoc comment and an inline @type tag, the docs ' + + 'reflect the standard JSDoc comment', function() { + var Dispenser = docSet.getByLongname('Dispenser')[0]; + info[0] = { name: 'candyId', typeName: 'number', description: 'The candy\'s identifier.' }; + + checkParams(Dispenser, info); + }); + + it('When a function accepts multiple parameters, and only the first parameter is documented ' + + 'with an inline @type tag, the function parameters are documented in the correct order', + function() { + var restock = docSet.getByLongname('restock')[0]; + info[0] = { name: 'dispenser', typeName: 'Dispenser' }; + info[1] = { name: 'item', typeName: 'string' }; + + checkParams(restock, info); + }); + + it('When a function accepts multiple parameters, and only the last parameter is documented ' + + 'with an inline @type tag, the function parameters are documented in the correct order', + function() { + var clean = docSet.getByLongname('clean')[0]; + info[0] = { name: 'dispenser', typeName: 'Dispenser' }; + info[1] = { name: 'cleaner', typeName: 'string' }; + + checkParams(clean, info); + }); + + it('When a function accepts multiple parameters, and a parameter in the middle is documented ' + + 'with an inline @type tag, the function parameters are documented in the correct order', + function() { + var paint = docSet.getByLongname('paint')[0]; + info[0] = { name: 'dispenser', typeName: 'Dispenser' }; + info[1] = { name: 'color', typeName: 'Color' }; + info[2] = { name: 'shade', typeName: 'number' }; + info[3] = { name: 'brand', typeName: 'string' }; + + checkParams(paint, info); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/typetagwithnewline.js b/third_party/jsdoc/test/specs/documentation/typetagwithnewline.js new file mode 100644 index 0000000000..f1198e9722 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/typetagwithnewline.js @@ -0,0 +1,28 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ + +describe('@type tag containing a newline character', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/typetagwithnewline.js'); + var mini = docSet.getByLongname('Matryoshka.mini')[0]; + var mega = docSet.getByLongname('Matryoshka.mega')[0]; + + it('When the type expression for a @type tag contains a newline character and is not ' + + 'enclosed in braces, the type expression is parsed correctly.', function() { + expect(mini).toBeDefined(); + expect(mini.type).toBeDefined(); + expect(mini.type.names).toBeDefined(); + expect(mini.type.names.length).toBe(2); + expect(mini.type.names[0]).toBe('!Array.'); + expect(mini.type.names[1]).toBe('!Array.>'); + }); + + it('When the type expression for a @type tag contains a newline character and is enclosed ' + + 'in braces, the type expression is parsed correctly.', function() { + expect(mega).toBeDefined(); + expect(mega.type).toBeDefined(); + expect(mega.type.names).toBeDefined(); + expect(mega.type.names.length).toBe(3); + expect(mega.type.names[0]).toBe('!Array.'); + expect(mega.type.names[1]).toBe('!Array.>'); + expect(mega.type.names[2]).toBe('!Array.>>'); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/var.js b/third_party/jsdoc/test/specs/documentation/var.js new file mode 100644 index 0000000000..4417435b93 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/var.js @@ -0,0 +1,61 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('var statements', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/var.js'); + var found = [ + docSet.getByLongname('GREEN'), + docSet.getByLongname('RED'), + docSet.getByLongname('validate'), + docSet.getByLongname('i'), + docSet.getByLongname('results') + ]; + + describe('when a series of constants is documented', function() { + it('should find the first constant', function() { + expect(found[0].length).toBe(1); + }); + + it('should attach the docs to the first constant', function() { + expect(found[0][0].comment).toBe('/** document me */'); + }); + + it('should have the correct name', function() { + expect(found[0][0].name).toBe('GREEN'); + }); + + it('should have the correct memberof', function() { + expect(found[0][0].memberof).toBeUndefined(); + }); + + it('should give the constant a global scope', function() { + expect(found[0][0].scope).toBe('global'); + }); + + it('should find the second constant', function() { + expect(found[1].length).toBe(1); + }); + + it('should not attach the docs to the second constant', function() { + expect(found[1][0].undocumented).toBe(true); + }); + }); + + describe('when a member of a series of vars is documented', function() { + it('should attach the docs to the correct var', function() { + expect(found[4][0].comment).toBe('/** document me */'); + }); + + it('should have the correct name', function() { + expect(found[4][0].name).toBe('results'); + }); + + it('should leave memberof undefined', function() { + expect(found[4][0].memberof).toBeUndefined(); + }); + + it('should give the var a global scope', function() { + expect(found[4][0].scope).toBe('global'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/documentation/variations.js b/third_party/jsdoc/test/specs/documentation/variations.js new file mode 100644 index 0000000000..3bf133c8e1 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/variations.js @@ -0,0 +1,38 @@ +describe("variations", function() { + + describe("by name", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/variations.js'), + fadein1 = docSet.getByLongname('anim.fadein(1)')[0], + fadein2 = docSet.getByLongname('anim.fadein(2)')[0]; + + it('When a symbol has a name with a variation, the doclet has a variation property.', function() { + expect(fadein1.variation).toEqual('1'); + expect(fadein2.variation).toEqual('2'); + }); + + it('When a symbol has a name with a variation in the name, the doclet name has no variation in it.', function() { + expect(fadein1.name).toEqual('fadein'); + expect(fadein2.name).toEqual('fadein'); + }); + + it('When a symbol has a name with a variation in the name, the doclet longname has the variation in it.', function() { + expect(fadein1.longname).toEqual('anim.fadein(1)'); + expect(fadein2.longname).toEqual('anim.fadein(2)'); + }); + }); + + describe("by tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/variations3.js'), + someObject = docSet.getByLongname('someObject')[0], + someObject2 = docSet.getByLongname('someObject(2)')[0], + someObject2method = docSet.getByLongname('someObject(2).someMethod')[0]; + + it('When a symbol has a variation tag, the longname includes that variation.', function() { + expect(someObject2.longname).toEqual('someObject(2)'); + }); + + it('When a symbol is a member of a variation, the longname includes the variation.', function() { + expect(someObject2method.longname).toEqual('someObject(2).someMethod'); + }); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/documentation/virtual.js b/third_party/jsdoc/test/specs/documentation/virtual.js new file mode 100644 index 0000000000..0e55bb7cb4 --- /dev/null +++ b/third_party/jsdoc/test/specs/documentation/virtual.js @@ -0,0 +1,53 @@ +/*global describe, expect, it, jasmine */ +describe('virtual symbols', function() { + + describe('simple cases', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/virtual.js'); + var dimensions = docSet.getByLongname('dimensions'); + var width = docSet.getByLongname('width'); + + it('should document virtual symbols', function() { + expect(dimensions.length).toBe(1); + }); + + it('should document an undocumented symbol found after a comment for a virtual symbol', function() { + expect(width.length).toBe(1); + }); + }); + + describe('complex cases', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/virtual2.js'); + var say = docSet.getByLongname('Person#say')[0]; + var sayCallback = docSet.getByLongname('Person~sayCallback')[0]; + + it('should document virtual symbols inside an object literal', function() { + expect(sayCallback).toBeDefined(); + expect(sayCallback.undocumented).not.toBeDefined(); + }); + + it('should attach the comment to a documented symbol that follows a virtual symbol', function() { + expect(say).toBeDefined(); + expect(say.undocumented).not.toBeDefined(); + }); + }); + + describe('overloaded virtual symbols', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/virtual3.js'); + var constructors = docSet.getByLongname('module:connection'); + + it('should create multiple doclets for overloaded virtual symbols', function() { + expect(constructors).toBeDefined(); + expect(constructors.length).toBe(2); + }); + + it('should use the correct signature for each virtual symbol', function() { + expect(constructors[0]).toBeDefined(); + expect(constructors[0].params).toBeDefined(); + expect(Array.isArray(constructors[0].params)).toBe(true); + expect(constructors[0].params[0].name).toBe('name'); + + expect(constructors[1]).toBeDefined(); + expect(constructors[1].params).not.toBeDefined(); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/augment.js b/third_party/jsdoc/test/specs/jsdoc/augment.js new file mode 100644 index 0000000000..7b2daf927f --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/augment.js @@ -0,0 +1,4 @@ +/*global describe: true, env: true, it: true */ +describe("jsdoc/augment", function() { + // TODO +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/borrow.js b/third_party/jsdoc/test/specs/jsdoc/borrow.js new file mode 100644 index 0000000000..4085d9b194 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/borrow.js @@ -0,0 +1,3 @@ +describe("jsdoc/borrow", function() { + //TODO +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/jsdoc/config.js b/third_party/jsdoc/test/specs/jsdoc/config.js new file mode 100644 index 0000000000..1ea42dbd2e --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/config.js @@ -0,0 +1,47 @@ +/*global describe: true, expect: true, it: true */ +describe("jsdoc/config", function() { + var jsdoc = {config: require('jsdoc/config') }; + + it("should exist", function() { + expect(jsdoc.config).toBeDefined(); + expect(typeof jsdoc.config).toEqual("function"); + }); + + it("should provide a 'get' instance function", function() { + var config = new jsdoc.config(); + expect(config.get).toBeDefined(); + expect(typeof config.get).toEqual("function"); + }); + + describe ("constructor with empty", function() { + it('should be possible to construct a Config with an empty arguments', function() { + var config = new jsdoc.config().get(); + + expect(config.plugins).toEqual([]); + }); + }); + + describe ("constructor with {}", function() { + it('should be possible to construct a Config with JSON of an object literal that is emptys', function() { + var config = new jsdoc.config('{}').get(); + + expect(config.plugins).toEqual([]); + }); + }); + + describe ("constructor with plugins value", function() { + it('should be possible to construct a Config with JSON of an object literal that has a plugin value', function() { + var config = new jsdoc.config('{"plugins":[42]}').get(); + + expect(config.plugins).toEqual([42]); + }); + }); + + describe ("constructor with source value", function() { + it('should be possible to construct a Config with JSON of an object literal that has a source value', function() { + var config = new jsdoc.config('{"source":{"includePattern":"hello"}}').get(); + + expect(config.source.includePattern).toEqual('hello'); + }); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/jsdoc/doclet.js b/third_party/jsdoc/test/specs/jsdoc/doclet.js new file mode 100644 index 0000000000..edbbc5a235 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/doclet.js @@ -0,0 +1,64 @@ +/*global afterEach, describe, env, expect, it, jasmine */ +'use strict'; + +describe('jsdoc/doclet', function() { + // TODO: more tests + var _ = require('underscore'); + var Doclet = require('jsdoc/doclet').Doclet; + + var debug = !!env.opts.debug; + var docSet = jasmine.getDocSetFromFile('test/fixtures/doclet.js'); + var test1 = docSet.getByLongname('test1')[0]; + var test2 = docSet.getByLongname('test2')[0]; + + var expectList = '* List item 1'; + var expectStrong = '**Strong** is strong'; + + afterEach(function() { + env.opts.debug = debug; + }); + + it('does not mangle Markdown in a description that uses leading asterisks', function() { + expect(test2.description.indexOf(expectList)).toBeGreaterThan(-1); + expect(test2.description.indexOf(expectStrong)).toBeGreaterThan(-1); + }); + + it('adds the AST node as a non-enumerable property by default', function() { + var descriptor = Object.getOwnPropertyDescriptor(test1.meta.code, 'node'); + + expect(descriptor.enumerable).toBe(false); + }); + + it('adds the AST node as an enumerable property in debug mode', function() { + var descriptor; + var doclet; + + env.opts.debug = true; + doclet = jasmine.getDocSetFromFile('test/fixtures/doclet.js').getByLongname('test1')[0]; + descriptor = Object.getOwnPropertyDescriptor(doclet.meta.code, 'node'); + + expect(descriptor.enumerable).toBe(true); + }); + + describe('setScope', function() { + it('should accept the correct scope names', function() { + function setScope(scopeName) { + var doclet = new Doclet('/** Huzzah, a doclet! */', {}); + doclet.setScope(scopeName); + } + + _.values(require('jsdoc/name').SCOPE.NAMES).forEach(function(scopeName) { + expect( setScope.bind(null, scopeName) ).not.toThrow(); + }); + }); + + it('should throw an error for invalid scope names', function() { + function setScope() { + var doclet = new Doclet('/** Woe betide this doclet. */', {}); + doclet.setScope('fiddlesticks'); + } + + expect(setScope).toThrow(); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/name.js b/third_party/jsdoc/test/specs/jsdoc/name.js new file mode 100644 index 0000000000..e20e86d2bf --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/name.js @@ -0,0 +1,421 @@ +/*global describe, expect, it */ +'use strict'; + +describe('jsdoc/name', function() { + var jsdoc = { + doclet: require('jsdoc/doclet'), + name: require('jsdoc/name') + }; + + it('should exist', function() { + expect(jsdoc.name).toBeDefined(); + expect(typeof jsdoc.name).toBe('object'); + }); + + it("should export a 'resolve' function", function() { + expect(jsdoc.name.resolve).toBeDefined(); + expect(typeof jsdoc.name.resolve).toBe('function'); + }); + + it("should export an 'applyNamespace' function", function() { + expect(jsdoc.name.applyNamespace).toBeDefined(); + expect(typeof jsdoc.name.applyNamespace).toBe('function'); + }); + + // TODO: add tests for other exported constants + it('should export a SCOPE enum', function() { + expect(jsdoc.name.SCOPE).toBeDefined(); + expect(typeof jsdoc.name.SCOPE).toBe('object'); + }); + + it("should export a 'shorten' function", function() { + expect(jsdoc.name.shorten).toBeDefined(); + expect(typeof jsdoc.name.shorten).toBe('function'); + }); + + it("should export a 'splitName' function", function() { + expect(jsdoc.name.splitName).toBeDefined(); + expect(typeof jsdoc.name.splitName).toBe('function'); + }); + + describe('SCOPE', function() { + var SCOPE = jsdoc.name.SCOPE; + + it('should have a "NAMES" property', function() { + expect(SCOPE.NAMES).toBeDefined(); + expect(typeof SCOPE.NAMES).toBe('object'); + }); + + it('should have a "PUNC" property', function() { + expect(SCOPE.PUNC).toBeDefined(); + expect(typeof SCOPE.PUNC).toBe('object'); + }); + + describe('NAMES', function() { + it('should have a "GLOBAL" property', function() { + expect(SCOPE.NAMES.GLOBAL).toBeDefined(); + expect(typeof SCOPE.NAMES.GLOBAL).toBe('string'); + }); + + it('should have an "INNER" property', function() { + expect(SCOPE.NAMES.INNER).toBeDefined(); + expect(typeof SCOPE.NAMES.INNER).toBe('string'); + }); + + it('should have an "INSTANCE" property', function() { + expect(SCOPE.NAMES.INSTANCE).toBeDefined(); + expect(typeof SCOPE.NAMES.INSTANCE).toBe('string'); + }); + + it('should have a "STATIC" property', function() { + expect(SCOPE.NAMES.STATIC).toBeDefined(); + expect(typeof SCOPE.NAMES.STATIC).toBe('string'); + }); + }); + + describe('PUNC', function() { + it('should have an "INNER" property', function() { + expect(SCOPE.PUNC.INNER).toBeDefined(); + expect(typeof SCOPE.PUNC.INNER).toBe('string'); + }); + + it('should have an "INSTANCE" property', function() { + expect(SCOPE.PUNC.INSTANCE).toBeDefined(); + expect(typeof SCOPE.PUNC.INSTANCE).toBe('string'); + }); + + it('should have a "STATIC" property', function() { + expect(SCOPE.PUNC.STATIC).toBeDefined(); + expect(typeof SCOPE.PUNC.STATIC).toBe('string'); + }); + }); + }); + + describe('shorten', function() { + it('should break up a longname into the correct memberof, name and scope parts', function() { + var startName = 'lib.Panel#open'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toEqual('open'); + expect(parts.memberof).toEqual('lib.Panel'); + expect(parts.scope).toEqual('#'); + }); + + it('should work on static names', function() { + var startName = 'elements.selected.getVisible'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toEqual('getVisible'); + expect(parts.memberof).toEqual('elements.selected'); + expect(parts.scope).toEqual('.'); + }); + + it('should work on protoyped names', function() { + var startName = 'Validator.prototype.$element'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toEqual('$element'); + expect(parts.memberof).toEqual('Validator'); + expect(parts.scope).toEqual('#'); + }); + + it('should work on inner names', function() { + var startName = 'Button~_onclick'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toEqual('_onclick'); + expect(parts.memberof).toEqual('Button'); + expect(parts.scope).toEqual('~'); + }); + + it('should work on global names', function() { + var startName = 'close'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toEqual('close'); + expect(parts.memberof).toEqual(''); + expect(parts.scope).toEqual(''); + }); + + it('should work when a single property uses bracket notation', function() { + var startName = 'channels["#ops"]#open'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toEqual('open'); + expect(parts.memberof).toEqual('channels."#ops"'); + expect(parts.scope).toEqual('#'); + }); + + it('should work when consecutive properties use bracket notation', function() { + var startName = 'channels["#bots"]["log.max"]'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toEqual('"log.max"'); + expect(parts.memberof).toEqual('channels."#bots"'); + expect(parts.scope).toEqual('.'); + }); + + it('should work when a property uses single-quoted bracket notation', function() { + var startName = "channels['#ops']"; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toBe("'#ops'"); + expect(parts.memberof).toBe('channels'); + expect(parts.scope).toBe('.'); + }); + + it('should work on double-quoted strings', function() { + var startName = '"foo.bar"'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toEqual('"foo.bar"'); + expect(parts.longname).toEqual('"foo.bar"'); + expect(parts.memberof).toEqual(''); + expect(parts.scope).toEqual(''); + }); + + it('should work on single-quoted strings', function() { + var startName = "'foo.bar'"; + var parts = jsdoc.name.shorten(startName); + + expect(parts.name).toBe("'foo.bar'"); + expect(parts.longname).toBe("'foo.bar'"); + expect(parts.memberof).toBe(''); + expect(parts.scope).toBe(''); + }); + + it('should find the variation', function() { + var startName = 'anim.fadein(2)'; + var parts = jsdoc.name.shorten(startName); + + expect(parts.variation).toEqual('2'); + expect(parts.name).toEqual('fadein'); + expect(parts.longname).toEqual('anim.fadein(2)'); + }); + }); + + describe('applyNamespace', function() { + it('should insert the namespace only before the name part of the longname', function() { + var startName = 'lib.Panel#open'; + var endName = jsdoc.name.applyNamespace(startName, 'event'); + + expect(endName, 'lib.Panel#event:open'); + }); + + it('should insert the namespace before a global name', function() { + var startName = 'maths/bigint'; + var endName = jsdoc.name.applyNamespace(startName, 'module'); + + expect(endName, 'module:maths/bigint'); + }); + + it('should treat quoted parts of the name as atomic and insert namespace before a quoted shortname', function() { + var startName = 'foo."*dont\'t.look~in#here!"'; + var endName = jsdoc.name.applyNamespace(startName, 'event'); + + expect(endName, 'foo.event:"*dont\'t.look~in#here!"'); + }); + + it('should not add another namespace if one already exists.', function() { + var startName = 'lib.Panel#event:open'; + var endName = jsdoc.name.applyNamespace(startName, 'event'); + + expect(endName, 'lib.Panel#event:open'); + }); + }); + + describe('splitName', function() { + it('should find the name and description.', function() { + var startName = 'ns.Page#"last \\"sentence\\"".words~sort(2) - This is a description. '; + var parts = jsdoc.name.splitName(startName); + + expect(parts.name, 'ns.Page#"last \\"sentence\\"".words~sort(2)'); + expect(parts.description, 'This is a description.'); + }); + + it('should strip the separator when the separator starts on the same line as the name', function() { + var startName = 'socket - The networking kind, not the wrench.'; + var parts = jsdoc.name.splitName(startName); + + expect(parts.name).toBe('socket'); + expect(parts.description).toBe('The networking kind, not the wrench.'); + }); + + it('should not strip a separator that is preceded by a line break', function() { + var startName = 'socket\n - The networking kind, not the wrench.'; + var parts = jsdoc.name.splitName(startName); + + expect(parts.name).toBe('socket'); + expect(parts.description).toBe('- The networking kind, not the wrench.'); + }); + + it('should allow default values to have brackets', function() { + var startName = '[path=["home", "user"]] - Path split into components' + var parts = jsdoc.name.splitName(startName); + + expect(parts.name).toBe('[path=["home", "user"]]'); + expect(parts.description).toBe('Path split into components'); + }); + + it('should allow default values to have unmatched brackets inside strings', function() { + var startName = '[path=["Unmatched begin: ["]] - Path split into components' + var parts = jsdoc.name.splitName(startName); + + expect(parts.name).toBe('[path=["Unmatched begin: ["]]'); + expect(parts.description).toBe('Path split into components'); + }); + + it('should fail gracefully when the default value has an unmatched bracket', function() { + var startName = '[path=["home", "user"] - Path split into components' + var parts = jsdoc.name.splitName(startName); + + expect(parts).not.toBe(null); + expect(parts.name).toBe('[path=["home", "user"]'); + expect(parts.description).toBe('Path split into components'); + }); + + it('should fail gracefully when the default value has an unmatched quote', function() { + var startName = '[path=["home", "user] - Path split into components' + var parts = jsdoc.name.splitName(startName); + + expect(parts).not.toBe(null); + expect(parts.name).toBe('[path=["home", "user]'); + expect(parts.description).toBe('Path split into components'); + }); + }); + + describe('resolve', function() { + // TODO: further tests (namespaces, modules, ...) + + function makeDoclet(tagStrings) { + var comment = '/**\n' + tagStrings.join('\n') + '\n*/'; + return new jsdoc.doclet.Doclet(comment, {}); + } + + // @event testing. + var event = '@event'; + var memberOf = '@memberof MyClass'; + var name = '@name A'; + + // Test the basic @event that is not nested. + it('unnested @event gets resolved correctly', function() { + var doclet = makeDoclet([event, name]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toBeUndefined(); + expect(doclet.longname).toEqual('event:A'); + }); + + // test all permutations of @event @name [name] @memberof. + it('@event @name @memberof resolves correctly', function() { + var doclet = makeDoclet([event, name, memberOf]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@event @memberof @name resolves correctly', function() { + var doclet = makeDoclet([event, memberOf, name]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@name @event @memberof resolves correctly', function() { + var doclet = makeDoclet([name, event, memberOf]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@name @memberof @event resolves correctly', function() { + var doclet = makeDoclet([name, memberOf, event]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@memberof @event @name resolves correctly', function() { + var doclet = makeDoclet([memberOf, event, name]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@memberof @name @event resolves correctly', function() { + var doclet = makeDoclet([memberOf, name, event]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + + // test all permutations of @event [name] @memberof + it('@event [name] @memberof resolves correctly', function() { + var doclet = makeDoclet(['@event A', memberOf]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@memberof @event [name] resolves correctly', function() { + var doclet = makeDoclet([memberOf, '@event A']); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + + // test full @event A.B + it('full @event definition works', function() { + var doclet = makeDoclet(['@event MyClass.A']); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('full @event definition with event: works', function() { + var doclet = makeDoclet(['@event MyClass.event:A']); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('event:A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + + // a double-nested one just in case + it('@event @name MyClass.EventName @memberof somethingelse works', function() { + var doclet = makeDoclet([event, '@name MyClass.A', '@memberof MyNamespace']); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyNamespace.MyClass'); + expect(doclet.longname).toEqual('MyNamespace.MyClass.event:A'); + }); + + // other cases + it('correctly handles a function parameter named "prototype"', function() { + var doclet = makeDoclet([ + '@name Bar.prototype.baz', + '@function', + '@memberof module:foo', + '@param {string} qux' + ]); + var out = jsdoc.name.resolve(doclet); + + expect(doclet.name).toBe('baz'); + expect(doclet.memberof).toBe('module:foo.Bar'); + expect(doclet.longname).toBe('module:foo.Bar#baz'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/opts/argparser.js b/third_party/jsdoc/test/specs/jsdoc/opts/argparser.js new file mode 100644 index 0000000000..3156a1852b --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/opts/argparser.js @@ -0,0 +1,170 @@ +/*global afterEach, beforeEach, describe, expect, it */ +'use strict'; + +describe('jsdoc/opts/argparser', function() { + var ArgParser = require('jsdoc/opts/argparser'); + var argParser; + var ourOptions; + + function trueFalse(v) { + var r = false; + if (v) { + if (v === 'true') { r = true; } + else if (v === 'false') { r = false; } + else { v = !!r; } + } + + return r; + } + + beforeEach(function() { + argParser = new ArgParser() + .addOption('s', 'strict', true, 'Throw error on invalid input.', false, trueFalse) + .addOption('n', 'name', true, 'The name of the project.', false); + + ourOptions = argParser.parse(['-s', 'true', '-n', 'true']); + }); + + it('should exist', function() { + expect(ArgParser).toBeDefined(); + }); + + it('should be a constructor', function() { + expect(typeof ArgParser).toBe('function'); + expect(new ArgParser() instanceof ArgParser).toBe(true); + }); + + describe('ArgParser', function() { + it('should provide an "addIgnoredOption" method', function() { + expect(argParser.addIgnoredOption).toBeDefined(); + expect(typeof argParser.addIgnoredOption).toBe('function'); + }); + + it('should provide an "addOption" method', function() { + expect(argParser.addOption).toBeDefined(); + expect(typeof argParser.addOption).toBe('function'); + }); + + it('should provide a "help" method', function() { + expect(argParser.help).toBeDefined(); + expect(typeof argParser.help).toBe('function'); + }); + + it('should provide a "parse" method', function() { + expect(argParser.parse).toBeDefined(); + expect(typeof argParser.parse).toBe('function'); + }); + + describe('addIgnoredOption', function() { + it('should be chainable', function() { + expect(argParser.addIgnoredOption({})).toBe(argParser); + }); + }); + + describe('addOption', function() { + it('should be chainable', function() { + expect(argParser.addOption('a', null, false, 'Option')).toBe(argParser); + }); + }); + + describe('help', function() { + var columns = process.stdout.columns; + + beforeEach(function() { + process.stdout.columns = 80; + }); + + afterEach(function() { + process.stdout.columns = columns; + }); + + it('should format the help text correctly', function() { + var helpText = [ + 'Options:', + ' --noshortname Just a long name.', + ' -o Only a short name.', + ' -s, --supercalifragilisticexpialidocious If you say it loud enough,', + " you'll always sound", + ' precocious.' + ].join('\n'); + + argParser = new ArgParser() + .addIgnoredOption('m', 'meh', false, 'Ignore me.') + .addOption(null, 'noshortname', false, 'Just a long name.') + .addOption('o', null, true, 'Only a short name.') + .addOption('s', 'supercalifragilisticexpialidocious', false, + "If you say it loud enough, you'll always sound precocious."); + + expect(argParser.help()).toBe(helpText); + }); + }); + + describe('parse', function() { + it('should return an object with information about the options', function() { + expect(typeof ourOptions).toBe('object'); + expect(ourOptions.strict).toBe(true); + expect(ourOptions.name).toBe('true'); + }); + + it('should merge the defaults into the command-line options', function() { + var defaults = { + strict: false, + name: 'Hello world!' + }; + + ourOptions = argParser.parse(['-s', true], defaults); + + expect(ourOptions.strict).toBe(true); + expect(ourOptions.name).toBe(defaults.name); + }); + + it('should recognize options that can be used more than once', function() { + argParser.addOption(null, 'multi', true, '', true); + + ourOptions = argParser.parse(['--multi', 'value1', '--multi', 'value2', + '--multi', 'value3']); + expect(Array.isArray(ourOptions.multi)).toBe(true); + expect(ourOptions.multi.length).toBe(3); + expect(ourOptions.multi[0]).toBe('value1'); + expect(ourOptions.multi[1]).toBe('value2'); + expect(ourOptions.multi[2]).toBe('value3'); + }); + + it('should throw an error if an unrecognized short option is used', function() { + function badShortOption() { + argParser.parse(['-w']); + } + + expect(badShortOption).toThrow(); + }); + + it('should throw an error if an unrecognized long option is used', function() { + function badLongOption() { + argParser.parse(['--whatever']); + } + + expect(badLongOption).toThrow(); + }); + + it('should throw an error if a required value is missing', function() { + function missingValue() { + argParser.parse(['--requires-value']); + } + + argParser.addOption(null, 'requires-value', true, ''); + + expect(missingValue).toThrow(); + }); + + it('should coerce a true value if a coercer is provided', function() { + expect(ourOptions.strict).toBeDefined(); + expect(ourOptions.strict).toBe(true); + }); + + it('should coerce a string value if no coercer is provided', function() { + expect(ourOptions.name).toBeDefined(); + expect(ourOptions.name).toBe('true'); + }); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/opts/args.js b/third_party/jsdoc/test/specs/jsdoc/opts/args.js new file mode 100644 index 0000000000..16cd77baff --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/opts/args.js @@ -0,0 +1,303 @@ +/*global describe, expect, it */ +'use strict'; + +describe('jsdoc/opts/args', function() { + var args = require('jsdoc/opts/args'); + var querystring = require('querystring'); + + it('should exist', function() { + expect(args).toBeDefined(); + expect(typeof args).toBe('object'); + }); + + it('should export a "parse" function', function() { + expect(args.parse).toBeDefined(); + expect(typeof args.parse).toBe('function'); + }); + + it('should export a "help" function', function() { + expect(args.help).toBeDefined(); + expect(typeof args.help).toBe('function'); + }); + + it('should export a "get" function', function() { + expect(args.get).toBeDefined(); + expect(typeof args.get).toBe('function'); + }); + + describe('parse', function() { + it('should accept a "-t" option and return an object with a "template" property', function() { + args.parse(['-t', 'mytemplate']); + var r = args.get(); + + expect(r.template).toBe('mytemplate'); + }); + + it('should accept a "--template" option and return an object with a "template" property', function() { + args.parse(['--template', 'mytemplate']); + var r = args.get(); + + expect(r.template).toBe('mytemplate'); + }); + + it('should accept a "-c" option and return an object with a "configure" property', function() { + args.parse(['-c', 'myconf.json']); + var r = args.get(); + + expect(r.configure).toBe('myconf.json'); + }); + + it('should accept a "--configure" option and return an object with a "configure" property', function() { + args.parse(['--configure', 'myconf.json']); + var r = args.get(); + + expect(r.configure).toBe('myconf.json'); + }); + + it('should accept an "-e" option and return an object with a "encoding" property', function() { + args.parse(['-e', 'ascii']); + var r = args.get(); + + expect(r.encoding).toBe('ascii'); + }); + + it('should accept an "--encoding" option and return an object with an "encoding" property', function() { + args.parse(['--encoding', 'ascii']); + var r = args.get(); + + expect(r.encoding).toBe('ascii'); + }); + + it('should accept a "-T" option and return an object with a "test" property', function() { + args.parse(['-T']); + var r = args.get(); + + expect(r.test).toBe(true); + }); + + it('should accept a "--test" option and return an object with a "test" property', function() { + args.parse(['--test']); + var r = args.get(); + + expect(r.test).toBe(true); + }); + + it('should accept a "-d" option and return an object with a "destination" property', function() { + args.parse(['-d', 'mydestination']); + var r = args.get(); + + expect(r.destination).toBe('mydestination'); + }); + + it('should accept a "--destination" option and return an object with a "destination" property', function() { + args.parse(['--destination', 'mydestination']); + var r = args.get(); + + expect(r.destination).toBe('mydestination'); + }); + + it('should accept a "-p" option and return an object with a "private" property', function() { + args.parse(['-p']); + var r = args.get(); + + expect(r.private).toBe(true); + }); + + it('should accept a "--private" option and return an object with a "private" property', function() { + args.parse(['--private']); + var r = args.get(); + + expect(r.private).toBe(true); + }); + + it('should accept a "-r" option and return an object with a "recurse" property', function() { + args.parse(['-r']); + var r = args.get(); + + expect(r.recurse).toBe(true); + }); + + it('should accept a "--recurse" option and return an object with a "recurse" property', function() { + args.parse(['--recurse']); + var r = args.get(); + + expect(r.recurse).toBe(true); + }); + + it('should accept a "-l" option and ignore it', function() { + args.parse(['-l']); + var r = args.get(); + + expect(r.lenient).not.toBeDefined(); + }); + + it('should accept a "--lenient" option and ignore it', function() { + args.parse(['--lenient']); + var r = args.get(); + + expect(r.lenient).not.toBeDefined(); + }); + + it('should accept a "-h" option and return an object with a "help" property', function() { + args.parse(['-h']); + var r = args.get(); + + expect(r.help).toBe(true); + }); + + it('should accept a "--help" option and return an object with a "help" property', function() { + args.parse(['--help']); + var r = args.get(); + + expect(r.help).toBe(true); + }); + + it('should accept an "-X" option and return an object with an "explain" property', function() { + args.parse(['-X']); + var r = args.get(); + + expect(r.explain).toBe(true); + }); + + it('should accept an "--explain" option and return an object with an "explain" property', function() { + args.parse(['--explain']); + var r = args.get(); + + expect(r.explain).toBe(true); + }); + + it('should accept a "-q" option and return an object with a "query" property', function() { + args.parse(['-q', 'foo=bar&fab=baz']); + var r = args.get(); + + expect(r.query).toEqual({ foo: 'bar', fab: 'baz' }); + }); + + it('should accept a "--query" option and return an object with a "query" property', function() { + args.parse(['--query', 'foo=bar&fab=baz']); + var r = args.get(); + + expect(r.query).toEqual({ foo: 'bar', fab: 'baz' }); + }); + + it('should use type coercion on the "query" property so it has real booleans and numbers', function() { + var obj = { + foo: 'fab', + bar: true, + baz: false, + qux: [1, -97] + }; + args.parse(['-q', querystring.stringify(obj)]); + var r = args.get(); + + expect(r.query).toEqual(obj); + }); + + it('should accept a "-u" option and return an object with a "tutorials" property', function() { + args.parse(['-u', 'mytutorials']); + var r = args.get(); + + expect(r.tutorials).toBe('mytutorials'); + }); + + it('should accept a "--tutorials" option and return an object with a "tutorials" property', function() { + args.parse(['--tutorials', 'mytutorials']); + var r = args.get(); + + expect(r.tutorials).toBe('mytutorials'); + }); + + it('should accept a "--debug" option and return an object with a "debug" property', function() { + args.parse(['--debug']); + var r = args.get(); + + expect(r.debug).toBe(true); + }); + + it('should accept a "--verbose" option and return an object with a "verbose" property', function() { + args.parse(['--verbose']); + var r = args.get(); + + expect(r.verbose).toBe(true); + }); + + it('should accept a "--pedantic" option and return an object with a "pedantic" property', function() { + args.parse(['--pedantic']); + var r = args.get(); + + expect(r.pedantic).toBe(true); + }); + + it('should accept a "--match" option and return an object with a "match" property', function() { + args.parse(['--match', '.*tag']); + var r = args.get(); + + expect(r.match).toBe('.*tag'); + }); + + it('should accept multiple "--match" options and return an object with a "match" property', function() { + args.parse(['--match', '.*tag', '--match', 'parser']); + var r = args.get(); + + expect(r.match).toEqual(['.*tag', 'parser']); + }); + + it('should accept a "--nocolor" option and return an object with a "nocolor" property', function() { + args.parse(['--nocolor']); + var r = args.get(); + + expect(r.nocolor).toBe(true); + }); + + it('should accept a "-P" option and return an object with a "package" property', function() { + args.parse(['-P', 'path/to/package/file.json']); + var r = args.get(); + + expect(r.package).toBe('path/to/package/file.json'); + }); + + it('should accept a "--package" option and return an object with a "package" property', function() { + args.parse(['--package', 'path/to/package/file.json']); + var r = args.get(); + + expect(r.package).toBe('path/to/package/file.json'); + }); + + it('should accept a "-R" option and return an object with a "readme" property', function() { + args.parse(['-R', 'path/to/readme/file.md']); + var r = args.get(); + + expect(r.readme).toBe('path/to/readme/file.md'); + }); + + it('should accept a "--readme" option and return an object with a "readme" property', function() { + args.parse(['--readme', 'path/to/readme/file.md']); + var r = args.get(); + + expect(r.readme).toBe('path/to/readme/file.md'); + }); + + it('should accept a "-v" option and return an object with a "version" property', function() { + args.parse(['-v']); + var r = args.get(); + + expect(r.version).toBe(true); + }); + + it('should accept a "--version" option and return an object with a "version" property', function() { + args.parse(['--version']); + var r = args.get(); + + expect(r.version).toBe(true); + }); + + it('should accept a naked option (with no "-") and return an object with a "_" property', function() { + args.parse(['myfile1', 'myfile2']); + var r = args.get(); + + expect(r._).toEqual(['myfile1', 'myfile2']); + }); + + //TODO: tests for args that must have values + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/package.js b/third_party/jsdoc/test/specs/jsdoc/package.js new file mode 100644 index 0000000000..090cef6599 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/package.js @@ -0,0 +1,264 @@ +/*global beforeEach, describe, expect, it, jasmine, spyOn */ +'use strict'; + +var hasOwnProp = Object.prototype.hasOwnProperty; + +describe('jsdoc/package', function() { + var emptyPackage; + var jsdocPackage = require('jsdoc/package'); + var logger = require('jsdoc/util/logger'); + var Package = jsdocPackage.Package; + + function checkPackageProperty(name, value) { + var myPackage; + var obj = {}; + + obj[name] = value; + myPackage = new Package( JSON.stringify(obj) ); + // add the package object to the cached parse results, so we can validate it against the + // doclet schema + jasmine.addParseResults('package-property-' + name + '.js', [myPackage]); + + // use toEqual so we can test array/object values + expect(myPackage[name]).toEqual(value); + } + + it('should exist', function() { + expect(jsdocPackage).toBeDefined(); + expect(typeof jsdocPackage).toBe('object'); + }); + + it('should export a "Package" constructor', function() { + expect(Package).toBeDefined(); + expect(typeof Package).toBe('function'); + }); + + describe('Package', function() { + beforeEach(function() { + emptyPackage = new Package(); + }); + + it('should accept a JSON-format string', function() { + function newPackage() { + return new Package('{"foo": "bar"}'); + } + + expect(newPackage).not.toThrow(); + }); + + it('should work when called with no arguments', function() { + function newPackage() { + return new Package(); + } + + expect(newPackage).not.toThrow(); + }); + + it('should log an error when called with bad input', function() { + function newPackage() { + return new Package('abcdefg'); + } + + spyOn(logger, 'error'); + + expect(newPackage).not.toThrow(); + expect(logger.error).toHaveBeenCalled(); + }); + + describe('author', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'author') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('author', { name: 'Jane Smith', email: 'jsmith@example.com' }); + }); + }); + + describe('bugs', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'bugs') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('bugs', { url: 'http://example.com/bugs' }); + }); + }); + + describe('contributors', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'contributors') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('contributors', [{ + name: 'Jane Smith', + email: 'jsmith@example.com' + }]); + }); + }); + + describe('dependencies', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'dependencies') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('dependencies', { bar: '~1.1.0' }); + }); + }); + + describe('description', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'description') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('description', 'My package.'); + }); + }); + + describe('devDependencies', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'devDependencies') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('devDependencies', { baz: '~3.4.5' }); + }); + }); + + describe('engines', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'engines') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('engines', { node: '>=0.10.3' }); + }); + }); + + describe('files', function() { + it('should contain an empty array by default', function() { + expect(emptyPackage.files).toBeDefined(); + expect(emptyPackage.files).toEqual([]); + }); + + it('should ignore the value from the package file', function() { + var myPackage = new Package('{"files": ["foo", "bar"]}'); + + expect(myPackage.files.length).toBe(0); + }); + }); + + describe('homepage', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'homepage') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('homepage', 'http://example.com/'); + }); + }); + + describe('keywords', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'keywords') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('keywords', ['foo', 'bar']); + }); + }); + + describe('licenses', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'licenses') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('licenses', [{ + type: 'My Open-Source License', + url: 'http://example.com/oss' + }]); + }); + + it('should contain the value of "license" from the package file', function() { + var myPackage = new Package('{"license": "My-OSS-License"}'); + + expect(myPackage.license).not.toBeDefined(); + expect(myPackage.licenses).toBeDefined(); + expect(myPackage.licenses.length).toBe(1); + expect(myPackage.licenses[0].type).toBe('My-OSS-License'); + }); + + it('should combine the "license" and "licenses" properties', function() { + var packageInfo = { + license: 'My-OSS-License', + licenses: [{ + type: 'My Open-Source License', + url: 'http://example.com/oss' + }] + }; + var myPackage = new Package( JSON.stringify(packageInfo) ); + + expect(myPackage.licenses.length).toBe(2); + }); + }); + + describe('longname', function() { + it('should default to "package:undefined"', function() { + expect(emptyPackage.longname).toBe('package:undefined'); + }); + + it('should reflect the value of the "name" property', function() { + var myPackage = new Package('{"name": "foo"}'); + + expect(myPackage.longname).toBe('package:foo'); + }); + }); + + describe('main', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'main') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('main', 'foo'); + }); + }); + + describe('name', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'name') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('name', 'foo'); + }); + }); + + describe('repository', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'repository') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('repository', { + type: 'git', + url: 'git@example.org:foo/bar/baz.git' + }); + }); + }); + + describe('version', function() { + it('should not exist by default', function() { + expect( hasOwnProp.call(emptyPackage, 'version') ).toBe(false); + }); + + it('should contain the value from the package file', function() { + checkPackageProperty('version', '0.1.2'); + }); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/path.js b/third_party/jsdoc/test/specs/jsdoc/path.js new file mode 100644 index 0000000000..24ed9aeb09 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/path.js @@ -0,0 +1,137 @@ +/*global afterEach: true, beforeEach: true, describe: true, expect: true, it: true, spyOn: true, +xdescribe: true */ + +describe('jsdoc/path', function() { + var os = require('os'); + var path = require('jsdoc/path'); + var standardPath = require('path'); + + var isWindows = /^win/.test( os.platform() ); + + it('should exist', function() { + expect(path).toBeDefined(); + expect(typeof path).toEqual('object'); + }); + + it('should export all functions in the "path" module', function() { + Object.keys(standardPath).forEach(function(item) { + if (typeof standardPath[item] === 'function') { + expect(path[item]).toBeDefined(); + expect(typeof path[item]).toEqual('function'); + } + }); + }); + + it('should export a "commonPrefix" function', function() { + expect(path.commonPrefix).toBeDefined(); + expect(typeof path.commonPrefix).toEqual('function'); + }); + + it('should export a "getResourcePath" function', function() { + expect(path.getResourcePath).toBeDefined(); + expect(typeof path.getResourcePath).toEqual('function'); + }); + + describe('commonPrefix', function() { + var oldPwd; + var cwd; + + beforeEach(function() { + oldPwd = global.env.pwd; + global.env.pwd = isWindows ? 'C:\\Users\\jsdoc' : '/Users/jsdoc'; + cwd = global.env.pwd.split(path.sep); + }); + + afterEach(function() { + global.env.pwd = oldPwd; + }); + + it('finds the correct prefix for a single relative path', function() { + var paths = [path.join('foo', 'bar', 'baz', 'qux.js')]; + // we expect a trailing slash + var expected = cwd.concat('foo', 'bar', 'baz', '').join(path.sep); + + expect( path.commonPrefix(paths) ).toBe(expected); + }); + + it('finds the correct prefix for a group of relative paths', function() { + var paths = [ + path.join('foo', 'bar', 'baz', 'qux.js'), + path.join('foo', 'bar', 'baz', 'quux.js'), + path.join('foo', 'bar', 'baz.js') + ]; + // we expect a trailing slash + var expected = cwd.concat('foo', 'bar', '').join(path.sep); + + expect( path.commonPrefix(paths) ).toEqual(expected); + }); + + it('finds the correct prefix for a single absolute path', function() { + var paths = [cwd.concat('foo', 'bar', 'baz', 'qux.js').join(path.sep)]; + // we expect a trailing slash + var expected = cwd.concat('foo', 'bar', 'baz', '').join(path.sep); + + expect( path.commonPrefix(paths) ).toBe(expected); + }); + + it('finds the correct prefix for a group of absolute paths', function() { + var paths = [ + cwd.concat('foo', 'bar', 'baz', 'qux.js').join(path.sep), + cwd.concat('foo', 'bar', 'baz', 'quux.js').join(path.sep), + cwd.concat('foo', 'bar', 'baz.js').join(path.sep) + ]; + // we expect a trailing slash + var expected = cwd.concat('foo', 'bar', '').join(path.sep); + + expect( path.commonPrefix(paths) ).toEqual(expected); + }); + + it('finds the correct prefix for a group of absolute paths and dotted relative paths', + function() { + var paths = [ + path.join('..', 'jsdoc', 'foo', 'bar', 'baz', 'qux', 'quux', 'test.js'), + cwd.concat('foo', 'bar', 'bazzy.js').join(path.sep), + path.join('..', '..', 'Users', 'jsdoc', 'foo', 'bar', 'foobar.js') + ]; + // we expect a trailing slash + var expected = cwd.concat('foo', 'bar', '').join(path.sep); + + expect( path.commonPrefix(paths) ).toEqual(expected); + }); + + it('returns an empty string when the paths array is empty', function() { + var paths = []; + + expect( path.commonPrefix(paths) ).toBe(''); + }); + + // skip on Windows, since the paths share a drive letter at the start + if (!isWindows) { + it('returns an empty string when there is no common prefix', function() { + var paths = [ + path.join('foo', 'bar', 'baz', 'qux.js'), + path.join('..', '..', 'Library', 'foo', 'bar', 'baz.js') + ]; + + expect( path.commonPrefix(paths) ).toEqual(''); + }); + } + + // only test Windows paths on Windows + if (isWindows) { + it('works with Windows paths that contain spaces', function() { + var prefix = 'C:\\Users\\Jane Smith\\myproject\\'; + var paths = [ + prefix + 'index.js', + prefix + 'lib\\mymodule.js' + ]; + + expect( path.commonPrefix(paths) ).toBe(prefix); + }); + } + }); + + xdescribe('getResourcePath', function() { + // TODO + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/plugins.js b/third_party/jsdoc/test/specs/jsdoc/plugins.js new file mode 100644 index 0000000000..d634ddabbd --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/plugins.js @@ -0,0 +1,19 @@ +/*global describe: true, expect: true, it: true, xdescribe: true */ + +describe("jsdoc/plugins", function() { + var plugins = require('jsdoc/plugins'); + + it("should exist", function() { + expect(plugins).toBeDefined(); + expect(typeof plugins).toEqual('object'); + }); + + it("should export an 'installPlugins' function", function() { + expect(plugins.installPlugins).toBeDefined(); + expect(typeof plugins.installPlugins).toEqual('function'); + }); + + xdescribe("installPlugins", function() { + // TODO + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/readme.js b/third_party/jsdoc/test/specs/jsdoc/readme.js new file mode 100644 index 0000000000..51af2f7513 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/readme.js @@ -0,0 +1,14 @@ +describe("jsdoc/readme", function() { + var jsdoc = {readme: require('jsdoc/readme') }, + html = (new jsdoc.readme('test/fixtures/markdowntest.md')).html; + + it("should parse html out of markdown", function() { + expect(html).toBeDefined(); + expect(typeof html).toEqual("string"); + expect(html).toContain(''); + expect(html).toContain('

        '); + expect(html).toContain('

        '); + expect(html).toContain('

      • '); + }); + +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/jsdoc/schema.js b/third_party/jsdoc/test/specs/jsdoc/schema.js new file mode 100644 index 0000000000..8f52d8751b --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/schema.js @@ -0,0 +1,87 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('jsdoc/schema', function() { + var schema = require('jsdoc/schema'); + + it('should exist', function() { + expect(schema).toBeDefined(); + expect(typeof schema).toBe('object'); + }); + + it('should export a "BUGS_SCHEMA" object', function() { + expect(schema.BUGS_SCHEMA).toBeDefined(); + expect(typeof schema.BUGS_SCHEMA).toBe('object'); + }); + + it('should export a "CONTACT_INFO_SCHEMA" object', function() { + expect(schema.CONTACT_INFO_SCHEMA).toBeDefined(); + expect(typeof schema.CONTACT_INFO_SCHEMA).toBe('object'); + }); + + it('should export a "DOCLET_SCHEMA" object', function() { + expect(schema.DOCLET_SCHEMA).toBeDefined(); + expect(typeof schema.DOCLET_SCHEMA).toBe('object'); + }); + + it('should export a "DOCLETS_SCHEMA" object', function() { + expect(schema.DOCLETS_SCHEMA).toBeDefined(); + expect(typeof schema.DOCLETS_SCHEMA).toBe('object'); + }); + + it('should export an "ENUM_PROPERTY_SCHEMA" object', function() { + expect(schema.ENUM_PROPERTY_SCHEMA).toBeDefined(); + expect(typeof schema.ENUM_PROPERTY_SCHEMA).toBe('object'); + }); + + it('should export a "META_SCHEMA" object', function() { + expect(schema.META_SCHEMA).toBeDefined(); + expect(typeof schema.META_SCHEMA).toBe('object'); + }); + + it('should export a "PACKAGE_SCHEMA" object', function() { + expect(schema.PACKAGE_SCHEMA).toBeDefined(); + expect(typeof schema.PACKAGE_SCHEMA).toBe('object'); + }); + + it('should export a "PARAM_SCHEMA" object', function() { + expect(schema.PARAM_SCHEMA).toBeDefined(); + expect(typeof schema.PARAM_SCHEMA).toBe('object'); + }); + + it('should export a "TYPE_PROPERTY_SCHEMA" object', function() { + expect(schema.TYPE_PROPERTY_SCHEMA).toBeDefined(); + expect(typeof schema.TYPE_PROPERTY_SCHEMA).toBe('object'); + }); + + describe('validation', function() { + var validate = require('tv4').validateMultiple; + + it('should find validation errors in bogus input', function() { + var doclets = [ + { + foo: 'bar' + } + ]; + var validationResult = validate(doclets, schema.DOCLETS_SCHEMA); + + expect(validationResult.valid).toBe(false); + }); + + it('should not find any validation errors in the JSDoc parse results', function() { + jasmine.getParseResults().forEach(function(doclets) { + var validationResult; + validationResult = validate(doclets.doclets, schema.DOCLETS_SCHEMA); + + // hack to get the filename/errors in the test results + if (validationResult.errors.length) { + expect(doclets.filename).toBe(''); + expect(validationResult.errors).toEqual([]); + } + else { + expect(validationResult.errors.length).toBe(0); + } + }); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/src/astbuilder.js b/third_party/jsdoc/test/specs/jsdoc/src/astbuilder.js new file mode 100644 index 0000000000..9d6392135f --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/astbuilder.js @@ -0,0 +1,46 @@ +/*global beforeEach, describe, expect, it, spyOn, xdescribe */ +describe('jsdoc/src/astbuilder', function() { + var astbuilder = require('jsdoc/src/astbuilder'); + + it('should exist', function() { + expect(astbuilder).toBeDefined(); + expect(typeof astbuilder).toBe('object'); + }); + + it('should export an AstBuilder class', function() { + expect(astbuilder.AstBuilder).toBeDefined(); + expect(typeof astbuilder.AstBuilder).toBe('function'); + }); + + describe('AstBuilder', function() { + // TODO: more tests + var builder; + + beforeEach(function() { + builder = new astbuilder.AstBuilder(); + }); + + it('should provide a "build" method', function() { + expect(builder.build).toBeDefined(); + expect(typeof builder.build).toBe('function'); + }); + + describe('build', function() { + // TODO: more tests + var logger = require('jsdoc/util/logger'); + + beforeEach(function() { + spyOn(logger, 'error'); + }); + + it('should log (not throw) an error when a file cannot be parsed', function() { + function parse() { + builder.build('if (true) { return; }', 'bad.js'); + } + + expect(parse).not.toThrow(); + expect(logger.error).toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/src/astnode.js b/third_party/jsdoc/test/specs/jsdoc/src/astnode.js new file mode 100644 index 0000000000..7f17ed60eb --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/astnode.js @@ -0,0 +1,584 @@ +/*global afterEach, beforeEach, describe, env, expect, it */ +'use strict'; + +describe('jsdoc/src/astnode', function() { + var astnode = require('jsdoc/src/astnode'); + var doop = require('jsdoc/util/doop'); + var esprima = require('esprima'); + var Syntax = require('jsdoc/src/syntax').Syntax; + + // we need this in Esprima <1.1.0 for some node types + var opts = { + raw: true + }; + + // create the AST nodes we'll be testing + var arrayExpression = esprima.parse('[,]').body[0].expression; + var assignmentExpression = esprima.parse('foo = 1;').body[0].expression; + var binaryExpression = esprima.parse('foo & foo;').body[0].expression; + var functionDeclaration1 = esprima.parse('function foo() {}').body[0]; + var functionDeclaration1a = esprima.parse('function bar() {}').body[0]; + var functionDeclaration2 = esprima.parse('function foo(bar) {}').body[0]; + var functionDeclaration3 = esprima.parse('function foo(bar, baz, qux) {}').body[0]; + var functionExpression1 = esprima.parse('var foo = function() {};').body[0].declarations[0] + .init; + var functionExpression2 = esprima.parse('var foo = function(bar) {};').body[0].declarations[0] + .init; + var identifier = esprima.parse('foo;').body[0].expression; + var literal = esprima.parse('1;').body[0].expression; + var memberExpression = esprima.parse('foo.bar;').body[0].expression; + var memberExpressionComputed1 = esprima.parse('foo["bar"];', opts).body[0].expression; + var memberExpressionComputed2 = esprima.parse('foo[\'bar\'];', opts).body[0].expression; + var propertyGet = esprima.parse('var foo = { get bar() {} };').body[0].declarations[0].init + .properties[0]; + var propertyInit = esprima.parse('var foo = { bar: {} };').body[0].declarations[0].init + .properties[0]; + var propertySet = esprima.parse('var foo = { set bar(a) {} };').body[0].declarations[0].init + .properties[0]; + var thisExpression = esprima.parse('this;').body[0].expression; + var unaryExpression1 = esprima.parse('+1;').body[0].expression; + var unaryExpression2 = esprima.parse('+foo;').body[0].expression; + var variableDeclaration1 = esprima.parse('var foo = 1;').body[0]; + var variableDeclaration2 = esprima.parse('var foo = 1, bar = 2;').body[0]; + var variableDeclarator1 = esprima.parse('var foo = 1;').body[0].declarations[0]; + var variableDeclarator2 = esprima.parse('var foo;').body[0].declarations[0]; + + it('should exist', function() { + expect(astnode).toBeDefined(); + expect(typeof astnode).toBe('object'); + }); + + it('should export a nodeToString method', function() { + expect(astnode.nodeToString).toBeDefined(); + expect(typeof astnode.nodeToString).toBe('function'); + }); + + it('should export an addNodeProperties method', function() { + expect(astnode.addNodeProperties).toBeDefined(); + expect(typeof astnode.addNodeProperties).toBe('function'); + }); + + it('should export a getInfo method', function() { + expect(astnode.getInfo).toBeDefined(); + expect(typeof astnode.getInfo).toBe('function'); + }); + + it('should export a getParamNames method', function() { + expect(astnode.getParamNames).toBeDefined(); + expect(typeof astnode.getParamNames).toBe('function'); + }); + + it('should export an isAccessor method', function() { + expect(astnode.isAccessor).toBeDefined(); + expect(typeof astnode.isAccessor).toBe('function'); + }); + + it('should export an isAssignment method', function() { + expect(astnode.isAssignment).toBeDefined(); + expect(typeof astnode.isAssignment).toBe('function'); + }); + + it('should export an isScope method', function() { + expect(astnode.isScope).toBeDefined(); + expect(typeof astnode.isScope).toBe('function'); + }); + + describe('addNodeProperties', function() { + var debugEnabled; + + beforeEach(function() { + debugEnabled = !!global.env.opts.debug; + }); + + afterEach(function() { + global.env.opts.debug = debugEnabled; + }); + + it('should return null for undefined input', function() { + expect( astnode.addNodeProperties() ).toBe(null); + }); + + it('should return null if the input is not an object', function() { + expect( astnode.addNodeProperties('foo') ).toBe(null); + }); + + it('should preserve existing properties that are not "node properties"', function() { + var node = astnode.addNodeProperties({foo: 1}); + + expect(typeof node).toBe('object'); + expect(node.foo).toBe(1); + }); + + it('should add a non-enumerable nodeId if necessary', function() { + var node = astnode.addNodeProperties({}); + var descriptor = Object.getOwnPropertyDescriptor(node, 'nodeId'); + + expect(descriptor).toBeDefined(); + expect(typeof descriptor.value).toBe('string'); + expect(descriptor.enumerable).toBe(false); + }); + + it('should not overwrite an existing nodeId', function() { + var nodeId = 'foo'; + var node = astnode.addNodeProperties({nodeId: nodeId}); + + expect(node.nodeId).toBe(nodeId); + }); + + it('should add an enumerable nodeId in debug mode', function() { + var descriptor; + var node; + + global.env.opts.debug = true; + node = astnode.addNodeProperties({}); + descriptor = Object.getOwnPropertyDescriptor(node, 'nodeId'); + + expect(descriptor.enumerable).toBe(true); + }); + + it('should add a non-enumerable, writable parent if necessary', function() { + var node = astnode.addNodeProperties({}); + var descriptor = Object.getOwnPropertyDescriptor(node, 'parent'); + + expect(descriptor).toBeDefined(); + expect(descriptor.value).toBe(undefined); + expect(descriptor.enumerable).toBe(false); + expect(descriptor.writable).toBe(true); + }); + + it('should not overwrite an existing parent', function() { + var parent = {}; + var node = astnode.addNodeProperties({parent: parent}); + + expect(node.parent).toBe(parent); + }); + + it('should not overwrite a null parent', function() { + var node = astnode.addNodeProperties({parent: null}); + + expect(node.parent).toBe(null); + }); + + it('should add an enumerable parentId in debug mode', function() { + var descriptor; + var node; + + global.env.opts.debug = true; + node = astnode.addNodeProperties({}); + descriptor = Object.getOwnPropertyDescriptor(node, 'parentId'); + + expect(descriptor).toBeDefined(); + expect(descriptor.enumerable).toBe(true); + }); + + it('should provide a null parentId in debug mode for nodes with no parent', function() { + var descriptor; + var node; + + global.env.opts.debug = true; + node = astnode.addNodeProperties({}); + + expect(node.parentId).toBe(null); + }); + + it('should provide a non-null parentId in debug mode for nodes with a parent', function() { + var descriptor; + var node; + var parent; + + global.env.opts.debug = true; + node = astnode.addNodeProperties({}); + parent = astnode.addNodeProperties({}); + node.parent = parent; + + expect(node.parentId).toBe(parent.nodeId); + }); + + it('should add a non-enumerable, writable enclosingScope if necessary', function() { + var node = astnode.addNodeProperties({}); + var descriptor = Object.getOwnPropertyDescriptor(node, 'enclosingScope'); + + expect(descriptor).toBeDefined(); + expect(descriptor.value).toBe(undefined); + expect(descriptor.enumerable).toBe(false); + expect(descriptor.writable).toBe(true); + }); + + it('should not overwrite an existing enclosingScope', function() { + var enclosingScope = {}; + var node = astnode.addNodeProperties({enclosingScope: enclosingScope}); + + expect(node.enclosingScope).toBe(enclosingScope); + }); + + it('should not overwrite a null enclosingScope', function() { + var node = astnode.addNodeProperties({enclosingScope: null}); + + expect(node.enclosingScope).toBe(null); + }); + + it('should add an enumerable enclosingScopeId in debug mode', function() { + var descriptor; + var node; + + global.env.opts.debug = true; + node = astnode.addNodeProperties({}); + descriptor = Object.getOwnPropertyDescriptor(node, 'enclosingScopeId'); + + expect(descriptor).toBeDefined(); + expect(descriptor.enumerable).toBe(true); + }); + + it('should provide a null enclosingScopeId in debug mode for nodes with no enclosing scope', + function() { + var descriptor; + var node; + + global.env.opts.debug = true; + node = astnode.addNodeProperties({}); + + expect(node.enclosingScopeId).toBe(null); + }); + + it('should provide a non-null enclosingScopeId in debug mode for nodes with an enclosing ' + + 'scope', function() { + var descriptor; + var enclosingScope; + var node; + + global.env.opts.debug = true; + node = astnode.addNodeProperties({}); + enclosingScope = astnode.addNodeProperties({}); + node.enclosingScope = enclosingScope; + + expect(node.enclosingScopeId).toBe(enclosingScope.nodeId); + }); + + }); + + describe('getInfo', function() { + it('should throw an error for undefined input', function() { + function noNode() { + astnode.getInfo(); + } + + expect(noNode).toThrow(); + }); + + it('should return the correct info for an AssignmentExpression', function() { + var info = astnode.getInfo(assignmentExpression); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.Literal); + expect(info.node.value).toBe(1); + + expect(info.name).toBe('foo'); + expect(info.type).toBe(Syntax.Literal); + expect(info.value).toBe('1'); + }); + + it('should return the correct info for a FunctionDeclaration', function() { + var info = astnode.getInfo(functionDeclaration2); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.FunctionDeclaration); + + expect(info.name).toBe('foo'); + expect(info.type).toBe(Syntax.FunctionDeclaration); + expect(info.value).not.toBeDefined(); + expect( Array.isArray(info.paramnames) ).toBe(true); + expect(info.paramnames.length).toBe(1); + expect(info.paramnames[0]).toBe('bar'); + }); + + it('should return the correct info for a FunctionExpression', function() { + var info = astnode.getInfo(functionExpression2); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.FunctionExpression); + + expect(info.name).toBe(''); + expect(info.type).toBe(Syntax.FunctionExpression); + expect(info.value).not.toBeDefined(); + expect( Array.isArray(info.paramnames) ).toBe(true); + expect(info.paramnames.length).toBe(1); + expect(info.paramnames[0]).toBe('bar'); + }); + + it('should return the correct info for a MemberExpression', function() { + var info = astnode.getInfo(memberExpression); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.MemberExpression); + + expect(info.name).toBe('foo.bar'); + expect(info.type).toBe(Syntax.MemberExpression); + }); + + it('should return the correct info for a computed MemberExpression', function() { + var info = astnode.getInfo(memberExpressionComputed1); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.MemberExpression); + + expect(info.name).toBe('foo["bar"]'); + expect(info.type).toBe(Syntax.MemberExpression); + }); + + it('should return the correct info for a Property initializer', function() { + var info = astnode.getInfo(propertyInit); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.ObjectExpression); + + expect(info.name).toBe('bar'); + expect(info.type).toBe(Syntax.ObjectExpression); + }); + + it('should return the correct info for a Property setter', function() { + var info = astnode.getInfo(propertySet); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.FunctionExpression); + + expect(info.name).toBe('bar'); + expect(info.type).toBe('function'); + expect(info.value).toBe('function'); + expect( Array.isArray(info.paramnames) ).toBe(true); + expect(info.paramnames.length).toBe(1); + expect(info.paramnames[0]).toBe('a'); + }); + + it('should return the correct info for a VariableDeclarator with a value', function() { + var info = astnode.getInfo(variableDeclarator1); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.Literal); + + expect(info.name).toBe('foo'); + expect(info.type).toBe(Syntax.Literal); + expect(info.value).toBe('1'); + }); + + it('should return the correct info for a VariableDeclarator with no value', function() { + var info = astnode.getInfo(variableDeclarator2); + + expect(info).toBeDefined(); + + expect(info.node).toBeDefined(); + expect(info.node.type).toBe(Syntax.Identifier); + + expect(info.name).toBe('foo'); + expect(info.type).not.toBeDefined(); + expect(info.value).not.toBeDefined(); + }); + + it('should return the correct info for other node types', function() { + var info = astnode.getInfo(binaryExpression); + + expect(info).toBeDefined(); + + expect(info.node).toBe(binaryExpression); + expect(info.type).toBe(Syntax.BinaryExpression); + }); + }); + + describe('getParamNames', function() { + it('should return an empty array for undefined input', function() { + var params = astnode.getParamNames(); + + expect( Array.isArray(params) ).toBe(true); + expect(params.length).toBe(0); + }); + + it('should return an empty array if the input has no params property', function() { + var params = astnode.getParamNames({}); + + expect( Array.isArray(params) ).toBe(true); + expect(params.length).toBe(0); + }); + + it('should return an empty array if the input has no params', function() { + var params = astnode.getParamNames(functionDeclaration1); + + expect( Array.isArray(params) ).toBe(true); + expect(params.length).toBe(0); + }); + + it('should return a single-item array if the input has a single param', function() { + var params = astnode.getParamNames(functionDeclaration2); + + expect( Array.isArray(params) ).toBe(true); + expect(params.length).toBe(1); + expect(params[0]).toBe('bar'); + }); + + it('should return a multi-item array if the input has multiple params', function() { + var params = astnode.getParamNames(functionDeclaration3); + + expect( Array.isArray(params) ).toBe(true); + expect(params.length).toBe(3); + expect(params[0]).toBe('bar'); + expect(params[1]).toBe('baz'); + expect(params[2]).toBe('qux'); + }); + }); + + describe('isAccessor', function() { + it('should return false for undefined values', function() { + expect( astnode.isAccessor() ).toBe(false); + }); + + it('should return false if the parameter is not an object', function() { + expect( astnode.isAccessor('foo') ).toBe(false); + }); + + it('should return false for non-Property nodes', function() { + expect( astnode.isAccessor(binaryExpression) ).toBe(false); + }); + + it('should return false for Property nodes whose kind is "init"', function() { + expect( astnode.isAccessor(propertyInit) ).toBe(false); + }); + + it('should return true for Property nodes whose kind is "get"', function() { + expect( astnode.isAccessor(propertyGet) ).toBe(true); + }); + + it('should return true for Property nodes whose kind is "set"', function() { + expect( astnode.isAccessor(propertySet) ).toBe(true); + }); + }); + + describe('isAssignment', function() { + it('should return false for undefined values', function() { + expect( astnode.isAssignment() ).toBe(false); + }); + + it('should return false if the parameter is not an object', function() { + expect( astnode.isAssignment('foo') ).toBe(false); + }); + + it('should return false for nodes that are not assignments', function() { + expect( astnode.isAssignment(binaryExpression) ).toBe(false); + }); + + it('should return true for AssignmentExpression nodes', function() { + expect( astnode.isAssignment(assignmentExpression) ).toBe(true); + }); + + it('should return true for VariableDeclarator nodes', function() { + expect( astnode.isAssignment(variableDeclarator1) ).toBe(true); + }); + }); + + describe('isScope', function() { + it('should return false for undefined values', function() { + expect( astnode.isScope() ).toBe(false); + }); + + it('should return false if the parameter is not an object', function() { + expect( astnode.isScope('foo') ).toBe(false); + }); + + it('should return true for CatchClause nodes', function() { + expect( astnode.isScope({type: Syntax.CatchClause}) ).toBe(true); + }); + + it('should return true for FunctionDeclaration nodes', function() { + expect( astnode.isScope({type: Syntax.FunctionDeclaration}) ).toBe(true); + }); + + it('should return true for FunctionExpression nodes', function() { + expect( astnode.isScope({type: Syntax.FunctionExpression}) ).toBe(true); + }); + + it('should return false for other nodes', function() { + expect( astnode.isScope({type: Syntax.NameExpression}) ).toBe(false); + }); + }); + + describe('nodeToString', function() { + it('should return `[null]` for the sparse array `[,]`', function() { + expect( astnode.nodeToString(arrayExpression) ).toBe('[null]'); + }); + + it('should return the variable name for assignment expressions', function() { + expect( astnode.nodeToString(assignmentExpression) ).toBe('foo'); + }); + + it('should return "function" for function declarations', function() { + expect( astnode.nodeToString(functionDeclaration1) ).toBe('function'); + }); + + it('should return "function" for function expressions', function() { + expect( astnode.nodeToString(functionExpression1) ).toBe('function'); + }); + + it('should return the identifier name for identifiers', function() { + expect( astnode.nodeToString(identifier) ).toBe('foo'); + }); + + it('should return the literal value (as a string) for literals', function() { + expect( astnode.nodeToString(literal) ).toBe('1'); + }); + + it('should return the object and property for noncomputed member expressions', function() { + expect( astnode.nodeToString(memberExpression) ).toBe('foo.bar'); + }); + + it('should return the object and property, with a computed property that uses the same ' + + 'quote character as the original source, for computed member expressions', function() { + expect( astnode.nodeToString(memberExpressionComputed1) ).toBe('foo["bar"]'); + expect( astnode.nodeToString(memberExpressionComputed2) ).toBe('foo[\'bar\']'); + }); + + it('should return "this" for this expressions', function() { + expect( astnode.nodeToString(thisExpression) ).toBe('this'); + }); + + it('should return the operator and nodeToString value for prefix unary expressions', + function() { + expect( astnode.nodeToString(unaryExpression1) ).toBe('+1'); + expect( astnode.nodeToString(unaryExpression2) ).toBe('+foo'); + }); + + it('should throw an error for postfix unary expressions', function() { + function postfixNodeToString() { + // there's no valid source representation for this one, so we fake it + var unaryExpressionPostfix = (function() { + var node = esprima.parse('+1;').body[0].expression; + node.prefix = false; + return node; + })(); + return astnode.nodeToString(unaryExpressionPostfix); + } + + expect(postfixNodeToString).toThrow(); + }); + + it('should return the variable name for variable declarators', function() { + expect( astnode.nodeToString(variableDeclarator1) ).toBe('foo'); + }); + + it('should return an empty string for all other nodes', function() { + expect( astnode.nodeToString(binaryExpression) ).toBe(''); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/src/filter.js b/third_party/jsdoc/test/specs/jsdoc/src/filter.js new file mode 100644 index 0000000000..a6104ab94d --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/filter.js @@ -0,0 +1,167 @@ +/*global beforeEach, describe, expect, it, jasmine */ +describe('jsdoc/src/filter', function() { + var filter = require('jsdoc/src/filter'); + var path = require('jsdoc/path'); + + it('should exist', function() { + expect(filter).toBeDefined(); + expect(typeof filter).toBe('object'); + }); + + it('should export a "Filter" class', function() { + expect(filter.Filter).toBeDefined(); + expect(typeof filter.Filter).toBe('function'); + }); + + describe('Filter', function() { + var myFilter; + + var defaultIncludePattern = new RegExp('.+\\.js(doc)?$'); + var defaultExcludePattern = new RegExp('(^|\\/|\\\\)_'); + + beforeEach(function() { + myFilter = new filter.Filter({}); + }); + it('should have an "exclude" property', function() { + expect(myFilter.exclude).toBeDefined(); + }); + + it('should have an "excludePattern" property', function() { + expect(myFilter.excludePattern).toBeDefined(); + }); + + it('should have an "includePattern" property', function() { + expect(myFilter.includePattern).toBeDefined(); + }); + + it('should have an "isIncluded" method', function() { + expect(myFilter.isIncluded).toBeDefined(); + expect(typeof myFilter.isIncluded).toBe('function'); + }); + + describe('exclude', function() { + it('should default to null', function() { + expect(myFilter.exclude).toBe(null); + }); + + it('should be null if the value passed to the constructor was not an array', + function() { + myFilter = new filter.Filter({ + exclude: 'foo' + }); + + expect(myFilter.exclude).toBe(null); + }); + + it('should resolve paths relative to the user\'s working directory', function() { + var filename = 'bar.js'; + myFilter = new filter.Filter({ + exclude: [filename] + }); + + expect(myFilter.exclude).toEqual([path.resolve(global.env.pwd, filename)]); + }); + }); + + function testRegExpProperty(name) { + it('should default to null', function() { + expect(myFilter[name]).toBe(null); + }); + + it('should contain the regexp passed to the constructor', function() { + var regExp = new RegExp('^foo$'); + var options = {}; + options[name] = regExp; + myFilter = new filter.Filter(options); + + expect(myFilter[name]).toBe(regExp); + }); + + it('should contain a regexp if a string was passed to the constructor', function() { + var regExpString = '^foo$'; + var options = {}; + options[name] = regExpString; + myFilter = new filter.Filter(options); + + expect(myFilter[name] instanceof RegExp).toBe(true); + expect(myFilter[name].source).toBe(regExpString); + }); + } + + describe( 'excludePattern', testRegExpProperty.bind(jasmine, 'excludePattern') ); + + describe( 'includePattern', testRegExpProperty.bind(jasmine, 'includePattern') ); + + describe('isIncluded', function() { + it('should return the correct source files', function() { + var files = [ + 'yes.js', + '/yes.jsdoc', + '/_nope.js', + '.ignore', + path.normalize(global.env.pwd + '/scratch/conf.js') + ]; + myFilter = new filter.Filter({ + includePattern: defaultIncludePattern, + excludePattern: defaultExcludePattern, + exclude: ['.ignore', 'scratch/conf.js'] + }); + + files = files.filter(function($) { + return myFilter.isIncluded($); + }); + + expect(files.length).toEqual(2); + expect( files.indexOf('yes.js') ).toBeGreaterThan(-1); + expect( files.indexOf('/yes.jsdoc') ).toBeGreaterThan(-1); + }); + + it('should be able to exclude specific subdirectories', function() { + var files = [ + 'yes.js', + 'topsecret/nope.js', + 'module/yes.js', + 'module/topsecret/nope.js' + ]; + myFilter = new filter.Filter({ + includePattern: defaultIncludePattern, + excludePattern: defaultExcludePattern, + exclude: ['topsecret', 'module/topsecret'] + }); + + files = files.filter(function($) { + return myFilter.isIncluded($); + }); + + expect(files.length).toBe(2); + expect( files.indexOf('yes.js') ).toBeGreaterThan(-1); + expect( files.indexOf('module/yes.js') ).toBeGreaterThan(-1); + }); + + it('should be able to exclude descendants of excluded subdirectories', function() { + var files = [ + 'yes.js', + 'topsecret/nested/nope.js', + 'module/yes.js', + 'module/topsecret/nested/nope.js' + ]; + myFilter = new filter.Filter({ + includePattern: defaultIncludePattern, + excludePattern: defaultExcludePattern, + exclude: ['topsecret', 'module/topsecret'] + }); + + files = files.filter(function($) { + return myFilter.isIncluded($); + }); + + expect(files.length).toBe(2); + expect( files.indexOf('yes.js') ).toBeGreaterThan(-1); + expect( files.indexOf('module/yes.js') ).toBeGreaterThan(-1); + expect( files.indexOf('topsecret/nested/nope.js') ).toBe(-1); + expect( files.indexOf('module/topsecret/nested/nope.js') ).toBe(-1); + }); + }); + }); + +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/src/handlers.js b/third_party/jsdoc/test/specs/jsdoc/src/handlers.js new file mode 100644 index 0000000000..d1d42d6236 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/handlers.js @@ -0,0 +1,55 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("jsdoc/src/handlers", function() { + var handlers = require('jsdoc/src/handlers'); + var runtime = require('jsdoc/util/runtime'); + + var testParser = jasmine.createParser(); + handlers.attachTo(testParser); + + it("should exist", function() { + expect(handlers).toBeDefined(); + expect(typeof handlers).toEqual("object"); + }); + + it("should export an 'attachTo' function", function() { + expect(handlers.attachTo).toBeDefined(); + expect(typeof handlers.attachTo).toEqual("function"); + }); + + describe("attachTo", function() { + it("should attach a 'jsdocCommentFound' handler to the parser", function() { + var callbacks = testParser.listeners("jsdocCommentFound"); + expect(callbacks).toBeDefined(); + expect(callbacks.length).toEqual(1); + expect(typeof callbacks[0]).toEqual("function"); + }); + + it("should attach a 'symbolFound' handler to the parser", function() { + var callbacks = testParser.listeners("symbolFound"); + expect(callbacks).toBeDefined(); + expect(callbacks.length).toEqual(1); + expect(typeof callbacks[0]).toEqual("function"); + }); + + it("should attach a 'fileComplete' handler to the parser", function() { + var callbacks = testParser.listeners("fileComplete"); + expect(callbacks).toBeDefined(); + expect(callbacks.length).toEqual(1); + expect(typeof callbacks[0]).toEqual("function"); + }); + }); + + describe("jsdocCommentFound handler", function() { + var sourceCode = 'javascript:/** @name bar */', + result = testParser.parse(sourceCode); + + it("should create a doclet for comments with '@name' tags", function() { + expect(result.length).toEqual(1); + expect(result[0].name).toEqual('bar'); + }); + }); + + describe("symbolFound handler", function() { + //TODO + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/src/parser.js b/third_party/jsdoc/test/specs/jsdoc/src/parser.js new file mode 100644 index 0000000000..405d4464e2 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/parser.js @@ -0,0 +1,388 @@ +/*global beforeEach, describe, expect, it, jasmine, spyOn */ +/*eslint no-script-url: 0 */ +'use strict'; + +describe('jsdoc/src/parser', function() { + var fs = require('jsdoc/fs'); + var jsdoc = { + src: { + handlers: require('jsdoc/src/handlers'), + parser: require('jsdoc/src/parser') + } + }; + var path = require('jsdoc/path'); + + it('should exist', function() { + expect(jsdoc.src.parser).toBeDefined(); + expect(typeof jsdoc.src.parser).toBe('object'); + }); + + it('should export a "Parser" constructor', function() { + expect(jsdoc.src.parser.Parser).toBeDefined(); + expect(typeof jsdoc.src.parser.Parser).toBe('function'); + }); + + describe('Parser', function() { + var parser; + + function newParser() { + parser = new jsdoc.src.parser.Parser(); + } + + newParser(); + + it('should have an "astBuilder" property', function() { + expect(parser.astBuilder).toBeDefined(); + }); + + it('should have a "visitor" property', function() { + expect(parser.visitor).toBeDefined(); + }); + + it('should have a "walker" property', function() { + expect(parser.walker).toBeDefined(); + }); + + it('should accept an astBuilder, visitor, and walker as arguments', function() { + var astBuilder = {}; + var visitor = {}; + var walker = {}; + + var myParser = new jsdoc.src.parser.Parser(astBuilder, visitor, walker); + + expect(myParser.astBuilder).toBe(astBuilder); + expect(myParser.visitor).toBe(visitor); + expect(myParser.walker).toBe(walker); + }); + + it('should have a "parse" method', function() { + expect(parser.parse).toBeDefined(); + expect(typeof parser.parse).toBe('function'); + }); + + it('should have a "results" method', function() { + expect(parser.results).toBeDefined(); + expect(typeof parser.results).toBe('function'); + }); + + it('should have an "addAstNodeVisitor" method', function() { + expect(parser.addAstNodeVisitor).toBeDefined(); + expect(typeof parser.addAstNodeVisitor).toBe('function'); + }); + + it('should have a "getAstNodeVisitors" method', function() { + expect(parser.getAstNodeVisitors).toBeDefined(); + expect(typeof parser.getAstNodeVisitors).toBe('function'); + }); + + describe('astBuilder', function() { + it('should contain an appropriate astBuilder by default', function() { + expect(parser.astBuilder instanceof (require('jsdoc/src/astbuilder')).AstBuilder).toBe(true); + }); + }); + + describe('visitor', function() { + it('should contain an appropriate visitor by default', function() { + expect(parser.visitor instanceof (require('jsdoc/src/visitor')).Visitor).toBe(true); + }); + }); + + describe('walker', function() { + it('should contain an appropriate walker by default', function() { + expect(parser.walker instanceof (require('jsdoc/src/walker')).Walker).toBe(true); + }); + }); + + describe('parse', function() { + beforeEach(newParser); + + it('should fire "parseBegin" events before it parses any files', function() { + var spy = jasmine.createSpy(); + var sourceFiles = ['javascript:/** @name foo */']; + + parser.on('parseBegin', spy).parse(sourceFiles); + expect(spy).toHaveBeenCalled(); + expect(spy.mostRecentCall.args[0].sourcefiles).toBe(sourceFiles); + }); + + it("should allow 'parseBegin' handlers to modify the list of source files", function() { + var sourceCode = 'javascript:/** @name foo */'; + var newFiles = ['[[replaced]]']; + var evt; + + function handler(e) { + e.sourcefiles = newFiles; + evt = e; + } + + parser.on('parseBegin', handler).parse(sourceCode); + expect(evt.sourcefiles).toBe(newFiles); + }); + + it('should fire "jsdocCommentFound" events when a source file contains JSDoc comments', function() { + var spy = jasmine.createSpy(); + var sourceCode = ['javascript:/** @name bar */']; + + parser.on('jsdocCommentFound', spy).parse(sourceCode); + + expect(spy).toHaveBeenCalled(); + expect(spy.mostRecentCall.args[0].comment).toBe('/** @name bar */'); + }); + + it('should fire "symbolFound" events when a source file contains named symbols', function() { + var spy = jasmine.createSpy(); + var sourceCode = 'javascript:var foo = 1'; + + parser.on('symbolFound', spy).parse(sourceCode); + + expect(spy).toHaveBeenCalled(); + }); + + it('should fire "newDoclet" events after creating a new doclet', function() { + var spy = jasmine.createSpy(); + var sourceCode = 'javascript:var foo = 1'; + + parser.on('symbolFound', spy).parse(sourceCode); + + expect(spy).toHaveBeenCalled(); + }); + + it('should allow "newDoclet" handlers to modify doclets', function() { + var results; + + var sourceCode = 'javascript:/** @class */function Foo() {}'; + + function handler(e) { + var doop = require('jsdoc/util/doop'); + e.doclet = doop(e.doclet); + e.doclet.foo = 'bar'; + } + + jsdoc.src.handlers.attachTo(parser); + parser.on('newDoclet', handler).parse(sourceCode); + results = parser.results(); + + expect(results[0].foo).toBe('bar'); + }); + + it('should call AST node visitors', function() { + var Syntax = require('jsdoc/src/syntax').Syntax; + + var args; + + var sourceCode = ['javascript:/** foo */var foo;']; + var visitor = { + visitNode: function(node, e, parser, sourceName) { + if (e && e.code && !args) { + args = Array.prototype.slice.call(arguments); + } + } + }; + + jsdoc.src.handlers.attachTo(parser); + parser.addAstNodeVisitor(visitor); + parser.parse(sourceCode); + + expect(args).toBeDefined(); + expect( Array.isArray(args) ).toBe(true); + expect(args.length).toBe(4); + + // args[0]: AST node + expect(args[0].type).toBeDefined(); + expect(args[0].type).toBe(Syntax.VariableDeclarator); + + // args[1]: JSDoc event + expect(typeof args[1]).toBe('object'); + expect(args[1].code).toBeDefined(); + expect(args[1].code.name).toBeDefined(); + expect(args[1].code.name).toBe('foo'); + + // args[2]: parser + expect(typeof args[2]).toBe('object'); + expect(args[2] instanceof jsdoc.src.parser.Parser).toBe(true); + + // args[3]: current source name + expect( String(args[3]) ).toBe('[[string0]]'); + }); + + it('should reflect changes made by AST node visitors', function() { + var doclet; + + var sourceCode = ['javascript:/** foo */var foo;']; + var visitor = { + visitNode: function(node, e, parser, sourceName) { + if (e && e.code && e.code.name === 'foo') { + e.code.name = 'bar'; + } + } + }; + + jsdoc.src.handlers.attachTo(parser); + parser.addAstNodeVisitor(visitor); + parser.parse(sourceCode); + + doclet = parser.results()[0]; + + expect(doclet).toBeDefined(); + expect(typeof doclet).toBe('object'); + expect(doclet.name).toBeDefined(); + expect(doclet.name).toBe('bar'); + }); + + it('should fire "parseComplete" events after it finishes parsing files', function() { + var eventObject; + + var spy = jasmine.createSpy(); + var sourceCode = ['javascript:/** @class */function Foo() {}']; + + jsdoc.src.handlers.attachTo(parser); + parser.on('parseComplete', spy).parse(sourceCode); + + expect(spy).toHaveBeenCalled(); + + eventObject = spy.mostRecentCall.args[0]; + expect(eventObject).toBeDefined(); + expect( Array.isArray(eventObject.sourcefiles) ).toBe(true); + expect(eventObject.sourcefiles.length).toBe(1); + expect(eventObject.sourcefiles[0]).toBe('[[string0]]'); + expect( Array.isArray(eventObject.doclets) ).toBe(true); + expect(eventObject.doclets.length).toBe(1); + expect(eventObject.doclets[0].kind).toBe('class'); + expect(eventObject.doclets[0].longname).toBe('Foo'); + }); + + it('should fire a "processingComplete" event when fireProcessingComplete is called', function() { + var spy = jasmine.createSpy(); + var doclets = ['a','b']; + + parser.on('processingComplete', spy).fireProcessingComplete(doclets); + + expect(spy).toHaveBeenCalled(); + expect(typeof spy.mostRecentCall.args[0]).toBe('object'); + expect(spy.mostRecentCall.args[0].doclets).toBeDefined(); + expect(spy.mostRecentCall.args[0].doclets).toBe(doclets); + }); + + // Rhino can't parse ES6 + if (jasmine.jsParser !== 'rhino') { + it('should not throw errors when parsing files with ES6 syntax', function() { + function parse() { + var parserSrc = 'javascript:' + fs.readFileSync( + path.join(global.env.dirname, 'test/fixtures/es6.js'), 'utf8'); + parser.parse(parserSrc); + } + + expect(parse).not.toThrow(); + }); + } + + it('should be able to parse its own source file', function() { + var parserSrc = 'javascript:' + fs.readFileSync(path.join(global.env.dirname, + 'lib/jsdoc/src/parser.js'), 'utf8'); + + function parse() { + parser.parse(parserSrc); + } + + expect(parse).not.toThrow(); + }); + + it('should comment out a POSIX hashbang at the start of the file', function() { + var parserSrc = 'javascript:#!/usr/bin/env node\n/** class */function Foo() {}'; + + function parse() { + parser.parse(parserSrc); + } + + expect(parse).not.toThrow(); + }); + }); + + describe('results', function() { + beforeEach(newParser); + + it('returns an empty array before files are parsed', function() { + var results = parser.results(); + + expect(results).toBeDefined(); + expect( Array.isArray(results) ).toBe(true); + expect(results.length).toBe(0); + }); + + it('returns an array of doclets after files are parsed', function() { + var source = 'javascript:var foo;'; + var results; + + jsdoc.src.handlers.attachTo(parser); + + parser.parse(source); + results = parser.results(); + + expect(results).toBeDefined(); + expect(results[0]).toBeDefined(); + expect(typeof results[0]).toBe('object'); + expect(results[0].name).toBeDefined(); + expect(results[0].name).toBe('foo'); + }); + + it('should reflect comment changes made by "jsdocCommentFound" handlers', function() { + // we test both POSIX and Windows line endings + var source = 'javascript:/**\n * replaceme\r\n * @module foo\n */\n\n' + + '/**\n * replaceme\n */\nvar bar;'; + + parser.on('jsdocCommentFound', function(e) { + e.comment = e.comment.replace('replaceme', 'REPLACED!'); + }); + jsdoc.src.handlers.attachTo(parser); + + parser.parse(source); + parser.results().forEach(function(doclet) { + expect(doclet.comment).not.toMatch('replaceme'); + expect(doclet.comment).toMatch('REPLACED!'); + }); + }); + }); + + describe('addAstNodeVisitor', function() { + function visitorA() {} + function visitorB() {} + + var visitors; + + beforeEach(newParser); + + it('should work with a single node visitor', function() { + parser.addAstNodeVisitor(visitorA); + + visitors = parser.getAstNodeVisitors(); + + expect(visitors.length).toBe(1); + expect(visitors[0]).toBe(visitorA); + }); + + it('should work with multiple node visitors', function() { + parser.addAstNodeVisitor(visitorA); + parser.addAstNodeVisitor(visitorB); + + visitors = parser.getAstNodeVisitors(); + + expect(visitors.length).toBe(2); + expect(visitors[0]).toBe(visitorA); + expect(visitors[1]).toBe(visitorB); + }); + }); + + describe('getAstNodeVisitors', function() { + beforeEach(newParser); + + it('should return an empty array by default', function() { + var visitors = parser.getAstNodeVisitors(); + + expect( Array.isArray(visitors) ).toBe(true); + expect(visitors.length).toBe(0); + }); + + // other functionality is covered by the addNodeVisitors tests + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/src/scanner.js b/third_party/jsdoc/test/specs/jsdoc/src/scanner.js new file mode 100644 index 0000000000..ed184c9095 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/scanner.js @@ -0,0 +1,56 @@ +/*global describe, env, expect, it */ +describe('jsdoc/src/scanner', function() { + var path = require('jsdoc/path'); + var scanner = require('jsdoc/src/scanner'); + + var filter = new (require('jsdoc/src/filter').Filter)({ + includePattern: new RegExp('.+\\.js(doc)?$'), + excludePattern: new RegExp('(^|\\/|\\\\)_') + }); + var sourcePath = path.normalize(env.pwd + '/test/fixtures/src'); + + it('should exist', function() { + expect(scanner).toBeDefined(); + expect(typeof scanner).toBe('object'); + }); + + it('should export a "Scanner" class', function() { + expect(scanner.Scanner).toBeDefined(); + expect(typeof scanner.Scanner).toBe('function'); + }); + + describe('Scanner', function() { + it('should inherit from EventEmitter', function() { + var EventEmitter = require('events').EventEmitter; + var testScanner = new scanner.Scanner(); + + expect(testScanner instanceof EventEmitter).toBe(true); + }); + + it('should have a "scan" method', function() { + var testScanner = new scanner.Scanner(); + + expect(testScanner.scan).toBeDefined(); + expect(typeof testScanner.scan).toBe('function'); + }); + + describe('scan', function() { + it('should return the correct source files', function() { + var testScanner = new scanner.Scanner(); + var sourceFiles = testScanner.scan([sourcePath], 3, filter); + + sourceFiles = sourceFiles.map(function($) { + return path.relative(env.pwd, $); + }); + + expect(sourceFiles.length).toEqual(3); + expect( sourceFiles.indexOf(path.join('test', 'fixtures', 'src', 'one.js')) ) + .toBeGreaterThan(-1); + expect( sourceFiles.indexOf(path.join('test', 'fixtures', 'src', 'two.js')) ) + .toBeGreaterThan(-1); + expect( sourceFiles.indexOf(path.join('test', 'fixtures', 'src', 'dir1', 'three.js')) ) + .toBeGreaterThan(-1); + }); + }); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/jsdoc/src/syntax.js b/third_party/jsdoc/test/specs/jsdoc/src/syntax.js new file mode 100644 index 0000000000..d14113760b --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/syntax.js @@ -0,0 +1,23 @@ +/*global describe, expect, it */ +describe('jsdoc/src/syntax', function() { + var Syntax = require('jsdoc/src/syntax').Syntax; + + it('should exist', function() { + expect(Syntax).toBeDefined(); + expect(typeof Syntax).toBe('object'); + }); + + it('should define all of the node types that are defined by Esprima', function() { + var esprimaSyntax = require('esprima').Syntax; + + Object.keys(esprimaSyntax).forEach(function(nodeType) { + expect(Syntax[nodeType]).toBeDefined(); + expect(Syntax[nodeType]).toBe(esprimaSyntax[nodeType]); + }); + }); + + it('should define the LetStatement node type', function() { + expect(Syntax.LetStatement).toBeDefined(); + expect(Syntax.LetStatement).toBe('LetStatement'); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/src/visitor.js b/third_party/jsdoc/test/specs/jsdoc/src/visitor.js new file mode 100644 index 0000000000..4c5d293803 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/visitor.js @@ -0,0 +1,4 @@ +/*global describe: true, env: true, expect: true, it: true, xdescribe: true */ +xdescribe('jsdoc/src/visitor', function() { + // TODO +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/src/walker.js b/third_party/jsdoc/test/specs/jsdoc/src/walker.js new file mode 100644 index 0000000000..be7528c216 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/src/walker.js @@ -0,0 +1,36 @@ +/*global describe, expect, it, xdescribe */ +describe('jsdoc/src/walker', function() { + var walker = require('jsdoc/src/walker'); + + it('should exist', function() { + expect(walker).toBeDefined(); + expect(typeof walker).toBe('object'); + }); + + it('should export a "walkers" object', function() { + expect(walker.walkers).toBeDefined(); + expect(typeof walker.walkers).toBe('object'); + }); + + it('should export a "Walker" class', function() { + expect(walker.Walker).toBeDefined(); + expect(typeof walker.Walker).toBe('function'); + }); + + describe('walkers', function() { + var Syntax = require('jsdoc/src/syntax').Syntax; + + // TODO: tests for default functions + + it('should contain a function for each known node type', function() { + Object.keys(Syntax).forEach(function(nodeType) { + expect(walker.walkers[nodeType]).toBeDefined(); + expect(typeof walker.walkers[nodeType]).toBe('function'); + }); + }); + }); + + xdescribe('Walker', function() { + // TODO + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/tag.js b/third_party/jsdoc/test/specs/jsdoc/tag.js new file mode 100644 index 0000000000..f3dfea2d5c --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/tag.js @@ -0,0 +1,237 @@ +'use strict'; + +var hasOwnProp = Object.prototype.hasOwnProperty; + +describe('jsdoc/tag', function() { + var jsdoc = { + tag: require('jsdoc/tag'), + dictionary: require('jsdoc/tag/dictionary'), + type: require('jsdoc/tag/type') + }; + var logger = require('jsdoc/util/logger'); + + it('should exist', function() { + expect(jsdoc.tag).toBeDefined(); + expect(typeof jsdoc.tag).toBe('object'); + }); + + it('should export a Tag function', function() { + expect(jsdoc.tag.Tag).toBeDefined(); + expect(typeof jsdoc.tag.Tag).toBe('function'); + }); + + describe('Tag', function() { + var meta = {lineno: 1, filename: 'asdf.js'}; + var desc = 'lalblakd lkjasdlib\n lija'; + var text = '{!number} [foo=1] - ' + desc; + var exampleRaw = [ + 'Asdf\n', + ' myFunction(1, 2); // returns 3\n', + ' myFunction(3, 4); // returns 7\n' + ]; + var textExample = exampleRaw.join(''); + var exampleIndentedRaw = [ + ' var firstLine;\n', + ' function secondLine() {\n', + ' // comment\n', + ' }\n' + ]; + var textExampleIndented = exampleIndentedRaw.join(''); + + var tagArg; + var tagExample; + var tagExampleIndented; + var tagParam; + var tagParamWithType; + var tagType; + + // allow each test to recreate the tags (for example, after enabling debug mode) + function createTags() { + // synonym for @param; space in the title + tagArg = new jsdoc.tag.Tag('arg ', text, meta); + // @param with no type, but with optional and defaultvalue + tagParam = new jsdoc.tag.Tag('param', '[foo=1]', meta); + // @param with type and no type modifiers (such as optional) + tagParamWithType = new jsdoc.tag.Tag('param', '{string} foo', meta); + // @example that does not need indentation to be removed + tagExample = new jsdoc.tag.Tag('example', textExample, meta); + // @example that needs indentation to be removed + tagExampleIndented = new jsdoc.tag.Tag('example', textExampleIndented, meta); + // for testing that onTagText is run when necessary + tagType = new jsdoc.tag.Tag('type', 'MyType ', meta); + } + + beforeEach(function() { + createTags(); + }); + + it("should have a 'originalTitle' property, a string", function() { + expect(tagArg.originalTitle).toBeDefined(); + expect(typeof tagArg.originalTitle).toBe('string'); + }); + + it("'originalTitle' property should be the initial tag title, trimmed of whitespace", function() { + expect(tagArg.originalTitle).toBe('arg'); + expect(tagExample.originalTitle).toBe('example'); + }); + + it("should have a 'title' property, a string", function() { + expect(tagArg.title).toBeDefined(); + expect(typeof tagArg.title).toBe('string'); + }); + + it("'title' property should be the normalised tag title", function() { + expect(tagArg.title).toBe(jsdoc.dictionary.normalise(tagArg.originalTitle)); + expect(tagExample.title).toBe(jsdoc.dictionary.normalise(tagExample.originalTitle)); + }); + + it("should have a 'text' property, a string", function() { + expect(tagArg.text).toBeDefined(); + expect(typeof tagArg.text).toBe('string'); + }); + + it("should have a 'value' property", function() { + expect(tagArg.value).toBeDefined(); + expect(tagExample.value).toBeDefined(); + expect(tagType.value).toBeDefined(); + }); + + describe("'text' property", function() { + it("'text' property should be the trimmed tag text, with all leading and trailing space removed unless tagDef.keepsWhitespace", function() { + // @example has keepsWhitespace and removesIndent, @param doesn't + expect(tagArg.text).toBe( text.replace(/^\s+|\n$/g, '') ); + expect(tagExample.text).toBe( textExample.replace(/\n$/, '') ); + expect(tagExampleIndented.text).toBe( textExampleIndented.replace(/^ {5}/gm, '') + .replace(/\n$/, '') ); + }); + + it("'text' property should have onTagText run on it if it has it.", function() { + var def = jsdoc.dictionary.lookUp('type'); + expect(def.onTagText).toBeDefined(); + expect(typeof def.onTagText).toBe('function'); + + // @type adds {} around the type if necessary. + expect(tagType.text).toBeDefined(); + expect(tagType.text).toBe(def.onTagText('MyType')); + }); + + it('should be enclosed in quotes, with no whitespace trimming, if it is a symbol name with leading or trailing whitespace', function() { + var wsBoth; + var wsLeading; + var wsOnly; + var wsTrailing; + + spyOn(logger, 'error'); + + wsOnly = new jsdoc.tag.Tag('name', ' ', { code: { name: ' ' } }); + wsLeading = new jsdoc.tag.Tag('name', ' foo', { code: { name: ' foo' } }); + wsTrailing = new jsdoc.tag.Tag('name', 'foo ', { code: { name: 'foo ' } }); + wsBoth = new jsdoc.tag.Tag('name', ' foo ', { code: { name: ' foo ' } }); + + expect(logger.error).not.toHaveBeenCalled(); + expect(wsOnly.text).toBe('" "'); + expect(wsLeading.text).toBe('" foo"'); + expect(wsTrailing.text).toBe('"foo "'); + expect(wsBoth.text).toBe('" foo "'); + }); + }); + + describe("'value' property", function() { + it("'value' property should equal tag text if tagDef.canHaveType and canHaveName are both false", function() { + // @example can't have type or name + expect(typeof tagExample.value).toBe('string'); + expect(tagExample.value).toBe(tagExample.text); + }); + + it("'value' property should be an object if tagDef can have type or name", function () { + expect(typeof tagType.value).toBe('object'); + expect(typeof tagArg.value).toBe('object'); + }); + + function verifyTagType(tag) { + var def; + var descriptor; + var info; + + def = jsdoc.dictionary.lookUp(tag.title); + expect(def).not.toBe(false); + + info = jsdoc.type.parse(tag.text, def.canHaveName, def.canHaveType); + + ['optional', 'nullable', 'variable', 'defaultvalue'].forEach(function(prop) { + if (hasOwnProp.call(info, prop)) { + expect(tag.value[prop]).toBe(info[prop]); + } + }); + + if (info.type && info.type.length) { + expect(tag.value.type).toBeDefined(); + expect(typeof tag.value.type).toBe('object'); + expect(tag.value.type.names).toBeDefined(); + expect(tag.value.type.names).toEqual(info.type); + + expect(tag.value.type.parsedType).toBeDefined(); + expect(typeof tag.value.type.parsedType).toBe('object'); + + descriptor = Object.getOwnPropertyDescriptor(tag.value.type, 'parsedType'); + expect(descriptor.enumerable).toBe(!!global.env.opts.debug); + } + } + + it('if the tag has a type, tag.value should contain the type information', function() { + // we assume jsdoc/tag/type.parse works (it has its own tests to verify this); + var debug = !!global.env.opts.debug; + + [true, false].forEach(function(bool) { + global.env.opts.debug = bool; + createTags(); + + verifyTagType(tagType); + verifyTagType(tagArg); + verifyTagType(tagParam); + }); + + global.env.opts.debug = debug; + }); + + it('if the tag has a description beyond the name/type, this should be in tag.value.description', function() { + expect(tagType.value.description).not.toBeDefined(); + + expect(tagArg.value.description).toBeDefined(); + expect(tagArg.value.description).toBe(desc); + }); + + it('if the tag can have a name, it should be stored in tag.value.name', function() { + expect(tagArg.value.name).toBeDefined(); + expect(tagArg.value.name).toBe('foo'); + + expect(tagType.value.name).not.toBeDefined(); + }); + + it('if the tag has a type without modifiers, tag.value should not include properties for the modifiers', function() { + ['optional', 'nullable', 'variable', 'defaultvalue'].forEach(function(modifier) { + expect( hasOwnProp.call(tagParamWithType.value, modifier) ).toBe(false); + }); + }); + }); + + // further tests for this sort of thing are in jsdoc/tag/validator.js tests. + describe('tag validating', function() { + beforeEach(function() { + spyOn(logger, 'error'); + }); + + it('logs an error for bad tags', function() { + var tag = new jsdoc.tag.Tag('param', '{!*!*!*!} foo'); + + expect(logger.error).toHaveBeenCalled(); + }); + + it('validates tags with no text', function() { + var tag = new jsdoc.tag.Tag('copyright'); + + expect(logger.error).toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/tag/dictionary.js b/third_party/jsdoc/test/specs/jsdoc/tag/dictionary.js new file mode 100644 index 0000000000..c815817631 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/tag/dictionary.js @@ -0,0 +1,144 @@ +/*global describe, expect, it, xdescribe */ +'use strict'; + +describe('jsdoc/tag/dictionary', function() { + var dictionary = require('jsdoc/tag/dictionary'); + var testDictionary = new dictionary.Dictionary(); + + var tagOptions = { + canHaveValue: true, + isNamespace: true + }; + var tagTitle = '!!!testTag!!!'; + var tagSynonym = '!!!testTagSynonym!!!'; + var tagDef = testDictionary.defineTag(tagTitle, tagOptions).synonym(tagSynonym); + + it('should exist', function() { + expect(dictionary).toBeDefined(); + expect(typeof dictionary).toBe('object'); + }); + + it('should be an instance of dictionary.Dictionary', function() { + expect(dictionary instanceof dictionary.Dictionary).toBe(true); + }); + + it('should export a defineSynonym method', function() { + expect(dictionary.defineSynonym).toBeDefined(); + expect(typeof dictionary.defineSynonym).toBe('function'); + }); + + it('should export a defineTag method', function() { + expect(dictionary.defineTag).toBeDefined(); + expect(typeof dictionary.defineTag).toBe('function'); + }); + + it('should export a lookUp method', function() { + expect(dictionary.lookUp).toBeDefined(); + expect(typeof dictionary.lookUp).toBe('function'); + }); + + it('should export an isNamespace method', function() { + expect(dictionary.isNamespace).toBeDefined(); + expect(typeof dictionary.isNamespace).toBe('function'); + }); + + it('should export a normalise method', function() { + expect(dictionary.normalise).toBeDefined(); + expect(typeof dictionary.normalise).toBe('function'); + }); + + it('should export a Dictionary constructor', function() { + expect(dictionary.Dictionary).toBeDefined(); + expect(typeof dictionary.Dictionary).toBe('function'); + }); + + describe('defineSynonym', function() { + it('adds a synonym for the specified tag', function() { + var synonymDict = new dictionary.Dictionary(); + + dictionary.defineTag('foo', {}); + dictionary.defineSynonym('foo', 'bar'); + + expect(dictionary.normalise('bar')).toBe('foo'); + }); + }); + + describe('defineTag', function() { + it('returns an object with the correct "title" property', function() { + expect(typeof tagDef).toBe('object'); + expect(tagDef.title).toBeDefined(); + expect(typeof tagDef.title).toBe('string'); + expect(tagDef.title).toBe(testDictionary.normalise(tagTitle)); + }); + + it('returns an object that contains all of the tag properties', function() { + Object.keys(tagOptions).forEach(function(opt) { + expect(tagDef[opt]).toBe(tagOptions[opt]); + }); + }); + + it('works correctly without an options object', function() { + var title = '!!!testTagNoOptions!!!'; + + function makeTag() { + return testDictionary.defineTag(title); + } + + expect(makeTag).not.toThrow(); + expect(makeTag().title).toBe(testDictionary.normalise(title)); + }); + }); + + describe('lookUp', function() { + it("retrieves the definition using the tag's canonical name", function() { + expect(testDictionary.lookUp(tagTitle)).toBe(tagDef); + }); + + it('retrieves the definition using a synonym for the tag', function() { + expect(testDictionary.lookUp(tagSynonym)).toBe(tagDef); + }); + + it('returns `false` when a tag is not found', function() { + expect(testDictionary.lookUp('lkjas1l24jk')).toBe(false); + }); + }); + + describe('isNamespace', function() { + it("returns whether a tag is a namespace using the tag's canonical name", function() { + expect(testDictionary.isNamespace(tagTitle)).toBe(true); + }); + + it('returns whether a tag is a namespace when using a synonym for the tag', function() { + expect(testDictionary.isNamespace(tagSynonym)).toBe(true); + }); + + it('returns `false` for nonexistent tags', function() { + expect(testDictionary.isNamespace('lkjasd90034')).toBe(false); + }); + + it('returns `false` for non-namespace tags', function() { + expect(testDictionary.isNamespace('see')).toBe(false); + }); + }); + + describe('normalise', function() { + it("should return the tag's title if it is not a synonym", function() { + expect(testDictionary.normalise('FooBar')).toBe('foobar'); + expect(testDictionary.normalise(tagTitle)).toBe(tagDef.title); + }); + + it('should return the canonical name of a tag if the synonym is normalised', function() { + expect(testDictionary.normalise(tagSynonym)).toBe(tagDef.title); + }); + }); + + describe('Dictionary', function() { + it('should be a constructor', function() { + function newDictionary() { + return new dictionary.Dictionary(); + } + + expect(newDictionary).not.toThrow(); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/tag/dictionary/definitions.js b/third_party/jsdoc/test/specs/jsdoc/tag/dictionary/definitions.js new file mode 100644 index 0000000000..fb1b57fda5 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/tag/dictionary/definitions.js @@ -0,0 +1,231 @@ +/*global afterEach, beforeEach, describe, expect, it, spyOn */ +'use strict'; + +describe('jsdoc/tag/dictionary/definitions', function() { + var definitions = require('jsdoc/tag/dictionary/definitions'); + var Dictionary = require('jsdoc/tag/dictionary').Dictionary; + var logger = require('jsdoc/util/logger'); + + it('should exist', function() { + expect(definitions).toBeDefined(); + expect(typeof definitions).toBe('object'); + }); + + it('should export a baseTags object', function() { + expect(definitions.baseTags).toBeDefined(); + expect(typeof definitions.baseTags).toBe('object'); + }); + + it('should export a closureTags object', function() { + expect(definitions.closureTags).toBeDefined(); + expect(typeof definitions.closureTags).toBe('object'); + }); + + it('should export a defineTags method', function() { + expect(definitions.defineTags).toBeDefined(); + expect(typeof definitions.defineTags).toBe('function'); + }); + + it('should export a jsdocTags object', function() { + expect(definitions.jsdocTags).toBeDefined(); + expect(typeof definitions.jsdocTags).toBe('object'); + }); + + describe('baseTags', function() { + it('should be identical to jsdocTags', function() { + expect(definitions.baseTags).toBe(definitions.jsdocTags); + }); + }); + + describe('closureTags', function() { + // this test just makes sure all the definitions are here; we have other tests for tag + // behavior + it('should contain the expected tag definitions', function() { + var expectedTagNames = [ + 'const', + 'constructor', + 'deprecated', + 'enum', + 'extends', + 'final', + 'implements', + 'interface', + 'lends', + 'license', + 'param', + 'private', + 'protected', + 'return', + 'this', + 'throws', + 'type', + 'typedef' + ].sort(); + var actualTagNames = Object.keys(definitions.closureTags).sort(); + + expect(expectedTagNames).toEqual(actualTagNames); + }); + }); + + describe('defineTags', function() { + var dictionaryConfig = global.env.conf.tags.dictionaries.slice(0); + var tagDict; + + beforeEach(function() { + global.env.conf.tags.dictionaries = []; + tagDict = new Dictionary(); + }); + + afterEach(function() { + global.env.conf.tags.dictionaries = dictionaryConfig.slice(0); + }); + + it('should log an error if `env.conf.tags.dictionaries` is undefined', function() { + global.env.conf.tags.dictionaries = undefined; + spyOn(logger, 'error'); + definitions.defineTags(tagDict); + + expect(logger.error).toHaveBeenCalled(); + }); + + it('should log an error if an unknown dictionary is requested', function() { + global.env.conf.tags.dictionaries = ['jsmarmoset']; + spyOn(logger, 'error'); + definitions.defineTags(tagDict); + + expect(logger.error).toHaveBeenCalled(); + }); + + it('should add both JSDoc and Closure tags by default', function() { + global.env.conf.tags.dictionaries = dictionaryConfig.slice(0); + definitions.defineTags(tagDict); + + // Check for one tag from the JSDoc tagdefs and another tag from the Closure tagdefs. + // Not thorough, but probably good enough. + expect(tagDict.lookUp('abstract')).not.toBe(false); + expect(tagDict.lookUp('final')).not.toBe(false); + }); + + it('should add only the JSDoc tags if requested', function() { + global.env.conf.tags.dictionaries = ['jsdoc']; + definitions.defineTags(tagDict); + + // Check for one tag from the JSDoc tagdefs and another tag from another set of tagdefs. + // Not thorough, but probably good enough. + expect(tagDict.lookUp('abstract')).not.toBe(false); + expect(tagDict.lookUp('final')).toBe(false); + }); + + it('should add only the Closure tags if requested', function() { + global.env.conf.tags.dictionaries = ['closure']; + definitions.defineTags(tagDict); + + // Check for one tag from the Closure tagdefs and another tag from another set of + // tagdefs. Not thorough, but probably good enough. + expect(tagDict.lookUp('final')).not.toBe(false); + expect(tagDict.lookUp('abstract')).toBe(false); + }); + + it('should prefer tagdefs from the first dictionary on the list', function() { + global.env.conf.tags.dictionaries = ['closure', 'jsdoc']; + definitions.defineTags(tagDict); + + expect(tagDict.lookUp('deprecated').synonyms).not.toBeDefined(); + }); + + it('should add tag synonyms', function() { + global.env.conf.tags.dictionaries = ['jsdoc']; + definitions.defineTags(tagDict); + + expect(tagDict.lookUp('extends')).not.toBe(false); + expect(tagDict.normalise('extends')).toBe('augments'); + }); + + it('should ignore the config settings if tagdefs are passed in', function() { + var tagDefs = { + foo: { + mustHaveValue: false + } + }; + + global.env.conf.tags.dictionaries = ['jsdoc']; + definitions.defineTags(tagDict, tagDefs); + + expect(tagDict.lookUp('foo')).not.toBe(false); + expect(tagDict.lookUp('abstract')).toBe(false); + }); + }); + + describe('jsdocTags', function() { + // this test just makes sure all the definitions are here; we have other tests for tag + // behavior + it('should contain the expected tag definitions', function() { + var expectedTagNames = [ + 'abstract', + 'access', + 'alias', + 'also', + 'augments', + 'author', + 'borrows', + 'class', + 'classdesc', + 'constant', + 'constructs', + 'copyright', + 'default', + 'deprecated', + 'description', + 'enum', + 'event', + 'example', + 'exports', + 'external', + 'file', + 'fires', + 'function', + 'global', + 'ignore', + 'inner', + 'instance', + 'implements', + 'interface', + 'kind', + 'lends', + 'license', + 'listens', + 'member', + 'memberof', + 'mixes', + 'mixin', + 'module', + 'name', + 'namespace', + 'param', + 'private', + 'property', + 'protected', + 'public', + 'readonly', + 'requires', + 'returns', + 'see', + 'since', + 'static', + 'summary', + 'this', + 'throws', + 'todo', + 'tutorial', + 'type', + 'typedef', + 'undocumented', + 'variation', + 'version' + ].sort(); + var actualTagNames = Object.keys(definitions.jsdocTags).sort(); + + expect(expectedTagNames).toEqual(actualTagNames); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/tag/inline.js b/third_party/jsdoc/test/specs/jsdoc/tag/inline.js new file mode 100644 index 0000000000..3670ae545a --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/tag/inline.js @@ -0,0 +1,254 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +'use strict'; + +describe('jsdoc/tag/inline', function() { + var jsdoc = { + tag: { + inline: require('jsdoc/tag/inline') + } + }; + + it('should exist', function() { + expect(jsdoc.tag.inline).toBeDefined(); + expect(typeof jsdoc.tag.inline).toBe('object'); + }); + + it('should export an isInlineTag function', function() { + expect(jsdoc.tag.inline.isInlineTag).toBeDefined(); + expect(typeof jsdoc.tag.inline.isInlineTag).toBe('function'); + }); + + it('should export a replaceInlineTag function', function() { + expect(jsdoc.tag.inline.replaceInlineTag).toBeDefined(); + expect(typeof jsdoc.tag.inline.replaceInlineTag).toBe('function'); + }); + + it('should export an extractInlineTag function', function() { + expect(jsdoc.tag.inline.extractInlineTag).toBeDefined(); + expect(typeof jsdoc.tag.inline.replaceInlineTag).toBe('function'); + }); + + describe('isInlineTag', function() { + var isInlineTag = jsdoc.tag.inline.isInlineTag; + + it('should correctly identify an inline tag', function() { + expect( isInlineTag('{@mytag hooray}', 'mytag') ).toBe(true); + }); + + it('should correctly identify a non-inline tag', function() { + expect( isInlineTag('mytag hooray', 'mytag') ).toBe(false); + }); + + it('should report that a string containing an inline tag is not an inline tag', function() { + expect( isInlineTag('this is {@mytag hooray}', 'mytag') ).toBe(false); + }); + + it('should default to allowing any inline tag', function() { + expect( isInlineTag('{@anyoldtag will do}') ).toBe(true); + }); + + it('should still identify non-inline tags when a tag name is not provided', function() { + expect( isInlineTag('mytag hooray') ).toBe(false); + }); + + it('should allow regexp characters in the tag name', function() { + expect( isInlineTag('{@mytags hooray}', 'mytag\\S') ).toBe(true); + }); + + it('should return false (rather than throwing) with invalid input', function() { + function badInput() { + return isInlineTag(); + } + + expect(badInput).not.toThrow(); + expect( badInput() ).toBe(false); + }); + }); + + describe('replaceInlineTag', function() { + it('should throw if the tag is matched and the replacer is invalid', function() { + function badReplacerUndefined() { + jsdoc.tag.inline.replaceInlineTag('{@foo tag}', 'foo'); + } + + function badReplacerString() { + jsdoc.tag.inline.replaceInlineTag('{@foo tag}', 'foo', 'hello'); + } + + expect(badReplacerUndefined).toThrow(); + expect(badReplacerString).toThrow(); + }); + + it('should not find anything if there is no text in braces', function() { + var replacer = jasmine.createSpy('replacer'); + var result = jsdoc.tag.inline.replaceInlineTag('braceless text', 'foo', replacer); + expect(replacer).not.toHaveBeenCalled(); + }); + + it('should cope with bad escapement at the end of the string', function() { + var replacer = jasmine.createSpy('replacer'); + var result = jsdoc.tag.inline.replaceInlineTag('bad {@foo escapement \\', 'foo', + replacer); + expect(replacer).not.toHaveBeenCalled(); + }); + + it('should work if the tag is the entire string', function() { + function replacer(string, tagInfo) { + expect(string).toBe('{@foo text in braces}'); + expect(tagInfo.completeTag).toBe('{@foo text in braces}'); + expect(tagInfo.text).toBe('text in braces'); + + return tagInfo.completeTag; + } + + var result = jsdoc.tag.inline.replaceInlineTag('{@foo text in braces}', 'foo', + replacer); + expect(result.tags[0]).toBeDefined(); + expect(typeof result.tags[0]).toBe('object'); + expect(result.tags[0].tag).toBe('foo'); + expect(result.tags[0].text).toBe('text in braces'); + expect(result.newString).toBe('{@foo text in braces}'); + }); + + it('should work if the tag is at the beginning of the string', function() { + function replacer(string, tagInfo) { + expect(string).toBe('{@foo test string} ahoy'); + expect(tagInfo.completeTag).toBe('{@foo test string}'); + expect(tagInfo.text).toBe('test string'); + + return string; + } + + var result = jsdoc.tag.inline.replaceInlineTag('{@foo test string} ahoy', 'foo', + replacer); + expect(result.tags[0]).toBeDefined(); + expect(typeof result.tags[0]).toBe('object'); + expect(result.tags[0].tag).toBe('foo'); + expect(result.tags[0].text).toBe('test string'); + expect(result.newString).toBe('{@foo test string} ahoy'); + }); + + it('should work if the tag is in the middle of the string', function() { + function replacer(string, tagInfo) { + expect(string).toBe('a {@foo test string} yay'); + expect(tagInfo.completeTag).toBe('{@foo test string}'); + expect(tagInfo.text).toBe('test string'); + + return string; + } + + var result = jsdoc.tag.inline.replaceInlineTag('a {@foo test string} yay', 'foo', + replacer); + expect(result.tags[0]).toBeDefined(); + expect(typeof result.tags[0]).toBe('object'); + expect(result.tags[0].tag).toBe('foo'); + expect(result.tags[0].text).toBe('test string'); + expect(result.newString).toBe('a {@foo test string} yay'); + }); + + it('should work if the tag is at the end of the string', function() { + function replacer(string, tagInfo) { + expect(string).toBe('a {@foo test string}'); + expect(tagInfo.completeTag).toBe('{@foo test string}'); + expect(tagInfo.text).toBe('test string'); + + return string; + } + + var result = jsdoc.tag.inline.replaceInlineTag('a {@foo test string}', 'foo', replacer); + expect(result.tags[0]).toBeDefined(); + expect(typeof result.tags[0]).toBe('object'); + expect(result.tags[0].tag).toBe('foo'); + expect(result.tags[0].text).toBe('test string'); + expect(result.newString).toBe('a {@foo test string}'); + }); + + it('should replace the string with the specified value', function() { + function replacer() { + return 'REPLACED!'; + } + + var result = jsdoc.tag.inline.replaceInlineTag('a {@foo test string}', 'foo', replacer); + expect(result.newString).toBe('REPLACED!'); + }); + + it('should process all occurrences of a tag', function() { + function replacer(string, tagInfo) { + return string.replace(tagInfo.completeTag, 'stuff'); + } + + var result = jsdoc.tag.inline.replaceInlineTag('some {@foo text} with multiple ' + + '{@foo tags}', 'foo', replacer); + + expect(result.tags[0]).toBeDefined(); + expect(typeof result.tags[0]).toBe('object'); + expect(result.tags[0].tag).toBe('foo'); + expect(result.tags[0].text).toBe('text'); + + expect(result.tags[1]).toBeDefined(); + expect(typeof result.tags[1]).toBe('object'); + expect(result.tags[1].tag).toBe('foo'); + expect(result.tags[1].text).toBe('tags'); + + expect(result.newString).toBe('some stuff with multiple stuff'); + }); + + }); + + // largely covered by the replaceInlineTag tests + describe('replaceInlineTags', function() { + it('should work with an empty replacer object', function() { + var replacers = {}; + var text = 'some {@foo text} to parse'; + + var result = jsdoc.tag.inline.replaceInlineTags(text, replacers); + expect(result.newString).toBe(text); + }); + + it('should work with an object with one replacer', function() { + var text = 'some {@foo text} with {@bar multiple} tags'; + var replacers = { + foo: function(string, tagInfo) { + expect(tagInfo.completeTag).toBe('{@foo text}'); + expect(tagInfo.text).toBe('text'); + return string.replace(tagInfo.completeTag, 'stuff'); + } + }; + + var result = jsdoc.tag.inline.replaceInlineTags(text, replacers); + expect(result.newString).toBe('some stuff with {@bar multiple} tags'); + + }); + + it('should work with an object with multiple replacers', function() { + var text = 'some {@foo text} with {@bar multiple} tags'; + var replacers = { + foo: function(string, tagInfo) { + expect(tagInfo.completeTag).toBe('{@foo text}'); + expect(tagInfo.text).toBe('text'); + return string.replace(tagInfo.completeTag, 'stuff'); + }, + bar: function(string, tagInfo) { + expect(tagInfo.completeTag).toBe('{@bar multiple}'); + expect(tagInfo.text).toBe('multiple'); + return string.replace(tagInfo.completeTag, 'awesome'); + } + }; + + var result = jsdoc.tag.inline.replaceInlineTags(text, replacers); + expect(result.newString).toBe('some stuff with awesome tags'); + }); + }); + + // largely covered by the replaceInlineTag tests + describe('extractInlineTag', function() { + it('should work when a tag is specified', function() { + var result = jsdoc.tag.inline.extractInlineTag('some {@tagged text}', 'tagged'); + expect(result.tags[0]).toBeDefined(); + expect(typeof result.tags[0]).toBe('object'); + expect(result.tags[0].tag).toBe('tagged'); + expect(result.tags[0].text).toBe('text'); + expect(result.newString).toBe('some'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/tag/type.js b/third_party/jsdoc/test/specs/jsdoc/tag/type.js new file mode 100644 index 0000000000..4add5b0072 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/tag/type.js @@ -0,0 +1,255 @@ +/*global describe, expect, it */ +'use strict'; + +function buildText(type, name, desc) { + var text = ''; + if (type) { + text += '{' + type + '}'; + if (name || desc) { + text += ' '; + } + } + + if (name) { + text += name; + if (desc) { + text += ' '; + } + } + + if (desc) { + text += desc; + } + + return text; +} + +describe('jsdoc/tag/type', function() { + var jsdoc = { + tag: { + type: require('jsdoc/tag/type') + } + }; + + it('should exist', function() { + expect(jsdoc.tag.type).toBeDefined(); + expect(typeof jsdoc.tag.type).toBe('object'); + }); + + it('should export a parse function', function() { + expect(jsdoc.tag.type.parse).toBeDefined(); + expect(typeof jsdoc.tag.type.parse).toBe('function'); + }); + + describe('parse', function() { + it('should return an object with name, type, and text properties', function() { + var info = jsdoc.tag.type.parse(''); + expect(info.name).toBeDefined(); + expect(info.type).toBeDefined(); + expect(info.text).toBeDefined(); + }); + + it('should not extract a name or type if canHaveName and canHaveType are not set', function() { + var desc = '{number} foo The foo parameter.'; + var info = jsdoc.tag.type.parse(desc); + expect(info.type).toEqual([]); + expect(info.name).toBe(''); + expect(info.text).toBe(desc); + }); + + it('should extract a name, but not a type, if canHaveName === true and canHaveType === false', function() { + var name = 'bar'; + var desc = 'The bar parameter.'; + var info = jsdoc.tag.type.parse( buildText(null, name, desc), true, false ); + expect(info.type).toEqual([]); + expect(info.name).toBe(name); + expect(info.text).toBe(desc); + }); + + it('should extract a type, but not a name, if canHaveName === false and canHaveType === true', function() { + var type = 'boolean'; + var desc = 'Set to true on alternate Thursdays.'; + var info = jsdoc.tag.type.parse( buildText(type, null, desc), false, true ); + expect(info.type).toEqual([type]); + expect(info.name).toBe(''); + expect(info.text).toBe(desc); + }); + + it('should extract a name and type if canHaveName and canHaveType are true', function() { + var type = 'string'; + var name = 'baz'; + var desc = 'The baz parameter.'; + var info = jsdoc.tag.type.parse( buildText(type, name, desc), true, true ); + expect(info.type).toEqual([type]); + expect(info.name).toBe(name); + expect(info.text).toBe(desc); + }); + + it('should report optional types correctly no matter which syntax we use', function() { + var desc = '{string} [foo]'; + var info = jsdoc.tag.type.parse(desc, true, true); + expect(info.optional).toBe(true); + + desc = '{string=} [foo]'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.optional).toBe(true); + + desc = '[foo]'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.optional).toBe(true); + }); + + it('should return the types as an array', function() { + var desc = '{string} foo'; + var info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['string'] ); + }); + + it('should recognize the entire list of possible types', function() { + var desc = '{(string|number)} foo'; + var info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['string', 'number'] ); + + desc = '{ ( string | number ) } foo'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['string', 'number'] ); + + desc = '{ ( string | number)} foo'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['string', 'number'] ); + + desc = '{(string|number|boolean|function)} foo'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['string', 'number', 'boolean', 'function'] ); + }); + + it('should not find any type if there is no text in braces', function() { + var desc = 'braceless text'; + var info = jsdoc.tag.type.parse(desc, false, true); + expect(info.type).toEqual([]); + }); + + it('should cope with bad escapement at the end of the string', function() { + var desc = 'bad {escapement \\'; + var info = jsdoc.tag.type.parse(desc, false, true); + expect(info.type).toEqual([]); + expect(info.text).toBe(desc); + }); + + it('should handle escaped braces correctly', function() { + var desc = '{weirdObject."with\\}AnnoyingProperty"}'; + var info = jsdoc.tag.type.parse(desc, false, true); + expect(info.type[0]).toBe('weirdObject."with}AnnoyingProperty"'); + }); + + it('should work if the type expression is the entire string', function() { + var desc = '{textInBraces}'; + var info = jsdoc.tag.type.parse(desc, false, true); + expect(info.type[0]).toBe('textInBraces'); + }); + + it('should work if the type expression is at the beginning of the string', function() { + var desc = '{testString} ahoy'; + var info = jsdoc.tag.type.parse(desc, false, true); + expect(info.type[0]).toBe('testString'); + expect(info.text).toBe('ahoy'); + }); + + it('should work if the type expression is in the middle of the string', function() { + var desc = 'a {testString} yay'; + var info = jsdoc.tag.type.parse(desc, false, true); + expect(info.type[0]).toBe('testString'); + expect(info.text).toBe('a yay'); + }); + + it('should work if the tag is at the end of the string', function() { + var desc = 'a {testString}'; + var info = jsdoc.tag.type.parse(desc, false, true); + expect(info.type[0]).toBe('testString'); + expect(info.text).toBe('a'); + }); + + it('should work when there are nested braces', function() { + var desc = 'some {{double}} braces'; + var info = jsdoc.tag.type.parse(desc, false, true); + // we currently stringify all record types as 'Object' + expect(info.type[0]).toBe('Object'); + expect(info.text).toBe('some braces'); + }); + + it('should override the type expression if an inline @type tag is specified', function() { + var desc = '{Object} cookie {@type Monster}'; + var info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['Monster'] ); + expect(info.text).toBe(''); + + desc = '{Object} cookie - {@type Monster}'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['Monster'] ); + expect(info.text).toBe(''); + + desc = '{Object} cookie - The cookie parameter. {@type Monster}'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['Monster'] ); + expect(info.text).toBe('The cookie parameter.'); + + desc = '{Object} cookie - The cookie parameter. {@type (Monster|Jar)}'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['Monster', 'Jar'] ); + expect(info.text).toBe('The cookie parameter.'); + + desc = '{Object} cookie - The cookie parameter. {@type (Monster|Jar)} Mmm, cookie.'; + info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['Monster', 'Jar'] ); + expect(info.text).toBe('The cookie parameter. Mmm, cookie.'); + }); + + describe('JSDoc-style type info', function() { + it('should parse JSDoc-style optional parameters', function() { + var name = '[qux]'; + var desc = 'The qux parameter.'; + var info = jsdoc.tag.type.parse( buildText(null, name, desc), true, false ); + expect(info.name).toBe('qux'); + expect(info.text).toBe(desc); + expect(info.optional).toBe(true); + + name = '[ qux ]'; + info = jsdoc.tag.type.parse( buildText(null, name, desc), true, false ); + expect(info.name).toBe('qux'); + expect(info.text).toBe(desc); + expect(info.optional).toBe(true); + + name = '[qux=hooray]'; + info = jsdoc.tag.type.parse( buildText(null, name, desc), true, false ); + expect(info.name).toBe('qux'); + expect(info.text).toBe(desc); + expect(info.optional).toBe(true); + expect(info.defaultvalue).toBe('hooray'); + + name = '[ qux = hooray ]'; + info = jsdoc.tag.type.parse( buildText(null, name, desc), true, false ); + expect(info.name).toBe('qux'); + expect(info.text).toBe(desc); + expect(info.optional).toBe(true); + expect(info.defaultvalue).toBe('hooray'); + }); + }); + + // TODO: add more tests related to how JSDoc mangles the Catharsis parse results + describe('Closure Compiler-style type info', function() { + it('should recognize variable (repeatable) parameters', function() { + var desc = '{...string} foo - Foo.'; + var info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual( ['string'] ); + expect(info.variable).toBe(true); + }); + + it('should set the type correctly for type applications that contain type unions', + function() { + var desc = '{Array.<(string|number)>} foo - Foo.'; + var info = jsdoc.tag.type.parse(desc, true, true); + expect(info.type).toEqual(['Array.<(string|number)>']); + }); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/tag/validator.js b/third_party/jsdoc/test/specs/jsdoc/tag/validator.js new file mode 100644 index 0000000000..2e39994597 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/tag/validator.js @@ -0,0 +1,98 @@ +/*global afterEach, beforeEach, describe, env, expect, it, spyOn */ +'use strict'; + +describe('jsdoc/tag/validator', function() { + var doop = require('jsdoc/util/doop'); + var logger = require('jsdoc/util/logger'); + var tag = require('jsdoc/tag'); + var validator = require('jsdoc/tag/validator'); + + it('should exist', function() { + expect(validator).toBeDefined(); + expect(typeof validator).toBe('object'); + }); + + it('should export a validate function', function() { + expect(validator.validate).toBeDefined(); + expect(typeof validator.validate).toBe('function'); + }); + + describe('validate', function() { + var dictionary = require('jsdoc/tag/dictionary'); + + var allowUnknown = !!env.conf.tags.allowUnknownTags; + var badTag = { title: 'lkjasdlkjfb' }; + var badTag2 = new tag.Tag('type', '{string} I am a string!'); + var meta = { + filename: 'asdf.js', + lineno: 1, + comment: 'Better luck next time.' + }; + var goodTag = new tag.Tag('name', 'MyDocletName', meta); // mustHaveValue + var goodTag2 = new tag.Tag('ignore', '', meta); // mustNotHaveValue + + function validateTag(tag) { + validator.validate(tag, dictionary.lookUp(tag.title), meta); + } + + beforeEach(function() { + spyOn(logger, 'error'); + spyOn(logger, 'warn'); + }); + + afterEach(function() { + env.conf.tags.allowUnknownTags = allowUnknown; + }); + + it('logs an error if the tag is not in the dictionary and conf.tags.allowUnknownTags is false', function() { + env.conf.tags.allowUnknownTags = false; + validateTag(badTag); + + expect(logger.error).toHaveBeenCalled(); + }); + + it('does not log an error if the tag is not in the dictionary and conf.tags.allowUnknownTags is true', function() { + env.conf.tags.allowUnknownTags = true; + validateTag(badTag); + + expect(logger.error).not.toHaveBeenCalled(); + }); + + it('does not log an error for valid tags', function() { + validateTag(goodTag); + validateTag(goodTag2); + + expect(logger.error).not.toHaveBeenCalled(); + }); + + it('logs an error if the tag has no text but mustHaveValue is true', function() { + var missingName = doop(goodTag); + missingName.text = null; + validateTag(missingName); + + expect(logger.error).toHaveBeenCalled(); + }); + + it('logs a warning if the tag has text but mustNotHaveValue is true', function() { + var missingText = doop(goodTag2); + missingText.mustNotHaveValue = true; + missingText.text = missingText.text || 'asdf'; + validateTag(missingText); + + expect(logger.warn).toHaveBeenCalled(); + }); + + it('logs a warning if the tag has a description but mustNotHaveDescription is true', function() { + validateTag(badTag2); + + expect(logger.warn).toHaveBeenCalled(); + }); + + it('logs meta.comment when present', function() { + env.conf.tags.allowUnknownTags = false; + validateTag(badTag); + + expect(logger.error.mostRecentCall.args[0]).toContain(meta.comment); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/template.js b/third_party/jsdoc/test/specs/jsdoc/template.js new file mode 100644 index 0000000000..97dedb3c75 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/template.js @@ -0,0 +1,4 @@ +/*global describe: true, expect: true, it: true, xdescribe: true, xit: true */ +xdescribe('jsdoc/template', function() { + // TODO +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/tutorial.js b/third_party/jsdoc/test/specs/jsdoc/tutorial.js new file mode 100644 index 0000000000..0ab8d98a68 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/tutorial.js @@ -0,0 +1,284 @@ +'use strict'; + +describe('jsdoc/tutorial', function() { + var tutorial = require('jsdoc/tutorial'); + + var name = 'tuteID'; + var content = 'Tutorial content blah blah blah & <'; + var tute = new tutorial.Tutorial(name, content, tutorial.TYPES.NOTAVALUE); + var par = new tutorial.Tutorial('parent', + "# This is the parent tutorial's content & stuff A_B X_Y", + tutorial.TYPES.MARKDOWN); + var par2 = new tutorial.Tutorial('parent2', '

        This is the second parent tutorial

        ', + tutorial.TYPES.HTML); + var markdownEntities = new tutorial.Tutorial('markdown-entities', + '
        This Markdown tutorial contains HTML entities: & < >
        ', + tutorial.TYPES.MARKDOWN); + + it('module should exist', function() { + expect(tutorial).toBeDefined(); + expect(typeof tutorial).toBe('object'); + }); + + it('should export a Tutorial function', function() { + expect(tutorial.Tutorial).toBeDefined(); + expect(typeof tutorial.Tutorial).toBe('function'); + }); + + it('should export a RootTutorial function', function() { + expect(tutorial.RootTutorial).toBeDefined(); + expect(typeof tutorial.RootTutorial).toBe('function'); + }); + + it('should export a TYPES object', function() { + expect(tutorial.TYPES).toBeDefined(); + expect(typeof tutorial.TYPES).toBe('object'); + }); + + describe('tutorial.TYPES', function() { + it('should have a HTML property', function() { + expect(tutorial.TYPES.HTML).toBeDefined(); + }); + + it('should have a MARKDOWN property', function() { + expect(tutorial.TYPES.MARKDOWN).toBeDefined(); + }); + }); + + describe('Tutorial', function() { + it('should have a "setParent" method', function() { + expect(tutorial.Tutorial.prototype.setParent).toBeDefined(); + expect(typeof tutorial.Tutorial.prototype.setParent).toBe('function'); + }); + + it('should have a "removeChild" method', function() { + expect(tutorial.Tutorial.prototype.removeChild).toBeDefined(); + expect(typeof tutorial.Tutorial.prototype.removeChild).toBe('function'); + }); + + it('should have an "addChild" method', function() { + expect(tutorial.Tutorial.prototype.addChild).toBeDefined(); + expect(typeof tutorial.Tutorial.prototype.addChild).toBe('function'); + }); + + it('should have a "parse" method', function() { + expect(tutorial.Tutorial.prototype.parse).toBeDefined(); + expect(typeof tutorial.Tutorial.prototype.parse).toBe('function'); + }); + + it('should have a "name" property', function() { + expect(tute.name).toBeDefined(); + expect(typeof tute.name).toBe('string'); + expect(tute.name).toBe(name); + }); + + it("should have a 'title' property, by default set to to the tutorial's name", function() { + expect(tute.title).toBeDefined(); + expect(typeof tute.title).toBe('string'); + expect(tute.title).toBe(name); + // Testing of overriding a tutorial's title in its JSON file is + // covered in tutorial/resolver.js tests. + }); + + it("should have a 'content' property set to the tutorial's content", function() { + expect(tute.content).toBeDefined(); + expect(typeof tute.content).toBe('string'); + expect(tute.content).toBe(content); + }); + + it("should have a 'type' property set to the tutorial's type", function() { + expect(par.type).toBeDefined(); + expect(typeof par.type).toBe(typeof tutorial.TYPES.MARKDOWN); + expect(par.type).toBe(tutorial.TYPES.MARKDOWN); + }); + + it("should have a 'parent' property, initially null", function() { + expect(tute.parent).toBeDefined(); + expect(tute.parent).toBe(null); + }); + + it("should have a 'children' property, an empty array", function() { + expect(tute.children).toBeDefined(); + expect(Array.isArray(tute.children)).toBe(true); + expect(tute.children.length).toBe(0); + }); + + describe('setParent', function() { + it("adding a parent sets the child's 'parent' property", function() { + tute.setParent(par); + expect(tute.parent).toBe(par); + }); + + it("adding a parent adds the child to the parent's 'children' property", function() { + expect(par.children).toContain(tute); + }); + + it('re-parenting removes the child from the previous parent', function() { + tute.setParent(par2); + + expect(tute.parent).toBe(par2); + expect(par2.children).toContain(tute); + expect(par.children).not.toContain(tute); + }); + + it("calling setParent with a null parent unsets the child's parent and removes the child from its previous parent", function() { + expect(par2.children).toContain(tute); + tute.setParent(null); + + expect(tute.parent).toBe(null); + expect(par2.children).not.toContain(tute); + }); + }); + + describe('addChild', function() { + it("adding a child tutorial adds the child to the parent's 'children' property", function() { + tute.setParent(null); + var n = par.children.length; + + par.addChild(tute); + + expect(par.children.length).toBe(n + 1); + expect(par.children).toContain(tute); + }); + + it("adding a child tutorial sets the child's parent to to the parent tutorial", function() { + expect(tute.parent).toBe(par); + }); + + it('adding a child tutorial removes the child from its old parent', function() { + // tue is currently owned by par; we reparent it to par2 + expect(tute.parent).toBe(par); + par2.addChild(tute); + + expect(tute.parent).toBe(par2); + expect(par.children).not.toContain(tute); + expect(par2.children).toContain(tute); + }); + }); + + describe('removeChild', function() { + function removeChild() { + par2.removeChild(par); + } + + it('removing a tutorial that is not a child silently passes', function() { + var n = par2.children.length; + expect(removeChild).not.toThrow(); + expect(par2.children.length).toBe(n); + }); + + it("removing a child removes the child from the parent's 'children' property", function() { + tute.setParent(par2); + expect(par2.children.length).toBe(1); + + par2.removeChild(tute); + + expect(par2.children).not.toContain(tute); + expect(par2.children.length).toBe(0); + }); + + it("removing a child unsets the child's 'parent' property", function() { + expect(tute.parent).toBe(null); + }); + }); + + describe('various inheritance tests with addChild, setParent and removeChild', function() { + it('parenting and unparenting via addChild, setParent and removeChild makes sure inheritance is set accordingly', function() { + // unparent everything. + tute.setParent(null); + par.setParent(null); + par2.setParent(null); + + // let tute belong to par + tute.setParent(par); + expect(tute.parent).toBe(par); + expect(par2.children.length).toBe(0); + expect(par.children.length).toBe(1); + expect(par.children[0]).toBe(tute); + + // addChild tute to par2. its parent should now be par2, and + // it can't be the child of two parents + par2.addChild(tute); + expect(tute.parent).toBe(par2); + expect(par.children.length).toBe(0); + expect(par2.children.length).toBe(1); + expect(par2.children[0]).toBe(tute); + + // removeChild tute from par2. tute should now be unparented. + par2.removeChild(tute); + expect(tute.parent).toBe(null); + expect(par.children.length).toBe(0); + expect(par2.children.length).toBe(0); + }); + }); + + describe('parse', function() { + var markdownConfig = global.env.conf.markdown; + + function setMarkdownConfig(config) { + global.env.conf.markdown = config; + } + + beforeEach(function() { + setMarkdownConfig({parser: 'marked'}); + }); + + afterEach(function() { + global.env.conf.markdown = markdownConfig; + }); + + it('Tutorials with HTML type return content as-is', function() { + expect(par2.parse()).toBe('

        This is the second parent tutorial

        '); + }); + + it('Tutorials with MARKDOWN type go through the markdown parser, respecting configuration options', function() { + expect(par.parse()).toBe("

        This is the parent tutorial's content & stuff A_B X_Y

        "); + }); + + it('Tutorials with MARKDOWN type preserve &/</> entities', function() { + expect(markdownEntities.parse()) + .toBe('
        This Markdown tutorial contains HTML entities: & < >
        '); + }); + + it('Tutorials with unrecognised type are returned as-is', function() { + expect(tute.parse()).toBe(content); + }); + }); + }); + + describe('RootTutorial', function() { + it('should inherit from Tutorial', function() { + var root = new tutorial.RootTutorial(); + + expect(root instanceof tutorial.Tutorial).toBe(true); + }); + + it('should have a "getByName" method', function() { + expect(tutorial.RootTutorial.prototype.getByName).toBeDefined(); + expect(typeof tutorial.RootTutorial.prototype.getByName).toBe('function'); + }); + + describe('getByName', function() { + var root; + + beforeEach(function() { + root = new tutorial.RootTutorial(); + }); + + it('can retrieve tutorials by name', function() { + var myTutorial = new tutorial.Tutorial('myTutorial', '', tutorial.TYPES.HTML); + root._addTutorial(myTutorial); + + expect(root.getByName('myTutorial')).toBe(myTutorial); + }); + + it('returns nothing for non-existent tutorials', function() { + expect(root.getByName('asdf')).toBeFalsy(); + }); + + it('uses hasOwnProperty when it checks for the tutorial', function() { + expect(root.getByName('prototype')).toBeFalsy(); + }); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/tutorial/resolver.js b/third_party/jsdoc/test/specs/jsdoc/tutorial/resolver.js new file mode 100644 index 0000000000..cea68eee16 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/tutorial/resolver.js @@ -0,0 +1,232 @@ +'use strict'; + +describe('jsdoc/tutorial/resolver', function() { + var logger = require('jsdoc/util/logger'); + var resolver = require('jsdoc/tutorial/resolver'); + var tutorial = require('jsdoc/tutorial'); + + var childNames; + var constr; + var test; + var test2; + var test3; + var test4; + var test6; + + function resetRootTutorial() { + resolver.root = new tutorial.RootTutorial(); + } + + function loadTutorials() { + resetRootTutorial(); + + resolver.load(global.env.dirname + '/test/tutorials/tutorials'); + + childNames = resolver.root.children.map(function (t) { return t.name; }); + test = resolver.root.getByName('test'); + test2 = resolver.root.getByName('test2'); + test3 = resolver.root.getByName('test3'); + test4 = resolver.root.getByName('test4'); + test6 = resolver.root.getByName('test6'); + constr = resolver.root.getByName('constructor'); + } + + it('should exist', function() { + expect(resolver).toBeDefined(); + expect(typeof resolver).toBe('object'); + }); + + it('should export an "addTutorial" function', function() { + expect(resolver.addTutorial).toBeDefined(); + expect(typeof resolver.addTutorial).toBe('function'); + }); + + it('should export a "load" function', function() { + expect(resolver.load).toBeDefined(); + expect(typeof resolver.load).toBe('function'); + }); + + it('should export a "resolve" function', function() { + expect(resolver.resolve).toBeDefined(); + expect(typeof resolver.resolve).toBe('function'); + }); + + it('should export a "root" tutorial', function() { + expect(resolver.root).toBeDefined(); + expect(resolver.root instanceof tutorial.RootTutorial).toBe(true); + }); + + it('exported "root" tutorial should export a "getByName" function', function() { + expect(resolver.root.getByName).toBeDefined(); + expect(typeof resolver.root.getByName).toBe('function'); + }); + + // note: every time we addTutorial or run the resolver, we are *adding* + // to the root tutorial. + describe('addTutorial', function() { + var tute; + + beforeEach(function() { + resetRootTutorial(); + + tute = new tutorial.Tutorial('myTutorial', '', tutorial.TYPES.HTML); + resolver.addTutorial(tute); + }); + + afterEach(resetRootTutorial); + + it('should add a default parent of the root tutorial', function() { + expect(tute.parent).toBe(resolver.root); + }); + + it('should be added to the root tutorial as a child', function() { + expect(resolver.root.children).toContain(tute); + }); + }); + + describe('load', function() { + beforeEach(loadTutorials); + + afterEach(resetRootTutorial); + + it('does not, by default, recurse into subdirectories', function() { + expect(resolver.root.getByName('test_recursive')).toBeFalsy(); + }); + + it('recurses into subdirectories when the --recurse flag is used', function() { + var recurse = global.env.opts.recurse; + var recursiveTute; + + global.env.opts.recurse = true; + loadTutorials(); + recursiveTute = resolver.root.getByName('test_recursive'); + + expect(recursiveTute).toBeDefined(); + expect(recursiveTute instanceof tutorial.Tutorial).toBe(true); + + global.env.opts.recurse = recurse; + }); + + it('all tutorials are added, initially as top-level tutorials', function() { + // check they were added + expect(test).toBeDefined(); + expect(test2).toBeDefined(); + expect(test3).toBeDefined(); + expect(test4).toBeDefined(); + expect(test6).toBeDefined(); + expect(constr).toBeDefined(); + // check they are top-level in resolver.root + expect(childNames).toContain('test'); + expect(childNames).toContain('test2'); + expect(childNames).toContain('test3'); + expect(childNames).toContain('test4'); + expect(childNames).toContain('test6'); + }); + + it('tutorials with names equal to reserved keywords in JS still function as expected', function() { + expect(constr instanceof tutorial.Tutorial).toBe(true); + }); + + it('non-tutorials are skipped', function() { + expect(resolver.root.getByName('multiple')).toBeFalsy(); + expect(resolver.root.getByName('test5')).toBeFalsy(); + }); + + it('tutorial types are determined correctly', function() { + // test.html, test2.markdown, test3.html, test4.md, test6.xml + expect(test.type).toBe(tutorial.TYPES.HTML); + expect(test2.type).toBe(tutorial.TYPES.MARKDOWN); + expect(test3.type).toBe(tutorial.TYPES.HTML); + expect(test4.type).toBe(tutorial.TYPES.MARKDOWN); + expect(test6.type).toBe(tutorial.TYPES.HTML); + expect(constr.type).toBe(tutorial.TYPES.MARKDOWN); + }); + }); + + // resolve + // myTutorial + // constructor + // test + // |- test2 + // |- test6 + // |- test3 + // |- test4 + describe('resolve', function() { + beforeEach(function() { + spyOn(logger, 'error'); + spyOn(logger, 'warn'); + loadTutorials(); + resolver.resolve(); + }); + + afterEach(resetRootTutorial); + + it('hierarchy is resolved properly no matter how the children property is defined', function() { + // root has child 'test' + expect(resolver.root.children.length).toBe(2); + expect(resolver.root.children).toContain(test); + expect(resolver.root.children).toContain(constr); + expect(test.parent).toBe(resolver.root); + expect(constr.parent).toBe(resolver.root); + + // test has child 'test2' + expect(test.children.length).toBe(1); + expect(test.children).toContain(test2); + expect(test2.parent).toBe(test); + + // test2 has children test3, test6 + expect(test2.children.length).toBe(2); + expect(test2.children).toContain(test3); + expect(test2.children).toContain(test6); + expect(test3.parent).toBe(test2); + expect(test6.parent).toBe(test2); + + // test3 has child test4 + expect(test3.children.length).toBe(1); + expect(test3.children).toContain(test4); + expect(test4.parent).toBe(test3); + }); + + it('tutorials without configuration files have titles matching filenames', function() { + // test6.xml didn't have a metadata + expect(test6.title).toBe('test6'); + }); + + it('tutorials with configuration files have titles as specified in configuration', function() { + // test.json had info for just test.json + expect(test.title).toBe('Test tutorial'); + }); + + it('multiple tutorials can appear in a configuration file', function() { + expect(test2.title).toBe('Test 2'); + expect(test3.title).toBe('Test 3'); + expect(test4.title).toBe('Test 4'); + }); + + it('logs an error for missing tutorials', function() { + resolver.load(global.env.dirname + '/test/tutorials/incomplete'); + resolver.resolve(); + + expect(logger.error).toHaveBeenCalled(); + }); + + it('logs a warning for duplicate-named tutorials (e.g. test.md, test.html)', function() { + var tute = new tutorial.Tutorial('myTutorial', '', tutorial.TYPES.HTML); + resolver.addTutorial(tute); + resolver.addTutorial(tute); + + expect(logger.warn).toHaveBeenCalled(); + }); + + it('allows tutorials to be defined in one .json file and redefined in another', function() { + resolver.load(global.env.dirname + '/test/tutorials/duplicateDefined'); + resolver.resolve(); + + expect(logger.error).not.toHaveBeenCalled(); + expect(logger.warn).toHaveBeenCalled(); + // we don't check to see which one wins; it depends on the order in which the JS engine + // iterates over object keys + expect(resolver.root.getByName('asdf')).toBeDefined(); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/util/doop.js b/third_party/jsdoc/test/specs/jsdoc/util/doop.js new file mode 100644 index 0000000000..ebff9d9f79 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/util/doop.js @@ -0,0 +1,109 @@ +/*global describe, expect, it */ +'use strict'; + +describe('jsdoc/util/doop', function() { + var doop = require('jsdoc/util/doop'); + + it('should exist', function() { + expect(doop).toBeDefined(); + expect(typeof doop).toBe('function'); + }); + + it('should export a doop function for backwards compatibility', function() { + expect(doop.doop).toBeDefined(); + expect(typeof doop.doop).toBe('function'); + }); + + // deep-clones a simple object. + describe('doop', function() { + it("should return the input object if it's a value type or a function", function() { + // test a number... + expect(doop.doop(3)).toBe(3); + // test a string... + expect(doop.doop('asdf')).toBe('asdf'); + // test a boolean... + expect(doop.doop(true)).toBe(true); + // test a function... + var f = function () {}; + expect(doop.doop(f)).toBe(f); + }); + + it("should return a clone of an array", function() { + var inp = [1,2,3], + out = doop.doop(inp); + // toEqual is a comparison on properties; toBe is === comparison. + expect(inp).toEqual(out); + expect(inp).not.toBe(out); + }); + + it("should return a clone of an object", function() { + var inp = {a:1, b:2, 'asdf-fdsa': 3}; + var out = doop.doop(inp); + // toEqual is a comparison on properties; toBe is === comparison. + expect(inp).toEqual(out); + expect(inp).not.toBe(out); + }); + + it("should return an object with the same prototype as the original object", function() { + function Foo() {} + + var foo = new Foo(); + var bar = doop(foo); + expect( Object.getPrototypeOf(foo) ).toBe( Object.getPrototypeOf(bar) ); + }); + + // checks that a === b if it's not an object or array (or it's af function); + // otherwise recurses down into keys and compares them. + function compareForEquality(a, b) { + if (a instanceof Object && a.constructor != Function) { + // if it's an object and not a function, it should clone. + var keysA = Object.keys(a).sort(); + var keysB = Object.keys(b).sort(); + expect(keysA).toEqual(keysB); + for (var i = 0; i < keysA.length; ++i) { + compareForEquality(a[keysA[i]], b[keysB[i]]); + } + } else { + // otherwise, it should be exactly equal. + expect(a).toBe(b); + } + } + + it("should clone recursively", function() { + var inp = {a:1, b:2, 'asdf-fdsa': {a: 'fdsa', b: [1,2,3]}}; + var out = doop.doop(inp); + // toEqual is a comparison on properties; toBe is === comparison. + expect(inp).toEqual(out); + expect(inp).not.toBe(out); + // double-check + compareForEquality(inp, out); + }); + + it('should not clone non-enumerable properties', function() { + var clone; + var obj = { a: 1 }; + + Object.defineProperty(obj, 'foo', { + value: 2 + }); + + clone = doop(obj); + + expect(clone.foo).not.toBeDefined(); + }); + + it('should not create a circular reference if an object is seen more than once', function() { + var input = { a: {} }; + var output; + + function stringify() { + return JSON.stringify(output); + } + + input.a.circular = input.a; + output = doop(input); + + expect(stringify).not.toThrow(); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/util/dumper.js b/third_party/jsdoc/test/specs/jsdoc/util/dumper.js new file mode 100644 index 0000000000..e08d25c8e3 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/util/dumper.js @@ -0,0 +1,103 @@ +/*global describe: true, expect: true, it: true */ +describe("jsdoc/util/dumper", function() { + var common = {dumper: require('jsdoc/util/dumper')}; + + it("should exist", function() { + expect(common.dumper).toBeDefined(); + expect(typeof common.dumper).toEqual("object"); + }); + + it("should export a 'dump' function", function() { + expect(common.dumper.dump).toBeDefined(); + expect(typeof common.dumper.dump).toEqual("function"); + }); + + it("can dump string values", function() { + expect(common.dumper.dump('hello')).toEqual('"hello"'); + }); + + it("escapes double quotes in string values", function() { + expect(common.dumper.dump('hello "world"')).toEqual('"hello \\"world\\""', 'Double quotes should be escaped.'); + }); + + it("escapes newlines in string values", function() { + expect(common.dumper.dump('hello\nworld')).toEqual('"hello\\nworld"', 'Newlines should be escaped.'); + }); + + it("can dump number values", function() { + expect(common.dumper.dump(1)).toEqual('1'); + expect(common.dumper.dump(0.1)).toEqual('0.1'); + }); + + it("can dump boolean values", function() { + expect(common.dumper.dump(true)).toEqual('true'); + expect(common.dumper.dump(false)).toEqual('false'); + }); + + it("can dump null values", function() { + expect(common.dumper.dump(null)).toEqual('null'); + }); + + it("can dump undefined values", function() { + expect(common.dumper.dump(undefined)).toEqual('null'); + }); + + it("can dump regex values", function() { + expect(common.dumper.dump(/^[Ff]oo$/gi)).toEqual('""'); + }); + + it("can dump date values", function() { + expect(common.dumper.dump(new Date('January 1, 1901 GMT'))) + .toEqual('""'); + }); + + it("can dump function values", function() { + expect(common.dumper.dump(function myFunc(){})).toEqual('""'); + expect(common.dumper.dump(function(){})).toEqual('""'); + }); + + it("can dump array values", function() { + var actual = common.dumper.dump(["hello", "world"]), + expected = '[\n "hello",\n "world"\n]'; + + expect(actual).toEqual(expected); + }); + + it("can dump simple object values", function() { + var actual = common.dumper.dump({hello: "world"}), + expected = '{\n "hello": "world"\n}'; + + expect(actual).toEqual(expected); + }); + + it("can dump constructed instance values, not displaying prototype members", function() { + function Foo(name){ this.name = name; } + Foo.prototype.sayHello = function(){}; + + var actual = common.dumper.dump(new Foo('hello')), + expected = '{\n "name": "hello"\n}'; + + expect(actual).toEqual(expected); + }); + + it("can dump complex mixed values", function() { + function Foo(){} + + var actual = common.dumper.dump( + [undefined, null, new Foo(), 1, true, 'hello\n"world', new Error('oops'), /foo/gi, new Date('December 26, 2010 GMT'), {f: function myFunc(){}, o: {a:1}}] + ), + expected = '[\n null,\n null,\n {},\n 1,\n true,\n "hello\\n\\"world",\n {\n "message": "oops"\n },\n "",\n "",\n {\n "f": "",\n "o": {\n "a": 1\n }\n }\n]'; + + expect(actual).toEqual(expected); + }); + + it("doesn't crash on circular references", function() { + var a = {}; + a.b = a; + + var actual = common.dumper.dump(a), + expected = '{\n "b": ""\n}'; + + expect(actual).toEqual(expected); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/jsdoc/util/error.js b/third_party/jsdoc/test/specs/jsdoc/util/error.js new file mode 100644 index 0000000000..1d21b5f33d --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/util/error.js @@ -0,0 +1,38 @@ +/*global beforeEach, describe, expect, it, spyOn */ +'use strict'; + +describe('jsdoc/util/error', function() { + var error = require('jsdoc/util/error'); + var handle = error.handle; + var logger = require('jsdoc/util/logger'); + + it('should exist', function() { + expect(error).toBeDefined(); + expect(typeof error).toBe('object'); + }); + + it('should export a "handle" function', function() { + expect(handle).toBeDefined(); + expect(typeof handle).toBe('function'); + }); + + describe('handle', function() { + it('should not throw', function() { + expect(handle).not.toThrow(); + }); + + it('should log messages with logger.error()', function() { + spyOn(logger, 'error'); + handle('test'); + + expect(logger.error).toHaveBeenCalled(); + }); + + it('should use special formatting for Error instances', function() { + spyOn(logger, 'error'); + handle( new Error('Oh no!') ); + + expect(logger.error).toHaveBeenCalledWith('Error: Oh no!'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/util/logger.js b/third_party/jsdoc/test/specs/jsdoc/util/logger.js new file mode 100644 index 0000000000..f335a25f7c --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/util/logger.js @@ -0,0 +1,200 @@ +/*global afterEach, describe, expect, it, jasmine */ +describe('jsdoc/util/logger', function() { + var logger = require('jsdoc/util/logger'); + + var loggerArgs = ['foo bar %s', 'hello']; + + it('should exist', function() { + expect(logger).toBeDefined(); + expect(typeof logger).toBe('object'); + }); + + it('should inherit from EventEmitter', function() { + var EventEmitter = require('events').EventEmitter; + + expect(logger instanceof EventEmitter).toBe(true); + }); + + it('should export a "debug" method', function() { + expect(logger.debug).toBeDefined(); + expect(typeof logger.debug).toBe('function'); + }); + + it('should export an "error" method', function() { + expect(logger.error).toBeDefined(); + expect(typeof logger.error).toBe('function'); + }); + + it('should export a "fatal" method', function() { + expect(logger.fatal).toBeDefined(); + expect(typeof logger.fatal).toBe('function'); + }); + + it('should export a "getLevel" method', function() { + expect(logger.getLevel).toBeDefined(); + expect(typeof logger.getLevel).toBe('function'); + }); + + it('should export an "info" method', function() { + expect(logger.info).toBeDefined(); + expect(typeof logger.info).toBe('function'); + }); + + it('should export a "LEVELS" object', function() { + expect(logger.LEVELS).toBeDefined(); + expect(typeof logger.LEVELS).toBe('object'); + }); + + it('should export a "setLevel" method', function() { + expect(logger.setLevel).toBeDefined(); + expect(typeof logger.setLevel).toBe('function'); + }); + + it('should export a "verbose" method', function() { + expect(logger.verbose).toBeDefined(); + expect(typeof logger.verbose).toBe('function'); + }); + + it('should export a "warn" method', function() { + expect(logger.warn).toBeDefined(); + expect(typeof logger.warn).toBe('function'); + }); + + // helpers for testing logger methods + function eventIsEmitted(name) { + var called = false; + + logger.once('logger:' + name, function() { + called = true; + }); + logger[name](); + + expect(called).toBe(true); + } + + function eventGetsArguments(name) { + var args; + + logger.once('logger:' + name, function() { + args = Array.prototype.slice.call(arguments, 0); + }); + logger[name](loggerArgs[0], loggerArgs[1]); + + expect(args).toBeDefined(); + expect( Array.isArray(args) ).toBe(true); + expect(args[0]).toBe(loggerArgs[0]); + expect(args[1]).toBe(loggerArgs[1]); + } + + describe('debug', function() { + var methodName = 'debug'; + + it('should cause the logger to emit the correct event', function() { + eventIsEmitted(methodName); + }); + + it('should pass its arguments to listeners', function() { + eventGetsArguments(methodName); + }); + }); + + describe('error', function() { + var methodName = 'error'; + + it('should cause the logger to emit the correct event', function() { + eventIsEmitted(methodName); + }); + + it('should pass its arguments to listeners', function() { + eventGetsArguments(methodName); + }); + }); + + describe('fatal', function() { + var methodName = 'fatal'; + + it('should cause the logger to emit the correct event', function() { + eventIsEmitted(methodName); + }); + + it('should pass its arguments to listeners', function() { + eventGetsArguments(methodName); + }); + }); + + describe('getLevel', function() { + it('should return LEVELS.SILENT when we are running tests', function() { + expect( logger.getLevel() ).toBe(logger.LEVELS.SILENT); + }); + }); + + describe('info', function() { + var methodName = 'info'; + + it('should cause the logger to emit the correct event', function() { + eventIsEmitted(methodName); + }); + + it('should pass its arguments to listeners', function() { + eventGetsArguments(methodName); + }); + }); + + describe('LEVELS', function() { + var LEVELS = logger.LEVELS; + + it('should include the correct properties', function() { + expect(LEVELS.VERBOSE).toBeDefined(); + expect(LEVELS.DEBUG).toBeDefined(); + expect(LEVELS.INFO).toBeDefined(); + expect(LEVELS.WARN).toBeDefined(); + expect(LEVELS.ERROR).toBeDefined(); + expect(LEVELS.SILENT).toBeDefined(); + }); + + it('should weight the logging levels correctly relative to one another', function() { + expect(LEVELS.VERBOSE).toBeGreaterThan(LEVELS.DEBUG); + expect(LEVELS.DEBUG).toBeGreaterThan(LEVELS.INFO); + expect(LEVELS.INFO).toBeGreaterThan(LEVELS.WARN); + expect(LEVELS.WARN).toBeGreaterThan(LEVELS.ERROR); + expect(LEVELS.ERROR).toBeGreaterThan(LEVELS.SILENT); + }); + }); + + describe('setLevel', function() { + var oldLevel = logger.getLevel(); + + afterEach(function() { + logger.setLevel(oldLevel); + }); + + it('should update the log level', function() { + logger.setLevel(logger.LEVELS.VERBOSE); + expect( logger.getLevel() ).toBe(logger.LEVELS.VERBOSE); + }); + }); + + describe('verbose', function() { + var methodName = 'verbose'; + + it('should cause the logger to emit the correct event', function() { + eventIsEmitted(methodName); + }); + + it('should pass its arguments to listeners', function() { + eventGetsArguments(methodName); + }); + }); + + describe('warn', function() { + var methodName = 'warn'; + + it('should cause the logger to emit the correct event', function() { + eventIsEmitted(methodName); + }); + + it('should pass its arguments to listeners', function() { + eventGetsArguments(methodName); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/util/markdown.js b/third_party/jsdoc/test/specs/jsdoc/util/markdown.js new file mode 100644 index 0000000000..70062ed60b --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/util/markdown.js @@ -0,0 +1,101 @@ +/*global afterEach, describe, env, expect, it, spyOn */ +'use strict'; + +describe('jsdoc/util/markdown', function() { + var markdown = require('jsdoc/util/markdown'); + + it('should exist', function() { + expect(markdown).toBeDefined(); + expect(typeof markdown).toEqual('object'); + }); + + it('should export a "getParser" function', function() { + expect(markdown.getParser).toBeDefined(); + expect(typeof markdown.getParser).toEqual('function'); + }); + + describe('getParser', function() { + var originalMarkdownConf = env.conf.markdown; + + function setMarkdownConf(hash) { + env.conf.markdown = hash; + } + + afterEach(function() { + env.conf.markdown = originalMarkdownConf; + }); + + it('should retrieve a function when called with default settings', function() { + var storage = setMarkdownConf({}); + + var parser = markdown.getParser(); + expect(typeof parser).toEqual('function'); + + setMarkdownConf({parser: 'marked'}); + parser = markdown.getParser(); + expect(typeof parser).toEqual('function'); + }); + + it('should use the marked parser when evilstreak is requested', function() { + var storage = setMarkdownConf({parser: 'evilstreak'}); + var parser = markdown.getParser(); + expect(parser._parser).toEqual('marked'); + }); + + it('should use the marked parser when requested', function() { + var storage = setMarkdownConf({parser: 'marked'}); + var parser = markdown.getParser(); + expect(parser._parser).toEqual('marked'); + }); + + it('should use the marked parser when GFM is requested', function() { + var storage = setMarkdownConf({parser: 'gfm'}); + var parser = markdown.getParser(); + expect(parser._parser).toEqual('marked'); + }); + + it('should log an error if an unrecognized Markdown parser is requested', function() { + var logger = require('jsdoc/util/logger'); + var parser; + var storage = setMarkdownConf({parser: 'not-a-real-markdown-parser'}); + + spyOn(logger, 'error'); + + parser = markdown.getParser(); + + expect(logger.error).toHaveBeenCalled(); + }); + + it('should not apply formatting to inline tags when the marked parser is enabled', function() { + var storage = setMarkdownConf({parser: 'marked'}); + var parser = markdown.getParser(); + + // get the marked parser and do the test + expect(parser('{@link MyClass#_x} and {@link MyClass#_y}')).toEqual( + '

        {@link MyClass#_x} and {@link MyClass#_y}

        '); + }); + + it('should not automatically convert HTTP/HTTPS URLs to links', function() { + var parser = markdown.getParser(); + + expect(parser('Visit {@link http://usejsdoc.com}.')) + .toBe('

        Visit {@link http://usejsdoc.com}.

        '); + expect(parser('Visit {@link https://google.com}.')) + .toBe('

        Visit {@link https://google.com}.

        '); + }); + + it('should escape characters in code blocks as needed', function() { + var parser = markdown.getParser(); + var markdownText = '' + + '```html\n' + + '

        Sample \'HTML.\'

        \n' + + '```'; + var convertedText = '' + + '
        ' +
        +                '<p><a href="#">Sample \'HTML.\'</a></p>' +
        +                '
        '; + + expect(parser(markdownText)).toBe(convertedText); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/util/runtime.js b/third_party/jsdoc/test/specs/jsdoc/util/runtime.js new file mode 100644 index 0000000000..2efb1a816f --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/util/runtime.js @@ -0,0 +1,62 @@ +/*global describe: true, expect: true, it: true, xit: true */ +describe("jsdoc/util/runtime", function() { + var runtime = require('jsdoc/util/runtime'); + var isRhino; + var isNode; + + it("should exist", function() { + expect(runtime).toBeDefined(); + expect(typeof runtime).toEqual('object'); + }); + + it("should export a 'RHINO' constant", function() { + expect(runtime.RHINO).toBeDefined(); + expect(typeof runtime.RHINO).toEqual('string'); + }); + + it("should export a 'NODE' constant", function() { + expect(runtime.NODE).toBeDefined(); + expect(typeof runtime.NODE).toEqual('string'); + }); + it("should export an 'isRhino' function", function() { + expect(runtime.isRhino).toBeDefined(); + expect(typeof runtime.isRhino).toEqual('function'); + }); + + it("should export an 'isNode' function", function() { + expect(runtime.isNode).toBeDefined(); + expect(typeof runtime.isNode).toEqual('function'); + }); + + describe("isRhino", function() { + isRhino = runtime.isRhino(); + + it("should return a boolean", function() { + expect(typeof isRhino).toEqual('boolean'); + }); + + it("should return the opposite value from isNode()", function() { + if (isNode === undefined) { + isNode = runtime.isNode(); + } + + expect(!isRhino).toBe(isNode); + }); + }); + + describe("isNode", function() { + isNode = runtime.isNode(); + + it("should return a boolean", function() { + expect(typeof isNode).toEqual('boolean'); + }); + + it("should return the opposite value from isRhino()", function() { + if (isRhino === undefined) { + isRhino = runtime.isRhino(); + } + + expect(!isNode).toBe(isRhino); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/jsdoc/util/templateHelper.js b/third_party/jsdoc/test/specs/jsdoc/util/templateHelper.js new file mode 100644 index 0000000000..c4586b1027 --- /dev/null +++ b/third_party/jsdoc/test/specs/jsdoc/util/templateHelper.js @@ -0,0 +1,1473 @@ +/*eslint quotes:0 */ +'use strict'; + +var hasOwnProp = Object.prototype.hasOwnProperty; + +describe("jsdoc/util/templateHelper", function() { + var helper = require('jsdoc/util/templateHelper'); + var doclet = require('jsdoc/doclet'); + var doop = require('jsdoc/util/doop'); + var logger = require('jsdoc/util/logger'); + var resolver = require('jsdoc/tutorial/resolver'); + var taffy = require('taffydb').taffy; + + helper.registerLink('test', 'path/to/test.html'); + + it("should exist", function() { + expect(helper).toBeDefined(); + expect(typeof helper).toBe('object'); + }); + + it("should export a 'setTutorials' function", function() { + expect(helper.setTutorials).toBeDefined(); + expect(typeof helper.setTutorials).toBe("function"); + }); + + it("should export a 'globalName' property", function() { + expect(helper.globalName).toBeDefined(); + expect(typeof helper.globalName).toBe("string"); + }); + + it("should export a 'fileExtension' property", function() { + expect(helper.fileExtension).toBeDefined(); + expect(typeof helper.fileExtension).toBe("string"); + }); + + it("should export a 'scopeToPunc' property", function() { + expect(helper.scopeToPunc).toBeDefined(); + expect(typeof helper.scopeToPunc).toBe("object"); + }); + + it("should export a 'getUniqueFilename' function", function() { + expect(helper.getUniqueFilename).toBeDefined(); + expect(typeof helper.getUniqueFilename).toBe("function"); + }); + + it("should export a 'getUniqueId' function", function() { + expect(helper.getUniqueId).toBeDefined(); + expect(typeof helper.getUniqueId).toBe('function'); + }); + + it("should export a 'longnameToUrl' property", function() { + expect(helper.longnameToUrl).toBeDefined(); + expect(typeof helper.longnameToUrl).toBe("object"); + }); + + it("should export a 'linkto' function", function() { + expect(helper.linkto).toBeDefined(); + expect(typeof helper.linkto).toBe("function"); + }); + + it("should export an 'htmlsafe' function", function() { + expect(helper.htmlsafe).toBeDefined(); + expect(typeof helper.htmlsafe).toBe("function"); + }); + + it("should export a 'find' function", function() { + expect(helper.find).toBeDefined(); + expect(typeof helper.find).toBe("function"); + }); + + it("should export a 'getMembers' function", function() { + expect(helper.getMembers).toBeDefined(); + expect(typeof helper.getMembers).toBe("function"); + }); + + it("should export a 'getAttribs' function", function() { + expect(helper.getAttribs).toBeDefined(); + expect(typeof helper.getAttribs).toBe("function"); + }); + + it("should export a 'getSignatureTypes' function", function() { + expect(helper.getSignatureTypes).toBeDefined(); + expect(typeof helper.getSignatureTypes).toBe("function"); + }); + + it("should export a 'getSignatureParams' function", function() { + expect(helper.getSignatureParams).toBeDefined(); + expect(typeof helper.getSignatureParams).toBe("function"); + }); + + it("should export a 'getSignatureReturns' function", function() { + expect(helper.getSignatureReturns).toBeDefined(); + expect(typeof helper.getSignatureReturns).toBe("function"); + }); + + it("should export a 'getAncestors' function", function() { + expect(helper.getAncestors).toBeDefined(); + expect(typeof helper.getAncestors).toBe('function'); + }); + + it("should export a 'getAncestorLinks' function", function() { + expect(helper.getAncestorLinks).toBeDefined(); + expect(typeof helper.getAncestorLinks).toBe("function"); + }); + + it("should export a 'addEventListeners' function", function() { + expect(helper.addEventListeners).toBeDefined(); + expect(typeof helper.addEventListeners).toBe("function"); + }); + + it("should export a 'prune' function", function() { + expect(helper.prune).toBeDefined(); + expect(typeof helper.prune).toBe("function"); + }); + + it("should export a 'registerLink' function", function() { + expect(helper.registerLink).toBeDefined(); + expect(typeof helper.registerLink).toBe("function"); + }); + + it("should export a 'tutorialToUrl' function", function() { + expect(helper.tutorialToUrl).toBeDefined(); + expect(typeof helper.tutorialToUrl).toBe("function"); + }); + + it("should export a 'toTutorial' function", function() { + expect(helper.toTutorial).toBeDefined(); + expect(typeof helper.toTutorial).toBe("function"); + }); + + it("should export a 'resolveLinks' function", function() { + expect(helper.resolveLinks).toBeDefined(); + expect(typeof helper.resolveLinks).toBe("function"); + }); + + it("should export a 'resolveAuthorLinks' function", function() { + expect(helper.resolveAuthorLinks).toBeDefined(); + expect(typeof helper.resolveAuthorLinks).toBe("function"); + }); + + it("should export a 'createLink' function", function() { + expect(helper.createLink).toBeDefined(); + expect(typeof helper.createLink).toBe("function"); + }); + + it('should export a "longnamesToTree" function', function() { + expect(helper.longnamesToTree).toBeDefined(); + expect(typeof helper.longnamesToTree).toBe('function'); + }); + + describe("setTutorials", function() { + // used in tutorialToUrl, toTutorial. + it("setting tutorials to null causes all tutorial lookups to fail", function() { + // bit of a dodgy test but the best I can manage. setTutorials doesn't do much. + helper.setTutorials(null); + // should throw error: no 'getByName' in tutorials. + expect(function () { return helper.tutorialToUrl('asdf'); }).toThrow(); + }); + + it("setting tutorials to the root tutorial object lets lookups work", function() { + helper.setTutorials(resolver.root); + spyOn(resolver.root, 'getByName'); + helper.tutorialToUrl('asdf'); + + expect(resolver.root.getByName).toHaveBeenCalled(); + }); + }); + + describe("globalName", function() { + it("should equal 'global'", function() { + expect(helper.globalName).toBe('global'); + }); + }); + + describe("fileExtension", function() { + it("should equal '.html'", function() { + expect(helper.fileExtension).toBe('.html'); + }); + }); + + describe("scopeToPunc", function() { + it("should map 'static' to '.', 'inner', to '~', 'instance' to '#'", function() { + expect(helper.scopeToPunc).toEqual({static: '.', inner: '~', instance: '#'}); + }); + }); + + describe("getUniqueFilename", function() { + // TODO: needs more tests for unusual values and things that get special treatment (such as + // inner members) + it('should convert a simple string into the string plus the default extension', function() { + var filename = helper.getUniqueFilename('BackusNaur'); + expect(filename).toBe('BackusNaur.html'); + }); + + it('should replace slashes with underscores', function() { + var filename = helper.getUniqueFilename('tick/tock'); + expect(filename).toBe('tick_tock.html'); + }); + + it('should replace other problematic characters with underscores', function() { + var filename = helper.getUniqueFilename('a very strange \\/?*:|\'"<> filename'); + expect(filename).toBe('a very strange __________ filename.html'); + }); + + it('should not allow a filename to start with an underscore', function() { + expect( helper.getUniqueFilename('') ).toBe('X_.html'); + }); + + it('should not return the same filename twice', function() { + var name = 'polymorphic'; + var filename1 = helper.getUniqueFilename(name); + var filename2 = helper.getUniqueFilename(name); + + expect(filename1).not.toBe(filename2); + }); + + it('should not consider the same name with different letter case to be unique', function() { + var camel = 'myJavaScriptIdentifier'; + var pascal = 'MyJavaScriptIdentifier'; + var filename1 = helper.getUniqueFilename(camel); + var filename2 = helper.getUniqueFilename(pascal); + + expect( filename1.toLowerCase() ).not.toBe( filename2.toLowerCase() ); + }); + + it('should remove variations from the longname before generating the filename', function() { + var filename = helper.getUniqueFilename('MyClass(foo, bar)'); + expect(filename).toBe('MyClass.html'); + }); + }); + + xdescribe('getUniqueId', function() { + // TODO + }); + + describe("longnameToUrl", function() { + it("is an object", function() { + expect(typeof helper.longnameToUrl).toBe('object'); + }); + + it("has an entry added into it by calling registerLink", function() { + helper.registerLink('MySymbol', 'asdf.html'); + expect(helper.longnameToUrl.MySymbol).toBeDefined(); + expect(helper.longnameToUrl.MySymbol).toBe('asdf.html'); + + delete helper.longnameToUrl.MySymbol; + }); + + it("adding an entry to it allows me to link with linkto", function() { + helper.longnameToUrl.foo2 = 'bar.html'; + expect(helper.linkto('foo2')).toBe('foo2'); + delete helper.longnameToUrl.foo2; + }); + }); + + describe("linkto", function() { + beforeEach(function() { + helper.longnameToUrl.linktoTest = 'test.html'; + helper.longnameToUrl.LinktoFakeClass = 'fakeclass.html'; + }); + + afterEach(function() { + delete helper.longnameToUrl.linktoTest; + delete helper.longnameToUrl.LinktoFakeClass; + }); + + it('returns the longname if only the longname is specified and has no URL', function() { + var link = helper.linkto('example'); + expect(link).toBe('example'); + }); + + it('returns the link text if only the link text is specified', function() { + var link = helper.linkto(null, 'link text'); + expect(link).toBe('link text'); + }); + + it('returns the link text if the longname does not have a URL, and both the longname and ' + + 'link text are specified', function() { + var link = helper.linkto('example', 'link text'); + expect(link).toBe('link text'); + }); + + it('uses the longname as the link text if no link text is provided', function() { + var link = helper.linkto('linktoTest'); + expect(link).toBe('linktoTest'); + }); + + it('uses the link text if it is specified', function() { + var link = helper.linkto('linktoTest', 'link text'); + expect(link).toBe('link text'); + }); + + it('includes a "class" attribute in the link if a class is specified', function() { + var link = helper.linkto('linktoTest', 'link text', 'myclass'); + expect(link).toBe('link text'); + }); + + it('is careful with longnames that are reserved words in JS', function() { + // we don't have a registered link for 'constructor' so it should return the text 'link text'. + var link = helper.linkto('constructor', 'link text'); + expect(typeof link).toBe('string'); + expect(link).toBe('link text'); + }); + + it('works correctly with type applications if only the longname is specified', function() { + var link = helper.linkto('Array.'); + expect(link).toBe('Array.<LinktoFakeClass>'); + }); + + it('works correctly with type applications if a class is not specified', function() { + var link = helper.linkto('Array.', 'link text'); + expect(link).toBe('Array.<LinktoFakeClass>'); + }); + + it('works correctly with type applications if a class is specified', function() { + var link = helper.linkto('Array.', 'link text', 'myclass'); + expect(link).toBe('Array.<LinktoFakeClass' + + '>'); + }); + + it('works correctly with type applications that include a type union', function() { + var link = helper.linkto('Array.<(linktoTest|LinktoFakeClass)>', 'link text'); + expect(link).toBe('Array.<(linktoTest|' + + 'LinktoFakeClass)>'); + }); + + it('works correctly with type unions that are not enclosed in parentheses', function() { + var link = helper.linkto('linktoTest|LinktoFakeClass', 'link text'); + expect(link).toBe('(linktoTest|' + + 'LinktoFakeClass)'); + }); + + it('does not try to parse a longname starting with as a type application', + function() { + spyOn(logger, 'error'); + + helper.linkto('~foo'); + expect(logger.error).not.toHaveBeenCalled(); + }); + + it('returns a link when a URL is specified', function() { + var link = helper.linkto('http://example.com'); + expect(link).toBe('http://example.com'); + }); + + it('returns a link if a URL wrapped in angle brackets is specified', function() { + var link = helper.linkto(''); + expect(link).toBe('http://example.com'); + }); + + it('returns a link with link text if a URL and link text are specified', function() { + var link = helper.linkto('http://example.com', 'text'); + expect(link).toBe('text'); + }); + + it('returns a link with a fragment ID if a URL and fragment ID are specified', function() { + var link = helper.linkto('LinktoFakeClass', null, null, 'fragment'); + expect(link).toBe('LinktoFakeClass'); + }); + + it('returns the original text if an inline {@link} tag is specified', function() { + var link; + var text = '{@link Foo}'; + + function getLink() { + link = helper.linkto(text); + } + + // make sure we're not trying to parse the inline link as a type expression + expect(getLink).not.toThrow(); + // linkto doesn't process {@link} tags + expect(link).toBe(text); + }); + }); + + describe("htmlsafe", function() { + it('should convert all occurences of < to <', function() { + var inp = '

        Potentially dangerous.

        ', + out = helper.htmlsafe(inp); + expect(out).toBe('<h1>Potentially dangerous.</h1>'); + }); + + it('should convert all occurrences of & to &', function() { + var input = 'foo && bar & baz;'; + expect( helper.htmlsafe(input) ).toBe('foo && bar & baz;'); + }); + + it('should not double-convert ampersands', function() { + var input = '

        Foo & Friends

        '; + expect( helper.htmlsafe(input) ).toBe('<h1>Foo & Friends</h1>'); + }); + }); + + describe("find", function() { + var array = [ + // match + { number: 2, A: true }, + // match + { number: 1, A: true, D: 'hello', Q: false }, + // match + { number: 3, A: 'maybe', squiggle: '?' }, + // no match (number not in spec) + { number: 4, A: true }, + // no match (missing top-level property) + { A: true } + ]; + var matches = array.slice(0, 3); + var spec = { number: [1, 2, 3], A: [true, 'maybe'] }; + + it('should find the requested items', function() { + expect( helper.find(taffy(array), spec) ).toEqual(matches); + }); + }); + + // we can't use toEqual() because TaffyDB adds its own stuff to the array it returns. + // instead, we make sure arrays a and b are the same length, and that each object in + // array b has all the properties of the corresponding object in array a + // used for getMembers and prune tests. + function compareObjectArrays(a, b) { + expect(a.length).toEqual(b.length); + + for (var i = 0, l = a.length; i < l; i++) { + for (var prop in a[i]) { + if ( hasOwnProp.call(a[i], prop) ) { + expect(b[i][prop]).toBeDefined(); + expect(a[i][prop]).toEqual(b[i][prop]); + } + } + } + } + describe("getMembers", function() { + // instead parse a file from fixtures and verify it? + var classes = [ + {kind: 'class'}, // global + {kind: 'class', memberof: 'SomeNamespace'} // not global + ]; + var externals = [ + {kind: 'external', name: 'foo'} + ]; + var events = [ + {kind: 'event'} + ]; + var mixins = [ + {kind: 'mixin'} + ]; + var modules = [ + {kind: 'module'} + ]; + var namespaces = [ + {kind: 'namespace'} + ]; + var miscGlobal = [ + {kind: 'function'}, + {kind: 'member'}, + {kind: 'constant'}, + {kind: 'typedef'} + ]; + var miscNonGlobal = [ + {kind: 'constant', memberof: 'module:one/two'}, + {kind: 'function', name: 'module:foo', longname: 'module:foo'}, + {kind: 'member', name: 'module:bar', longname: 'module:bar'} + ]; + var misc = miscGlobal.concat(miscNonGlobal); + var array = classes.concat(externals.concat(events.concat(mixins.concat(modules.concat(namespaces.concat(misc)))))); + var data = taffy(array); + var members = helper.getMembers(data); + + // check the output object has properties as expected. + it("should have a 'classes' property", function() { + expect(members.classes).toBeDefined(); + }); + + it("should have a 'externals' property", function() { + expect(members.externals).toBeDefined(); + }); + + it("should have a 'events' property", function() { + expect(members.events).toBeDefined(); + }); + + it("should have a 'globals' property", function() { + expect(members.globals).toBeDefined(); + }); + + it("should have a 'mixins' property", function() { + expect(members.mixins).toBeDefined(); + }); + + it("should have a 'modules' property", function() { + expect(members.modules).toBeDefined(); + }); + + it("should have a 'namespaces' property", function() { + expect(members.namespaces).toBeDefined(); + }); + + // check that things were found properly. + it("classes are detected", function() { + compareObjectArrays(classes, members.classes); + }); + + it("externals are detected", function() { + compareObjectArrays(externals, members.externals); + }); + + it("events are detected", function() { + compareObjectArrays(events, members.events); + }); + + it("mixins are detected", function() { + compareObjectArrays(mixins, members.mixins); + }); + + it("modules are detected", function() { + compareObjectArrays(modules, members.modules); + }); + + it("namespaces are detected", function() { + compareObjectArrays(namespaces, members.namespaces); + }); + + it("globals are detected", function() { + compareObjectArrays(miscGlobal, members.globals); + }); + }); + + describe("getAttribs", function() { + var doc, attribs; + + it('should return an array of strings', function() { + doc = new doclet.Doclet('/** ljklajsdf */', {}); + attribs = helper.getAttribs(doc); + expect(Array.isArray(attribs)).toBe(true); + }); + + // tests is an object of test[doclet src] = + // if false, we expect attribs to either not contain anything in whatNotToContain, + // or be empty (if whatNotToContain was not provided). + function doTests(tests, whatNotToContain) { + for (var src in tests) { + if (tests.hasOwnProperty(src)) { + doc = new doclet.Doclet('/** ' + src + ' */', {}); + attribs = helper.getAttribs(doc); + if (tests[src]) { + expect(attribs).toContain(tests[src]); + } else { + if (Array.isArray(whatNotToContain)) { + for (var i = 0; i < whatNotToContain.length; ++i) { + expect(attribs).not.toContain(whatNotToContain[i]); + } + } else { + expect(attribs.length).toBe(0); + } + } + } + } + } + + it('should detect if a doclet is virtual', function() { + var tests = { + 'My constant. \n @virtual': 'abstract', + 'asdf': false + }; + doTests(tests); + }); + + it("should detect if a doclet's access is not public", function() { + var tests = {'@private': 'private', + '@access private': 'private', + '@protected': 'protected', + '@access protected': 'protected', + '@public': false, + '@access public': false, + 'asdf': false + }; + doTests(tests); + }); + + it("should detect if a doclet's scope is inner or static AND it is a function or member or constant", function() { + var tests = { + // by default these are members + '@inner': 'inner', + '@instance': false, + '@global': false, + '@static': 'static', + '@name Asdf.fdsa': 'static', + '@name Outer~inner': 'inner', + '@name Fdsa#asdf': false, + '@name .log': false, + // some tests with functions and constants + '@const Asdf#FOO': false, + '@const Asdf\n@inner': 'inner', + '@function Asdf#myFunction': false, + '@function Fdsa.MyFunction': 'static', + '@function Fdsa': false, + // these are not functions or members or constants, they should not have their scope recorded. + '@namespace Fdsa\n@inner': false, + '@class asdf': false + }; + doTests(tests, ['inner', 'static', 'global', 'instance']); + }); + + it("should detect if a doclet is readonly (and its kind is 'member')", function() { + var tests = { + 'asdf\n @readonly': 'readonly', + 'asdf': false, + '@name Fdsa#foo\n@readonly': 'readonly', + // kind is not 'member'. + '@const asdf\n@readonly': 'constant', + '@function asdf\n@readonly': false, + '@function Asdf#bar\n@readonly': false + }; + doTests(tests, 'readonly'); + }); + + it("should detect if the doclet is a for constant", function() { + var tests = { + 'Enum. @enum\n@constant': 'constant', + '@function Foo#BAR\n@const': 'constant', + '@const Asdf': 'constant' + }; + doTests(tests, 'constant'); + }); + + it("should detect multiple attributes", function() { + var doc = new doclet.Doclet('/** @const module:fdsa~FOO\n@readonly\n@private */', {}); + attribs = helper.getAttribs(doc); + expect(attribs).toContain('private'); + //expect(attribs).toContain('readonly'); // kind is 'constant' not 'member'. + expect(attribs).toContain('constant'); + expect(attribs).toContain('inner'); + }); + + it('should return an empty array for null values', function() { + var emptyAttribs; + + function attribs() { + return helper.getAttribs(); + } + + expect(attribs).not.toThrow(); + + emptyAttribs = attribs(); + expect( Array.isArray(emptyAttribs) ).toBe(true); + expect(emptyAttribs.length).toBe(0); + }); + }); + + describe("getSignatureTypes", function() { + // returns links to allowed types for a doclet. + it("returns an empty array if the doclet has no specified type", function() { + var doc = new doclet.Doclet('/** @const ASDF */', {}), + types = helper.getSignatureTypes(doc); + + expect(Array.isArray(types)).toBe(true); + expect(types.length).toBe(0); + }); + + it("returns a string array of the doclet's types", function() { + var doc = new doclet.Doclet('/** @const {number|Array.} ASDF */', {}), + types = helper.getSignatureTypes(doc); + + expect(types.length).toBe(2); + expect(types).toContain('number'); + expect(types).toContain(helper.htmlsafe('Array.')); // should be HTML safe + }); + + it("creates links for types if relevant", function() { + // make some links. + helper.longnameToUrl.MyClass = 'MyClass.html'; + + var doc = new doclet.Doclet('/** @const {MyClass} ASDF */', {}), + types = helper.getSignatureTypes(doc); + expect(types.length).toBe(1); + expect(types).toContain('MyClass'); + + delete helper.longnameToUrl.MyClass; + }); + + it("uses the cssClass parameter for links if it is provided", function() { + // make some links. + helper.longnameToUrl.MyClass = 'MyClass.html'; + + var doc = new doclet.Doclet('/** @const {MyClass} ASDF */', {}), + types = helper.getSignatureTypes(doc, 'myCSSClass'); + expect(types.length).toBe(1); + expect(types).toContain('MyClass'); + + delete helper.longnameToUrl.MyClass; + }); + }); + + describe("getSignatureParams", function() { + // retrieves parameter names. + // if css class is provided, optional parameters are wrapped in a with that class. + it("returns an empty array if the doclet has no specified type", function() { + var doc = new doclet.Doclet('/** @function myFunction */', {}), + params = helper.getSignatureParams(doc); + expect(Array.isArray(params)).toBe(true); + expect(params.length).toBe(0); + }); + + it("returns a string array of the doclet's parameter names", function() { + var doc = new doclet.Doclet('/** @function myFunction\n @param {string} foo - asdf. */', {}), + params = helper.getSignatureParams(doc); + expect(params.length).toBe(1); + expect(params).toContain('foo'); + }); + + it("wraps optional parameters in if optClass is provided", function() { + var doc = new doclet.Doclet( + '/** @function myFunction\n' + + ' * @param {boolean} foo - explanation.\n' + + ' * @param {number} [bar=1] - another explanation.\n' + + ' * @param {string} [baz] - another explanation.\n' + + ' */', {}), + params = helper.getSignatureParams(doc, 'cssClass'); + + expect(params.length).toBe(3); + expect(params).toContain('foo'); + expect(params).toContain('bar'); + expect(params).toContain('baz'); + }); + + it("doesn't wrap optional parameters in if optClass is not provided", function() { + var doc = new doclet.Doclet( + '/** @function myFunction\n' + + ' * @param {boolean} foo - explanation.\n' + + ' * @param {number} [bar=1] - another explanation.\n' + + ' * @param {string} [baz] - another explanation.\n' + + ' */', {}), + params = helper.getSignatureParams(doc); + + expect(params.length).toBe(3); + expect(params).toContain('foo'); + expect(params).toContain('bar'); + expect(params).toContain('baz'); + }); + }); + + describe("getSignatureReturns", function() { + // retrieves links to types that the member can return. + + it("returns a value with correctly escaped HTML", function() { + var mockDoclet = { + returns: [ + { + type: { + names: [ + 'Array.' + ] + } + } + ] + }; + + var html = helper.getSignatureReturns(mockDoclet); + expect(html).not.toContain('Array.'); + expect(html).toContain('Array.<string>'); + }); + + it("returns an empty array if the doclet has no returns", function() { + var doc = new doclet.Doclet('/** @function myFunction */', {}), + returns = helper.getSignatureReturns(doc); + + expect(Array.isArray(returns)).toBe(true); + expect(returns.length).toBe(0); + }); + + it("returns an empty array if the doclet has @returns but with no type", function() { + var doc = new doclet.Doclet('/** @function myFunction\n@returns an interesting result.*/', {}), + returns = helper.getSignatureReturns(doc); + + expect(Array.isArray(returns)).toBe(true); + expect(returns.length).toBe(0); + }); + + it("creates links for return types if relevant", function() { + // make some links. + helper.longnameToUrl.MyClass = 'MyClass.html'; + + var doc = new doclet.Doclet('/** @function myFunction\n@returns {number|MyClass} an interesting result.*/', {}), + returns = helper.getSignatureReturns(doc); + + expect(returns.length).toBe(2); + expect(returns).toContain('MyClass'); + expect(returns).toContain('number'); + + delete helper.longnameToUrl.MyClass; + }); + + it("uses the cssClass parameter for links if it is provided", function() { + // make some links. + helper.longnameToUrl.MyClass = 'MyClass.html'; + + var doc = new doclet.Doclet('/** @function myFunction\n@returns {number|MyClass} an interesting result.*/', {}), + returns = helper.getSignatureReturns(doc, 'myCssClass'); + + expect(returns.length).toBe(2); + expect(returns).toContain('MyClass'); + expect(returns).toContain('number'); + + delete helper.longnameToUrl.MyClass; + }); + }); + + xdescribe('getAncestors', function() { + // TODO + }); + + describe("getAncestorLinks", function() { + // make a hierarchy. + var lackeys = new doclet.Doclet('/** @member lackeys\n@memberof module:mafia/gangs.Sharks~Henchman\n@instance*/', {}), + henchman = new doclet.Doclet('/** @class Henchman\n@memberof module:mafia/gangs.Sharks\n@inner */', {}), + gang = new doclet.Doclet('/** @namespace module:mafia/gangs.Sharks */', {}), + mafia = new doclet.Doclet('/** @module mafia/gangs */', {}), + data = taffy([lackeys, henchman, gang, mafia]); + + // register some links + it("returns an empty array if there are no ancestors", function() { + var links = helper.getAncestorLinks(data, mafia); + expect(Array.isArray(links)).toBe(true); + expect(links.length).toBe(0); + }); + + it("returns an array of ancestor names (with preceding punctuation) if there are ancestors, the direct ancestor with following punctuation too", function() { + var links = helper.getAncestorLinks(data, lackeys); + expect(links.length).toBe(3); + expect(links).toContain('~Henchman#'); + expect(links).toContain('.Sharks'); + expect(links).toContain('mafia/gangs'); + + links = helper.getAncestorLinks(data, henchman); + expect(links.length).toBe(2); + expect(links).toContain('.Sharks~'); + expect(links).toContain('mafia/gangs'); + + links = helper.getAncestorLinks(data, gang); + expect(links.length).toBe(1); + expect(links).toContain('mafia/gangs.'); + }); + + it("adds links if they exist", function() { + // register some links + helper.longnameToUrl['module:mafia/gangs'] = 'mafia_gangs.html'; + helper.longnameToUrl['module:mafia/gangs.Sharks~Henchman'] = 'henchman.html'; + + var links = helper.getAncestorLinks(data, lackeys); + expect(links.length).toBe(3); + expect(links).toContain('~Henchman#'); + expect(links).toContain('.Sharks'); + expect(links).toContain('mafia/gangs'); + + delete helper.longnameToUrl['module:mafia/gangs']; + delete helper.longnameToUrl['module:mafia/gangs.Sharks~Henchman']; + }); + + it("adds cssClass to any link", function() { + // register some links + helper.longnameToUrl['module:mafia/gangs'] = 'mafia_gangs.html'; + helper.longnameToUrl['module:mafia/gangs.Sharks~Henchman'] = 'henchman.html'; + + var links = helper.getAncestorLinks(data, lackeys, 'myClass'); + expect(links.length).toBe(3); + expect(links).toContain('~Henchman#'); + expect(links).toContain('.Sharks'); + expect(links).toContain('mafia/gangs'); + + delete helper.longnameToUrl['module:mafia/gangs']; + delete helper.longnameToUrl['module:mafia/gangs.Sharks~Henchman']; + }); + }); + + describe("addEventListeners", function() { + var doclets = ( taffy(doop(jasmine.getDocSetFromFile('test/fixtures/listenstag.js').doclets)) ), + ev = helper.find(doclets, {longname: 'module:myModule.event:MyEvent'})[0], + ev2 = helper.find(doclets, {longname: 'module:myModule~Events.event:Event2'})[0], + ev3 = helper.find(doclets, {longname: 'module:myModule#event:Event3'})[0]; + + helper.addEventListeners(doclets); + + it("adds a 'listeners' array to events with the longnames of the listeners", function() { + expect(Array.isArray(ev.listeners)).toBe(true); + expect(Array.isArray(ev2.listeners)).toBe(true); + + expect(ev.listeners.length).toBe(2); + expect(ev.listeners).toContain('module:myModule~MyHandler'); + expect(ev.listeners).toContain('module:myModule~AnotherHandler'); + + expect(ev2.listeners.length).toBe(1); + expect(ev2.listeners).toContain('module:myModule~MyHandler'); + }); + + it("does not add listeners for events with no listeners", function() { + expect(ev3.listeners).not.toBeDefined(); + }); + + it("does not make spurious doclets if something @listens to a non-existent symbol", function() { + expect(helper.find(doclets, {longname: 'event:fakeEvent'}).length).toBe(0); + }); + }); + + describe("prune", function() { + var priv = !!env.opts.private; + + afterEach(function() { + env.opts.private = priv; + }); + + var array = [ + // keep + {undocumented: false}, + // keep + {ignore: false}, + // keep + {memberof: 'SomeClass'}, + // prune + {undocumented: true}, + // prune + {ignore: true}, + // prune + {memberof: ''} + ]; + var arrayPrivate = [ + // prune (unless env.opts.private is truthy) + {access: 'private'} + ]; + var keep = array.slice(0, 3); + + it('should prune the correct members', function() { + var pruned = helper.prune( taffy(array) )().get(); + compareObjectArrays(keep, pruned); + }); + + it('should prune private members if env.opts.private is falsy', function() { + var pruned; + + env.opts.private = false; + pruned = helper.prune( taffy(arrayPrivate) )().get(); + compareObjectArrays([], pruned); + }); + + it('should not prune private members if env.opts.private is truthy', function() { + var pruned; + + env.opts.private = true; + pruned = helper.prune( taffy(arrayPrivate) )().get(); + compareObjectArrays(arrayPrivate, pruned); + }); + }); + + describe("registerLink", function() { + it("adds an entry to exports.longnameToUrl", function() { + helper.longnameToUrl.MySymbol = 'asdf.html'; + + expect(helper.longnameToUrl.MySymbol).toBeDefined(); + expect(helper.longnameToUrl.MySymbol).toBe('asdf.html'); + + delete helper.longnameToUrl.MySymbol; + }); + + it("allows linkto to work", function() { + helper.registerLink('MySymbol', 'asdf.html'); + + expect(helper.linkto('MySymbol')).toBe('MySymbol'); + + delete helper.longnameToUrl.MySymbol; + }); + }); + + describe("tutorialToUrl", function() { + function missingTutorial() { + var url = helper.tutorialToUrl("be-a-perfect-person-in-just-three-days"); + } + + beforeEach(function() { + spyOn(logger, 'error'); + helper.setTutorials(resolver.root); + }); + + afterEach(function() { + helper.setTutorials(null); + }); + + it('logs an error if the tutorial is missing', function() { + helper.tutorialToUrl('be-a-perfect-person-in-just-three-days'); + + expect(logger.error).toHaveBeenCalled(); + }); + + it("logs an error if the tutorial's name is a reserved JS keyword and it doesn't exist", function() { + helper.tutorialToUrl('prototype'); + + expect(logger.error).toHaveBeenCalled(); + }); + + it("creates links to tutorials if they exist", function() { + // load the tutorials we already have for the tutorials tests + resolver.load(env.dirname + "/test/tutorials/tutorials"); + resolver.resolve(); + + var url = helper.tutorialToUrl('test'); + expect(typeof url).toBe('string'); + expect(url).toBe('tutorial-test.html'); + }); + + it("creates links for tutorials where the name is a reserved JS keyword", function() { + var url = helper.tutorialToUrl('constructor'); + expect(typeof url).toBe('string'); + expect(url).toBe('tutorial-constructor.html'); + }); + + it("returns the same link if called multiple times on the same tutorial", function() { + expect(helper.tutorialToUrl('test2')).toBe(helper.tutorialToUrl('test2')); + }); + }); + + describe("toTutorial", function() { + beforeEach(function () { + spyOn(logger, 'error'); + helper.setTutorials(resolver.root); + }); + + afterEach(function() { + helper.setTutorials(null); + }); + + it('logs an error if the first param is missing', function() { + helper.toTutorial(); + + expect(logger.error).toHaveBeenCalled(); + }); + + // missing tutorials + it("returns the tutorial name if it's missing and no missingOpts is provided", function() { + helper.setTutorials(resolver.root); + var link = helper.toTutorial('qwerty'); + expect(link).toBe('qwerty'); + }); + + it("returns the tutorial name wrapped in missingOpts.tag if provided and the tutorial is missing", function() { + var link = helper.toTutorial('qwerty', 'lkjklqwerty', {tag: 'span'}); + expect(link).toBe('qwerty'); + }); + + it("returns the tutorial name wrapped in missingOpts.tag with class missingOpts.classname if provided and the tutorial is missing", function() { + var link = helper.toTutorial('qwerty', 'lkjklqwerty', {classname: 'missing'}); + expect(link).toBe('qwerty'); + + link = helper.toTutorial('qwerty', 'lkjklqwerty', {tag: 'span', classname: 'missing'}); + expect(link).toBe('qwerty'); + }); + + it("prefixes the tutorial name with missingOpts.prefix if provided and the tutorial is missing", function() { + var link = helper.toTutorial('qwerty', 'lkjklqwerty', {tag: 'span', classname: 'missing', prefix: 'TODO-'}); + expect(link).toBe('TODO-qwerty'); + + link = helper.toTutorial('qwerty', 'lkjklqwerty', {prefix: 'TODO-'}); + expect(link).toBe('TODO-qwerty'); + + link = helper.toTutorial('qwerty', 'lkjklqwerty', {prefix: 'TODO-', classname: 'missing'}); + expect(link).toBe('TODO-qwerty'); + }); + + // now we do non-missing tutorials. + it("returns a link to the tutorial if not missing", function() { + // load the tutorials we already have for the tutorials tests + resolver.load(env.dirname + "/test/tutorials/tutorials"); + resolver.resolve(); + + var link = helper.toTutorial('constructor', 'The Constructor tutorial'); + expect(link).toBe('The Constructor tutorial'); + }); + + it("uses the tutorial's title for the link text if no content parameter is provided", function() { + var link = helper.toTutorial('test'); + expect(link).toBe('Test tutorial'); + }); + + it("does not apply any of missingOpts if the tutorial was found", function() { + var link = helper.toTutorial('test', '', {tag: 'span', classname: 'missing', prefix: 'TODO-'}); + expect(link).toBe('Test tutorial'); + }); + }); + + // couple of convenience functions letting me set conf variables and restore + // them back to the originals later. + function setConfTemplatesVariables(hash) { + var keys = Object.keys(hash); + var storage = {}; + for (var i = 0; i < keys.length; ++i) { + storage[keys[i]] = env.conf.templates[keys[i]]; + // works because hash[key] is a scalar not an array/object + env.conf.templates[keys[i]] = hash[keys[i]]; + } + return storage; + } + + function restoreConfTemplates(storage) { + var keys = Object.keys(storage); + for (var i = 0; i < keys.length; ++i) { + env.conf.templates[keys[i]] = storage[keys[i]]; + } + } + + describe("resolveLinks", function() { + it('should translate {@link test} into a HTML link.', function() { + var input = 'This is a {@link test}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is a test.'); + }); + + it('should translate {@link unknown} into a simple text.', function() { + var input = 'This is a {@link unknown}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is a unknown.'); + }); + + it('should translate {@link test} into a HTML links multiple times.', function() { + var input = 'This is a {@link test} and {@link test}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is a test and test.'); + }); + + it('should translate [hello there]{@link test} into a HTML link with the custom content.', function() { + var input = 'This is a [hello there]{@link test}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is a hello there.'); + }); + + it('should translate [dummy text] and [hello there]{@link test} into an HTML link with the custom content.', function() { + var input = 'This is [dummy text] and [hello there]{@link test}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is [dummy text] and hello there.'); + }); + + it('should translate [dummy text] and [more] and [hello there]{@link test} into an HTML link with the custom content.', function() { + var input = 'This is [dummy text] and [more] and [hello there]{@link test}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is [dummy text] and [more] and hello there.'); + }); + + it('should ignore [hello there].', function() { + var input = 'This is a [hello there].', + output = helper.resolveLinks(input); + + expect(output).toBe(input); + }); + + it('should translate http links in the tag', function() { + var input = 'Link to {@link http://github.com}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to http://github.com'); + }); + + it('should translate ftp links in the tag', function() { + var input = 'Link to {@link ftp://foo.bar}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to ftp://foo.bar'); + }); + + it('should allow pipe to be used as delimiter between href and text (external link)', function() { + var input = 'Link to {@link http://github.com|Github}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to Github'); + }); + + it('should allow pipe to be used as delimiter between href and text (symbol link)', function() { + var input = 'Link to {@link test|Test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to Test'); + }); + + it('should allow first space to be used as delimiter between href and text (external link)', function() { + var input = 'Link to {@link http://github.com Github}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to Github'); + }); + + it('should allow first space to be used as delimiter between href and text (symbol link)', function() { + var input = 'Link to {@link test My Caption}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to My Caption'); + }); + + it('if pipe and space are present in link tag, use pipe as the delimiter', function() { + var input = 'Link to {@link test|My Caption}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to My Caption'); + }); + + it('Test of {@linkcode } which should be in monospace', function() { + var input = 'Link to {@linkcode test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test'); + }); + + it('Test of {@linkplain } which should be in normal font', function() { + var input = 'Link to {@linkplain test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test'); + }); + + it('should be careful with linking to links whose names are reserved JS keywords', function() { + var input = 'Link to {@link constructor}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to constructor'); + }); + + it('should allow linebreaks between link tag and content', function() { + var input = 'This is a {@link\ntest}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is a test.'); + }); + + it('should allow linebreaks to separate url from link text', function() { + var input = 'This is a {@link\ntest\ntest}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is a test.'); + }); + + it('should normalize additional newlines to spaces', function() { + var input = 'This is a {@link\ntest\ntest\n\ntest}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is a test test.'); + }); + + it('should allow tabs between link tag and content', function() { + var input = 'This is a {@link\ttest}.', + output = helper.resolveLinks(input); + + expect(output).toBe('This is a test.'); + }); + + // conf.monospaceLinks. check that + // a) it works + it('if conf.monospaceLinks is true, all {@link} should be monospace', function () { + var storage = setConfTemplatesVariables({monospaceLinks: true}); + var input = 'Link to {@link test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test'); + restoreConfTemplates(storage); + }); + + // b) linkcode and linkplain are still respected + it('if conf.monospaceLinks is true, all {@linkcode} should still be monospace', function () { + var storage = setConfTemplatesVariables({monospaceLinks: true}); + var input = 'Link to {@linkcode test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test'); + restoreConfTemplates(storage); + }); + + it('if conf.monospaceLinks is true, all {@linkplain} should still be plain', function () { + var storage = setConfTemplatesVariables({monospaceLinks: true}); + var input = 'Link to {@linkplain test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test'); + restoreConfTemplates(storage); + }); + + // conf.cleverLinks. check that + // a) it works + it('if conf.cleverLinks is true, {@link symbol} should be in monospace', function () { + var storage = setConfTemplatesVariables({cleverLinks: true}); + var input = 'Link to {@link test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test'); + restoreConfTemplates(storage); + }); + + it('if conf.cleverLinks is true, {@link URL} should be in plain text', function () { + var storage = setConfTemplatesVariables({cleverLinks: true}); + var input = 'Link to {@link http://github.com}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to http://github.com'); + restoreConfTemplates(storage); + }); + + // b) linkcode and linkplain are still respected + it('if conf.cleverLinks is true, all {@linkcode} should still be clever', function () { + var storage = setConfTemplatesVariables({cleverLinks: true}); + var input = 'Link to {@linkcode test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test'); + restoreConfTemplates(storage); + }); + + it('if conf.cleverLinks is true, all {@linkplain} should still be plain', function () { + var storage = setConfTemplatesVariables({cleverLinks: true}); + var input = 'Link to {@linkplain test}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test'); + restoreConfTemplates(storage); + }); + + // c) if monospaceLinks is additionally `true` it is ignored in favour + // of cleverLinks + it('if conf.cleverLinks is true and so is conf.monospaceLinks, cleverLinks overrides', function () { + var storage = setConfTemplatesVariables({cleverLinks: true, monospaceLinks: true}); + var input = 'Link to {@link test} and {@link http://github.com}', + output = helper.resolveLinks(input); + expect(output).toBe('Link to test and http://github.com'); + restoreConfTemplates(storage); + }); + + }); + + describe("createLink", function() { + it('should create a url for a simple global.', function() { + var mockDoclet = { + kind: 'function', + longname: 'foo', + name: 'foo' + }, + url = helper.createLink(mockDoclet); + + expect(url).toBe('global.html#foo'); + }); + + it('should create a url for a namespace.', function() { + var mockDoclet = { + kind: 'namespace', + longname: 'foo', + name: 'foo' + }, + url = helper.createLink(mockDoclet); + + expect(url).toBe('foo.html'); + }); + + it('should create a url for a member of a namespace.', function() { + var mockDoclet = { + kind: 'function', + longname: 'ns.foo', + name: 'foo', + memberof: 'ns' + }, + url = helper.createLink(mockDoclet); + + expect(url).toBe('ns.html#foo'); + }); + + var nestedNamespaceDoclet = { + kind: 'function', + longname: 'ns1.ns2.foo', + name: 'foo', + memberof: 'ns1.ns2' + }; + var nestedNamespaceUrl; + + it('should create a url for a member of a nested namespace.', function() { + nestedNamespaceUrl = helper.createLink(nestedNamespaceDoclet); + + expect(nestedNamespaceUrl).toBe('ns1.ns2.html#foo'); + }); + + it('should return the same value when called twice with the same doclet.', function() { + var newUrl = helper.createLink(nestedNamespaceDoclet); + expect(newUrl).toBe(nestedNamespaceUrl); + }); + + it('should create a url for a name with invalid characters.', function() { + var mockDoclet = { + kind: 'function', + longname: 'ns1."!"."*foo"', + name: '"*foo"', + memberof: 'ns1."!"' + }, + url = helper.createLink(mockDoclet); + + expect(url).toEqual('ns1._!_.html#%22*foo%22'); + }); + + it('should create a url for a function that is the only symbol exported by a module.', + function() { + var mockDoclet = { + kind: 'function', + longname: 'module:bar', + name: 'module:bar' + }; + var url = helper.createLink(mockDoclet); + + expect(url).toEqual('module-bar.html'); + }); + + it('should create a url for a doclet with the wrong kind (caused by incorrect JSDoc tags', function() { + var moduleDoclet = { + kind: 'module', + longname: 'module:baz', + name: 'module:baz' + }; + var badDoclet = { + kind: 'member', + longname: 'module:baz', + name: 'module:baz' + }; + + var moduleDocletUrl = helper.createLink(moduleDoclet); + var badDocletUrl = helper.createLink(badDoclet); + + expect(moduleDocletUrl).toBe('module-baz.html'); + expect(badDocletUrl).toBe('module-baz.html'); + }); + + it('should create a url for a function that is a member of a doclet with the wrong kind', function() { + var badModuleDoclet = { + kind: 'member', + longname: 'module:qux', + name: 'module:qux' + }; + var memberDoclet = { + kind: 'function', + name: 'frozzle', + memberof: 'module:qux', + scope: 'instance', + longname: 'module:qux#frozzle' + }; + + var badModuleDocletUrl = helper.createLink(badModuleDoclet); + var memberDocletUrl = helper.createLink(memberDoclet); + + expect(badModuleDocletUrl).toBe('module-qux.html'); + expect(memberDocletUrl).toBe('module-qux.html#frozzle'); + }); + + it('should create a url for an empty package definition', function() { + var packageDoclet = { + kind: 'package', + name: undefined, + longname: 'package:undefined' + }; + + var packageDocletUrl = helper.createLink(packageDoclet); + + expect(packageDocletUrl).toBe('global.html'); + }); + }); + + describe("resolveAuthorLinks", function() { + // convert Jane Doe to a mailto link. + it('should convert email addresses in angle brackets *after* a name to mailto links', function() { + var str = ' John Doe ', + out = helper.resolveAuthorLinks(str); + expect(out).toBe('John Doe'); + }); + + it('should HTML-safe author names', function() { + var str = ' John ', + out = helper.resolveAuthorLinks(str); + expect(out).toBe('' + helper.htmlsafe('John'); + }); + + it('should simply return the input string, HTML-safe, if no email is detected', function() { + var str = 'John Doe ', + out = helper.resolveAuthorLinks(str); + expect(out).toBe(helper.htmlsafe(str)); + }); + }); + + xdescribe('longnamesToTree', function() { + // TODO + }); +}); diff --git a/third_party/jsdoc/test/specs/plugins/plugins.js b/third_party/jsdoc/test/specs/plugins/plugins.js new file mode 100644 index 0000000000..82eb3e37c0 --- /dev/null +++ b/third_party/jsdoc/test/specs/plugins/plugins.js @@ -0,0 +1,57 @@ +/*global afterEach: true, app: true, beforeEach: true, describe: true, env: true, expect: true, +it: true, jasmine: true */ +// TODO: consolidate with specs/jsdoc/parser and specs/jsdoc/plugins +describe("plugins", function() { + var path = require('jsdoc/path'); + + var docSet; + + var pluginPaths = [ + path.normalize(env.dirname + '/test/fixtures/testPlugin1'), + path.normalize(env.dirname + '/test/fixtures/testPlugin2') + ]; + + // TODO: decouple this from the global parser + app.jsdoc.parser = jasmine.createParser(); + + global.jsdocPluginsTest = global.jsdocPluginsTest || {}; + + require('jsdoc/plugins').installPlugins(pluginPaths, app.jsdoc.parser); + + docSet = jasmine.getDocSetFromFile('test/fixtures/plugins.js', app.jsdoc.parser, false); + + it("should fire the plugin's event handlers", function() { + expect(global.jsdocPluginsTest.plugin1.fileBegin).toBeDefined(); + expect(global.jsdocPluginsTest.plugin1.fileBegin).toEqual(true); + expect(global.jsdocPluginsTest.plugin1.beforeParse).toBeDefined(); + expect(global.jsdocPluginsTest.plugin1.beforeParse).toEqual(true); + expect(global.jsdocPluginsTest.plugin1.jsdocCommentFound).toBeDefined(); + expect(global.jsdocPluginsTest.plugin1.jsdocCommentFound).toEqual(true); + expect(global.jsdocPluginsTest.plugin1.symbolFound).toBeDefined(); + expect(global.jsdocPluginsTest.plugin1.symbolFound).toEqual(true); + expect(global.jsdocPluginsTest.plugin1.newDoclet).toBeDefined(); + expect(global.jsdocPluginsTest.plugin1.newDoclet).toEqual(true); + expect(global.jsdocPluginsTest.plugin1.fileComplete).toBeDefined(); + expect(global.jsdocPluginsTest.plugin1.fileComplete).toEqual(true); + + expect(global.jsdocPluginsTest.plugin2.fileBegin).toBeDefined(); + expect(global.jsdocPluginsTest.plugin2.fileBegin).toEqual(true); + expect(global.jsdocPluginsTest.plugin2.beforeParse).toBeDefined(); + expect(global.jsdocPluginsTest.plugin2.beforeParse).toEqual(true); + expect(global.jsdocPluginsTest.plugin2.jsdocCommentFound).toBeDefined(); + expect(global.jsdocPluginsTest.plugin2.jsdocCommentFound).toEqual(true); + expect(global.jsdocPluginsTest.plugin2.symbolFound).toBeDefined(); + expect(global.jsdocPluginsTest.plugin2.symbolFound).toEqual(true); + expect(global.jsdocPluginsTest.plugin2.newDoclet).toBeDefined(); + expect(global.jsdocPluginsTest.plugin2.newDoclet).toEqual(true); + expect(global.jsdocPluginsTest.plugin2.fileComplete).toBeDefined(); + expect(global.jsdocPluginsTest.plugin2.fileComplete).toEqual(true); + }); + + it("should add the plugin's tag definitions to the dictionary", function() { + var test = docSet.getByLongname("test"); + + expect(test[0].longname).toEqual("test"); + expect(test[0].foo).toEqual(true); + }); +}); diff --git a/third_party/jsdoc/test/specs/rhino/fs.js b/third_party/jsdoc/test/specs/rhino/fs.js new file mode 100644 index 0000000000..3e45a658ea --- /dev/null +++ b/third_party/jsdoc/test/specs/rhino/fs.js @@ -0,0 +1,4 @@ +/*global describe: true */ +describe("fs", function() { + // TODO +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/rhino/os.js b/third_party/jsdoc/test/specs/rhino/os.js new file mode 100644 index 0000000000..653e6b59c5 --- /dev/null +++ b/third_party/jsdoc/test/specs/rhino/os.js @@ -0,0 +1,4 @@ +/*global describe: true */ +describe("os", function() { + // TODO +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/rhino/path.js b/third_party/jsdoc/test/specs/rhino/path.js new file mode 100644 index 0000000000..cf21795dee --- /dev/null +++ b/third_party/jsdoc/test/specs/rhino/path.js @@ -0,0 +1,35 @@ +/*global describe: true, expect: true, it: true */ +describe("path", function() { + // TODO: more tests + var path = require('path'); + + var pathChunks = [ + "foo", + "bar", + "baz", + "qux.html" + ]; + var joinedPath = path.join.apply(this, pathChunks); + + describe("basename", function() { + it("should exist", function() { + expect(path.basename).toBeDefined(); + }); + + it("should be a function", function() { + expect(typeof path.basename).toEqual("function"); + }); + + it("should work correctly without an 'ext' parameter", function() { + expect( path.basename(joinedPath) ).toEqual( pathChunks[pathChunks.length - 1] ); + }); + + it("should work correctly with an 'ext' parameter", function() { + var fn = pathChunks[pathChunks.length - 1], + ext = Array.prototype.slice.call( fn, fn.indexOf(".") ).join(""); + bn = Array.prototype.slice.call( fn, 0, fn.indexOf(".") ).join(""); + + expect( path.basename(joinedPath, ext) ).toEqual(bn); + }); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/rhino/src/parser.js b/third_party/jsdoc/test/specs/rhino/src/parser.js new file mode 100644 index 0000000000..c47a488938 --- /dev/null +++ b/third_party/jsdoc/test/specs/rhino/src/parser.js @@ -0,0 +1,183 @@ +/*global beforeEach: true, describe: true, expect: true, it: true, jasmine: true, spyOn: true */ +describe('rhino/jsdoc/src/parser', function() { + var jsdoc = { + src: { + parser: (function() { + var runtime = require('jsdoc/util/runtime'); + return require( runtime.getModulePath('jsdoc/src/parser') ); + })() + } + }; + + // don't run this spec if we're currently testing another parser + if (jasmine.jsParser !== 'rhino') { + return; + } + + it('should exist', function() { + expect(jsdoc.src.parser).toBeDefined(); + expect(typeof jsdoc.src.parser).toBe('object'); + }); + + it('should export a "Parser" constructor', function() { + expect(jsdoc.src.parser.Parser).toBeDefined(); + expect(typeof jsdoc.src.parser.Parser).toBe('function'); + }); + + describe('Parser', function() { + var parser; + + function newParser() { + parser = jsdoc.src.parser.createParser('rhino'); + } + + newParser(); + + it('should inherit from jsdoc/src/parser', function() { + var parent = require('jsdoc/src/parser').Parser; + expect(parser instanceof parent).toBe(true); + }); + + it('should have an "addNodeVisitor" method', function() { + expect(parser.addNodeVisitor).toBeDefined(); + expect(typeof parser.addNodeVisitor).toBe('function'); + }); + + it('should have a "getNodeVisitors" method', function() { + expect(parser.getNodeVisitors).toBeDefined(); + expect(typeof parser.getNodeVisitors).toBe('function'); + }); + + describe('addNodeVisitor', function() { + function visitorA() {} + function visitorB() {} + + var visitors; + + beforeEach(newParser); + + it('should work with a single Rhino node visitor', function() { + parser.addNodeVisitor(visitorA); + + visitors = parser.getNodeVisitors(); + + expect(visitors.length).toBe(1); + expect(visitors[0]).toBe(visitorA); + }); + + it('should work with multiple Rhino node visitors', function() { + parser.addNodeVisitor(visitorA); + parser.addNodeVisitor(visitorB); + + visitors = parser.getNodeVisitors(); + + expect(visitors.length).toBe(2); + expect(visitors[0]).toBe(visitorA); + expect(visitors[1]).toBe(visitorB); + }); + }); + + describe('getNodeVisitors', function() { + beforeEach(newParser); + + it('should return an empty array by default', function() { + var visitors = parser.getNodeVisitors(); + + expect( Array.isArray(visitors) ).toBe(true); + expect(visitors.length).toBe(0); + }); + + // other functionality is covered by the addNodeVisitors tests + }); + + describe('parse', function() { + beforeEach(newParser); + + var sourceCode = ['javascript:/** foo */var foo;']; + + it('should call Rhino node visitors', function() { + var args; + + var visitor = { + visitNode: function(rhinoNode, e, parser, sourceName) { + if (e && e.code && !args) { + args = Array.prototype.slice.call(arguments); + } + } + }; + + require('jsdoc/src/handlers').attachTo(parser); + parser.addNodeVisitor(visitor); + parser.parse(sourceCode); + + expect(args).toBeDefined(); + expect( Array.isArray(args) ).toBe(true); + expect(args.length).toBe(4); + + // args[0]: Rhino node + expect(args[0].toSource).toBeDefined(); + expect( String(args[0].toSource()) ).toBe('foo'); + + // args[1]: JSDoc event + expect(typeof args[1]).toBe('object'); + expect(args[1].code).toBeDefined(); + expect(args[1].code.name).toBeDefined(); + expect( String(args[1].code.name) ).toBe('foo'); + + // args[2]: parser + expect(typeof args[2]).toBe('object'); + + // args[3]: current source name + expect( String(args[3]) ).toBe('[[string0]]'); + }); + + it('should reflect changes made by Rhino node visitors', function() { + var doclet; + + var visitor = { + visitNode: function(rhinoNode, e, parser, sourceName) { + if (e && e.code && e.code.name === 'foo') { + e.code.name = 'bar'; + } + } + }; + + require('jsdoc/src/handlers').attachTo(parser); + parser.addNodeVisitor(visitor); + parser.parse(sourceCode); + + doclet = parser.results()[0]; + + expect(doclet).toBeDefined(); + expect(typeof doclet).toBe('object'); + expect(doclet.name).toBeDefined(); + expect(doclet.name).toBe('bar'); + }); + + it('should not call a second Rhino node visitor if the first visitor stopped ' + + 'propagation', function() { + var doclet; + + var visitor1 = { + visitNode: function(rhinoNode, e, parser, sourceName) { + e.stopPropagation = true; + } + }; + var visitor2 = { + visitNode: function(rhinoNode, e, parser, sourceName) { + e.propertyThatWillNeverBeSet = ':('; + } + }; + + require('jsdoc/src/handlers').attachTo(parser); + parser.addNodeVisitor(visitor1); + parser.addNodeVisitor(visitor2); + parser.parse(sourceCode); + + doclet = parser.results()[0]; + + expect(doclet.propertyThatWillNeverBeSet).not.toBeDefined(); + }); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/rhino/src/visitor.js b/third_party/jsdoc/test/specs/rhino/src/visitor.js new file mode 100644 index 0000000000..ea71084d6f --- /dev/null +++ b/third_party/jsdoc/test/specs/rhino/src/visitor.js @@ -0,0 +1,88 @@ +/*global beforeEach: true, describe: true, expect: true, it: true */ +describe('rhino/jsdoc/src/visitor', function() { + var runtime = require('jsdoc/util/runtime'); + var jsdoc = { + src: { + visitor: require( runtime.getModulePath('jsdoc/src/visitor') ) + } + }; + + it('should exist', function() { + expect(jsdoc.src.visitor).toBeDefined(); + expect(typeof jsdoc.src.visitor).toBe('object'); + }); + + it('should export a "Visitor" constructor', function() { + expect(jsdoc.src.visitor.Visitor).toBeDefined(); + expect(typeof jsdoc.src.visitor.Visitor).toBe('function'); + }); + + describe('Visitor', function() { + var parser; + var visitor; + + function newVisitor() { + parser = require('jsdoc/src/parser').createParser('rhino'); + visitor = new jsdoc.src.visitor.Visitor(parser); + } + + newVisitor(); + + it('should inherit from jsdoc/src/visitor', function() { + var parent = require('jsdoc/src/visitor').Visitor; + expect(visitor instanceof parent).toBe(true); + }); + + it('should have an "addRhinoNodeVisitor" method', function() { + expect(visitor.addRhinoNodeVisitor).toBeDefined(); + expect(typeof visitor.addRhinoNodeVisitor).toBe('function'); + }); + + it('should have a "getRhinoNodeVisitors" method', function() { + expect(visitor.getRhinoNodeVisitors).toBeDefined(); + expect(typeof visitor.getRhinoNodeVisitors).toBe('function'); + }); + + describe('addRhinoNodeVisitor', function() { + function visitorA() {} + function visitorB() {} + + var visitors; + + beforeEach(newVisitor); + + it('should work with a single Rhino node visitor', function() { + visitor.addRhinoNodeVisitor(visitorA); + + visitors = visitor.getRhinoNodeVisitors(); + + expect(visitors.length).toBe(1); + expect(visitors[0]).toBe(visitorA); + }); + + it('should work with multiple Rhino node visitors', function() { + visitor.addRhinoNodeVisitor(visitorA); + visitor.addRhinoNodeVisitor(visitorB); + + visitors = visitor.getRhinoNodeVisitors(); + + expect(visitors.length).toBe(2); + expect(visitors[0]).toBe(visitorA); + expect(visitors[1]).toBe(visitorB); + }); + }); + + describe('getRhinoNodeVisitors', function() { + beforeEach(newVisitor); + + it('should return an empty array by default', function() { + var visitors = visitor.getRhinoNodeVisitors(); + + expect( Array.isArray(visitors) ).toBe(true); + expect(visitors.length).toBe(0); + }); + + // other functionality is covered by the addNodeVisitors tests + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/abstracttag.js b/third_party/jsdoc/test/specs/tags/abstracttag.js new file mode 100644 index 0000000000..be2b786205 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/abstracttag.js @@ -0,0 +1,20 @@ +describe("@abstract tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/abstracttag.js'), + type = docSet.getByLongname('Thingy')[0], + pez = docSet.getByLongname('Thingy#pez')[0]; + + it("should have an undefined 'virtual' property with no '@abstract' tag", function() { + expect(type.virtual).toBeUndefined(); + }); + + it("should set the doclet's 'virtual' property to true when ' @abstract tag is present", function() { + expect(pez.virtual).toBe(true); + }); + + // same as... + + it("should set the doclet's 'virtual' property to true when ' @abstract tag is present", function() { + pez = docSet.getByLongname('OtherThingy#pez')[0]; + expect(pez.virtual).toBe(true); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/accesstag.js b/third_party/jsdoc/test/specs/tags/accesstag.js new file mode 100644 index 0000000000..3bfa397305 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/accesstag.js @@ -0,0 +1,24 @@ +describe("@access tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/accesstag.js'), + foo = docSet.getByLongname('Thingy~foo')[0], + _bar = docSet.getByLongname('Thingy#_bar')[0], + pez = docSet.getByLongname('Thingy#pez')[0], + foo2 = docSet.getByLongname('OtherThingy~foo')[0], + _bar2 = docSet.getByLongname('OtherThingy#_bar')[0], + pez2 = docSet.getByLongname('OtherThingy#pez')[0]; + + it("should set the doclet's 'access' property to 'private' when there is an @access private tag", function() { + expect(foo.access).toBe('private'); + expect(foo2.access).toBe('private'); + }); + + it("should set the doclet's 'access' property to 'protected' when there is an @access protected tag", function() { + expect(_bar.access).toBe('protected'); + expect(_bar2.access).toBe('protected'); + }); + + it("should set no 'access' property on the doclet when there is an @access public tag", function() { + expect(pez.access).toBeUndefined(); + expect(pez2.access).toBeUndefined(); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/aliastag.js b/third_party/jsdoc/test/specs/tags/aliastag.js new file mode 100644 index 0000000000..4b2396ef26 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/aliastag.js @@ -0,0 +1,11 @@ +describe("@alias tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/alias.js'), + // there are two doclets with longname myObject, we want the second one + myObject = docSet.getByLongname('myObject')[1]; + + it("adds an 'alias' property to the doclet with the tag's value", function() { + expect(myObject.alias).toBeDefined(); + expect(myObject.alias).toBe('myObject'); + }); + // further tests (ensuring alias has the proper effect): documentation/alias.js +}); diff --git a/third_party/jsdoc/test/specs/tags/augmentstag.js b/third_party/jsdoc/test/specs/tags/augmentstag.js new file mode 100644 index 0000000000..819212165e --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/augmentstag.js @@ -0,0 +1,152 @@ +'use strict'; + + describe('@augments tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/augmentstag.js'); + var docSet2 = jasmine.getDocSetFromFile('test/fixtures/augmentstag2.js'); + var docSet3 = jasmine.getDocSetFromFile('test/fixtures/augmentstag3.js'); + var docSet4 = jasmine.getDocSetFromFile('test/fixtures/augmentstag4.js'); + var docSet5 = jasmine.getDocSetFromFile('test/fixtures/augmentstag5.js'); + + it('When a symbol has an @augments tag, the doclet has a augments property that includes that value.', function() { + var bar = docSet.getByLongname('Bar')[0]; + + expect(typeof bar.augments).toBe('object'); + expect(bar.augments[0]).toBe('Foo'); + }); + + it('When an object is extended, the original is not modified', function() { + var fooProp3 = docSet.getByLongname('Foo#prop3')[0]; + + expect(fooProp3).toBeUndefined(); + }); + + it('When an object is extended, it inherits properties set in parent constructor', function() { + var fooProp1 = docSet.getByLongname('Foo#prop1')[0]; + var barProp1 = docSet.getByLongname('Bar#prop1')[0]; + + expect(fooProp1.memberof).toBe('Foo'); + expect(barProp1.memberof).toBe('Bar'); + expect(barProp1.description).toBe(fooProp1.description); + }); + + it('When an object is extended, it inherits properties set on parent prototype', function() { + var fooProp2 = docSet.getByLongname('Foo#prop2')[0]; + var barProp2 = docSet.getByLongname('Bar#prop2')[0]; + + expect(fooProp2.memberof).toBe('Foo'); + expect(barProp2.memberof).toBe('Bar'); + expect(barProp2.description).toBe(fooProp2.description); + }); + + it('When an object is extended, it inherits methods set on parent prototype', function() { + var fooMethod1 = docSet.getByLongname('Foo#method1')[0]; + var barMethod1 = docSet.getByLongname('Bar#method1')[0]; + + expect(fooMethod1.memberof).toBe('Foo'); + expect(barMethod1.memberof).toBe('Bar'); + expect(barMethod1.description).toBe(fooMethod1.description); + }); + + it('When an object is extended, it may override methods set on parent prototype', function() { + var fooMethod2 = docSet.getByLongname('Foo#method2')[0]; + var barMethod2 = docSet.getByLongname('Bar#method2')[0]; + + expect(fooMethod2.memberof).toBe('Foo'); + expect(fooMethod2.description).toBe('Second parent method.'); + expect(barMethod2.memberof).toBe('Bar'); + expect(barMethod2.description).toBe('Second child method.'); + }); + + it('When an object is extended, and it overrides an ancestor method, the child does not include docs for the ancestor method.', function() { + var barMethod2All = docSet.getByLongname('Bar#method2'); + + expect(barMethod2All.length).toBe(1); + }); + + it('When an object is extended, and it overrides an ancestor, the child has an "overrides" property', function() { + var barMethod2 = docSet.getByLongname('Bar#method2')[0]; + + expect(barMethod2.overrides).toBeDefined(); + expect(barMethod2.overrides).toBe('Foo#method2'); + }); + + it('When an object is extended, it inherits properties set on grandparent prototype', function() { + var fooProp1 = docSet.getByLongname('Foo#prop1')[0]; + var barProp1 = docSet.getByLongname('Bar#prop1')[0]; + var bazProp1 = docSet.getByLongname('Baz#prop1')[0]; + var bazMethod1 = docSet.getByLongname('Baz#method1')[0]; + + expect(fooProp1.memberof).toBe('Foo'); + expect(barProp1.memberof).toBe('Bar'); + expect(bazProp1.memberof).toBe('Baz'); + expect(bazProp1.description).toBe('Override prop1'); + expect(bazMethod1.memberof).toBe('Baz'); + }); + + it('(Grand)children correctly identify the original source of inherited members', function() { + var fooProp1 = docSet.getByLongname('Foo#prop1')[0]; + var barProp1 = docSet.getByLongname('Bar#prop1')[0]; + var barProp3 = docSet.getByLongname('Bar#prop3')[0]; + var bazProp2 = docSet.getByLongname('Baz#prop2')[0]; + var bazProp3 = docSet.getByLongname('Baz#prop3')[0]; + var bazMethod1 = docSet.getByLongname('Baz#method1')[0]; + var bazMethod2 = docSet.getByLongname('Baz#method2')[0]; + + expect(fooProp1.inherits).not.toBeDefined(); + expect(barProp3.inherits).not.toBeDefined(); + expect(barProp1.inherits).toBe('Foo#prop1'); + expect(bazProp2.inherits).toBe('Foo#prop2'); + expect(bazProp3.inherits).toBe('Bar#prop3'); + expect(bazMethod1.inherits).toBe('Foo#method1'); + expect(bazMethod2.inherits).toBe('Bar#method2'); + }); + + it('When the grandparent has a method, and the parent overrides it, the child should not say it overrides the grandparent', function() { + var bazMethod2 = docSet.getByLongname('Baz#method2')[0]; + + expect(bazMethod2.overrides).not.toBeDefined(); + }); + + it('When an object is extended, and it overrides an ancestor property, the child does not include docs for the ancestor property.', function() { + var bazProp1All = docSet.getByLongname('Baz#prop1'); + + expect(bazProp1All.length).toBe(1); + }); + + it('When a symbol has an @augments tag, and the parent is not documented, the doclet still has an augments property', function() { + var qux = docSet2.getByLongname('Qux')[0]; + + expect(typeof qux.augments).toBe('object'); + expect(qux.augments[0]).toBe('UndocumentedThing'); + }); + + it('When a symbol @augments multiple parents, it inherits methods from all parents', function() { + var fooMethod1 = docSet3.getByLongname('Foo#method1')[0]; + var barMethod2 = docSet3.getByLongname('Bar#method2')[0]; + var fooBarMethod1 = docSet3.getByLongname('FooBar#method1')[0]; + var fooBarMethod2 = docSet3.getByLongname('FooBar#method2')[0]; + + expect(fooBarMethod1).toBeDefined(); + expect(fooBarMethod2).toBeDefined(); + expect(fooBarMethod1.description).toBe(fooMethod1.description); + expect(fooBarMethod2.description).toBe(barMethod2.description); + }); + + it('When a symbol overrides an inherited method without documenting the method, it uses the parent\'s docs', function() { + var baseMethod1 = docSet4.getByLongname('Base#test1')[0]; + var derivedMethod1All = docSet4.getByLongname('Derived#test1'); + var derivedMethod1 = derivedMethod1All[1]; + + expect(derivedMethod1All.length).toBe(2); + expect(derivedMethod1.undocumented).not.toBe(true); + expect(derivedMethod1.description).toBe(baseMethod1.description); + }); + + it('When a symbol inherits two methods that would both have the same longname, the last one wins', function() { + var base1CommonMethod = docSet5.getByLongname('Base1#methodOfBaseCommon')[0]; + var classCommonMethod = docSet5.getByLongname('Class#methodOfBaseCommon'); + + expect(classCommonMethod.length).toBe(1); + expect(classCommonMethod[0].description).toBe(base1CommonMethod.description); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/authortag.js b/third_party/jsdoc/test/specs/tags/authortag.js new file mode 100644 index 0000000000..1a84b336e3 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/authortag.js @@ -0,0 +1,18 @@ +describe("@author tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/authortag.js'), + Thingy = docSet.getByLongname('Thingy')[0], + Thingy2 = docSet.getByLongname('Thingy2')[0]; + + it('When a symbol has a @author tag, the doclet has a author property with that value.', function() { + expect(Thingy.author).toBeDefined(); + expect(Array.isArray(Thingy.author)).toBe(true); + expect(Thingy.author[0]).toBe('Michael Mathews '); + }); + + it('When a symbol has multiple @author tags, the doclet has a author property, an array with those values.', function() { + expect(Thingy2.author).toBeDefined(); + expect(Array.isArray(Thingy2.author)).toBe(true); + expect(Thingy2.author).toContain('Jane Doe '); + expect(Thingy2.author).toContain('John Doe '); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/borrowstag.js b/third_party/jsdoc/test/specs/tags/borrowstag.js new file mode 100644 index 0000000000..4a6fdf570a --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/borrowstag.js @@ -0,0 +1,24 @@ +describe("@borrows tag", function() { + it('When a symbol has a @borrows-as tag, that is added to the symbol\'s "borrowed" property.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/borrowstag.js'), + util = docSet.getByLongname('util').filter(function($) { + return ! $.undocumented; + })[0]; + expect(util.borrowed.length).toBe(1); + expect(util.borrowed[0].from).toBe('trstr'); + expect(util.borrowed[0].as).toBe('trim'); + }); + + it('When a symbol has a @borrows tag, the borrowed symbol is added to the symbol.', function() { + var borrow = require('jsdoc/borrow'), + docSet = jasmine.getDocSetFromFile('test/fixtures/borrowstag2.js'); + + borrow.resolveBorrows(docSet.doclets); + + var str_rtrim = docSet.getByLongname('str.rtrim').filter(function($) { + return ! $.undocumented; + })[0]; + + expect(typeof str_rtrim).toBe('object'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/classdesctag.js b/third_party/jsdoc/test/specs/tags/classdesctag.js new file mode 100644 index 0000000000..2a369cf1c9 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/classdesctag.js @@ -0,0 +1,8 @@ +describe("@classdesc tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/classdesctag.js'), + doc = docSet.getByLongname('Foo')[0]; + + it('adds a classdesc property to the doclet with the description', function() { + expect(doc.classdesc).toBe('A description of the class.'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/classtag.js b/third_party/jsdoc/test/specs/tags/classtag.js new file mode 100644 index 0000000000..0a28a54d65 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/classtag.js @@ -0,0 +1,14 @@ +describe("@class tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/classtag.js'), + ticker = docSet.getByLongname('Ticker')[0], + news = docSet.getByLongname('NewsSource')[0]; + + it('When a symbol has a @class tag, the doclet has a kind property set to "class".', function() { + expect(ticker.kind).toBe('class'); + }); + + it('When a symbol has a @class tag with a value, the doclet has a name property set to that value.', function() { + expect(news.kind).toBe('class'); + expect(news.longname).toBe('NewsSource'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/constanttag.js b/third_party/jsdoc/test/specs/tags/constanttag.js new file mode 100644 index 0000000000..7c33c0b576 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/constanttag.js @@ -0,0 +1,66 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("@constant tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/constanttag.js'); + var FOO = docSet.getByLongname('FOO')[0]; + var BAR = docSet.getByLongname('BAR')[0]; + var BAZ = docSet.getByLongname('BAZ')[0]; + var QUX = docSet.getByLongname('QUX')[0]; + var SOCKET = docSet.getByLongname('SOCKET')[0]; + var ROCKET = docSet.getByLongname('ROCKET')[0]; + + it("sets the doclet's 'kind' property to 'constant'", function() { + expect(FOO).toBeDefined(); + expect(FOO.kind).toBe('constant'); + + expect(BAR).toBeDefined(); + expect(BAR.kind).toBe('constant'); + + expect(BAZ).toBeDefined(); + expect(BAZ.kind).toBe('constant'); + + expect(QUX).toBeDefined(); + expect(QUX.kind).toBe('constant'); + + expect(SOCKET).toBeDefined(); + expect(SOCKET.kind).toBe('constant'); + + expect(ROCKET).toBeDefined(); + expect(ROCKET.kind).toBe('constant'); + }); + + it("If used as a standalone, takes the name from the code", function() { + expect(FOO.name).toBe('FOO'); + }); + + it("If used with just a name, sets the doclet's name to that", function() { + expect(BAR.name).toBe('BAR'); + }); + + it("If used with a name and a type, sets the doclet's name and type appropriately", function() { + expect(BAZ.name).toBe('BAZ'); + expect(typeof BAZ.type).toBe('object'); + expect(BAZ.type.names).toBeDefined(); + expect(BAZ.type.names.length).toBe(1); + expect(BAZ.type.names[0]).toBe('string'); + }); + + it("If used with just a type, adds the type and takes the name from the code", function() { + expect(QUX.name).toBe('QUX'); + expect(typeof QUX.type).toBe('object'); + expect(QUX.type.names).toBeDefined(); + expect(QUX.type.names.length).toBe(1); + expect(QUX.type.names[0]).toBe('number'); + }); + + it("If used with a name and type, ignores the name in the code", function() { + expect(SOCKET.name).toBe('SOCKET'); + expect(typeof SOCKET.type).toBe('object'); + expect(SOCKET.type.names).toBeDefined(); + expect(SOCKET.type.names.length).toBe(1); + expect(SOCKET.type.names[0]).toBe('Object'); + }); + + it("If used with just a name, ignores the name in the code", function() { + expect(ROCKET.name).toBe('ROCKET'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/constructortag.js b/third_party/jsdoc/test/specs/tags/constructortag.js new file mode 100644 index 0000000000..dd2bedadaa --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/constructortag.js @@ -0,0 +1,13 @@ +describe("@constructor tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/constructortag.js'), + feed = docSet.getByLongname('Feed')[0]; + + it('When a symbol has an @constructor tag, it is documented as a class.', function() { + expect(feed.kind).toBe('class'); + }); + + it('When a symbol has an @constructor tag and a @class tag, the value of the @class tag becomes the classdesc property.', function() { + expect(feed.classdesc).toBe('Describe your class here.'); + expect(feed.description).toBe('Describe your constructor function here.'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/constructstag.js b/third_party/jsdoc/test/specs/tags/constructstag.js new file mode 100644 index 0000000000..a7198a4c3b --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/constructstag.js @@ -0,0 +1,54 @@ +describe("@constructs tag", function() { + + it('When a symbol has an @constructs tag, it is documented as a class with that name.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/constructstag.js'), + textblock = docSet.getByLongname('TextBlock')[0]; + + expect(textblock.kind).toBe('class'); + expect(textblock.longname).toBe('TextBlock'); + }); + + it('When a symbol has an @constructs tag, it is documented as a class.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/constructstag2.js'), + menu = docSet.getByLongname('Menu')[0]; + + expect(menu.name).toBe('Menu'); + expect(menu.kind).toBe('class'); + }); + + it('When a function symbol has an @constructs tag, any this-variables are ducumented as instance members of the class.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/constructstag3.js'), + personName = docSet.getByLongname('Person#name')[0]; + + expect(personName.memberof).toBe('Person'); + expect(personName.scope).toBe('instance'); + }); + + it('When a function symbol has an @constructs tag with no value, in a @lends block with a "Name#" value, the function is documented as a constructor of "Name".', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/constructstag4.js'), + person = docSet.getByLongname('Person').filter(function($) { + return ! $.undocumented; + })[0]; + + expect(person.kind).toBe('class'); + }); + + it('When a function symbol has an @constructs tag with no value, any this-variables are documented as instance members of the class.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/constructstag4.js'), + personName = docSet.getByLongname('Person#name')[0]; + + expect(personName.memberof).toBe('Person'); + expect(personName.scope).toBe('instance'); + }); + + it('When a object literal property has an @constructs tag with no value, and the object has a @lends, the property is documented as the lent class.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/constructstag5.js'), + duck = docSet.getByLongname('Duck').filter(function($) { + return ! $.undocumented; + })[0]; + + expect(duck.longname).toBe('Duck'); + expect(duck.kind).toBe('class'); + expect(duck.description).toBe('Constructs a duck.'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/copyrighttag.js b/third_party/jsdoc/test/specs/tags/copyrighttag.js new file mode 100644 index 0000000000..c9c7a5f125 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/copyrighttag.js @@ -0,0 +1,8 @@ +describe("@copyright tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/copyrighttag.js'), + Thingy = docSet.getByLongname('Thingy')[0]; + + it('When a symbol has a @copyright tag, the doclet has a copyright property with that value.', function() { + expect(Thingy.copyright).toBe('(c) 2011 Michael Mathews'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/defaulttag.js b/third_party/jsdoc/test/specs/tags/defaulttag.js new file mode 100644 index 0000000000..50f529ae56 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/defaulttag.js @@ -0,0 +1,75 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@default tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/defaulttag.js'); + + it('When symbol set to null has a @default tag with no text, the doclet\'s defaultValue property should be: null', function() { + var request = docSet.getByLongname('request')[0]; + expect(request.defaultvalue).toBe('null'); + }); + + it('When symbol set to a string has a @default tag with no text, the doclet\'s defaultValue property should be that string', function() { + var response = docSet.getByLongname('response')[0]; + expect(response.defaultvalue).toBe('ok'); + }); + + it('When symbol set to a number has a @default tag with no text, the doclet\'s defaultValue property should be that number.', function() { + var rcode = docSet.getByLongname('rcode')[0]; + expect(rcode.defaultvalue).toBe('200'); + }); + + it('When symbol has a @default tag with text, the doclet\'s defaultValue property should be that text.', function() { + var win = docSet.getByLongname('win')[0]; + expect(win.defaultvalue).toBe('the parent window'); + }); + + it('When symbol has a @default tag with true.', function() { + var rvalid = docSet.getByLongname('rvalid')[0]; + expect(rvalid.defaultvalue).toBe('true'); + }); + + it('When symbol has a @default tag with false.', function() { + var rerrored = docSet.getByLongname('rerrored')[0]; + expect(rerrored.defaultvalue, 'false'); + }); + + it('When symbol has a @default tag with a function call.', function() { + var header = docSet.getByLongname('header')[0]; + expect(header.defaultvalue).toBeUndefined(); + }); + + it('When symbol has a @default tag with an object, the doclet should contain the stringified object', function() { + var obj = docSet.getByLongname('obj')[0]; + var testObj = { valueA: 'a', valueB: false, valueC: 7}; + + expect(obj.defaultvalue).toBe( JSON.stringify(testObj) ); + expect(obj.defaultvaluetype).toBe('object'); + }); + + it('When symbol has a @default tag with a multiline object, the doclet should contain the stringified object', function() { + var multilineObject = docSet.getByLongname('multilineObject')[0]; + var testObj = { + valueA: 'a', + valueB: false, + valueC: 7 + }; + + expect(multilineObject.defaultvalue).toBe( JSON.stringify(testObj) ); + expect(multilineObject.defaultvaluetype).toBe('object'); + }); + + it('When symbol has a @default tag with an array, the doclet should contain the stringified array', function() { + var arr = docSet.getByLongname('arr')[0]; + var testArray = ['foo', true, 19]; + + expect(arr.defaultvalue).toBe( JSON.stringify(testArray) ); + expect(arr.defaultvaluetype).toBe('array'); + }); + + it('When symbol has a @default tag and a @type tag, the default value should be set correctly', function() { + var defaultWithType = docSet.getByLongname('defaultWithType')[0]; + + expect(defaultWithType.defaultvalue).toBe('a'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/deprecatedtag.js b/third_party/jsdoc/test/specs/tags/deprecatedtag.js new file mode 100644 index 0000000000..0e60ce29c6 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/deprecatedtag.js @@ -0,0 +1,14 @@ +describe("@deprecated tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/deprecatedtag.js'), + foo = docSet.getByLongname('foo')[0], + bar = docSet.getByLongname('bar')[0]; + + it('When a symbol has a @deprecated tag with no value, the doclet has a deprecated property set to true.', function() { + expect(foo.deprecated).toBe(true); + }); + + it('When a symbol has a @deprecated tag with a value, the doclet has a deprecated property set to that value.', function() { + expect(bar.deprecated).toBe('since version 2.0'); + }); + +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/descriptiontag.js b/third_party/jsdoc/test/specs/tags/descriptiontag.js new file mode 100644 index 0000000000..855280dc9e --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/descriptiontag.js @@ -0,0 +1,15 @@ +describe("@description tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/descriptiontag.js'), + doc = docSet.getByLongname('x')[0], + doc2 = docSet.getByLongname('y')[0]; + + it("sets the doclet's 'description' property to the description", function() { + expect(doc2.description).toBeDefined(); + expect(doc2.description).toBe('lkjasdf'); + }); + + it("overrides the default description", function() { + expect(doc.description).toBeDefined(); + expect(doc.description).toBe('halb halb halb'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/enumtag.js b/third_party/jsdoc/test/specs/tags/enumtag.js new file mode 100644 index 0000000000..d588e5a66d --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/enumtag.js @@ -0,0 +1,58 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@enum tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/enumtag.js'); + var tristate = docSet.getByLongname('TriState')[0]; + + it('When a symbol has an @enum tag, it has a properties array.', function() { + expect(typeof tristate.properties).toBe('object'); + }); + + it('If no @type is given for the property, it is inherited from the enum.', function() { + expect(tristate.properties[0].type.names.join(', ')).toBe('number'); + }); + + it('If no comment is given for the property, it is still included in the enum.', function() { + expect(tristate.properties[1].longname).toBe('TriState.FALSE'); + expect(tristate.properties[1].undocumented).toBeUndefined(); + }); + + it('A property of an enum gets its defaultvalue set.', function() { + expect(tristate.properties[1].defaultvalue).toBe('-1'); + }); + + it('If a @type is given for the property, it is reflected in the property value.', function() { + expect(tristate.properties[2].type.names.join(', ')).toBe('boolean'); + }); + + it('An enum does not contain any circular references.', function() { + var dump = require('jsdoc/util/dumper').dump; + + expect( dump(tristate) ).not.toMatch(''); + }); + + describe('chained assignments', function() { + var pentaState; + var PENTASTATE; + var quadState; + + docSet = jasmine.getDocSetFromFile('test/fixtures/enumtag2.js'); + pentaState = docSet.getByLongname('module:my/enums.PentaState')[0]; + PENTASTATE = docSet.getByLongname('module:my/enums.PENTASTATE')[0]; + quadState = docSet.getByLongname('module:my/enums.QuadState')[0]; + + it('When a symbol at the start of an assignment chain has an @enum tag, that symbol has a properties array.', function() { + expect( Array.isArray(quadState.properties) ).toBe(true); + expect(quadState.properties.length).toBe(4); + }); + + it('When multiple symbols in an assignment chain have @enum tags, each symbol has a properties array.', function() { + expect( Array.isArray(pentaState.properties) ).toBe(true); + expect(pentaState.properties.length).toBe(5); + + expect( Array.isArray(PENTASTATE.properties) ).toBe(true); + expect(pentaState.properties.length).toBe(5); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/eventfirestag.js b/third_party/jsdoc/test/specs/tags/eventfirestag.js new file mode 100644 index 0000000000..55d86f4af9 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/eventfirestag.js @@ -0,0 +1,30 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe('@event and @fires/@emits tags', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/eventfirestag.js'), + snowballMethod = docSet.getByLongname('Hurl#snowball')[0], + snowballEvent = docSet.getByLongname('Hurl#event:snowball')[0], + footballMatchMethod = docSet.getByLongname('Hurl#footballMatch')[0]; + + // @event tag + it('When a symbol has an @event tag, the doclet is of kind "event".', function() { + expect(snowballEvent.kind).toBe('event'); + }); + + // @fires/@emits tag + it('When a symbol has a @fires tag, the doclet has an array named "fires".', function() { + expect(typeof snowballMethod.fires).toBe('object'); + }); + + it('When a symbol has an @emits tag, the doclet has an array named "fires".', function() { + expect(typeof footballMatchMethod.fires).toBe('object'); + }); + + it('When a symbol has a "fires" array, the members have the "event:" namespace.', function() { + expect(snowballMethod.fires[0]).toBe('Hurl#event:snowball'); + }); + + it('When a symbol has a "fires" array with a name that already has an "event:" namespace, ' + + 'it does not have a second namespace applied.', function() { + expect(snowballMethod.fires[1]).toBe('Hurl#event:brick'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/exampletag.js b/third_party/jsdoc/test/specs/tags/exampletag.js new file mode 100644 index 0000000000..6e817177c1 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/exampletag.js @@ -0,0 +1,22 @@ +describe("@example tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exampletag.js'), + doc = docSet.getByLongname('x')[0], + doc2 = docSet.getByLongname('y')[0], + txtRegExp = new RegExp('console\\.log\\("foo"\\);[\\r\\n]{1,2}console\\.log\\("bar"\\);'), + txt2RegExp = new RegExp('Example 2[\\r\\n]{1,2}1 \\+ 2;'); + + it("creates an 'examples' property on the doclet with the example", function() { + expect(doc.examples).toBeDefined(); + expect(Array.isArray(doc.examples)).toBe(true); + expect(doc.examples.length).toBe(1); + expect(doc.examples).toMatch(txtRegExp); + }); + + it("can be specified multiple times on one doclet", function() { + expect(doc2.examples).toBeDefined(); + expect(Array.isArray(doc2.examples)).toBe(true); + expect(doc2.examples.length).toBe(2); + expect(doc2.examples).toMatch(txtRegExp); + expect(doc2.examples).toMatch(txt2RegExp); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/exceptiontag.js b/third_party/jsdoc/test/specs/tags/exceptiontag.js new file mode 100644 index 0000000000..e0119fc5e8 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/exceptiontag.js @@ -0,0 +1,32 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@exception tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exceptiontag.js'); + var foo = docSet.getByLongname('foo')[0]; + var bar = docSet.getByLongname('bar')[0]; + var pez = docSet.getByLongname('pez')[0]; + var cos = docSet.getByLongname('cos')[0]; + + it('When a symbol has an @exception tag, the doclet has a exception property set to that value.', function() { + expect(typeof foo.exceptions).toBe('object'); + expect(foo.exceptions.length).toBe(1); + + expect(typeof bar.exceptions).toBe('object'); + expect(bar.exceptions.length).toBe(1); + + expect(typeof pez.exceptions).toBe('object'); + expect(pez.exceptions.length).toBe(1); + }); + + it('The description and type for the @exception tag are not added to the parent doclet.', function() { + expect(pez.description).not.toBeDefined(); + expect(pez.type).not.toBeDefined(); + }); + + it('When a symbol has a description, plus an @exception tag with a description, neither description overwrites the other.', function() { + expect(cos.description).toBe('A description of the function.'); + expect(cos.exceptions.length).toBe(1); + expect(cos.exceptions[0].description).toBe('A description of the exception.'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/exportstag.js b/third_party/jsdoc/test/specs/tags/exportstag.js new file mode 100644 index 0000000000..00feb54cfd --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/exportstag.js @@ -0,0 +1,215 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@exports tag', function() { + + describe('object literals', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exportstag.js'); + var shirt = docSet.getByLongname('module:my/shirt')[0]; + var color = docSet.getByLongname('module:my/shirt.color')[0]; + var tneck = docSet.getByLongname('module:my/shirt.Turtleneck')[0]; + var size = docSet.getByLongname('module:my/shirt.Turtleneck#size')[0]; + + it('When an objlit symbol has an @exports tag, the doclet is aliased to "module:" + the tag value.', function() { + expect(typeof shirt).toEqual('object'); + expect(shirt.alias).toEqual('my/shirt'); + expect(shirt.undocumented).not.toBeDefined(); + }); + + it('When an objlit symbol has an @exports tag, the doclet\'s longname includes the "module:" namespace.', function() { + expect(shirt.longname).toEqual('module:my/shirt'); + }); + + it('When an objlit symbol has an @exports tag, the doclet kind is set to module.', function() { + expect(shirt.kind).toEqual('module'); + }); + + it('When an objlit symbol has an @exports tag, the module doclet does not have a scope.', function() { + expect(shirt.scope).not.toBeDefined(); + }); + + it('When an objlit symbol has an @exports tag, the objlit members are documented as members of the module.', function() { + expect(typeof color).toEqual('object'); + expect(color.memberof).toEqual('module:my/shirt'); + + expect(typeof tneck).toEqual('object'); + expect(tneck.memberof).toEqual('module:my/shirt'); + + expect(typeof size).toEqual('object'); + expect(size.memberof).toEqual('module:my/shirt.Turtleneck'); + }); + }); + + describe('functions', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exportstag2.js'); + var coat = docSet.getByLongname('module:my/coat')[0]; + var wool = docSet.getByLongname('module:my/coat#wool')[0]; + + it('When a function symbol has an @exports tag, the doclet is aliased to "module:" + the tag value.', function() { + expect(typeof coat).toEqual('object'); + expect(coat.alias).toEqual('my/coat'); + }); + + it('When a function symbol has an @exports tag, the doclet\'s longname includes the "module:" namespace.', function() { + expect(coat.longname).toEqual('module:my/coat'); + }); + + it('When a function symbol has an @exports tag, the doclet kind is set to module.', function() { + expect(coat.kind).toEqual('module'); + }); + + it('When a function symbol has an @exports tag, the module doclet does not have a scope.', function() { + expect(coat.scope).not.toBeDefined(); + }); + + it('When a function symbol has an @exports tag, the this members are documented as instance members of the module.', function() { + expect(typeof wool).toEqual('object'); + expect(wool.memberof).toEqual('module:my/coat'); + }); + }); + + describe("functions and 'exports' object", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exportstag3.js'); + var html = docSet.getByLongname('module:html/utils')[0]; + var getstyle = docSet.getByLongname('module:html/utils.getStyleProperty')[0]; + var inhead = docSet.getByLongname('module:html/utils.isInHead')[0]; + + it('When a function symbol has an @exports tag, the module doclet does not have a scope.', function() { + expect(html.scope).not.toBeDefined(); + }); + + it('When a function symbol has an @exports tag and there is an objlit named "exports" the members are documented as members of the module.', function() { + expect(typeof getstyle).toEqual('object'); + expect(getstyle.memberof).toEqual('module:html/utils'); + }); + + it('When a function symbol has an @exports tag and there are members assigned to an "exports" name, the members are documented as members of the module.', function() { + expect(typeof inhead).toEqual('object'); + expect(inhead.memberof).toEqual('module:html/utils'); + + }); + }); + + describe('inner classes', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exportstag4.js'); + var module = docSet.getByLongname('module:some/module')[0]; + var innerClass = docSet.getByLongname('module:some/module~myClass')[0]; + var method = docSet.getByLongname('module:some/module~myClass#myMethod')[0]; + + it('When a function symbol has an @exports tag, the module doclet does not have a scope.', function() { + expect(module.scope).not.toBeDefined(); + }); + + it('An inner class declared as a function in a module should be documented.', function() { + expect(typeof innerClass).toEqual('object'); + }); + + it('A method of an inner class declared as a function in a module should be documented.', function() { + expect(typeof method).toEqual('object'); + }); + }); + + describe('variable shadowing', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exportstag5.js'); + var foo = docSet.getByLongname('module:Foo')[0]; + var method = docSet.getByLongname('module:Foo#bar')[0]; + + it('When a var has an @exports tag, the module doclet does not have a scope.', function() { + expect(foo.scope).not.toBeDefined(); + }); + + it('A variable defined in an inner scope should correctly shadow a variable in an outer scope.', function() { + expect(method.description).toBe('This should be in the Foo module doc.'); + }); + }); + + describe("'exports' object as a parameter to 'define'", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exportstag6.js'); + var shirt = docSet.getByLongname('module:my/shirt')[0]; + var color = docSet.getByLongname('module:my/shirt.color')[0]; + var tneck = docSet.getByLongname('module:my/shirt.Turtleneck')[0]; + var size = docSet.getByLongname('module:my/shirt.Turtleneck#size')[0]; + + it('When a param has an @exports tag, the doclet is aliased to "module:" + the tag value.', function() { + expect(typeof shirt).toBe('object'); + expect(shirt.alias).toBe('my/shirt'); + expect(shirt.undocumented).not.toBeDefined(); + }); + + it('When a param has an @exports tag, the doclet\'s longname includes the "module:" namespace.', function() { + expect(shirt.longname).toBe('module:my/shirt'); + }); + + it('When a param has an @exports tag, the doclet kind is set to module.', function() { + expect(shirt.kind).toEqual('module'); + }); + + it('When a param has an @exports tag, the module doclet does not have a scope.', function() { + expect(shirt.scope).not.toBeDefined(); + }); + + it('When a param has an @exports tag, the properties added to the param are documented as members of the module.', function() { + expect(typeof color).toBe('object'); + expect(color.memberof).toBe('module:my/shirt'); + + expect(typeof tneck).toBe('object'); + expect(tneck.memberof).toBe('module:my/shirt'); + + expect(typeof size).toBe('object'); + expect(size.memberof).toBe('module:my/shirt.Turtleneck'); + }); + }); + + describe("alias to the 'exports' object", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exportstag7.js'); + var shirt = docSet.getByLongname('module:my/shirt')[0]; + var color = docSet.getByLongname('module:my/shirt.color')[0]; + var tneck = docSet.getByLongname('module:my/shirt.Turtleneck')[0]; + var size = docSet.getByLongname('module:my/shirt.Turtleneck#size')[0]; + var iron = docSet.getByLongname('module:my/shirt.Turtleneck#iron')[0]; + + it('When a symbol has an @exports tag, the doclet is aliased to "module:" + the tag value.', function() { + expect(typeof shirt).toBe('object'); + expect(shirt.alias).toBe('my/shirt'); + expect(shirt.undocumented).not.toBeDefined(); + }); + + it('When a symbol has an @exports tag, the doclet kind is set to module.', function() { + expect(shirt.kind).toEqual('module'); + }); + + it('When a symbol has an @exports tag, the module doclet does not have a scope.', function() { + expect(shirt.scope).not.toBeDefined(); + }); + + it('When a symbol tagged with @exports is an alias to "exports", the symbol properties are documented as members of the module.', function() { + expect(typeof color).toBe('object'); + expect(color.memberof).toBe('module:my/shirt'); + + expect(typeof tneck).toBe('object'); + expect(tneck.memberof).toBe('module:my/shirt'); + }); + + it('When a symbol tagged with @exports is an alias to "exports", and a symbol property contains a class, the instance members of the class are documented correctly.', function() { + expect(typeof size).toBe('object'); + expect(size.name).toBe('size'); + expect(size.memberof).toBe('module:my/shirt.Turtleneck'); + expect(size.scope).toBe('instance'); + + expect(typeof iron).toBe('object'); + expect(iron.name).toBe('iron'); + expect(iron.memberof).toBe('module:my/shirt.Turtleneck'); + expect(iron.scope).toBe('instance'); + }); + }); + + describe('"module:" namespace included in the name', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/exportstag8.js'); + var shirt = docSet.getByLongname('module:my/shirt')[0]; + + it('When the name for an @exports tag begins with the "module:" namespace, we remove the namespace', function() { + expect(typeof shirt).toBe('object'); + expect(shirt.name).toBe('my/shirt'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/externaltag.js b/third_party/jsdoc/test/specs/tags/externaltag.js new file mode 100644 index 0000000000..8b02dd86d2 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/externaltag.js @@ -0,0 +1,37 @@ +/*global describe, expect, it, jasmine, xit */ +'use strict'; + +describe('@external tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/externaltag.js'); + var docSet2 = jasmine.getDocSetFromFile('test/fixtures/externaltag2.js'); + var docSet3 = jasmine.getDocSetFromFile('test/fixtures/externaltag3.js'); + + var fooBarBazExternal = docSet3.getByLongname('external:"foo.bar.baz"')[0]; + var jQueryExternal = docSet.getByLongname('external:"jQuery.fn"')[0]; + var stringExternal = docSet.getByLongname('external:String')[0]; + + + it('An @external should have its own doclet', function() { + expect(stringExternal).toBeDefined(); + expect(typeof stringExternal).toBe('object'); + }); + + it("An @external's name should be the same as its longname, minus 'external:'", function() { + expect(stringExternal.name).toBe('String'); + }); + + it('An @external should have its kind set to "external"', function() { + expect(stringExternal.kind).toBe('external'); + }); + + it('An @external with a quoted name should get the correct name', function() { + expect(jQueryExternal).toBeDefined(); + expect(jQueryExternal.name).toBe('"jQuery.fn"'); + }); + + // TODO: enable after jsdoc3/jsdoc#652 is fixed + xit('An @external should work correctly when the type is in curly braces', function() { + expect(fooBarBazExternal).toBeDefined(); + expect(fooBarBazExternal.name).toBe('"foo.bar.baz"'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/functiontag.js b/third_party/jsdoc/test/specs/tags/functiontag.js new file mode 100644 index 0000000000..df63f6b9e7 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/functiontag.js @@ -0,0 +1,18 @@ +describe("@function tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/functiontag.js'), + doc = docSet.getByLongname('Foo')[0], + doc2 = docSet.getByLongname('Bar')[0]; + + it("sets the doclet's kind to 'function'", function() { + expect(doc.kind).toBe('function'); + expect(doc2.kind).toBe('function'); + }); + + it("sets the doclet's name to the tag value, if provided", function() { + expect(doc.name).toBe('Foo'); + expect(doc2.name).toBe('Bar'); + }); + + // parameter etc tests take place elsewhere: on its own, all @func does is + // set doclet.kind to function and sets the doclet's name. +}); diff --git a/third_party/jsdoc/test/specs/tags/globaltag.js b/third_party/jsdoc/test/specs/tags/globaltag.js new file mode 100644 index 0000000000..3aeb34d807 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/globaltag.js @@ -0,0 +1,24 @@ +describe("@global tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/globaltag.js'); + + it('When an inner symbol has a @global tag it is documented as if it were global.', function() { + var found = docSet.getByLongname('foo').filter(function($) { + return ! $.undocumented; + }); + expect(found[0].name).toBe('foo'); + expect(found[0].longname).toBe('foo'); + expect(found[0].memberof).toBeUndefined(); + expect(found[0].scope).toBe('global'); + + }); + + it('When an nested symbol has a @global tag it is documented as if it were global.', function() { + var found = docSet.getByLongname('Bar').filter(function($) { + return ! $.undocumented; + }); + expect(found[0].name).toBe('Bar'); + expect(found[0].longname).toBe('Bar'); + expect(found[0].memberof).toBeUndefined(); + expect(found[0].scope).toBe('global'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/ignoretag.js b/third_party/jsdoc/test/specs/tags/ignoretag.js new file mode 100644 index 0000000000..8536143cdd --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/ignoretag.js @@ -0,0 +1,18 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("@ignore tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/ignoretag.js'), + foo = docSet.getByLongname('foo')[0]; + + it('When a symbol has an @ignore tag, the doclet has a ignore property set to true.', function() { + expect(foo.ignore).toBe(true); + }); + + it('When a symbol has an @ignore tag with a value an error is thrown', function() { + try { + docSet = jasmine.getDocSetFromFile('test/fixtures/ignoretag2.js'); + foo = docSet.getByLongname('foo')[0]; + } catch (e) { + expect(e instanceof Error).toBe(true); + } + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/implementstag.js b/third_party/jsdoc/test/specs/tags/implementstag.js new file mode 100644 index 0000000000..0a584aa98a --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/implementstag.js @@ -0,0 +1,31 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@implements tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/interface-implements.js'); + + var myTester = docSet.getByLongname('MyTester')[0]; + var myIncompleteWorker = docSet.getByLongname('MyWorker')[0]; + var beforeEachMethod = docSet.getByLongname('MyTester#beforeEach')[0]; + var processMethod = docSet.getByLongname('MyWorker#process')[0]; + + it('MyTester has an "implements" array', function() { + expect(Array.isArray(myTester.implements)).toBe(true); + expect(myTester.implements.length).toBe(1); + expect(myTester.implements[0]).toBe('ITester'); + }); + + it('beforeEach has an "implements" array', function() { + expect(Array.isArray(beforeEachMethod.implements)).toBe(true); + expect(beforeEachMethod.implements.length).toBe(1); + expect(beforeEachMethod.implements[0]).toBe('ITester#beforeEach'); + }); + + it('MyWorker\'s process() method does not implement an interface', function() { + expect(processMethod.implements).toBeUndefined(); + }); + + it('MyIncompleteWorker does not have any methods', function() { + expect(docSet.getByLongname('MyIncompleteWorker#work').length).toBe(0); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/interfacetag.js b/third_party/jsdoc/test/specs/tags/interfacetag.js new file mode 100644 index 0000000000..fb20b5d5bc --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/interfacetag.js @@ -0,0 +1,17 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@interface tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/interface-implements.js'); + + var testerInterface = docSet.getByLongname('ITester')[0]; + var testerImplementation = docSet.getByLongname('MyTester')[0]; + + it('ITester has its kind set to "interface"', function() { + expect(testerInterface.kind).toBe('interface'); + }); + + it('MyTester class has its kind set to "class" (not "interface")', function() { + expect(testerImplementation.kind).toBe('class'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/kindtag.js b/third_party/jsdoc/test/specs/tags/kindtag.js new file mode 100644 index 0000000000..49d9cd5ddc --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/kindtag.js @@ -0,0 +1,8 @@ +describe("@kind tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/kindtag.js'), + doc = docSet.getByLongname('x')[0]; + it("sets the doclet's 'kind' property to the tag value", function() { + expect(doc.kind).toBeDefined(); + expect(doc.kind).toBe('function'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/lendstag.js b/third_party/jsdoc/test/specs/tags/lendstag.js new file mode 100644 index 0000000000..0f4a685d68 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/lendstag.js @@ -0,0 +1,16 @@ +describe("@lends tag", function() { + // see also specs/documentation/lends.js for tests on @lends behaviour. + var doclet = require('jsdoc/doclet'), + doc = new doclet.Doclet('/** @lends */', {}), + doc2 = new doclet.Doclet('/** @lends MyClass# */', {}); + + it("sets the doclet's 'alias' property to the tag value or ", function() { + expect(doc.alias).toBe(''); + expect(doc2.alias).toBe('MyClass#'); + }); + + it("sets the doclet's 'undocumented' property to 'true'", function() { + expect(doc.undocumented).toBeTruthy(); + expect(doc2.undocumented).toBeTruthy(); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/licensetag.js b/third_party/jsdoc/test/specs/tags/licensetag.js new file mode 100644 index 0000000000..e37b1c6315 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/licensetag.js @@ -0,0 +1,8 @@ +describe("@license tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/licensetag.js'), + doc = docSet.getByLongname('x')[0]; + + it("sets the doclet's 'license' property to the tag value", function() { + expect(doc.license).toBe('GPL v2'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/listenstag.js b/third_party/jsdoc/test/specs/tags/listenstag.js new file mode 100644 index 0000000000..b200680450 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/listenstag.js @@ -0,0 +1,16 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("@listens tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/listenstag.js'), + doc = docSet.getByLongname('module:myModule~MyHandler')[0]; + + it("should create a 'listens' property on the doclet, an array, with the events that are listened to (with event namespace)", function() { + expect(Array.isArray(doc.listens)).toBeTruthy(); + expect(doc.listens).toContain('module:myModule.event:MyEvent'); + expect(doc.listens).toContain('module:myModule~Events.event:Event2'); + }); + + it("includes events even if non-existent", function() { + expect(doc.listens.length).toBe(3); + expect(doc.listens).toContain('event:fakeEvent'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/memberoftag.js b/third_party/jsdoc/test/specs/tags/memberoftag.js new file mode 100644 index 0000000000..0d43efa1dd --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/memberoftag.js @@ -0,0 +1,83 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("@memberof tag", function() { + + it('When a symbol has an @member tag, the doclet has a long name that includes the parent.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/memberoftag.js'), + Data = docSet.getByLongname('mathlib.Data')[0], + point = docSet.getByLongname('mathlib.Data#point')[0]; + + expect(typeof Data).toBe('object'); + expect(typeof point).toBe('object'); + + expect(Data.memberof).toBe('mathlib'); + expect(Data.name).toBe('Data'); + }); + + it('A symbol within a namespace for which no scope is specified.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/memberoftag4.js'), + doOtherStuff = docSet.getByLongname('doStuff.doOtherStuff')[0]; + + expect(doOtherStuff).toBeDefined(); + expect(doOtherStuff.scope).toBe('static'); + }); + + it('A symbol in which name === memberof.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/memberoftag4.js'), + doStuff = docSet.getByLongname('doStuff.doStuff')[0]; + + expect(doStuff).toBeDefined(); + expect(doStuff.scope).toBe('static'); + }); + + describe ("static", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/memberoftag2.js'), + publish = docSet.getByLongname('Observable#publish')[0], + cache = docSet.getByLongname('Observable.cache')[0]; + + it('A symbol is documented as a static @memberof a class.', function() { + //it should appear as a static member of that class + expect(typeof cache).toBe('object'); + expect(cache.memberof).toBe('Observable'); + expect(cache.scope).toBe('static'); + expect(cache.name).toBe('cache'); + expect(cache.longname).toBe('Observable.cache'); + }); + + it('A symbol is documented as a static @memberof a class prototype.', function() { + //it should appear as an instance member of that class + expect(typeof publish).toBe('object'); + expect(publish.memberof).toBe('Observable'); + expect(publish.scope).toBe('instance'); + expect(publish.name).toBe('publish'); + expect(publish.longname).toBe('Observable#publish'); + }); + }); + + describe ("forced", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/memberoftagforced.js'), + maproutes = docSet.getByLongname('map.routes')[0], + datapointy = docSet.getByLongname('Data#point.y')[0]; + + it('A nested symbol with a @memberof! tag set to .', function() { + expect(maproutes.name, 'map.routes', 'Has a shortname that includes the nested names.'); + }); + + it('A nested symbol with a @memberof! tag set to another symbol.', function() { + expect(datapointy.name, 'point.y', 'Has a shortname that includes the nested names.'); + }); + }); + + it('A symbol that is a nested class with a @memberof tag.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/memberoftag3.js'), + tree = docSet.getByLongname('module:terrain.Forest#Tree')[0]; + + expect(tree.longname, 'module:terrain.Forest#Tree'); + }); + + it('A symbol that is an instance member of a nested class with a @memberof tag.', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/memberoftag3.js'), + leaf = docSet.getByLongname('module:terrain.Forest#Tree#leaf')[0]; + + expect(leaf.longname, 'module:terrain.Forest#Tree#leaf'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/membertag.js b/third_party/jsdoc/test/specs/tags/membertag.js new file mode 100644 index 0000000000..2b311f148e --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/membertag.js @@ -0,0 +1,38 @@ +describe("@member tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/membertag.js'), + doc = docSet.getByLongname('x')[0], + doc2 = docSet.getByLongname('foobar')[0], + doc3 = docSet.getByLongname('baz')[0], + doc4 = docSet.getByLongname('y')[0]; + + it("sets the doclet's 'kind' property to 'member'", function() { + expect(doc.kind).toBe('member'); + expect(doc2.kind).toBe('member'); + expect(doc3.kind).toBe('member'); + expect(doc4.kind).toBe('member'); + }); + + it("If specified with a name, sets the doclet's name property", function() { + expect(doc.name).toBe('x'); + expect(doc2.name).toBe('foobar'); + expect(doc3.name).toBe('baz'); + }); + + it("If specified with a type and name, sets the doclet's type appropriately", function() { + expect(doc3.type).toBeDefined(); + expect(Array.isArray(doc3.type.names)).toBeTruthy(); + expect(doc3.type.names.length).toBe(1); + expect(doc3.type.names[0]).toBe('string'); + }); + + it("If specified with a type but no name, sets the doclet's name from the following JavaScript syntax", function() { + expect(doc4.name).toBe('y'); + }); + + it("If specified with a type but no name, sets the doclet's type appropriately", function() { + expect(doc4.type).toBeDefined(); + expect(Array.isArray(doc4.type.names)).toBeTruthy(); + expect(doc4.type.names.length).toBe(1); + expect(doc4.type.names[0]).toBe('Object'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/mixestag.js b/third_party/jsdoc/test/specs/tags/mixestag.js new file mode 100644 index 0000000000..6bb4f827b4 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/mixestag.js @@ -0,0 +1,19 @@ +describe("@mixes tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/mixintag.js'), + FormButton = docSet.getByLongname('FormButton')[0], + MyClass = docSet.getByLongname('MyClass')[0]; + + it("When a symbol has a @mixes tag, it gets an array property 'mixes' with the name of the mixin", function() { + expect(FormButton.mixes).toBeDefined(); + expect(Array.isArray(FormButton.mixes)).toBe(true); + expect(FormButton.mixes.length).toBe(1); + expect(FormButton.mixes[0]).toBe('Eventful'); + }); + + it("A symbol can @mixes multiple mixins and they are all added.", function() { + expect(MyClass.mixes).toBeDefined(); + expect(MyClass.mixes.length).toBe(2); + expect(MyClass.mixes).toContain('Eventful'); + expect(MyClass.mixes).toContain('AnotherMixin'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/mixintag.js b/third_party/jsdoc/test/specs/tags/mixintag.js new file mode 100644 index 0000000000..4c928fb26c --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/mixintag.js @@ -0,0 +1,13 @@ +describe("@mixin tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/mixintag.js'), + Eventful = docSet.getByLongname('Eventful')[0], + Mixin = docSet.getByLongname('AnotherMixin')[0]; + + it("When a symbol has a @mixin tag, the doclet's 'kind' property is set to 'mixin'", function() { + expect(Eventful.kind).toBe('mixin'); + }); + + it("When a symbol has a @mixin tag, its name is set to the tag's value (if present)", function() { + expect(Mixin).toBeDefined(); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/moduletag.js b/third_party/jsdoc/test/specs/tags/moduletag.js new file mode 100644 index 0000000000..08075f37d2 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/moduletag.js @@ -0,0 +1,90 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@module tag', function() { + describe("using 'this'", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/moduletag.js'); + var book = docSet.getByLongname('module:bookshelf.Book')[0]; + var title = docSet.getByLongname('module:bookshelf.Book#title')[0]; + + it('When a global symbol starts with "this" and is in a file with a @module tag, the symbol is documented as a member of that module.', function() { + expect(typeof book).toBe('object'); + expect(book.memberof).toBe('module:bookshelf'); + }); + + it('When an inner symbol starts with "this" and is in a file with a @module tag, the symbol is documented as a member of its enclosing constructor.', function() { + expect(typeof title).toBe('object'); + expect(title.memberof).toBe('module:bookshelf.Book'); + }); + }); + + describe('misc', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/moduletag2.js'); + var mixer = docSet.getByLongname('module:color/mixer').filter(function($) { + return ! $.undocumented; + })[0]; + var blend = docSet.getByLongname('module:color/mixer.blend')[0]; + var darken = docSet.getByLongname('module:color/mixer.darken')[0]; + + it('When a @module tag defines a module, a symbol of kind "module" is documented', function() { + expect(typeof mixer).toBe('object'); + expect(mixer.kind).toBe('module'); + }); + + it('When a @module tag defines a module, the module doclet does not have a "scope" property', function() { + expect(mixer.scope).not.toBeDefined(); + }); + + it('When an object literal is lent to a module with a @lends tag, a member of that object literal is documented as a member of the module', function() { + expect(typeof blend).toBe('object'); + expect(blend.kind).toBe('function'); + }); + + it('When a documented symbol is a member of a namespace "exports", it is documented as a member of the module', function() { + expect(typeof darken).toBe('object'); + expect(darken.kind).toBe('function'); + }); + }); + + describe('virtual comments', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/moduletag4.js'); + var m1 = docSet.getByLongname('module:M1').filter(function($) { + return ! $.undocumented; + })[0]; + var clickProperties = docSet.getByLongname('module:M1~ClickProperties')[0]; + var virtFunc = docSet.getByLongname('module:M1.VirtualComment')[0]; + var virtFunc2 = docSet.getByLongname('module:M1#VirtualComment2')[0]; + + it('When a virtual comment typedef is inside a module, the typedef is a memberof the module', function () { + expect(clickProperties.memberof).toBe('module:M1'); + }); + + it('When a virtual comment typedef is inside a module, the typedef longname contains the module name', function() { + expect(clickProperties.longname).toBe('module:M1~ClickProperties'); + }); + + it('When a virtual comment typedef is inside a module, the typedef scope is "inner"', function() { + expect(clickProperties.scope).toBe('inner'); + }); + + it('When a virtual comment function is inside a module with a static scope, the function has the correct memberof and longname', function () { + expect(virtFunc.longname).toBe('module:M1.VirtualComment'); + expect(virtFunc.memberof).toBe('module:M1'); + }); + + it('When a virtual comment function is inside a module with an instance scope, the function has the correct memberof and longname', function() { + expect(virtFunc2.longname).toBe('module:M1#VirtualComment2'); + expect(virtFunc2.memberof).toBe('module:M1'); + }); + }); + + describe('"module:" namespace included in the name', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/moduletag5.js'); + var bookshelf = docSet.getByLongname('module:bookshelf')[0]; + + it('When the name for a @module tag begins with the "module:" namespace, we remove the namespace', function() { + expect(typeof bookshelf).toBe('object'); + expect(bookshelf.name).toBe('bookshelf'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/namespacetag.js b/third_party/jsdoc/test/specs/tags/namespacetag.js new file mode 100644 index 0000000000..751b4ce845 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/namespacetag.js @@ -0,0 +1,33 @@ +/*global describe, expect, it, jasmine */ +describe("@namespace tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/namespacetag.js'); + var x = docSet.getByLongname('x')[0]; + var Foo = docSet.getByLongname('Foo')[0]; + var Bar = docSet.getByLongname('Bar')[0]; + var Socket = docSet.getByLongname('S.Socket')[0]; + + it("sets the doclet's kind to 'namespace'", function () { + expect(x.kind).toBe('namespace'); + expect(Foo.kind).toBe('namespace'); + expect(Bar.kind).toBe('namespace'); + }); + + it("sets the doclet's name to the tag value (if provided)", function() { + expect(x.name).toBe('x'); + expect(Foo.name).toBe('Foo'); + expect(Bar.name).toBe('Bar'); + }); + + it("sets the doclet's type (if provided in @namespace)", function() { + expect(Bar.type).toBeDefined(); + expect(Array.isArray(Bar.type.names)).toBeTruthy(); + expect(Bar.type.names.length).toBe(1); + expect(Bar.type.names[0]).toBe('function'); + }); + + it("sets the doclet's longname correctly when the namespace is a substring of the name", + function() { + expect(Socket).toBeDefined(); + expect(Socket.name).toBe('Socket'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/nametag.js b/third_party/jsdoc/test/specs/tags/nametag.js new file mode 100644 index 0000000000..ab769af147 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/nametag.js @@ -0,0 +1,30 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@name tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/nametag.js'); + var view = docSet.getByLongname('View')[0]; + var controller = docSet.getByLongname('Controller')[0]; + var addToParent = docSet.getByLongname('MvcHelpers~addToParent')[0]; + + it('applies the specified name to the doclet', function() { + expect(view).toBeDefined(); + }); + + it('uses the name in the @name tag, ignoring the name in the code', function() { + expect(controller).toBeDefined(); + }); + + it('sets the doclet\'s scope to `global` by default', function() { + expect(view.scope).toBeDefined(); + expect(view.scope).toBe('global'); + + expect(controller.scope).toBeDefined(); + expect(controller.scope).toBe('global'); + }); + + it('uses the specified scope if one is provided', function() { + expect(addToParent).toBeDefined(); + expect(addToParent.scope).toBe('inner'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/overviewtag.js b/third_party/jsdoc/test/specs/tags/overviewtag.js new file mode 100644 index 0000000000..1d3568a8eb --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/overviewtag.js @@ -0,0 +1,81 @@ +/*global beforeEach, afterEach, describe, env, expect, it, jasmine */ + +describe("@overview tag", function() { + var path = require('jsdoc/path'); + var runtime = require('jsdoc/util/runtime'); + + var doclets; + + var pwd = env.pwd; + var srcParser = null; + var sourceFiles = env.sourceFiles.slice(0); + var sourcePaths = env.opts._.slice(0); + + beforeEach(function() { + env.opts._ = [path.normalize(env.pwd + '/test/fixtures/')]; + env.pwd = env.dirname; + env.sourceFiles = []; + srcParser = jasmine.createParser(); + require('jsdoc/src/handlers').attachTo(srcParser); + }); + + afterEach(function() { + env.opts._ = sourcePaths; + env.pwd = pwd; + env.sourceFiles = sourceFiles; + }); + + it('When a file overview tag appears in a doclet, the name of the doclet should contain the path to the file.', function() { + var filename = 'test/fixtures/file.js'; + + env.sourceFiles.push(filename); + doclets = srcParser.parse( + path.normalize( path.join(env.pwd, filename) ) + ); + expect(doclets[0].name).toMatch(/^file\.js$/); + }); + + it("The name and longname should be equal", function() { + var filename = 'test/fixtures/file.js'; + + env.sourceFiles.push(filename); + doclets = srcParser.parse( + path.normalize( path.join(env.pwd, filename) ) + ); + expect(doclets[0].name).toBe(doclets[0].longname); + }); + + it('The name should not include the entire filepath when the source file is outside the ' + + 'JSDoc directory', function() { + var Doclet = require('jsdoc/doclet').Doclet; + var os = require('os'); + + var doclet; + var docletMeta; + var docletSrc; + + var fakePath = '/Users/jdoe/foo/bar/someproject/junk/okayfile.js'; + + // set up the environment to reflect the fake filepath + env.pwd = '/Users/jdoe/someproject'; + env.sourceFiles = []; + env.opts._ = [fakePath]; + + // ensure that paths are resolved consistently on Windows + if (os.platform().indexOf('win') === 0) { + fakePath = 'c:' + fakePath; + env.pwd = 'c:' + env.pwd; + } + + // create a doclet with a fake filepath, then add a `@file` tag + docletSrc = '/** @class */'; + docletMeta = { + lineno: 1, + filename: fakePath + }; + doclet = new Doclet(docletSrc, docletMeta); + doclet.addTag('file', 'This file is pretty okay.'); + + expect(doclet.name).toBe('okayfile.js'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/paramtag.js b/third_party/jsdoc/test/specs/tags/paramtag.js new file mode 100644 index 0000000000..7953735dfb --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/paramtag.js @@ -0,0 +1,120 @@ +/*global describe, expect, it, jasmine */ +'use strict'; + +describe('@param tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/paramtag.js'); + var docSet2 = jasmine.getDocSetFromFile('test/fixtures/paramtag2.js'); + + it('When a symbol has an @param tag with a type before the name, the doclet has a params property that includes that param.', function() { + var find = docSet.getByLongname('find')[0]; + + expect(typeof find.params).toBe('object'); + expect(find.params.length).toBe(1); + expect(find.params[0].type.names.join(', ')).toBe('String, Array.'); + expect(find.params[0].name).toBe('targetName'); + expect(find.params[0].description).toBe('The name (or names) of what to find.'); + }); + + it('When a symbol has an @param tag with only a type and name, the doclet has a params property that includes that param.', function() { + var bind = docSet.getByLongname('bind')[0]; + + expect(typeof bind.params).toBe('object'); + expect(bind.params.length).toBe(1); + expect(bind.params[0].type.names.join(', ')).toBe('function'); + expect(bind.params[0].name).toBe('callback'); + expect(bind.params[0].description).toBeUndefined(); + }); + + it('When a symbol has an @param tag with only a type, the doclet has a params property that includes that param.', function() { + var unbind = docSet.getByLongname('unbind')[0]; + + expect(typeof unbind.params).toBe('object'); + expect(unbind.params.length).toBe(1); + expect(unbind.params[0].type.names.join(', ')).toBe('function'); + expect(unbind.params[0].description).toBeUndefined(); + }); + + it('When a symbol has an @param tag with no type, the doclet has a params property that includes that param.', function() { + var getElement = docSet.getByLongname('getElement')[0]; + + expect(typeof getElement.params).toBe('object'); + expect(getElement.params.length).toBe(1); + expect(getElement.params[0].type).toBeUndefined(); + expect(getElement.params[0].name).toBe('id'); + expect(getElement.params[0].description).toBe('The id of the element.'); + }); + + it('When a symbol has an @param tag with a non-alpha name like "...", the doclet has a params property that includes that param.', function() { + var combine = docSet.getByLongname('combine')[0]; + + expect(typeof combine.params).toBe('object'); + expect(combine.params.length).toBe(1); + expect(combine.params[0].type).toBeUndefined(); + expect(combine.params[0].name).toBe('...'); + expect(combine.params[0].description).toBe('Two or more elements.'); + }); + + it('When a symbol has an @param tag with name followed by a dash, the doclet has a params property that includes that param.', function() { + var split = docSet.getByLongname('split')[0]; + + expect(typeof split.params).toBe('object'); + expect(split.params.length).toBe(1); + expect(split.params[0].type).toBeUndefined(); + expect(split.params[0].name).toBe('delimiter'); + expect(split.params[0].description).toBe('What to split on.'); + }); + + it('When a symbol has an @param tag with no name or type, the doclet has a params property that includes that param.', function() { + var commit = docSet.getByLongname('commit')[0]; + + expect(typeof commit.params).toBe('object'); + expect(commit.params.length).toBe(1); + expect(commit.params[0].type).toBeUndefined(); + expect(commit.params[0].description).toBe('If true make the commit atomic.'); + }); + + it('When a symbol has a @param tag with no type but a name that indicates a default value or optional type, this is copied over to the params property.', function() { + var request = docSet.getByLongname('request')[0]; + + expect(typeof request.params).toBe('object'); + expect(request.params.length).toBe(1); + expect(request.params[0].type).toBeUndefined(); + expect(request.params[0].name).toBe('async'); + expect(request.params[0].defaultvalue).toBe('true'); + expect(request.params[0].optional).toBe(true); + expect(request.params[0].description).toBe('whether to be asynchronous'); + }); + + it('When a symbol has a @param tag with no name, the doclet includes the param name from the code', function() { + var commit = docSet.getByLongname('commit')[0]; + + expect(commit.params[0].name).toBe('atomic'); + }); + + it('When a symbol has a @param tag with no name, and the symbol is part of an assignment expression, the doclet includes the param name from the code', function() { + var classOpen = docSet.getByLongname('MySocket#open')[0]; + var moduleOpen = docSet2.getByLongname('module:mysocket.open')[0]; + + expect(classOpen.params[0].name).toBe('hostname'); + expect(classOpen.params[1].name).toBe('port'); + + expect(moduleOpen.params[0].name).toBe('hostname'); + expect(moduleOpen.params[1].name).toBe('port'); + }); + + it('When a symbol has a @param tag with an invalid type expression, the JSDoc comment is ignored.', function() { + var badDocSet = jasmine.getDocSetFromFile('test/fixtures/paramtaginvalidtype.js'); + var test = badDocSet.getByLongname('Test#test')[0]; + + expect(test).toBeDefined(); + expect(typeof test).toBe('object'); + + expect(test.meta).toBeDefined(); + expect(typeof test.meta).toBe('object'); + + expect(test.meta.filename).toBeDefined(); + expect(test.meta.filename).toBe('[[string0]]'); + + expect(test.description).not.toBeDefined(); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/privatetag.js b/third_party/jsdoc/test/specs/tags/privatetag.js new file mode 100644 index 0000000000..059f1af33e --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/privatetag.js @@ -0,0 +1,75 @@ +/*global afterEach, describe, expect, it, jasmine, spyOn */ +'use strict'; + +var definitions = require('jsdoc/tag/dictionary/definitions'); +var dictionary = require('jsdoc/tag/dictionary'); +var Dictionary = dictionary.Dictionary; +var doclet = require('jsdoc/doclet'); +var logger = require('jsdoc/util/logger'); + +var originalDictionary = dictionary; + +describe('@private tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/privatetag.js'); + var foo = docSet.getByLongname('Foo')[0]; + var bar = docSet.getByLongname('Foo#bar')[0]; + + it('When a symbol has a @private tag, the doclet has an `access` property set to `private`.', + function() { + expect(foo.access).toBe('private'); + }); + + it('When a symbol tagged with @private has members, the members do not inherit the @private ' + + 'tag.', function() { + expect(bar.access).not.toBeDefined(); + }); + + describe('JSDoc tags', function() { + afterEach(function() { + doclet._replaceDictionary(originalDictionary); + }); + + it('When JSDoc tags are enabled, the @private tag does not accept a value.', function() { + var dict = new Dictionary(); + var privateDocs; + + definitions.defineTags(dict, definitions.jsdocTags); + doclet._replaceDictionary(dict); + spyOn(logger, 'warn'); + + privateDocs = jasmine.getDocSetFromFile('test/fixtures/privatetag2.js'); + + expect(logger.warn).toHaveBeenCalled(); + }); + }); + + describe('Closure Compiler tags', function() { + afterEach(function() { + doclet._replaceDictionary(originalDictionary); + }); + + it('When Closure Compiler tags are enabled, the @private tag accepts a type expression.', + function() { + var connectionPorts; + var dict = new Dictionary(); + var privateDocs; + + definitions.defineTags(dict, definitions.closureTags); + doclet._replaceDictionary(dict); + spyOn(logger, 'warn'); + + privateDocs = jasmine.getDocSetFromFile('test/fixtures/privatetag2.js'); + connectionPorts = privateDocs.getByLongname('connectionPorts')[0]; + + expect(logger.warn).not.toHaveBeenCalled(); + + expect(connectionPorts).toBeDefined(); + expect(connectionPorts.access).toBe('private'); + + expect(connectionPorts.type).toBeDefined(); + expect(connectionPorts.type.names).toBeDefined(); + expect(connectionPorts.type.names.length).toBe(1); + expect(connectionPorts.type.names[0]).toBe('Object.'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/propertytag.js b/third_party/jsdoc/test/specs/tags/propertytag.js new file mode 100644 index 0000000000..3fe20ac415 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/propertytag.js @@ -0,0 +1,21 @@ +'use strict'; + +describe('@property tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/propertytag.js'), + myobject = docSet.getByLongname('myobject')[0]; + + it('When a symbol has a @property tag, the property appears in the doclet.', function() { + expect(typeof myobject.properties).toBe('object'); + expect(myobject.properties.length).toBe(4); + + expect(myobject.properties[0].name).toBe('id'); + expect(myobject.properties[1].name).toBe('defaults'); + expect(myobject.properties[2].name).toBe('defaults.a'); + expect(myobject.properties[3].name).toBe('defaults.b'); + + expect(myobject.properties[0].defaultvalue).toBe('abc123'); + + expect(myobject.properties[1].description).toBe('The default values.'); + expect(myobject.properties[1].type.names[0]).toBe('Object'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/protectedtag.js b/third_party/jsdoc/test/specs/tags/protectedtag.js new file mode 100644 index 0000000000..b904a97f1c --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/protectedtag.js @@ -0,0 +1,75 @@ +/*global afterEach, describe, expect, it, jasmine, spyOn */ +'use strict'; + +var definitions = require('jsdoc/tag/dictionary/definitions'); +var dictionary = require('jsdoc/tag/dictionary'); +var Dictionary = dictionary.Dictionary; +var doclet = require('jsdoc/doclet'); +var logger = require('jsdoc/util/logger'); + +var originalDictionary = dictionary; + +describe('@protected tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/protectedtag.js'); + var uidCounter = docSet.getByLongname('module:uid~uidCounter')[0]; + var uidRoot = docSet.getByLongname('module:uid~uidObjects.root')[0]; + + it('When a symbol has a @protected tag, the doclet has an `access` property set to ' + + '`protected`.', function() { + expect(uidCounter.access).toBe('protected'); + }); + + it('When a symbol tagged with @protected has members, the members do not inherit the ' + + '@protected tag.', function() { + expect(uidRoot.access).not.toBeDefined(); + }); + + describe('JSDoc tags', function() { + afterEach(function() { + doclet._replaceDictionary(originalDictionary); + }); + + it('When JSDoc tags are enabled, the @protected tag does not accept a value.', function() { + var dict = new Dictionary(); + var protectedDocs; + + definitions.defineTags(dict, definitions.jsdocTags); + doclet._replaceDictionary(dict); + spyOn(logger, 'warn'); + + protectedDocs = jasmine.getDocSetFromFile('test/fixtures/protectedtag2.js'); + + expect(logger.warn).toHaveBeenCalled(); + }); + }); + + describe('Closure Compiler tags', function() { + afterEach(function() { + doclet._replaceDictionary(originalDictionary); + }); + + it('When Closure Compiler tags are enabled, the @private tag accepts a type expression.', + function() { + var dict = new Dictionary(); + var protectedDocs; + var uidCounter; + + definitions.defineTags(dict, definitions.closureTags); + doclet._replaceDictionary(dict); + spyOn(logger, 'warn'); + + protectedDocs = jasmine.getDocSetFromFile('test/fixtures/protectedtag2.js'); + uidCounter = protectedDocs.getByLongname('uidCounter')[0]; + + expect(logger.warn).not.toHaveBeenCalled(); + + expect(uidCounter).toBeDefined(); + expect(uidCounter.access).toBe('protected'); + + expect(uidCounter.type).toBeDefined(); + expect(uidCounter.type.names).toBeDefined(); + expect(uidCounter.type.names.length).toBe(1); + expect(uidCounter.type.names[0]).toBe('number'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/readonlytag.js b/third_party/jsdoc/test/specs/tags/readonlytag.js new file mode 100644 index 0000000000..8465cb804d --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/readonlytag.js @@ -0,0 +1,9 @@ +describe("@readonly tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/readonlytag.js'), + Collection = docSet.getByLongname('Collection')[0], + length = docSet.getByLongname('Collection#length')[0]; + + it('When a symbol has an @readonly tag, the doclet has an readonly property that is true.', function() { + expect(length.readonly).toBe(true); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/requirestag.js b/third_party/jsdoc/test/specs/tags/requirestag.js new file mode 100644 index 0000000000..f6bcf7acb5 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/requirestag.js @@ -0,0 +1,24 @@ +/*global describe: true, expect: true, it: true, jasmine: true */ +describe("@requires tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/requirestag.js'); + var foo = docSet.getByLongname('foo')[0]; + var bar = docSet.getByLongname('bar')[0]; + var baz = docSet.getByLongname('baz')[0]; + + it('When a symbol has a @requires tag, the doclet has a requires property that includes that value, with the "module:" namespace added.', function() { + expect( Array.isArray(foo.requires) ).toBe(true); + expect(foo.requires[0]).toBe('module:foo/helper'); + + expect( Array.isArray(bar.requires) ).toBe(true); + expect(bar.requires[0]).toBe('module:foo'); + expect(bar.requires[1]).toBe('module:Pez#blat'); + }); + + it('When a symbol has a @requires tag whose value is an inline {@link} tag, the doclet has a requires property that includes that tag without modification.', function() { + expect( Array.isArray(baz.requires) ).toBe(true); + expect(baz.requires[0]).toBe('{@link module:zest}'); + expect(baz.requires[1]).toBe('{@linkplain module:zing}'); + // by design, we don't validate the tag name, as long as it starts with @link + expect(baz.requires[2]).toBe('{@linkstupid module:pizzazz}'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/returnstag.js b/third_party/jsdoc/test/specs/tags/returnstag.js new file mode 100644 index 0000000000..fdf6132189 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/returnstag.js @@ -0,0 +1,37 @@ +/*global describe, expect, it, jasmine */ +describe('@returns tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/returnstag.js'); + + it('When a symbol has a @returns tag with a type and description, the doclet has a "returns" property that includes that info.', function() { + var find = docSet.getByLongname('find')[0]; + + expect(typeof find.returns).toBe('object'); + expect(find.returns.length).toBe(1); + expect(find.returns[0].type.names.join(', ')).toBe('string, Array.'); + expect(find.returns[0].description).toBe('The names of the found item(s).'); + }); + + it('When a symbol has a @returns tag with a non-nullable type, the doclet indicates that the type is non-nullable', function() { + var getName = docSet.getByLongname('getName')[0]; + + expect(typeof getName.returns).toBe('object'); + expect(getName.returns.length).toBe(1); + expect(getName.returns[0].nullable).toBe(false); + }); + + it('When a symbol has a @returns tag with only a description, the doclet has a "returns" property that includes the description.', function() { + var bind = docSet.getByLongname('bind')[0]; + + expect(typeof bind.returns).toBe('object'); + expect(bind.returns.length).toBe(1); + expect(bind.returns[0].description).toBe('The binding id.'); + }); + + it('When a symbol has a @returns tag without a type but with an inline tag, the inline tag is not mistaken for a type.', function() { + var convert = docSet.getByLongname('convert')[0]; + + expect(typeof convert.returns).toBe('object'); + expect(convert.returns.length).toBe(1); + expect(convert.returns[0].description).toBe('An object to be passed to {@link find}.'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/scopetags.js b/third_party/jsdoc/test/specs/tags/scopetags.js new file mode 100644 index 0000000000..0b18a58c33 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/scopetags.js @@ -0,0 +1,31 @@ +describe('scope tags', function () { + var docSet = jasmine.getDocSetFromFile('test/fixtures/scopetags.js'); + + // @inner, @instance, @static (@global has its own file) + describe("@inner tag", function() { + var doc = docSet.getByLongname('module:scopetags~myInner')[0]; + + it("sets the doclet's 'scope' property to 'inner'", function() { + expect(doc.scope).toBeDefined(); + expect(doc.scope).toBe('inner'); + }); + }); + + describe("@instance tag", function() { + var doc = docSet.getByLongname('module:scopetags#myInstance')[0]; + + it("sets the doclet's 'scope' property to 'instance'", function() { + expect(doc.scope).toBeDefined(); + expect(doc.scope).toBe('instance'); + }); + }); + + describe("@static tag", function() { + var doc = docSet.getByLongname('module:scopetags.myStatic')[0]; + + it("sets the doclet's 'scope' property to 'static'", function() { + expect(doc.scope).toBeDefined(); + expect(doc.scope).toBe('static'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/seetag.js b/third_party/jsdoc/test/specs/tags/seetag.js new file mode 100644 index 0000000000..d6228a5958 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/seetag.js @@ -0,0 +1,13 @@ +describe("@see tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/seetag.js'), + foo = docSet.getByLongname('foo')[0], + bar = docSet.getByLongname('bar')[0]; + + it('When a symbol has an @see tag, the doclet has a see property that includes that value.', function() { + expect(typeof foo.see).toBe('object'); + expect(foo.see[0]).toBe('{@link bar}'); + + expect(typeof bar.see).toBe('object'); + expect(bar.see[0]).toBe('http://example.com/someref'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/sincetag.js b/third_party/jsdoc/test/specs/tags/sincetag.js new file mode 100644 index 0000000000..91ab3d838b --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/sincetag.js @@ -0,0 +1,8 @@ +describe("@since tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/sincetag.js'), + foo = docSet.getByLongname('foo')[0]; + + it('When a symbol has an @since tag, the doclet has a since property set to true.', function() { + expect(foo.since).toBe('1.2.3'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/summarytag.js b/third_party/jsdoc/test/specs/tags/summarytag.js new file mode 100644 index 0000000000..f24874422f --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/summarytag.js @@ -0,0 +1,7 @@ +describe("@summary tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/summarytag.js'), + doc = docSet.getByLongname('Sam')[0]; + it("sets the doclet's 'summary' property to the tag value", function() { + expect(doc.summary).toBe('I do not like green eggs and ham!'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/thistag.js b/third_party/jsdoc/test/specs/tags/thistag.js new file mode 100644 index 0000000000..5fac4ae694 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/thistag.js @@ -0,0 +1,16 @@ +describe("@this tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/thistag.js'), + setName = docSet.getByLongname('setName')[0], + fooName = docSet.getByLongname('Foo#name')[0]; + + it('When a symbol has a @this tag, the doclet has a this property that is set to that value.', function() { + expect(setName['this']).toBe('Foo'); + }); + + it('When a this symbol is documented inside a function with a @this tag, the symbol is documented as a member of that tags value.', function() { + expect(typeof fooName).toBe('object'); + expect(fooName.name).toBe('name'); + expect(fooName.memberof).toBe('Foo'); + expect(fooName.scope).toBe('instance'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/todotag.js b/third_party/jsdoc/test/specs/tags/todotag.js new file mode 100644 index 0000000000..410bb55fe7 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/todotag.js @@ -0,0 +1,13 @@ +describe("@todo tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/todotag.js'), + doc = docSet.getByLongname('x')[0]; + + it("adds the entries into a 'todo' array on the doclet", function() { + expect(doc.todo).toBeDefined(); + expect(Array.isArray(doc.todo)).toBeTruthy(); + expect(doc.todo.length).toBe(2); + + expect(doc.todo).toContain('something'); + expect(doc.todo).toContain('something else'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/tutorialtag.js b/third_party/jsdoc/test/specs/tags/tutorialtag.js new file mode 100644 index 0000000000..ebb034b3f5 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/tutorialtag.js @@ -0,0 +1,12 @@ +describe("@tutorial tag", function() { + // these are tests for the block usage, not the inline usage. see util/templateHelper for that. + var docSet = jasmine.getDocSetFromFile('test/fixtures/tutorialtag.js'), + doc = docSet.getByLongname('x')[0]; + + it("adds the listed tutorials to a 'tutorials' array on the doclet", function () { + expect(Array.isArray(doc.tutorials)).toBeTruthy(); + expect(doc.tutorials.length).toBe(2); + expect(doc.tutorials).toContain('tute1'); + expect(doc.tutorials).toContain('tute2'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/typedeftag.js b/third_party/jsdoc/test/specs/tags/typedeftag.js new file mode 100644 index 0000000000..aa65fea502 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/typedeftag.js @@ -0,0 +1,40 @@ +/*global describe, expect, it, jasmine */ +describe('@typedef tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/typedeftag.js'); + var numberlike = docSet.getByLongname('calc.NumberLike')[0]; + var operator = docSet.getByLongname('calc.Operator')[0]; + var result = docSet.getByLongname('calc.Result')[0]; + var calculatorBattery = docSet.getByLongname('CalculatorBattery')[0]; + + it('When a comment has a @typedef tag, the doclet has a kind property set to "typedef".', function() { + expect(numberlike.kind).toBe('typedef'); + }); + + it('When a comment has a @typedef tag with a type, the doclet has a type property set to that type.', function() { + expect(typeof numberlike.type).toBe('object'); + expect(typeof numberlike.type.names).toBe('object'); + expect(numberlike.type.names.length).toBe(2); + expect(numberlike.type.names[0]).toBe('string'); + expect(numberlike.type.names[1]).toBe('number'); + }); + + it('When a comment has a @typedef tag with a name, the doclet has a name property set to that name.', function() { + expect(numberlike.name).toBe('NumberLike'); + expect(numberlike.longname).toBe('calc.NumberLike'); + }); + + it('When a symbol has a @typedef tag without a name, the doclet has a name property set to the symbol name.', function() { + expect(operator.name).toBe('Operator'); + expect(operator.longname).toBe('calc.Operator'); + }); + + it('When a symbol has a @typedef tag with a name, the name in the tag takes precedence over the symbol name.', function() { + expect(result.name).toBe('Result'); + expect(result.longname).toBe('calc.Result'); + }); + + it('When a symbol has a @typedef tag with a name and no scope, the scope defaults to `global`.', function() { + expect(calculatorBattery).toBeDefined(); + expect(calculatorBattery.scope).toBe('global'); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/typekind.js b/third_party/jsdoc/test/specs/tags/typekind.js new file mode 100644 index 0000000000..aea60db02a --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/typekind.js @@ -0,0 +1,15 @@ +describe("@kind tag with type", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/typekind.js'), + blog = docSet.getByLongname('module:blog/server')[0], + port = docSet.getByLongname('module:blog/server.port')[0]; + + it('When a module symbol has an kind tag, that includes a {type} clause, the doclet has a type property set to that {type} clause', function() { + expect(typeof blog.type).toBe('object'); + expect(blog.type.names.join(', ')).toBe('ConnectServer'); + }); + + it('When a property symbol has an kind tag, that includes a {type} clause, the doclet has a type property set to that {type} clause', function() { + expect(typeof port.type).toBe('object'); + expect(port.type.names.join(', ')).toBe('number'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/specs/tags/typetag.js b/third_party/jsdoc/test/specs/tags/typetag.js new file mode 100644 index 0000000000..2a863d8140 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/typetag.js @@ -0,0 +1,77 @@ +/*global afterEach, describe, expect, it, jasmine, spyOn */ +'use strict'; + +var definitions = require('jsdoc/tag/dictionary/definitions'); +var dictionary = require('jsdoc/tag/dictionary'); +var Dictionary = dictionary.Dictionary; +var doclet = require('jsdoc/doclet'); +var logger = require('jsdoc/util/logger'); + +var originalDictionary = dictionary; + +describe('@type tag', function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/typetag.js'); + + it('When a symbol has a @type tag, the doclet has a type property set to that value\'s type.', function() { + var foo = docSet.getByLongname('foo')[0]; + + expect(typeof foo.type).toBe('object'); + expect(typeof foo.type.names).toBe('object'); + expect(foo.type.names.join(', ')).toBe('string, Array.'); + }); + + it('When a symbol has a @type tag set to a plain string, the doclet has a type property set to that value\'s type.', function() { + var bar = docSet.getByLongname('bar')[0]; + + expect(bar.type.names.join(', ')).toBe('integer'); + }); + + it('When a symbol has a @type tag for a non-nullable type, the doclet indicates that the type is non-nullable', function() { + var baz = docSet.getByLongname('baz')[0]; + + expect(baz.nullable).toBe(false); + }); + + describe('JSDoc tags', function() { + afterEach(function() { + doclet._replaceDictionary(originalDictionary); + }); + + it('When JSDoc tags are enabled, the @type tag does not accept a description.', function() { + var dict = new Dictionary(); + var typeDocs; + + definitions.defineTags(dict, definitions.jsdocTags); + doclet._replaceDictionary(dict); + spyOn(logger, 'warn'); + + typeDocs = jasmine.getDocSetFromFile('test/fixtures/typetag2.js'); + + expect(logger.warn).toHaveBeenCalled(); + }); + }); + + describe('Closure tags', function() { + afterEach(function() { + doclet._replaceDictionary(originalDictionary); + }); + + it('When Closure tags are enabled, the @type tag accepts a description.', function() { + var dict = new Dictionary(); + var stringOrNumber; + var typeDocs; + + definitions.defineTags(dict, definitions.closureTags); + doclet._replaceDictionary(dict); + spyOn(logger, 'warn'); + + typeDocs = jasmine.getDocSetFromFile('test/fixtures/typetag2.js'); + stringOrNumber = typeDocs.getByLongname('stringOrNumber')[0]; + + expect(logger.warn).not.toHaveBeenCalled(); + + expect(stringOrNumber).toBeDefined(); + expect(stringOrNumber.description).toBe('A string or a number.'); + }); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/undocumentedtag.js b/third_party/jsdoc/test/specs/tags/undocumentedtag.js new file mode 100644 index 0000000000..daf14a5306 --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/undocumentedtag.js @@ -0,0 +1,12 @@ +describe("@undocumented tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/undocumentedtag.js'), + doc = docSet.getByLongname('x')[0]; + + it("sets the doclet's 'undocumented' property to true", function () { + expect(doc.undocumented).toBeTruthy(); + }); + + it("clears the doclet's 'comment' property", function () { + expect(doc.comment).toBe(''); + }); +}); diff --git a/third_party/jsdoc/test/specs/tags/versiontag.js b/third_party/jsdoc/test/specs/tags/versiontag.js new file mode 100644 index 0000000000..1b50ada28a --- /dev/null +++ b/third_party/jsdoc/test/specs/tags/versiontag.js @@ -0,0 +1,8 @@ +describe("@version tag", function() { + var docSet = jasmine.getDocSetFromFile('test/fixtures/versiontag.js'), + foo = docSet.getByLongname('foo')[0]; + + it('When a symbol has an @version tag, the doclet has a version property set to that value.', function() { + expect(foo.version).toBe('1.2.3'); + }); +}); \ No newline at end of file diff --git a/third_party/jsdoc/test/tutorials/build.sh b/third_party/jsdoc/test/tutorials/build.sh new file mode 100755 index 0000000000..8937f26da0 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/build.sh @@ -0,0 +1,2 @@ +rm -rf out +../../jsdoc -u tutorials src -d out diff --git a/third_party/jsdoc/test/tutorials/duplicateDefined/asdf.html b/third_party/jsdoc/test/tutorials/duplicateDefined/asdf.html new file mode 100644 index 0000000000..1f8a662233 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/duplicateDefined/asdf.html @@ -0,0 +1 @@ +

        tutorial ASDF

        diff --git a/third_party/jsdoc/test/tutorials/duplicateDefined/asdf.json b/third_party/jsdoc/test/tutorials/duplicateDefined/asdf.json new file mode 100644 index 0000000000..c769dc5489 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/duplicateDefined/asdf.json @@ -0,0 +1 @@ +{"title": "Conflicting title"} diff --git a/third_party/jsdoc/test/tutorials/duplicateDefined/index.json b/third_party/jsdoc/test/tutorials/duplicateDefined/index.json new file mode 100644 index 0000000000..9ceb182fae --- /dev/null +++ b/third_party/jsdoc/test/tutorials/duplicateDefined/index.json @@ -0,0 +1,5 @@ +{ + "asdf": { + "title": "Tutorial Asdf" + } +} diff --git a/third_party/jsdoc/test/tutorials/incomplete/parent.html b/third_party/jsdoc/test/tutorials/incomplete/parent.html new file mode 100644 index 0000000000..aa4a4ff951 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/incomplete/parent.html @@ -0,0 +1,3 @@ +

        Test.html

        + +

        {@link Test}

        diff --git a/third_party/jsdoc/test/tutorials/incomplete/parent.json b/third_party/jsdoc/test/tutorials/incomplete/parent.json new file mode 100644 index 0000000000..f2e4765a71 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/incomplete/parent.json @@ -0,0 +1 @@ +{"title": "missing child tutorial", "children": ["child"]} diff --git a/third_party/jsdoc/test/tutorials/src/x.js b/third_party/jsdoc/test/tutorials/src/x.js new file mode 100644 index 0000000000..987f8f982a --- /dev/null +++ b/third_party/jsdoc/test/tutorials/src/x.js @@ -0,0 +1,8 @@ +/** + * Test {@tutorial test2} {@tutorial dupa} + * + * @class + * @tutorial test + * @tutorial jasia + */ +function Test() {} diff --git a/third_party/jsdoc/test/tutorials/tutorials/constructor.md b/third_party/jsdoc/test/tutorials/tutorials/constructor.md new file mode 100644 index 0000000000..2f181f0854 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/constructor.md @@ -0,0 +1 @@ +This tutorial has a tricksy name to make sure we are not loading Array.constructor or Object.constructor. diff --git a/third_party/jsdoc/test/tutorials/tutorials/multiple.json b/third_party/jsdoc/test/tutorials/tutorials/multiple.json new file mode 100644 index 0000000000..994d86559a --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/multiple.json @@ -0,0 +1,12 @@ +{ + "test2": { + "title": "Test 2", + "children": ["test3", "test6"] + }, + "test3": { + "title": "Test 3", + "children": { + "test4": {"title": "Test 4"} + } + } +} diff --git a/third_party/jsdoc/test/tutorials/tutorials/recursive/test_recursive.md b/third_party/jsdoc/test/tutorials/tutorials/recursive/test_recursive.md new file mode 100644 index 0000000000..d87c0708b4 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/recursive/test_recursive.md @@ -0,0 +1 @@ +# test_recursive.md \ No newline at end of file diff --git a/third_party/jsdoc/test/tutorials/tutorials/test.html b/third_party/jsdoc/test/tutorials/tutorials/test.html new file mode 100644 index 0000000000..aa4a4ff951 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/test.html @@ -0,0 +1,3 @@ +

        Test.html

        + +

        {@link Test}

        diff --git a/third_party/jsdoc/test/tutorials/tutorials/test.json b/third_party/jsdoc/test/tutorials/tutorials/test.json new file mode 100644 index 0000000000..d894f21e77 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/test.json @@ -0,0 +1 @@ +{"title": "Test tutorial", "children": ["test2"]} diff --git a/third_party/jsdoc/test/tutorials/tutorials/test2.markdown b/third_party/jsdoc/test/tutorials/tutorials/test2.markdown new file mode 100644 index 0000000000..09510c03c4 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/test2.markdown @@ -0,0 +1 @@ +# test2.markdown diff --git a/third_party/jsdoc/test/tutorials/tutorials/test3.htm b/third_party/jsdoc/test/tutorials/tutorials/test3.htm new file mode 100644 index 0000000000..8eac05240a --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/test3.htm @@ -0,0 +1,3 @@ +

        Test3.html

        + +

        {@link Test}

        diff --git a/third_party/jsdoc/test/tutorials/tutorials/test4.md b/third_party/jsdoc/test/tutorials/tutorials/test4.md new file mode 100644 index 0000000000..0be836ad34 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/test4.md @@ -0,0 +1 @@ +# test4.md diff --git a/third_party/jsdoc/test/tutorials/tutorials/test5.txt b/third_party/jsdoc/test/tutorials/tutorials/test5.txt new file mode 100644 index 0000000000..1769f0de89 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/test5.txt @@ -0,0 +1 @@ +Should not be included as a tutorial. diff --git a/third_party/jsdoc/test/tutorials/tutorials/test6.xml b/third_party/jsdoc/test/tutorials/tutorials/test6.xml new file mode 100644 index 0000000000..1c489be3e7 --- /dev/null +++ b/third_party/jsdoc/test/tutorials/tutorials/test6.xml @@ -0,0 +1 @@ +

        test 6 - has no metadata

        diff --git a/tutorials/caveats.html b/tutorials/caveats.html new file mode 100644 index 0000000000..af7a06e711 --- /dev/null +++ b/tutorials/caveats.html @@ -0,0 +1,46 @@ + + +

        +There are several content scenarios we do not support. We make no claims about +their validity within the DASH specification nor any related specification. We +have not found any of these things in any existing DASH content. Most of these +restrictions allow us to make simplifying assumptions in the code. + +

          +
        • MPD Representations containing more than one of SegmentBase, SegmentList, + or SegmentBase.
        • +
        • MPD SegmentTimelines which contain gaps between segments.
        • +
        • MPD SegmentTimeline combined with an explicit segment index URL.
        • +
        • Representations within an AdaptationSet where the MIME type varies.
        • +
        • Changing DRM schemes across MPD Periods.
        • +
        • Changing DRM schemes when switching MPD Representations.
        • +
        • WebM streams without initialization segments.
        • +
        • Parsing dynamically-sized EBML elements in WebM streams.
        • +
        • Parsing 8-byte EBML IDs in WebM streams. *
        • +
        • Parsing EBML integers with more than 53 significant bits in WebM streams. + *
        • +
        • Parsing nested SIDX boxes in MP4 streams.
        • +
        • MP4 video AdaptationSet with WebM audio AdaptationSet, or vice-versa. +
          • We support MPDs with both MP4 and WebM in the same manifest, but we + will choose either MP4 or WebM for both audio and video. They will + never be mixed.
          +
        • +
        + +* = JavaScript limitation +

        + diff --git a/tutorials/caveats.json b/tutorials/caveats.json new file mode 100644 index 0000000000..4de0e12d9a --- /dev/null +++ b/tutorials/caveats.json @@ -0,0 +1,3 @@ +{ + "title": "Content Restrictions" +} diff --git a/tutorials/dev.html b/tutorials/dev.html new file mode 100644 index 0000000000..772942e05c --- /dev/null +++ b/tutorials/dev.html @@ -0,0 +1,225 @@ + + +

        +Quick Setup (TL;DR) +

        + +

        +To get started quickly, just run ./build/all.sh and skip this document. +

        + + +

        +Closure, Annotations, and the Build Process +

        + +

        +The Shaka Player library was designed to be compiled with Google's open-sourced +JavaScript compiler, {@link http://goo.gl/HZfHi Closure}. The Closure compiler +produces JavaScript code which is minified, optimized, obfuscated, and stripped +of dead code. Deploying a Closure-compiled JavaScript library saves bandwidth, +and the browser can also load and parse the code faster. +

        + +

        +Closure also enforces structure and type-safety on the JavaScript language. It +allows developers to annotate code with type information. The compiler can use +this information to optimize the code, but it also helps catch bugs early, such +as missing arguments, arguments of the wrong type, typos in names, etc. +

        + +

        +The annotation syntax is derived from {@link http://usejsdoc.org/ JSDoc}. This +means that the annotated code is also self-documenting. We generate docs based +on these annotations using JSDoc. For information on annotation syntax, please +refer to {@link http://goo.gl/xxHG2W Annotating JavaScript} on Closure's site. +

        + +

        +The Closure compiler and JSDoc are both included in the source. To compile the +Shaka Player library, simply run ./build/all.sh from the source root. Compiled +JavaScript will be output to shaka-player.compiled.js in the source root. +

        + +

        +To generate documentation, run ./build/docs.sh from the source root. Docs will +be output to ./docs/api/ in HTML format. +

        + + +

        +The Test App +

        + +

        +The project includes a test application which we used for manual testing during +development. The test app is made up of index.html, index.css, and app.js, and +can be accessed by pointing a web server at your source code checkout. +

        + +

        +Many of the settings in the test app can be controlled with URL parameters such +that the page can be reloaded without the need to manually change settings. To +see a canonical list of URL parameters, see app.js. +

        + +

        +Some parameters require a value, but most are boolean. The behavior of boolean +parameters is activated by presence. Parameters are separated by semicolons. + +

          +
        • lang=LANG - Changes the language preference fed to the library. Language + settings use language tags from {@link http://goo.gl/J6yQvS BCP 47}, such + as "en", "en-US', "fr-CA", "el", "deu-AT", etc.
        • +
        • nocenc - Select the non-encrypted version of the default sample.
        • +
        • vp9 - Select a VP9 DASH sample.
        • +
        • dash - Auto-play the selected DASH stream.
        • +
        • compiled - Load the library in compiled mode. See "Loader" below.
        • +
        • debug - Set the log level to show debug messages.
        • +
        • v - Set the log level to show debug and verbose messages.
        • +
        +

        + +

        +Example URLs for the test app: +

          +
        • http://localhost/shaka/?nocenc +
          • Defaults the UI to a non-encrypted sample.
          +
        • +
        • http://localhost/shaka/?dash;vp9 +
          • Selects the VP9 sample and auto-plays it.
          +
        • +
        • http://localhost/shaka/?dash;lang=fr +
          • Sets the language to French and auto-plays.
          +
        • +
        • http://localhost/shaka/?compiled;dash +
          • Auto-plays the default sample in compiled mode.
          +
        • +
        +

        + + +

        +The Loader +

        + +

        +The Shaka Player library can be used without compiling it. This is useful when +making changes, since it shortens the testing cycle for the developer. But the +library will be deployed in a compiled form, so it is critical to test a change +using the compiled library once it has been vetted uncompiled. +

        + +

        +To make it easier to switch between compiled and uncompiled mode during testing +and development, load.js acts as a shim between index.html and the library. It +will select which version of the library to load based on the boolean parameter +"compiled". (See "Test App" above for info on parameters.) +

        + +

        +At any time during development or testing, you can switch modes by changing the +URL. Once the application has loaded, you cannot change modes without reloading +the page. A production application would directly include the compiled library +instead of using this loader. +

        + +

        +Remember, when running in compiled mode, you must recompile the library after a +change by running ./build/all.sh. +

        + + +

        +Tests +

        + +

        +Tests live in the "spec" folder and are run by spec_runner.html. To run tests, +just point your browser at this HTML file. Do not do this using a file:// URL, +but through a local web server. +

        + + +

        +Source Code Layout +

        + +

        +

          +
        • assets/ - assets for smoke-testing basic functionality
        • +
        • build/ - build scripts +
            +
          • build.sh - compiles the library and generates + shaka-player.compiled.js
          • +
          • gendeps.sh - computes dependencies for running non-compiled code
          • +
          • lint.sh - checks the code for style issues
          • +
          • check.sh - combination of build.sh and lint.sh
          • +
          • all.sh - combination of gendeps.sh, build.sh, and lint.sh
          • +
          • docs.sh - generate documentation
          • +
          +
        • +
        • docs/ - documentation +
            +
          • api/ - generated documentation
          • +
          • reference/ - reference documents
          • +
          +
        • +
        • externs/ - definitions of external APIs, used by the compiler
        • +
        • lib/ - the Shaka Player Library source, organized by namespace +
            +
          • dash/ - DASH-related classes (internal)
          • +
          • debug/ - debug-related classes (internal)
          • +
          • player/ - all classes that an integrator must interact with
          • +
          • polyfill/ - all {@tutorial polyfills}
          • +
          • util/ - utility classes (internal)
          • +
          +
        • +
        • spec/ - unit and integration tests
        • +
        • spec_runner.html - front-end to run unit and integration tests
        • +
        • support.html - browser API support test
        • +
        • third_party/ - third_party dependencies +
            +
          • SUMMARY.txt - summary of all libraries and their licenses
          • +
          • blanket_jasmine/ - Blanket JS coverage library
          • +
          • closure/ - Closure JS compiler and JS library
          • +
          • jasmine/ - Jasmine JS testing framework
          • +
          • jsdoc/ - JS documentation generator
          • +
          +
        • +
        • tutorials/ - source code for these tutorials
        • + +
          + +
        • app.js - manual testing/sample application (JS)
        • +
        • index.html - manual testing/sample application (HTML)
        • +
        • index.css - manual testing/sample application (CSS)
        • +
        • load.js - library loader (for testing/bootstrapping)
        • + +
          + +
        • jsdoc.conf.json - configuration for generating documentation
        • +
        • shaka-player.compiled.js - compiler output (suitable for deployment)
        • +
        • shaka-player.compiled.debug.js - compiler output (with debugging enabled + via source map)
        • +
        • shaka-player.compiled.debug.map - compiler output + ({@link http://goo.gl/5xQEy source map})
        • +
        • shaka-player.uncompiled.js - requires all exported classes in uncompiled + mode
        • +
        +

        + diff --git a/tutorials/dev.json b/tutorials/dev.json new file mode 100644 index 0000000000..f0e86da1f8 --- /dev/null +++ b/tutorials/dev.json @@ -0,0 +1,3 @@ +{ + "title": "Shaka Player Development" +} diff --git a/tutorials/intro.html b/tutorials/intro.html new file mode 100644 index 0000000000..f58054b56d --- /dev/null +++ b/tutorials/intro.html @@ -0,0 +1,107 @@ + + +

        +DASH Streams at a High Level +

        + +

        +Dynamic Adaptive Streaming over HTTP (DASH) is a technique for adaptive bitrate +streaming of content over the Internet delivered from conventional web servers. +This is a quick overview of DASH for those who are not familiar with it. For a +more detailed view of DASH, visit {@link http://goo.gl/Hle6dc dashif.org}. +

        + +

        +Every DASH stream is described by a manifest written in XML. Within a manifest +file, representation elements describe the DASH stream's audio, video, and text +sources. There may be more than one representation of the same content. These +typically differ in terms of bitrate and resolution, although there can be some +other variations as well. +

        + +

        +Representations are grouped into one or more adaptation sets, and a DASH client +can switch automatically between representations within a set. Adaptation sets +can differ in codec and language. DASH streams usually have audio and video in +separate adaptation sets. Although the DASH specification allows for audio and +video to be multiplexed, the Shaka Player does not support this type of stream. +

        + + +

        +Multiple Resolutions and Bitrates +

        + +

        +For the Shaka Player to adapt and choose the best representation for the user's +available bandwidth, you must encode your content into more than one resolution +and bitrate. It is up to you what bitrates and resolutions make sense for your +site. Note that you can encode at multiple bitrates for a single resolution. +

        + +

        +Example video encoding scheme: +

          +
        • 1920x1080, 5.0 Mbit/s
        • +
        • 1920x1080, 3.0 Mbit/s
        • +
        • 1280x720, 2.0 Mbit/s
        • +
        • 1280x720, 1.0 Mbit/s
        • +
        • 854x480, 750 kbit/s
        • +
        • 640x360, 350 kbit/s
        • +
        +

        + +

        +There are many open-source tools to transcode video, including: + +

        +

        + + +

        +Packaging Content +

        + +

        +A DASH packager is required to get your media ready to stream. There are a few +open-source packagers available for MP4 / ISO BMFF streams, including: + +

        +

        + +

        +Your DASH packager will convert your content to a valid, segmented ISOBMFF file +and generate a DASH manifest (MPD file). Most DASH packagers can not transcode +your media into multiple resolutions and bitrates. (DASHEncoder does both.) +

        + +

        +To package WebM streams for DASH, the WebM project provides tools for this: + +

        +

        + diff --git a/tutorials/intro.json b/tutorials/intro.json new file mode 100644 index 0000000000..3b63cdf3ea --- /dev/null +++ b/tutorials/intro.json @@ -0,0 +1,3 @@ +{ + "title": "Intro to DASH Streams" +} diff --git a/tutorials/language.html b/tutorials/language.html new file mode 100644 index 0000000000..1d74a2d2e7 --- /dev/null +++ b/tutorials/language.html @@ -0,0 +1,103 @@ + + +

        +Language Tags +

        + +

        +Languages are represented by {@link http://goo.gl/Lq37Vx ISO 639} language tags +such as "en", "fra-CA", "deu-AT", etc. Both 2-letter and 3-letter ISO tags are +supported, as are sublanguages. +

        + +

        +Some languages have both 2-letter and 3-letter tags defined, and some languages +even have more than one 3-letter tag defined. The DASH spec says that language +tags in an MPD must always be given in their shortest form. This follows {@link +http://goo.gl/9i0UUg BCP 47}. However, MP4 track metadata always uses 3-letter +tags, and some MPD creation tools use what is in the MP4 track directly. +

        + +

        +The Shaka Player will normalize all language tags (from MPDs or in the language +preference setting) to their shortest form when they are ingested. Any 3-letter +tag with an equivalent 2-letter tag will be mapped to 2 letters. Languages with +multiple 3-letter tags are also handled through this mapping. For example, you +could use either of Greek's 3-letter tags ("ell" and "gre"), and both would map +to the 2-letter tag "el". +

        + + +

        +Language APIs +

        + +

        +The Player library provides APIs to list and select audio and text tracks. The +audio and text track objects include a language property. This allows a user to +manually change audio or subtitle languages. There is also an API to enable or +disable the selected subtitles. See: + +

          +
        • {@link shaka.player.Player#getAudioTracks}
        • +
        • {@link shaka.player.Player#getTextTracks}
        • +
        • {@link shaka.player.Player#selectAudioTrack}
        • +
        • {@link shaka.player.Player#selectTextTrack}
        • +
        • {@link shaka.player.Player#enableTextTrack}
        • +
        + + +Please note that {@link shaka.player.Player#selectVideoTrack} is also provided, +but can interfere with automatic bitrate adaptation. If you allow your users to +choose video tracks manually, call {@link shaka.player.Player#enableAdaptation} +(false) to disable automatic video adaptation when a manual choice is made. + +

        + +

        +To avoid the necessity of choosing audio and text tracks manually, Shaka Player +provides {@link shaka.player.Player#setPreferredLanguage an API to set a user's +preferred language}. The language preference defaults to "en" (English) if not +set. +

        + + +

        +Automatic Stream Selection Using Language Preference +

        + +

        +When starting a video, the Player will choose streams which best fit the user's +language preference. This uses a fuzzy matching algorithm for languages. +

        + +

        +An exact language match is preferred ("en-US" ≡ "en-US"), followed by the +base language of the user's sublanguage ("en" ⊃ "en-US"), followed by other +sublanguages with the same base language ("en-GB" ≈ "en-US"). If none of +these fuzzy matches work, the first available language from the MPD is used. +

        + +

        +The matching algorithm can be found in {@link shaka.util.LanguageUtils.match}. +

        + +

        +The same matching algorithm is used to select both audio and text tracks. When +no audio track matches the user preference, text tracks are enabled by default. +

        + diff --git a/tutorials/language.json b/tutorials/language.json new file mode 100644 index 0000000000..a385605b23 --- /dev/null +++ b/tutorials/language.json @@ -0,0 +1,3 @@ +{ + "title": "Language Support" +} diff --git a/tutorials/player.html b/tutorials/player.html new file mode 100644 index 0000000000..434e9e7b1b --- /dev/null +++ b/tutorials/player.html @@ -0,0 +1,961 @@ + + +

        +Prerequisites +

        + +

        +If you have not familiarized yourself with the build process, please start with +{@tutorial dev}. +

        + +

        +If you are not already familiar with how DASH and DASH content work, please see +the {@tutorial intro} tutorial. We will not cover the encoding of DASH videos, +but {@tutorial intro} links to external tools which could be used to encode and +package content. +

        + + +

        +Streaming Content +

        + +

        +If you want to start streaming with HTML5 and DASH, the first thing you need is +source material. For this tutorial, we'll be using DASH-packaged turtle videos +to create the world's next big streaming site: TurtleTube. The DASH videos for +this tutorial have already been uploaded to appspot, so the URLs used are real. +

        + + +

        +The Shaka Player +

        + +

        +This library relies on polyfills for certain browser functionality. If you are +not familiar with the concept, please browse the {@tutorial polyfills} tutorial +before continuing this one. +

        + +

        +The Shaka Player is composed of two parts: the player and the video source. To +start, you instantiate a player object, then create and load a video source. A +video source can be anything that implements {@link shaka.player.IVideoSource}. +The library provides {@link shaka.player.DashVideoSource} for DASH content. We +will be using this in the tutorial. +

        + +

        +First, create a page with a {@link http://goo.gl/NwDFQ video tag}. Install the +polyfills before you do anything else with the library. Then, instantiate your +{@link shaka.player.Player} object to manage the video element. For simplicty, +we will use the video tag's built-in controls in this example. +

        + +

        +Next, construct a {@link shaka.player.DashVideoSource} object. This object will +manage DASH streaming and adaptation. To pass the video source into the player, +call {@link shaka.player.Player#load player.load}. +

        + +

        +Here is a simple page which demonstrates basic DASH playback: +

        + +
        <!DOCTYPE html>
        +<html>
        +  <head>
        +    <meta charset="utf-8">
        +    <title>TurtleTube - Basic Test</title>
        +    <!-- Load the Shaka Player library. -->
        +    <script src="shaka-player.compiled.js"></script>
        +  </head>
        +  <body>
        +    <video id="video"
        +           width="640" height="480"
        +           crossorigin="anonymous"
        +           controls>
        +      Your browser does not support HTML5 video.
        +    </video>
        +  </body>
        +  <script>
        +    function initPlayer() {
        +      // Install polyfills.
        +      shaka.polyfill.Fullscreen.install();
        +      shaka.polyfill.MediaKeys.install();
        +      shaka.polyfill.VideoPlaybackQuality.install();
        +
        +      // Find the video element.
        +      var video = document.getElementById('video');
        +
        +      // Construct a Player to wrap around it.
        +      var player = new shaka.player.Player(video);
        +
        +      // Attach the player to the window so that it can be easily debugged.
        +      window.player = player;
        +
        +      // Listen for errors from the Player.
        +      player.addEventListener('error', function(event) {
        +        console.error(event);
        +      });
        +
        +      // Construct a DashVideoSource to represent the DASH manifest.
        +      var mpdUrl = 'http://turtle-tube.appspot.com/t/t2/dash.mpd';
        +      var source = new shaka.player.DashVideoSource(mpdUrl, null);
        +
        +      // Load the source into the Player.
        +      player.load(source);
        +    }
        +    document.addEventListener('DOMContentLoaded', initPlayer);
        +  </script>
        +</html>
        +
        + + +

        +Autoplay vs Load +

        + +

        +There are two ways to start a video playing right away. The simplest is to use +the {@link http://goo.gl/McU4Rh autoplay attribute} on the video tag. +

        + +
        <!DOCTYPE html>
        +<html>
        +  <head>
        +    <meta charset="utf-8">
        +    <title>TurtleTube - Autoplay</title>
        +    <!-- Load the Shaka Player library. -->
        +    <script src="shaka-player.compiled.js"></script>
        +  </head>
        +  <body>
        +    <video id="video"
        +           width="640" height="480"
        +           crossorigin="anonymous"
        +           controls
        +           autoplay><!-- Start playing right away on load. -->
        +      Your browser does not support HTML5 video.
        +    </video>
        +  </body>
        +  <script>
        +    function initPlayer() {
        +      // Install polyfills.
        +      shaka.polyfill.Fullscreen.install();
        +      shaka.polyfill.MediaKeys.install();
        +      shaka.polyfill.VideoPlaybackQuality.install();
        +
        +      // Find the video element.
        +      var video = document.getElementById('video');
        +
        +      // Construct a Player to wrap around it.
        +      var player = new shaka.player.Player(video);
        +
        +      // Attach the player to the window so that it can be easily debugged.
        +      window.player = player;
        +
        +      // Listen for errors from the Player.
        +      player.addEventListener('error', function(event) {
        +        console.error(event);
        +      });
        +
        +      // Construct a DashVideoSource to represent the DASH manifest.
        +      var mpdUrl = 'http://turtle-tube.appspot.com/t/t2/dash.mpd';
        +      var source = new shaka.player.DashVideoSource(mpdUrl, null);
        +
        +      // Load the source into the Player.
        +      player.load(source);
        +    }
        +    document.addEventListener('DOMContentLoaded', initPlayer);
        +  </script>
        +</html>
        +
        + +

        +If you want to do more than start the video playing, you can execute a function +asynchronously after {@link shaka.player.Player#load player.load} completes. It +returns a {@link http://goo.gl/8NHkC1 Promise} which is resolved once the video +is loaded. You can execute any arbitrary code when load completes. +

        + +
        <!DOCTYPE html>
        +<html>
        +  <head>
        +    <meta charset="utf-8">
        +    <title>TurtleTube - Async Load</title>
        +    <!-- Load the Shaka Player library. -->
        +    <script src="shaka-player.compiled.js"></script>
        +  </head>
        +  <body>
        +    <ul id="videoTracks"></ul>
        +    <video id="video"
        +           width="640" height="480"
        +           crossorigin="anonymous"
        +           controls><!-- No autoplay attribute. -->
        +      Your browser does not support HTML5 video.
        +    </video>
        +  </body>
        +  <script>
        +    function initPlayer() {
        +      // Install polyfills.
        +      shaka.polyfill.Fullscreen.install();
        +      shaka.polyfill.MediaKeys.install();
        +      shaka.polyfill.VideoPlaybackQuality.install();
        +
        +      // Find the video element.
        +      var video = document.getElementById('video');
        +
        +      // Construct a Player to wrap around it.
        +      var player = new shaka.player.Player(video);
        +
        +      // Attach the player to the window so that it can be easily debugged.
        +      window.player = player;
        +
        +      // Listen for errors from the Player.
        +      player.addEventListener('error', function(event) {
        +        console.error(event);
        +      });
        +
        +      // Construct a DashVideoSource to represent the DASH manifest.
        +      var mpdUrl = 'http://turtle-tube.appspot.com/t/t2/dash.mpd';
        +      var source = new shaka.player.DashVideoSource(mpdUrl, null);
        +
        +      // Load the source into the Player.
        +      // Then query the video tracks to display in the videoTracks list element.
        +      // Resize the video element to match the aspect ratio of the active track.
        +      // Finally, begin playback.
        +      player.load(source).then(function() {
        +        var videoTracks = player.getVideoTracks();
        +        var activeTrack;
        +
        +        // Add track info to the DOM.
        +        var ul = document.getElementById('videoTracks');
        +        for (var i = 0; i < videoTracks.length; ++i) {
        +          var track = videoTracks[i];
        +          if (track.active) activeTrack = track;
        +
        +          var text = track.width + ' x ' + track.height;
        +          text += ' ' + (track.bandwidth / 1024).toFixed(0) + ' kbits/s';
        +
        +          var li = document.createElement('li');
        +          li.innerText = text;
        +          ul.appendChild(li);
        +        }
        +
        +        // Correct aspect ratio.
        +        if (activeTrack) {
        +          var aspectRatio = activeTrack.width / activeTrack.height;
        +          video.width = video.height * aspectRatio;
        +        } else {
        +          console.error('Unable to query aspect ratio!');
        +        }
        +
        +        // Begin playback, since autoplay is not enabled on the video tag.
        +        player.play();
        +      });
        +    }
        +    document.addEventListener('DOMContentLoaded', initPlayer);
        +  </script>
        +</html>
        +
        + +

        +Autoplay on the video tag does have one distinct advantage. If autoplay is set, +{@link shaka.player.Stats#playbackLatency playbackLatency stats} are collected. +If this information is important to you, please use autoplay. +

        + +

        +(The use of the autoplay attribute and the execution of asynchronous code after +load are not mutually exclusive.) +

        + + +

        +Protected Content +

        + +

        +Some of our TurtleTube content is worth a lot of money, so we are going to make +use of Widevine to protect it. +

        + +

        +The Shaka Player uses the {@link http://goo.gl/o9Guuu EME} APIs to get licenses +and decrypt protected content. However, many details needed to do this are not +part of the DASH spec. Although there is a ContentProtection element specified, +its contents and interpretation are application-specific. +

        + +

        +To bridge the gap between DASH and EME with application-specific details, Shaka +uses a callback to the application to interpret ContentProtection elements from +the DASH manifest. The application receives a parsed element from the manifest +in the form of a {@link shaka.dash.mpd.ContentProtection} object. The app then +returns a {@link shaka.player.DrmSchemeInfo} object which has important details +in a consistent structure. +

        + +

        +Here is how {@link shaka.dash.DashVideoSource#ContentProtectionCallback} can be +used to enable encrypted content: +

        + +
        <!DOCTYPE html>
        +<html>
        +  <head>
        +    <meta charset="utf-8">
        +    <title>TurtleTube - Encrypted Content</title>
        +    <!-- Load the Shaka Player library. -->
        +    <script src="shaka-player.compiled.js"></script>
        +  </head>
        +  <body>
        +    <video id="video"
        +           width="640" height="480"
        +           crossorigin="anonymous"
        +           controls autoplay>
        +      Your browser does not support HTML5 video.
        +    </video>
        +  </body>
        +  <script>
        +    function initPlayer() {
        +      // Install polyfills.
        +      shaka.polyfill.Fullscreen.install();
        +      shaka.polyfill.MediaKeys.install();
        +      shaka.polyfill.VideoPlaybackQuality.install();
        +
        +      // Find the video element.
        +      var video = document.getElementById('video');
        +
        +      // Construct a Player to wrap around it.
        +      var player = new shaka.player.Player(video);
        +
        +      // Attach the player to the window so that it can be easily debugged.
        +      window.player = player;
        +
        +      // Listen for errors from the Player.
        +      player.addEventListener('error', function(event) {
        +        console.error(event);
        +      });
        +
        +      // Construct a DashVideoSource to represent the DASH manifest and provide
        +      // a callback to interpret the ContentProtection elements.
        +      var mpdUrl = 'http://turtle-tube.appspot.com/t/e6/dash.mpd';
        +      var source = new shaka.player.DashVideoSource(mpdUrl,
        +                                                    interpretContentProtection);
        +
        +      // Load the source into the Player.
        +      player.load(source);
        +    }
        +
        +    /**
        +     * @param {!shaka.dash.mpd.ContentProtection} contentProtection The
        +     *     ContentProtection element from the MPD.
        +     * @return {shaka.player.DrmSchemeInfo} or null if the element is not
        +     *     understood by this application.
        +     */
        +    function interpretContentProtection(contentProtection) {
        +      // This is the UUID which is used by edash-packager to represent
        +      // Widevine.  This is the only scheme we are expecting for this
        +      // application.
        +      if (contentProtection.schemeIdUri ==
        +          'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed') {
        +        // We will use Widevine's testing license server.  In a real app,
        +        // you would run your own front-end service for this.
        +        var licenseServerUrl = 'http://widevine-proxy.appspot.com/proxy';
        +
        +        // The EME key system identifier for Widevine.
        +        var keySystem = 'com.widevine.alpha';
        +
        +        return new shaka.player.DrmSchemeInfo(keySystem,
        +                                              true /* suppressMultipleEvents */,
        +                                              licenseServerUrl,
        +                                              false /* withCredentials */,
        +                                              null /* initData */,
        +                                              null /* licensePostProcessor */);
        +      }
        +
        +      console.warn('Unrecognized scheme: ' + contentProtection.schemeIdUri);
        +      return null;
        +    }
        +
        +    document.addEventListener('DOMContentLoaded', initPlayer);
        +  </script>
        +</html>
        +
        + +

        +This example uses Widevine, but the Shaka Player library queries the browser to +find out what key systems are supported. So you should be able to protect your +content with multiple key systems for different browsers. The only requirement +is that the browser has a standards compliant implementation of EME. If that's +the case, you can put multiple ContentProtection tags in your MPD, and once the +tags are resolved as DrmSchemeInfo objects, the player will discard those which +cannot be used by the browser. This way, there's no need to detect the browser +vendor and serve different content based on that. +

        + + +

        +A Full Site +

        + +

        +This is a sample demonstrating a complete TurtleTube site. Just click on one of +the video thumbnails, and the appropriate video source will be constructed. The +video will play back in an overlay on top of the thumbnails. +

        + +
        <!DOCTYPE html>
        +<html>
        +  <head>
        +    <meta charset="utf-8">
        +    <title>TurtleTube - Beta!</title>
        +    <!-- Load the Shaka Player library. -->
        +    <script src="shaka-player.compiled.js"></script>
        +    <style>
        +      body {
        +        background-color: #4a8;
        +        color: #000;
        +      }
        +      h1, h2 {
        +        text-align: center;
        +      }
        +      #thumbContainer {
        +        display: table;
        +        margin: auto;
        +      }
        +      .thumbRow {
        +        display: table-row;
        +      }
        +      .thumbCell {
        +        display: table-cell;
        +        width: 270px;
        +        padding: 10px;
        +      }
        +      .thumbCell img {
        +        width: 270px;
        +        height: 180px;
        +        border: 5px ridge #07a;
        +        margin: 0;
        +      }
        +      #videoOverlay {
        +        background-color: rgba(0, 0, 0, 0.5);
        +        position: fixed;
        +        top: 2px;
        +        left: 2px;
        +        right: 2px;
        +        bottom: 2px;
        +        z-index: 1;
        +        overflow: hidden;
        +        text-align: center;
        +        /* Hidden until needed. */
        +        display: none;
        +      }
        +      #closeButton {
        +        position: relative;
        +        margin-top: 10px;
        +        z-index: 2;
        +      }
        +      #vcenterWrapper {
        +        position: absolute;
        +        width: 0;
        +        height: 0;
        +        /* Move the top-left corner of this div to the center. */
        +        top: 50%;
        +        left: 50%;
        +      }
        +      #video {
        +        width: 640px;
        +        height: 480px;
        +        position: relative;
        +        /* Center the video inside the overlay. */
        +        top: -240px;
        +        left: -320px;
        +      }
        +    </style>
        +  </head>
        +  <body>
        +    <h1>TurtleTube!</h1>
        +    <h2>Choose a video:</h2>
        +
        +    <div id="thumbContainer">
        +      <div class="thumbRow">
        +        <div class="thumbCell">
        +          <img id="t1"
        +               src="http://turtle-tube.appspot.com/t/t1/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>cute green sea turtle in Ko'olina Hawai'i</i><br>
        +          (MP4, WebM)
        +        </div>
        +        <div class="thumbCell">
        +          <img id="t2"
        +               src="http://turtle-tube.appspot.com/t/t2/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>Endangered Ocean: Sea Turtles</i><br>
        +          (MP4, WebM)
        +        </div>
        +      </div>
        +      <div class="thumbRow">
        +        <div class="thumbCell">
        +          <img id="t3"
        +               src="http://turtle-tube.appspot.com/t/t3/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>sea turtles exercise: bent arms</i><br>
        +          (WebM only)
        +        </div>
        +        <div class="thumbCell">
        +          <img id="t4"
        +               src="http://turtle-tube.appspot.com/t/t4/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>sea turtles exercise: straight arms</i><br>
        +          (WebM only)
        +        </div>
        +      </div>
        +      <div class="thumbRow">
        +        <div class="thumbCell">
        +          <img id="t5"
        +               src="http://turtle-tube.appspot.com/t/t5/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>Using robots to reveal secrets of walking baby sea turtles</i><br>
        +          (MP4, WebM)
        +        </div>
        +        <div class="thumbCell">
        +          <img id="e6"
        +               src="http://turtle-tube.appspot.com/t/e6/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>kitten vs sea turtle</i><br>
        +          (MP4 only, encrypted)
        +        </div>
        +      </div>
        +    </div>
        +    <div id="videoOverlay">
        +      <div id="vcenterWrapper">
        +        <video id="video"
        +               poster="http://turtle-tube.appspot.com/poster.jpg"
        +               crossorigin="anonymous"
        +               controls autoplay>
        +          Your browser does not support HTML5 video.
        +        </video>
        +      </div>
        +      <button id="closeButton" onclick="closeVideo()">Close Video</button>
        +    </div>
        +  </body>
        +  <script>
        +    var video;
        +    var player;
        +
        +    function initPlayer() {
        +      // Install polyfills.
        +      shaka.polyfill.Fullscreen.install();
        +      shaka.polyfill.MediaKeys.install();
        +      shaka.polyfill.VideoPlaybackQuality.install();
        +
        +      // Get the video element.
        +      video = document.getElementById('video');
        +
        +      // Construct the Player to wrap around it.
        +      player = new shaka.player.Player(video);
        +
        +      // Attach the player to the window so that it can be easily debugged.
        +      window.player = player;
        +
        +      // Listen for errors from the Player.
        +      player.addEventListener('error', function(event) {
        +        console.error(event);
        +      });
        +    }
        +
        +    /**
        +     * @param {!HTMLImageElement} image
        +     */
        +    function onImageClick(image) {
        +      // Construct a DashVideoSource to represent the DASH manifest and provide
        +      // a callback to interpret the ContentProtection elements (if any).
        +      var mpdUrl = 'http://turtle-tube.appspot.com/t/' + image.id + '/dash.mpd';
        +      var source = new shaka.player.DashVideoSource(mpdUrl,
        +                                                    interpretContentProtection);
        +
        +      // Show the video player overlay.
        +      var overlay = document.getElementById('videoOverlay');
        +      overlay.style.display = 'block';
        +
        +      // Load the source into the Player.
        +      player.load(source);
        +    }
        +
        +    /**
        +     * @param {!shaka.dash.mpd.ContentProtection} contentProtection The
        +     *     ContentProtection element from the MPD.
        +     * @return {shaka.player.DrmSchemeInfo} or null if the element is not
        +     *     understood by this application.
        +     */
        +    function interpretContentProtection(contentProtection) {
        +      // This is the UUID which is used by edash-packager to represent
        +      // Widevine.  This is the only scheme we are expecting for this
        +      // application.
        +      if (contentProtection.schemeIdUri ==
        +          'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed') {
        +        // We will use Widevine's testing license server.  In a real app,
        +        // you would run your own front-end service for this.
        +        var licenseServerUrl = 'http://widevine-proxy.appspot.com/proxy';
        +
        +        // The EME key system identifier for Widevine.
        +        var keySystem = 'com.widevine.alpha';
        +
        +        return new shaka.player.DrmSchemeInfo(keySystem,
        +                                              true /* suppressMultipleEvents */,
        +                                              licenseServerUrl,
        +                                              false /* withCredentials */,
        +                                              null /* initData */,
        +                                              null /* licensePostProcessor */);
        +      }
        +
        +      console.warn('Unrecognized scheme: ' + contentProtection.schemeIdUri);
        +      return null;
        +    }
        +
        +    function closeVideo() {
        +      // Unload the video source.
        +      player.unload();
        +
        +      // Hide the video player overlay.
        +      var overlay = document.getElementById('videoOverlay');
        +      overlay.style.display = 'none';
        +    }
        +
        +    document.addEventListener('DOMContentLoaded', initPlayer);
        +  </script>
        +</html>
        +
        + + +

        +Bonus: Event Handling +

        + +

        +There a few events which the Player will dispatch. This sample demonstrates how +you can listen for the adaptation event and use to it indicate when an HD video +is being played. It also shows an error dialog if/when error events occur. +

        + +
        <!DOCTYPE html>
        +<html>
        +  <head>
        +    <meta charset="utf-8">
        +    <title>TurtleTube - Beta (HD)!</title>
        +    <!-- Load the Shaka Player library. -->
        +    <script src="shaka-player.compiled.js"></script>
        +    <style>
        +      body {
        +        background-color: #4a8;
        +        color: #000;
        +      }
        +      h1, h2 {
        +        text-align: center;
        +      }
        +      #thumbContainer {
        +        display: table;
        +        margin: auto;
        +      }
        +      .thumbRow {
        +        display: table-row;
        +      }
        +      .thumbCell {
        +        display: table-cell;
        +        width: 270px;
        +        padding: 10px;
        +      }
        +      .thumbCell img {
        +        width: 270px;
        +        height: 180px;
        +        border: 5px ridge #07a;
        +        margin: 0;
        +      }
        +      #videoOverlay {
        +        background-color: rgba(0, 0, 0, 0.5);
        +        position: fixed;
        +        top: 2px;
        +        left: 2px;
        +        right: 2px;
        +        bottom: 2px;
        +        z-index: 1;
        +        overflow: hidden;
        +        text-align: center;
        +        /* Hidden until needed. */
        +        display: none;
        +      }
        +      #closeButton {
        +        position: relative;
        +        margin-top: 10px;
        +        z-index: 2;
        +      }
        +      #vcenterWrapper {
        +        position: absolute;
        +        width: 0;
        +        height: 0;
        +        /* Move the top-left corner of this div to the center. */
        +        top: 50%;
        +        left: 50%;
        +      }
        +      #video {
        +        width: 640px;
        +        height: 426px;
        +        position: relative;
        +        /* Center the video inside the overlay. */
        +        left: -320px;
        +        top: -213px;
        +      }
        +      #errorOverlay {
        +        border: 2px solid black;
        +        background-color: rgba(100, 0, 0, 0.5);
        +        font-size: 175%;
        +        white-space: pre-line;
        +        width: 350px;
        +        height: 200px;
        +        position: absolute;
        +        /* Center the error inside the video overlay. */
        +        left: -175px;
        +        top: -100px;
        +        /* Hidden until needed. */
        +        display: none;
        +      }
        +      #hd {
        +        position: absolute;
        +        opacity: 0.6;
        +        /* Hidden until needed. */
        +        display: none;
        +      }
        +    </style>
        +  </head>
        +  <body>
        +    <h1>TurtleTube!</h1>
        +    <h2>Choose a video:</h2>
        +
        +    <div id="thumbContainer">
        +      <div class="thumbRow">
        +        <div class="thumbCell">
        +          <img id="t1"
        +               src="http://turtle-tube.appspot.com/t/t1/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>cute green sea turtle in Ko'olina Hawai'i</i><br>
        +          (MP4, WebM)
        +        </div>
        +        <div class="thumbCell">
        +          <img id="t2"
        +               src="http://turtle-tube.appspot.com/t/t2/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>Endangered Ocean: Sea Turtles</i><br>
        +          (MP4, WebM)
        +        </div>
        +      </div>
        +      <div class="thumbRow">
        +        <div class="thumbCell">
        +          <img id="t3"
        +               src="http://turtle-tube.appspot.com/t/t3/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>sea turtles exercise: bent arms</i><br>
        +          (WebM only)
        +        </div>
        +        <div class="thumbCell">
        +          <img id="t4"
        +               src="http://turtle-tube.appspot.com/t/t4/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>sea turtles exercise: straight arms</i><br>
        +          (WebM only)
        +        </div>
        +      </div>
        +      <div class="thumbRow">
        +        <div class="thumbCell">
        +          <img id="t5"
        +               src="http://turtle-tube.appspot.com/t/t5/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>Using robots to reveal secrets of walking baby sea turtles</i><br>
        +          (MP4, WebM)
        +        </div>
        +        <div class="thumbCell">
        +          <img id="e6"
        +               src="http://turtle-tube.appspot.com/t/e6/thumb.png"
        +               onclick="onImageClick(this)"><br>
        +          <i>kitten vs sea turtle</i><br>
        +          (MP4 only, encrypted)
        +        </div>
        +      </div>
        +    </div>
        +    <div id="videoOverlay">
        +      <div id="vcenterWrapper">
        +        <video id="video"
        +               poster="http://turtle-tube.appspot.com/poster.jpg"
        +               crossorigin="anonymous"
        +               controls autoplay>
        +          Your browser does not support HTML5 video.
        +        </video>
        +        <img id="hd" src="http://turtle-tube.appspot.com/hd.png">
        +        <div id="errorOverlay"></div>
        +      </div>
        +      <button id="closeButton" onclick="closeVideo()">Close Video</button>
        +    </div>
        +  </body>
        +  <script>
        +    var video;
        +    var hd;
        +    var player;
        +
        +    function initPlayer() {
        +      // Install polyfills.
        +      shaka.polyfill.Fullscreen.install();
        +      shaka.polyfill.MediaKeys.install();
        +      shaka.polyfill.VideoPlaybackQuality.install();
        +
        +      // Get important elements.
        +      video = document.getElementById('video');
        +      hd = document.getElementById('hd');
        +
        +      // Construct the Player to wrap around it.
        +      player = new shaka.player.Player(video);
        +
        +      // Attach the player to the window so that it can be easily debugged.
        +      window.player = player;
        +
        +      // Listen for adaptation events.
        +      player.addEventListener('adaptation', onAdaptation);
        +
        +      // Listen for errors from the Player.
        +      player.addEventListener('error', onError);
        +    }
        +
        +    /**
        +     * @param {!Event} event
        +     */
        +    function onAdaptation(event) {
        +      // Ignore non-video adaptation events.
        +      if (event.contentType != 'video') {
        +        return;
        +      }
        +
        +      // Resize the video element to match the content's aspect ratio.
        +      var aspect = event.size.width / event.size.height;
        +      var w = video.offsetWidth;
        +      var h = w / aspect;
        +      video.style.width = w + 'px';
        +      video.style.height = h + 'px';
        +      video.style.left = (-w / 2) + 'px';
        +      video.style.top = (-h / 2) + 'px';
        +
        +      // Position the HD icon in the top-right of the video element.
        +      // 0,0 for this icon is the center of the video element.
        +      hd.style.top = ((-h / 2) + 5) + 'px';
        +      hd.style.right = ((-w / 2) + 5) + 'px';
        +
        +      // If the video is 720p or above, show the HD icon.
        +      if (event.size.height >= 720) {
        +        hd.style.display = 'block';
        +      } else {
        +        hd.style.display = 'none';
        +      }
        +    }
        +
        +    /**
        +     * @param {!Event} event
        +     */
        +    function onError(event) {
        +      var overlay = document.getElementById('errorOverlay');
        +      // This contains details about the error.
        +      var error = event.detail;
        +
        +      // Format a message to show to the user in the overlay.
        +      var text = 'Error (' + error.type + '):\n';
        +      text += error.message;
        +
        +      // Display it.
        +      overlay.textContent = text;
        +      overlay.style.display = 'block';
        +
        +      // It would also be a good idea to log an anonymized version of the error
        +      // object to the server.
        +    }
        +
        +    /**
        +     * @param {!HTMLImageElement} image
        +     */
        +    function onImageClick(image) {
        +      // Construct a DashVideoSource to represent the DASH manifest and provide
        +      // a callback to interpret the ContentProtection elements (if any).
        +      var mpdUrl = 'http://turtle-tube.appspot.com/t/' + image.id + '/dash.mpd';
        +      var source = new shaka.player.DashVideoSource(mpdUrl,
        +                                                    interpretContentProtection);
        +
        +      // Show the video player overlay.
        +      var overlay = document.getElementById('videoOverlay');
        +      overlay.style.display = 'block';
        +
        +      // Load the source into the Player.
        +      player.load(source);
        +    }
        +
        +    /**
        +     * @param {!shaka.dash.mpd.ContentProtection} contentProtection The
        +     *     ContentProtection element from the MPD.
        +     * @return {shaka.player.DrmSchemeInfo} or null if the element is not
        +     *     understood by this application.
        +     */
        +    function interpretContentProtection(contentProtection) {
        +      // This is the UUID which is used by edash-packager to represent
        +      // Widevine.  This is the only scheme we are expecting for this
        +      // application.
        +      if (contentProtection.schemeIdUri ==
        +          'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed') {
        +        // We will use Widevine's testing license server.  In a real app,
        +        // you would run your own front-end service for this.
        +        var licenseServerUrl = 'http://widevine-proxy.appspot.com/proxy';
        +
        +        // The EME key system identifier for Widevine.
        +        var keySystem = 'com.widevine.alpha';
        +
        +        return new shaka.player.DrmSchemeInfo(keySystem,
        +                                              true /* suppressMultipleEvents */,
        +                                              licenseServerUrl,
        +                                              false /* withCredentials */,
        +                                              null /* initData */,
        +                                              null /* licensePostProcessor */);
        +      }
        +
        +      console.warn('Unrecognized scheme: ' + contentProtection.schemeIdUri);
        +      return null;
        +    }
        +
        +    function closeVideo() {
        +      // Unload the video source.
        +      player.unload();
        +
        +      // Hide the video player overlay.
        +      var overlay = document.getElementById('videoOverlay');
        +      overlay.style.display = 'none';
        +
        +      // Hide the error overlay.
        +      overlay = document.getElementById('errorOverlay');
        +      overlay.style.display = 'none';
        +    }
        +
        +    document.addEventListener('DOMContentLoaded', initPlayer);
        +  </script>
        +</html>
        +
        + diff --git a/tutorials/player.json b/tutorials/player.json new file mode 100644 index 0000000000..ae67ec386a --- /dev/null +++ b/tutorials/player.json @@ -0,0 +1,3 @@ +{ + "title": "DASH Playback with the Shaka Player" +} diff --git a/tutorials/polyfills.html b/tutorials/polyfills.html new file mode 100644 index 0000000000..34fcd8f3d7 --- /dev/null +++ b/tutorials/polyfills.html @@ -0,0 +1,52 @@ + + +

        +Polyfills +

        + +

        +A {@link https://remysharp.com/2010/10/08/what-is-a-polyfill polyfill} is a bit +of code that fills in missing APIs or normalizes variations in APIs. A polyfill +allows other pieces of code to expect a single API from the underlying browser. +

        + +

        +The Shaka Player uses polyfills to modify, rename, or replace various pieces of +browser functionality. Before instantiating the Player, these polyfills should +be installed into the JavaScript environment. +

        + +

        +Each polyfill has its own class and a static install() method. We suggest that +you install all polyfills, since the install method will intelligently detect a +browser's capabilities and only patch APIs which need patching. +

        + +

        +Once browsers commonly implement the necessary functionality consistently, some +polyfills can be removed to reduce the size of the JavaScript code. +

        + +

        +For detailed information on our polyfills, please see: +

          +
        • {@link shaka.polyfill.Fullscreen}
        • +
        • {@link shaka.polyfill.MediaKeys}
        • +
        • {@link shaka.polyfill.VideoPlaybackQuality}
        • +
        +

        + diff --git a/tutorials/polyfills.json b/tutorials/polyfills.json new file mode 100644 index 0000000000..38873e80f3 --- /dev/null +++ b/tutorials/polyfills.json @@ -0,0 +1,3 @@ +{ + "title": "Polyfills" +} diff --git a/tutorials/sample1.txt b/tutorials/sample1.txt new file mode 100644 index 0000000000..7619a7819a --- /dev/null +++ b/tutorials/sample1.txt @@ -0,0 +1,47 @@ + + + + + TurtleTube - Basic Test + + + + + + + + diff --git a/tutorials/sample2.txt b/tutorials/sample2.txt new file mode 100644 index 0000000000..d631839103 --- /dev/null +++ b/tutorials/sample2.txt @@ -0,0 +1,48 @@ + + + + + TurtleTube - Autoplay + + + + + + + + diff --git a/tutorials/sample3.txt b/tutorials/sample3.txt new file mode 100644 index 0000000000..09e00bd917 --- /dev/null +++ b/tutorials/sample3.txt @@ -0,0 +1,79 @@ + + + + + TurtleTube - Async Load + + + + +
          + + + + diff --git a/tutorials/sample4.txt b/tutorials/sample4.txt new file mode 100644 index 0000000000..fd147625fe --- /dev/null +++ b/tutorials/sample4.txt @@ -0,0 +1,81 @@ + + + + + TurtleTube - Encrypted Content + + + + + + + + diff --git a/tutorials/sample5.txt b/tutorials/sample5.txt new file mode 100644 index 0000000000..5ce252d431 --- /dev/null +++ b/tutorials/sample5.txt @@ -0,0 +1,221 @@ + + + + + TurtleTube - Beta! + + + + + +

          TurtleTube!

          +

          Choose a video:

          + +
          +
          +
          +
          + cute green sea turtle in Ko'olina Hawai'i
          + (MP4, WebM) +
          +
          +
          + Endangered Ocean: Sea Turtles
          + (MP4, WebM) +
          +
          +
          +
          +
          + sea turtles exercise: bent arms
          + (WebM only) +
          +
          +
          + sea turtles exercise: straight arms
          + (WebM only) +
          +
          +
          +
          +
          + Using robots to reveal secrets of walking baby sea turtles
          + (MP4, WebM) +
          +
          +
          + kitten vs sea turtle
          + (MP4 only, encrypted) +
          +
          +
          +
          +
          + +
          + +
          + + + diff --git a/tutorials/sample6.txt b/tutorials/sample6.txt new file mode 100644 index 0000000000..f315f581f7 --- /dev/null +++ b/tutorials/sample6.txt @@ -0,0 +1,301 @@ + + + + + TurtleTube - Beta (HD)! + + + + + +

          TurtleTube!

          +

          Choose a video:

          + +
          +
          +
          +
          + cute green sea turtle in Ko'olina Hawai'i
          + (MP4, WebM) +
          +
          +
          + Endangered Ocean: Sea Turtles
          + (MP4, WebM) +
          +
          +
          +
          +
          + sea turtles exercise: bent arms
          + (WebM only) +
          +
          +
          + sea turtles exercise: straight arms
          + (WebM only) +
          +
          +
          +
          +
          + Using robots to reveal secrets of walking baby sea turtles
          + (MP4, WebM) +
          +
          +
          + kitten vs sea turtle
          + (MP4 only, encrypted) +
          +
          +
          +
          +
          + + +
          +
          + +
          + + + diff --git a/tutorials/update_samples.py b/tutorials/update_samples.py new file mode 100755 index 0000000000..415dd2bd2d --- /dev/null +++ b/tutorials/update_samples.py @@ -0,0 +1,120 @@ +#!/usr/bin/python +# +# Copyright 2014 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Updates samples in HTML files. + +The samples are maintained in .txt files by name. These samples are escaped +and inserted into tags whose id attribute matches the sample name. + +Samples are also diffed against the previous sample. If a sample is similar +to the previous one, it is marked up to highlight the new information. + +Run this script any time you update sample text. +""" + +import difflib +import os +import re +import sys + + +def html_escape(contents): + """Escape HTML entities in the contents.""" + contents = contents.replace('&', '&') + contents = contents.replace('<', '<') + contents = contents.replace('>', '>') + return contents + + +def regex_escape(contents): + """Escape regex special characters in the contents.""" + contents = contents.replace('\\', '\\\\') + return contents + + +def mark_up_changes(old, new): + """Mark up new text with highlights to show changes since the old text.""" + old = old.split('\n') + new = new.split('\n') + d = difflib.unified_diff(old, new, n=1000000, lineterm='') + output = [] + num_highlights = 0 + headers_done = False + + for chunk in d: + # Skip headers. + if not headers_done: + if chunk[0:2] == '@@': + headers_done = True + continue + + prefix = chunk[0] + data = chunk[1:] + + # Skip things unique to the old contents. + if prefix == '-': + continue + + # Mark up things unique to the new contents. + if prefix == '+': + data = '' + data + '' + num_highlights += 1 + + output.append(data) + + change_ratio = float(num_highlights) / len(output) + if change_ratio < 0.8: + # The contents have not changed too much. Return highlighted text. + return '\n'.join(output) + + # Too much has changed. Return the new text without extra markup. + return '\n'.join(new) + + +def get_sample_names(contents): + """Extract sample names from the contents.""" + for m in re.finditer(r').*?()' % name, + r'\1%s\2' % regex_escape(marked_up_contents), contents, + flags=re.DOTALL) + + file(html_path, 'w').write(contents) + + +if __name__ == '__main__': + script_path = os.path.dirname(__file__) + print 'Searching for HTML files in %s' % script_path + # Find all html files in the same folder as this script and update them. + for path in os.listdir(script_path): + if os.path.splitext(path)[1] != '.html': + continue + update_samples(script_path, path) + sys.exit(0) +
        • )CdQ3F!eKyF|9D2V!F-rhUpJ8J+l7g0OBBVM#THTI&O8)>EGR%u6Gd9D9pm5!S}%&6DxW}^f|7=Y zPoO3(pTZY#?(7(|!5}5Nn!D%DotZmlW)?smSMcEE<^aT$6gw#LlwubPI9BYTffL0! zyu-EPCnz{Y#ZR&1d{F!hr_NW!&#~mXis$jseXDo@U)-kR7sMBeUt-T&RQw9By@BF9 z3f?cpmw4m-R{RHncaC**(V--ipJ<~6LkW2fi6RVfh%vcYt9@z>&M0LBSf-Q|Et8wU zCt43_*JB)mHR71wb`K@~5Cizwp{`A2uuJ^_Bcl3k{7ree$8&@l?;^2nagS+NqCDBfkB?pJws=PbK~+A7|2 z{gCDJKI-i%m4LD$n{WIwWR|c+NRy`C1#)1sSBI7FiH6z-QkhY&Q_|%I3exQ zQ`X1M?cZH4^M&BSyr;2z$+^SZUMA*0001Z+HKHROw(}?!13=vX`$@Br+fGR zZ%e`5O6%Txi$Yrz0gF{}p>fY>OnlS0Uevf}oDXW;D{d2gcE<2)oFcV80@g$H)63L{HN*d{8kVzKVW(;E)$9N_%kx5Ku3R9WJbY?JW^G#k0Wdx>E$NBBVtKRLiL?sA*s%w`TdsNz1=+~FRNdB8&+@iBD0 zXFTC4C-8-Cwv(4U=LLQ~^Oa4^rG|OTr5?ItoaPMYxxh`%a*kVU z;HYGAjq6;IY{`*awo0DlOMw(hkrYdb(O28l;MYvSx*ChcQW4f^QL5UdE3HbqvbxB$pfSg`>Cj#;?~00;nMAg}==M6d%RaIhCe zARtS)01i=0um)3FSgr#ump{<1pq_<0a34Kp8x=7I1^|9 literal 0 HcmV?d00001 diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.eot b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..6bbc3cf58cb011a6b4bf3cb1612ce212608f7274 GIT binary patch literal 19836 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.woff b/third_party/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..e231183dce4c7b452afc9e7799586fd285e146f4 GIT binary patch literal 22660 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 ML;wL%uV=LY00kR;TmS$7 literal 0 HcmV?d00001 diff --git a/third_party/jsdoc/templates/default/static/scripts/linenumber.js b/third_party/jsdoc/templates/default/static/scripts/linenumber.js new file mode 100644 index 0000000000..8d52f7eafd --- /dev/null +++ b/third_party/jsdoc/templates/default/static/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(function() { + var source = document.getElementsByClassName('prettyprint source linenums'); + var i = 0; + var lineNumber = 0; + var lineId; + var lines; + var totalLines; + var anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = 'line' + lineNumber; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/third_party/jsdoc/templates/default/static/scripts/prettify/Apache-License-2.0.txt b/third_party/jsdoc/templates/default/static/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/third_party/jsdoc/templates/default/static/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/third_party/jsdoc/templates/default/static/scripts/prettify/lang-css.js b/third_party/jsdoc/templates/default/static/scripts/prettify/lang-css.js new file mode 100644 index 0000000000..041e1f5906 --- /dev/null +++ b/third_party/jsdoc/templates/default/static/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/third_party/jsdoc/templates/default/static/scripts/prettify/prettify.js b/third_party/jsdoc/templates/default/static/scripts/prettify/prettify.js new file mode 100644 index 0000000000..eef5ad7e6a --- /dev/null +++ b/third_party/jsdoc/templates/default/static/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p= 1), + '.show2': (showLevel >= 2) + }; + + for (var selector in settings) { + var reveal = settings[selector]; + var list = document.querySelectorAll(selector); + list = Array.prototype.slice.call(list, 0); + list.forEach(function(e) { + if (reveal) { + e.classList.add('reveal'); + } else { + e.classList.remove('reveal'); + } + }); + } +} + +function initToggle() { + // get the previous setting from storage and populate the form. + var optionValue = localStorage.getItem('show'); + document.getElementById('show').value = optionValue; + + if (!document.getElementById('show').value) { + // fix nonsense, missing, or corrupted values. + document.getElementById('show').value = 'exported'; + } + + // enforce the setting. + toggle(); +} diff --git a/third_party/jsdoc/templates/default/static/styles/jsdoc-default.css b/third_party/jsdoc/templates/default/static/styles/jsdoc-default.css new file mode 100644 index 0000000000..5b84b05bd4 --- /dev/null +++ b/third_party/jsdoc/templates/default/static/styles/jsdoc-default.css @@ -0,0 +1,385 @@ +@font-face { + font-family: 'Open Sans'; + font-weight: normal; + font-style: normal; + src: url('../fonts/OpenSans-Regular-webfont.eot'); + src: + local('Open Sans'), + local('OpenSans'), + url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), + url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg'); +} + +@font-face { + font-family: 'Open Sans Light'; + font-weight: normal; + font-style: normal; + src: url('../fonts/OpenSans-Light-webfont.eot'); + src: + local('Open Sans Light'), + local('OpenSans Light'), + url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/OpenSans-Light-webfont.woff') format('woff'), + url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg'); +} + +html +{ + overflow: auto; + background-color: #fff; + font-size: 14px; +} + +body +{ + font-family: 'Open Sans', sans-serif; + line-height: 1.5; + color: #4d4e53; + background-color: white; +} + +a, a:visited, a:active { + color: #0095dd; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +header +{ + display: block; + padding: 0px 4px; +} + +tt, code, kbd, samp { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.class-description { + font-size: 130%; + line-height: 140%; + margin-bottom: 1em; + margin-top: 1em; +} + +.class-description:empty { + margin: 0; +} + +#main { + float: left; + width: 70%; +} + +article dl { + margin-bottom: 40px; +} + +section +{ + display: block; + background-color: #fff; + padding: 12px 24px; + border-bottom: 1px solid #ccc; + margin-right: 30px; +} + +.variation { + display: none; +} + +.signature-attributes { + font-size: 60%; + color: #aaa; + font-style: italic; + font-weight: lighter; +} + +nav +{ + display: block; + float: right; + margin-top: 28px; + width: 30%; + box-sizing: border-box; + border-left: 1px solid #ccc; + padding-left: 16px; +} + +nav ul { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; + font-size: 100%; + line-height: 17px; + padding: 0; + margin: 0; + list-style-type: none; +} + +nav ul a, nav ul a:visited, nav ul a:active { + font-family: Consolas, Monaco, 'Andale Mono', monospace; + line-height: 18px; + color: #4D4E53; +} + +nav h3 { + margin-top: 12px; +} + +nav li { + margin-top: 6px; +} + +footer { + display: block; + padding: 6px; + margin-top: 12px; + font-style: italic; + font-size: 90%; +} + +p { + margin-bottom: 24px; +} + +h1, h2, h3, h4 { + font-weight: 200; + margin: 0; +} + +h1 +{ + font-family: 'Open Sans Light', sans-serif; + font-size: 48px; + letter-spacing: -2px; + margin: 12px 24px 20px; +} + +h2, h3 +{ + font-size: 30px; + font-weight: 700; + letter-spacing: -1px; + margin-bottom: 12px; +} + +h4 +{ + font-size: 18px; + letter-spacing: -0.33px; + margin-bottom: 12px; + color: #4d4e53; +} + +h5, .container-overview .subsection-title +{ + font-size: 120%; + font-weight: bold; + letter-spacing: -0.01em; + margin: 8px 0 3px -16px; +} + +h6 +{ + font-size: 100%; + letter-spacing: -0.01em; + margin: 6px 0 3px 0; + font-style: italic; +} + +.ancestors { color: #999; } +.ancestors a +{ + color: #999 !important; + text-decoration: none; +} + +.important +{ + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px; +} + +.type-signature { + color: #aaa; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.details { margin-top: 14px; border-left: 2px solid #DDD; } +.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } +.details dd { margin-left: 70px; } +.details ul { margin: 0; } +.details ul { list-style-type: none; } +.details li { margin-left: 30px; padding-top: 6px; } +.details pre.prettyprint { margin: 0 } +.details .object-value { padding-top: 0; } + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption +{ + font-style: italic; + font-size: 107%; + margin: 0; +} + +.prettyprint +{ + border: 1px solid #ddd; + width: 80%; + overflow: auto; +} + +.prettyprint.source { + width: inherit; +} + +.prettyprint code +{ + font-size: 100%; + line-height: 18px; + display: block; + padding: 4px 12px; + margin: 0; + background-color: #fff; + color: #4D4E53; +} + +.prettyprint code span.line +{ + display: inline-block; +} + +.prettyprint.linenums +{ + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol +{ + padding-left: 0; +} + +.prettyprint.linenums li +{ + border-left: 3px #ddd solid; +} + +.prettyprint.linenums li.selected, +.prettyprint.linenums li.selected * +{ + background-color: lightyellow; +} + +.prettyprint.linenums li * +{ + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params, .props +{ + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +.params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td, .params th, .props td, .props th +{ + border: 1px solid #ddd; + margin: 0px; + text-align: left; + vertical-align: top; + padding: 4px 6px; + display: table-cell; +} + +.params thead tr, .props thead tr +{ + background-color: #ddd; + font-weight: bold; +} + +.params .params thead tr, .props .props thead tr +{ + background-color: #fff; + font-weight: bold; +} + +.params th, .props th { border-right: 1px solid #aaa; } +.params thead .last, .props thead .last { border-right: 1px solid #ddd; } + +.params td.description > p:first-child +{ + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child +{ + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} + +.visibility-export .name, +li.visibility-export a, li.visibility-export a:active, li.visibility-export a:visited, +.visibility-expose .name, +li.visibility-expose a, li.visibility-expose a:active, li.visibility-expose a:visited { + color: #ad4353; +} + +.show1, .show2 { + display: none; +} + +.reveal { + display: block; +} + +#showContainer { + position: fixed; + right: 20px; + top: 20px; + padding: 5px; + + font-weight: bold; + background-color: rgba(240, 240, 240, 0.6); + border: black 1px solid; +} + +h3.tutorial-heading { + font-size: 20px; +} + +.newCode { + background-color: rgba(255, 255, 0, 0.25); +} + diff --git a/third_party/jsdoc/templates/default/static/styles/prettify-jsdoc.css b/third_party/jsdoc/templates/default/static/styles/prettify-jsdoc.css new file mode 100644 index 0000000000..5a2526e374 --- /dev/null +++ b/third_party/jsdoc/templates/default/static/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/third_party/jsdoc/templates/default/static/styles/prettify-tomorrow.css b/third_party/jsdoc/templates/default/static/styles/prettify-tomorrow.css new file mode 100644 index 0000000000..b6f92a78db --- /dev/null +++ b/third_party/jsdoc/templates/default/static/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/third_party/jsdoc/templates/default/tmpl/augments.tmpl b/third_party/jsdoc/templates/default/tmpl/augments.tmpl new file mode 100644 index 0000000000..446d28aa53 --- /dev/null +++ b/third_party/jsdoc/templates/default/tmpl/augments.tmpl @@ -0,0 +1,10 @@ + + + +

          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%0A9ow^ZvrV}8Hf-~( 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

      • #O|0vE&D=yGXHL4qt-Mdu^=o+8;HJg z79;$%T*s2gW_BWHlL)jBIIiN4BcVSmZnz*7ql7FxTlL|(gyx77qmQY1)m_@oa2NxD zME5*c(NvR#D*rZwetC=z3l9xDQ!p{Lfh!1C*nn;qja$o~4}3rlSe}vrQ2P_>Y9dwG*u;TG(7g*Ax&= z(x;WJB>8J{0kurT%h6y)%Ob*6wlzbUK)3K*g0U2BlIEZHP$R&sbzjxVsi%cSR4_s} zsSTw@**;hx#r7!e*&y^G4Hxc`{6DVMhLrq_wLJ(aGZvN6p>ptI7ulYWfYHc4!vOTF z6U~#s%!%~L%R`i~MFR(u>?L-FXj(2&Ly(s^Cnv=SGw6uVLKDGvaG4co!e6DhLRxie|pAT7XtazRFk1Gt?Wi2au4b1a&KlV5aTPbtq(YlP_si1^3R z!(O(6{W5JFJ~^uZ(p17G#;$}y$@9-P+7#m^1`vecjA)08UK;Up@eoJ=uz$s+k{DB* zV-;jMBSoW()B*7K0afA<3{YM&ts)?dJ!9&XbSaR4OAZn#L)b}Z%5sGt6D5my5n{5+ zH5L3!xJlPF&JnstL)izl8x}O*1{+~1wxlpqB2>Wpt+}^2(Sg?$aS}U}A>zl)orXK&fOQVT&mPV9K4CPap-SD@T zlsf{>5Nq%>Xiw2a$+vlOHh7L8K+E8Ps9r>Y-ag6@4FLI{uuQ;kmtCQSo3w88TmZQT zYWBqM1z`^BMaYw;EZX0qXb342m&xi9Ms7){qzZS6g}Sl$!$T6}d|+VFQ^TTxj5?B^ ze2&|3Qt-eRvB1Gtn@@1rE>llnO(}BarHODm=u92!Mx-3)Oew;0XBxUpachH1R(z%gesNwxcU6khfx&0j1QBw<*G^pv*$V3_iC$H%(vid3eSJClxE3L4bVqY+l{%_)6TUM-*=Q?Om^BcGF3v)c3jme; zrB}Z}0#h{{EE;T$IEO1-BUU9g+Tz*B9<+aVS%!$EjA(B3FVbJ=hz%&7B#b7^_SMRZ zoCFjug^YVp1rTJIb>+-v#XS{J5Ctp5?>o$+(xl*%Y{`OwW29KihJ_Axah}3N*+^(m zioojPiApGa-|6TkrYdrHg|=|qvlJ){NL1tbxm--3EF??GJSic>#^yZ4W8{hSL(M2j z3MSGSfxyafjCb5xM34e)Op!pS?V4V7qEiN<>Wzm+h#4q3F;gYtDB=3F_K;CW3(V+p zF&8exI9b7VtX)V{u5;s{Dy8YL6z+*88$~Em69yVViKdZwl2gc*E=facsQdc&B%FU< zZ^cc3oNf;Zr$T6vd8lHJbCgXbixJql$zk{eG~|0^)WaDP?Pa8m<-3~mn|}A?WK1d2 z_0VoCcj(0K(8Kv5cVJ9Gc{O!m@Prf+YzIRjWEyU=wTZ`rZy^M?ViaRct0n1@k~xyL zCGPUxno+ZH`{v{V#ABgR4VoeDUDmR$bpHSH24lxzwl-fWcQO0~A=&Q}#$d{~8PguvloN*l=%Mwmt% z!D!)sT-2b_K}_`2v^vn*+f@a2r$8lew%{s_E~&gxu{053_(uzYq`Y+oZ$r&Xfj)Q9 z*l9g#Fvvui4MxGi)Bvv;V^UJD3Y|k`8Vj*kteYi*S?!+dLXu`3$;OxW-0>`uO@1J- z?+3Yxi~JZ_2wQa)5X?XYxfq86I$V@ok^U=SEKGi>gm0yRIgfzhffPBXh~hbBY5wO$ z+8<%^eva{kH^1eXkt`-wZt-K{;ZSJ2)kozOK%n{f|`|L7!M=IgJ;G4x7?AzG6*m8mH$|YOQz>+$uUKn^<>v7{F=A>N)iT*iO zCTb!Y8z8R@xo*5u9wQWT|B&&ORx}?IK^?c&?jDUz$h7n>eA^^08V_5i5By~wvm{;TCA0$%mvImq^kF~iWk7lB}o)+ar&u^xtHtlWOy;jChJhMr~z+h{kN9Q1d)rtvT> zpQepw=F)n2Ox-OVcPSNSgArxHB_MNci!PD6+11)@mc@a~xT*C(PJcNh4JRSz?Y=Lw z_1>OTjcet3JV2l5eHncQ?I`?8C7uk{GmL80@>2RU{Z0_L)+Q_^+M|?NB%MK%ZASb` zB6|L)8Qy=fsq2}Z%tcGAoa%q-zegINY~i)kgx!9zCE)FJA?vY{3>5A+qyk#)K6Kc( zV*#CUJAo;8nUl!6ab=6WF99=i7TP7k1CC_h9{BSv?T(+1DLTRwbZVObt9%(Pj-dzX zni}|T)_!;|C!W{zevO_}glkLAWLfB=FlwMHMu0m*TOfg#f!wftU=TR~w$RwLzi5 z@)J-T94JMb{}dY=l6b0pwsQ1h5!LNyrPo8=WS=ilQp@%CFI+#cq$P9oDqd#n9oU9kM4};|mhe zxwfCVu79~vVVkB-4m=%k<)#M-oJjf`93^w*QC9~YhZS`)q*2`XJ$v{)@_gO}^U$y8 zvf!K7V4aOs6`jis!dRBC;&VP@0oAWKPY`bbwX*KN^H?=ms ze``LTXjcED?tE9Qid*Dp-)etD24QWnP0x-M{kq-p>f_Je$wn1bKjUr@+tX9l%5D;q zw9}QzV|(u^^J5M5e%FR_`%LC4UUdCscbH?$9XScS-eiDp)y-GW{>RzUD-YRt^lGrR zTaFNY%Kgg$mQ5+~F@@9W`$st`p6A2<#u)5s(Rodi>AxiRrSeVL>3af|Gq>h%2Z4>4 z9xmgil)?kgvD`i&T8mOQNBbvNiODu*kXld0Juh53YBP;9L6>>ur{jY5;lvIS4vog+ z{(w(xRax0moe9%R0JYoUw0i!aWBCpHu|e1M4#&$0gLOLaU0`fm145>;+vEK@6~`yx z6-3c_ItFSVFK%Du8Jra0592ngCJk0rEr~L)$p_XTaC==qby^pq%bH~-@h}!E@`;k{ zl($zUW}Sf`u6GORG*90mIB-t>vyGyv-*Wg8bv_OgE8P1PnlGql2IqF7{fJOU<$~;x z2_>?XjgXy(C81n5_SDHJW8S3OM~DH>v#a;<;Afa*y%kni7OaYoT)o9ZP-J)x5Upu4 zl!4Yo1uDX^_C}kplVk`F$Ou61C?hqOI9JHTc<7fcVJnF@Vh|SzADGj1utMTVQFTdPdQfw=Byt75{PJmBw z_edr-kYm4-4Y3CvJB+>2Mt~&iDWRy^nR;!)xci&)%MpC_KqGJtSLA^($aNZZ)Q%J( z3NW2hSMzn|ojx7peYDOLo?CzNx6v~ZH%|)Rc^OH5GCJ%F2bC+;whu;%tsYZ`$i#6B zy!~^5nD$)86Pm#uckcv-1A$VYfixfW6?yTwF&tWq`jVm@iF;i>enQK+Cq%yV-pj8> z4v9funxpWFq0?$|bL3lGumdkngz8g7^T6B(2!^TfIuo%bQ1QJn;)n-p3_Ax-lRNkZ zAczxTiNImlB0lbH5v-t%4F^mS(gtk2EBV7y&we7wj;8gMiS>+hlojB>uSa+x?Im(8 zDzAAGG0Z#-gKu6YfYo@{t?FUn3h|Cf=r^TQm8AKCw+;gMxNL)o{6*zG*@P0D8-zHG zkRRb#SECN7nO9Dpg;3M#G@F|>A9ENd1fGF2y{5H) z(Uz%zy?|TJTL)ya$Xj`5`H-Xs$P!FSSn_E#}y`RSB1?3(3ZPDM8OfdWEc;%I2 z+Rg$xl}h|s=SLs`HTnFh1`W6Y1lr;yoxlwb(YPQ^2v^`;%_R#kn5LxP1iQ{ec)^Lm zxlw-Qy{^(=aHNT4QtmK?kazO391ltyfG^MjN~yvZ__tN44=C!y06S|9uxG9LMIpbn z<2qCg9P5HD%bFf(D31QnZ1X`K$=hD=;F2(L5Gc}r2*|-4Nl-fCzvz@o{W#o0D)J{p z*xeUp-BQ4tB6)~Iv=~xPUI}KbyHf`K)JEjy;RvrWDsaRvWE*0kF)gIg$&b z4htK^+>U!dxs^DMjQN1%Ig->T439d_N9PgGtn^jS#(5+Bc!+=dE6`tncS1G|#V?(W zN@+tvnj@*PPBeR&F=e3d?jYS9S#fG1gBi>u*HtlVK(sa}zDvcxP&=v0{LgDdy?Di+ zpqF)I63-Go2KUB5L3(zMlk+}((>RHIhj?A&J?#P_v+hIqbq|DNx830|l|a;=#NqFU zT1g(D{kzZ{H^eQWbTM|IGTbU^X+vtxuxNm|qos3yhZ!w_SlO$oyjS8?Sa|fj|TC9TE zlZnnG<;Dz))RSPI#Ze?=57ZQ^I?ML6LxGeUalsxy`pmhyu5vixajO;;GxI%) zOkf3}M283_Rj_-iZi!b7uolNU8jJnlb-$`?k^u=fbaTt1j7q+~x|S^cjCFbQD7A+w zlUFqF4M6li+!ryEh?UC32hz#N43%|7bbiqZFmp953ZYURw?3-Imin9{_bsfrHN42) z4^;oq_~|!DO*0lC8gPo zzTzhM;@eb>2QvjRGOUhyR*&Bk9N0d}%?=E2#X*93UlkIQ$Qm5*SbXLAu0mJ`x+bZ1^v=`>fh9&yMT~D5; zm5kt4)NLj?FPn?>oznlzi}U^yXNNU!=G6E4u&rlX0iPx&o88%%4QOkaDWvUjUD{Mh zn(;W2aC#PH9TCz~zxkMn@_T$X^IPuvc-r-Tsmf#ayKA9)$QKI54bT(Majc)5#O#sA z;rWM)Fsa2GLssknb=(ilQE>e18f|vD=G|XpB(+#mFmF}*29}fhbPVvAl3}ecKFN_3 z@eC%}OXJ~sdQOnDYy=!}v|qhrX}X@W^}Vzt-P-!-P1Qj|@-OSe-6V9@R>PF6H^{@R{I)M0fD>QoIbz_l9cl#vze z=?O#TBzS4?W}c}#kNmdvR?o98b@y%%lq)0IoN5NdT9DRzM=cOhq07M~AFL4vpMBin zDaY6%7kb&K^;Pm2Sq@(Yc_BJOf^44w!Fx}ZuV~`JHl+UzDLns0S_bW;@A@92w(~lH zUFY**WY_gQl9$P*`}Iuc_hEDr!}tA6*L(NZz>YUwaejV6W{N!%I*{TVT3J- ztta-Q_ilvkjS8Q>{jSB%Z@~M*X!m=l&2N2Abju&D=S#xd>jB!%ht%U?xsCVh1V4-I z=e1_G>uJ2rcQ~C*&-Y=OP0#B>ZRhGypW9Qvu>)mCGqW8>cYBf)n z)y|i}fDzy3CvxlQ1pT{ib=MnnRZnKe8?x8?c$#nN^z9D%^?17OpvKPkswNKG^+0WY z1${b8&+p>U&IfCC_g$qqRl5e3e^763yHc&Nt@E{lcjILh03Yqsi|n zBJA(`UI;o~*X=|Qx~|{t0RH~uB)snH7dYMLa}YZ3_g;wCNxu{wxBGbtI9>Pm9?9nz zpPt9+dJQ7fY<$c0v-lgsz{aQk`decRR>&a<1y$@^h>d+_R=dNAMp?*1Ka>ZbQW zt1i9mXVp*8C zzK2S`Z_-HD!$;mh&CS-weXqy4(@9QU@AtD^m*LLW+E423jh^>E7Nec7OTO>x?p?;4 z?`yLo{;k!Xr{`0>T==13znjmMvbCb0k1D^%AMfXflU?8YWxo%H`q#MJuSf8i?~`@E zkANn>(@WrA4bB-n>Dd)TZ=LPA0#_lR-P)bBOL zR`T?~%g%j89ioxxY~z^br6RyL+cxca`RBvp3yb1Q@`MSJTpr*$P+a~=WN)NpkP~1t zz8Sc0smDVJ+d6JRwS2QJyb`=U?mG7_*MA1(da^QEx?ZS*mU*v=HaSqb&ByiL_C}L&1v|$*2SD|F<7eWuj09G?iiyV!4 zdtt*!U z2NgdI+wIow2i8wM%+FFeZoTH6J1%nBUu&uO?#B^Ly$?$G9oDyIQky&VyqugbzyB#HUQ>sToBoTuGJymD;P{_n!T&G1 zxyl~)CjTiho};3pgk^@}i-v|~uM%j8!XRLz#E%>uL8@XTY^WHEZxI)`G z)wp)l<5#G5^+?LrOM`S#>*V_OH9cDg zAZ@e?jh6_Ie?SCS1hl{lvyaDw>Do9l^*3&6bjq4O3ALVLuLpj6%;OgFA&;?Xc&Zhi z5U;*GY|8sYAbi;ST0p%I9Vhq+mLhFSd!IgO2K!ieoL(|Bu^z9&w16;cB}urXwW#9F zvPNAQpKRqyWJUKkHbnk_qpe7pF>ZgR>Y~HIBq|^=&j(IBEU<*q;oe9ReVTawL8SrL z1kX8jvXj)3sd#Kpg>``vRM&JaQ}s8oBE=2GNoi*ugAd!gW=tURSIC8jqhQ>VBB4cE zg>HJ3QyN_y+e2e=ymX?GS@G_#w(8pY&w_jmbY-n(6b{&CeY|3Ydh9_2K*ip4C5cX} zC8*PSZ!vPA%`7V80V)(Ja@%>1|m5_s6e ziU*f~+e+et-gXjIE6~$^sm=(0Wo_2KTKO8%kS(I+kE!K=JftG#0f- zO^<>i;i%+^G!{!!-Hxh8Rj^szj)?_(jGglHR83W4AGw-JWhcee-{N&;p|Tkr3mMrs z6Ct@VGIXRWJuQkN?E+MhnW%93eo+x`$iSW*KnKLM1|mZs4@9E&KL>qRh_Ml9ds+`EpcY@a3_v4D^XFB0v5BolNbo0#<9n-ODmMA zLUr@G5GTWvmv}_t>K)Rf!pZp!O34d@#i&(L5eMqS>6wtzkLH~I8ZcXWOwUO?e4AI7 zWLR-^O70Z)Of~n=Q^?e+o^E!JmMKu!=5I%hh>p;xQAXG|Y8*M+Vzv2jz)SCS~i^NWRsIn>0w{ zs#rw>sbTGdoCCRy4kLd+X5-AxWLxK4SOUs6!Jy58$~Hi}>~Yz!`g;+HRI475b{>bS zHfM$tZsFUR85ns+;eRETLwbV7@cs(!4)P4$_#GbQem{&d4AmGp+u;_F&3TD;a}9L} zfyBGr9<2<1#0}``N~hoW^;&=yj7g? zdK@ZFB9D}r=!%)>4N&U?8vTkf0BrjSJd_iB&_{H`5~*QEIfwLtz5#sC8}RYp^G(vw z$s9(r@T?CuCJF)wv&-;@bi}LxGmZ^h+r4CXt?Bb$k_azS~ zQAR56Ng`8I_^1rCpppcn&Nq#UGNRMwaVK&3TvqqhTJKPlMaC*oXHX=XjLIHIS7vaY ztGAxRK?R3VZ{CN326}o6@=I`mD*fK{T`jXZ&OXm&awKuwXp-F_m%*qdd4VlG&}pay zsyJ31bA(16d@@z~y$Wu8T-8!RVMXdP(=w$nSo5x$MU|LH9Z=-?T*+WlEE%dJT~dc} zo$k?Xy5ZqO-xK=cQKroJpi8MlyUKk&Oi?5lLJ2?j5Xiskxj~*>rBM=iUPLVY%~)qjjWL)Abu-^pagll5`VfRp+kPU{WHQt54^n`<%86XQO$)Rz?<^Tjy!w-+InRx8 zcwTMnF~LF{`GiX%tcZLB=*<%4UIO6kl`>JblMEp`A$JXF=(XYK4Z;cr)BCZ3p?A@dX)NC8yNmU}Tq@prgH-M+!!odZeO6eu`!29{dtsEm#rvb~ zN`nxwO;f5uBr&}t0I+t4WRKoTMQ$NIOdVC#2mw9QDsg=~F}U%d4f6#J*6FUbI+WkA z!;YIRJ%Z~zAWg%pcDLVuM?9p#>_B*W3Wu+I3u??;QneW8ikf;>>XzdDeCoT|a8kPT z9+Vw}b;&(RXV&XYOq!S|i}-VLJV`sTG6Xa(8p3qBe0cX%ryXr|t;8`kiZ!kM7~AFHcT2(fPnZT_<|T zP)`Qm1Z1O?BdIzu3x>oH@Dm~S81%#$@ds(gWM4qbE#X&5y;1dwlDR*r98qh>JwO^G zKtVur;owF+ZHuT_;YkoLH2BHGcRYgiaC)3>^t#;&eEB_w+Zq<#Oz_<}3&V>*A)AZR zvVnWHg>~5QMpwU>I7f8?dxX!$=-vQx*FwIE1JA5pHPR9VaQ~1+_Mw|A+`$sK-Ug|I zxj`UuU|#@+^DzOWe9n6LoQ4GfOWOZgDj2dotk{7w0h9r>$G6<%0?(Oba#|ZSnZ&ggFOKj8tn+lJb#Y4g?o{;*&C96P0zu_3};L zEl7{3&94P;%9Z?rzUT*;^T{*t8plXxLFyEo_c)r7hU|`p=_vZ@1x2?9WBR(fPdeg3 zC%tFZ9-jAb)92;=z{~gT7dH6{4fBc0;T=lxi7bNOgS_O8yvg8i_s;JZOLm8{r-Y=q zuY|M!K=QLMgjG!D_wt(2oe?#+?1&J8(Rv~TcLV{MSH;fJ~#e~5sNnatm{0qhRkMQ^sj`d?%f z9m5qJQwNju6;)JAPZl801zCWuqM&Mb8yYQhZ0soM(V9v2DR zJ1=DGe-=PLDmUo;PZ%${C(%mKicZPyCWOWP#u05=yi8g$l zx;=HjP-iKc{vr?#E7u%c##dINP&{W{&SA}T< z*XnvVv}`e=8K~2}_1@)@U~cxdlPli-*;6_adNRh#WGzaSy8MeifJk)%9n3kFX)q_> z(kO`EMuBdh4qM^h@lFFov~ScXJh+AfMm&AQB5^)d>#_)=6)+4-K1to!=8j;k1JbWEf- z>c|bHk{J)Dg2t#_YrkY}*vjTj?V?z~wqarmrp8fOT}pxc#h4~zh8L{%0pc*vg)xF+ zum=Z0aj;Rc*<+_-yQ9Q49D(7DB11VTP1jt&y0l~khP(7X7q;^Bo7dBribhGoa7UB{ zbIX*cp?H{hsS_As`l!d5!Ei?rfvN7%0?+Pygsh({((v}`=PR~THmvkX()V;>=bW7( zoRHlW2Bg_9^-Z#qw$)*{qmDvS1C!Y=@T0CoJi!)TB?mItCP^sT%bnp0x$L0Sjc8dw z-KZ}+F8XJ};<0`hs$F*-7h@QrHaw0b|QveJWx+_H+bpEC~TH1MRxYA#&ws7sm= zW1C}Xa|Ug1o3`r|Fx#-nC@Dapl{(qqA8z=0ac^d^{;kdx+E=f)^I^t{&>TGN<#gsg zM`1NoGL7}i#FJvvA>OsHb^t*yhFAI{LZMa6McSxjh`U-5GH_+8X9Qj)8oO~0l&R{) z+9DTwhSrd@<0Ho2zIzlr^&qQsy0j|1VNDFz5PwqwaFhm05){y!?S@y217-h8%b#;7 zy05BO=AsU!BMQVwy|Spy)ZY4fFs81uN6X3dt`@-cFm;v(Y9?~W({(BS>D?9S5iy>4 zM7iq7vPTs@$jXoVj1$)Kx)s2l4eXt1u&x^^y^vy`57bm2`Lq0~RsgoVCjJ)^doJ9| zfvdyW5!OkVJPg@Q{TcPTn0r)u;X==#sf*JYa^o4=e))}-u!)yGT;rSlkxhTjeFfXT z9FWg#L>1DuWfa#Pdd7Fj9fO3D+x82lk>~o7X^#8o3I3IqAZx?)XexT}D#GYDziyb6 z#gvuBelnEc*5UW){c~1v*QaU-c5d1}H&qu;qwbHkVuFp_EW}Hlex~F6O%VD;AG8(Y z*<1)t8s-*;YE8fxw!dKiLVwS^RfID*rs}kWkP0(DaCFPTlC-bp(Bd%tq&K7u$wk!% zVRs&;BV(-H_HScS8?PP)a|~mI8cVZ^;UfuEtq}=wII2RG-cVcc+cnT^M+60?c<4tPR1svA7&PrxT6_9ALZ#Q_32c8=DR`AMM9v*%EqzQCQwzd9tU1rb8{Nqs4b(mE*gG%%2S695 zeto7P8-F3`K~>ajFry^2Kx3FGeVL$LTj}#Ci*i0uvT}bfsVI#;ua>5~Nd+yk(~d~d z9qX^&Mu~Y<9er#FY)O!LY27f@)tf7a-Xkex2UV*psIOZ@{rkg}1NBa3*M(Sv9tLR+ zI@!$AQGWu=GN0$x%?eE^d#d!%j=%Q8WbiHO(H`>AzEW)bY&}FC@<5bj>QM7Zo?4+?1+DF158Bbfl^|tf+Mp5 zh2aQtO15v{|7oy1j8{sIKmh=>p#T6-|A)b{v$L}JuOL>4>V*=r8p;pN`n2tU=8Aqf zb7_n!^AQ1!s&}wHXo-l2vH)UbDhV|KLZd^If_$@N!?LA~71yGomVg2ufrv8Ef|{ zqvIT8MqH*G5opWDt4G4+jHmX&!XnLsEm$Vl!$m69JhEue9nyf&kN;RIod*|~7<)(5v9l9` zW(q$e`Y6iCGZc$|3v=_Nd}!r*$c( z5!)Q`#~@lKzm?nK$POVN$=JRchp>a3y7+z znwBb+a=HxBI|C6v{tR|$vNO64u{5dg+?UePgxg5#&Adfxs>Z&4f2_)p^?hL@!iywcNMsdx z4Gb^n2JZL|^Ia=xKTZ3a7(2QnG{<|NC(5pnJGZ1gplzIDn?Ge7l8*mikuVw}9F+@4 z_?JN(dy%qEcNzI){Czab5fY98Jl7QD*22V~JzT6Fxjz)ukm!41&;asTGhnAej2n3t z&sr>LvmsqK&j)?@mpCC%kg<|E0Zl&U0FEqaj zz|M;z2u%Ffo&;d~2Z-!IVIqA3IK(I{_-p({il%PFiF``XLLQ&(C47grb9A+%Q+ex( z%mcgXWak#g67}J-tW@9JJ%~=0Q+ZC<16$WhcQ8${u)FnJ)m}()=Yy_bKfO~&^SxJj zusjutrWe6Ju{Jv>{`>x@#e}}UJjRfLr-GM#Xn7OH2nR8}u-+$zDSe zfzG23ih?_GW8gYZsm?Mt#|hoyW3ozAI)y!*(qBwM6uJdVwS~B=5bGDgZ`1}HVG>*Z z5_C({whNt3QMw_UXpJd*d4)NelNU9bLF4@gOZ)f(!o@zBrLyL<0E;G8cb<3zX!+b% zGF@3}fl>C9J*2*nVd0fpLx6Sk!jzrBy1wDbsfgxCKtoj7SGN1SmRrvsYiDRECQ~-} ze^-ZQ*C_>UcQVSJ z{{PK_w1t!Nf4Va<$``6g3Mk*P(Xj{V?&E}=mYC$?YE%h|6q6uJ`C}87`AIPgFjg3v zPjKD--TZzR@S3&Dz>l3_=1*`UUO{RDEx+m@>t?e%yWh`jX3sBtdcA<{{?XWC2+9nX zqQEx$J})2TkYXe);cHth^@8tF2BJ#whaX9Ve)~lXa>dLJe^Z;Hg>1%ng~@%+h^rbo;kYc#!1sCqby@Q5YrC$U3G4+4Bq>59ZOoS=lmErl}?? zh_@exlkeC($&1q^@(T^HP864M8qbR69r_ssIdk>=S_|_{R1Q3P0fl%KJb*7XZ5kPF zFq72f=}6|T)s(WJU3iHw68y0Wl z5l-CM$eq1 zT?M=j_ppY{7(rqeHE4YB3X$ZHtz$O|k`g#hJ> zf0^ym5s}M@cu-*6`@hO%ZkYp`i};g#p}dHaLM1Z*Dti?x(oJQ+Y4#Xt75^YU+XJf} zBVpqBA#o%6^&xZcC-}V7=Kraro2zY9fvnE!36Qc! za`8mZC4*egSzu9`?iDcXiQs&R>xYX9KsYT;^GMIpr;9>aY>gtnZ*-I?v`-|@iR(b3 z@=m+}n^>Ap78%+vy8R`!Oalu1N1xTF_dnMldb0fX%x?}d^p}*5{NLB0xU#bR|6YBY zPRJ%GKRz~@G7B-q(8`F=6okxestWR(P?8`Nr2)F;)FKX9wn@$Bw(HiE<>808bndGb z%b2+M??=%y>;}z6ytjMNhgI-BumA7^7T-TuyVsCRvvW9h-)6o(XV!1phVlKt>fzIX z)}m}d;X&oeW`h9T?Zp$rfZajDe8eXn6!2rkql$RBPX-w(ZW4~#;p0By6RqorEi9Y` z`^N!V3$=9LiOXbJ-4&`@yzf+fncenQGl7t;RGD7#6T_m9a#Q2bTp;xyA1k|iqs~TU zI00>ahbVIZO_ibrpScWHsex2nbtFT*?BBScJ8s1~!Z2=wcyGh8dZ}tn5kO?1n9Es; zG$fU?z^~Am{D>qEEjmm}QUzrO&?Na6EZH5bBB5S~TI=NOp^9%jRJ78PehyUDaG{40 zQuwsdQ4<5Wd&-G)g*%uTDaU}33r?*NC4IXM$AM6b6sNb_q@>@Z;c<*9?hFm&Vb-x>N&P4HBH^O^}%ZXs;wQ?S2jhjo$Lyd zY0;z1hw*w;{rgy(2?m%Zv~XSXbGd)y7C=a7xIt$_&s4&1w8LB#>!`Ls`8e&_w#_NA zUfo&c-}iz3h1M1FwgAl1Z)15LqPj0eK%q>l1^A)Or=#t)Fd#1~S5!6jyZeB)iRU)T zWOy`>G|x3^EM{uxha6W-8_IDnNwmqvdD+ekwR*4)X}mK%*KB4{f3h<#7~K|t%ZL|X zc3T(4ZNC`tfxWuJD>`K+B4+QW1;HT~r3;{;zX9lk22gqX@06Y3i9!|lBJw~zQ?#q~ z`_LeY0tW06L(Twh^}@`s9Q@nIj8Lr)8M7u4oIWovRkgpMh7)bcpS+Y4Zs7-QQ>mv( zf(W5%=Si}UVHFRYO!UZ(u_Rb!L0!(&Ce5%Hx!@M;OvTMoMO7KM9O|8Zw{p`K znWTfX2}>UK?UN1AFdn~MuE=j;qs4Wdruo86TTXbRqKzVa5Ysj#d+^dWC32#f5ZK~q zYmN`^tZ3Q3CMa3ftkgJ3J4xk$`>Jh8$OuMqPw0F?3UtThx`P^hqTKg`-FC;7=<0X) zHN-o`S6bfDyC+<4a4c%C-BEFOcs(QFuVDE5UOT=6WUr`s2l!JFoZh6LuiDll=!Kwq zk=w5mxEE;5)P-{W!1A|yE{|{Bs|i1|=AfM0?|;Al8@l*ELaD8ED)ItA003UU#}KUl zd;3$ivof*$->F9%MH#!_GYC(dY=!}+iaCW!8Rc*s5KaEbE223INzKL|EP)78+R|Ie zGJGau44CiazYPwHHMZsR!Y|(tZr`BWE?suwlr1^N*I7>29jDuFyPxc@_pp7i+G-4e zO^h=Y5d3NdhLXb`+Vb`a{_Xi?BI0B1#D|PR_4=BnoqhBP)HWD)(OanoEKaDa3^k^_ zPk{oI8?ZC>e~mS}w$^ozWtY{r2}zCbYPDL}I))KsN@LZSqE)qvdfwK4a|cUkR}=ZP zE*D+LnXSvI4k7l#*X%Am)=;argO*PfHxoJ4^-K8%$pp{6UxsEjFaMK)R;0l47jDHBQe1h`y+_;~&X zjG$-bEY2#@%93VHEx2P6lT5k9L4hiZ>R{0Pq(Rdn9-;AU;a4 z{Zl8I{s%b1n8B0mt99n{|C)G0$rJeR2mk~D#^(TI64}5{Fm`nhxS%J zPWkb3GGj~{hYcPF79^$TW-=xfR#5N|0)P$GKQ`&h2gV%GPmf572&@`*TeexYv7uT5 zpR?S60fUaRJbJGO<+@%gru>9JzB{S?nqc?_{gU@jU*+h&rFMF6 ziNb%-VC>%R_+Cr!dk5-{?|K{0*mOTv!rH#lZ6V)s;Cs>ce@+K~q(0zFUWvYmt9~wr z^}JuJ@SE;poqH|@cfHxqhrN8WV_v@2{FUzAcdPc4B6B80ASZ4q+vGgFD~11d5&nBp z1WAztlj@$h5sQkSFPs?i=R>GvEV*%ERq2?*B8qDu@%n-KBCCP&h)xpY$4j{{zpt?L zScSM{>$c?HFNY+oTd5*_pD*~=MR_)AszR5OWPEL`fP@sOn|gwRnJx*m#GIE&%focU zuvmuWO-Wt86OY*hVp}99@<~~lS!~uSokcVKzvz0$;LO6dYqL9cI<{^5PSUZ{QOCAz z+qq-gwr$(CZ6}?{JMTAB^*mGaWB=Z|>e{u=eXO;NtGNRl%UC+ifr6`5yi)V0D_Kp# zI-jC#O=H{ZUu zu}3{ApFgy#n;q=&vZU>gb89z@nslXESugBry-d~IQc~_BdV7@d?4uR+5rNgKZSno; zKO{=*FxN=Kqpn(NkgYS>>_KWB9Mz~7QKHF4p((5sD2=x7l)81s#{m68}rwXia4yz3dEzk;c{45Mgg;c=9kAtzas^7ZDs&v5OlOlPIKn27D`I;>A}V0&jJ zyQtyR8)lRpyDTyyZ~&(>Og17~u9zdQqcG7IYI*F}8`gnpYUU^Du(3bbET57O1)@7n zWnmL&^PP=+&!ddtRC+U+(k^NgPq_bN5+?8Ob#h}al`V+;?sy-n5Ync;qlJ)ef?kh<40o&^;7_Ahyf~XpLY5=_ zQ80IhIlTk@^U#`-kGqDak>FEr3ZQM3d2?W~MKpJg=qqg`XItsG>>jm<0se3~i1~Ii zb*AcHmvjjOij;}qGAT2UAbdKGv{P4_N!e@5kP_^Ipdy_@1Xl2%DDC;52gkwrg6~~h z`wr8SGLzr&z=WM-(^S~SvLUEWpUHmQjQ3C|Z^d6US(r!dPe6AAr!p!P#zDxv= zTKj51RpK!G#8#1dl`cET5>cu z(v~7KCAmSZ>OQr!J!YswZ=Tpr}o_l5LT@Q7$(x#Z7ejN%fD;hSK>W zgrb#_MXE2$sduo5kqPB&@!_DLGk&HPVK29hj8o|u<05%uYtP?)S_C+hgar%Z^fP9F z;T}p$L_diOv=^7?XTk~xZ2Bg@C#%#mPO^pNhK}+ z9YTcE7ctL`f#ch6*WNx7%JWXPv?o?{+6x?Cc@Oe6BM?>9I+GANkkp#TS`m|jbtIp3 z%PNTS6pw|K5Hk4TDn?9j@4!s)Qb{GP1@V1Fi5J8MgM{0B&!I)9?=2msYBKX;jkYA7 znP{-8B%5b-;65BAdl>d^B|Sg8z0*l1%X@ZF;|E`Ic3B29<0jL>=2#~Bc)=X_(P8ug zQ&4M=m~Na}&LH-Iz(l3mQZq$r*rj%?Y(z}Se%MvVpOmEy4YdM!g^F^EggCSKN{4`p z?;@ep=?b#itu5C&DcMX!2kP}!@gIR21$XB5fICs0BdG(k@=+q{97XB^yxJ~j;$`7k zI2Q#D&x&|;cYQC~-!!n1vzeM4O(hX=$X=~;R;ILg+w}h|o5Tt}%j* zH7y`AVOogpd1;cHDzyYa*F*;*IZ3?#^54UQ&b^sl$`;MtCaLOpCZuVMsJV=~!_c13 zwNE*-yBVAwEtWb=K7B`-SJIVl#!rAtn<0LCgaOKSS5J>tRvVzQ&O9O24q378YC;;x z{EH^uC5&-3=Te&GQcs7-UdH5G6s{;*VH5b}IY}0Xuv}drBxUTaR1c#vxxKBnb~P4V z0a^sA_iz!xN%JBBik+O2Sc=EAqeTvVwgTtQ1&Yffn^6!3Fx53)9p}t+l5WKOq&Mko zaM|sv+@KKMzTraxB||8-PH=s$$XCM;X}q4mUAP_l7CZ1E;vy9tDKpK=xSJY+7d{ma zVzmTXIAu#d-?{K95zrE7<-kJ^^zP4CUk=!97Utr-`yYq*Q~qNbM%x4%W<>Qf%R?+`?SxV)kmrU})Onieue7oMU{s3*1 z_IC^KgJ-C^-*bN}ydafSDrM5Uz$zru+sR*ZPD);b^`K*jf#&G;wSTKFB4G}_4M<@; z_}z`~`NRGN1E!@H!9TOfca$57m?3uqA@FCyD2B+=8q+Q|Itrr0D#^eHS(F!qX0aS} z@{l)40tQE>KgagbJ2?Z@ug>Nbcbmq36FvDG5pCgbgA_S+0|##qx5$=1G6Kb~3tcf@ zjwM3!Q&q0Vdm<$i`M%?Q)Yrf6r_lax$n!Bq34lVRC8)kITa8et8|59XH#x#hV~1Be zb@G_0dJ=bg^jxnLY%U-bY?R1juTY6)taI79mq( zW_90V%FFbFbGJM zT^cZq?9f9ZLz*s)?f-tgBG(ZwS_?Lg5NmSm{@ZJ?_4)0@Pr5;XbX5+u$Hsc^g`hp` z_5z)>3lHzo(NpP10jaW|sT7#}*cjyk`%bEz7v-eJS^?||H1j8H#_Hej#7#jnZE()r z3CAA?g*Em0i0k@96M9`fxZ=PLL_8zKF75tJQ~p=uTtLGj*)*yG$Okkq_BBg$n_p7Sk zjotA~9)1CRNqwcMp@Ne2U;Il#W$yUXT1H1O`1?+NF!(U8mDb4)==hLBi4*cDK1Q=^gp?sEos7aN5dRFLMjcmPyFeh-0fUurvNLY z!Ot$4%4=LnXnzItY#2>yTh=RUJaZ*1hVeq~{smwdv5l&7fz7LTZ96yXVPk~0qoK$H zM@QM?w}!Y$BK{7hb(c^O)KM@TD7j4OVBlFJ;xE}7t^Yb>C?dlr{aHyF)&H;CU$xxal^j7M;)Z5%HPxHx9{bvlzOLN z^^YE~4U%^kQt1+y6L*46kR+8HK6#hbPUB{ZeZ+}Ds2U@1$y}2p z!;;YpjWZh&{GGL%@L!f+!brsvjmK;tg~%jTmfLGVLhcq;(>cnTw%ebwQ%oBa1ESjR zrxj4}pB*Gf0Vfi+N2e`)6BUV4hsk(;Rde&%{(2PKqL3rOoc|A%m z6D6%&J?0~B9DL|=7iaa$HA>wVV;1*m%ew^y#Ox-}o7cAF|3*2z%Z(Yh{2+U?%xbEw zRo!w2)5N)m>vxK+qSR{3Q*!2gO+o)`q2ty^;Z7Qy1}RlvJ}yL{3DROpXm2_T(rH9l zdVPx3@B+c%#)hb^?L6hAx3Z*GuZnM{2~$uBCw7-VZ7U-j#hnbi)D zJt3syE5LwX3)B*g0jY1RrB^)}q$BBcjTGi(cNAlM{1jEASK5zJ_F@_sc)Jy@b-=-7*@ zdJ8-H1|aO1D3=+B2rA$J@RV*p6UzyXwR9(<>acyxn(>ri@E&h;sNujc0nOSpm&Q<0 zZX)c`Y2qc-YS`q;rOeApy;KWihEm2pD9m~}BjI1Hc`0VBySQD)IFrssy9g!Ea$|5+ zTZfINoHZtH!}ZQ{?mU&Uwa^tS8G}tjzg5ufkW~e)ElDDV*A|#EThB||2pw>w7)MpZ zM~CV(kGAxUu1xMlGF>S2~B$F`?pY*m4(bKZWwakd?HO@vniee|@c%2-1B+o{tb2_)z;yhz|)J(Ua zL%!lORt?MV=cnDeQSw5^1G9QlTz621`pQ}2=h(>Zza&~tzRJS9UkmdGu;WW9Kg^EY zv~TJ5q)r%Ge_gRV(sfW0Gu6_F?W>Pw#==-9YPl61xta5}HI$S*)->t>ueL)R zi~5r{^nyx`{Y-4=34yd<&pF7~-V8_qZL7)){X$O96#etAB%o$o>2Sv4ipH_c* zBRN~Suo9m#ao;uejL;#(|KTa+4dq_zo0;6e-~H+GpZ_V)`ZJFBe*X9Y`#r3~{qK2+ zh^v8-t)rQZ_5aRHoMIW#qrYwV2+O&{kUekO#( zgBh7Nxd5e8I>z^Vshel7KH@8Y0Y)b`unbtrowz#DQ`xv(p`AU~WP!l|7#M8qG*h#f zTt-ZR6ZLw^n@T!U*WM?Bd0^|IxkxwZMDJ5sUlm40#aGPVvt0)g zvb-(VK)v&bx~X|s@>u2Urui>!aC2dm&7pk!)BE@>t`_)rs&Oihytp{m)OwRz#j7ST zMjOR(sk+Mk&2bQy?O36D5B(|R7|h_X%{`gnzmw%;RH zhZ1>)fw^98#mz10$}Jy(8)HsNkf2k$nre>U-#DPo6DxaZCAEPpA%|A(v>21L^ z|24+d6Pnalk)7x>cr$1h3}wBHrXe`}_iD+$G82*d?bmG-c7KXHngz)T^UI z7|EXw{fdHC^vjxZGS~_{EMdvTr)fFBP;ow#)O#i2W8X!gnk{~bU$|ny;^Wwzeu;qA z*^z>%f%X~PE&$+>dy;ATBzGpNl7Xt+Sa7ypKS=&b%*VLfTV*~kNXlt1HAPn$!g^qC zngdih^}xT6Hv6K9;OK`K`eE{Ox9NUlUiV$a_GwwVG_DIG%!e z&cl79cSMPM2OFPBCsaGg;|4#y6%P?lMNS_7$_N!L zR>=`)9fg}$Z^VXlU~0!&V-`&so|u01J-Hq$H|U~WgLs&l2H=5IHXwsthf!WEa!+i; zb0ixgjwW=W*yo}oYWH~3pRhz5`pACkgQQl3Er$M3*^1b>d;eZ@?G$ z!w*MPF%$I{aXt7#(4kkm06neJs?P+atL1=bWnFHi+;Bpnq2@MYuLo{{;PK2Fh z7NDJ!I|AX%t@!aeicnB{-)6$}EAmS1?{WzHF4(^CmYC29*Y zT5C4rh?#Uc;hTg7t78M1XAQfQjj5Q^S2EQhC_>W6+|nCBPcxd%4X4b`+jdUaE%_aC zC#oRVsKJ537=qym;rCv8sM(+*Q(%>YbbxLMiIkCJ1LUuk)CrDH#}s)#8b(mA65*f5 z`T%2=VcdjXKaJOw*4LfammcsJ)Jd_hS@-ynMj}BfUiC&FaomvKjdI$P~RQp8=?j^elT_zlf9b_KXA;T zuX52^lCkXwUTebqTe7bPjMoAo%~)zC6NN{3ZW!pjZid-c1o#X24j}E zDrK{!6T{<@blNIOdkqTF^n(!`34~ipR|9H=@HRB>H$Z!^YibHxSvUA=DlJzXt_Z}0 z=G!oPU^Xj${0`0gD?M`uKD(ci_73TKn0t;QA;)le^bFy*7)shN(NS~+<{$iBE z4Vtm=zZMFZiVi#?CQu;ozT=(&666&SYo5q3}mHAt`j2^$P+~+u<{KwN;fsQsZdwr zHODUP=7jriX#1@V??vUMi=<6@f?pQ60gbU}xnDyfB)^!& zX8gG1@8rmjn}~%dj-7jm3~MpCW->!tHcbWhL<_By8;9Qs5qgG75C4f3j^r>K&MLtb zn~fCOuattIm_m>%l1ZA97tLBuZQxFjKqe`meT|d^ryunR-Pa@?IW(*HXq5)@$kS!z z;k4G%_VK9)2RPCIXY4zqW&a7NO?RWW63j_v6hnB9;ay7E?{7E2Y|ooZ=94okvS>;0 zVGCK5#C$l?ftMusD~)QUzeBprEI>6MDSdWq2+lUmj(lCIKC9wy&u@!wI!cZ_6h&W1 z6mx2IQu8=S6G&Hu>)lmik{=HBDE>XG%QTR) zLRpWAij|Xher6TR;Od;o$73U*C!^eoZg6u^Co*dmkB3LwM9FR?kGqCE(lF@Px=6it z1hdr6IDj4$LI)i4&}ZQSi6<|UFe0g2;4P^oz4tJ8M(dU>T6YRevwF(<(YWs9%iKu8 zSAWUP2MNuFFdZd<8V(@%BQ)X8io-PDq&?z^pe%c{Idh^XdPEXAL5JDU))lZk+N2(7BBqrV9+J+ z4+ub&Lu^zHvOoh z&Iz^9wwLv`GuCdiF_#eahT#F_APF$_mT&V`w)4*76YLBpA^`;@0gX1%);5oIkkz-d zGiUm?qmQ6|W(;&VdWABJLg>+^fus7Wr(zQNVnJc~0?;9p2`Bq{AV|6VQeaDhkp@t9 ze*E}P;X?dIZtVIk7-PN#BmV!-Ey+4rTK?}{S;@7^_W%CnWx-SXEne(n0?Knoh>(EH zP(&hvAVCFCc{u{WT3X0@i1plEpPXD@m@xl1|7gJp@}$r>%UYYK$qNsb`}_A-a9sio z2}(+GBq4br2@#P&ZlRBvU0K%wLKTZ-ILY<)TFeJvf92JQweBm%P!AcoaT`9xgo;IG z?yV`SR>1n?mab{4UW8#qNbD{IT+o?koAY4IRY5A?T zp|b>sahrD0U#g@!rOtqDYXs0}j_J3~s{uWaYO=IHPo1$g>J&i6nXh>sLEa!vCG41J zO_f1%A+uPy3vLGD21*6A!h`p}M+;=q8Yf&>M+ zLPXSFIm^j?ER>Reu>+ND`Y1hF4%4HGSS+Q`6x@g~f0lmiK;iYjd?IJCTTW#J-!L%$ ze*wY&BR2nc8UF9(N+lixFRdUf*#A|~<5B33@zCu2RK(5=*OrlP5 zGxW3tT1Gni66M~G*#a5u$b3cVHQH%9@=Piv%fusEzm=oH?AtBJCW+$|$105Z(_`j; zu<=vz$FJmCx^qF~T849je|&TryTg^_cP86NwBKmpUP?Hyp90?n}qy}n;BWRtGgL%HOKf6>!f2kvyuXhAcsr* zHW@HFDvibU{mkdx9gmwD!z8Gndq_-|^1vL` zB%j$6Y~wlaLrzDD0bb0}GxJBx`-M&JKf@EfRng2xBs2WPBPKKanr4n!})X++)!mv}zO;edx)sPkj|H{peI#Z&<4q+oAR+H`^2wA5G5bm6O@ zad$#3gUnm8gpS)S+~;^fwagpGPq6a5T%rxua=wKPTx;@^#mdJ=u;pMml3bO;)7+@s z*h)I5N0M^EsCXlHGb1vh^{f&^whFvf+sD)0H1sToKcyBW7O6uKQo#%cGitGGH9I91 zP%6#Vs(9Aw$m&|tBz|#Y;`3{<#T;VTqEk8@HERO43b<2)bTUrx78I~)k%M%(X^$Q4 z>XYP_b3Ra8T?vDu1@R*bsgaR0JZ|QN6JA0i zbX;#Sf^yp7w~5TN?M!nk>ICM{Dy$8G>DYpgk&^{BGH+7_*J#7jdXi^pufO3NbBoqQ zWMYSG701y9WdV|8;iLU3$dU>d3!ur!p;0)`!RF@b9F%2H@rpkRISnLFDcReEqM~+# z)dh{M3K9!zN%ak4KTQz%vAN3o)@)(*OsUTlN@J3HO+<+wcjbf-P4t@zm}V>+eGnPz zQx$^sm>zz}^_oxruCFMy|j~)tdA5 z_WxSUh1U-+EWI>zg+U{PlPavFB9wWnp6o3-@RnrX%+tis&)aaCYzmoK4rykMV1tXU z&xTR{kdrEq=n(K~(X$%oK7>!%77g&C^!wAR3=FUM3*VF;T2L_gM8rFTZe}Rq+8Sl{ zM?2i167|uJt%>=fmUqpcd!$0#i?=@JQ!2VndVe#|JjJ|zRT2?P{8W!R6s9l~4yia4 zYsx~YUD~^ujT|lbHIG?PJi!3PXJf!ex~q^1Ybk)G1;F-kk(H7N)3Wyk>FWKbhc~-r zef8Nessb7o$6VFh`ZNp%%cMb6opY?C$3SKmJ~j$)Y6WC%479+Y^qMwR)}Rfeg5Qm;!W?AyZ5nk~A%LLN4!_g_U~CN=OnNCMgx*PScc%^TyW7pIr17 z=;QMb_9^uihww(q$T%VEKyXW)5tAg3i%+PwLrQZ`m_cPbO3HM`)45`Zsi&LwIh+r~ zxI4j`2GTa(Fl!STI>9<>m$>1L`k)`~YD9p%jOCF$fa;Az?pcEk((O*t4dSS$ zYlN$WEHAO4+LT$SsQ@g`86(pY9IiVno`SZI|{4N%V|{J> zh1sJq)+0 zjjC%fXpo=ygaCe7!oNfpMlB8f3N;zp^SHXvHX4{{lvT!D5?04C7h{~YELh{T>L`?% zQN4|1%Y8FGdLfk`w6_A}Tbh}pAq-w#W_SvNgj}HZ%#m9t(pr@bO_A_ehh_3IRu0!G z?00icgvfG7?W@sRwXyf-!Hs>p8rNv0(ko>e8o1Kd=Z@l{Pm@uLTbL9m!a77=m2`J` zijp3WIU`_7NAkKBru&dSbZ38Ho5n^sMnKH!{!FEi31Yn$LA|yQRDN0c?hqB-(@;)X zt&DnfV#`PzH@*FRgy+-Xw{d`HzlkjJqh!8?it`Y~%)yvW2=V+J{hmc21Jsviw~l<>|PxYssRR zP2OTwE^^4K2G}FrGCOCF5S1r?9*Z#2hk5qjGR!t27@9*5cRA%@QPQX&R=iCs8VT0t zF{ZFI>cZNQ;h`4QAfQ|N3Sq04&$C?aGYqqyU}LbSurjh zSy-VAk6UlNdP;AyTECK%-u%74vrn6uBlr39Yo!jPP&9s;(>LH%P`67=3F?Q%(-Yzj z^dsk@O9dq-%0b-B9Ds>c=>nXXl2SFLlxT3JpC#KhH3)kZ#|TWW!>EvB2&T34AE432 zP&-j%b(fbW#wdRqkt)$tJP^Pe|KSoTr6U|#ZZ>?0hT+f%pSP9qDxuQE(JT0*f< zBwLy#_)}BF=A1xt!B$3EhF3AXXNLnQ2BdD4muq54VD#qxXbOC!piZ%%n>W;KzWrxB+g1dD5VFg~NREn1aWl*WT?4F|Gv zELU2^ytZE0Si;LYKhAeZu=ju97kP6x1MSHFT5k$T>{MD*nbvI9l=NE4g9cdK$Tc#y z5gNMNrR$Shf9dMRkb!Se-22mPe%arnXdZx{{v`6Dj!-T@*R zpeb$lPTd{lAK~F!-GHLx{$nj%wgum}3&Wo31G_mD?x!X^-f|9xccJoEQ0>?m8>1^O z=14jGazj^dh)aGB>xzq`FF&5GOOK{^R>WF6-&VOPlBZh-#LDQob8nwD>Yc+6>!EXV z*>iuKwlI!`FOJlP>sd&f+l(n529@@&#jQ+qW}~`y?^WKJpV2nw2(F;3W_UMz#Mg=u zR|(hP5M`a0-FzRbL)kz5E*yWZkK3aAFmuPKSykW4Y=&)ZTpp%3fxa?tBk06dYwkXc z=FKsC1hr}^m+%hViM^mYKBZp(jH;Q!o2)zy8#O$Z(>nbwXa!IW#;8V)pYZvnyheIH zM+6{YE8=IbOq3uQ!4dVi@rM9_Fls>1AZO@bS8O&{bSK&q(GFi0wGN(Cre>BQo|Mez z9rz2QrOl9LG>3@YOZ|bgy^Hl8y$1@8W+9mlgD7bSlCa5ZZfb>oNR%fuN;GI(;oyAo z%NbB$nWCV|~;kX1`QaNW~moawcgv zRAa5uwF;E@^%#Tx*ZI77SX{v(M_uzLR^vJ6qYU1Gi|J_pdXBKFn_(NY;?R@7SA4#w zG#^*86Rrnp3z zTmr_vf#M6<7oVk(x_(U4y_p<=fbh4cD?$2=F>i$0PfyyJ9%+>9LZ9iTs?kB90b+7_ z3V4MPZ)z(Z1*E%yGNiH1u>RGgd?(D+gN@&r zk!^LHhZUofvu;(p{#Fm2UyS*}Ex`5@gJ{`Nq3A70XwB<_O4=Lf0wTL@zU<1Yl3c<; zno=H3&ms9Knwl+B6mC+^^X=5OOlY5;=K|{@>U+#bHDcOD5W&7~NvwRQEtq9@Hs?36 zaYBH7#-Pl1V2T?antct=yPaw0)W&8<KA`U9xnM?_KdA=M|n7dW1^Q^mtWu^Xy0 z3~ZU_+A9krIU0rnBCi8SpIYrDL1*Jv_X7}gUtxw%jj~7hWO22hVAfZi^bbkIGVkU2 zjtxAghF>#$dVafu^q)#3%nMW$m@IO2+O94oZ1V%JSU=M9lPl9*Zc+kc=Yy~MCDwNj zhs)So>i=x@cPf_o^F4JGZ-u4`=%ny08z{_hh&hRZ*Z(>HT>`)Q9WsUMM(1%__EaU* zd$DNVq4MEclkTkHp`(|kBZA%;25^tin$t5lsKlq;&Lx<1**$y_I*`9QYu@W*&prGos+SvmzFUwQza z;pCdrb{%K?!m>k|{hL0z?oUIg*aQNW4#6wNd&O!AJ+vUt);PLgb2&0%>!He8m9`Ac?So^O*xtR zz~QXL^paYg{1$3Iqgx3Phs3_Fyb5bz*%RLn4|BNjV;U}SEqhHJ5QJNJV@mx*GfT}2 zew9`avfyq{0XqZQ))^{tWM}uSdQ+8Hn2V*sap=rmx+ZSVir!i0;~FhrXdRJebw})6 z)GWnrwyYpnhT?DOZDeHu+lhlnFAQY&qoPHE+3{A_Caf1nWfk!L&AV@O^=x(J3}0%v zZ+Iiw_yBBtKy11X#F|`U|MA~6vyE-jT+8m+z+Wq-59si2rN#(Y52tEQyuhQKaM##L z?mElzKiRq{{@oQ)B@|#dDcEu|YMoPAefA%up7K&!vPv(E%P~j7R418hV2P<>>o0En z9$M`?sBj;D_Y$ut{6nLzlMeY#@>goYlcwW6ky~hvn{I2R zez|Gr3Loi`&W^u*+MEodJ#H6}b>pcqsx?&A3i)v7aLQk$6W~E?bLP805-hqRF1pfx zSfUr`a;ExNJ3Oh@@1B7wHki{uL-1bg%%sjZR2sZ{JMN%gfU*oqbZUfDxEyRM21%JeRjvS9yjzt_TS3h>oYc`V-1J1ZGckBc7WmU=sd5 z*py`9Z~4Jdm=*KbQLR%pa&kEkYR8-r?>Wr)yQ;L5j_FL_R%>>>rSk z_nnBM1M(;P!+`V;M`ao*@w+DjtJrPNjj2AWyR5lx)B_H`R8r-^Pp>IMM~%!NrzDWm zX=Hp$dwyn(<+v-^Om~*IozRmx1^DI93ZNBMfwX9Or&RHo8;G*05QD^Kzi~1{-BHi} z$j$_S^W5I6reP%8wMoXDVrTXE2?8AtQeyGh@^L@%K##Z6g+IZ57865ymhZQSQVLNn zf412JQ@weyaq1Cs^n*I+PX@q|3CADfJQk5c>cLPza?UyVwg3rjMA`#0c(*PE-%=gwES(1u0Dq=iS5{crpFKC9M-*8Bw)NUJ z07a%k>?}=etV~2(;?U7YYNSnhd`>OI;Z1J>84_Cj63Gw=m*UJ^@mS(XpBzMm|=7OAcNOSkWm3`;S75;bMtHw4&^!XF%5uARuu_(p#;M8xAzs2XNCp0^uf8zw|JpbvIv!ZwAkCf*}Lw2LG7t@TYiagpf*_j zIE$j0Rc;}eb&4WYH_?$?iI2SxV|M*9PEeKH<&Uz`d`WxDY};_26Fj_34RLoHV;$XW zB`}Y+R$oMdf?moj?7EJuD>*QqG?8suOMW42TygIu!_G4{(7=_N8>k__5k{l1$2q|X zB;BQy5fSrqO{7uWo#`A|m`AZ22=8zL(vE@5p4>?N{Ry^!+MjRxJN9^(;s-6$@z9{vQY* z=l(A9>Vs+V5iM?&>$|D+ia41M(OAIRt!}Q(m}~(7Ti3dc;a3r;)kY_7=WiO|Q_K zD4^7)Z~hJaLyaGW;nZYT#tUa_X?ke;(cvcSpM&J`biTmbE2~a-3~<@PwAGs`vrMOm z)eyaIZq?{9-h%4Z*KiK1wOG9rf|5HXG4?32dkbrRLu+qxKev^IISGu6VxYb8K>F_& z8v`bqluf{ti#ivi?R>au_h|PShzWFvtkL^5}!Wt#g-=dsnA0*lX}}Q zdXnKhkHO;Q@Ze-Tg}2b2iLY>m!yID{#w*@h)H>H@0O5i9A@MRMwnuj1_Cj_7-GR|s zRIOAq_MQEDr$Y8ob_2TGbxEPs{`vJOH&g2(i#oCHreqogPrf>{MaF$t;`)hqac`;B zr8mnylWwKQxN4Vv_lFy}cf|Rt8>n?}<%i{P=R~JLZL;D&NQ0k_Y%nPpE`&1O@sB6g z2Pe-tzBGkD-?W|0pA7>4@kA~W^a@X(bA`Q?cHH8iSS? z>yr`2jS)8K2Mz$`{xN3%`Nqu2sb*Y}9r`etnI4G1zL~!PQ8mwYMsOi{IqGyqXEBOL zIf$$idw@`{*V|;q(X0QSJxG~yIfCTBe0tWkBuKAAW)#$SYDKhBzK!Y)<>l*uE-Q1{ z4<)kVP~yB_G-^tlW2w@ZL5z{a56o}5Jtxun`6-k7grb-Ma@KG|a0XE5I6}1(n8EQ; z$QA6t`9qX{LoP@fbr@QSbC6z1+FIg>6Ajj0w_MXsZaR6O84S-qwBjyt6!%&{Uy;%~ zr42e2RnkxG--$3jkVo)i&VzyWBtsSUF7mr(`;(fPUL%IxxtydrMx)8P^5n0ZtC>&p z|B%IROJhKL`PO^4DbG=darPKjI;IZ>->qsKyVsASf~6cd>RviIu`%1aUUZ%&*z(hz zwU9P*IT5VnnU@$|WhCTt_WLG9AB>jh0@qas!d(H(QG+8)Nj1dugSrM>l2IsXSSmFi z%6Wa9VTaBzXHkl?<{81+SVWqZ3p>;#k?aQW&bRfOsv(e(+yKK2;Bq9q>#}Ljuqc=g zX4Fe?wpb)ObEGoavuFXH-eN96%?dhSsZBLvsupcOtMX4YtqUwF|Jn8k7Le$)-;RR% z@=Yw_r4ajs`=|pX{7#PEt~Co1+X!{*5)6e16^%A)tF3^Mp?>PFj+V`#w>(&q6y zay9;b6s3R{d92JF(c#e(u)hxcMO9-9&BdJy!W8%}q9PUpzwcW(u~AuOj7E%zbfCvy z$Z$>;M_8(iKtJIju)2+jbcXSZ;SHiLQw%ku$%djhM^}1>T4B?p(rYGLz>l$-_ptZb zEjg@*FNZQ)wp(DMF`p@k(0l4wleSGlM80c1yT!66aCtd6IKoyHag9~DyUubGCZ2{< zw6u)xo26gIMbw>OM2BjD5vsSJ;6WmLSe9L5J)BrC0sR{poJT`HC`xWIJ@8&A1M2hO zfKg&<8?Zl@hA1Nz8TcZHQwM!?(H(a6a1GJRIf-5jD+MH~?3^9^$Wjx?bba!UTusMxY;m78Epk;%3*s+RJ?guU^L_=m250;1 z#R8=B60aJ*ApaA}pm=zRcm0MjGQN-hNc{SrAN-1r_GZ>5|4o_5{@;`df+$2*oaZ-M z(!CRxH__oJ3V{SKll?z@$^U^wO4vw1RcyV@9@0+d9$ItgTJxB%g&Rw~+Dmp{2mdzwM1I`F?E@f>zsd0Ff&;IMdX zxm}W{I?HxejAtx;NO`VWp`c%3+ZQ9}ssM050~K(0|4?!$fK@HT2BVJwfm+{uVD3b1 zHAw(ja2|t)@mKHj#1|mAFOnb@)Bc{IFh@_OU9>a}+p`411YUh~zQL7`v)`ie-J0Te zs&bm3tA2yU8`mjuC)~g(#K|H<%{r65!NB&(WKO(!0>oJYfFuMWT?vl{My{fZB=($- zL?}53kyIx}x4KM1HA{&IR!sq@nmZLsLQ@Sg?(?7PM#gM|i26G`6z)6j`afb?{%76% zM@&nUiiNGlAlkpBBu^tXXG1PTeF*_h294UiUr^9)ExH`O0Vo(3zobEgf!4@_O$Fl2 zc9KMaH{yLXfpbe#M7y(X;LU6a{});37@TR)rtNUzWMbR4ZBH_>Z97kF+qP}n*2K1- z*qYgFZGE-%?)U4iy8m}|_j&bkoa3OZCCR zXkzfzRP!DQLCz3V^`*+2i^{E&dB`5ebKGz42ki7?gPWsg--%7*sVU;aqFb`!ur9*x z%=#>N71H0COx1XrPt|Oii97;QRakrQIxHJD4BV0nZ!a4(eeiTOV({Hc4@HLEWRK#7P zPvV;H?QnHZ$(bHbh)EQ%m|e4nxm!xbjy_Xl9%0Fq%J-!I#D{U_s)D+DOl>LEMRR5Q zYNG*XbdpT4AY>|nsZ8vBQZm^vPv-tbVxp^{WH=%BW17rmNzFyu#UR|koKvr}vdTWM zgH{$v#pL~vdcBRtnJFO#(O#}BiLKc~f_~yLH`OP@q|j8^eKplGb~tX`WFXXtzm@6= z_zSVbJ%e+2gjX-&M*2AmhP6ir!>b-y*Chdpu|U$$ZeZC~w97rqlGW^cLa@CzVD69u zb@f^eh1)-#uB%~l-r4TL%9)AXAY$ykB3IJRN9K!UibN)gJ!>LzCr6bq9m*nFp~8~G zZcJb^VoP8noCdX8H1l1`#x7wjY%aO_SXy|03Hu-uV~-n&boOelQXps7lMf zpWQ3!yIGFE0Ocu>q%P(s3P>_#GGJ<>KlQ`rp1Fzym=*(iUpFkac6JtsCv$)i6#u5d z4p?jJdR|L|t~W_TJCqh&MvvlWb3t=(aEuU9!wP-sf=jQFMaibQc&Yb)$I1?%* zGv4qJz1M3&XXBUV9r&ypX3KHHJAi}(f8ts+8=Zz#Wj&e#Q*94aHRHdm0ylNKSf@?m z%g^IWeV<6~FT<4i1F?zA%~MY9PreURe%pvQDPcf|E51xN>6Iqm?}#|-@W!noW!zo* z(h+f`!?ms_f3A9K%zn9xLpR!Twg)syKCUR8?xz6f6vaN99!e*8Sg$xGhg@gMw82{5 zmu?rcKZe*Ul()3C`)Wi;TuDB{i4_MT?hpW87qEQ6(aZKuhPYxbq*b2Y`B2M!DYvGu zC8Otunu`n3{3xxU_gSu2{pSp+?G|2PN=g%r&zWzE5+B+&gp`vpW2!ECX!V5TdtNru z_KXBM)NXq86t?my)uzN$6o4zJn?}Z_#)}u2@kmUX00&AdN6x@CX=opfSl#wWYIy^$ z-+Gtm_O3-^t?s0fgJQN^VVO^Vl^s&!8hEFe)r>R}Z6o_%P$u zO?^>v7lo8pgBtF{dvh$Qfq`FBqK8QhgO?8(qBsUu5gd0O>Ubmv;~Bf~GqkZtJS0U2 zpgwLaK8{J-DzRq^Lk(GNqS2&u4L5GuPQBYqslnRfg8gN+Fv^~}&gsY7-NHM0b8esJ z%**k2xmceFa1L+>!}NG^)Zg>C_YBnh%6raa`)@AS?n(>tcTCoU3!~>2a9cMgoNz3}*DW3ZykNYo8{^Eh2jvsjJ{MsG% z#z^}~L4D^_J<^r@flR(zL@juP{mLx6rGQ;7XuSVLK6L3LFGNoh4OhP zmyOuU$u$a7NvbpJmFS0XmaCCh`)r6N{*2}b5nt*bZcEDROAc)a($T~bX zlxk2G@9+=zUDg& z&}GQ7&J=?6$+!$#3+1*$vz8q9J^XgvtC3&ml1f)Y@fTx0RzJg3QN~nYDVKet%cD;! zK}XRz9X$CkrLeeRk31|F?j--PnTtn{l+uoMaTwzsnGt(zo@=KJv8zRLjiA-S?O!;= zdvGz0I;Z}NXLpP$J`bP$)0`qM_GgDg_YDJ6wcnZyv|@+nVNS{E@(+8%IFm2!`b)a% za|kV!;+59;<}M$Yp7FAvUfwY33S_ki1OEk@wy*QLcJrEgfk%jvXU%w08QzLguga@w ztK-#%&p*)rJYmu(G^0O%dx*QgJ5~O_n~A!UrOW?2=!d9%IO8s(|E<;QLb29PwWT|N zKm(7U<8_m!4u$|5+ zlJMlHUVW%L`zCQnfcsNqXq)F5Dt`!m59Gi}%A&s5M0jifBn9zYYVxf&xq$DZ&nL=SvOe97bcU-)A#c&m;gWBfe7tlByKX&v&|x&{5AZu6ITO7_!m z2vFwJrVn9glLX0#+@PDI*UoizfXKe$QsyVGS&YikDV4I4g`b0;^4nWY5d^j;>N zoA`DKNj5t+*&`w0{tj!ACtF-GF+BHA$zet+rn<|>h)($h{mAV`&FbS|!Sg-oMY6lB z3RC8;Hq|=VwlqsdE!8Gsa^subOM=h5OJA?{5XtB5%!F#=c}P4PmvTl(S<+{&Si)uC zesI>5fu6ynm+^LcVp1mD$2)yT680riIj)1(z` zJ>5fo=q~mv|6hZ>IKXuOAwVR*#fn}ve6Lu@OVuJR&N8Rj$wP_T$h65VHSoES$bK^+ z*wmEj;ixGQdIyp<IAI_~8Va@|kGL3mDh;+qX$vlF`7&7W8sGE8F5V9P~ zH7I3(PxojPfVeJ)cMO_0fbe!N_0kuY+Lk{T@+l6n6Vrp}J}-bEN-rfZw@+-Wf{kqRSV=D??X9T9)RQN7>Nv&%WIR+u96We^+R(v8YwG zGKFUn-)ox6?sTqLZh{Dfoo)q{Q#@_a7khx`*2Tn zY0~H-wMcIuN^zg`CqAaXbkYs zoVCb$TV&p!a!Y8hdKOm&hIf9=FusvjTO)o5ZMxoQt_gRzLlHo!r1#INb14*9H3Hh8IpKo4^!AB{O3vpqR1855(6YNy!%*lP?Y~D+g2}F`X1&0 z1Jqjj0|E4?XYL{Y0_{!2l;)Fj3aaXEc=-Je!YUx;tW72X|Y%i2C&R zrZs75V{s;hY|WHgVQJcCbv(7xF9D@gv%icG+C>{$6938UX51XH?~t=kfPN1AKjMBT z_&S^O?@X-!yVK=AvYKDPD}qhw^`W`)m2!3Z6m=Gqg-f>uF5PQeUNn zWR`7-!a(+U7DvKR()gf$)jJqCNH{LG}v%0>2-=D$z zUAu1&z)JbghU5`h@$4en>5bHcmf%1aNlw~xUW`DaNUj~a$Vf($92xIWNm4s>_cOY- zy2g4`k*)dK=L~iGL;az^2w0$HCh5?d`GV|y^gW8iA|q4dRGfeNX44S@E69JO8vIO2 zufy7%THwaDfbeB(f*)>-f9ej{263#gswIDx6g=@yM&O_xu|Am~1$C zX5=bu=+z6RTgc#9qzc-a6Q#esFkf}Y3CM){azUTd&!zaJsGpF;p1!Hi3yWWBB1Osm)G+i=l#tEVO#p9x0_Cr*i=fq5Ze^@C6Sr8*ROz7{w znxu8s9AOdn;ATzQSWTV&unJaeg~h3ujYC+X9(2@h>637M)rrYu4Mvp@zm_mcX0kz5 zujU5ZzxnAFOZ?7<4)B5#&0}+C`;2wl>jblKwZBZz{k4gJa_1j|bs8*)8sWo+Z&0b2+0;;DxL|$g@_c;C#R+s zvGry6BzjN4eD(VN>nrGLVr^<_>S}6Y{Sfne%=79U!?NBx-895m+8`nl4szAxMfGzV zE%+S>>81fKk6sUrv6+FIx<(8=gA!~rFLK3%E*oK<0Z}8SV;9C@QD_8-e&yC0fwf^! z0#QY#A&<{P#x?W98VCfGmlP@oGVoT1xS~{-y}Q70NX^p=$3ftduZgwKs1O}uz<9!J z$&7Hov?lfAvjvf(WD^f$kU6lT^HvD`hFzxOF=93!J^8(wgCa&Aj$AG?Pbu8j@=?;1 z=QrxQpc{-EPh^K+L*VUk9$~E*rHcZuHOp=CH=(-*g{*u>BE(9!^*B`Ey=cY%X+Y1J z2qrOD!zc)iUNk)tk>+QSbbP8o8w7TyKSO}9t6CsG3cNHE-9R{m7x|jxnHJ1!p|8eG z+4DL|wy~|>OI;d)3>}KL0|WZ0s=*yI%xv1;;fk}Sa2OofYcK?+%&oLhXZVr#WG8S# z^~U>O)8?tt|b``Z^@r#c4%vcD(w}M@Slno<6B`#@~lB zFuimGs!M+(A=G6Z5De>5_Nq{HClm;Mk?6}{SlUS#d+fgeBz!Mh!W?%k## z@Fjph4${URF-)($xqDXYdp$&))Gas|A^DN9NmHEcttjs&bPPIN^CBhLYXgLW%xyA+ zV8UJ*%4amsXEwl(cwiBQk9433|Vzzd|3HwW@%yFmTF;uft>!;_EUq8@62XicP~Sj(DZO@KXv2vj>9)FCNCToyvf~q zT~0+8y9|`ZQ)RoHd>t_zat!RjBI9pAgRU%OxRcCR=QzWXQgUppip)$iIhwAzt3jiDZiy825pe%*wk7`0=FW2-A`r zY(+(SH6rbVi^%e^06pp9YYUt2RV==t=JlC^CAKQZ4;4+$MxSrzqnEO>{CD^D`lu;X z-b@dNZ(~s2pn~fy_m=tLGNM4*9C)i$o}Ax~7@pVun#!dfHm|Ees@)C*1|{bpRwf&;jPABVy>!= zspwFv=511tv9Bb|nBFbLxFN}DocUX}8uH0H?`z=J5qs6T-h$MTmJ_UH6=->)Q<1cb1W0MfVQy-7@`x{D z2_4_%pIMn9@qp2zDo;!-WW-o5*d*FiD5yr;NKBLRn+=x-$`+gcn0X>At~OzrgqCK` zDh;A}zQpc7h7o58a3HbUyF($82|o`c_Gd)^$3vB=!sfeiLVNk6=y-zQ>MGCv^z>@4 z@RevFTBQEVssZq=_gzt3)Yx5|$I@vZ#%-M{=mkh{t`yQj+t1IJ6}7|}#Yf9p3~oy= z@u5+*CX@~vaVa-HCa@8-fYMjMMzmX3S_NO?;$YGxcO4FK?XU3DTvhdxO0wBS2Wu;n zhH@msLW;>g4p9ehYDFXwiIuQJpt{@zr_t#xHP@R78;kNY^i$zvfO+sk*wjjtCwj#M_@45Yb?)kRCibhj<7NEYvcJ5#qXQrvP2vy z@?<|F%7}vga6oGj(BDvU@;PVYa@dQoAMV9?gYH!Fw4UMUobAbbBiB#Xt{~uF-CwMz z>9++jp2)_Zve^=);0$b5OKo0Xj?&gDEY?R;VgJ5%b@)XxYR%X3Q%+ z2XDgX8^`1VurfX2f_PM@xXSPl9KHp6&BEwniM=u-bM!e;>6e{F5KwrH%bu4MQD z=HfW+!yT`{8qsP&6MWIWO~wii^2R}an~47eR2HhDT<;?R1M~G%8jYzE^KCMVMgn~W zrGZbbAErEpK7b1G7P1cZ=BUBiWJXP$&0x?Ci{JpzjdXhYp_qJnjQ}4bEeuits}|*k zKLhG_%Ty$RT@lNA>_I1n+qvJ2mPRzcKF>?3h;xL+4sZ|u=v!#HSgsK?bdd?X8iHQZ zmQDYKib^7fz zJ_{l-m7WUxF!W?E>kT8IIES2UVMGtr&puaQ7S5O6w$;+nln32va-i+rcDPeFo{hc+ zwIUk?YIlGW%$uJrTP~cpRlGLsj;!U?#6C#t=+p8Y;0>$VXQ2-6DWbZ3}KG$ z?IMz=xZtQFgav0I>}eg4%Phn|A1nxU+iGt2!*LxVWSxWJ_-BTrPvFybA7oN+-9QhH zsF0vVlo_$JA+eGZouKK}((B3jv)n%5siQv$qV4ZfQ<>|53K8@5?hJxbb2Rtc0 zJVa<{s8x}tEt<1DJC9=3Xk$QAN_yh(xBNw(##5-iXcyCUO=mNGqs#CLEN7|k+ zjN?}b$SWYthfZFy;z070sFvkuark~9@&-`5XPFt>vG33-q;Lth6EAdUA)U@S6D!ja z7=6dlDcC8wrqFbFD-F>FvFQ7~;lG59sr>8v(NVj)qp!;|BPJc*eHmmuK{9@$^GMiU$~> zo>wZAVF`keg)LB^{luf#ebtO6b*07{Jo?ZzDl10|MYrJ8eQ)jQhIvCpf6IRI3@?efX&{KB+%-pMyMQm=&vk4)&aMT$2!lii*r?yWMbMdwFX?i8SF3*-cypvgH22 z4W14y01Rm?jC|A9a*XEN;6}*Iy;(O~3$d2LmF5O}x76(^?mG z?Ht7MN^>A5{G>&-twnOxfa~2N2Pf*T1ns_2O-U3%%9O-cp~dQUfom zxXgJbzL8jJevSS%z(cN}U(PCt=4x_t`ye!Q`CBZgeeY#G0pl}C(8R9$lWZy-i~+_H zJ;d@nctv7lWl@ijhG-wc3DAuOcp`PYUCk#0)wfl?X<105kcBa2bpu$ZcZDWz0UI}aqkuzfOM zb?n@2HFmgUVQ9dlNazS+2u7~a+vR=MCqzPVN77rvgHpEWMFT;z`=ng2&xXN7kz;q# zjnvX5EFpT-zr4^D5CS)8uc}x&#%6ChRQ$3XXP4=#xhA715pd`D9%CoYbd%aWVk}}T z$3yjThm?+4^hcQ;0la_wQ!I*wXlkZ$C7Z`p7$33%YtpJQhPM9%Rb7^>0G@5C6Q_hS z&dikyzwEUMlHc_Q>1-&Z@BWM}9~dyx=LDC+vuy!hN}B9eDSE+r;v%>9m*?4{Ds0sB zs=_*uMA?F<7c|3*aI!B{VyQe)oMGCwP^%J2SU1+>)>D*H!<%K9-6PxyUkv9Fz2erJ zMslfl(0m@`Z5{hi&)ch6m|Yyne(KrsJU>nZ!euEG<8hyAQ2yh5f?A{R-|b`Q*CR9@ zq*(#Rn?p4|pTwLc%}tSglT|`FFY9r~F)GIbBt@P~h?TE9{zts!M8CSBE{}L6sCO5%-=j067pOR$O(ArEr2oc3I!-xmGc@zXQS;qwd38@4KNDKLE z_Nohqm1nupFXl|4@yq+|Z{q~Y@Fnwe_PvsJn-Xz!{wuHK;T^Sc{cn!2{T zpR`x(fIu6Jn^WH5_NK3?%+rPb(&Gc839TAFjVRf(1pP zVXhJ{=p-r)kCd0p?9}1lKf>CJHYDp2ljU+p{3aGNm2;~I2p;(j4Znrn z!gi2Ekv&IYj`RE@<5nJxkskphLk!(Wh6mb!&x}BP{%#5T)3+Bg)+m8$3x3=Tvaj2( zd*kE_4H4l-?z7kp3g<}6q&KAB%yN0YOu-rjcHy|NnhII;7OgdkIG1esU`B1Q5ZEAVP&gGGo z**X z#MCz!THL{J`CGus5Ex+H-5z>XVM5;Ym>tq@!u0ZAfGBg@;B2fh);r5SW^HO7oEpp=3Uie0i%+a&ooRjk$T$EI#^jpr-mF!Rqx+f=dn$!8|-6cj}J1Q5445U!8 zUnTa?&WKO@b<_&n$(r=f6HH8K`N<*KnN)0jv3|HnM5DIY%t>9B82-O?RX8@czX;i9qG1dl-hKW=T_~i@r8(JUByi&>u~| zUsy(cqSd%wNK$i+mM63nmk5zlX%x!f966`8#8e~Ckyr#%Q~r})_ImyU`!wC4rPx|C zAUB7Crv*CF{Xvi>Q)E;vvEfO|3JvctJB}^n1jae%4|fcr5&iIA@)RHux$NsaGwSl6 zB2@gIkuzbmkSv9QWFXbMM%ZGgu)fX+)i~Cru{>S9CaN2E-sb6-*2dCmCDQ03KhB1& z>*f|mCC})tu`TU<=4l#7I`yw6`n*oL2Ar~QOvbH!naXvKf~V}DfTz-7J*I0a!C+`v zE6Stq)$&vAy(Zftx(_ePXw-!LD2P|!p1CR9=0|#4CxH1>cW)~K+68Xe*kwdRqhJHtr*WD+ZJ;umpMRx2TqC&kA9FJvS0mL$!D&+A! z`jMKd!61xOS3|8e7@K=-4Xd%kYDM~j&T4y&4}GnHc)G+`C>UGc$eg@AL}bSEOV{bJ5F=Y*LqRrlJ50`&FPxxP;1!VEs5rT+Icw@ z>Z#&b2Am}3U_^4I0_bII*mKh*$%)x>1qKNWzRaxsn|b;V%&gVX?G}i@BCzQ)jB!L{ z9n~zWwI`=}TqrkfS%2u~~i(V^H=Z*Gd8-H+onAbNs0f95V zbKKl+3~Hwlu#&H9W_}q|Q5V^=4tfjDzvth$+Ts*6LLFIq({%l}@@{p~jq`@jPu9e_ zpDXY_9sw8T5bR0Dn5S#xN#%LyOR~;D76^*pf|TX5W%<5(ik7|HZf|54=z;Gc)bGB( z75kEn)lb&aD1X0CqNR#mCz<9&>m9Lt7`Ma=?v5^ znSN*md)hRvD2n{Gboxv>D|6;NhKwI^IvWJ6ouJ#rp1R)-qT|ds?jIgN#P~sbEuQP< zUU!-c4&2Gtb9JTj zwMVMT|NAd-snD%x31_ZO9ONNo?SNlAm$G0wPvVmy_U~IO0uo$L20^6#CF~j+Xm*YzCrR3q)@UoCG$W&u_9} zl~QLfm-D{&K=0Wc?J*7SgI25VbmmWjFEKLUvi@i&`244f&^+~L&;!WFrWSHCH)4HT zm(+IO>6&2hjvq^aJFK#28B@vk=bdtp`Y@o3VdTX%E=%v)0jtvAOaF%?w6RtL=ZCx7b4~Gobw)EHH5R8a-$p+X3edN z*vo#nsxqpj<4uTVdp{HN-#nSjvSw_#5rG~PXioH(=zo!3Cupra%Q|Be^^5!EB0sXA z6tMH+Q_M(TPiZy!E*sm)${p}eGcWIrdzM@? ztKcqkYK7HdFCTQ$+8Ku4Jy&aLH|u@JpV}{Bs`VXu4m=Sqk+vi|%!NZXZ|vObMm@8% z-ERioNnTv9FB=5*{$_kwR_oXBG+1${Fu5;(R%%sq_qb?q_8&(#EKkp@)Mr#Dp{Q}!%~~U_474?ppBl+FCqvgbS_zp?n^@P#fpX8}tx38= zB*5=$3~E$ESNi0&xew5gqu+P@0BG47)zklDeQNE4J=Mt16vr#>DwHJ^l#D_R%CwXymD(wh1nj2ruBwl4TwgY~{Uu<91J3vtIlKj>v`wIfD% zuB^%aHfasPTc9g}(U9{_6=>F*us!HrukAtjL7`A@?-;Z_`qF6s@UV9EDdGmzm%Keu zXX1Wmz3%?Xx#s>>LpOF~1og@fB=U>jo*^`Uxh-4k`SfrT^h@Gb99;`CO#v1(7Of4L zKCF|PMy(-DrZz}Ut<;ZAaWoR9UYQ8eY>wnoP1RFQ%^C?ZcKLr50v~|qjhAbzrfv1+ zQ@umJnr?(%wLs)&?{#IMx@n(DAA?uIS1Hi-d9$&v33GDCypQ%2_;T#_Z1l$Vtn|hV zL^`HyOq)_LtV>>P5KIkQt2(Y)vp&XM%bRR#;+%YG6ioAr_=1#wtUFd{;+)zwv)8O# z+ofv(+R9RXgqiYtjWtGmEf&`MY5rL6!pP~dU!M}F_YVBpbi)3acOvIC>A*=p_5_)_ z>ZgAZ$v8Hw*B}6|I+l*7n-dN>Ca>4l3zM1J?Kgb;nXLw+vqDqeNC3H5-85jFgS1!^ z!?f555!+bnUsPkgk9A4GwbF?n+w?qix3cXJ=nCLv=(Ob&jk{u4v*^O)*dz#~ZzUA1yV6{< z@&aw$)CuIE471dk@qOVqTpNr2$t5Ql6pqXg-W@(LZP%Turfcl(}(hYjj}sYqmi3 ztAJs3>SlYmDdqzRDVT%uDS07Tw2WceGH=`?D!m}?YQ3=Ts=biA z72Zg_mj?09QV#vh_}6ZDP%m7c4tYh0*Y0csFL*V#{>BJ=M;cJO?l!?;_`LhbV+??A z=y441W6yC6@|JXravx@_Y+rf|{Wkef>oww#;@HOOc?6&#P12B4r z!gmP(_dS2*ts?o$>(|IzaTCLibJ0ak~$I{^~jW zx0w&{uSrcvdhQha2&d4W>u-*)Q4g%QsSmJ#O%H_6ArJ8G!)}DX=hFjy*+_#QXSTbp ze?fMf1z-rd@_v0Vr5og^!GNuM=7$VZTfLjOm4q2C6di$AE_zZ$= zT~;0?RS~?pvK^bQI4|v;fD~)|ypxUTvM#s#j9OveXxfoDr;@jYT0?;;R|3IVR~W$s zS8TzZClBAiOB&zAOHYAKS6aalSKOCQyHm<8#Cv63B*(l^V8N$v*P3l1tgSHh0}`I$m~ zl(F8l-GagqHaj%M3KY-K+j*}IN_JBX*62--N^ZY?hn)>mgSH#HcKe4Ly9eU@0{a76 z-bxj`bXyf)x*IOqYekVaD+6V8z$YWbXU%rWv5%IH)j`m0uRIQ@mX2MKxaS@Wftq{5 z`de(cFgiT9Lt(f)*F$2?*z$bcNw=lJAs)c+;Hk=95ypFWwqR)zr={~&%-rQ<%?6)Y zfqq(FKCM1pz}Q_dheBman}yi5+hH(fl*=WFx3p$o^^7{5_wt~04xi~hHJpO>Yi3BD zwMlP*8(+~((}wqAjD5#lc7A?=M@N3KrS(~+qAMGkb&Xy-c`|f}a)MY*|9ZW*CR`UJ zf-EB{7mj*;hYfia1xE<28hdNKd#y%`To}DP0(}%jZD*^7c4clMty%5K#o%jcxPgkY zHeF+LlaDc314}dWB(^#kHlk}hRn_>yPNGcnh?cc^udj^aQX*_f8+#Z}G{i|nKYmo3 zOYmT_Qli476+v+SW;-d~xm3%Dv2^A-vJBaTU|%71u0_pGX7pI)DhFpxw0+d@*~8vZ zVydZZn(Y=2Oqtb#l-?ZpA#xVhM#U>plYyC@-~9x-Mg<_$SOcpO-ebtYkzkY)U6`|X zX4r5mdRa}EE0dqvUbdSRIaX(*^wfwMr^%%*Mt%>l<-iTc!)YH&W|KYYZsU!)Yb-Y< za)sZ*kvsO{v1j`GXoXoKEcgJpe(R09$*aUGnB_+^!JIQS)5ZG1&msKK@dZZfe~TMxI$5zP7{Yl-byJs6iO*$&^It|qa6&_<`Z7f z+(}J!dGi(0*YZ&P!gPPoovqrY{*J`g_K?%6RC`3+h#I$Vcf<8lj%D_snH=4{Lz%1irQlZ<@hOx8S~WDyk1_r*1>@gF(lOUKCNP2Nw3wD-T+r}5S>Sh6VX!IiiM^DOMN?;3_oRPG&0Dkfv=s=ws+Nflu2(}A;l8p@@rCqvD`B$Q@%hk zk`iM*fhCMZXF-$Ai6+W1gF$P;))s$CbYh9SK81pd6D1CPqRlQ%M1yWfjPCS%l&nN=qt5J7g-m;l~f&oYF;=7c6x#J7uF2Zo44^hQ)<@eyUg07VfOVI%KQEF zLX)pt8B{;VMYNJN?S~jeP&h6MB$;C>QMCp zKI6s*?pcrj;_My6GuxK6;qI_w+qP}nNyoNrn;qM>ZJQl-*s;;ElTO|zYwvy5I{U2s zp7;B5T~B_^`D5O7SBvzSHyy=0Co#_e&y0H@MyLG$F~az2tjuGM&| zf_sDqc>lOC`l;#aSH?n&mBQk)yl`M_<-O8{-f7I?^10GypQegcbSV)s`VLL9jdX;2 zV%k!QM9d02NAk0N%#`PCj4vY)S~F4m7_<+1R&*zQmDtHVl(yAzhu0l25B8lh1Hye> z$3&c`9cm+8$1nBOvQsSIml1E#p0(4KO^95=xKoS>xdwFI7|F<4PR#X5r=4v3wkxaV z8=6gEslEFz=8z^d<}-NHInr){Kd%mASO1c|P%3ivq>p%R5H)B{b37kGUf&FLCsQx6 z$i^^oJHz&Dz=bYs(~3YT>`)VLVPd-2s;TB;fOXYJOx0KpluTZsJ|hu66QVg60KR9s zyBLzh#(!QHBjy?gP20R^Vd;_U^Y6`&Sv+ z?Tc$>o#eyEOLyFw(U{BfSM2vV)hkSf!^nZ~Mne!hF+*W&rosI$5o-*p)M8z3*iwV1 zt%6o!(xRNzNd_ab6b$m0h{eSi)G=5PZ1EAGpCEiFc3jgLu)Br(sVUtu9W#hrCBRZd z(cI@dQNhsS8fw_#$&=&EA44j!ywzcCd@QqvJ|{@dd8K7rUVzke2#$}NsKo<2;S%n! zs9V_>3sSJE8h>jl!@E0m%bT(_8S3f6+NJb{8BDN2Rt5_mn+kf@w!1{cC|Sas{uwVB znM^62p#Ejt3dtBNdWn8jE$I?YVVccal#MvNkHpGwBU$#EmzP6?d;Vlz4Zhy@tB{j>=f26PlC z8j*?MjwWT=wq#w8-PegE4BZ^!&tcik-K_XDbZWjsAJ<(pT+3AA_;8#36cKK(;$;&_ zb!U%2zc>ZgxdEDKtEHy0ThzHlq1L_MWe4VH?M^@>xTJD4R~T8u%@Bjf!4UML)7~ z*u5UCXt2(q4M^F6gqAq_$HWgcLW0Io(aI$H4H2(3;*9XmnzdQ%u33Y234>Pz$Gz6| zS!pS~ItH5p$Abmf4->Ekhj)XMSdRlQU4uhdPv1Pz>TKDr&PjP0I|gYk65_6X((v(O z%dQ0|5;BaNe-b)76i~-%7D@0@(p)pB)3uC|wh6`0(JYPYv|0*ztaJFX_f5izL0=@ZHC!e>_CB-U@$le zAlQteKBB-qFhvKMH|N0K8Fn^xH}WfCmx**YWGI+JfA`&g1(zY31F2v`Wub|Rds@fI zSroJSE}0G|ISpR~*2#W>XA+sFdIih2u{(TcE}I!xfIrZeq^bwEWTq`CX?QS|7Stvc z_B`KW!4{T+YQz2_weJIb#qY^yQbR?{6_OOAmy|aF)3rJ?56#mza|7)imv;)IZF9sa zl!D>Woks=Dvp!=9t!;hOyG57J=q<^lZ3Xi9Eia-c%H+lu)^~PtpDtSJQMhauuI6da zr-q^%>)&gXt`#jiB8X3)$l?F3BN|Yn{Ev}4N+Ta5cbsbWpqfF48CVD5dxznqAy_Dy zKd+(FkHYC^Je;m}CmS0{h%?qSN{D}vNSIMY)W}4ZPB%!OS+ozp&x4Wiy%m!*<;*fK z;p3bqop<5Pk}d8@hoHM#tDx$!o3k*PKF{XyJb(Ib=z6!^^{@e63v|&|3;7F@Q%ih+ z6^*h^dkA*rA~91t{w&!jhS-y2<*?re+fGodB=OWC4=V)wZd5r(>sQiX4WQq1Wx04K z_Y64xR;qql;y4$o=*yV7+7JN>LKy?4gmnC830Nry;UNXG=+#dE2d6ErQ;;QnAGGPLwECEDBJ}4%s(qfuwpQ**Vpkl&3uW+;W>h9IhkEP)LSpw z!b&VZhg8Frpi6$#w$AexPpRvpV=z58yG}ic9AzvM7_gXW; zO3y^BmI^)sb3M3tg4qjebM}%@XYP{myV)accgZ$27)xhB6Qs_MOYcl2JDmY|S~E8o zo&Nbt;L0Dh2pM~eODwPOhs;`owfyJ5NgsjNMTK*7$MB-!71X{ee?5XjMHJL$BvV17 zjq{+DxF&*$*`mVS=*@8OQ0IqF)ja?8V}Q9M2bL!Cm=}gG8SJ-ke2yd|;h1J?FZ8J% zG|}(3T-@D|QuB}i1sL019RD+WZPDH%wm_c1PCNb!!kW_dF!Gbz^Zsfbo_tq@ghmxQ z=#$^KUiaQ(R9#%7c(^?USC$LxmJzmI?*Td3}gz_zk$2;Umo5mYA84uas{^ zg!&?`%os0*TQk-)(nppZN$W-!Rq-v$2gvH;DaK+hst-quQPZCWB}8x4=!@~J!-NID z>auE+dKAAGSE}$}vj(gKJta`-87xZF`61j6c}&T%I#BXxP<6@wB$u%hjY=JfkEJ$g z!-Oi5pTtzv%!vr{JBYElxEqNyOP!5hJ4rbwbj_yV zbXU~f2YdYfn*FPot4tqNc+3RUj-AOb9Ld+Z&R&;Z%uQ;#+KgQmp>SPs2sBrtNO}A8 zrzaA-_{G`fyHtNLBST=^UeZZ1B2+`B=H5URW__HZ>sXhV0D1Wgeo`yQlb}qyvg|3* zm!$?4c@e|`7z1(B9xn427PCOWe3d?0(d<(A-Fa;jrME@XQ?~F*TWe)82j?iNklf*pyVka{*;nYrjFo9+s@_sthf_TZ>__}PL z$HBtMg|$LwLQ2EG%b2;w(qy{k!Y48fSm%IzTM7p~odz*B_2o8hZ#16jw6ufk=b$^y zBQQ#~XO&9lh!nZ0FAv#5AAXHLO_h1Ve#m5ZfVlK$zcwNcMZyzrohnG3*xIXU-e2(n zWtnD;Y+HmSq}@`i_QZv7jT*7VU=+{E{UyifBd1R*%UCQ|01ar>F*Uz)jNG{~>w{YM zpC_FI&)e{qj6}2v@qlVGca5vaRp>jgwo1^ml@L+t9L%0Y9xpWOhIrzdIuO2I8gBNh znx6E)?^iLpL$S)Tnv3dKCJw@FX0du%UaSX|`gv2NY2*;OBhW0^3~B|nf{Qs;lO_-O ztM*=u(;`TAE=>s;=$U7pP|iUU1w)tSu1RXC=4LxVHX> zDdo&<7VfYd$A_1n_JMPF^hmxmeincc9k#Od{axdn$l9hKAkINF1N{r;`q%2I{iwyY!DFWSkeaDpsH8c; z689ZdJ~d}k7o)vo;O9F=v$&X2e!JYX{yp@cc@2QPCP5ylT;H=oC;3wE-UszxzcJ=) zF}!9NKjS4Il~9jNqrYl;Ep7}~w0?tX4gCiFWK3{bEj~gQ421^?(}Tiv>B)fPierD%Cv(9D zgyuP<;^bH*cg8P&CaiWg;I|xOxbq1Yg@>KMi=D#bsb<3VnGMV| z;2|&p4OdRW-4Tkj6;%APTiSjI#Adj$-Xem^9hHr4!ba{AAyxyykP1n#=o<1~<08!P zAPSOMN9_1J^&RE-#<11~_W88}^|u0p4s1HSp%lek6zcJXNB!)wva4|gFZJk=9KxG4 za()P<*2ESQ4BJTu>O&Z%srr?{xLy?|Wb1d(fAt4{`s5T$&Iu5F|LYGha^{nTzKgya z-G6=t;lG~Ix3RHx(swckD8>KzaqPc)+|bs>(AmMk*v9Gq@+Ruvy=iUir2k*r~ccq8gO)YI~ zPqRH=Vfq}gJoho+?(h{KcuVh@q;TYAtKs3YFq14WZ zkZ)x$yJ3+9p+x>wwg=9NaFq-{{e~u`LL>Rj)5Aw4-lLU^>!VJ7U#0bKoVmz2{ETcs zNEgSsA>Q|$k*ZK;-vigVAvODfrRDu%I@2y;5~=YtU|{(uty;HmqM*PhuRlE+)_VRO znfIv$D7dcYn@frySuNN6^|FXMKmHI`)T|`YfGMQ<9((fRxqYUgcXsRu5Gsc@A+;eW zsEUIZ4Uq1?4Ep6$bSnl&`zKq{767!a0GJ8?SBO6t6cr-{8$b^q^1vgK(s~RUCgDv= zYnG@NIZ+3zNI^p&LNeT;sYZ?|^z-}sb1_KT0K_o{t(~D>r1MrH3jsknx%ED0usMB6 z_V|IyA}D6)h}{fY!A*7b1>M@J1xd#A6)!5)%x9@|L^c+)B+AO5_%?r_f$d4!fqRNK zQnFW5xb1#SB}*JF@1SV&45L{iKJCaazHwl>lhhj#Mkwxb>UgjI4*O!|$i#E%A&k1K zl8-7LWP1YHe}49dYh?0)j*$UA85Y1SKnMLlUE?pb{};2A%uQ{KjsDS09~`?T3-kxK zG=`8ObkM^?vCf@#n^fKK2@n=QS#*+(gZgbOb34W>+_!-r<%iXUgn@@ie@Wl?&ZqTU z;MLfEimuz&8xWZ7E9UPu&(D)nMu`QSU=e%EwFr^<@neDGWI_$n$}_H+vXF~K@s}T^ z1{PHnqX)5_T^hX&zVlMjW`L*7D><=snImEC%TVX*0+y)di32VYaM~fRx&ItBT71$u zPldGcX;SDsl>hH18lL)}u?-+m#_)AH*L+7!5Q%&TKqDR2jTX*6-hfLki+4F(;NH>e zSbXv`#KBG!W^40a{gd@~tZc#Fe-8i!9|x)a;(c;aWM;Z`imvzLk8s5t`wPG9wDi2= zVn+~@IkX8X4PZX_r47#emw{Iw1nZ@lOzL8nnGAV#UI{EC6-;R(>vE7$*CN``pSgvy^jJNsfkt23 zU|7^zo&~oqoMLtpSk`S{Tr~l1et&0_8!mE8b5XK`lwH%t-#N-xp=#5Fouzk zQ?IUGY38+hqb1+DV8;HHK1f7}0tB3o5-5lznMQz|oNw*ca*fiSHsPj+1g_)f@67gbdL7t#t`kXsgvTo!uHPwHHD(0L({dcyD z`E5ii18krRumRbBw1J|rle2@3ioTVz@jv;lC?(g=51%cP3(3nbGW6IFJPQ?NDksw? z1|lix4=*Q$lc&}U)=cg@70B0%XPkM5FN(!;#_iJmyE|*e+tb$_)Q@TThn{924$L+5 zjvO#DG_0&_g%I!lG$$Hitd@uWj2L;_M&2_=VC7Yl?yx8Bb9~>%rdYgalc7@vwBi&# zc8A;c(~R7wW0k=fRWn27N-p8R%?svRwLV=(jiayFa}W6orm0f+V|NZ=~{ zRJLIf5wTgL1sr8OEkHXmk;@-(rWx3El{x zV$g@pYUJwn?kvC(lS?Tk^UvtTMMxzM;)9xBlK{~s=n~AF&M5Zh zIMm+#n|D|y>d+hkEOHL84(b1sW&RO@1#AN8;YA*Jho}W2ygswy8#F0r_=U}rPn0nc zFzXQ+wM6Cr>f#xUy8psv~wAVtd^xZK^Y)Dj*szFJ{TY!PF_B6{FF` z+{c_thMlD*vp8XJH#f(n9`&$cf2E^lb1tI2sU55)=3>F%x(=bfUJv(JdsGb{(#`m+ zrBB?eD!5@fF+?oYa3_ko_SIylG4@4^8r^HUbu8hQp$*9nO8s>g>6Kx3$b|+^h0v(V z^Xl_p(z}MMut;pScoxqE=kLfSqE=W}4+OUdIrx76=pzd*BX0Lqk{6jln=_>U&SLiG zR4E()PQU;bh&CGV?t1u-^*$!b5-f3{-o2XqmmVbObF~2MUfRn?oRt!c32AVp^1y^NTuFP zHGFs3X-#@)Y)m&;ka^D@*;9`ejK6?#TS;##g3XuR*5{wMuEf9Q$(qp*+O zcGSwF!H-^jC(?FDew@q;Lma`}#EF)wq(d54>!U2O41!!#FfJNgg4y~@fcOZ~8TXyt zO#nzgvH-xn=>Ky${1e)L@J|LRfFC~O;)d$JH03uiVx?YaZlPS^Zevt)Q3s(V$*k{m z68X2-YNm^qNhXqUB$L5tw_z%=swk0)NZ3zb0r!i#U}YD4_t3<}P)94I`4!mrGu|rW z#Lai;fK;{qiF;#d2ULCUw75_ts!b9_xh|e83KVo8Ymfh&;))ggDgoG_fQB;VlGZvr zD)sc*E132ukv)Z6@KpHxTA#1L=XV+l6ZE|F41f;yipVg1wj1lwD)e-3OOWIi$Q4e1^9+AjqhZu*TpCZX^rwY+=U%Gvh^Z>EHm z-@gwJ={_Z-rpyMoF&PnSB_uLLBnB}o#Z1UEAmo*HRHwz;$%O>GAmWO=-Jiri(A_ z{+4Y`si7?!66(fm$a(V&$-Xg7z)g_0VY#85p7Ff;5}INH)nLoOZ>s=>UOgv-N-Sq6 zaF6L-wukX#ca62IssRE|w6Pl47&-6MkVn$If>zlu zUXTKe{`;lt)RO#wJ;0qfpZ6Ac(_N=43pZmpcT&n20yo+s*KmE|g>bK7DcXI4ZhtCy z*p0d1U!(o^n5xDg>Sqja`apmy{B0im-`(J!d4a;1ERX=a_tZ{nZU7Z+czSE^P`Ifa z7&8Gv%IB^YLxx6H9;4!sqZ;>1;8$`(7=nPlL7}1w%9;&N<=;Uucoz{k0(3dHZ%iwP#gnj zy0@bZ)h$A0PwI1s>*-h9iw97W-76++8%v=majIVUzE6!lm5E-+87fs3F1vA-)lf;BXZ*5U#{>njU$)hf#72*=;kyaS>{#Ey7D($+R)u z-pJMhX`h)o&CI9`&(Jk7b>$4n&YTwo)g79|Al@D?Z8*H#Pb6Dj9(IS^TrBXSeTpe*#AR>mwK{&lD2yHrbwJ$$qy1i(6~_> zND2!NG7IfCnwYsH_ThXf#t3R{t7dE@Wf77=abYZPDmQWx*AeQq^%jD=H?t}O(bw`AzmD)<<%)#4 z;}C|FLXs(yn4>ZyO~bMvQW>C_JsGo!WE}x@e|y<7qX|6~kv|8<4R=XH&BUIK_Ol9)E znL-SfUZAd5H3yn|2hiWQB4(gjF}xHu^-e;KI(feO^^sNsmuR)qjrQA=RZ+0Z{<0eT z@xbj{L=&yKMS2IJ{Oq-OoWZ9=gNCg!f}7jvh+h2^LBLK=K}gJQ8{Prr*n)Oqa10}5 z!;B=&UZr`0nHH2vxEC*&E^$J#Iro?vtW-4blC(KE{CyTSheHOJYUN$wj;* zNso(_()s5v)(qu5YRT@|=-EP;xKFSgP5}o6Jr?V#*X3X1OM3`HQ|v~{_C$Nbp$(Sn zh@2F^&o$)ZR`=cfB_;jv9Rwp$Z`F^82k;-l|HXIyRjz(Wf5@4HcAyHMb8@fZ@Mojg zsRsjR1ZlvTeZwfU(;yft z!todT5Pe*P!GD)?s(RrJdjMuZ1B_%P_}|R(u?l4=_Q|gC!*{(<6|-@bCvU(g!-JF| zrn15aV2_;I*VnGpoi(kM?re7GU>UF>z)b4X{OWYSn9@We&#@D^41;+?HG|e{jF7uykS;6lY)MZ~HnM_mi>StwPmE{)vu z*KW5BNq%Q@>M3URPZ$F^ryTEPyoCn}0&|wpTQbYjaI9j|D`>%AQTqx8jU_}ivM3K; zrRRVs?HUI=^=+fe zfph9+#U7efxbBHK($Xz|MUB#Kwht0=?AYTQuznVw6GXa8)|K3c_kqNc&lW~J^cGcM z?r&0#uacU#PM%C|aOVyvoJ^nbE05pkYu&uMr}F~SuK||nJS-i6=GJad|AnZ()H6|dgK+aJdx%IH!-&p!N1AKTodDcG z+HB6|qT@`~bl+dp;t!`xcY!YbkW3vx{)1fcv7k9yS^e8$rnCuI%mC$5&-ZMyh4Qd4 zMfj$k+r74+LUVeHbWCyzhAU&uWS6VM@EI&}~9XmaP_rZF4y1kApA8=oxBIM9l-rn?7qih&!&Y5dCZ`@Pz;4JWWV-IEg8>{>D=fFmr4$PXv$=E>Zx@l zvVF3lH(IN&X}#yMxcY5Xm8$5O!xxdo7ntil0bH$Z%j5&A`E}Z=qk9R7&bZc@DuNqM zk=jTflU$v=z#uOIa=-vPC79cW0h!hl<(B-d8&>F!@*!_(ST3D)ZS~yhf|2^&7cb4j zvFEK?Mwd(oFMJ#GcR8_nJLA}?Q@sS!-0?MAEu9guUfg8R_l#D7x%5x;Vy3Y&L}Br+ z5@f)_cW9AH#KR@x(Iwc9`e(3;YPtQcLe>2sc=n)+)`GP&8u-$Ls$_3NVecq;z@6&V zufpZeD92ZPT$#1$N-9VXwaCLVKjG9Uy0J}odk5re@Xut>kt1-Y(E&4Jp(wW z0Ej2N09N7tr+5Nj)W0f^iI2*oQa}$>K|q9nfftd)!+v*V9#DD+eB}=x(YH3TOJ#ZC ze`102@xwE=f$4xaccY_(fX4iouOLk1%A^B(CcM>>($K0S!fl{ICp74x?r zi*!qwN+O*u@fZ?T#qgSfMnsJUS@5$_%Hzl&q1-pW4B1+mpZi*Tz;qR^i6~S?4~hOVNKo3bJv#|;>#fW!DEX^W|v;JLWDv<>@W}-Bea3qAmSnSuJL#E zXl%A>c$K;k;sNFXb}^tbxIcmas3>^t?7FA{!1n`y$N9ej|3@hyKk*^RcfL^Fr;3mA z!AB@2;l|?gQ&h3HpBFoyF89?zp`7#>cF5p$t^``Uo0yukn0Sque1U2?m7BBq2udlLZfO zcrIJdbr!WYrF|}V!zbG8`z5JiCDeQv(h2-0%pd$Vxb~vP1;G3X0Q27}Yad&e`UY12 zlHBG0&@8?8Em1_SPW|Fb(QMkU&c=jg!Ze&fIZ~V#1Y15fm~?Np;4Z~5Oac6+XHEMq zy*V-I`47c1hz9NymzCQJGSPO|2z{=Nl~_J5oT1$GsJ2FtL>>z9)JfRYqwwi&aCMoY z#E=Vdxo48STj73ImCw%?GgLx&arSpz?>*b$9UHBor8`7ma0*#H(4D%hu zUa*yOQSZiU@MjL45tM{)WsDFnX0JkB(NVA?E4R5sYf}|W{#oHaie(N{c^-v~JYS{R z!Wo|h=H*Z9^pu6UTUbv$uN#1Vlr^i=$mJm|XHmJ9=Mvz@?v4_10YuC10MYW0^8xn| zbQlf7m|8z=0#YBeqLfi_#|7pQ=uc=r7(4=@I^76B))@fr--nKWLHiHQatyK`ux)v9 zgUr#K(#enDFcTPN-?!r)IggnU72l5E-7y=8rP%qs#~VqWMGa|f_p=;!)(t|zef6gq z)<;%eWSf~Ewv>1tKhz!Knnh}CB^cUpy?s{>Hq4yguzg2%k_oSWaLnWj6;R1kEtK1v zl^so2x;ptvc8&_Xo_!|ha?D~_VGvpNTTkdrMB>n#z#dFsdC5PRP^=!FSAfl1D+EU3 zoN7d&G+?~j9)|Duq_qw9=l6b4iT>mg9}@7btAHQd-+8Q@i?M@)xe?%UOBrJ)Gg~7^ z8D~c)2^$w%OJgNxyMKw7!LdCbzC6r_w#xscx{NOWIXqf8D~*yROfo2!xt6|djH0#G zC21MKn*|KlFI12nI*~w;CTrSt^TMm-<@xOqgnlqQln9OoZUlP0tXV{|MG$d7`Ky9L zm~<&O@lAOHV`EWTsbtUW0-#AV`zC@Zb65qVF4t5cBCRk^an+8fkrIRU+;TWYYoGTW z>9tPwS3qLkS;%%}nuJ?ig1tw_&Rn}YZAKfv;&0`8jrc$={n(!(h9Ng5oTR&Y4-RK~ zz}KZk;;OK>J0+n;h+xnI?K{8uy38e@yPQ+ZSW6b@Z?Ujy*x2;+%sAEry)~BKy4H@^ zH(k}IpKwYpy8RH^mj`@s5Mb>d|Kh11bXpXXFTw;sD-7^d*8gAd{z0=i85;o2f1@cY`{9+_g&a-|;p{4m4+GN> zLtT>zO|a#=$2pgJV6n%M2^5u~REWfsuERtKXC*g>2aHV^(vt2g-Pr)EMz+oX$#VpI zml12)m(*TY8L-yH&*$(?NsdvZpjMyrNUE#S159Q_&BLV$!s(Mb1i0a|^eNBcI+r9# zOs(U&2dk{;gUk(%SAP^gD+!cZTYWW%x#yquA*$|*QuYq!l7wZLhn$VWGsQ{0m)-;H z&pcf&B4lps@2S^OZ!SW$MvC}k{5&!bSvffE(n6W2v$M~D#a|kmyO2k$w0-)NEfOhBKgvSfxAu?yGR2S))11+ z{~T@~94jLQ{IS9F^>p=F`K}PHCztGaXJuYe72c}q^khh>U6zDoDtTST{yiPs*N;y! zGtnRz6-Jsg;Q?bqg12Xb?~|6^rqIAZbtsSjvyeqYP<0Zi|9tl3UKr%~HGYAOMdXj? za;tfM4eiDd2SQL-LQ6=Ne6pm9?&99m#@Jv<8CpAsQ*>Rao0AE=KHHLToH&Z3eZ?)i z@y_3irn1!8bP?P!x4RC~4=NTc@`+Oi`kkC{tL=R$FCpofRhA~Li%|KwNW=QXcAcFB zJ1tnQ2AxlEb5c!`l3-m&by%BDg8qyBm%cuw{DwC6OL&U?s$x>whdn=$;Y;l*d#fN- zN<2|4GpAdx*=rmZQp@;+;8|uzBF3>_cb-ezZ?iw2-=0FV!v{=cLB2eB0e z{*eNpcv?{pRHpSBu4yS*n{R*1W+xSA|7**)k5z?g z#Y>fAF$agjAo+mzN9hlpINe!XOPn@S-VBIT0fn+pLQvw&wM6`fjroZApdd^8j-ZN$ zU-WqB?Ty#U8H?i4Aq;{U5QZb3>xE)orFiKpK|eXGfARn_j4Epi(FQgqgR&?HC!+^n zQf`$EVr%NQmaDQ!0Xxb{l0YH2OAo?bc&Ig)(UaTjq72vnjbbVArHN?sDeZDdv&d-Z zK!{N=+%z$Ky`{SFE<2#%Y#AHOF^dh8$>liMyynm#4E#YQ^li4#whoWxLD;!8-^MTN zI-jK9F-TpCmoIc+Q)_QPG~%^RN_DTN>)og^Va23Po44}YoeSmlgpG`km3p(c5A`|T zqSE#WjxK+-Tl8iD@v_#2`|&aNLp4WC0NfQt_rGms{m=q4{MZ?V1UM7R|8CxYE{lKT zO#^^Uz0In{Wq>ykm}8aH8+TAhG^h3)^x zu6?**>TGy0Qx;ZPrfS&YY-n zSVF{+1mu~=(uO%7IF3A#%^*SRn3O8Lb<}R8MKjev4KfDkN1*yGBu_7=3))IgCRH=+6#z)Kg%#zZ3!XyOC9}O_+`aXOYN!iv{SZ2 zTiP7hYaEzU&3Ogk7i*)V>Itn3PXDqKP1uvo@rmNP@)Ur#IG_yve+XXx1MfflNl80q zl^)*fp+;>T2_JdG6D8mzb~RK8xrk5Co^`OQj%IC}w)}as1900)Dd!!5yFmkZ!C#}UAtqjz zDirE8-N=?X)mQh-XyzyAP z%)6XB6=f&snydAM@B$0@04j>qojM#qDQ8GB z@zc_~@o7n`VNEjD7oWhv16?WJ46V+yS{@r+*QaxKw2U>-bRMmuvq!@mU(fZa;0igf zPgp~NUg7b$w-14~U|TJZL~nmdTR+mceNm6|4`+P<{0RTnSsiQv$(ob9l(GB2s$Q9o zb2#4L5-ENB$NL5!?PEuWh8s#q%?yNx0uW=QaGb_mq{dNy{j)3(gG&}(7%*~i*~nnS zv%R3J`4lbhSa)EsJ`}=#bsQJjdoNJHl8E$lCShnmRTUA17MG+Gb29>@{QlA-0h|W7 z`t6RbXs^ZNO-vq}m1RurPdeg#rhK8{|3DH*qmh5%LL!JO;J7)Wa{T*9(r%gr7At zwwkWRG-A!s? zb_)Z9*aPuv;k1uO?Ov@+N`?r(ljrp(m|!+~l09+50%pupm7}8sc|L8#t``<4Gk=oC zre6%GRSie2hkGI$f3EHyj53QEJPQVdel36|`?p8z6pc+q-2P3I`>Oe|!Sq&~NUNTp4dwE+tV!aL|fgE-k~G^TE`7~ zk*X*t#nG*bbd*77c{j9E-?2z*s>vy-i=g~Tlu=sE=xD{hE3?8Pol1L0HcMVr$$AbI zxZ{_da+9v@ukZ++%y#T{I_8#%4nYJ?qE^y$?WMUo9t9Mb7nmgtw{o{aX4^e16#FeQ z#a4IN0s5I}P@zNp1oI1HLFm&ms70u;m4@BBO$75v2I9ByQ}8+IT@iI9eU`d97O9Ojqb!v zJ@jsmwI54I2`Rm)4QNl3q=U^hwFnK?yV6Zp4(;Uf9CoIz|Jv)#kU-p zB$yO(&Fl8@&JzUK#Mkw*hvCMnFnwyVPhq~vz$Ep>$06ZKehMEILnk|8|DH*B4KsU9 z=2Z3cfHW8#IPOYb#T0}WEZ~s3_r-m9?7^=S;?@x8Ar5-H7^0o;5eD9r5)tuIE)X43 zJWAn~o{&eKkOeVbqsWYJLs~AUf7DB0$$r8#iml+gyo>=0>Z8mx0_78uzyV0zjdQ#k z;gMlx>I321Uwrq2#%#p>xds5gO#o2&Z_k$hLE}I7dj2H@_JNNR@gfS{<_C2Lpt=?QyeV9Pf>d@>^p(4J*U1P=bZ7KGTMziX^@6jb^>QX27 za=`)C9^P}bJPpDIvjWzY+8jF_z498kP+-LYKw=Y5<$H`+7p=rMa^qRn6poYOqIY?U zbnD2ViVd)m9<7C;H@Z5dygqrJavJ4DX7UOqaud7^wq69@CcK<%E^BA;V>Q053#VGy ze9jzeV^*k)KtQ}YRNM^x)7tt;3SkO<@WYs|Vf2^!I9S*TnXO|C;}Q(un#&`D{tpMAQ12P`0zl*E?u+2wAO;YT$S)+&UI;CpO zKGU<~>m7*AztQhac9uvs5ECu7W~tvBb2`*J>XEBoZ?c(pCenk7$Hm(u`jN}6Ct(-Z zvP@4RHLm5<#b?VkC!JK|QYkl1}UQIfXSmHZW70zR^^+L9s^g|N&a4R}V7CUKy zOm$THd#6he2j(#EDGAGT7q?5=!eFXZ42<_L`3k`}O$v8hG_S3PpL&ip#{Fsb_HMqgo+VOjqdJSx*absd8*^n1WPj3^F)o<}r98nB zv&Mo9u6qAIbgeIHz~Ms7dBdUZi~4O}V%p%z6n-`#j`-BJ;@8NuI(53u1)N?PcLS9? zB6Q)UlwXV5p&_k3fp1k!@1V~w(^)}$5x-T%LSTX{3P$eBN zHsrS(s+i(}(gq>r!Okg*ZWaR_GxcT*cl1Fmm&U$A@gvd02|F+Hpu)EK+mH+VL}RG) z@H=iHFxz2VrlO7&Rw-3V3g zK7q3JZ%WhqXv^6O0NPRjzJD9&{)z1$`AJM4pzMYYx$uF+Yr(AtFO7BZ0~Q29uW(^a z(-hR~IEjyjxH>mN3hckw&Tg;g>IeauYk?>pqxcU9x=v>-@S0*?egHb+Lu-G)B8^ucT9MNs3QJ9 zlG)Hv_=qBdketI6ET!in&Ouu85U5c<-D{$p<>=MQinNZ^hMRUw_CaxPN$=bITwk5) z^MUy8Qvl>WDt4gqsV4!LqoAf#(?d^A=_chxgwq*b^IB40ZqnkBZI6C8dYD{e%0X$)`@3 zh&UgYG^?@a-m<&9tEUr)y{|aX85|2X0w_Fh0RaLTHpW7mBe6QUc-N!3M*8q8{@bgt zsNO>br$Z4#UXn`iFwCfA%b4?lL(+v;(kkPeir(QxvQg1uCAS+81zqGbZx+>*XJJ=e zor4p%Im&Xm*l@YuIiNv^Sw;j5s3^_bl(;+(57da7r+&DPj*5Ahr#-4r#ahJsfU$mQ zemtde_6z9sP33YdvL@;9~1`A`05PK(YJQoLO4 zY_6{hNq~lo$W5S44%EXNg3or+{o7}Rrbs~~h3JxU@J6+h_8C|z?A45kcX2}5eD?jA zka&N3_(w=@OX9T50l@78$Qu8ih5vy34;FsCumu#Wzq5OG22(x@imrAiHRUUIlqo$F z&}cTrggO%I;H=f-;AhC}*HhufL)vJsgwO-q(6%>T)%&^x1;*VrpPFJ)yH3g0d zCoW*BzDOAmHojl2s5a6dB9YyAHT&L-7>Q*RuAm{I4H>+JIuO|7Aj`8}egiHy3Qc_T zccm}kjT7IhQ-y)00yyPiX9I3rsvJ%j@TCA#u#mObuOuu5g^{?FE14Zi9V8nBm1jY` ztXE40@G$!OXupx#o)VmXVL;f>(gv3YbBL#uyPUI$haM`pp=R$Fx~1r@z}6Gbhxgi< zTjT_nrp{I&FR=EvF5$+gRKs&^ZRD^DEf8M4ta9NPUXbH74*5I)MilquWtuqyFEVi| zW|&j>a2cuOK4#V?G|ahty|Hy#&wqd7yt&P&tJheQSyC}-IciL{ zG6I<*mBo4zmgy;mO@d3n(ZtV2xJTONDWm_Q$I$srjbjQbZZLZvl4Z>8?MK1hR=U^f z+)c~Qx}Pg^l)2opyAH~*hXH~NB~CmR=4h2W5?sMg8L!n1&x#hpP$Hl8LOqY0-jE(Q z8i$QsjS*H-T3b9iU*5_3o)x}7iT#mBc0)Ba4eXU#}r?O0X4=?A~e8&s!JvHL%qy<>Qu-L^K| z7>&`Gjcwbu8r!xT+qP{d4I8VC?KHNn?@ph+*6LpS+3&l)x5sfG?T_ZlJ+EH$am-f4^|o>RR1AT%ML+CK*O|euEEx-HxTvFP+WI zlUD^3{4DsZHNETnU=Ui#WNz#c1iIq8Own?xZ>tYqlnd^`Nd9*dIN=1gx%*Sw_fA2% z0bq&@8lM&vNm8;!PT)KWH51%2osqbk60^! zwP2bo^@Q@}IJpAyHT}jEz1DRWmXs74vIm3JrE)=%nm)0@DlsIh4JssHq6BTFo*=dr z-!EsJXLARbEcqUXZ2S^*lxU+0H*R~d7q}l~zOOSD|5RK)#Mrd>1hk_ip6Sn*#`EzY zGKSOb-we_L%1Y#WHs}iQ!3V7ReNnEoe>4ax1MJbC%_j1I#4SIJm#{7>D*sLny*D<| z@5%(g9gUxkrx+KU#Uw#}J-D&_>+e*=h#FT7Ngi&R%<}x*(!uZQGXtf+`c7qrczElG zE%C7Dp3DohJ&ml66Q*l#K0A+`iM<5K!4(0m8jXdCHxEx=0J;VvzdBj5p{B z)LLau&0V}q7Nplqid9S_t{>)}V#+uL1$5AYt&=^SYZZP97Vkrbi(Py(3Y)tRwLvm+ zl)d7!ZL9x=c^n|F4Llr~AZ|Et$UAYguy0ERtDWz)$kD|{Z25|=-%6UBFs0@6ggvr; z@x!u9cX4=*2oU z3^ZIH7R@)8vo#MBe(hW#cV8?nbWxCL@6RAQ&R%X0GeP#|_aTB|BfkNm&*z7%HljCf}^*$k~)6n}C2wrxz4D0w=V+^F_ zEH1vlOJHdrB(pM{YekvtfX73x{ncjt0`^Z6D%RiC8piUreB;sF{&4o*)reG={b3TY zV7dQ|NUCO*mV%Zx4*#eCh;EY+;0O59Kzcx61p(k@WZbn)gn3Y*(CnHO$ytmk)3NDo8Ghvf-`C>>a|4+ig6v-n755dyh+Qj*;|8e=)FXv z9~i0BY2?AO7b60gEr^L(P{_I2Zx;fm7I7_v(}FCz8tbocE0dF+*ecOKH%|$Vl2DUO zI6f&we3Rr2hp3BabEH3lKL_l^zg=()j=%0K0M>2@So`0Wga32ws-{NPzd7-b&g1Cc zbx*=J7v@6zE1MGHkdmZTS{M@nLj4i&b3f%KNu*tRuBEQ$H37FBD78U>EhzyKWrrkA zhd1@_tOzv-{2bUM5Io_2xyZ4pVURkJj$t7>SIp&M(u^7&UO2|Q$uy=(N9oO6nyS(1 zJO+Ui;X#kQ5)$?a##v) zH`lC{bp&wX!NISs+sFbgtgak7_DGN>g>BAfuuuVEuBd^^a?1l8m~pZ~TR{}0XmJAD3PNtX-=JQ(1Q7kY!n3;=s^_7e9&(%6@xlPkOah}y8v z0o8!q5xiFMs>B$`9P_8yf2}A4#k!%Ttd;M*c6DXm{rT_ZMAdMo$}<3HQ~(hD?L>rk zh-7RW|C^xv7k6?epoa{G{YtQsq}19NfI~yM7<{VIYX#DnRzs%+|Kd(UZ4g)uer}vQ zk(2f6%-Q-Kybtanv~nO;AZ9Mt)uL#RAb>lbjB`<5u5~;+r|LG$xu_;IDX?8>GgQ>P z9DDw718oVmZ*h#Vv(~5wFNB9rM9VcFpI`Y}IDZ0&6C)n;OJ!N=nA2pUw3*}q$u|sb z>*30j&vY+r+~DyZOkm5_u1?bd39^|~8t$tTWPsl`*d^J9y=pj_xXnmGfzI%2n!L!) zzj-E>($YFT08rEbpb-9Vy!j_6e-Wn58qgXe{PYk;uJ`c@h=~$0422)kw*=zs1Dy8w z2Ndn zP3gC5l?r26ueYfrB>%2O*N2V|JIK-Aq1KIGDscTO#fYNje$zOlVR?XKbD_8VA(NPB?O64Kgg8U1o7@%_)4G zTtsLA@%&EuFRS`)WIjGP88b{Nt#nqVS}b_i`!%NMY@xW#TswyIcqnDF05M7Ub1 zt0WR^SH>%+6}@K}xtUgKS)4`=X2u{%DecTBA;BrI>f^WTZ(b(O6DqM#&Zy)XpHM{Z z0+t-uT#rLdD_w3DL&XzZm)`JcODDzUgVu#J*+?>yp9d+@3s{EhrS5evj07A~m$78n z>;k46^OHPGks(ppvFcneA#uy{C`w+G@zU*^g{+{qI&ynT4BDtT7pSw*VUJ(_NYq6F zTovn1g}yC7fGqjHb?^KwsK4o@BrUr|htP4S8gW}k?T12Omy727@rj^TAM6FBicuUK zo3jq573gB!WdM!|zhOy`xXtZq_hKo{qt|4~zEAs6!##C=tH`a~?O5mtJ2KM(QC;#HsP`de# zZ0tNdfz??FfoE`A`S{ioInZhXHj>u}SOJZqBpw_778)iXo}rV|P066P!kAWkP+%#n z^v))ug}9#`;m9(olSx2&?K!Dr!=?j;G*wZ}6u>d(e_=#SwyjpROwXWx`kbFc$W!{Z zMyaF!;1m=7%u-QB$VAKrPdzY@h=6m9IRz_O{K12g&sxhQ#9~^rw%*u>+HVRI1dYnG z4V>D7o_G-x#c@P*szV+(V)`!lvt7A8zNH7lMF`c8UR|fH%)-G0O4MXQp@ooUpRa6P zMYXDyIjIrycKty84NRw6wD};!%`44@^btq_Smw2#3qC~}*_)jmvyHN3bjX39V$U0g zKrP;75GCXm%TsQzoCrWo()fjNWnauHPDhfB>f=Mw7K*Y(~Ou- zpt zeNmO7DRjZyxQuJted2bm5`RN~5B>b7hUj zSgUJ?GGmnJL8A6s^(a)9aXa)TOIHJgk$aORvq#p;A70(N{$RG2yW9hGr~W_CA8{)y zC&xc3USr1J$0a>>eaijt~#%}XIk<43?0 z&*Q(Kr^01i@q=xx`q}b?Ntq|67n)NSxM-__wSBK<4VZQ(QQe8~->)pJOGMY1aS$A} zQ|@#(@J)ZXaus7MHzCCaO_UgVEfEnq-~$3isD)`!eLOxU~Dc$5PR z_yDwq8E_f*x31wITJtXe|DiQ20Ik_m{b7eD4?$q3M=MEQMnQnut?llZA#Qm{yEtYo zIQzC%8($+CD+eEo{q!^4jdA=|^Ld-QhjIN%Cqm;0Np|E5Nd~GQr0H}~S;7TP0kD4B z@+-=He`q%X%<|9R7S2eFCM<4m7|%W-HuV?M<8CwJf#_~dT=yRmhxO278*>lzCE6rv zq0E}vnws5vIW2+JaMO|^TzMk6wSnDD==kCR%RWL)#es|ii;%43V6!mnKr58KEc$R@ zYQqW7PFmsY0#ZOf0z2oB0dr#2bn42TqVCt6B*?1xIsE78MDgGtZmAMXJ|X8GYI>Hw zrqc`lilkY*Y|cLn*rgY+w~dhyqfirOWBG8IeWxBvs9qN6D^K-;wOv3eo`viyfk@bo zXr|`_PC&TygNDfIQ!d7Vlm$$z{Ee=>ZUjZ7;u>HuJ_s)p5jIC)YoP@2)ReuK3~>|K z{U>2jgc`xR?C->7mWBcpy_0-B^58AI7{Xzsp5XD0D6U~0+wzd-YfIe13SACkH}4s0=A~Xv6fk|2PaD{Zz}r{ILS~CMGx6AP zqhLz{qWZA!$4Clzcb(1?TeMrPfI#Ia%#eNM;jVFAf9Tolp3=xjge1q4|EbUu`6V2y zBDKR}*0E$iQwp46Be`&p0%H#YHwP~n=1~lOl*-V?@d}a(&Cu=rC*|dXk!qPNoTjG> z+vcjKYTCiWY}SC)wRJA;%JRkFWrngS#i!_2Z`H45UH{z?k^dZS{{j$#Hh>V&{$Css zfJdfeYHy@xsHkWBkKlLW=erm{oWIS?%|0r7T;VIjgVEAtaidli=S^vWUL+J5NQ)yc z8i#u^!vj)D#4=oJfnXrRM5%a;ba>e|XCKBUWonXh5_PjDet3Q{?PN)UI>Exb-1D1d zQwMKX z$)pJv@O(6(3z#drJuw~OK;TF`QJFqOf@EH_2q_PGyj%R<+86aqg2YPH^#G~QR2z75 zuYat2_ecNZyCM)gp^AJ5py&xG*`)dZh2(Elh?ABDs6x=$1FFM{FfqTF=0;sjj<#I* zLdW&K6Up#IpTQ!sfcj0BOU5~(yV?zcnPu124^eHKV_C(|T&X5kaaen55eRK7b@g75 z``Z+wC0E#nNIR8wHwvz!O=n6$JG1huTH)eNc-**XJb5KD`ELo_wvx_VG;8T{25ALs z!yBMY$Af%MpKIzY*mybHeA4*_x>ZFU5>cWT@IX@cMp@&~R>t`}_s-k{jpk`XxByKl`?~UR8 za`{bAUO6@`yY+3L&IU#6REk+yYF(SNp)wRPK+klDWr<1nUJbY){*L-U3G=X#0%@0t zf>af_Ur62Xo-Y$>Cd!8vg;=1UKp9FYa{JJXI%@U6@AGF{Fym9=%>sJh)douyFLW|O zY=rACUW!G|Hx2lnzDW6`-B3Chl#KpUpNa@JbR7ebq$RT0ZBVD50Hqz`y&Zf%HT|?j znR}NMc}0?(II|!Mhw;URig}^0NGBzMF4b<+ys`kFFsg2FnEE zePh1Qd>Q`tk}>7gEssY42O0r-gKyrC>;)=rjm z_BEORZDIQ}02a2fu8{373#-)WW(2UXTmQqtvQEAk11zjr$n&y}ibwHi9s*Bglfb@; z|5@?JIp2x$n=+MIQUpvSjgVsB-SO3)rtPd}k~kNkbuVE0B|v$oCJk>FbCuT9ZJW>t{=KSL~=L1CXo zWn7y^}pG>7sJiyvZFDc1cv;FVGEq>x9q5$)(^Oi2-~9m{o{7 z);P;tuq4tF#^>EwS#M~c0v_5%h8d_NSwyg%F_-|hC|Gb8rKSk_6?6tkDAeQ|%||RY zh;-Ba1!ss<;HadGP|1n?6{74LOo>KTJ2=?eIGL%C?|9ncq%~AzVS+rl_27AIMZ}Quc_j%LSkeeW z)S75PjNdw}B*N!(zz{~u%--x?Vg1jlzIXSMT0=zl{nq1sh8gkS@&EViNMTn4OD6}w zD24yZ5=R3Z%l9m?($P$l3ioY+w)^o^eX$=Z=v%Gw*);u7!Xk#PNz%<AH0aS)!Ah3UxNt3{lt$kj7S%Y9r#|Vqn0Z2Q zYUoZ5s6PrC&bXyb)rPMN*H!4|xx8ZEy#7kEM;74d*Fbp^w}NZMf97AmD-A>OwcV?w zH5E|?Q}iXBhV9Vu1$5K2{>r-65c#Xr*D*^TEJR4^VH~E(p3}0XT2gnaOr(<`&+JLz zGpv6Z+xNTl&Wj2^VE`my080OD-QT~#@|(-@|Lo*jP$EOMwG8ykNo4cMp}?zgVu>u> zf-Rj6&U@xOf=rtN>4__B3- zgDtH1{hKX~S?+g)W!Rqq5%xZ_rFqTZnLnv#&HDN}HZb=?jCS^mREHMXdDOamBkYgJ z75wEkuYy0e4WM)&EMUv5e4o1lqH8*O5x!92#3~ViaPQ`7m2U0qz*Fc8(5DM(2VN(} z38}n2eB?P8YcdI9bPq{C%ToExf;&-(0ukaN(|vA#aeKqFF`$HC}(}Q>eU8dlw?2^ z#5_o-^wO(%SC@2`OSaAj>j~w3vJ6U1gr#wwP7_ZXD&*Gq6Lo+O8YhaSWiG%QNt2SH zBdwQ|WRrQt53!}i-;$*)rQfJQ{OA(1@<6qF4BQn7r5c=?;E#|8YL>Jl!p`#y;dMD@ zh^H@ip#RF?l`?cYQu`vghwZ5Fm4AO$5-%BR3|PZ>_2=@hLn z`2lrmHp3Fz@*k;>cYZPneFE7AfFcek8v8#T+kXP{o1ls(*7)7Ao zQ)Eflpu>`!CHmB|AoE1$-paTxflQhS<2z~MuNRTZJy`cQS>IC7lSlZ%eqUY$I+h~C zXLO6wW-v2N9sj(cz1+&6k-^}VPqVo&>e$mltE2@6?#Hamc9fu`Y;4qqQWjneafzMB zQfQZGz)NxA@rkSRV!MK35=T>>)8oD~&qDLV+ z$cr@4A<~A)=w47|c-9L<3}!rLJW<3Nv|FC;QcNQ^*KdokBfDpHT9PAhP&kbzd)GuM z?zY3adzDBNArh=5H52wn9@&8js|1Zdt2?XT#jhQ=ha(q`s1f&mEWu)sSp$^JytjYJ z*t@#(-6oOC0B9lukg>nL_WvzoN^Z7B@=kh|X2xd!>|~79k_47V2r_v#ou=vd9v_vy&oam=x%-HiXNx6FOS@}?0 zWAr@;2o;0{(O#cHehSe`xG7kUhpQDgw3IHb+5Z-q?kQrR0sgE8{Z-sf~AMpY#CV98yUBV&)*&K3d=II-S0XD{-= z5Yx8g;pSV=phI1UH|}-lq5qba<<=v^W$^K<*ksy4sT=|Pdh}je7-6|7W6+h;sQI!} z+iX+Taj*=s9;@~o@lT2>HKiwr16R*$41bZku{sUbV|N5{?N0~vW_qtJ@B*86vxsH2 z`MaX!1o%X3anDaF0%H7WPsFEjaOgEZgn=2b7pu*|>@&(Es_nH6^j;BTay|%?3FGi% z%<=v)y6FAverZgp^agASHX!^U`(H)vzi-O#U0UmCFgfjT0)NI=|^FhnDweNvv)F0k@Q3JMH_i(v1=kR!t4J{bW9JDNUw5phy* zE{SOOP&w7|w(5g>Jolcg3#(%7b1nOWff^5&@xx;hy_KphP*R$iS6~>v-RfJ*69Ta7 z&D?ZacbMO0YtF>-qL~J`E$Z>4<9Z`KR=-_MGd&*E5wvYio#kMCD+9U!blr`0wWNrQ z*xV&dT^0GlTkaWGh1-ZbnN)m=^zwI?1WyGK|cL`knaZz=z}cR`;cQC zz`>&X&-U=Y^;bs5{#SqHb?@xsq)LZtOquQ^t|pgaJ3g=(QbjXM&^-FZ`3VM>-q^6jwHnu#S#)K6%Guc?*Js>wh8%rF|!#9CM= z2|1mWie#cLGzJcSI6Wb1Nag0PeemW%9&!{2Iudz7gKwR$SQ_Eb_MS$>IM|I8&1p(Fi!4I9RQ^0~$6jCL!{@6S z%d4CKDnaJZ)bqt|DEGr2WtD#99k>DN+B^n1ECD3eLZ3v|jYCBHT;+To80rKLM zJNVNSoIJN0&$>(3%Nw(?jT%z>FCf6MmpQlVW6Orm(X|Tg9&W007UWTW2&Z2XQ zxbXHL1%ajq(}KET-8Q$cWi3x&Oa}GT3>4$gNT-K|xJ^b*VHpL)d*}|!nIrJZ4Cp2z=*@siL=mprnKpK}U*A2}F#X_fQI}=Rvf25y5W{kW zlVf~d&Ul5VGAI&PdQ^t{r%RG8m?WnYvkrDBye6ZM`qhZ%6GXmVhOxkxYOg^lHfwzI z2@q}~r~3@4e#g6>{WYC~JZ9G8{|`ms zpTNBn)Jx$X0fb7%QdkjW%Q=DsF`F$u3M3M$fN8oVlHwp-D2R~qTc(rXGQJ#q(%e%@ zDo)#X(=b$M7|TAIT$f?vXdT-;Bu!8rj?q za0gqJurW&jj&~%ZaPhMD;qHwmj?NEiYn<5-Ra%Eib+>RC3lEsz*>H zWPVY<=@vqo1rc^4w?dwIh={KsqnAh>KXeRaG2dj_j|~lFe7!Av__cNsO><6ax(K$q z?7@Sc)lLr!hH?|ZxKW)UO_%p} zLkmg;Hu^gGO`ZoyYuNj#+CB5@ex&~f3wH2)bGHRsCf$zCz}uZBWG%}2e|M?uJ$1~$ z0GkX65Fv*D>~sL;ew!KUIojC&bvzQ~e`|kch12}pc)9zP62E3&xMO$?WR_4R^$l0$ zbXuGYQF_QLGyLm^uL*1#!WtR~AiahRXB|Hz*Vc5jfi@snkkw>$1-s|Iw=#|fir#85 z`Jyx&qJ8%4o56=yG;G4{Xv)}KU$%s{oyC%0H+hQBFE)El;VNpr>r3@B*MP_Hvd#Od zdA9wgy3h%Ae3R1JI>9Z-+lvD2yjz-_#E$;Cuj9)vW)2iBdq!x|pY4JIUYswbfj_%xA0YcCOJ1@N$m@PTD!>t1Km?TXB?8sl~Cbi^H0KPJ&(vt@z1eR za|`ohnBqVR=2pgmw{HatWkth3`-x&p>;a2b6}w1iau)1hSPZEhR^&f~fCl@e%nqmb z!%Aij!|m5%y1ILO_FuV+3pd1zbw`%yV;J*s7CT-;;K6ZTS%J0ZYt~F-FY}rvK#{BK z^Ilwm!LKItw^%yYU-3J=lD#bgYi(XW&GBEG<>_03G=S@kTa?WWto@bsNpFb~i^B4!3-rmEm&6eb$cma&a~4@&SwsRL)l=woER}Q?{jkqhST2w2>q)=B%r!WL zso?3=CwaI>Ak-+fv?Y zv`*)QU8@gFsV-@0HwazPG2d>nY-?&Bj(Hq3q^*NJyoIw;mtSar*F1%FFF^Sb5}<9( z>Fr=$(0mBTv13QWYPJ-zh;zL(=b&-_F?=&)pDqS4Rmx%m5tp%`T7{l2niSkxZy0_$ z1WPO=21O6tE@*hPYF}tsX1)+3KJ_?cEA!=Z`AKZ~uYFug&h~X$EhpfwN|G92trm)o zdb5@6dLZ~x_bJzQA{$ET710!^KQ=MF8ie#E1Ac|Vbn_6{Ms0}d!_1Qh8CnDDsh|1j z=m_yei6G0V@CtGV6Ji1>W52X3@>KUkoXUBu^A7pNsGB8_u(L%|BBSs#+yniIClGZ=uOWk+x( zKd;5CR}bfxq22dXu$RF}Et2X@DM|lT>bm;rVI5qG zZ?9ISsgV!%t1fRq^)~gU^-||?R0Yb|TLGn)MB>+~?Bjp>gn&8j-X;P7Dfs7~&wzhP z3oG$ci_3`6TIo3(S<@QWSkai+*q8ujZQ0t}INInt8UOPp?|(kvUE%+O2mIqn)bHE- ze|Q`U;BkO2K>ODhp#8^>{qrXvf3LuB5&yv(@INB~AKw3$FJKE;BjDNZ^8?I`9GHi@ zp#gLHKTJG%_xtRDHxeOoi3Z~j;h{Tevd(21EhRoawK{rLx7g|y_Ay4_AvB7`7A4y0 zovpF$(s@MjXrM{aS72Bd$Ytf4w<<2rQm^2F%osT_aUP9|?^{^bFsTp^9<9jM<)YSR z(U%cnT0cPfdgOrgFXyoX7*8N57hXv)Q6&E5Hl!<*Kb*S&F!_=V8t$Pek|dS~)S$4FZV zKgi+5MDj#2A=!Ifnsv^FZJ{;S@Pj?RDOL38P<`tD#TxGB?d~4*_F~TnJe6>bp_+Cc zqR!DzlL)pR5@K4uAmh7F4D)e+oOYmiYg)JTmo_9Jcxi~)WiumZ0}OZzIHMRwY=XrV zRCp?in=?*uteAf)LVW<7Esz7ckU0x+EI6O991uJ9*}=J`&mO9{D|MN$+=sP!{Ww_* zr1DGXfLG+y_@V`ceYf+u1@`JxbnbWzY-hG%H%ldL!5=)Nm6Pv(bb~LO4epC>AJc$Y`6eVI!K9;`B*4hTFIh zJW2G&cffDa&>;Q^s-^?RzGExgX0OMLS3-6p=CK%^8RSaX--E7n$Pfa$C-+ez7ZT`5 zl6fyV%dESHv55i3fv?+k?HR+v=qLkxp&W7&6gP}OOzq$Xseyu9VY^3hEY+IGfSa33 zgb|Cf)DBT|2C3J&3{r+-M#(Hc?cvs)HF2>BC&QL6RK1YUeXVR8(=0q|ulu1o&m;k% z&{G?_Q}SrzShs`H0uSC_d@L@nz*rn^MOVx?I}Fd}r=Zi2Xb38LJmc&?%{Xifj# zcx2B@SQ!#qRtcag`|s&gQ6{*XMGBUzQ8Z?T;W|G8=^9pbiqR-0G5)wbOi#I57QQCY`Aysc&)6 zn%Aam36w9u_w#ANF-7`|S(a%Mu_IUDlXfKMgDa~GTpJVavN5Q7x~jfTlUntVdj_3! z^e~=UXVD||akP~m>?Bm^APlCgDGz$aIlS;ul_SErnDnAc$ZTcvX7tA}`$A#!9sVQ7 z2FKIwH*U%?i*rZigB40{5_*zybQRRz{H&4`m1C^&hgF^rWA(WAZy zpUEWainVN}ny;Zv6~LNZv@V@SWwhqJAsJHv)U4XGR%f`ZLCZI%7tFGO=VEyxqewOD z)8mn=X|$vZt@gio!}d2{jk5{9WacC;nkLGC7Obc;B3WdbHxbNz@lsD)Ib2`dG^9*k z4<~5Kwr3&3gr8@DIKFYER|(cJxs!Y@l5e~@_9fjL%F{lKxso81Wn&orIZ#`XW%&!xPbuG^ZZ$_ z2|`V5X0o)bi6``2Dpuve!3Z+1tm?tbnAZ2X)hMA({K`b082jJhua*)w`bpC!XTR2_EPw}bzZ5d@zc9RI3*XMGHW)imG&~b`no|s1v`~IJuCXh!f8@Aob?j~>U8Ae&_Xgs~9y@WJ3wgKT)pT7fG*_Q#Q~2~!m)yv~$-VGH zsJa*11GU^PKcflU?|%JP82#vFBG5a*P4Nlf**yU6O5SS*{?35&>pM8w>lrvo8#y@W znHUk#{}pp&DxS!^5Ad&lS!k+KKrE~zGeuhttMdz^$4t~E=<`PZ_`Esq$k`;Blxgf7 z{)oU6+%?;WZs7U>Z^X5jOgaRVc(LOyi_>8|btUy_Yp>bs!^f8NZX$cLf*4svrHS*p zP;%HRQ-|5UhR`Dz*^@aeT6+(twPvkv7A}Ryk3FZ97{j+4jW3!3RhN&kO1T|}P+g1? z3s`55e%%Y&CSu&qUbN?Vq%gJiM&SgVgq#g*Dp$ah=*LZgOB+_%3|q_x_Fuy(Ww+MF z1>22M%1+L?Pw%<*IbattTRL)emB~wS=?&HGb2MuY5Bx%RoYBcoMVt_W+9`LP$cL3d z=96>L9FGVOhoeICLce@8Qlc`n9q5t%@uekj876RRmg>im72GbmaVg~(ziI}rmR(fI z@<$lmnmK>I64dPATu6+%&%VYUqAiGm7kEQb2+JK^R$LD>15pJBxNx81JXY}b1-YqI zn=Fb6im}8hI?Sy*4b?cPeaV#vKeq6C5?!1BaBrMd*Djx;FOU4$8Y&FF$NLSVNVa5X zYy!K$j7E*67|%C~%wUu1!69Jnvk2n(2Ia!*-47G=>}#|qKiBpLpbIp?6rvP#{&-z` zNL~duOk^fysBO7E*h^xnUp#Ig20|G#*8@a#DB}~S*bi6eq#7I%NpSh-G%?H}7laRN zG_f5bUwu^+FpU&z?1CLH3(WGbsowqw9)8p7@JzlD5H-j-{dJ-6pU_Ld$;{I59|^D> zE+|)}+1b4e@!g+N+Mj@dM7|J$LVi&L6@W?L)+IVl-|!P;2#B>DlUk_IXq+{-(wb~R zW&PzxodYLs$FEWAR4Q3MJJ-}SOQWQ5Vx!Sm`MkGsXUve=E^aIkqIKW7;<87xm*LUm zaq4z=v0}3B2K<3!Dq7PP$J(LWt3}J4bL!mlSszo|2d!vR*tHfV+4R1U$#$a<)BDSS zr*PP)mMfSyGi=aC;^mbDY_mNS~vAZNj?G`Y3ICQbWvpv&g!5Y&ZP3jp}=9G;gds4m-Tl98|XSGnFnO**V*&T~6A9s){t1@mA{x{uXKp|ax3(|(6-3Qt*b_Ynx5 zYGEds_g>GwGgl(jg-Y5P#v8YW*LKeAskQ$W3gafYw3a}? zo7j{senQ=S;c)O0NVS(db=x%Kz0;$!WmB+)W9Fe6wk|PvR&eWaaPR*ydIL}E9=DUW zKO1x=yKoBxu{&7dSs45+Tla|!_ATt|^!XXhf*+p6eJR%)x#DZ#rU@L^q2JYodE|F6 zG$eB&nwFGQVHR*Pax>e+{ZSqA#CbmFhXZ5ccB2wWHTTBrLc2&u@~JP< zq z3ulSsGh_PeW}lYdftlbhTn<)=h@~#eod^$AT+e!-vCdkZKdQR3%-Bmh8wn;BJ2wuV z#jhJ1NZ7{H`sDmHyPQ?=c!6{m_Uf4DZJtAhbp4j!QdgF1?I|rNC|&8|ncqdQP?Kx6 zb-#!O%->Z^(K3Vu>1y8YwtH*_3BpOZxP~sm#Ero>t(t}kL}vxwD_vP;RboQ7bu~yL z9_tWTU9^U5dHGTCa?shQV#A%g{aDGyYoaSNduM>L_)>HH)A)T+PPOwhp{zlc`R>K` zs31DR>=(rANA7O$?gaMry~@h0Jy@j&ugH~vnlb1wX40i%uuJ_7DaM=`_d|;T+C|%{ zW{MIu2G{)R&Q?F+v#Xg$XIH<@phx?z?7jMuRLPSRN-tmhXuQ=@J9m@~RQ|5&P7xqn zg)Lb1@600ShrPCWd-T~y?XQ?;o?iuV1dKX&Fr_!8Bvk^^n&&hIfst@d`=A3H&sel! z6l<3hm-`fOmx%3?E<`qId-@8%x*f3m()*;sTEFN;q*d18(iDvlT3SLgV0C1*7O=-3 z#t&01_kI7|GSaNd+uV2x26rtL;))E_W20yXIN8|4i96$33A!RIN+N+=;2vQ9MV4r+2iMM`AEfz;&M8qej4z z?$RmK-u8O6sl}SUu=$4G>0BQJL}9((ceBicH<$z|L(is~VJC*rSl!di+1KDfxo?zLs#9|jf>qiDJo1ap>zgs@&j4eexof!#5e*VjQ(DmF4C(cm z!oGlKBkz7;-I8UyInG1IBS;9;B5zO1CIR?olv0Z)*Q{k zLe$=$MV5$|=TPw`sg@Rfvq+j&jLn`&tfxPrl*vFh(tUeGkNJUlRe}Z8 zCEE->vn41#qi%oHp`kka)H5t+)5uN~CoHJ87O!cNOh>%+1&v4iI-cr`PzV1zH0CEw zvt+X5`_Fc5!bohjsZze{SQ{-dwMI@sami|g-;S7UJvp{~G*a+e#_A1J@kxAnLakrc zB0H^cu0~=bZXefrOupgf5`@dflC%_(5Lf)j>?ST>LrubXRGK5A&9A}A6Sj51oTYgq zUUeTed=ZdnB;B7Z5!3$V_>ps9-{m^)>{LF_O{$^++iM(K^%MS=#yj;vZ?xs+$iUsvOa?^&h%w!|M)>3`nZR_y<<9(z`)9;lQPdqZiHE7JYVOw5#fs%nh`+iH+*{I?hrm=CJj2QBLa7r>^kB zo)}e=t^sLV78N*z^V_h@=8uQk%u{6FDLp3nI3Y_kwjwaOn>c$TFptg{^CJXWHx^(R zpcOKtMD#x|O6YOO?bwP&!LalmY(=2>u1aqJ>!8F;dsbe1;Q2<(i4XqDc0t3j`%9dI>jV5DlP`(6W1URAX`P6o zBSmg0X5yhEbm9RMEQS!k%`E1S7OfW1**IYyR*I8hv<-oi?ViT`Ib-(e=bRbbPhs@Q zQ+G;piw@?jrN!4Yl5d3=iCCGq-;mR6XiP1w6N`D8b32_qst!k)ku!Z)f+D|lORuf? z6py7-ogqdZ@?9|mg)YU~qePPD&7XRqTktj25nk$poAXePp0J_;ngI+zYpkCB_ zX0&U6ePoLc!cn=wqAp(Uh#lbXq%LjI0-`;?@0d9^#Su9+aUjJZ863TF#^9bPV`AVh zaugT@3vBH#qpU<7s9Lg6((7^FDZ{)yZCWqWs8l4MDRXlk6b0vaIKvmokx3eu4Gfu& zRA-p!H&ZbE$yHtyiz}M0Jsw2`l)HQX`Z|Y=oF^cZL^3RJdG=duIn1}lL%>a^8zcU_ zi8d_R=&Tu~)wCHWSN=2{`B*XSp(Bu1!F0c4sEm%je7C4$sZ26`{r>1o$)u`dYevI0Ppe`)2z}8;`*>M>02!Jg6e@AA6_GPNfz56kGfY! zEQxYD9S1LBo}fYT=1t~v1n&DlHY*piJVwEN_4&+!V~CSGxNpaQ8(=D#DI$C57?LG` zzO*ArCa=Sic1D<>7OAmOnH;_qd)#%QQmRffDoQj{t%#)o>=iwX|IK`YW>NXZw`gDh zoY!AticEKB%()FNVW6F17>&}@304?{jukV4UqLQWDk?)oKIl%PN`9VK}4 zOQbjY;DK{(Jbr|f?iu8jn*KPk{8ZDnV1@+(B-pAIO~T_`VEzTc^it#7_Fl7m)@34 zsVeWW)P=yAv-9<8Naz;i4RQE`--^OleWogIr8Kf!1-4M^o1`Cy#8V%NN^s7e!Mp6r zEj2UfXip;>u*2^(5A_Ra5jua39UB_%EtN{E{6|B3H!TBOk0(|FgDt7k?e3!f+8lJMiprB2 zye+S=d%PsI)9~6o`kS6L#SR6YP(64Bg0mz}dYcf`0y>dM?OhyVkzc=zx3c0tH>gX6 z-DLu|u`9m((tO)L4fD=`Piid?-u-zt%th(sGRz7*fTrY01T{#y8C1H;0ok|(cF7@= zQ8Yp8%Xmz5`lU(--j-`^4&0iMIE~13;w`I!Zj1tqf;-Er9j7?py{{_;=smxiwR>*pnH(dCEiarAZ^0eP2? zMI8Q%3XF7yV$2+U-0Z$Mom@YN+qP{xxv_2AwrxAP zv28oKFW>9#*T1fZ>Q}YTslER?d(E@vs);ej*jd8_wmRgmE15*Ttk0WPT;m-iNQ=x( z!@E%t{8TrWfBcb(yjr+_LV1YdnIwVIP%&uBgdH4kVX?LzFm7Z!s-A9Bn!SV+-fDzR zTVSkJj}0qSoyTMFW2#&GV_xHJUux6pUEdxxRUxxoF`b;_x9-Q|&yGCmI0l?$$y-W{ zN`kdmu!=>tu{cbuYAxsDQv5DX;YdYx{c^q4qj46~w{MI}%E14jW(96GR8M&^K3-A6 zvsAt&BA4L6@%9XY-(u4L#E3|6-z4-L1BH>+pvLP z?*UOv(L!OKC3olk#1*9icD%Li1?!2Fwx8NK%UCHC0V#n;YS_T-a<62ADb6G>(GgJ_ z>;-V(3&5U|56=&*eRHta^a1HDUDF=G98b;q7CzP0LKvrK*kubHU?=43)4NS*k_do; z97D&Jqt6DoTHESir>JjdLJo_s6gjAGh16&RA0@w`4(1Yknm&pObAZ5}nv&e|SE;fN zfw%a zOrkjZ8S|q-VhEqe+%|}tGjO&$Sc9b^PU1$q%f-CEnzF_zt61LZLo3M@E3i0FjWRU~Z zdfM2>?ivwXB*4Ei3?SK##25Qm(Szhu&ShCjVNx(>sT$GRls2E?p-nNm7lB+D7rXIf zS79n4i+uM9&Il$VN0c?*#zM`X1a!{MaD!4PKqwgg1%APV31Khms1Fpf5n;U3nN6|g(j(ZuL~IID&G5~dkGt*+$!O7KtXB| z&;b`3s+gt|y5upC2h2d!_EnN{3VCFaCg9!aLAHLb3cq9szI23NGpLp*`=&GyM%xB6 zL_!J0=_Mp2Izp{#?FJ3(6VBHGO-Wb;*H=t$J3gX;3=_Upb z$tXeH^7iGVhkv56#E3}@*$PBy0|hE+)KPczM?<#=M;R+a5GS_EH=awkYm@#aVdW05 ze($kvR@F1Ko=jC#oWP4J8)y>?n-;V8wDQN+{u8-8=(z>4krp9xy0z4K}W@h21_yC}Cto;cfC;0c& zLjrs&K3kkBtBI#o3p%r-D2j=zK_nfS({&82f)`x@-7aY81vODw2k{%}hEJv9dAVjM zB&Nj2`2FK=M#jlT9+d(kuS5fpB0DsBZ;armu{pEeh4S zZvG&(w(Wztkn`+YBA3EgNI?!dP*ZAE}OF0pL%siM0d7Wts zqw2`4ooRj7IwyG>=)0&NJm^UQp0w=941IDo?x?hLF&D(mAV$bHr;*e|?jvClWz6){ zEI>N7SPcG_PEK+NYL{Jo>7@rdh@QX3E2Z+jRUNcm zD9bA-(i5rsUFlqqT|dk#RU5=_nAQWXE|gvsR5`SRmmS&#PY$nk#5 z8Ql?44izd(V@4NRXYku*h!dR}V~Qx1$=jyQQ!r;wl>LNHKp7H~7PQrc9!=rLN`A6P zt$qFD^6KNCNNBr3k}(5(A;0-C!O%+6Y+8jq@xcGofrs?-dDu-I0+4EXJWy-THWsCf z?|Hy{MtUte091v}wx#$ps%1%mwg~2He9$krCb^lZ6bhmj;+ySm*mnn{(#D8fb>vw# z{3)ow_^4fqDNuB+3HOpxU~#Z3uORJg!x3FX6t1z5mo6oAnC@Tj8PVPVrcBM$xOBoB zDP;gr@?atGM!eEq+}O$s_|OW$YHTb7rESMEWfxxQRSp5Z4XO^>iV877)H_LKcgms^ zE}wL`4u$E&kJYM_yySQ`RX1|)D-Ho`iUf0R>a)gB?}myn8MALapwF6v+%`p*-*rXC zuyr9CwBzt(6ROyQv|Hz}X2=|fpHl((=tm21+FCbABjz80h_h}*P47)FBtM&`KyKB( zSP_&*3wVcT7Pg`EjS2Q+4UD$zmvz}C<}+3V0F{RaomWMd-Oxw22?go^CtVn(kL-ai zT~O0U(19&oOqLhX3ygMVc|FyOqRc1HEZ!_h)skA!(k&m;hnq9a&0#c_8YE z!gXC)W;K04x=Jx5aRPqUfXOFEYd!r`Nm}}BXo%X>kZ+1L-M!O-_yd|WgoFIq9*R9V zr`GfcwVEd4c8P!+Ifrvg7GflTb?p1=b+AI<5AMpIU**9Y>*dhwU5>hH~f>^n}=9Kx#94V3^(!wZFJ zCXxV$`r%h{p72jsq>%-7iOk^lbFJgjcIl(W_f;ggou07!2jRd58p3v9$!)`~?34i< z8cmmvLl7IhyzN@X-KpmTdYY0x?$oPxOW{NQWHI(5*jz4e1SjgTaEubiEt9hw`_FAI z&mFL+Cm}3DBZ`zvQB9!z_xdFrt{+rR5NxR2J3C|~Rlsm@3Rd*6iQ&8hIV@9tDn0Sp zBHTc*70I+C0PT8Z!4|kTmdKHiGxkh@zPjTyR|w4)?7%Q~oUWoq+!qNinVu%PlVn}7 z|6qww2@Oxgt}i>bm|u}f7JGu*v1>qdio)J4mKar$(Nxmpj=HR&crHp)zez&SYlCEh zIHpLkxG7p@Ito+neX?otg?Zp)xZBGnA(K08(rS8VExq9h>nkN5wPpg$^d|P~$OvRGZ&~&@fpujt5xg$2)qH00=RXlS{gDHqr(Gv4u4P3uU@bwb*6=QT@ zaP6JL$wEq@T}xjbki;bY^z@vb{uq7)beUDFWU_1hQJ?q*KY2Y&017KxRSS&&gN@Lh z;|6`(ND5Tzx@`(eO=4?R-4F;={ zug=UU4c5i<>#R5<8>W568`5cJnNUzR4+V^XQp*wi7_|mL3#>65!c(mv?6_p)ja*Sk zL=dEqWNEN{&7r#;X~2nB)EB@=IZ>W!5TsegjMfc;Y{SB>F}Z}mXt~O8eNU*bT?$}t za@}BxeYR|MLPZ%7l({5R`YWAm)J;Xhacksv7#;2*RK?BvrJ(DU4Xo zE|*W$dg$E<(qmP{VYe^k_kb|<;4%MG6mpWQVn(w}4c=}b1HG6jQ&}fczsgp%xCxT7 zS59MJNvm93I=77$aTHrxXaYy1X<)8iTxe2v)@VFB0D^KRXro~T$uW(FMGKiXFcCaO zbvf1tw{0C+2@fP~p=B?#r)G6n%6#5qyd(m4Q$JvcB3fre3!zC=GeHl9N=+Nt8z^QN znIG3gL7Ak+_?RBT(8@qJl5w7tamJF)J&h9y)lX&lNqsp9U$GIqW5yD2juW_gu`j|r zf|JE>q_vBRb;6g1>K78y-AHDnc_>V48Z;NS!s#UB^d%~3QkTxQlr~AyZ>$knx>!`D zI>`1&hP%!h7`w#ooWpz;aRR)m6`UVT)#AHq>~t0}e0DQtK3nZ&%$};PI6s`6WG+7X zSh5#eYsMGBYAl3yI!Y>d?PZp`&ob7j`>(Dk+QjCe>eUQAC3S=ouu!b5-dBQc&wrtv zf3(`?pFCGXZGE=4&#m*?=ezh^2wudtLJbS7>T`y{vWt?&4B7+>DeSDa&b)Q;+RuD% zM`Qg`?Xr`|Iy^bJ?U_!P!|m_^1HB_g+H?VwsVlfI5G&3g2u#fb#1(876 z0r|Dd*#-1m!oJou8ye_J_R%=GD`7vV)dux^|KN)b#XBFkr2%7&iF zXG7Z`_wDM&O?P0o`N7R^TwH|Dzi|H*Vj`0Tq`3k8L-F#11Ndk7^}m4u_&0z_wFZQ~ z@-hk!U3z-%)F(d>F+8GRAAkfYfuCQRFff5WJ%prslA>{fcS8TTbQXww<+7oQb!AHg zrj3ern5MEkM1QvJwbpWrrX|{yZs*!Ct>moN-&x}p{ydC>%TCNH#P*CRZ%heoMTK5c5e*Ne9@WDWINwC?=8xXyb7mp>#_ zt`_dA!SU|GwC>DUA9Hj&&y)3lFksBw$AW;kZiWmwaRqXg?i1m6tL1wZYrKiUfel|N z-rgJGH@lq+K{p(C)H#V2IjON|4R?gP33hZ`caXX+`z&3w%RW2dY_}!eT_j|__+-B1 zoqP$gtv|0j9@_AV^HxHtTqG$P< z3;_Hn+Peczd+#AgKvcB%2WZ^_p|*Aq+_7fk6xN-NnN#x(9zGf<#-=i{e z^zpIHBdx16R#73rc&_$LiIDG|FRpcip(DeEG%Iwi6pAHQF!+Li7g#Q zNz6Cfxx5pJ5(c0yeMkaq*4AIAXJK6JCWxG?1_c2Tq9NPoo5fq*S7XLvv{xIZDIizj zz-swnC`T$VPvSiT+ZY3hzxW3{5Uq1+~&uL^%;Ln>M5MZy4HQ&1i<{B z&h&|^r=hGEZ)8$%EJu|#E6clBTBr_GIA;whF1tRFI*zb+GRp{%$iH^<2jmsG4aICFC^LF50h|Vhl0#Irl`Q?2t+%96nvz z`~grD4ZYol;~!<`JiFr7SszDXbUC!#?^(kL2V9LH)=GaHCDinsIWpl~oz6LMV!BZG zE8_GH->`fNjDo4x9>l&ThVWgyLd`7Qsd<;}*#WVPiUZ^PPTl|8$LHc5^xNXKHRkVb zFD5T3yu~#UPVUdpN@(z$a0o49und~3B|NM*IXxi)p??9!5R1^*& z22&{6>?t7@8p3FWq7Hkolo;DObN&UPSk&CGczkL2dN~FIYM`v2oj5Q%%EXV3{IQE=u-eOy8*fhd^>lPifMDr7TP7>E#S?&lE?sm4OfYvlNaw?Vd&XhEh^UKHf3-LD%U3X5o z*140PJ^25y5RBwVLv4MvfNJLvS-lVZ0x6tKy_`3icO z{L5R6?-}|^*wE6_(Oaj)^ZO-3y5?^zYG$bgo9+Z@V__Gs)8Z^#$RM?mh~agkM%MaM zXT*RbQ=JiSoaAuWEN5l6T#8UZlkfnS41HOSJ9gsqCyP1#`Sy^0B%anuEX!3))=z?D z8|E6ObOWYLk5K`cp9~{bOjiH;?waf&>CJ*$I7F6W(x zLq5w^p-GesWeK*THe6%sUScJaErO3{qrfsDwu)6wCU^8!AyKMMmBiOs8mqxq`ukGc zE0>h!Kw^0uZN%qtOpXpCjF|-I`1oa_&fcs#)rx|VO}Rjd4+XjS9)bc-5ekWS-7&Ek zogRj!G9xrksEHFn-C?Ln(ajshd(GZ4pfAb@WRw-6)DY19&jXo|>L|ed>x^OgtjXoF zlXjhp>b01t$q29UwF%uXvs(_Jbnlq}7&UyYwz;7k+Zs_OP5j?fBj-y?#4QRF{q=## zUv*D|z5uZPq%VNx0mVDSJ;o5+ftSY>zU*G{O5-aoP?zbQAFy}@QN92iKw$KQvX)ND zmc~xYfQOWCDd)b2JW&drbrE)jUJ9e-433m~HX2q`O&a?o_cG&XOY2Y;^Xhr{pka1An6~grH^kje z@GGAr-za+?0sEX0NRUlPV+A?f89^%liTs{qb&*qB!lKH0P}h`6rKPlJ&p+iZ=~-)G zjrA#rk+&RD0q|P4zegOy+AXskN%#;~CI76{k*RG^fzjK_O;y6Ov~kX4x=L-eTTX+< zc+8pJ8Ko2xN8(aq`-!hKvdYS(6pvE$j!_dm*EQE?|79P^ZNw9iNuH2c$es`}QAr7n z(AxY;v&YK1Rv`IGYa7v_$@K}{IkrE`Nt2SyyKB$!%8ndwY7S_b+4Xg5KNzP^VoBa~ zU>vDyjaMXEOYJier)F$0N&17<);vgo=JzR_Mv3X2p=ZUPo53!Wr%^qiA|5tU_Bf<~lNv-U>E+ z<9tVra+plD2!?g+z&rA>M_Gr$xdv2z#OcY_Qf-mnR*@0j@)=98S>8r(aFURmvqlR@ zi-9l4B|Re?(x>wJtRn)X+uN~u<*pejZbQ}UgK6Uyz19Q`Ca%s_e3%=|vzM1^EU1M! zIKw*wNmp=H#~*LScWDgkU*4n<>}xSVW;KHPBf?{Jt}ce7#bJ0b2J#vIoaSK`339VN zAr`Npm*l{8DbmSw5ew_OLEo2S;jhC0?ivo_Dlm_~`m1bPekU}GF#H9eq|xbhg?yJo zq{uNk%Wa|+1M8eBGR-U!^kIq-7jsqiw8r$-JAAY!Wc)=FdEb-t6f3R94SpR9!jcZ~ zowFxk!ye~)_f$4!b3Dt5?OF^Ecc7cWEo&yrxZ{BOoPJAT)@>2z2s*Hg>sj-<&WKH? zE2$23-*gg(OFrumR%w*;2;BEn3$P*5s-btdOXk?a56pZo(D@11uo11@9r(>X$>~Er z}0!WGCWSF$HNtU?0&Al3ds-*giDz1f> z3Z|}T%*f;>g@{gs7uGqAW{x-9z2k}fQa`5pnC|zKt48$L!QbC}K^G6}nx68%~eq_-tdsci3I`*i2*h zI+$3_RkbnA&8P*2e=URMVeSP+bGh0m#kkrim_-fjQzV^~dkIO^-AWc+T-S@3!#*Ze zc&18iYH^gu+jSkSUTZb)**Xqhx9f$bBN?iTik7fDT?{zsC|^m0TpBQ}5v5x>JfZ6# zDwE1M4O6^Ks<54Ut78vy#-?AvP+RaMe$f#GQc8R6^yOY?1smd z_%VmaR~FqK|(8;lKTW@D=Hae|Y-=05X24amD|88IrVxvkCFPBc+L@Eo^=sjU{aD zU7VGifA~gi{w;wjR^IwS=%e#AZZ)(}i$JLq`T3OMFr=i!jT=`XQ z(5`J^>h%qQ-3|o3g1Q?N^tXKGo9gZGIibY{{4j6 zN022$7@iJ{xLRBAO9EM5d0t={NAb)61*hJAX@J4M?SyqxoIeS~^LVQSD;r@oy>ipx znnUCdT}mcZ^{FPZcqxNgP7i@T?W+sLoSsAGy#j**$erl!+2DQ5^`h@(I5~Q)uuf)DL$!R;}RG;5#iNnc#v7eS!_hJbah2e?nJZjLSr~vL&*%$q75#CKEVI1PNg#z0?d?rF`AYw1A`=BKtqw9<^ zJ4Y%;PVT|_ZoeQ(XN@&Drpaz%1pB}`5~s4&CMmbE8rTg~{Ff~>^>Y!0GSaxtU7_@^`@9cdH$?iL4NlEeyV%CBdjgDj9W_?xu1!cCGC*}mTIsW5Y5d!vpjqDBM z)-owRYTw#NynbQ!l=6Zhru!}3CG2wy3Vk*Wb9I8ZxOCfbk}IHVl-2a$>PXxOEU%E@ zk~l2_*}p$6by%T)_8hzJ;UerPchDWesXB6}@PyY~yR*9{kZZuSfpLO$MMR6RwckOS zfJb0coygjow=<&WQzm7K^T_P?9$X^eD>ziH`Jh?O3DjLL;#cPJ=CdGD0 zhkNK3gVjWrV5(1(QvuUkdi=c0<5UKQ6ADE&N#U?DYnE#iC%$1_Pdrs2S^JHf$En`H!qixk}YS4+P?wuw!x4T#5)Bvl`?jD*uukK+Qz67deIkALQlF*t+9m(ao|Uwsj1m^*GmtZ-L_X@DzE!K1wiGU z9$Y}%WMHR5EEwbU(=IReUSX}*EsVF)Kr6Ag)_~h)+fE=NcVBAHWNOdJ$jjR(-0LVD z4|@dI+o>2L?tLCK+(WZbmxu5`A+GX11H`D*-spk%{V1ZZVg%)96EfeRF@@|dv7PK) zI~j4-b6$!S$$`Z7XBL~>ooNJ{+`};jL~qhKLyVB>3%-I-ZO5hmJ?M>eqE$w}j9VO9qcheZqbfxX~?zGf6^?L^Qwe-;i6(jPd_7l6k zsir4yW15i2@%ejxb6zwkAt{*`O09R)zdYJ$$Rhp(sxljuO%l)vRR{5`acenk ztVvDx?IB4#O0rlY6N|Fi@Od$Kk@LZc?L%bi{f5jAA0s&Lns4d|HIRVST0HhE!CfuC z3m_Nle~;rd#vFpOkjXf5Typraqd>(%T6vdlJ{2!;)`pg{0cm}F3V)v#;0fFb8Dtho{`wYmYVRzr<IaK3XY zstrVYFl9kG2p$sfGWD8~>6N8 z&^>_g=y^w}J88yG9y$#FgjSKBiXcH4yFhP;S>N)Azuf>h9W#$={a&72iOp z)r(;OPz+TxZB~0!JI1ATn@eR_8FbgnqKm^}E%%K`tUC!wCfD(qNb>FYTQ$1xkY1_R zP_(~8ow}b;q1~@++eYdsoWeQ4t)qk)Ij+yT-oVq?)6HG&8EhLKi{qKF5I0KLG;^lV zP)s+0L4WD1rXFPFHL}-tX8t0c$DDPK-`%Na$r4V3VBN=v6)l8SxJ5-@AeDnz8O5N- zUyOHHKgUhl<0j`{S=0u;V*^=#gH%k0#u)gQnQ7|@I7c6!g$JT#)o!mXb2Xs!g;veU15Y`|yQx!Er4@mDmB z?bXnev-+53Fvh?FxIlRso)i2_HTku$=NM14Z@{Yu%=Y>;&A7-4Siwj)dx)4GFofC> zlV!c$BU31TiFdm~Oc&-g;55ty%A#FuVKz%nwj_?X#1W)>?6%<)sM5{^1q1kuBDeEm z_5LeL1Cr1NtKxiQ(`_;iHnOxe*`n!GYLFtF(jvH}EMQM8{Sxe*hjYZ*Uj(DX5l06) z`QGlp{4`>mLm~? z<0BhpSO->V2aIquDj}W)VR#SWulYaX8(b34Izi921s!0K4s;4zp_14LVVY-k+U$Dx zj&l|MV*(eTgrU1E(Pb;bLt;9or02*j>)5L;5Y`(swGOgg(L}FH#9isS5B#vT5Jsa_ zx=b`RVqq67!`;$WwC6|qDo+wwe=d{0WUujjOATgBOLsVyFOgAsc5a%aH3dN9g!PgQ z7Qo7Vz@cvGIYt-?Jb`_=C6!|hFk+y#*cN5k6zmf@EtUzS&x>4Y=_&X$*91v3$6m|e zxPqNAI?WHog{V&WH|XYcZ3?!8)ZhF)f*i(eP>nTTAo30R@*13P)j8c8VwMwy?rjM? zVkzEWG^t8>jn~&mK6Ex0Vtjiio0=wXGAv!wQ(QGtbOlipgnOw67kcxaH5@nf;*)cU zDo*N=>EM?mi~dRhiNPtfg$HP@i&Tab>onP_XXJX131T$Jhfqs}N=rQ;h+Rty;ZFE} zV)}n-BDIS$dH2Q^><*;Qk2ZA6WxY`q%~m>B>lWVLd#-c5Qp5NJ9dho^2u(c^4iz=s z9fc*}A+2AsG^gj~Oi~`K8wbTeyKECP*daW$j{Dt!yBHf)7R#oW!{TAs_7e?15h@lT zQ%&Zl2^vxMS`49hO*zMbMp#5@Rz_ZjPC8U&G(GBww$@s^)n(D{81AtZIeGLxq!nK? zUgK3k(yGG16>1FuksGn7&sf$c=$HpH7}}O^>;H4xP=s*43iU@zUxYHgDhJpUzZ^F9JbM0NKXCp;{jN8 za^4~grsr>fPoMN3hi1EcK)IjHpQZMIgA&v{kP;;^sueMLQK}Uk0r^U0CFYLEXyc`I zQTdUiDNGXxN6g^#&R|$_`5{W)uf7#o>LT0FE0Ezf!XQ>;-#BFknRNj=!7A2Fs*Uul zjWnw>Ed{AA8WheT{mbw~IBbjN*mz{VYI9%FL4c3h9)N$Q2R}ox0m9zmik~=%ivAQhwG{IlD z9JbSV*g`dI1Z5>$wj_UgbQ0;L|Bb&+dlHAi(5quH_4yvzRE%TjH3usv_${t=@ApWe zC9Y9hxEaTa?0nZ_4K|+4R|L~2=opFrgu+CV9f*HKU$~=oW;5`?MG+2wHrFK$qF2}$ zw9ptuN(m;U{K|rw`uQ(?$$#R119!9QiXVP014sY>n*V@3h8Qo13p}yPL+@&#&1HK0s~1Y<@&GME00qVB39FpwfEsP^pI2s{NJ-E{9DS z{1`6???{w2Z?sV#3aAE+e`A1yyEd3YJKHoBI}q~L)30E@_G(`w>PnQmhT)23bYjwf|D84g%dBi-eq zXz6}?%eROFW$O6a&X|*=46e6f#X%>RK`oT%5M2b2MWjEc+fFIE9tEfEB{~YXA|0)c zW^gVAvWrT0K@*5N9NZJ_v1K!^cBMGMaj|HwPpO{U&i7OoZoaI-TTD2aR$}XIs5)xD zhXae5Hl&D0QKCzZD8gQe2FlntI2RXdZ>+a=1YZPe=PTA7JuYR$`h_{2KeuruJR4pT z0)Vfs!CTG01rH}66)HAiKhw{onajQBylio6J0yqdt>sB7KPl@7w?yc*l;i2{_)TP`i)xQg`z_K&?MicnW$Rhi(9}z5=WE0mceLa!fHZ%X ziMQb^iJIG5&XHNJT>jZ)hyN`*8@yzdl-!?V$el{AzO3u| zr2S39du|g@YbNGdZ|~Ig79sC506jd8xAjrBAP78*r1wJJ1$8vVT`X-FB*ybbj$2qG zE$IoPS|ReU?|}K_xL^L0;5BboE?IflPrsb7k?H}znYV{h(f|H00x@uae-6F7b6uS7 zpQ4B6&x!XB>Gl5$j3IB}==2{v49yxI-dMvZzE-tO_nucnu&@gDh`(IpirGoQess8O ztg#DLhRTT&Fd+?SYE4KMCgN8dq~Sb^$&#=jdGf%Di&OnqV1dCO0Vb9Mbsr0g(H{Ri zQli;UNF*?&^B-+H=#*#$vdf8L z{OV3)Zr=^5wF~Omtq=^_Rt~CXS7O&nZcoKySGezr!VBnDW>4m==r2ccYXQQGLBu~%U9I1J(zvMrZ z-(A4ffQzat#h>&U?-@B@7Pb5|>Jz zoG#4_Q(TX@66i*#l*#&b;_OT}W7KoBm-V|{Vb#W$c8FOThyno}9-Aa(Yl)H>9V|J6 zcU$=$(PUyLk3(hg>|LxSwVZ~}OE1-is$^n(KfGDYs zO3?E>78vXv6Vj@hr9n^zjdglc+)?@5U76cRYtApPV`1@B&|f7zzupbHnUb%fp3r<# zLtUgsWeSoIA!sYhG*co!PI}l-A zVWQUhiLC-#Y)QL5!{N{)qSBNQoha4|1h~>wf{WVdS=T`wtIrH5&CNBw$_SBL6QN`h ztM{w5{_!aIj|ERI z+r2Xx&AH6n?*)9hP13TlL4pb#!k(WTy|TEBU0fug2d9WoqV}V_CD*dEyhY2O&*~P< zT_vDVa!29r`aoCv)azzh#4Rzg^R_v~p?Yw`TZfYGhBeIXbCRBH<)L`MJrb-o;q2AI zW3XchTj2RkA+#O%L-rX{6Vd)@Ad`E&kD1gHvLPcbl(~PpzB$Vmk=mg3hL^`~`00=r z=a&-f@Yv^`e7`A|SJkvncX+2_;9w~Y> z-j1EL6;jS!zr1u*ME7!$0mn8U&62J)xU?Y1F@cmbt>Yp-sUYDL z#Fa^IbDMX(i=F9IMpmb-n|n~?Yg5W>5RE;reo5qSsxy2bzi9PQCWJ|-I~y)u67Tl` zCj70~WXscmg;`!(KQ_biHJn|URg65Z?NnTE)p`F=5*fCTgUZ`>!h2xlEx_jZ(R@qH ziqe=sZuE4(ouokdSUG+}$OX-SAaILzo)jVl8!+uC^{t0>&#ad0Ra7JB?WmvAd_QYw zV1Vs>3)=%RAU?E@u0OkuISM$*0$jKx|5$iv+8At!U_~;^Bu1ifu&6!kpYL?0cHj#} zUM%)f9re-ZOef6Ul=*>pF#hb2^-+P$1N{vzIlz`dLfg;a8_xY7#}K)c8t$Ub*>yM<_uGs22@=*HTvhRjt^|R zKl1?R0q~m>G)ApgL#(aQHO8##H+u<3wyD}zdx)9R7OC1lW8a-Y;RR(C%?Ebv_^;ba z@ZQa^`qhO!E#$A3JbAUobGnjpZolxV{S>DJJ#MQ&A>Ju~0>3FDMvxTnp!)UaMuqAiX8e|^9|z#~W}S2h+-VGTLV0ROd)N$a zu;%>O1i@`b5L)@cHY12^2W`GxOB{fet>NnIm2N#)p#<<^^k#r2Vu>m|{A>^VPl;$^ zR66D;g{Cld;`|Iu8)@n5RHrQu3D+Q`ytcEg8C*To?SeGu#2dYdcINWnvZy^?V3C-^f$ zvS!0oKTTsB70z{NFu822)pMHemS(cXII7KNCH04(RkJQm_n!UG^h*AlfNdnNJE_Lu zSFbi;v4_|h)v9PslwrtngNSWHL`9kU|uGQGHi(+YH!&pvw-tf=ZV z|AsYdNDe-!3p#al8y$0f>9iY-BY-=KM{h{hcSQB?!ROzGvAssJ2 zy@jl94w!ql6A`i+P&(tF)h~a4qSWcYf$<93!F<`|qh9s?d zP@%L{2YrEs{WDq{`b{6=C>~`h^}uEB8^ap9ho&#>F7CKdE0{n!l(0@kQNAOjINzg* zA@OA>u_q}R;U!MF&QC=|L7ReHUX{8{kXtVnN-DqdUHe_!f#qC?WZn1=*a-aB>=;Y z4FntNH%QROF+~6tWI*IFkvcL=dsS5=b+AoKGtn%UEp?zv%k!e#*@U-E=4>$! z$FNP?ZKzQB_(hm%OTJUAmb9l>UsRx{P5IAjHq|F2yzl)YjFLGrf=)7MDHLo(`I0=h zY4I0Hmm#-s8YVVq`#txTJAk z*fqagLd1Tgie5Kr6Srom$Oc4}w63KNy7ii6O}S{RmC%{k8`AtG#Hf4WJQ+Uh7fgxE z;X$tvBq&xh7voMUXY$rnC$;{)nU`Z)bx`tbUtpF|$42*5%9&HOVy2qv;mVRx2LY)S zRQMM+d@kDzqahO|gwGBC@;iQ$7#_0>k0gksEKH41(oiQ_8uJ5mWiE;(`Zok?T~s#P zf3@Y{oic*bk1ctA&>R0ZZ2N!MQpv>8)xzlCwK=jCq!fQND}AcR$P0k>!Psbx{jtPQ zYgXU#Cn#x9x_%_%9Oz|7B=R27bw~d(WeSFHKK#$5_Cofx@7F@@4xjE0fO7qj{<1*4 z{NoySBdP;D2Ff25?=S57Ko`NDaR)Yd?lHuMQiHL(_{Szw8TPWv9EhjgcgeSeEpk=S zX3o}YfP%^1jwNuAJqZu;cT{bVwB83yYeqN zhgmgGuGK;4`wSu@nOp!7Qkgv0Dsh!24A$rB58@=z(um}zw{UQhm=?)HilbqQTQI?_ zLWZghSLB1-8+=98`{%g>*T78sBwn%8zi2gC_p}qOnic9GPq<9B+j!u+X%K1R0RL-+ zF9E5A%vlx*oJm}kQY0 zRuw%7e8HC>00!-?pwp^xmQ&V%8w{#&G6b)en$1ufJfqQOv8zMvSa9{Tz~Q9gcFcU( z{(2FTf%5tn-~MOSl;W*`LO*-);)jO%A9n5kqi_FjtNs@|{4Ce;KP579|| zS;=ZF7J*FYKr|ED_&e%Ksb&5LWA7AiOB5z~9^1BU+qP}nwr$(CZQHhO-Q#=ioa&nS zb=CCr%slLed|W&C%8a$+i}<5Mgn+3CSalwh)K?}Ni?=DG-sxzN(BTN+1VE$15wxNN zirjxwjPR_NSXL^86m2l)ee|(UoB#X%a|<2-xRZo9ZV*E!%(UgGG)9?&c86)0i@L^{ z=%gnGHjG3!k>JQA))O^xM3Qhblfa!hx2E%crrCb9{mjosl?$IiOWl$nBa`Q){tkQ1)F zM8;Y5#b!`+SK>K~c@o_cWzfVbOpcAWoH%oee*vwfr7-ifWkA7BWhCU5)Z7wr-~&w#X@*boRXMp;&_TJkN7hcPV8YxFdLaFr!aFpuf#4O0HXXbtzjDNe#H zg$8VI6c?lPh9smqijJt9pxceYgRBNOsA_a^QXTb#ao8}s`oCG#*q4&lRccxI>>i=n zckf1#>Y<+~GDQMb+W5=3%ay9tX}3?CLaH^PO;}6u1>uJ~{`MJ!eV)Wfc1$m}lN$o9 zijLU3BFV{S7q(Q%Cu(PQhIVs@c5^PYh>kppi`iICFXAnwYq3@&hjbQVvFK+Pw324+ z2-Y1PV@Mt1Lbspp-4|u`qTG=!z=9wnVVBG+gs;#e$3nm-(kO(I3Tt{#cOIDog01$L zfUcl|t@qGE(-75HNJA##cl5%aGL(Qf&lf^2zCjpyON#Rgq30X&@+d?kSU3elBi>FB z;eUylLQopr1SR}0c}o_+LxS+HOAzS~MS&H)b0boYkzto~M~be{Mf!fN$Kr~18Her zNeWwKWd%W$g())4p(RuH=59v;aej_r{s-f7X1}-Kxs8JfnXldaqj(3NH#14J2wWU8 z_Vc{s5@M2L!+ax* z^XZ_F_|xwqg8+CGE&o);iegCZK4b3FQGMd*NopuMB2?=%lOIY$>PdKv0D`qzY=?7O zUFMm2!kj_N4b@|<4A{?x$@amgD*7##E|E*4nsci;iOOL&j zERPCSVfsfaExzOmQy*+bEAQzzOBi*u+c8W8B^{zZy0nkaEAo~dsK*XND`J|IMGF841w!|b&>69hF;3huJLg~a7_wqWr} zjBvPyGb9Wy-DuTYXo}0UJ=@nd*lhgm%8gchmm4wZTynH9pR3E9vRC>S~!&Jh>^ju$c zi|S2=g6*~yT!bRPLvAaI*c)9%6#7b?U}-jYlo??uBgvp@d(1dItKf3%naXhJN{_-= zz}4kZP5Zy6iVSNQ_D3!kW~DUDCj7;R6)hJ0JDZ(t7S!IMSC8$MdgxW<((}W7iCk4c zTJeR%VnNS1-RC@U>T^{>>@>bGb7{4mw0l-)|qYRGnSm&Ic6x#wv+rZ~K{c!5mlp0@E+Iv>&mA{~%1(4WH%_ zL=7HMgHvE`imzDP9;s0TSqbTh?@OOFJ~O50Y((E#Zk~Vt_XP#nu$?(DyDTZ;=G`1= zej#6yZ+LSbWC>D>S;68jLhnQ|JgATtIOU8X+FL`w*Mq_k9Nv-lOmf~A^ov9?2;rg! zB0HTfc^@L-EXjQ;X{0jLd#?Q68$rVp~*KQWW(7A-bLw* zIk%;;(1%8eqBfjh7KOiF7swkve4RV2AGAIAV0Ovr2J2vTWa5Yy8z;_RV0122WsqQ9 zm_zPF+b+~avy#Ky0wSzESgNAKvI>ZFyF?UH?q0*e%4H+@On3)J(&1Of%XQ-pf0#ox zEppg1%3*MF33kU14~IJFONdq+{bv<|113S~B>+Q(vVR6gEHa2YWk1F$zYmV1LGI|J-AC5VXA14)fX1OYfW+-J}v69#)6GxHkdHyaH9pm-ER zBn1M$yQ+(#D%;=N-vh)ko;c7qP&g36;Pe@pK3@a5`8b)Ruu|(7^@Wfby{#Wb=0^RaEjv&T;E!CMzM|;(^i&)0}o@C|+Pb%YIekL+Ru!iP0GAyL<%_yZX z-WLE+u{@0fLZgUMI>!0ve<4!+$D1qI#Jt+(_r$pI`}X?(@ns3y|A(;tuT9>m%G+`) z3Mjhfa@?Uxh9INRQe%nJIw3(G;~5+X$&zFb0fQKMT&FV%H!aC>*SEkv4@vJw!TyAi z5sJs)?}}r-T(Ah3xV{$id|x-MuUpqA-|ru%+yS0DON;T8xLjpllvCFf1r)_eF?5z0 zi-o`3s+=&-uonE#S_+elx-GwDn|HrqR5R)a;eNE$SyF#xo4PSlYeRyXGa|u@0y?0u z6|qdWcHDW$dj^URDZ^YeNJES&t~`y%ELOywb}Ks5ug;gAw0f z^sb$hQSp%{k%m*PoAz&Urn=>+c_D#p+5CZZdyYppHF2aNn7DAnhIJQcGd*@TTo`qp1M| z=7%GM%;^ko}LyaxT#fFy*wNR%MZrxAEE#3m%s5RwL-jXQe{ZF^S=+XFt{K6Zd zT}cWO9l&>Kif>e~ck7rZc8tPr3-CDP7s5EXW0*wdoKcOX6FLsj0SLtE{DdE<+rpd1 z@ILr2SQp8WeWBxfBcozq$q3B3LmwgYv6ldhyCmYoGBVM@}_NpwDzfOta7sR8nL^o|bzWj+Rm zVMbt?L(hF(TuGHB%=^3M`>&q)`?nnGf8VkAyI>Cxeb__85|k3)h9LyR%Hez_s5K!7 z0#W@L-)@ond&ouEs6$jvI!(eBBU%vmqIuNlC>-CKDi0j{oina=4$tZzhpv5ZCJ6V+ z4=C)9KL~sQ@J_iv>3k?d;g5)*_^^f8^3J>Qj??oG#q(6}9YOLE795<;UVNP#nK}HO z9FAu*B1%C$43vd?GnsLf+RC3 z10sC&_2aWa%ru2`hGx!P$}`wVc(tX>Nb;N2z?$20T4MuRdu}(UMrH<1yNpP3do!lt z;}cWC?nATNadwWVKyWnCtU^wq%WV2Mhc)9Q??jD1%`X{E%OVAQc4sl0M^{aW`RnPl zT9#4Ul)GHj=dwR{w4XVs$=I3HT-KuEL0HqLG2bbr=ukM0`@R@&UFQ*P|D^U@CJI_; z1S4r=#y~O+ru4MsGvt@V2Ifqlzyv{Ph|^uwAf_9s(@0)KKJU@-pK`EK0RI?#dL99J z7Av$&v=M2{Y$ItA*@4M;51dMn!T7pnG(*v<54!E+uauuZ_aeR0^?<56#i^Jk+s&LI z?&@ZPpAwgrQ_L^(?4E8Z?T$*)FaBArC)zDcR#zU>!2}N|8r05EMxl{j5~^ivo^k zn9o!utEcrRbpYpNg9`4Lr?hj3*i2JQt)1*?^QbD(c`EO*8K@wed!2X5 zHzNOUN|c`kQkJz#S`@`=HAhH<)UbqdV*oJ}U+od|dred{NBxoWdr#203Qs(Jg$EEy z{@lNOSycUzbQPK7TdFb#p;3mu8lwR1e^Blv&LvZV?Cr8#<~`Ly6whVd|=>>XCnfj1vO6a?c4#s|2h0&boMUsvA`>;g>zLZD7>$ zqaE8V`C$7)BO9unY{bruLlq&FsYM`yw1gaO>~%zlpx>S@>Kn)4>1CY!eo{;?RPJHT zvaXW*Aj)5cqPX>kS-(#_Vpa7{aEPb3O~Z}znd;KK7-gKh)R?K#U8^l-Of5`yDi1d? z`aS9E#;s1O(}r6MGV|p6Bc;(j1pZX7sQSJ@g83?FdoCufjBG3NRK5`$ z0!%W&EwK`;neN3MeMESuUvk9|mw2X>OdGTSTWq0~w4paVlbx6#ZwKA8*4hI5-I4)K z(o$eUSlPA*VOMk$+Ta#@lcON{1Ll8AgPiIYO8&sUPV|e$e{;V~_m2}?-ni8sE5ZN@ z9obk$C}XE{lpLaK^=`o<7FFN9N{5_n55fHuky`!%rz+v}k>LRucO3>?SBaAwLi}S`MM(q{c7p1i! z?saRpzhoi4k&d^_717*19TE!1rDN!Wz%B9pI~?vW*!`^@wYcvf^TRDS@lQbJhurMc zpOEk$Hu~v50@8lM9!@Eq_{B-ar$KTf)hB9MKhX(%I^1$yO^IU?#wS;x}+Ea|NA$)g0KS;2JJ&Uu{>Cv%#s( z+z>f5cr&d9h^HfRFR=gF+sG{kK++~MYmWL?{K_~TFY!b%`g{Xn{TMJfOi>6x(=X+&{ zYw(R|hL~G;=7}a6eTBB)7tJ|FsZx#z3~vFyA2>Gg#=vc#gpIT@%G?I>r+3&Kj6NxP<0Z< zJJZV<_M9K0oEJ*QJ_2WL6HME{J*CEqixo07R@ii$y7x$3C7Z7bA)!mD{T$UZSC0Ot z+CrAu7TadqLY~C;3-u+;jkI;?bwXc9R#oGk4((9DL!U>6uVRXEu47-!JyC54?ajX6 z9QSsMzgR7WC4ArZknxeXJtq9bUfmjn>7H&@69UT?WzHVfODovn3nX+y8{gy{EZrWZ zKDWwgnh~Euycy{h1)csLj~%zqet$I6p^9&|X3>-MOB|E1bW+$HmHsZq`?$WSI9+;M z>^_Y9eYCupjnytjr=*HL8A9&Lj1#uW_?a-w(#$mA&@o^~+tl(9buR{p*2Aas%m$l3)}}0{;Lh$^vCgOgrM@ zm?_IhpR_BL!Ht$06j~KZUSWwy2o+N2Y1b;a1F})D)d}-ZIqJVE*aF-ie_N*HUHz)w zl!I$()8?^qv4A(^tzEUy1<-5Xmceq_n&>Q)0qmE|K3E!0R%o_^0j&yYxmvGUQUQV% zvE#KT6=q~gYf#{YBO_2R=R}MVsU;~eXG+SMEOWO!D!+8Lu4J_(nR5?HQws+J71kZ* z0siG);c=p3@h~}ARlLpN0sTRm5{~qsvK?Ctcri@5&F>oXoE9s%oXC~~sxQN)PHtW}m2`EtaIE7D;}98F{7b{9;+RUDY;n9NrMfU z>I=z`*=N1j|y3!=Y(zVocXJvaw_CdVa%hK9PFQgmRPL!!yi|W%(x^dWR zxwtZKvhszK)yz&>Idd_EOH5;a1TCG1!75h#xc4!_HLanrvb}=YM|INWN`!@%&;*T} zASP9Yw6>8V`5_!x`5cZEIXOgDmb^Q<=p6ZPBOWigrYC7+V`B>G6bi}Vhlx8PMt9by zT=rY0?W2Vdt&92CSk1|v(S$lWkK~3XMiaz{@Z4kuCceG18TuRwU`c6hvn696XgH+l zAtdu;78V2frXCQl`S4l_lY`q_r!+?z-nQt5Vn8lY1oE(5lYA3c+^BM9Wu*v{t*F=0 zp-9M^iR6=+{}L1NYw!GJEc~A_PCbSKQ#mx@MxN3(IC40$SqmO-W={bw+v#2RJuSvJ zU97x`k$YSvyS6Vd2GPvgAwyevvExFV5=P5BSJ*!#sZ%3MKGdvil`>pd*3hIzjMO*3 ztpI*Dob0UV`fjK^i;Wo8xkM#9;uB^I=yE1UHez^-mFeuyO-`M~J>k4`IT7KqdiQ!e ztI-QmM7)HPL-dV{YJ!znO<%Wm+A4w6A)*B+g~6o7WW`~%5)++`oa)*2!9_;jA(+_L z%}2*b$E_KxV-|fTEX zg(l;MBAQ11SdQeh-%?@VN0Hzh+ri|nr?IE%sHVv}Vxq@tWLK4Qq(x*k?!B8#BI_ih zbC9ZWH=V)oHfhZcA6#6%8K`P_kk6=u?521guVto^=vGNXZ|4ksAX9DS;?A~H2snK; ziBEe{{F;Lp9F4AqebwXZP?3^AV>FS=JgiW$o{diT?Ob-oF~7dC6-98*Pslbr#*@=p z6O@~{=?Ju_+J;1R0#0+apMa6qNF3HQP2*fAV$KOX!;GWO_~ag9EEm{oeF%aA>)Od_ zsJ5YHD9L$LP)XWa%0baKt(V(|?SdQzlRLx%R?J~zh@=GmRjFLNHVbfFp$&}*e4i?X zxYK}4V6E5^#Kp^U!ETFo!LJYoSoe#T^@6x9@y9!jhr+csq1aKCwh+}$NVumwSh+1a z(bK4E#yp93Ge$S)Y+SHD2>7Sv;&Sy=W)bRG?;w0e3x0?X0fM?Kv^aVTlqL&;N9@a7 z=|-HHvDuAvCmv=?QRTWN>L5Mb?aB0vdFGGJ!oa-|ovLvU=f~mF|v9HC2jl~XI zdE$AvYKwe!>y1l0yN)4Ft5IT4Y;}(DXLT4Kz~!R4{k}k6ItP2j>)VjDf8os2iN!O* z;&y)r##D-Xpx$g_8t~Olx(fw`S!@;h}Z^v!w$8vzj`*1%Av6=zppdw5ehb_Yf9`i~Ek~7|vX|nGr>76*++(#`qHmkf6FJ^A zo&N$>FIUjAFHg_aa_hce`s0n`T>QPqL0R=JsGq;X6e|#U=phXV<{xD916TFCHdNCh z-&n%EDvUZM+h%a1O5>%XiQf>RGjn`s=n{c-zYUleU%q|!JB_OV=z(vKG(Z=I23>(p z2lSI`>iqEn*hk-W*_0zcoCFxP69~s>XHC;V)0}i{#^5R* zM2lEyc++y2i-nrdo*mBXdbI{?Z1^A+0J@b3!X52kj~owj+S zj|o#1_?1@cK`UD@R&SryK6M2r#Mau@K5C7_!APrF_QBWQCf#n2zp-nWD^TEiql08( zpsvI6;R<5milV(5lI=xtpACVZjj7Zdw=N=%8XsyA)OwF29J3k|UGRQZ&KQ0Ja=w4jozcN*8kJmeVQ zBoVjC2dkR@42FZxoK|>WByI9UhbL&%o_A|2ZF0u8J}qmib>?%y?qrOIO>KJ6Y%&MS zazt2*P`&V>z4?J&0HmM&ZVJJ51uq5I&Tt3lt254xkH1p75&`yS%TfD}YS3+TmyuBG zHrj*e4WB)CZZeehAE2@z{%Y41WNI9w?m!}e52XdBscl!#>G^*VjW^L7IqOfO+9c`* zo-b_qBdYT3O`$%bwjgrPwf)d?dP6he7sv~ghi~HJ8@`Bd_RSfS^M=8FvUptpeO@^3 zh{{uR!ZqWwG>`g(l|D9ssU17|sD0QY=NWtvy*z#YZh>N=k@^Foc3h3~nyH@N&je)1 z+hlz8HL5Rv)^7bXKUvGK^-O8M5YE?ktb8PWXx{MKb4A5+-nb^soe{6D53O7`K-59b z(}oA@tClx6uuYWq+r=Q8rlrSKtJXft8wYA5Txd|QB-}enw~k**OP;AIPq?iMWcQ_~ z%c6@K;B^xboAd62r)%Uk$2iZZGnO0k(sG=17{{)^8m2%*av_GzIuGc^qLiB?q9ODb z&b;o>bKE8zLtKaq@y1bYJM$-PXAm)gRayFGX5Wnzt=QTP%r_Y~c;%j^sap`Qt?@G8 zcw_w>nJAkU!)NYrVGh z3WucVgm|qwv)gNgD`&RVYkZ`i74`^3Urt*V=PJOTT;Un^4iX<^Ys=ObCF_Vq_K(Xi z+Z?j?2f{D7J~4gK<(ITP^7hA~pL%R74P;GO-C3(Usyb>}$$K$f)|a}82_=?Kb!w+O zq%%TQW#|t@&d%=K?CPXN?i->(>)PWu_LHLtQjc!&;C%4ofbi&4c>6tAgJ$F7j0<&$ zQXfx+*R97{^HWvYD&IS`Kib1kFKkHc`JQ7eSN(Hul^AJNR)on zA7gJ8jmy22HgE7ZT`|F(oLbDEpQG~n&vZ2c_FV$hsDB27g#9I+eh2^-q>Ioz`(&k? zy#eM~|Sco7)V+wYMnLTjeTUFOlQQyw0y-3P$M(YtNTg=v9b*1r%Y*_G5 z^Buc!ZD}ck%0aNt^>)@7a-+QLp?~kp>ke5nZ_ZMF3^PnWbmOza-pD`ZuKG(iP8C^< z_1Q5Z5SnkS3k}98ba(y=(O+SA{%Rq42@m++5AgQ<)dLY20007P0030~n*;p+aG(B{ zI;2)DNS&1RR{rxZvkXHF1c(ZbU?kB{KoQYJ0tCTI`<$=c4>JsL#{TuQ z^PT&;^Pl-n^X_z?dwhLPXaMI27pgL2F!bY&i4&seXd5~@=~0}S)&mc04M!k! zqa;vVG?y&`;O9sn8y5k+B-lpx)NoTM%b*Fs_=F|V&=3sR7>dyIm?vakR zDw3;nZAugy-I}Ij4NTgx6?OZgJ1!cIZmqe3O~a9Rxi{<5FA3e|Xv+-Rt7gM8SZ!y( z+g)?fS~S+&ZMy-yU1PyK7`9_8OxqEA{-NBE9;^eR%n)C1Sabqt7Y&BE#O2l9-I@@@ zRG2qN*1q+#ZWUo6HUas%;yTWv&`iIcJ}9Bey&eh)w3&WkUEa5IR-1R5_q5NTGn-qB zm~eKv8)ES2Eri%M4=-%q(RFi&8 z0&ec!mEJx^Zl+p)S!HFT=*wb{OhH{h+c0gKdm@HaR1%Zg&JOAg?L8!z_qUd(J_QD3 zlFU>(NN<)q%RjO^VT|<~Xbb93Z|+uw?DA!K-p$!Tx_JLu@{{AX8y8gDihh$Nsz1aj zOGxcsN$8YYav`3Q=H0;CyngxasO{ZBKVFU#vE1Dk6c+#gD*>(T%L^c1 z!Y@+guHLSy8rx}mEjn7N^vB7B#K;_y0NMr`#04x&hA_n!z7JtcQYR0;i)^@_x4wiI z@#)>t(%%qAs)Poi;DKNtP>RMBwV5TdbO?)VNB>*B!WZhJ0}oDMy>Op;XlDJi`@_oB zaf}52neRV0bQwVr%g{=}sfNdvqdK^u3)h*vSW$`e< zVb|i})}VVid~r;%AT1S{G9l9=uuxW!ymbp5N*oiXlJN2-^xTl#5^$ue5lwP84l#2` z+h>O*7=_yDloEpRXdMe!KaXr6BXy2LCsG>}?KyeQ#9Qjjhn}iKb6`YB%CA=&J#^uv zKkp?Ek9=Y=z5oPiEHj|e5_7C3)k=R5y^>VDwj9)ojs^y6is()YiJ7)p?|;j(h9%uL z@ohSuM1V=xJ-*WS^MFQ7N)kEc#kXnQknXm0MW4op^jretJIJ@0yIUOT3|UXue-MA> z!SsvzgaQ96lISFd&kbp`fL<33fu-5fKug#D;t@*a`t{8eZg^R99*~15nUS`(jUU(Y z>h5ZJljP9*!r&s%6{dhwpYBEZ#c^6{eBiRVQ`x@Cmk8l*dkJq-T>Olx)UYnPCm)m2 z9qBAjLP2E6aB}?!%7c_HQP3>@b~)LuTGEMStr1lqjm&&(!Ir#Aht&(~u4-R#-eGty zLJ_vUhIIq)YAMSX$K4s3xk*E2IC$%}1E_t|ksJ+3S9f~EMOO#jrM6=*t}B4o_@K1J z%iRNezhwyU>Trw8{f)OLl=1c0EcYbXsBrN5)ruG2Pq(tXFU@5rQ^f1gj{5@>zfqVD zFdXfWjr%sB?Y0xmzV%2(XIDnXBLe&YhSO3Ed)G8ve!$0lH>`c*K+djzY}&qL(vf<; z3;d>);AJH0ZAK%w`W2vP0Y;b-5d;-LXy4S!kS8JV&J}gc>e%jw`&~E zr{@7X{h~MK0>E!781!J-gKs#6v9|{|e&ERcjd<5|0PN<2&}TV5e;`N)w|OXQcE5kf zfAi4)z|PGV!mjmT$nBS=$u&dM3&DTX+%XR)2!?n>G%(6m5aKFCgfCX7X~7WzbchMn z#e-7?&D9zNkSjLQu3Jsja7_H0JQKh5K*2M$!zYf@$fWPO!XW-i5d6TH@*nbFta^s) zNksytl_Q-xj_t0~bDiC<11?A>B9GH;^T-!#+%n&sim{0s1rMzHayCh;e zfK^9F4`Gq22ND@7r#24s>#U?I5LsVq6Qz#O);zereYURgC(@>T2(_Hg!`nN3rg;(M z=8Mx8=%6vnaxF|S54c?p(r-CVm)M6`aD?VF9H&1{cH;?@*L*0!%_jpLGk;j2Xw};6 zRK1Q8xokw%$0U!+OwRxyl#yd=&aFF?9aNy-4;^dm*2dcAQe(B#(q2E(6HGsrDK4Mv zt!oS%mdRUO-RUs0+*ZxT!WxzBN~BZc9MiDY)|K8aE2X7guOR|AcVVxyh;SoIIJ-zg zb-zO~@Dhp8)N7ABV5zr^8D(TFww0#n2xhkAjdKKfcwrgcSG9Sf8I5gz0*ai;P~UTr z3c{{DCqPn!V2lICObdr5|3uJ+{oEPb^q#H*!5DH*x>Jc&H@ zZ2$B(Tf=rY&T%=cNfRNjGhc~%=kdd>d#w-1wg`%*GZ1c+Np~r5{HSV!i`v&6>;uHz zj*0G>kC94(rhk8Bw%Y2@i|@~tQG34HwCFL9Xq1vdLc)|YBU!;mSSLT;N;$f`UgmJ5 zqLwNmI(Hq78zB%Jz$+8$*VdQIq3n9j8Ot~@? zpDH>{Z+eEG$SsjB8Nh7(ImPQ+tL*IyNF?qqMvmc$BJ=3k17RZ(og=R0%Un+66wP-< za_+r(_O=|S&3k~dCEs=s@Db~Wnxr*=(-?#Xz)YCE1X)Fy;~ZHh@7Eq>&mL~Kc$@kO z_y#*|m-nkr+)sFy3u5p^Br2-U-`YOjlCJ0_uIojnB1moOw5~kox~c?7wF0P|4{RM~ z1*s$-X}PYHK?H_A0HeD7B!NtXyh#E%lLAspzvAMCX&d>|>Udq-pdAsgexG=K56b+Y z{iOmpaEKGsf@(UqY+#Qc;;347PEbrd&jNBRHYN8EO=ltqS2B%DwulEHyV9NWxov3z z8WY~C0B}80_Z;!$(J-jjf%v}ZSGALG%??@UaBEgYDPjzC6RZuwp2DmIU%V}*pQn1m z1)B*zc%~#TnC7)3I%`wanHN}N*l~lP5k_bpqCF1#N*)|KMMu>;P-y~Y%bYjY6Ck1? zVUCR~&A20n4ZI`BkNoGR9N)ANDJZ)S%6B=l=NNI1%Ke1WI2-0b{P9|%Z5_E&H|WO0 zH;`nywHvg35q9ZPoU(D}K(uJ!xf^Gg;V1f2pO==E`B+IoQte8V!;$-*%2$J?3n89ba}@xgU4u~j_5!jh>kSD8A1cpu_wW! zj>zB-NNpg~XY~P}MKJh<0KYJ}7erlIi9fOrTihsJ@F*PzLzHM5;VvXev~>xLGvri? z)wrO9Gh#=Ouz{D=!wxuDg-s!8@W`Lz5_$cC*Yud#8Io3DC3B}_oQ?8Bzs^maN@g{* zIR>2{lOWL?98<(|WiJ3c7K%baN`H(pKhD6V1&kCvU~tk>r^rc}lrr8#fioE#OlKsf zaJtx;^>Kpd1Vh!+Bzm%BU!K63_TOs*B7GC_vQ$P>L-;`F?b9Yhb6B<}#V22*y1PAhOsf5N|I-uS_oal<#X<}M1}WN(~J z(P0H1oz=nD+46%gOUOnUDm$aXq>TAB-ZS~g)b+_~|B`g(>nC3PV4n}!fiwYcHD%sk z2New&V3CS3>q5rom>If8u`E;#xl=>RQ~XThoAR?*hccvOLn>QVR9|UQsu%8@B-RV! zJuPX@W?jlZ_&ksIhdH|B&Ia)(g#RH*9S{$_n+GnI-kW6jk!n`irKdiKHfe~i#0?{d zSh8%NuB)Uh$B4<|ba8Pug^m@iD;1eZg+Ne(YQ)|6M4#q$aqGtS9DUgnm4BETr)J9otN zRXyOuDe=HM8zZ$b^5y`bKek`Jj$F}E)@8IP%zvh$1Slb+wJRs!oKDxqR) zWl?PTLSLkmWrj%Wlq%t`C?>m{WXlVQ!q!D20LgFo#VgFPO3BSHR$O^Kv-@o5r|EKuE1Azq zbWSskwThor<$Pwz`pyvaQAgH!j;#4+Mx`_YpbOy8hm?AR9#pG|8Q-10s4OyZVHO@-1G;(pg0+4bUD#Sg!qaPAdB5yjtgofnamo6K-8(j!hq5P!nb zv&b-me;OTvj}m!%Q3j>V==o+7> z>@yF5l7B9P9Tpmy(H1LsIZ8oBlel=ySL7nvdQ8Z`9mmb&eqVLyCjLh_;m*ZG%k8cb zGsHTFhXCs_7}Kah7Jo(pV+J)C`bE%=^RK_`58 zq16Z`^1PPR7r>XKWqb0{T>uLX!EkTd&ROBzkW4?<) zZGxEgA-En~w?o_p__yI&m44{^Fkp{-#3itc&nI8QJ`xDw#rrV)0cnyNnXZN#Wc1Vw zh+2{%{HbA!WK26a#>R@RLL5VKRo)|l;p)go0wf(C86F-WHXa~M4;H%Yxx{sD=FrA; z*z`C)21@AH8!nJD$#L>WOH(bYXJ+WQp&Fzi1k-O? z@CdAFh)E%Alg|@ju@AMqSP#@5R^90F*dZ#AG9Av zW+lG+_@eZAReB(x{P1PofsZ~&mwND(Iy^Ex{vwiM^M@IIL#7;6hq0L|UA;hA!WHM! zwn_$SrUX27W?k&H!uxSaWheZzAY#N%A@32uAVD80uyQ?!qv2?uo)j%}J5?Dp))e=#S*2|Sut=7}!Xkb4BGH1Z?$;SBo&)Pp7!#^J5A8qdD{ehDYzS+_J zq_NL$SWhwB4&q2l7~yXi!6%HMO=^%s0J@(bE3*zHtDbk=!7x}*^D>NiS=+Zy* ziSZHbhwO*65*}}vCS86>mg*;CAshu2#e2Sf#4G%%|7c7RBoO6@U7Ie$Cfj!ZvXgfB zlTrr`$dA5nKg5wdM7VsS))7k4HeJgJ_EI}PQc^gZ(sPPRnoLqok>`A*2%~i6q)2q+ zBq}dl5N+E@O~9pk8Yr0s$x;T&n4-m~p9Kq7hEz@gWmM9HFr7kWRI7~c;!?%XR0;7+ z6;|w$%w$@#Lpz%_+)FjMOTBU30~s_k9mb>rR>P>9c2E`5N(QxY0ouaKC|VUNbRtEi zjxtDB21Awd&C$*?FU%#+fgkc76M&nP=?ewgF!iVLf=hFU9aP!8S!#%7u9M3NKO@kb zk5@Kfr3VvmBhM&Xk_k*hj!*$LW(l;6=)y?F%t{}$54ocxxy3>#5`Np+U{KEmFA^BA zx%hvX zj%ka{DDY@;4o%t-EARAV-pBl5g*#{DRbr(6Q-V@`w1L=Ge?#nM2UzWdeL~SLoaY2C zqxPDtv?nU%37h1UPy+nMtDj!2?G&n-Cz|AlvdMawt*GxwvG~J?8VK zi&*5K!;$Dn0B0|RMBFpUjRVkfYB`~r2f002`7TBJ+mFQkv-vTiS>#F{FWF2IFVKfsh|wX}lAP8N){f zX?rrMGe4&DD_0eCG};%M(q0;^j{Z)W%hO|mntk2jv9$*bjhvw>E^%4NiI!*P+_kui zUj2~EDeF>Se&YQPX9{(Hh}G%3LU|7)c1pWJ^%Hi7v?utT`d+B;l(&P%2Q7~3Ubyj8 z_(R7NIEK;>$i4z!&^?7eql`^N%Ta%+zyIJuEBb-|K|N&q#J|vfOv+YGoY9pGx{@xL z66o8bs%iF}KR%E7dWgru794-2l@Xg(-Z8jXBb~l+e+utQ?Z{9MNbWx>#u-ya8a3Nb zc=(#V?p~v`-z+DVk-s-szn#W0ub(bhdsIrJ-#_2IJA#8&6d|T1KZ~|DUVQTAfNSuB zWX1XHRXt#$JkzwY=4rD?`+l41m5Ml%t#cvtgX^kRdQ?y_n50; z<|{QEMek5P{L*PrT$v!}6i&*Q=V>i`>2PN98bbPM%wkk$174!ovI7tc^kOue5|NBA zrAL4nAy8E*CH>(2LdlJD><6|i(Vsu+?{sAkpuddm0?^u{t6ds5=|br@rCdC1*_EQo zvVQ2?m0P(w8Qec(q2K;7lIdAQ#D8=D;df8RXl@dm1}z3=fml09Svzrr!mf~P&1chP z3EgV+)R0RCcO|n}1h8CqEfwgN2zpBd+Y!NTflse&7s&SFvQ@b!zwQA0{n3M{20!5X zqwLV^#ebuY&%$GXO@r{HB*KRMC%`@LEw1c$o+RE41H};H(3t_8FF)zi|G)bghzR^! zvA+o<=ihM6|1PrqKm3gU%q9FM-+|=!Lf%Z-!O+-L)Wg`+!Nt}!) zt+DYr&Zd1x6O0lYM3fwgBoHwdGej^n8&Qzoj-R(SFM6zRZx1!5@(T*i*cAvBPryqK z$O+HrC=(dzY$1tGHm^}swx8