Merge branch 'MDL-69311' of https://github.com/paulholden/moodle
authorAdrian Greeve <abgreeve@gmail.com>
Thu, 6 Aug 2020 01:47:48 +0000 (09:47 +0800)
committerAdrian Greeve <abgreeve@gmail.com>
Thu, 6 Aug 2020 01:47:48 +0000 (09:47 +0800)
186 files changed:
.eslintignore
.gitignore
.stylelintignore
admin/cli/install.php
admin/cli/uninstall_plugins.php
admin/settings/development.php
admin/tool/behat/cli/init.php
admin/tool/behat/cli/util.php
admin/tool/behat/cli/util_single_run.php
admin/tool/dataprivacy/classes/data_request.php
admin/tool/dataprivacy/createdatarequest.php
admin/tool/dataprivacy/createdatarequest_form.php
admin/tool/dataprivacy/lang/en/tool_dataprivacy.php
admin/tool/uploadcourse/classes/course.php
admin/tool/uploadcourse/classes/helper.php
admin/tool/uploadcourse/lang/en/tool_uploadcourse.php
admin/tool/uploadcourse/tests/course_test.php
admin/tool/usertours/amd/build/tour.min.js
admin/tool/usertours/amd/build/tour.min.js.map
admin/tool/usertours/amd/src/tour.js
admin/tool/xmldb/actions/check_defaults/check_defaults.class.php
analytics/classes/manager.php
auth/email/tests/behat/behat_auth_email.php
auth/tests/behat/behat_auth.php
auth/tests/behat/login.feature
backup/util/ui/tests/behat/behat_backup.php
blocks/myoverview/amd/build/view.min.js
blocks/myoverview/amd/build/view.min.js.map
blocks/myoverview/amd/src/view.js
blocks/navigation/amd/build/ajax_response_renderer.min.js
blocks/navigation/amd/build/ajax_response_renderer.min.js.map
blocks/navigation/amd/src/ajax_response_renderer.js
blocks/recentlyaccessedcourses/amd/build/main.min.js
blocks/recentlyaccessedcourses/amd/build/main.min.js.map
blocks/recentlyaccessedcourses/amd/src/main.js
calendar/tests/behat/behat_calendar.php
course/amd/build/activitychooser.min.js
course/amd/build/activitychooser.min.js.map
course/amd/src/activitychooser.js
course/classes/local/service/content_item_service.php
course/format/topics/backup/moodle2/restore_format_topics_plugin.class.php
course/format/topics/classes/privacy/provider.php
course/format/topics/db/upgrade.php
course/format/topics/format.js
course/format/topics/format.php
course/format/topics/lang/en/format_topics.php
course/format/topics/lib.php
course/format/topics/renderer.php
course/format/topics/tests/format_topics_test.php
course/format/topics/version.php
course/templates/local/activitychooser/error.mustache [new file with mode: 0644]
customfield/field/textarea/classes/data_controller.php
customfield/field/textarea/tests/plugin_test.php
grade/import/csv/classes/load_data.php
h5p/classes/file_storage.php
h5p/upgrade.txt
install/lang/bar/admin.php [new file with mode: 0644]
install/lang/bar/langconfig.php [new file with mode: 0644]
install/lang/hi/moodle.php
install/lang/hi_kids/langconfig.php [new file with mode: 0644]
lang/en/admin.php
lang/en/cache.php
lang/en/grades.php
lib/adminlib.php
lib/amd/build/aria.min.js [new file with mode: 0644]
lib/amd/build/aria.min.js.map [new file with mode: 0644]
lib/amd/build/drawer.min.js
lib/amd/build/drawer.min.js.map
lib/amd/build/form-autocomplete.min.js
lib/amd/build/form-autocomplete.min.js.map
lib/amd/build/local/aria/aria-hidden.min.js [new file with mode: 0644]
lib/amd/build/local/aria/aria-hidden.min.js.map [new file with mode: 0644]
lib/amd/build/local/aria/focuslock.min.js
lib/amd/build/local/aria/focuslock.min.js.map
lib/amd/build/local/aria/selectors.min.js [new file with mode: 0644]
lib/amd/build/local/aria/selectors.min.js.map [new file with mode: 0644]
lib/amd/build/modal.min.js
lib/amd/build/modal.min.js.map
lib/amd/build/normalise.min.js [new file with mode: 0644]
lib/amd/build/normalise.min.js.map [new file with mode: 0644]
lib/amd/build/tooltip.min.js
lib/amd/build/tooltip.min.js.map
lib/amd/build/tree.min.js
lib/amd/build/tree.min.js.map
lib/amd/src/aria.js [new file with mode: 0644]
lib/amd/src/drawer.js
lib/amd/src/form-autocomplete.js
lib/amd/src/local/aria/aria-hidden.js [new file with mode: 0644]
lib/amd/src/local/aria/focuslock.js
lib/amd/src/local/aria/selectors.js [new file with mode: 0644]
lib/amd/src/modal.js
lib/amd/src/normalise.js [new file with mode: 0644]
lib/amd/src/tooltip.js
lib/amd/src/tree.js
lib/behat/axe/axe.min.js [new file with mode: 0644]
lib/behat/behat_base.php
lib/behat/classes/util.php
lib/behat/form_field/behat_form_editor.php
lib/behat/form_field/behat_form_passwordunmask.php
lib/classes/event/grade_item_deleted.php [new file with mode: 0644]
lib/clilib.php
lib/coursecatlib.php [deleted file]
lib/db/caches.php
lib/db/upgrade.php
lib/dml/moodle_database.php
lib/dml/tests/dml_test.php
lib/dml/tests/fixtures/test_dml_sql_debugging_fixture.php [new file with mode: 0644]
lib/editor/atto/plugins/image/yui/build/moodle-atto_image-button/moodle-atto_image-button-debug.js
lib/editor/atto/plugins/image/yui/build/moodle-atto_image-button/moodle-atto_image-button-min.js
lib/editor/atto/plugins/image/yui/build/moodle-atto_image-button/moodle-atto_image-button.js
lib/editor/atto/plugins/image/yui/src/button/js/button.js
lib/editor/atto/plugins/undo/yui/build/moodle-atto_undo-button/moodle-atto_undo-button-debug.js
lib/editor/atto/plugins/undo/yui/build/moodle-atto_undo-button/moodle-atto_undo-button-min.js
lib/editor/atto/plugins/undo/yui/build/moodle-atto_undo-button/moodle-atto_undo-button.js
lib/editor/atto/plugins/undo/yui/src/button/js/button.js
lib/grade/grade_item.php
lib/table/amd/build/dynamic.min.js
lib/table/amd/build/dynamic.min.js.map
lib/table/amd/src/dynamic.js
lib/tablelib.php
lib/templates/paging_bar.mustache
lib/tests/behat/behat_accessibility.php [new file with mode: 0644]
lib/tests/behat/behat_app.php
lib/tests/behat/behat_forms.php
lib/tests/behat/behat_general.php
lib/tests/behat/behat_hooks.php
lib/tests/behat/behat_navigation.php
lib/tests/event/grade_item_deleted_test.php [new file with mode: 0644]
lib/thirdpartylibs.xml
lib/upgrade.txt
login/index.php
message/amd/build/message_drawer_router.min.js
message/amd/build/message_drawer_router.min.js.map
message/amd/build/message_drawer_view_conversation_renderer.min.js
message/amd/build/message_drawer_view_conversation_renderer.min.js.map
message/amd/src/message_drawer_router.js
message/amd/src/message_drawer_view_conversation_renderer.js
message/classes/api.php
message/templates/message_index.mustache
mod/assign/amd/build/grading_navigation.min.js
mod/assign/amd/build/grading_navigation.min.js.map
mod/assign/amd/src/grading_navigation.js
mod/assign/feedback/editpdf/ajax.php
mod/assign/feedback/editpdf/classes/document_services.php
mod/assign/feedback/editpdf/tests/behat/behat_assignfeedback_editpdf.php
mod/assign/gradingoptionsform.php
mod/assign/tests/behat/grading_app_filters.feature [new file with mode: 0644]
mod/choice/backup/moodle2/backup_choice_stepslib.php
mod/choice/classes/external.php
mod/choice/db/install.xml
mod/choice/db/upgrade.php
mod/choice/lang/en/choice.php
mod/choice/lib.php
mod/choice/mod_form.php
mod/choice/renderer.php
mod/choice/tests/behat/limit_responses.feature
mod/choice/tests/behat/multiple_options.feature
mod/choice/version.php
mod/feedback/classes/responses_table.php
mod/forum/classes/privacy/provider.php
mod/forum/classes/subscriptions.php
mod/forum/db/install.xml
mod/forum/db/upgrade.php
mod/forum/discuss.php
mod/forum/tests/behat/behat_mod_forum.php
mod/forum/version.php
mod/label/lib.php
mod/lti/tests/externallib_test.php
mod/quiz/accessrule/seb/db/install.xml
mod/quiz/lib.php
mod/workshop/allocation/manual/tests/behat/behat_workshopallocation_manual.php
question/type/ddmarker/tests/behat/behat_qtype_ddmarker.php
search/classes/engine.php
search/engine/solr/classes/engine.php
search/tests/behat/behat_search.php
theme/boost/amd/build/drawer.min.js
theme/boost/amd/build/drawer.min.js.map
theme/boost/amd/src/drawer.js
theme/boost/scss/moodle/core.scss
theme/boost/scss/moodle/message.scss
theme/boost/scss/moodle/modules.scss
theme/boost/style/moodle.css
theme/classic/style/moodle.css
user/index.php
user/tests/behat/table_column_visibility.feature [new file with mode: 0644]
version.php

index 1bca50c..f9f7c27 100644 (file)
@@ -19,6 +19,7 @@ lib/editor/tinymce/plugins/spellchecker/rpc.php
 lib/editor/tinymce/tiny_mce/
 lib/mlbackend/php/phpml/
 lib/adodb/
+lib/behat/axe/
 lib/bennu/
 lib/evalmath/
 lib/phpspreadsheet/
index b96359f..9d02c9b 100644 (file)
@@ -44,3 +44,4 @@ composer.phar
 /lib/yuilib/*/*/*-coverage.js
 atlassian-ide-plugin.xml
 /node_modules/
+/.vscode/
index c0de22f..8b99a05 100644 (file)
@@ -20,6 +20,7 @@ lib/editor/tinymce/plugins/spellchecker/rpc.php
 lib/editor/tinymce/tiny_mce/
 lib/mlbackend/php/phpml/
 lib/adodb/
+lib/behat/axe/
 lib/bennu/
 lib/evalmath/
 lib/phpspreadsheet/
index 5c68d52..2c2ff88 100644 (file)
@@ -267,6 +267,7 @@ list($options, $unrecognized) = cli_get_params(
 );
 
 $interactive = empty($options['non-interactive']);
+$skipdatabase = $options['skip-database'];
 
 // set up language
 $lang = clean_param($options['lang'], PARAM_SAFEDIR);
@@ -638,96 +639,100 @@ do {
     }
 } while ($hintdatabase !== '');
 
-// ask for fullname
-if ($interactive) {
-    cli_separator();
-    cli_heading(get_string('fullsitename', 'moodle'));
+// If --skip-database option is provided, we do not need to ask for site fullname, shortname, adminuser, adminpass, adminemail.
+// These fields will be requested during the database install part.
+if (!$skipdatabase) {
+    // Ask for fullname.
+    if ($interactive) {
+        cli_separator();
+        cli_heading(get_string('fullsitename', 'moodle'));
 
-    if ($options['fullname'] !== '') {
-        $prompt = get_string('clitypevaluedefault', 'admin', $options['fullname']);
+        if ($options['fullname'] !== '') {
+            $prompt = get_string('clitypevaluedefault', 'admin', $options['fullname']);
+        } else {
+            $prompt = get_string('clitypevalue', 'admin');
+        }
+
+        do {
+            $options['fullname'] = cli_input($prompt, $options['fullname']);
+        } while (empty($options['fullname']));
     } else {
-        $prompt = get_string('clitypevalue', 'admin');
+        if (empty($options['fullname'])) {
+            $a = (object)['option' => 'fullname', 'value' => $options['fullname']];
+            cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
+        }
     }
 
-    do {
-        $options['fullname'] = cli_input($prompt, $options['fullname']);
-    } while (empty($options['fullname']));
-} else {
-    if (empty($options['fullname'])) {
-        $a = (object)array('option'=>'fullname', 'value'=>$options['fullname']);
-        cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
-    }
-}
+    // Ask for shortname.
+    if ($interactive) {
+        cli_separator();
+        cli_heading(get_string('shortsitename', 'moodle'));
 
-// ask for shortname
-if ($interactive) {
-    cli_separator();
-    cli_heading(get_string('shortsitename', 'moodle'));
+        if ($options['shortname'] !== '') {
+            $prompt = get_string('clitypevaluedefault', 'admin', $options['shortname']);
+        } else {
+            $prompt = get_string('clitypevalue', 'admin');
+        }
 
-    if ($options['shortname'] !== '') {
-        $prompt = get_string('clitypevaluedefault', 'admin', $options['shortname']);
+        do {
+            $options['shortname'] = cli_input($prompt, $options['shortname']);
+        } while (empty($options['shortname']));
     } else {
-        $prompt = get_string('clitypevalue', 'admin');
+        if (empty($options['shortname'])) {
+            $a = (object)['option' => 'shortname', 'value' => $options['shortname']];
+            cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
+        }
     }
 
-    do {
-        $options['shortname'] = cli_input($prompt, $options['shortname']);
-    } while (empty($options['shortname']));
-} else {
-    if (empty($options['shortname'])) {
-        $a = (object)array('option'=>'shortname', 'value'=>$options['shortname']);
-        cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
+    // Ask for admin user name.
+    if ($interactive) {
+        cli_separator();
+        cli_heading(get_string('cliadminusername', 'install'));
+        if (!empty($options['adminuser'])) {
+            $prompt = get_string('clitypevaluedefault', 'admin', $options['adminuser']);
+        } else {
+            $prompt = get_string('clitypevalue', 'admin');
+        }
+        do {
+            $options['adminuser'] = cli_input($prompt, $options['adminuser']);
+        } while (empty($options['adminuser']) or $options['adminuser'] === 'guest');
+    } else {
+        if ((empty($options['adminuser']) || $options['adminuser'] === 'guest')) {
+            $a = (object)['option' => 'adminuser', 'value' => $options['adminuser']];
+            cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
+        }
     }
-}
 
-// ask for admin user name
-if ($interactive) {
-    cli_separator();
-    cli_heading(get_string('cliadminusername', 'install'));
-    if (!empty($options['adminuser'])) {
-        $prompt = get_string('clitypevaluedefault', 'admin', $options['adminuser']);
-    } else {
+    // Ask for admin user password.
+    if ($interactive) {
+        cli_separator();
+        cli_heading(get_string('cliadminpassword', 'install'));
         $prompt = get_string('clitypevalue', 'admin');
+        do {
+            $options['adminpass'] = cli_input($prompt);
+        } while (empty($options['adminpass']) or $options['adminpass'] === 'admin');
+    } else {
+        if ((empty($options['adminpass']) or $options['adminpass'] === 'admin')) {
+            $a = (object)['option' => 'adminpass', 'value' => $options['adminpass']];
+            cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
+        }
     }
-    do {
-        $options['adminuser'] = cli_input($prompt, $options['adminuser']);
-    } while (empty($options['adminuser']) or $options['adminuser'] === 'guest');
-} else {
-    if (empty($options['adminuser']) or $options['adminuser'] === 'guest') {
-        $a = (object)array('option'=>'adminuser', 'value'=>$options['adminuser']);
-        cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
+
+    // Ask for the admin email address.
+    if ($interactive) {
+        cli_separator();
+        cli_heading(get_string('cliadminemail', 'install'));
+        $prompt = get_string('clitypevaluedefault', 'admin', $options['adminemail']);
+        $options['adminemail'] = cli_input($prompt, $options['adminemail']);
     }
-}
 
-// ask for admin user password
-if ($interactive) {
-    cli_separator();
-    cli_heading(get_string('cliadminpassword', 'install'));
-    $prompt = get_string('clitypevalue', 'admin');
-    do {
-        $options['adminpass'] = cli_input($prompt);
-    } while (empty($options['adminpass']) or $options['adminpass'] === 'admin');
-} else {
-    if (empty($options['adminpass']) or $options['adminpass'] === 'admin') {
-        $a = (object)array('option'=>'adminpass', 'value'=>$options['adminpass']);
+    // Validate that the address provided was an e-mail address.
+    if (!empty($options['adminemail']) && !validate_email($options['adminemail'])) {
+        $a = (object)['option' => 'adminemail', 'value' => $options['adminemail']];
         cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
     }
 }
 
-// Ask for the admin email address.
-if ($interactive) {
-    cli_separator();
-    cli_heading(get_string('cliadminemail', 'install'));
-    $prompt = get_string('clitypevaluedefault', 'admin', $options['adminemail']);
-    $options['adminemail'] = cli_input($prompt, $options['adminemail']);
-}
-
-// Validate that the address provided was an e-mail address.
-if (!empty($options['adminemail']) && !validate_email($options['adminemail'])) {
-    $a = (object) array('option' => 'adminemail', 'value' => $options['adminemail']);
-    cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
-}
-
 // Ask for the upgrade key.
 if ($interactive) {
     cli_separator();
@@ -746,22 +751,26 @@ if ($options['upgradekey'] !== '') {
     $CFG->upgradekey = $options['upgradekey'];
 }
 
-if ($interactive) {
-    if (!$options['agree-license']) {
-        cli_separator();
-        cli_heading(get_string('copyrightnotice'));
-        echo "Moodle  - Modular Object-Oriented Dynamic Learning Environment\n";
-        echo get_string('gpl3')."\n\n";
-        echo get_string('doyouagree')."\n";
-        $prompt = get_string('cliyesnoprompt', 'admin');
-        $input = cli_input($prompt, '', array(get_string('clianswerno', 'admin'), get_string('cliansweryes', 'admin')));
-        if ($input == get_string('clianswerno', 'admin')) {
-            exit(1);
+// The user does not also need to pass agree-license when --skip-database is provided as the user will need to accept
+// the license again in the database install part.
+if (!$skipdatabase) {
+    if ($interactive) {
+        if (!$options['agree-license']) {
+            cli_separator();
+            cli_heading(get_string('copyrightnotice'));
+            echo "Moodle  - Modular Object-Oriented Dynamic Learning Environment\n";
+            echo get_string('gpl3')."\n\n";
+            echo get_string('doyouagree')."\n";
+            $prompt = get_string('cliyesnoprompt', 'admin');
+            $input = cli_input($prompt, '', array(get_string('clianswerno', 'admin'), get_string('cliansweryes', 'admin')));
+            if ($input == get_string('clianswerno', 'admin')) {
+                exit(1);
+            }
+        }
+    } else {
+        if (!$options['agree-license'] && !$skipdatabase) {
+            cli_error(get_string('climustagreelicense', 'install'));
         }
-    }
-} else {
-    if (!$options['agree-license']) {
-        cli_error(get_string('climustagreelicense', 'install'));
     }
 }
 
@@ -810,7 +819,7 @@ if (!core_plugin_manager::instance()->all_plugins_ok($version, $failed)) {
     cli_error(get_string('pluginschecktodo', 'admin'));
 }
 
-if (!$options['skip-database']) {
+if (!$skipdatabase) {
     install_cli_database($options, $interactive);
     // This needs to happen at the end to ensure it occurs after all caches
     // have been purged for the last time.
index e093d89..3e16237 100644 (file)
@@ -34,6 +34,7 @@ $help = "Command line tool to uninstall plugins.
 Options:
     -h --help                   Print this help.
     --show-all                  Displays a list of all installed plugins.
+    --show-contrib              Displays a list of all third-party installed plugins.
     --show-missing              Displays a list of plugins missing from disk.
     --purge-missing             Uninstall all missing from disk plugins.
     --plugins=<plugin name>     A comma separated list of plugins to be uninstalled. E.g. mod_assign,mod_forum
@@ -44,6 +45,9 @@ Examples:
     # php uninstall_plugins.php  --show-all
         Prints tab-separated list of all installed plugins.
 
+    # php uninstall_plugins.php  --show-contrib
+        Prints tab-separated list of all third-party installed plugins.
+
     # php uninstall_plugins.php  --show-missing
         Prints tab-separated list of all missing from disk plugins.
 
@@ -63,6 +67,7 @@ Examples:
 list($options, $unrecognised) = cli_get_params([
     'help' => false,
     'show-all' => false,
+    'show-contrib' => false,
     'show-missing' => false,
     'purge-missing' => false,
     'plugins' => false,
@@ -84,12 +89,15 @@ if ($options['help']) {
 $pluginman = core_plugin_manager::instance();
 $plugininfo = $pluginman->get_plugins();
 
-if ($options['show-all'] || $options['show-missing']) {
+if ($options['show-all'] || $options['show-missing'] || $options['show-contrib']) {
     foreach ($plugininfo as $type => $plugins) {
         foreach ($plugins as $name => $plugin) {
+            if ($options['show-contrib'] && $plugin->is_standard()) {
+                continue;
+            }
             $pluginstring = $plugin->component . "\t" . $plugin->displayname;
 
-            if ($options['show-all']) {
+            if ($options['show-all'] || $options['show-contrib']) {
                 cli_writeln($pluginstring);
             } else {
                 if ($plugin->get_status() === core_plugin_manager::PLUGIN_STATUS_MISSING) {
index 46206fc..3844fe9 100644 (file)
@@ -41,6 +41,13 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
     $temp->add(new admin_setting_configcheckbox('debugdisplay', new lang_string('debugdisplay', 'admin'), new lang_string('configdebugdisplay', 'admin'), ini_get_bool('display_errors')));
     $temp->add(new admin_setting_configcheckbox('perfdebug', new lang_string('perfdebug', 'admin'), new lang_string('configperfdebug', 'admin'), '7', '15', '7'));
     $temp->add(new admin_setting_configcheckbox('debugstringids', new lang_string('debugstringids', 'admin'), new lang_string('debugstringids_desc', 'admin'), 0));
+    $temp->add(new admin_setting_configselect('debugsqltrace',
+            new lang_string('debugsqltrace', 'admin'),
+            new lang_string('debugsqltrace_desc', 'admin'), 0, array(
+               0 => new lang_string('disabled', 'admin'),
+               1 => new lang_string('debugsqltrace1', 'admin'),
+               2 => new lang_string('debugsqltrace2', 'admin'),
+             100 => new lang_string('debugsqltrace100', 'admin'))));
     $temp->add(new admin_setting_configcheckbox('debugvalidators', new lang_string('debugvalidators', 'admin'), new lang_string('configdebugvalidators', 'admin'), 0));
     $temp->add(new admin_setting_configcheckbox('debugpageinfo', new lang_string('debugpageinfo', 'admin'), new lang_string('configdebugpageinfo', 'admin'), 0));
     $ADMIN->add('development', $temp);
index a5b6616..91a5d86 100644 (file)
@@ -49,6 +49,7 @@ list($options, $unrecognized) = cli_get_params(
         'torun'    => 0,
         'optimize-runs' => '',
         'add-core-features-to-theme' => false,
+        'axe'      => false,
     ),
     array(
         'j' => 'parallel',
@@ -71,6 +72,7 @@ Options:
 -m, --maxruns    Max parallel processes to be executed at one time.
 --fromrun        Execute run starting from (Used for parallel runs on different vms)
 --torun          Execute run till (Used for parallel runs on different vms)
+--axe            Include axe accessibility tests
 
 -o, --optimize-runs Split features with specified tags in all parallel runs.
 -a, --add-core-features-to-theme Add all core features to specified theme's
@@ -102,7 +104,10 @@ if ($options['parallel'] && $options['parallel'] > 1) {
     }
 } else {
     // Only sanitize options for single run.
-    $cmdoptionsforsinglerun = array('add-core-features-to-theme');
+    $cmdoptionsforsinglerun = [
+        'add-core-features-to-theme',
+        'axe',
+    ];
 
     foreach ($cmdoptionsforsinglerun as $option) {
         if (!empty($options[$option])) {
index 83a19af..e5f5ade 100644 (file)
@@ -54,6 +54,7 @@ list($options, $unrecognized) = cli_get_params(
         'torun'       => 0,
         'optimize-runs' => '',
         'add-core-features-to-theme' => false,
+        'axe'         => false,
     ),
     array(
         'h' => 'help',
@@ -69,7 +70,7 @@ $help = "
 Behat utilities to manage the test environment
 
 Usage:
-  php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--help] [--parallel=value [--maxruns=value]]
+  php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--axe|--help] [--parallel=value [--maxruns=value]]
 
 Options:
 --install      Installs the test environment for acceptance tests
@@ -78,6 +79,7 @@ Options:
 --disable      Disables test environment
 --diag         Get behat test environment status code
 --updatesteps  Update feature step file.
+--axe          Include axe accessibility tests
 
 -j, --parallel Number of parallel behat run operation
 -m, --maxruns Max parallel processes to be executed at one time.
index f0a3650..42b335c 100644 (file)
@@ -49,6 +49,7 @@ list($options, $unrecognized) = cli_get_params(
         'updatesteps' => false,
         'optimize-runs' => '',
         'add-core-features-to-theme' => false,
+        'axe'         => false,
     ),
     array(
         'h' => 'help',
@@ -75,6 +76,7 @@ Options:
 --disable        Disables test environment
 --diag           Get behat test environment status code
 --updatesteps    Update feature step file.
+--axe            Include axe accessibility tests
 
 -o, --optimize-runs Split features with specified tags in all parallel runs.
 -a, --add-core-features-to-theme Add all core features to specified theme's
@@ -181,6 +183,9 @@ if ($options['install']) {
         behat_config_manager::set_behat_run_config_value('behatsiteenabled', 1);
     }
 
+    // Define whether to run Behat with axe tests.
+    behat_config_manager::set_behat_run_config_value('axe', $options['axe']);
+
     // Enable test mode.
     behat_util::start_test_mode($options['add-core-features-to-theme'], $options['optimize-runs'], $parallel, $run);
 
index 6a94fad..02edc7c 100644 (file)
@@ -26,10 +26,11 @@ namespace tool_dataprivacy;
 
 defined('MOODLE_INTERNAL') || die();
 
+use lang_string;
 use core\persistent;
 
 /**
- * Class for loading/storing competencies from the DB.
+ * Class for loading/storing data requests from the DB.
  *
  * @copyright  2018 Jun Pataleta
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
@@ -62,6 +63,7 @@ class data_request extends persistent {
             ],
             'comments' => [
                 'type' => PARAM_TEXT,
+                'message' => new lang_string('errorinvalidrequestcomments', 'tool_dataprivacy'),
                 'default' => ''
             ],
             'commentsformat' => [
@@ -75,7 +77,10 @@ class data_request extends persistent {
                 'default' => FORMAT_PLAIN
             ],
             'userid' => [
-                'default' => 0,
+                'default' => function() {
+                    global $USER;
+                    return $USER->id;
+                },
                 'type' => PARAM_INT
             ],
             'requestedby' => [
index c29f197..a81df11 100644 (file)
@@ -67,8 +67,8 @@ if (!$manage && !\tool_dataprivacy\api::can_contact_dpo()) {
     redirect($returnurl, get_string('contactdpoviaprivacypolicy', 'tool_dataprivacy'), 0, \core\output\notification::NOTIFY_ERROR);
 }
 
-$mform = new tool_dataprivacy_data_request_form($url->out(false), ['manage' => !empty($manage)]);
-$mform->set_data(['type' => $requesttype]);
+$mform = new tool_dataprivacy_data_request_form($url->out(false), ['manage' => !empty($manage),
+    'persistent' => new \tool_dataprivacy\data_request(0, (object) ['type' => $requesttype])]);
 
 // Data request cancelled.
 if ($mform->is_cancelled()) {
index c91213c..c708a88 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 use tool_dataprivacy\api;
+use tool_dataprivacy\data_request;
 use tool_dataprivacy\local\helper;
 
 defined('MOODLE_INTERNAL') || die();
@@ -36,7 +37,10 @@ require_once($CFG->libdir.'/formslib.php');
  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  * @package tool_dataprivacy
  */
-class tool_dataprivacy_data_request_form extends moodleform {
+class tool_dataprivacy_data_request_form extends \core\form\persistent {
+
+    /** @var string Name of the persistent class. */
+    protected static $persistentclass = data_request::class;
 
     /** @var bool Flag to indicate whether this form is being rendered for managing data requests or for regular requests. */
     protected $manage = false;
@@ -96,14 +100,13 @@ class tool_dataprivacy_data_request_form extends moodleform {
             api::DATAREQUEST_TYPE_EXPORT => get_string('requesttypeexport', 'tool_dataprivacy'),
             api::DATAREQUEST_TYPE_DELETE => get_string('requesttypedelete', 'tool_dataprivacy')
         ];
+
         $mform->addElement('select', 'type', get_string('requesttype', 'tool_dataprivacy'), $options);
-        $mform->setType('type', PARAM_INT);
         $mform->addHelpButton('type', 'requesttype', 'tool_dataprivacy');
 
         // Request comments text area.
         $textareaoptions = ['cols' => 60, 'rows' => 10];
         $mform->addElement('textarea', 'comments', get_string('requestcomments', 'tool_dataprivacy'), $textareaoptions);
-        $mform->setType('type', PARAM_ALPHANUM);
         $mform->addHelpButton('comments', 'requestcomments', 'tool_dataprivacy');
 
         // Action buttons.
@@ -129,34 +132,49 @@ class tool_dataprivacy_data_request_form extends moodleform {
         }
     }
 
+    /**
+     * Get the default data. Unset the default userid if managing data requests
+     *
+     * @return stdClass
+     */
+    protected function get_default_data() {
+        $data = parent::get_default_data();
+        if ($this->manage) {
+            unset($data->userid);
+        }
+
+        return $data;
+    }
+
     /**
      * Form validation.
      *
-     * @param array $data
+     * @param stdClass $data
      * @param array $files
+     * @param array $errors
      * @return array
      * @throws coding_exception
      * @throws dml_exception
      */
-    public function validation($data, $files) {
+    public function extra_validation($data, $files, array &$errors) {
         global $USER;
-        $errors = [];
 
         $validrequesttypes = [
             api::DATAREQUEST_TYPE_EXPORT,
             api::DATAREQUEST_TYPE_DELETE
         ];
-        if (!in_array($data['type'], $validrequesttypes)) {
+        if (!in_array($data->type, $validrequesttypes)) {
             $errors['type'] = get_string('errorinvalidrequesttype', 'tool_dataprivacy');
         }
 
-        if (api::has_ongoing_request($data['userid'], $data['type'])) {
+        $userid = $data->userid;
+
+        if (api::has_ongoing_request($userid, $data->type)) {
             $errors['type'] = get_string('errorrequestalreadyexists', 'tool_dataprivacy');
         }
 
         // Check if current user can create data deletion request.
-        $userid = $data['userid'];
-        if ($data['type'] == api::DATAREQUEST_TYPE_DELETE) {
+        if ($data->type == api::DATAREQUEST_TYPE_DELETE) {
             if ($userid == $USER->id) {
                 if (!api::can_create_data_deletion_request_for_self()) {
                     $errors['type'] = get_string('errorcannotrequestdeleteforself', 'tool_dataprivacy');
index b5f3e60..63d33fe 100644 (file)
@@ -135,6 +135,7 @@ $string['effectiveretentionperioduser'] = '{$a} (since the last time the user ac
 $string['emailsalutation'] = 'Dear {$a},';
 $string['errorcannotrequestdeleteforself'] = 'You don\'t have permission to create deletion request for yourself.';
 $string['errorcannotrequestdeleteforother'] = 'You don\'t have permission to create deletion request for this user.';
+$string['errorinvalidrequestcomments'] = 'Please ensure your comment contains plain text only.';
 $string['errorinvalidrequestcreationmethod'] = 'Invalid request creation method!';
 $string['errorinvalidrequeststatus'] = 'Invalid request status!';
 $string['errorinvalidrequesttype'] = 'Invalid request type!';
index 88cd888..fd7569e 100644 (file)
@@ -770,7 +770,20 @@ class tool_uploadcourse_course {
 
         // Saving data.
         $this->data = $coursedata;
+
+        // Get enrolment data. Where the course already exists, we can also perform validation.
         $this->enrolmentdata = tool_uploadcourse_helper::get_enrolment_data($this->rawdata);
+        if ($exists) {
+            $errors = $this->validate_enrolment_data($coursedata['id'], $this->enrolmentdata);
+
+            if (!empty($errors)) {
+                foreach ($errors as $key => $message) {
+                    $this->error($key, $message);
+                }
+
+                return false;
+            }
+        }
 
         if (isset($this->rawdata['tags']) && strval($this->rawdata['tags']) !== '') {
             $this->data['tags'] = preg_split('/\s*,\s*/', trim($this->rawdata['tags']), -1, PREG_SPLIT_NO_EMPTY);
@@ -871,6 +884,71 @@ class tool_uploadcourse_course {
         $context->mark_dirty();
     }
 
+    /**
+     * Validate passed enrolment data against an existing course
+     *
+     * @param int $courseid
+     * @param array[] $enrolmentdata
+     * @return lang_string[] Errors keyed on error code
+     */
+    protected function validate_enrolment_data(int $courseid, array $enrolmentdata): array {
+        // Nothing to validate.
+        if (empty($enrolmentdata)) {
+            return [];
+        }
+
+        $errors = [];
+
+        $enrolmentplugins = tool_uploadcourse_helper::get_enrolment_plugins();
+        $instances = enrol_get_instances($courseid, false);
+
+        foreach ($enrolmentdata as $method => $options) {
+            $plugin = $enrolmentplugins[$method];
+
+            // Find matching instances by enrolment method.
+            $methodinstances = array_filter($instances, static function(stdClass $instance) use ($method) {
+                return (strcmp($instance->enrol, $method) == 0);
+            });
+
+            if (!empty($options['delete'])) {
+                // Ensure user is able to delete the instances.
+                foreach ($methodinstances as $methodinstance) {
+                    if (!$plugin->can_delete_instance($methodinstance)) {
+                        $errors['errorcannotdeleteenrolment'] = new lang_string('errorcannotdeleteenrolment', 'tool_uploadcourse',
+                            $plugin->get_instance_name($methodinstance));
+
+                        break;
+                    }
+                }
+            } else if (!empty($options['disable'])) {
+                // Ensure user is able to toggle instance statuses.
+                foreach ($methodinstances as $methodinstance) {
+                    if (!$plugin->can_hide_show_instance($methodinstance)) {
+                        $errors['errorcannotdisableenrolment'] =
+                            new lang_string('errorcannotdisableenrolment', 'tool_uploadcourse',
+                                $plugin->get_instance_name($methodinstance));
+
+                        break;
+                    }
+                }
+            } else {
+                // Ensure user is able to create/update instance.
+                $methodinstance = empty($methodinstances) ? null : reset($methodinstances);
+                if ((empty($methodinstance) && !$plugin->can_add_instance($courseid)) ||
+                        (!empty($methodinstance) && !$plugin->can_edit_instance($methodinstance))) {
+
+                    $errors['errorcannotcreateorupdateenrolment'] =
+                        new lang_string('errorcannotcreateorupdateenrolment', 'tool_uploadcourse',
+                            $plugin->get_instance_name($methodinstance));
+
+                    break;
+                }
+            }
+        }
+
+        return $errors;
+    }
+
     /**
      * Add the enrolment data for the course.
      *
@@ -907,7 +985,16 @@ class tool_uploadcourse_course {
                 foreach ($instances as $instance) {
                     if ($instance->enrol == $enrolmethod) {
                         $plugin = $enrolmentplugins[$instance->enrol];
-                        $plugin->delete_instance($instance);
+
+                        // Ensure user is able to delete the instance.
+                        if ($plugin->can_delete_instance($instance)) {
+                            $plugin->delete_instance($instance);
+                        } else {
+                            $this->error('errorcannotdeleteenrolment',
+                                new lang_string('errorcannotdeleteenrolment', 'tool_uploadcourse',
+                                    $plugin->get_instance_name($instance)));
+                        }
+
                         break;
                     }
                 }
@@ -916,22 +1003,37 @@ class tool_uploadcourse_course {
                 foreach ($instances as $instance) {
                     if ($instance->enrol == $enrolmethod) {
                         $plugin = $enrolmentplugins[$instance->enrol];
-                        $plugin->update_status($instance, ENROL_INSTANCE_DISABLED);
-                        $enrol_updated = true;
+
+                        // Ensure user is able to toggle instance status.
+                        if ($plugin->can_hide_show_instance($instance)) {
+                            $plugin->update_status($instance, ENROL_INSTANCE_DISABLED);
+                        } else {
+                            $this->error('errorcannotdisableenrolment',
+                                new lang_string('errorcannotdisableenrolment', 'tool_uploadcourse',
+                                    $plugin->get_instance_name($instance)));
+                        }
+
                         break;
                     }
                 }
             } else {
-                $plugin = null;
-                if (empty($instance)) {
-                    $plugin = $enrolmentplugins[$enrolmethod];
+                // Create/update enrolment.
+                $plugin = $enrolmentplugins[$enrolmethod];
+
+                // Ensure user is able to create/update instance.
+                if (empty($instance) && $plugin->can_add_instance($course->id)) {
                     $instance = new stdClass();
                     $instance->id = $plugin->add_default_instance($course);
                     $instance->roleid = $plugin->get_config('roleid');
                     $instance->status = ENROL_INSTANCE_ENABLED;
-                } else {
-                    $plugin = $enrolmentplugins[$instance->enrol];
+                } else if (!empty($instance) && $plugin->can_edit_instance($instance)) {
                     $plugin->update_status($instance, ENROL_INSTANCE_ENABLED);
+                } else {
+                    $this->error('errorcannotcreateorupdateenrolment',
+                        new lang_string('errorcannotcreateorupdateenrolment', 'tool_uploadcourse',
+                            $plugin->get_instance_name($instance)));
+
+                    break;
                 }
 
                 // Now update values.
index 1011c37..a91e790 100644 (file)
@@ -175,7 +175,7 @@ class tool_uploadcourse_helper {
      *
      * The result is cached for faster execution.
      *
-     * @return array
+     * @return enrol_plugin[]
      */
     public static function get_enrolment_plugins() {
         $cache = cache::make('tool_uploadcourse', 'helper');
index b44b4f3..9a96d10 100644 (file)
@@ -78,6 +78,9 @@ $string['defaultvalues'] = 'Default course values';
 $string['defaultvaluescustomfieldcategory'] = 'Default values for \'{$a}\'';
 $string['encoding'] = 'Encoding';
 $string['encoding_help'] = 'Encoding of the CSV file.';
+$string['errorcannotcreateorupdateenrolment'] = 'Cannot create or update enrolment method \'{$a}\'';
+$string['errorcannotdeleteenrolment'] = 'Cannot delete enrolment method \'{$a}\'';
+$string['errorcannotdisableenrolment'] = 'Cannot disable enrolment method \'{$a}\'';
 $string['errorwhilerestoringcourse'] = 'Error while restoring the course';
 $string['errorwhiledeletingcourse'] = 'Error while deleting the course';
 $string['generatedshortnameinvalid'] = 'The generated shortname is invalid';
index 7d811cb..9bd1f4e 100644 (file)
@@ -1055,6 +1055,9 @@ class tool_uploadcourse_course_testcase extends advanced_testcase {
     public function test_enrolment_data() {
         $this->resetAfterTest(true);
 
+        // We need to set the current user as one with the capability to edit manual enrolment instances in the new course.
+        $this->setAdminUser();
+
         $mode = tool_uploadcourse_processor::MODE_CREATE_NEW;
         $updatemode = tool_uploadcourse_processor::UPDATE_ALL_WITH_DATA_ONLY;
         $data = array('shortname' => 'c1', 'summary' => 'S', 'fullname' => 'FN', 'category' => '1');
@@ -1081,6 +1084,123 @@ class tool_uploadcourse_course_testcase extends advanced_testcase {
         $this->assertEquals(strtotime('12th July 2013'), $enroldata['manual']->enrolenddate);
     }
 
+    /**
+     * Data provider for testing enrolment errors
+     *
+     * @return array
+     */
+    public function enrolment_uploaddata_error_provider(): array {
+        return [
+            ['errorcannotcreateorupdateenrolment', [
+                'shortname' => 'C1',
+                'enrolment_1' => 'manual',
+            ]],
+            ['errorcannotdeleteenrolment', [
+                'shortname' => 'C1',
+                'enrolment_1' => 'manual',
+                'enrolment_1_delete' => '1',
+            ]],
+            ['errorcannotdisableenrolment', [
+                'shortname' => 'C1',
+                'enrolment_1' => 'manual',
+                'enrolment_1_disable' => '1',
+            ]],
+        ];
+    }
+
+    /**
+     * Test that user without permission, cannot modify enrolment instances when creating courses
+     *
+     * @param string $expectederror
+     * @param array $uploaddata
+     *
+     * @dataProvider enrolment_uploaddata_error_provider
+     */
+    public function test_enrolment_error_create_course(string $expectederror, array $uploaddata): void {
+        global $DB;
+
+        $this->resetAfterTest();
+
+        // Create category in which to create the new course.
+        $category = $this->getDataGenerator()->create_category();
+        $categorycontext = context_coursecat::instance($category->id);
+
+        $user = $this->getDataGenerator()->create_user();
+        $this->setUser($user);
+
+        // Assign the user as a manager of the category, disable ability to configure manual enrolment instances.
+        $roleid = $DB->get_field('role', 'id', ['shortname' => 'manager']);
+        role_assign($roleid, $user->id, $categorycontext);
+        role_change_permission($roleid, $categorycontext, 'enrol/manual:config', CAP_PROHIBIT);
+
+        $mode = tool_uploadcourse_processor::MODE_CREATE_NEW;
+        $updatemode = tool_uploadcourse_processor::UPDATE_ALL_WITH_DATA_ONLY;
+
+        $upload = new tool_uploadcourse_course($mode, $updatemode, array_merge($uploaddata, [
+            'category' => $category->id,
+            'fullname' => 'My course',
+        ]));
+
+        // Enrolment validation isn't performed during 'prepare' for new courses.
+        $this->assertTrue($upload->prepare());
+        $upload->proceed();
+
+        $errors = $upload->get_errors();
+        $this->assertArrayHasKey($expectederror, $errors);
+
+        $this->assertEquals(get_string($expectederror, 'tool_uploadcourse', 'Manual enrolments'),
+            (string) $errors[$expectederror]);
+    }
+
+    /**
+     * Test that user without permission, cannot modify enrolment instances when updating courses
+     *
+     * @param string $expectederror
+     * @param array $uploaddata
+     *
+     * @dataProvider enrolment_uploaddata_error_provider
+     */
+    public function test_enrolment_error_update_course(string $expectederror, array $uploaddata): void {
+        global $DB;
+
+        $this->resetAfterTest();
+
+        // Create category in which to create the new course.
+        $category = $this->getDataGenerator()->create_category();
+        $categorycontext = context_coursecat::instance($category->id);
+
+        $course = $this->getDataGenerator()->create_course([
+            'category' => $category->id,
+            'shortname' => $uploaddata['shortname'],
+        ]);
+
+        $user = $this->getDataGenerator()->create_user();
+        $this->setUser($user);
+
+        // Assign the user as a manager of the category, disable ability to configure manual enrolment instances.
+        $roleid = $DB->get_field('role', 'id', ['shortname' => 'manager']);
+        role_assign($roleid, $user->id, $categorycontext);
+        role_change_permission($roleid, $categorycontext, 'enrol/manual:config', CAP_PROHIBIT);
+
+        // Sanity check.
+        $instances = enrol_get_instances($course->id, true);
+        $this->assertCount(1, $instances);
+        $this->assertEquals('manual', reset($instances)->enrol);
+
+        $mode = tool_uploadcourse_processor::MODE_UPDATE_ONLY;
+        $updatemode = tool_uploadcourse_processor::UPDATE_ALL_WITH_DATA_ONLY;
+
+        $upload = new tool_uploadcourse_course($mode, $updatemode, $uploaddata);
+
+        $this->assertFalse($upload->prepare());
+
+        $errors = $upload->get_errors();
+        $this->assertArrayHasKey($expectederror, $errors);
+
+        $this->assertEquals(get_string($expectederror, 'tool_uploadcourse', 'Manual enrolments'),
+            (string) $errors[$expectederror]);
+    }
+
     /**
      * Test upload processing of course custom fields
      */
index 5be936a..e1f5986 100644 (file)
Binary files a/admin/tool/usertours/amd/build/tour.min.js and b/admin/tool/usertours/amd/build/tour.min.js differ
index bc48f5c..382273a 100644 (file)
Binary files a/admin/tool/usertours/amd/build/tour.min.js.map and b/admin/tool/usertours/amd/build/tour.min.js.map differ
index 4a2fd90..4e6936a 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 import $ from 'jquery';
+import * as Aria from 'core/aria';
 import Popper from 'core/popper';
 
 /**
@@ -594,7 +595,7 @@ export default class Tour {
             });
         }
 
-        this.listeners.forEach(function (listener) {
+        this.listeners.forEach(function(listener) {
             listener.node.on.apply(listener.node, listener.args);
         });
 
@@ -1498,7 +1499,7 @@ export default class Tour {
             let hidden = child.attr(attrName);
             if (!hidden) {
                 child.attr(stateHolder, true);
-                child.attr(attrName, true);
+                Aria.hide(child);
             }
         };
 
@@ -1519,12 +1520,11 @@ export default class Tour {
      */
     accessibilityHide() {
         let stateHolder = 'data-has-hidden';
-        let attrName = 'aria-hidden';
         let showFunction = function(child) {
             let hidden = child.attr(stateHolder);
             if (typeof hidden !== 'undefined') {
                 child.removeAttr(stateHolder);
-                child.removeAttr(attrName);
+                Aria.unhide(child);
             }
         };
 
index c37ab36..ea21a12 100644 (file)
@@ -93,6 +93,17 @@ class check_defaults extends XMLDBCheckAction {
                     $physicaldefault = null;
                 }
 
+                // For number fields there are issues with type differences, so let's convert
+                // everything to a float.
+                if ($xmldbfield->getType() === XMLDB_TYPE_NUMBER) {
+                    if ($physicaldefault !== null) {
+                        $physicaldefault = (float) $physicaldefault;
+                    }
+                    if ($xmldbdefault !== null) {
+                        $xmldbdefault = (float) $xmldbdefault;
+                    }
+                }
+
                 // There *is* a default and it's wrong.
                 if ($physicaldefault !== $xmldbdefault) {
                     $xmldbtext = self::display_default($xmldbdefault);
index 131c782..faea917 100644 (file)
@@ -624,9 +624,25 @@ class manager {
                         LEFT JOIN {context} ctx ON ap.contextid = ctx.id
                             WHERE ctx.id IS NULL)");
 
-        $contextsql = "SELECT id FROM {context} ctx";
-        $DB->delete_records_select('analytics_predictions', "contextid NOT IN ($contextsql)");
-        $DB->delete_records_select('analytics_indicator_calc', "contextid NOT IN ($contextsql)");
+        // Cleanup analaytics predictions/calcs with MySQL friendly sub-select.
+        $DB->execute("DELETE FROM {analytics_predictions} WHERE id IN (
+                        SELECT oldpredictions.id
+                        FROM (
+                            SELECT p.id
+                            FROM {analytics_predictions} p
+                            LEFT JOIN {context} ctx ON p.contextid = ctx.id
+                            WHERE ctx.id IS NULL
+                        ) oldpredictions
+                    )");
+
+        $DB->execute("DELETE FROM {analytics_indicator_calc} WHERE id IN (
+                        SELECT oldcalcs.id FROM (
+                            SELECT c.id
+                            FROM {analytics_indicator_calc} c
+                            LEFT JOIN {context} ctx ON c.contextid = ctx.id
+                            WHERE ctx.id IS NULL
+                        ) oldcalcs
+                    )");
 
         // Clean up stuff that depends on analysable ids that do not exist anymore.
 
index b3fe2fb..83924f7 100644 (file)
@@ -49,6 +49,6 @@ class behat_auth_email extends behat_base {
         $confirmationpath = $confirmationurl->out_as_local_url(false);
         $url = $confirmationpath .  '?' . 'data='. $secret .'/'. $username;
 
-        $this->getSession()->visit($this->locate_path($url));
+        $this->execute('behat_general::i_visit', [$url]);
     }
 }
index e7b65e5..6233454 100644 (file)
@@ -58,7 +58,7 @@ class behat_auth extends behat_base {
         }
 
         // Visit login page.
-        $this->getSession()->visit($this->locate_path($loginurl->out_as_local_url()));
+        $this->execute('behat_general::i_visit', [$loginurl]);
 
         // Enter username and password.
         $this->execute('behat_forms::i_set_the_field_to', array('Username', $this->escape($username)));
index f80390b..5ebb83a 100644 (file)
@@ -54,3 +54,17 @@ Feature: Authentication
       | 0            | not see |
       | 1            | see     |
       | 2            | see     |
+
+  @javascript @accessibility
+  Scenario: Login page must be accessible
+    When I am on site homepage
+    # The following tests are all provided to ensure that the accessibility tests themselves are tested.
+    # In normal tests only one of the following is required.
+    Then the page should meet accessibility standards
+    And the page should meet "wcag131, wcag412" accessibility standards
+    And the page should meet accessibility standards with "wcag131, wcag412" extra tests
+
+    And I follow "Log in"
+    And the page should meet accessibility standards
+    And the page should meet "wcag131, wcag412" accessibility standards
+    And the page should meet accessibility standards with "wcag131, wcag412" extra tests
index a5ead37..fe5f575 100644 (file)
@@ -56,7 +56,7 @@ class behat_backup extends behat_base {
         // table elements are used, and we need to catch exceptions contantly.
 
         // Go to homepage.
-        $this->getSession()->visit($this->locate_path('/?redirect=0'));
+        $this->execute('behat_general::i_visit', ['/?redirect=0']);
         $this->execute("behat_general::wait_until_the_page_is_ready");
 
         // Click the course link.
@@ -98,7 +98,7 @@ class behat_backup extends behat_base {
         // table elements are used, and we need to catch exceptions contantly.
 
         // Go to homepage.
-        $this->getSession()->visit($this->locate_path('/?redirect=0'));
+        $this->execute('behat_general::i_visit', ['/?redirect=0']);
 
         // Click the course link.
         $this->execute("behat_general::click_link", $backupcourse);
@@ -134,7 +134,7 @@ class behat_backup extends behat_base {
         // table elements are used, and we need to catch exceptions contantly.
 
         // Go to homepage.
-        $this->getSession()->visit($this->locate_path('/?redirect=0'));
+        $this->execute('behat_general::i_visit', ['/?redirect=0']);
         $this->execute("behat_general::wait_until_the_page_is_ready");
 
         // Click the course link.
index 7ee4ae4..8e18c99 100644 (file)
Binary files a/blocks/myoverview/amd/build/view.min.js and b/blocks/myoverview/amd/build/view.min.js differ
index 581a46a..723993f 100644 (file)
Binary files a/blocks/myoverview/amd/build/view.min.js.map and b/blocks/myoverview/amd/build/view.min.js.map differ
index 9d637b7..524c4ba 100644 (file)
@@ -33,6 +33,7 @@ define(
     'core_course/events',
     'block_myoverview/selectors',
     'core/paged_content_events',
+    'core/aria',
 ],
 function(
     $,
@@ -44,7 +45,8 @@ function(
     Templates,
     CourseEvents,
     Selectors,
-    PagedContentEvents
+    PagedContentEvents,
+    Aria
 ) {
 
     var SELECTORS = {
@@ -174,12 +176,14 @@ function(
      */
     var hideFavouriteIcon = function(root, courseId) {
         var iconContainer = getFavouriteIconContainer(root, courseId);
+
         var isFavouriteIcon = iconContainer.find(SELECTORS.ICON_IS_FAVOURITE);
         isFavouriteIcon.addClass('hidden');
-        isFavouriteIcon.attr('aria-hidden', true);
+        Aria.hide(isFavouriteIcon);
+
         var notFavourteIcon = iconContainer.find(SELECTORS.ICON_NOT_FAVOURITE);
         notFavourteIcon.removeClass('hidden');
-        notFavourteIcon.attr('aria-hidden', false);
+        Aria.unhide(notFavourteIcon);
     };
 
     /**
@@ -190,12 +194,14 @@ function(
      */
     var showFavouriteIcon = function(root, courseId) {
         var iconContainer = getFavouriteIconContainer(root, courseId);
+
         var isFavouriteIcon = iconContainer.find(SELECTORS.ICON_IS_FAVOURITE);
         isFavouriteIcon.removeClass('hidden');
-        isFavouriteIcon.attr('aria-hidden', false);
+        Aria.unhide(isFavouriteIcon);
+
         var notFavourteIcon = iconContainer.find(SELECTORS.ICON_NOT_FAVOURITE);
         notFavourteIcon.addClass('hidden');
-        notFavourteIcon.attr('aria-hidden', true);
+        Aria.hide(notFavourteIcon);
     };
 
     /**
index dead3b8..7be3a49 100644 (file)
Binary files a/blocks/navigation/amd/build/ajax_response_renderer.min.js and b/blocks/navigation/amd/build/ajax_response_renderer.min.js differ
index 2bc3203..c729061 100644 (file)
Binary files a/blocks/navigation/amd/build/ajax_response_renderer.min.js.map and b/blocks/navigation/amd/build/ajax_response_renderer.min.js.map differ
index 99f2e28..e92ed46 100644 (file)
  * @copyright  2015 John Okely <john@moodle.com>
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-define(['jquery', 'core/templates', 'core/notification', 'core/url'], function($, Templates, Notification, Url) {
+define([
+    'jquery',
+    'core/templates',
+    'core/notification',
+    'core/url',
+    'core/aria',
+], function(
+    $,
+    Templates,
+    Notification,
+    Url,
+    Aria
+) {
 
     // Mappings for the different types of nodes coming from the navigation.
     // Copied from lib/navigationlib.php navigation_node constants.
@@ -43,7 +55,7 @@ define(['jquery', 'core/templates', 'core/notification', 'core/url'], function($
     function buildDOM(rootElement, nodes) {
         var ul = $('<ul></ul>');
         ul.attr('role', 'group');
-        ul.attr('aria-hidden', true);
+        Aria.hide(ul);
 
         $.each(nodes, function(index, node) {
             if (typeof node !== 'object') {
@@ -153,7 +165,7 @@ define(['jquery', 'core/templates', 'core/notification', 'core/url'], function($
                 var group = element.find('#' + item.attr('aria-owns'));
 
                 item.attr('aria-expanded', true);
-                group.attr('aria-hidden', false);
+                Aria.unhide(group);
             } else {
                 if (element.parent().hasClass('contains_branch')) {
                     element.parent().removeClass('contains_branch');
index 4d8e69f..54f17c8 100644 (file)
Binary files a/blocks/recentlyaccessedcourses/amd/build/main.min.js and b/blocks/recentlyaccessedcourses/amd/build/main.min.js differ
index 6fdffbc..7d74c0f 100644 (file)
Binary files a/blocks/recentlyaccessedcourses/amd/build/main.min.js.map and b/blocks/recentlyaccessedcourses/amd/build/main.min.js.map differ
index ca3186b..9af85cb 100644 (file)
@@ -32,6 +32,7 @@ define(
         'core/templates',
         'core_course/events',
         'core_course/repository',
+        'core/aria',
     ],
     function(
         $,
@@ -41,7 +42,8 @@ define(
         PagedContentPagingBar,
         Templates,
         CourseEvents,
-        CoursesRepository
+        CoursesRepository,
+        Aria
     ) {
 
         // Constants.
@@ -96,7 +98,7 @@ define(
             var pagingBar = root.find(SELECTORS.PAGING_BAR);
             pagingBar.css('opacity', 1);
             pagingBar.css('visibility', 'visible');
-            pagingBar.attr('aria-hidden', 'false');
+            Aria.unhide(pagingBar);
         };
 
         /**
@@ -108,7 +110,7 @@ define(
             var pagingBar = root.find(SELECTORS.PAGING_BAR);
             pagingBar.css('opacity', 0);
             pagingBar.css('visibility', 'hidden');
-            pagingBar.attr('aria-hidden', 'true');
+            Aria.hide(pagingBar);
         };
 
         /**
index 1c6cb4c..e089afc 100644 (file)
@@ -121,7 +121,7 @@ class behat_calendar extends behat_base {
      */
     public function i_view_the_calendar_for($month, $year) {
         $time = make_timestamp($year, $month, 1);
-        $this->getSession()->visit($this->locate_path('/calendar/view.php?view=month&course=1&time='.$time));
+        $this->execute('behat_general::i_visit', ['/calendar/view.php?view=month&course=1&time='.$time]);
 
     }
 
@@ -134,6 +134,6 @@ class behat_calendar extends behat_base {
      */
     public function i_am_viewing_site_calendar() {
         $url = new moodle_url('/calendar/view.php', ['view' => 'month']);
-        $this->getSession()->visit($this->locate_path($url->out_as_local_url(false)));
+        $this->execute('behat_general::i_visit', [$url]);
     }
 }
index 0ea080e..da00bcf 100644 (file)
Binary files a/course/amd/build/activitychooser.min.js and b/course/amd/build/activitychooser.min.js differ
index 6519c83..b4be364 100644 (file)
Binary files a/course/amd/build/activitychooser.min.js.map and b/course/amd/build/activitychooser.min.js.map differ
index a1d1bbc..ab56979 100644 (file)
@@ -133,7 +133,18 @@ const registerListenerEvents = (courseId, chooserConfig) => {
                 const sectionModal = buildModal(bodyPromise, footerData);
 
                 // Now we have a modal we should start fetching data.
-                const data = await fetchModuleData();
+                // If an error occurs while fetching the data, display the error within the modal.
+                const data = await fetchModuleData().catch(async(e) => {
+                    const errorTemplateData = {
+                        'errormessage': e.message
+                    };
+                    bodyPromiseResolver(await Templates.render('core_course/local/activitychooser/error', errorTemplateData));
+                });
+
+                // Early return if there is no module data.
+                if (!data) {
+                    return;
+                }
 
                 // Apply the section id to all the module instance links.
                 const builtModuleData = sectionIdMapper(data, caller.dataset.sectionid, caller.dataset.sectionreturnid);
index b1dfddd..20209ae 100644 (file)
@@ -105,6 +105,11 @@ class content_item_service {
             return $favmods;
         }
 
+        // Make sure the guest user exists in the database.
+        if (!\core_user::get_user($CFG->siteguest)) {
+            throw new \coding_exception('The guest user does not exist in the database.');
+        }
+
         $favourites = $this->get_content_favourites(self::RECOMMENDATION_PREFIX, \context_user::instance($CFG->siteguest));
 
         $recommendationcache->set($CFG->siteguest, $favourites);
index 0e918c9..076b99f 100644 (file)
@@ -15,7 +15,7 @@
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Specialised restore for format_topics
+ * Specialised restore for Topics course format.
  *
  * @package   format_topics
  * @category  backup
@@ -26,9 +26,9 @@
 defined('MOODLE_INTERNAL') || die();
 
 /**
- * Specialised restore for format_topics
+ * Specialised restore for Topics course format.
  *
- * Processes 'numsections' from the old backup files and hides sections that used to be "orphaned"
+ * Processes 'numsections' from the old backup files and hides sections that used to be "orphaned".
  *
  * @package   format_topics
  * @category  backup
@@ -53,7 +53,7 @@ class restore_format_topics_plugin extends restore_format_plugin {
     }
 
     /**
-     * Creates a dummy path element in order to be able to execute code after restore
+     * Creates a dummy path element in order to be able to execute code after restore.
      *
      * @return restore_path_element[]
      */
@@ -76,16 +76,20 @@ class restore_format_topics_plugin extends restore_format_plugin {
     }
 
     /**
-     * Dummy process method
+     * Dummy process method.
+     *
+     * @return void
      */
     public function process_dummy_course() {
 
     }
 
     /**
-     * Executed after course restore is complete
+     * Executed after course restore is complete.
+     *
+     * This method is only executed if course configuration was overridden.
      *
-     * This method is only executed if course configuration was overridden
+     * @return void
      */
     public function after_restore_course() {
         global $DB;
index 5f365c1..dc769e3 100644 (file)
 //
 // You should have received a copy of the GNU General Public License
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
 /**
- * Privacy Subsystem implementation for format_topics.
+ * Privacy Subsystem implementation for Topics course format.
  *
  * @package    format_topics
  * @copyright  2018 Carlos Escobedo <carlos@moodle.com>
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
+
 namespace format_topics\privacy;
+
 defined('MOODLE_INTERNAL') || die();
+
+use core_privacy\local\metadata\null_provider;
+
 /**
- * Privacy Subsystem for format_topics implementing null_provider.
+ * Privacy Subsystem for Topics course format implementing null_provider.
  *
  * @copyright  2018 Carlos Escobedo <carlos@moodle.com>
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-class provider implements \core_privacy\local\metadata\null_provider {
+class provider implements null_provider {
+
     /**
      * Get the language string identifier with the component's language
      * file to explain why this plugin stores no data.
      *
      * @return  string
      */
-    public static function get_reason() : string {
+    public static function get_reason(): string {
         return 'privacy:metadata';
     }
 }
\ No newline at end of file
index 131f927..d46360f 100644 (file)
@@ -15,7 +15,7 @@
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Upgrade scripts for course format "Topics"
+ * Upgrade scripts for Topics course format.
  *
  * @package    format_topics
  * @copyright  2017 Marina Glancy
@@ -25,9 +25,9 @@
 defined('MOODLE_INTERNAL') || die();
 
 /**
- * Upgrade script for format_topics
+ * Upgrade script for Topics course format.
  *
- * @param int $oldversion the version we are upgrading from
+ * @param int|float $oldversion the version we are upgrading from
  * @return bool result
  */
 function xmldb_format_topics_upgrade($oldversion) {
index 8d56504..ff122a8 100644 (file)
@@ -1,11 +1,11 @@
-// Javascript functions for Topics course format
+// Javascript functions for Topics course format.
 
 M.course = M.course || {};
 
 M.course.format = M.course.format || {};
 
 /**
- * Get sections config for this format
+ * Get sections config for this format.
  *
  * The section structure is:
  * <ul class="topics">
@@ -18,50 +18,48 @@ M.course.format = M.course.format || {};
  */
 M.course.format.get_config = function() {
     return {
-        container_node : 'ul',
-        container_class : 'topics',
-        section_node : 'li',
-        section_class : 'section'
+        container_node: 'ul',
+        container_class: 'topics',
+        section_node: 'li',
+        section_class: 'section'
     };
-}
+};
 
 /**
- * Swap section
+ * Swap section.
  *
  * @param {YUI} Y YUI3 instance
  * @param {string} node1 node to swap to
  * @param {string} node2 node to swap with
- * @return {NodeList} section list
  */
 M.course.format.swap_sections = function(Y, node1, node2) {
     var CSS = {
-        COURSECONTENT : 'course-content',
-        SECTIONADDMENUS : 'section_add_menus'
+        COURSECONTENT: 'course-content',
+        SECTIONADDMENUS: 'section_add_menus'
     };
 
-    var sectionlist = Y.Node.all('.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y));
+    var sectionlist = Y.Node.all('.' + CSS.COURSECONTENT + ' ' + M.course.format.get_section_selector(Y));
     // Swap the non-ajax menus, noting these are not always present (depends on theme and user prefs).
-    if (sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS)) {
-        sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.'+CSS.SECTIONADDMENUS));
+    if (sectionlist.item(node1).one('.' + CSS.SECTIONADDMENUS)) {
+        sectionlist.item(node1).one('.' + CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.' + CSS.SECTIONADDMENUS));
     }
-}
+};
 
 /**
- * Process sections after ajax response
+ * Process sections after ajax response.
  *
  * @param {YUI} Y YUI3 instance
  * @param {NodeList} sectionlist of sections
  * @param {array} response ajax response
  * @param {string} sectionfrom first affected section
  * @param {string} sectionto last affected section
- * @return void
  */
 M.course.format.process_sections = function(Y, sectionlist, response, sectionfrom, sectionto) {
     var CSS = {
-        SECTIONNAME : 'sectionname'
+        SECTIONNAME: 'sectionname'
     },
     SELECTORS = {
-        SECTIONLEFTSIDE : '.left .section-handle .icon'
+        SECTIONLEFTSIDE: '.left .section-handle .icon'
     };
 
     if (response.action == 'move') {
@@ -78,15 +76,15 @@ M.course.format.process_sections = function(Y, sectionlist, response, sectionfro
         for (var i = sectionfrom; i <= sectionto; i++) {
             // Update section title.
             var content = Y.Node.create('<span>' + response.sectiontitles[i] + '</span>');
-            sectionlist.item(i).all('.'+CSS.SECTIONNAME).setHTML(content);
+            sectionlist.item(i).all('.' + CSS.SECTIONNAME).setHTML(content);
             // Update the drag handle.
             ele = sectionlist.item(i).one(SELECTORS.SECTIONLEFTSIDE).ancestor('.section-handle');
             str = ele.getAttribute('title');
             stridx = str.lastIndexOf(' ');
-            newstr = str.substr(0, stridx +1) + i;
+            newstr = str.substr(0, stridx + 1) + i;
             ele.setAttribute('title', newstr);
             // Update the aria-label for the section.
             sectionlist.item(i).setAttribute('aria-label', content.get('innerText').trim());
         }
     }
-}
+};
index 7af2851..065798c 100644 (file)
@@ -15,7 +15,7 @@
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Topics course format.  Display the whole course as "topics" made of modules.
+ * Topics course format. Display the whole course as "topics" made of modules.
  *
  * @package format_topics
  * @copyright 2006 The Open University
@@ -28,20 +28,20 @@ defined('MOODLE_INTERNAL') || die();
 require_once($CFG->libdir.'/filelib.php');
 require_once($CFG->libdir.'/completionlib.php');
 
-// Horrible backwards compatible parameter aliasing..
+// Horrible backwards compatible parameter aliasing.
 if ($topic = optional_param('topic', 0, PARAM_INT)) {
     $url = $PAGE->url;
     $url->param('section', $topic);
     debugging('Outdated topic param passed to course/view.php', DEBUG_DEVELOPER);
     redirect($url);
 }
-// End backwards-compatible aliasing..
+// End backwards-compatible aliasing.
 
 $context = context_course::instance($course->id);
 // Retrieve course format option fields and add them to the $course object.
 $course = course_get_format($course)->get_course();
 
-if (($marker >=0) && has_capability('moodle/course:setcurrentsection', $context) && confirm_sesskey()) {
+if (($marker >= 0) && has_capability('moodle/course:setcurrentsection', $context) && confirm_sesskey()) {
     $course->marker = $marker;
     course_set_marker($course->id, $marker);
 }
@@ -57,5 +57,5 @@ if (!empty($displaysection)) {
     $renderer->print_multiple_section_page($course, null, null, null, null);
 }
 
-// Include course format js module
+// Include course format js module.
 $PAGE->requires->js('/course/format/topics/format.js');
index 0b7c16c..6f5306b 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
@@ -16,7 +15,7 @@
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Strings for component 'format_topics', language 'en', branch 'MOODLE_20_STABLE'
+ * Strings for component Topics course format.
  *
  * @package   format_topics
  * @copyright 1999 onwards Martin Dougiamas  {@link http://moodle.com}
index 547f218..d114994 100644 (file)
@@ -15,7 +15,7 @@
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * This file contains main class for the course format Topic
+ * This file contains main class for Topics course format.
  *
  * @since     Moodle 2.0
  * @package   format_topics
 defined('MOODLE_INTERNAL') || die();
 require_once($CFG->dirroot. '/course/format/lib.php');
 
+use core\output\inplace_editable;
+
 /**
- * Main class for the Topics course format
+ * Main class for the Topics course format.
  *
  * @package    format_topics
  * @copyright  2012 Marina Glancy
@@ -36,7 +38,7 @@ require_once($CFG->dirroot. '/course/format/lib.php');
 class format_topics extends format_base {
 
     /**
-     * Returns true if this course format uses sections
+     * Returns true if this course format uses sections.
      *
      * @return bool
      */
@@ -47,7 +49,7 @@ class format_topics extends format_base {
     /**
      * Returns the display name of the given section that the course prefers.
      *
-     * Use section name is specified by user. Otherwise use default ("Topic #")
+     * Use section name is specified by user. Otherwise use default ("Topic #").
      *
      * @param int|stdClass $section Section object from database or just field section.section
      * @return string Display name that the course format prefers, e.g. "Topic 2"
@@ -56,7 +58,7 @@ class format_topics extends format_base {
         $section = $this->get_section($section);
         if ((string)$section->name !== '') {
             return format_string($section->name, true,
-                    array('context' => context_course::instance($this->courseid)));
+                ['context' => context_course::instance($this->courseid)]);
         } else {
             return $this->get_default_section_name($section);
         }
@@ -84,7 +86,7 @@ class format_topics extends format_base {
     }
 
     /**
-     * The URL to use for the specified course (with section)
+     * The URL to use for the specified course (with section).
      *
      * @param int|stdClass $section Section object from database or just field course_sections.section
      *     if omitted the course view page is returned
@@ -93,10 +95,10 @@ class format_topics extends format_base {
      *     'sr' (int) used by multipage formats to specify to which section to return
      * @return null|moodle_url
      */
-    public function get_view_url($section, $options = array()) {
+    public function get_view_url($section, $options = []) {
         global $CFG;
         $course = $this->get_course();
-        $url = new moodle_url('/course/view.php', array('id' => $course->id));
+        $url = new moodle_url('/course/view.php', ['id' => $course->id]);
 
         $sr = null;
         if (array_key_exists('sr', $options)) {
@@ -131,7 +133,7 @@ class format_topics extends format_base {
     }
 
     /**
-     * Returns the information about the ajax support in the given source format
+     * Returns the information about the ajax support in the given source format.
      *
      * The returned object's property (boolean)capable indicates that
      * the course format supports Moodle course ajax features.
@@ -145,14 +147,15 @@ class format_topics extends format_base {
     }
 
     /**
-     * Loads all of the course sections into the navigation
+     * Loads all of the course sections into the navigation.
      *
      * @param global_navigation $navigation
      * @param navigation_node $node The course node within the navigation
+     * @return void
      */
     public function extend_course_navigation($navigation, navigation_node $node) {
         global $PAGE;
-        // if section is specified in course/view.php, make sure it is expanded in navigation
+        // If section is specified in course/view.php, make sure it is expanded in navigation.
         if ($navigation->includesectionnum === false) {
             $selectedsection = optional_param('section', null, PARAM_INT);
             if ($selectedsection !== null && (!defined('AJAX_SCRIPT') || AJAX_SCRIPT == '0') &&
@@ -161,7 +164,7 @@ class format_topics extends format_base {
             }
         }
 
-        // check if there are callbacks to extend course navigation
+        // Check if there are callbacks to extend course navigation.
         parent::extend_course_navigation($navigation, $node);
 
         // We want to remove the general section if it is empty.
@@ -179,15 +182,15 @@ class format_topics extends format_base {
     }
 
     /**
-     * Custom action after section has been moved in AJAX mode
+     * Custom action after section has been moved in AJAX mode.
      *
      * Used in course/rest.php
      *
      * @return array This will be passed in ajax respose
      */
-    function ajax_section_move() {
+    public function ajax_section_move() {
         global $PAGE;
-        $titles = array();
+        $titles = [];
         $course = $this->get_course();
         $modinfo = get_fast_modinfo($course);
         $renderer = $this->get_renderer($PAGE);
@@ -196,24 +199,24 @@ class format_topics extends format_base {
                 $titles[$number] = $renderer->section_title($section, $course);
             }
         }
-        return array('sectiontitles' => $titles, 'action' => 'move');
+        return ['sectiontitles' => $titles, 'action' => 'move'];
     }
 
     /**
-     * Returns the list of blocks to be automatically added for the newly created course
+     * Returns the list of blocks to be automatically added for the newly created course.
      *
      * @return array of default blocks, must contain two keys BLOCK_POS_LEFT and BLOCK_POS_RIGHT
      *     each of values is an array of block names (for left and right side columns)
      */
     public function get_default_blocks() {
-        return array(
-            BLOCK_POS_LEFT => array(),
-            BLOCK_POS_RIGHT => array()
-        );
+        return [
+            BLOCK_POS_LEFT => [],
+            BLOCK_POS_RIGHT => [],
+        ];
     }
 
     /**
-     * Definitions of the additional options that this course format uses for course
+     * Definitions of the additional options that this course format uses for course.
      *
      * Topics format uses the following options:
      * - coursedisplay
@@ -226,44 +229,44 @@ class format_topics extends format_base {
         static $courseformatoptions = false;
         if ($courseformatoptions === false) {
             $courseconfig = get_config('moodlecourse');
-            $courseformatoptions = array(
-                'hiddensections' => array(
+            $courseformatoptions = [
+                'hiddensections' => [
                     'default' => $courseconfig->hiddensections,
                     'type' => PARAM_INT,
-                ),
-                'coursedisplay' => array(
+                ],
+                'coursedisplay' => [
                     'default' => $courseconfig->coursedisplay,
                     'type' => PARAM_INT,
-                ),
-            );
+                ],
+            ];
         }
         if ($foreditform && !isset($courseformatoptions['coursedisplay']['label'])) {
-            $courseformatoptionsedit = array(
-                'hiddensections' => array(
+            $courseformatoptionsedit = [
+                'hiddensections' => [
                     'label' => new lang_string('hiddensections'),
                     'help' => 'hiddensections',
                     'help_component' => 'moodle',
                     'element_type' => 'select',
-                    'element_attributes' => array(
-                        array(
+                    'element_attributes' => [
+                        [
                             0 => new lang_string('hiddensectionscollapsed'),
                             1 => new lang_string('hiddensectionsinvisible')
-                        )
-                    ),
-                ),
-                'coursedisplay' => array(
+                        ],
+                    ],
+                ],
+                'coursedisplay' => [
                     'label' => new lang_string('coursedisplay'),
                     'element_type' => 'select',
-                    'element_attributes' => array(
-                        array(
+                    'element_attributes' => [
+                        [
                             COURSE_DISPLAY_SINGLEPAGE => new lang_string('coursedisplay_single'),
-                            COURSE_DISPLAY_MULTIPAGE => new lang_string('coursedisplay_multi')
-                        )
-                    ),
+                            COURSE_DISPLAY_MULTIPAGE => new lang_string('coursedisplay_multi'),
+                        ],
+                    ],
                     'help' => 'coursedisplay',
                     'help_component' => 'moodle',
-                )
-            );
+                ],
+            ];
             $courseformatoptions = array_merge_recursive($courseformatoptions, $courseformatoptionsedit);
         }
         return $courseformatoptions;
@@ -301,7 +304,7 @@ class format_topics extends format_base {
     }
 
     /**
-     * Updates format options for a course
+     * Updates format options for a course.
      *
      * In case if course format was changed to 'topics', we try to copy options
      * 'coursedisplay' and 'hiddensections' from the previous format.
@@ -328,7 +331,7 @@ class format_topics extends format_base {
     }
 
     /**
-     * Whether this format allows to delete sections
+     * Whether this format allows to delete sections.
      *
      * Do not call this function directly, instead use {@link course_can_delete_section()}
      *
@@ -340,17 +343,17 @@ class format_topics extends format_base {
     }
 
     /**
-     * Prepares the templateable object to display section name
+     * Prepares the templateable object to display section name.
      *
      * @param \section_info|\stdClass $section
      * @param bool $linkifneeded
      * @param bool $editable
      * @param null|lang_string|string $edithint
      * @param null|lang_string|string $editlabel
-     * @return \core\output\inplace_editable
+     * @return inplace_editable
      */
     public function inplace_editable_render_section_name($section, $linkifneeded = true,
-                                                         $editable = null, $edithint = null, $editlabel = null) {
+            $editable = null, $edithint = null, $editlabel = null) {
         if (empty($edithint)) {
             $edithint = new lang_string('editsectionname', 'format_topics');
         }
@@ -383,6 +386,19 @@ class format_topics extends format_base {
         return !$section->section || $section->visible;
     }
 
+    /**
+     * Callback used in WS core_course_edit_section when teacher performs an AJAX action on a section (show/hide).
+     *
+     * Access to the course is already validated in the WS but the callback has to make sure
+     * that particular action is allowed by checking capabilities
+     *
+     * Course formats should register.
+     *
+     * @param section_info|stdClass $section
+     * @param string $action
+     * @param int $sr
+     * @return null|array any data for the Javascript post-processor (must be json-encodeable)
+     */
     public function section_action($section, $action, $sr) {
         global $PAGE;
 
@@ -413,12 +429,12 @@ class format_topics extends format_base {
 }
 
 /**
- * Implements callback inplace_editable() allowing to edit values in-place
+ * Implements callback inplace_editable() allowing to edit values in-place.
  *
  * @param string $itemtype
  * @param int $itemid
  * @param mixed $newvalue
- * @return \core\output\inplace_editable
+ * @return inplace_editable
  */
 function format_topics_inplace_editable($itemtype, $itemid, $newvalue) {
     global $DB, $CFG;
@@ -426,7 +442,7 @@ function format_topics_inplace_editable($itemtype, $itemid, $newvalue) {
     if ($itemtype === 'sectionname' || $itemtype === 'sectionnamenl') {
         $section = $DB->get_record_sql(
             'SELECT s.* FROM {course_sections} s JOIN {course} c ON s.course = c.id WHERE s.id = ? AND c.format = ?',
-            array($itemid, 'topics'), MUST_EXIST);
+            [$itemid, 'topics'], MUST_EXIST);
         return course_get_format($section->course)->inplace_editable_update_section_name($section, $itemtype, $newvalue);
     }
 }
index 5d11be9..8b735c3 100644 (file)
@@ -23,7 +23,6 @@
  * @since Moodle 2.3
  */
 
-
 defined('MOODLE_INTERNAL') || die();
 require_once($CFG->dirroot.'/course/format/renderer.php');
 
@@ -36,7 +35,7 @@ require_once($CFG->dirroot.'/course/format/renderer.php');
 class format_topics_renderer extends format_section_renderer_base {
 
     /**
-     * Constructor method, calls the parent constructor
+     * Constructor method, calls the parent constructor.
      *
      * @param moodle_page $page
      * @param string $target one of rendering target constants
@@ -44,21 +43,24 @@ class format_topics_renderer extends format_section_renderer_base {
     public function __construct(moodle_page $page, $target) {
         parent::__construct($page, $target);
 
-        // Since format_topics_renderer::section_edit_control_items() only displays the 'Highlight' control when editing mode is on
-        // we need to be sure that the link 'Turn editing mode on' is available for a user who does not have any other managing capability.
+        // Since format_topics_renderer::section_edit_control_items() only displays the 'Highlight' control
+        // when editing mode is on we need to be sure that the link 'Turn editing mode on' is available for a user
+        // who does not have any other managing capability.
         $page->set_other_editing_capability('moodle/course:setcurrentsection');
     }
 
     /**
-     * Generate the starting container html for a list of sections
+     * Generate the starting container html for a list of sections.
+     *
      * @return string HTML to output.
      */
     protected function start_section_list() {
-        return html_writer::start_tag('ul', array('class' => 'topics'));
+        return html_writer::start_tag('ul', ['class' => 'topics']);
     }
 
     /**
-     * Generate the closing container html for a list of sections
+     * Generate the closing container html for a list of sections.
+     *
      * @return string HTML to output.
      */
     protected function end_section_list() {
@@ -66,7 +68,8 @@ class format_topics_renderer extends format_section_renderer_base {
     }
 
     /**
-     * Generate the title for this section page
+     * Generate the title for this section page.
+     *
      * @return string the page title
      */
     protected function page_title() {
@@ -74,9 +77,9 @@ class format_topics_renderer extends format_section_renderer_base {
     }
 
     /**
-     * Generate the section title, wraps it in a link to the section page if page is to be displayed on a separate page
+     * Generate the section title, wraps it in a link to the section page if page is to be displayed on a separate page.
      *
-     * @param stdClass $section The course_section entry from DB
+     * @param section_info|stdClass $section The course_section entry from DB
      * @param stdClass $course The course entry from DB
      * @return string HTML to output.
      */
@@ -85,10 +88,10 @@ class format_topics_renderer extends format_section_renderer_base {
     }
 
     /**
-     * Generate the section title to be displayed on the section page, without a link
+     * Generate the section title to be displayed on the section page, without a link.
      *
-     * @param stdClass $section The course_section entry from DB
-     * @param stdClass $course The course entry from DB
+     * @param section_info|stdClass $section The course_section entry from DB
+     * @param int|stdClass $course The course entry from DB
      * @return string HTML to output.
      */
     public function section_title_without_link($section, $course) {
@@ -96,16 +99,16 @@ class format_topics_renderer extends format_section_renderer_base {
     }
 
     /**
-     * Generate the edit control items of a section
+     * Generate the edit control items of a section.
      *
-     * @param stdClass $course The course entry from DB
-     * @param stdClass $section The course_section entry from DB
+     * @param int|stdClass $course The course entry from DB
+     * @param section_info|stdClass $section The course_section entry from DB
      * @param bool $onsectionpage true if being printed on a section page
      * @return array of edit control items
      */
     protected function section_edit_control_items($course, $section, $onsectionpage = false) {
         if (!$this->page->user_is_editing()) {
-            return array();
+            return [];
         }
 
         $coursecontext = context_course::instance($course->id);
@@ -117,24 +120,34 @@ class format_topics_renderer extends format_section_renderer_base {
         }
         $url->param('sesskey', sesskey());
 
-        $controls = array();
+        $controls = [];
         if ($section->section && has_capability('moodle/course:setcurrentsection', $coursecontext)) {
             if ($course->marker == $section->section) {  // Show the "light globe" on/off.
                 $url->param('marker', 0);
                 $highlightoff = get_string('highlightoff');
-                $controls['highlight'] = array('url' => $url, "icon" => 'i/marked',
-                                               'name' => $highlightoff,
-                                               'pixattr' => array('class' => ''),
-                                               'attr' => array('class' => 'editing_highlight',
-                                                   'data-action' => 'removemarker'));
+                $controls['highlight'] = [
+                    'url' => $url,
+                    'icon' => 'i/marked',
+                    'name' => $highlightoff,
+                    'pixattr' => ['class' => ''],
+                    'attr' => [
+                        'class' => 'editing_highlight',
+                        'data-action' => 'removemarker'
+                    ],
+                ];
             } else {
                 $url->param('marker', $section->section);
                 $highlight = get_string('highlight');
-                $controls['highlight'] = array('url' => $url, "icon" => 'i/marker',
-                                               'name' => $highlight,
-                                               'pixattr' => array('class' => ''),
-                                               'attr' => array('class' => 'editing_highlight',
-                                                   'data-action' => 'setmarker'));
+                $controls['highlight'] = [
+                    'url' => $url,
+                    'icon' => 'i/marker',
+                    'name' => $highlight,
+                    'pixattr' => ['class' => ''],
+                    'attr' => [
+                        'class' => 'editing_highlight',
+                        'data-action' => 'setmarker'
+                    ],
+                ];
             }
         }
 
@@ -142,7 +155,7 @@ class format_topics_renderer extends format_section_renderer_base {
 
         // If the edit key exists, we are going to insert our controls after it.
         if (array_key_exists("edit", $parentcontrols)) {
-            $merged = array();
+            $merged = [];
             // We can't use splice because we are using associative arrays.
             // Step through the array and merge the arrays.
             foreach ($parentcontrols as $key => $action) {
index 0e66249..5f2ead3 100644 (file)
@@ -15,7 +15,7 @@
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * format_topics related unit tests
+ * Topics course format related unit tests.
  *
  * @package    format_topics
  * @copyright  2015 Marina Glancy
@@ -28,7 +28,7 @@ global $CFG;
 require_once($CFG->dirroot . '/course/lib.php');
 
 /**
- * format_topics related unit tests
+ * Topics course format related unit tests.
  *
  * @package    format_topics
  * @copyright  2015 Marina Glancy
@@ -38,6 +38,8 @@ class format_topics_testcase extends advanced_testcase {
 
     /**
      * Tests for format_topics::get_section_name method with default section names.
+     *
+     * @return void
      */
     public function test_get_section_name() {
         global $DB;
@@ -46,11 +48,11 @@ class format_topics_testcase extends advanced_testcase {
         // Generate a course with 5 sections.
         $generator = $this->getDataGenerator();
         $numsections = 5;
-        $course = $generator->create_course(array('numsections' => $numsections, 'format' => 'topics'),
-            array('createsections' => true));
+        $course = $generator->create_course(['numsections' => $numsections, 'format' => 'topics'],
+            ['createsections' => true]);
 
         // Get section names for course.
-        $coursesections = $DB->get_records('course_sections', array('course' => $course->id));
+        $coursesections = $DB->get_records('course_sections', ['course' => $course->id]);
 
         // Test get_section_name with default section names.
         $courseformat = course_get_format($course);
@@ -62,6 +64,8 @@ class format_topics_testcase extends advanced_testcase {
 
     /**
      * Tests for format_topics::get_section_name method with modified section names.
+     *
+     * @return void
      */
     public function test_get_section_name_customised() {
         global $DB;
@@ -70,11 +74,11 @@ class format_topics_testcase extends advanced_testcase {
         // Generate a course with 5 sections.
         $generator = $this->getDataGenerator();
         $numsections = 5;
-        $course = $generator->create_course(array('numsections' => $numsections, 'format' => 'topics'),
-            array('createsections' => true));
+        $course = $generator->create_course(['numsections' => $numsections, 'format' => 'topics'],
+            ['createsections' => true]);
 
         // Get section names for course.
-        $coursesections = $DB->get_records('course_sections', array('course' => $course->id));
+        $coursesections = $DB->get_records('course_sections', ['course' => $course->id]);
 
         // Modify section names.
         $customname = "Custom Section";
@@ -84,7 +88,7 @@ class format_topics_testcase extends advanced_testcase {
         }
 
         // Requery updated section names then test get_section_name.
-        $coursesections = $DB->get_records('course_sections', array('course' => $course->id));
+        $coursesections = $DB->get_records('course_sections', ['course' => $course->id]);
         $courseformat = course_get_format($course);
         foreach ($coursesections as $section) {
             // Assert that with modified section names, get_section_name returns the modified section name.
@@ -94,6 +98,8 @@ class format_topics_testcase extends advanced_testcase {
 
     /**
      * Tests for format_topics::get_default_section_name.
+     *
+     * @return void
      */
     public function test_get_default_section_name() {
         global $DB;
@@ -102,11 +108,11 @@ class format_topics_testcase extends advanced_testcase {
         // Generate a course with 5 sections.
         $generator = $this->getDataGenerator();
         $numsections = 5;
-        $course = $generator->create_course(array('numsections' => $numsections, 'format' => 'topics'),
-            array('createsections' => true));
+        $course = $generator->create_course(['numsections' => $numsections, 'format' => 'topics'],
+            ['createsections' => true]);
 
         // Get section names for course.
-        $coursesections = $DB->get_records('course_sections', array('course' => $course->id));
+        $coursesections = $DB->get_records('course_sections', ['course' => $course->id]);
 
         // Test get_default_section_name with default section names.
         $courseformat = course_get_format($course);
@@ -122,7 +128,9 @@ class format_topics_testcase extends advanced_testcase {
     }
 
     /**
-     * Test web service updating section name
+     * Test web service updating section name.
+     *
+     * @return void
      */
     public function test_update_inplace_editable() {
         global $CFG, $DB, $PAGE;
@@ -131,9 +139,9 @@ class format_topics_testcase extends advanced_testcase {
         $this->resetAfterTest();
         $user = $this->getDataGenerator()->create_user();
         $this->setUser($user);
-        $course = $this->getDataGenerator()->create_course(array('numsections' => 5, 'format' => 'topics'),
-            array('createsections' => true));
-        $section = $DB->get_record('course_sections', array('course' => $course->id, 'section' => 2));
+        $course = $this->getDataGenerator()->create_course(['numsections' => 5, 'format' => 'topics'],
+            ['createsections' => true]);
+        $section = $DB->get_record('course_sections', ['course' => $course->id, 'section' => 2]);
 
         // Call webservice without necessary permissions.
         try {
@@ -145,41 +153,43 @@ class format_topics_testcase extends advanced_testcase {
         }
 
         // Change to teacher and make sure that section name can be updated using web service update_inplace_editable().
-        $teacherrole = $DB->get_record('role', array('shortname' => 'editingteacher'));
+        $teacherrole = $DB->get_record('role', ['shortname' => 'editingteacher']);
         $this->getDataGenerator()->enrol_user($user->id, $course->id, $teacherrole->id);
 
         $res = core_external::update_inplace_editable('format_topics', 'sectionname', $section->id, 'New section name');
         $res = external_api::clean_returnvalue(core_external::update_inplace_editable_returns(), $res);
         $this->assertEquals('New section name', $res['value']);
-        $this->assertEquals('New section name', $DB->get_field('course_sections', 'name', array('id' => $section->id)));
+        $this->assertEquals('New section name', $DB->get_field('course_sections', 'name', ['id' => $section->id]));
     }
 
     /**
-     * Test callback updating section name
+     * Test callback updating section name.
+     *
+     * @return void
      */
     public function test_inplace_editable() {
         global $DB, $PAGE;
 
         $this->resetAfterTest();
         $user = $this->getDataGenerator()->create_user();
-        $course = $this->getDataGenerator()->create_course(array('numsections' => 5, 'format' => 'topics'),
-            array('createsections' => true));
-        $teacherrole = $DB->get_record('role', array('shortname' => 'editingteacher'));
+        $course = $this->getDataGenerator()->create_course(['numsections' => 5, 'format' => 'topics'],
+            ['createsections' => true]);
+        $teacherrole = $DB->get_record('role', ['shortname' => 'editingteacher']);
         $this->getDataGenerator()->enrol_user($user->id, $course->id, $teacherrole->id);
         $this->setUser($user);
 
-        $section = $DB->get_record('course_sections', array('course' => $course->id, 'section' => 2));
+        $section = $DB->get_record('course_sections', ['course' => $course->id, 'section' => 2]);
 
         // Call callback format_topics_inplace_editable() directly.
-        $tmpl = component_callback('format_topics', 'inplace_editable', array('sectionname', $section->id, 'Rename me again'));
+        $tmpl = component_callback('format_topics', 'inplace_editable', ['sectionname', $section->id, 'Rename me again']);
         $this->assertInstanceOf('core\output\inplace_editable', $tmpl);
         $res = $tmpl->export_for_template($PAGE->get_renderer('core'));
         $this->assertEquals('Rename me again', $res['value']);
-        $this->assertEquals('Rename me again', $DB->get_field('course_sections', 'name', array('id' => $section->id)));
+        $this->assertEquals('Rename me again', $DB->get_field('course_sections', 'name', ['id' => $section->id]));
 
         // Try updating using callback from mismatching course format.
         try {
-            $tmpl = component_callback('format_weeks', 'inplace_editable', array('sectionname', $section->id, 'New name'));
+            component_callback('format_weeks', 'inplace_editable', ['sectionname', $section->id, 'New name']);
             $this->fail('Exception expected');
         } catch (moodle_exception $e) {
             $this->assertEquals(1, preg_match('/^Can\'t find data record in database/', $e->getMessage()));
@@ -200,9 +210,9 @@ class format_topics_testcase extends advanced_testcase {
 
         $this->setTimezone('UTC');
 
-        $params = array('format' => 'topics', 'numsections' => 5, 'startdate' => 1445644800);
+        $params = ['format' => 'topics', 'numsections' => 5, 'startdate' => 1445644800];
         $course = $this->getDataGenerator()->create_course($params);
-        $category = $DB->get_record('course_categories', array('id' => $course->category));
+        $category = $DB->get_record('course_categories', ['id' => $course->category]);
 
         $args = [
             'course' => $course,
@@ -226,7 +236,9 @@ class format_topics_testcase extends advanced_testcase {
     }
 
     /**
-     * Test for get_view_url() to ensure that the url is only given for the correct cases
+     * Test for get_view_url() to ensure that the url is only given for the correct cases.
+     *
+     * @return void
      */
     public function test_get_view_url() {
         global $CFG;
@@ -236,8 +248,8 @@ class format_topics_testcase extends advanced_testcase {
 
         // Generate a course with two sections (0 and 1) and two modules.
         $generator = $this->getDataGenerator();
-        $course1 = $generator->create_course(array('format' => 'topics'));
-        course_create_sections_if_missing($course1, array(0, 1));
+        $course1 = $generator->create_course(['format' => 'topics']);
+        course_create_sections_if_missing($course1, [0, 1]);
 
         $data = (object)['id' => $course1->id];
         $format = course_get_format($course1);
index 199e150..324f585 100644 (file)
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Version details
+ * Version details.
  *
- * @package    format
- * @subpackage topics
+ * @package    format_topics
  * @copyright  1999 onwards Martin Dougiamas (http://dougiamas.com)
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
diff --git a/course/templates/local/activitychooser/error.mustache b/course/templates/local/activitychooser/error.mustache
new file mode 100644 (file)
index 0000000..98ac463
--- /dev/null
@@ -0,0 +1,39 @@
+{{!
+    This file is part of Moodle - http://moodle.org/
+
+    Moodle is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    Moodle is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+}}
+{{!
+    @template core_course/local/activitychooser/error
+
+    Chooser error template.
+
+    Variables required for this template:
+    * errormessage - The error message
+
+    Example context (json):
+    {
+        "errormessage": "Error"
+    }
+}}
+<div class="p-2 px-sm-5 py-sm-4">
+    <div class="alert alert-danger" role="alert">
+        <h5 class="alert-heading">
+            <i class="fa fa-exclamation-circle fa-fw text-danger"></i>
+            {{#str}} error, error {{/str}}
+        </h5>
+        <hr>
+        <p class="text-break">{{{errormessage}}}</p>
+    </div>
+</div>
index 384918c..03d5656 100644 (file)
@@ -96,7 +96,7 @@ class data_controller extends \core_customfield\data_controller {
             $this->save();
         }
 
-        if ($fromform['text']) {
+        if (array_key_exists('text', $fromform)) {
             $textoptions = $this->value_editor_options();
             $data = (object) ['field_editor' => $fromform];
             $data = file_postupdate_standard_editor($data, 'field', $textoptions, $textoptions['context'],
index ee846ef..a5cc62d 100644 (file)
@@ -145,6 +145,41 @@ class customfield_textarea_plugin_testcase extends advanced_testcase {
         $handler->instance_form_save($data);
     }
 
+    /**
+     * Test that instance form save empties the field content for blank values
+     */
+    public function test_instance_form_save_clear(): void {
+        global $CFG;
+
+        require_once("{$CFG->dirroot}/customfield/tests/fixtures/test_instance_form.php");
+
+        $this->setAdminUser();
+
+        $handler = $this->cfcat->get_handler();
+
+        // Set our custom field to a known value.
+        $submitdata = (array) $this->courses[1] + [
+            'customfield_myfield1_editor' => ['text' => 'I can see it in your eyes', 'format' => FORMAT_HTML],
+            'customfield_myfield2_editor' => ['text' => 'I can see it in your smile', 'format' => FORMAT_HTML],
+        ];
+
+        core_customfield_test_instance_form::mock_submit($submitdata, []);
+        $form = new core_customfield_test_instance_form('post', ['handler' => $handler, 'instance' => $this->courses[1]]);
+        $handler->instance_form_save($form->get_data());
+
+        $this->assertEquals($submitdata['customfield_myfield1_editor']['text'],
+            core_customfield\data_controller::create($this->cfdata[1]->get('id'))->export_value());
+
+        // Now empty our non-required field.
+        $submitdata['customfield_myfield1_editor']['text'] = '';
+
+        core_customfield_test_instance_form::mock_submit($submitdata, []);
+        $form = new core_customfield_test_instance_form('post', ['handler' => $handler, 'instance' => $this->courses[1]]);
+        $handler->instance_form_save($form->get_data());
+
+        $this->assertEmpty(core_customfield\data_controller::create($this->cfdata[1]->get('id'))->export_value());
+    }
+
     /**
      * Test for data_controller::get_value and export_value
      */
index c1d5067..df8876a 100644 (file)
@@ -399,10 +399,7 @@ class gradeimport_csv_load_data {
             case 'useridnumber':
             case 'useremail':
             case 'username':
-                // Skip invalid row with blank user field.
-                if (!empty($value)) {
-                    $this->studentid = $this->check_user_exists($value, $userfields[$mappingidentifier]);
-                }
+                $this->studentid = $this->check_user_exists($value, $userfields[$mappingidentifier]);
             break;
             case 'new':
                 $this->import_new_grade_item($header, $key, $value);
index 675645c..c1e24ad 100644 (file)
@@ -561,13 +561,23 @@ class file_storage implements \H5PFileStorage {
      * @param  array $library Library details
      */
     public function delete_library(array $library): void {
+        global $DB;
 
         // A library ID of false would result in all library files being deleted, which we don't want. Return instead.
         if ($library['libraryId'] === false) {
             return;
         }
 
+        $areafiles = $this->fs->get_area_files($this->context->id, self::COMPONENT, self::LIBRARY_FILEAREA, $library['libraryId']);
         $this->delete_directory($this->context->id, self::COMPONENT, self::LIBRARY_FILEAREA, $library['libraryId']);
+        $librarycache = \cache::make('core', 'h5p_library_files');
+        foreach ($areafiles as $file) {
+            if (!$DB->record_exists('files', array('contenthash' => $file->get_contenthash(),
+                                                   'component' => self::COMPONENT,
+                                                   'filearea' => self::LIBRARY_FILEAREA))) {
+                $librarycache->delete($file->get_contenthash());
+            }
+        }
     }
 
     /**
@@ -590,6 +600,7 @@ class file_storage implements \H5PFileStorage {
      * @param  array  $options File system information.
      */
     private function copy_directory(string $source, array $options): void {
+        $librarycache = \cache::make('core', 'h5p_library_files');
         $it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($source, \RecursiveDirectoryIterator::SKIP_DOTS),
                 \RecursiveIteratorIterator::SELF_FIRST);
 
@@ -607,7 +618,13 @@ class file_storage implements \H5PFileStorage {
                     $options['filepath'] = $root;
                 }
 
-                $this->fs->create_file_from_pathname($options, $item->getPathName());
+                $file = $this->fs->create_file_from_pathname($options, $item->getPathName());
+
+                if ($options['filearea'] == self::LIBRARY_FILEAREA) {
+                    if (!$librarycache->has($file->get_contenthash())) {
+                        $librarycache->set($file->get_contenthash(), file_get_contents($item->getPathName()));
+                    }
+                }
             }
             $it->next();
         }
@@ -629,12 +646,24 @@ class file_storage implements \H5PFileStorage {
         // Read source files.
         $files = $this->fs->get_directory_files($contextid, self::COMPONENT, $filearea, $itemid, $filepath, true);
 
+        $librarycache = \cache::make('core', 'h5p_library_files');
+
         foreach ($files as $file) {
             $path = $target . str_replace($filepath, DIRECTORY_SEPARATOR, $file->get_filepath());
             if ($file->is_directory()) {
                 check_dir_exists(rtrim($path));
             } else {
-                $file->copy_content_to($path . $file->get_filename());
+                if ($filearea == self::LIBRARY_FILEAREA) {
+                    $cachedfile = $librarycache->get($file->get_contenthash());
+                    if (empty($cachedfile)) {
+                        $file->copy_content_to($path . $file->get_filename());
+                        $librarycache->set($file->get_contenthash(), file_get_contents($path . $file->get_filename()));
+                    } else {
+                        file_put_contents($path . $file->get_filename(), $cachedfile);
+                    }
+                } else {
+                    $file->copy_content_to($path . $file->get_filename());
+                }
             }
         }
     }
index 0031d7d..59eb0cb 100644 (file)
@@ -1,9 +1,12 @@
 This files describes API changes in core libraries and APIs,
 information provided here is intended especially for developers.
 
+=== 4.0 ===
+* Added a new cache for h5p_library_files (MDL-69207)
+
 === 3.9 ===
 * A new plugintype has been created, h5plib, for having installed more
 than one H5P library version.
 * H5P third-party libraries have been moved from /lib/h5p to h5p/h5plib/v124,
 as an h5plib plugintype.
-* H5P Editor PHP library added to h5plib v124 plugin.
\ No newline at end of file
+* H5P Editor PHP library added to h5plib v124 plugin.
diff --git a/install/lang/bar/admin.php b/install/lang/bar/admin.php
new file mode 100644 (file)
index 0000000..645fbf6
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Automatically generated strings for Moodle installer
+ *
+ * Do not edit this file manually! It contains just a subset of strings
+ * needed during the very first steps of installation. This file was
+ * generated automatically by export-installer.php (which is part of AMOS
+ * {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
+ * list of strings defined in /install/stringnames.txt.
+ *
+ * @package   installer
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$string['clianswerno'] = 'n';
+$string['cliansweryes'] = 'j';
+$string['cliincorrectvalueretry'] = 'Falscha Wert, probiers nummal';
+$string['cliyesnoprompt'] = 'druck j (bedeit ja) oda n (bedeit na)';
diff --git a/install/lang/bar/langconfig.php b/install/lang/bar/langconfig.php
new file mode 100644 (file)
index 0000000..02f2239
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Automatically generated strings for Moodle installer
+ *
+ * Do not edit this file manually! It contains just a subset of strings
+ * needed during the very first steps of installation. This file was
+ * generated automatically by export-installer.php (which is part of AMOS
+ * {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
+ * list of strings defined in /install/stringnames.txt.
+ *
+ * @package   installer
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$string['parentlanguage'] = 'de';
+$string['thislanguage'] = 'Bairisch';
index 38af08e..0cc122b 100644 (file)
@@ -31,5 +31,6 @@
 defined('MOODLE_INTERNAL') || die();
 
 $string['language'] = 'भाषा';
+$string['moodlelogo'] = 'Moodle लोगो';
 $string['next'] = 'अगला';
 $string['reload'] = 'सीमा से अधिक लादना';
diff --git a/install/lang/hi_kids/langconfig.php b/install/lang/hi_kids/langconfig.php
new file mode 100644 (file)
index 0000000..af46032
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Automatically generated strings for Moodle installer
+ *
+ * Do not edit this file manually! It contains just a subset of strings
+ * needed during the very first steps of installation. This file was
+ * generated automatically by export-installer.php (which is part of AMOS
+ * {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
+ * list of strings defined in /install/stringnames.txt.
+ *
+ * @package   installer
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$string['parentlanguage'] = 'hi';
+$string['thislanguage'] = 'हिंदी';
index 9ee6a8b..2571bca 100644 (file)
@@ -462,6 +462,11 @@ $string['debugminimal'] = 'MINIMAL: Show only fatal errors';
 $string['debugnone'] = 'NONE: Do not show any errors or warnings';
 $string['debugnormal'] = 'NORMAL: Show errors, warnings and notices';
 $string['debugpageinfo'] = 'Show page information';
+$string['debugsqltrace'] = 'Show origin of SQL calls';
+$string['debugsqltrace1'] = 'Show only a single calling line';
+$string['debugsqltrace2'] = 'Show 2 lines of stack trace';
+$string['debugsqltrace100'] = 'Show full stack trace';
+$string['debugsqltrace_desc'] = 'If enabled adds either partial or full PHP stacktrace into the SQL as a comment';
 $string['debugstringids'] = 'Show origin of languages strings';
 $string['debugstringids_desc'] = 'If enabled, language string components and identifiers are displayed when ?strings=1 or &strings=1 is appended to the page URL.';
 $string['debugvalidators'] = 'Show validator links';
index 8ca427a..5a374dd 100644 (file)
@@ -58,6 +58,7 @@ $string['cachedef_fontawesomeiconmapping'] = 'Mapping of icons for font awesome'
 $string['cachedef_suspended_userids'] = 'List of suspended users per course';
 $string['cachedef_groupdata'] = 'Course group information';
 $string['cachedef_h5p_content_type_translations'] = 'H5P content-type libraries translations';
+$string['cachedef_h5p_library_files'] = 'H5P library files';
 $string['cachedef_htmlpurifier'] = 'HTML Purifier - cleaned content';
 $string['cachedef_langmenu'] = 'List of available languages';
 $string['cachedef_license'] = 'List of licences';
index 11d5b11..e6a73ae 100644 (file)
@@ -198,6 +198,7 @@ $string['errorupdatinggradecategoryaggregation'] = 'Error updating the aggregati
 $string['errorupdatinggradeitemaggregationcoef'] = 'Error updating the aggregation coefficient (weight or extra credit) of grade item ID {$a->id}';
 $string['eventgradedeleted'] = 'Grade deleted';
 $string['eventgradeitemcreated'] = 'Grade item created';
+$string['eventgradeitemdeleted'] = 'Grade item deleted';
 $string['eventgradeitemupdated'] = 'Grade item updated';
 $string['eventgradelettercreated'] = 'Grade letter created';
 $string['eventgradeletterdeleted'] = 'Grade letter deleted';
index 1a0235c..f687698 100644 (file)
@@ -1201,7 +1201,7 @@ class admin_externalpage implements part_of_admin_tree {
     /** @var string The external URL that we should link to when someone requests this external page. */
     public $url;
 
-    /** @var string The role capability/permission a user must have to access this external page. */
+    /** @var array The role capability/permission a user must have to access this external page. */
     public $req_capability;
 
     /** @var object The context in which capability/permission should be checked, default is site context. */
@@ -1425,7 +1425,7 @@ class admin_settingpage implements part_of_admin_tree {
     /** @var admin_settingdependency[] list of settings to hide when certain conditions are met */
     protected $dependencies = [];
 
-    /** @var string The role capability/permission a user must have to access this external page. */
+    /** @var array The role capability/permission a user must have to access this external page. */
     public $req_capability;
 
     /** @var object The context in which capability/permission should be checked, default is site context. */
diff --git a/lib/amd/build/aria.min.js b/lib/amd/build/aria.min.js
new file mode 100644 (file)
index 0000000..f07ac09
Binary files /dev/null and b/lib/amd/build/aria.min.js differ
diff --git a/lib/amd/build/aria.min.js.map b/lib/amd/build/aria.min.js.map
new file mode 100644 (file)
index 0000000..c6a555d
Binary files /dev/null and b/lib/amd/build/aria.min.js.map differ
index 760a674..c1e1118 100644 (file)
Binary files a/lib/amd/build/drawer.min.js and b/lib/amd/build/drawer.min.js differ
index 82cdd89..c8884f7 100644 (file)
Binary files a/lib/amd/build/drawer.min.js.map and b/lib/amd/build/drawer.min.js.map differ
index 8ef27f0..58ca652 100644 (file)
Binary files a/lib/amd/build/form-autocomplete.min.js and b/lib/amd/build/form-autocomplete.min.js differ
index 77c999b..8ab6a51 100644 (file)
Binary files a/lib/amd/build/form-autocomplete.min.js.map and b/lib/amd/build/form-autocomplete.min.js.map differ
diff --git a/lib/amd/build/local/aria/aria-hidden.min.js b/lib/amd/build/local/aria/aria-hidden.min.js
new file mode 100644 (file)
index 0000000..f549360
Binary files /dev/null and b/lib/amd/build/local/aria/aria-hidden.min.js differ
diff --git a/lib/amd/build/local/aria/aria-hidden.min.js.map b/lib/amd/build/local/aria/aria-hidden.min.js.map
new file mode 100644 (file)
index 0000000..38aa7e2
Binary files /dev/null and b/lib/amd/build/local/aria/aria-hidden.min.js.map differ
index 0791632..29dfd21 100644 (file)
Binary files a/lib/amd/build/local/aria/focuslock.min.js and b/lib/amd/build/local/aria/focuslock.min.js differ
index 81ad9a2..f924b72 100644 (file)
Binary files a/lib/amd/build/local/aria/focuslock.min.js.map and b/lib/amd/build/local/aria/focuslock.min.js.map differ
diff --git a/lib/amd/build/local/aria/selectors.min.js b/lib/amd/build/local/aria/selectors.min.js
new file mode 100644 (file)
index 0000000..2d113d7
Binary files /dev/null and b/lib/amd/build/local/aria/selectors.min.js differ
diff --git a/lib/amd/build/local/aria/selectors.min.js.map b/lib/amd/build/local/aria/selectors.min.js.map
new file mode 100644 (file)
index 0000000..92e6872
Binary files /dev/null and b/lib/amd/build/local/aria/selectors.min.js.map differ
index 69414dc..530e371 100644 (file)
Binary files a/lib/amd/build/modal.min.js and b/lib/amd/build/modal.min.js differ
index 19c89db..7935256 100644 (file)
Binary files a/lib/amd/build/modal.min.js.map and b/lib/amd/build/modal.min.js.map differ
diff --git a/lib/amd/build/normalise.min.js b/lib/amd/build/normalise.min.js
new file mode 100644 (file)
index 0000000..b31b2d0
Binary files /dev/null and b/lib/amd/build/normalise.min.js differ
diff --git a/lib/amd/build/normalise.min.js.map b/lib/amd/build/normalise.min.js.map
new file mode 100644 (file)
index 0000000..c9598b2
Binary files /dev/null and b/lib/amd/build/normalise.min.js.map differ
index 2771c34..30b444e 100644 (file)
Binary files a/lib/amd/build/tooltip.min.js and b/lib/amd/build/tooltip.min.js differ
index 43e02fb..94aa7cb 100644 (file)
Binary files a/lib/amd/build/tooltip.min.js.map and b/lib/amd/build/tooltip.min.js.map differ
index 295ca56..7fadd34 100644 (file)
Binary files a/lib/amd/build/tree.min.js and b/lib/amd/build/tree.min.js differ
index 21b9d89..b7d4e17 100644 (file)
Binary files a/lib/amd/build/tree.min.js.map and b/lib/amd/build/tree.min.js.map differ
diff --git a/lib/amd/src/aria.js b/lib/amd/src/aria.js
new file mode 100644 (file)
index 0000000..394effe
--- /dev/null
@@ -0,0 +1,31 @@
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Helpers to perform ARIA compliance changes to the DOM.
+ *
+ * @module     core/aria
+ * @class      aria
+ * @package    core
+ * @copyright  2020 Andrew Nicols <andrew@nicols.co.uk>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+export {
+    hide,
+    unhide,
+    hideSiblings,
+    unhideSiblings,
+} from './local/aria/aria-hidden';
index 3c77606..00742af 100644 (file)
@@ -22,6 +22,7 @@
  */
 import $ from 'jquery';
 import * as PubSub from 'core/pubsub';
+import * as Aria from 'core/aria';
 import DrawerEvents from 'core/drawer_events';
 
 /**
@@ -29,10 +30,13 @@ import DrawerEvents from 'core/drawer_events';
  *
  * @param {Object} root The drawer container.
  */
-const show = (root) => {
+const show = root => {
+    // Ensure that it is a jQuery.
+    root = $(root);
+
+    Aria.unhide(root.get());
     root.removeClass('hidden');
     root.attr('aria-expanded', true);
-    root.removeAttr('aria-hidden');
     root.focus();
 
     PubSub.publish(DrawerEvents.DRAWER_SHOWN, root);
@@ -43,10 +47,14 @@ const show = (root) => {
  *
  * @param {Object} root The drawer container.
  */
-const hide = (root) => {
+const hide = root => {
+    // Ensure that it is a jQuery.
+    root = $(root);
+
     root.addClass('hidden');
     root.attr('aria-expanded', false);
-    root.attr('aria-hidden', true);
+    Aria.hide(root.get());
+
     PubSub.publish(DrawerEvents.DRAWER_HIDDEN, root);
 };
 
index b91c5fb..f90ff66 100644 (file)
@@ -25,8 +25,8 @@
  */
 /* globals require: false */
 define(
-    ['jquery', 'core/log', 'core/str', 'core/templates', 'core/notification', 'core/loadingicon'],
-function($, log, str, templates, notification, LoadingIcon) {
+    ['jquery', 'core/log', 'core/str', 'core/templates', 'core/notification', 'core/loadingicon', 'core/aria'],
+function($, log, str, templates, notification, LoadingIcon, Aria) {
 
     // Private functions and variables.
     /** @var {Object} KEYS - List of keycode constants. */
@@ -200,14 +200,14 @@ function($, log, str, templates, notification, LoadingIcon) {
         var suggestionsElement = $(document.getElementById(state.suggestionsId));
 
         // Count the visible items.
-        var length = suggestionsElement.children('[aria-hidden=false]').length;
+        var length = suggestionsElement.children(':not([aria-hidden])').length;
         // Limit the index to the upper/lower bounds of the list (wrap in both directions).
         index = index % length;
         while (index < 0) {
             index += length;
         }
         // Find the specified element.
-        var element = $(suggestionsElement.children('[aria-hidden=false]').get(index));
+        var element = $(suggestionsElement.children(':not([aria-hidden])').get(index));
         // Find the index of this item in the full list of suggestions (including hidden).
         var globalIndex = $(suggestionsElement.children('[role=option]')).index(element);
         // Create an id we can assign to this element.
@@ -244,7 +244,7 @@ function($, log, str, templates, notification, LoadingIcon) {
         // Find the active one.
         var element = suggestionsElement.children('[aria-selected=true]');
         // Find it's index.
-        var current = suggestionsElement.children('[aria-hidden=false]').index(element);
+        var current = suggestionsElement.children(':not([aria-hidden])').index(element);
         // Activate the next one.
         return activateItem(current + 1, state);
     };
@@ -315,7 +315,7 @@ function($, log, str, templates, notification, LoadingIcon) {
         var element = suggestionsElement.children('[aria-selected=true]');
 
         // Find it's index.
-        var current = suggestionsElement.children('[aria-hidden=false]').index(element);
+        var current = suggestionsElement.children(':not([aria-hidden])').index(element);
 
         // Activate the previous one.
         return activateItem(current - 1, state);
@@ -338,7 +338,8 @@ function($, log, str, templates, notification, LoadingIcon) {
         inputElement.attr('aria-expanded', false).attr('aria-activedescendant', state.selectionId);
 
         // Hide the suggestions list (from screen readers too).
-        suggestionsElement.hide().attr('aria-hidden', true);
+        Aria.hide(suggestionsElement.get());
+        suggestionsElement.hide();
 
         return $.Deferred().resolve();
     };
@@ -385,17 +386,22 @@ function($, log, str, templates, notification, LoadingIcon) {
 
             // Get the element again.
             suggestionsElement = $(document.getElementById(state.suggestionsId));
+
             // Show it if it is hidden.
-            suggestionsElement.show().attr('aria-hidden', false);
+            Aria.unhide(suggestionsElement.get());
+            suggestionsElement.show();
+
             // For each option in the list, hide it if it doesn't match the query.
             suggestionsElement.children().each(function(index, node) {
                 node = $(node);
                 if ((options.caseSensitive && node.text().indexOf(searchquery) > -1) ||
                         (!options.caseSensitive && node.text().toLocaleLowerCase().indexOf(searchquery) > -1)) {
-                    node.show().attr('aria-hidden', false);
+                    Aria.unhide(node.get());
+                    node.show();
                     matchingElements = true;
                 } else {
-                    node.hide().attr('aria-hidden', true);
+                    node.hide();
+                    Aria.hide(node.get());
                 }
             });
             // If we found any matches, show the list.
@@ -779,7 +785,7 @@ function($, log, str, templates, notification, LoadingIcon) {
             var element = $(e.currentTarget).closest('[role=option]');
             var suggestionsElement = $(document.getElementById(state.suggestionsId));
             // Find the index of the clicked on suggestion.
-            var current = suggestionsElement.children('[aria-hidden=false]').index(element);
+            var current = suggestionsElement.children(':not([aria-hidden])').index(element);
 
             // Activate it.
             activateItem(current, state)
@@ -1020,7 +1026,8 @@ function($, log, str, templates, notification, LoadingIcon) {
                 return false;
             }
 
-            originalSelect.css('visibility', 'hidden').attr('aria-hidden', true);
+            Aria.hide(originalSelect.get());
+            originalSelect.css('visibility', 'hidden');
 
             // Hide the original select.
 
@@ -1105,7 +1112,8 @@ function($, log, str, templates, notification, LoadingIcon) {
 
                 var suggestionsElement = $(document.getElementById(state.suggestionsId));
                 // Hide the suggestions by default.
-                suggestionsElement.hide().attr('aria-hidden', true);
+                suggestionsElement.hide();
+                Aria.hide(suggestionsElement.get());
 
                 return;
             })
diff --git a/lib/amd/src/local/aria/aria-hidden.js b/lib/amd/src/local/aria/aria-hidden.js
new file mode 100644 (file)
index 0000000..a5989a0
--- /dev/null
@@ -0,0 +1,267 @@
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * ARIA helpers related to the aria-hidden attribute.
+ *
+ * @module     core/local/aria/aria-hidden.
+ * @class      aria
+ * @package    core
+ * @copyright  2020 Andrew Nicols <andrew@nicols.co.uk>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+import {getList} from 'core/normalise';
+import Selectors from './selectors';
+
+// The map of MutationObserver objects for an object.
+const childObserverMap = new Map();
+const siblingObserverMap = new Map();
+
+/**
+ * Determine whether the browser supports the MutationObserver system.
+ *
+ * @returns {Bool}
+ */
+const supportsMutationObservers = () => (MutationObserver && typeof MutationObserver === 'function');
+
+/**
+ * Disable element focusability, disabling the tabindex for child elements which are normally focusable.
+ *
+ * @param {HTMLElement} target
+ */
+const disableElementFocusability = target => {
+    if (!(target instanceof HTMLElement)) {
+        // This element is not an HTMLElement.
+        // This can happen for Text Nodes.
+        return;
+    }
+
+    if (target.matches(Selectors.elements.focusable)) {
+        disableAndStoreTabIndex(target);
+    }
+
+    target.querySelectorAll(Selectors.elements.focusable).forEach(disableAndStoreTabIndex);
+};
+
+/**
+ * Remove the current tab-index and store it for later restoration.
+ *
+ * @param {HTMLElement} element
+ */
+const disableAndStoreTabIndex = element => {
+    if (typeof element.dataset.ariaHiddenTabIndex !== 'undefined') {
+        // This child already has a hidden attribute.
+        // Do not modify it as the original value will be lost.
+        return;
+    }
+
+    // Store the old tabindex in a data attribute.
+    if (element.getAttribute('tabindex')) {
+        element.dataset.ariaHiddenTabIndex = element.getAttribute('tabindex');
+    } else {
+        element.dataset.ariaHiddenTabIndex = '';
+    }
+    element.setAttribute('tabindex', -1);
+};
+
+/**
+ * Re-enable element focusability, restoring any tabindex.
+ *
+ * @param {HTMLElement} target
+ */
+const enableElementFocusability = target => {
+    if (!(target instanceof HTMLElement)) {
+        // This element is not an HTMLElement.
+        // This can happen for Text Nodes.
+        return;
+    }
+
+    if (target.matches(Selectors.elements.focusableToUnhide)) {
+        restoreTabIndex(target);
+    }
+
+    target.querySelectorAll(Selectors.elements.focusableToUnhide).forEach(restoreTabIndex);
+};
+
+/**
+ * Restore the tab-index of the supplied element.
+ *
+ * When disabling focusability the current tab-index is stored in the ariaHiddenTabIndex data attribute.
+ * This is used to restore the tab-index, but only whilst the parent nodes remain unhidden.
+ *
+ * @param {HTMLElement} element
+ */
+const restoreTabIndex = element => {
+    if (element.closest(Selectors.aria.hidden)) {
+        // This item still has a hidden parent, or is hidden itself. Do not unhide it.
+        return;
+    }
+
+    const oldTabIndex = element.dataset.ariaHiddenTabIndex;
+    if (oldTabIndex === '') {
+        element.removeAttribute('tabindex');
+    } else {
+        element.setAttribute('tabindex', oldTabIndex);
+    }
+
+    delete element.dataset.ariaHiddenTabIndex;
+};
+
+/**
+ * Update the supplied DOM Module to be hidden.
+ *
+ * @param {HTMLElement} target
+ * @returns {Array}
+ */
+export const hide = target => getList(target).forEach(_hide);
+
+const _hide = target => {
+    if (!(target instanceof HTMLElement)) {
+        // This element is not an HTMLElement.
+        // This can happen for Text Nodes.
+        return;
+    }
+
+    if (target.closest(Selectors.aria.hidden)) {
+        // This Element, or a parent Element, is already hidden.
+        // Stop processing.
+        return;
+    }
+
+    // Set the aria-hidden attribute to true.
+    target.setAttribute('aria-hidden', true);
+
+    // Based on advice from https://dequeuniversity.com/rules/axe/3.3/aria-hidden-focus, upon setting the aria-hidden
+    // attribute, all focusable elements underneath that element should be modified such that they are not focusable.
+    disableElementFocusability(target);
+
+    if (supportsMutationObservers()) {
+        // Add a MutationObserver to check for new children to the tree.
+        const newNodeObserver = new MutationObserver(mutationList => {
+            mutationList.forEach(mutation => {
+                mutation.addedNodes.forEach(disableElementFocusability);
+            });
+        });
+
+        newNodeObserver.observe(target, {childList: true, subtree: true});
+        childObserverMap.set(target, newNodeObserver);
+    }
+};
+
+/**
+ * Reverse the effect of the hide action.
+ *
+ * @param {HTMLElement} target
+ * @returns {Array}
+ */
+export const unhide = target => getList(target).forEach(_unhide);
+
+const _unhide = target => {
+    if (!(target instanceof HTMLElement)) {
+        return;
+    }
+
+    // Note: The aria-hidden attribute should be removed, and not set to false.
+    // The presence of the attribute is sufficient for some browsers to treat it as being true, regardless of its value.
+    target.removeAttribute('aria-hidden');
+
+    // Restore the tabindex across all child nodes of the target.
+    enableElementFocusability(target);
+
+    // Remove the focusability MutationObserver watching this tree.
+    if (childObserverMap.has(target)) {
+        childObserverMap.get(target).disconnect();
+        childObserverMap.delete(target);
+    }
+};
+
+/**
+ * Correctly mark all siblings of the supplied target Element as hidden.
+ *
+ * @param {HTMLElement} target
+ * @returns {Array}
+ */
+export const hideSiblings = target => getList(target).forEach(_hideSiblings);
+
+const _hideSiblings = target => {
+    if (!(target instanceof HTMLElement)) {
+        return;
+    }
+
+    if (!target.parentElement) {
+        return;
+    }
+
+    target.parentElement.childNodes.forEach(node => {
+        if (node === target) {
+            // Skip self;
+            return;
+        }
+
+        hide(node);
+    });
+
+    if (supportsMutationObservers()) {
+        // Add a MutationObserver to check for new children to the tree.
+        const newNodeObserver = new MutationObserver(mutationList => {
+            mutationList.forEach(mutation => {
+                mutation.addedNodes.forEach(node => {
+                    if (target.contains(node)) {
+                        // Skip self, and children of self.
+                        return;
+                    }
+
+                    hide(node);
+                });
+            });
+        });
+
+        newNodeObserver.observe(target.parentElement, {childList: true, subtree: true});
+        siblingObserverMap.set(target.parentElement, newNodeObserver);
+    }
+};
+
+/**
+ * Correctly reverse the hide action of all children of the supplied target Element.
+ *
+ * @param {HTMLElement} target
+ * @returns {Array}
+ */
+export const unhideSiblings = target => getList(target).forEach(_unhideSiblings);
+
+const _unhideSiblings = target => {
+    if (!(target instanceof HTMLElement)) {
+        return;
+    }
+
+    if (!target.parentElement) {
+        return;
+    }
+
+    target.parentElement.childNodes.forEach(node => {
+        if (node === target) {
+            // Skip self;
+            return;
+        }
+
+        unhide(node);
+    });
+
+    // Remove the sibling MutationObserver watching this tree.
+    if (siblingObserverMap.has(target.parentElement)) {
+        siblingObserverMap.get(target.parentElement).disconnect();
+        siblingObserverMap.delete(target.parentElement);
+    }
+};
index c8c1191..c3e5748 100644 (file)
@@ -25,9 +25,7 @@
  * @copyright  2019 Andrew Nicols <andrew@nicols.co.uk>
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-const selectors = {
-    focusable: 'input:not([type="hidden"]), a[href], button, textarea, select, [tabindex]',
-};
+import Selectors from './selectors';
 
 const lockRegionStack = [];
 const initialFocusElementStack = [];
@@ -90,7 +88,7 @@ const focusFirstDescendant = () => {
     // For example, a disabled text area cannot be focused, and it becomes difficult to provide a decent query selector
     // to capture this.
     // The use of Array.some just ensures that we stop as soon as we have a successful focus.
-    const focusableElements = Array.from(lockRegion.querySelectorAll(selectors.focusable));
+    const focusableElements = Array.from(lockRegion.querySelectorAll(Selectors.elements.focusable));
 
     // The lock region itself may be focusable. This is particularly true on Moodle's older dialogues.
     // We must include it in the calculation of descendants to ensure that looping works correctly.
@@ -111,7 +109,7 @@ const focusLastDescendant = () => {
     // For example, a disabled text area cannot be focused, and it becomes difficult to provide a decent query selector
     // to capture this.
     // The use of Array.some just ensures that we stop as soon as we have a successful focus.
-    const focusableElements = Array.from(lockRegion.querySelectorAll(selectors.focusable)).reverse();
+    const focusableElements = Array.from(lockRegion.querySelectorAll(Selectors.elements.focusable)).reverse();
 
     // The lock region itself may be focusable. This is particularly true on Moodle's older dialogues.
     // We must include it in the calculation of descendants to ensure that looping works correctly.
diff --git a/lib/amd/src/local/aria/selectors.js b/lib/amd/src/local/aria/selectors.js
new file mode 100644 (file)
index 0000000..c7a45ef
--- /dev/null
@@ -0,0 +1,33 @@
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Selectors used for ARIA.
+ *
+ * @module     core/local/aria/selectors
+ * @class      selectors
+ * @package    core
+ * @copyright  2020 Andrew Nicols <andrew@nicols.co.uk>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+export default {
+    aria: {
+        hidden: '[aria-hidden]',
+    },
+    elements: {
+        focusable: 'input:not([type="hidden"]), a[href], button, textarea, select, [tabindex]',
+        focusableToUnhide: '[data-aria-hidden-tab-index]',
+    },
+};
index 442c5b0..823adcd 100644 (file)
@@ -33,7 +33,8 @@ define([
     'core/modal_events',
     'core/local/aria/focuslock',
     'core/pending',
-], function($, Templates, Notification, KeyCodes, CustomEvents, ModalBackdrop, Event, ModalEvents, FocusLock, Pending) {
+    'core/aria',
+], function($, Templates, Notification, KeyCodes, CustomEvents, ModalBackdrop, Event, ModalEvents, FocusLock, Pending, Aria) {
 
     var SELECTORS = {
         CONTAINER: '[data-region="modal-container"]',
@@ -732,30 +733,11 @@ define([
      * @method accessibilityShow
      */
     Modal.prototype.accessibilityShow = function() {
-        // We need to get a list containing each sibling element and the shallowest
-        // non-ancestral nodes in the DOM. We can shortcut this a little by leveraging
-        // the fact that this dialogue is always appended to the document body therefore
-        // it's siblings are the shallowest non-ancestral nodes. If that changes then
-        // this code should also be updated.
-        $('body').children().each(function(index, child) {
-            // Skip the current modal.
-            if (!this.root.is(child)) {
-                child = $(child);
-                var hidden = child.attr('aria-hidden');
-                // If they are already hidden we can ignore them.
-                if (hidden !== 'true') {
-                    // Save their current state.
-                    child.data('previous-aria-hidden', hidden);
-                    this.hiddenSiblings.push(child);
-
-                    // Hide this node from screen readers.
-                    child.attr('aria-hidden', 'true');
-                }
-            }
-        }.bind(this));
-
         // Make us visible to screen readers.
-        this.root.attr('aria-hidden', 'false');
+        Aria.unhide(this.root.get());
+
+        // Hide siblings.
+        Aria.hideSiblings(this.root.get()[0]);
     };
 
     /**
@@ -766,24 +748,11 @@ define([
      * @method accessibilityHide
      */
     Modal.prototype.accessibilityHide = function() {
-        this.root.attr('aria-hidden', 'true');
-
-        // Restore the sibling nodes back to their original values.
-        $.each(this.hiddenSiblings, function(index, sibling) {
-            sibling = $(sibling);
-            var previousValue = sibling.data('previous-aria-hidden');
-            // If the element didn't previously have an aria-hidden attribute
-            // then we can just remove the one we set.
-            if (typeof previousValue == 'undefined') {
-                sibling.removeAttr('aria-hidden');
-            } else {
-                // Otherwise set it back to the old value (which will be false).
-                sibling.attr('aria-hidden', previousValue);
-            }
-        });
+        // Unhide siblings.
+        Aria.unhideSiblings(this.root.get()[0]);
 
-        // Clear the cache. No longer need to store these.
-        this.hiddenSiblings = [];
+        // Hide this modal.
+        Aria.hide(this.root.get());
     };
 
     /**
diff --git a/lib/amd/src/normalise.js b/lib/amd/src/normalise.js
new file mode 100644 (file)
index 0000000..e5afcaf
--- /dev/null
@@ -0,0 +1,51 @@
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Normalisation helpers.
+ *
+ * @module     core/normalise
+ * @class      normalise
+ * @package    core
+ * @copyright  2020 Andrew Nicols <andrew@nicols.co.uk>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+import jQuery from 'jquery';
+
+export const getList = nodes => {
+    if (nodes instanceof HTMLElement) {
+        // A single record to conver to a NodeList.
+        return [nodes];
+    }
+
+    if (nodes instanceof Array) {
+        // A single record to conver to a NodeList.
+        return nodes;
+    }
+
+    if (nodes instanceof NodeList) {
+        // Already a NodeList.
+        return Array.from(nodes);
+    }
+
+    if (nodes instanceof jQuery) {
+        // A jQuery object to a NodeList.
+        return nodes.get();
+    }
+
+    // Fallback to just having a go.
+    return Array.from(nodes);
+};
index 7faaf95..af25345 100644 (file)
@@ -1,4 +1,4 @@
-define(['jquery'], function($) {
+define(['jquery', 'core/aria'], function($, Aria) {
 
     /**
      * Tooltip class.
@@ -50,7 +50,7 @@ define(['jquery'], function($) {
             var tooltipele = $(document.getElementById(tooltipId));
 
             tooltipele.show();
-            tooltipele.attr('aria-hidden', 'false');
+            Aria.unhide(tooltipele);
 
             if (!tooltipele.is('.tooltip')) {
                 // Change the markup to a bootstrap tooltip.
@@ -79,7 +79,7 @@ define(['jquery'], function($) {
             var tooltipele = document.getElementById(tooltipId);
 
             $(tooltipele).hide();
-            $(tooltipele).attr('aria-hidden', 'true');
+            Aria.hide(tooltipele);
         }
     };
 
index 24fd7da..0839895 100644 (file)
@@ -303,7 +303,7 @@ define(['jquery'], function($) {
     Tree.prototype.finishExpandingGroup = function(item) {
         // Expand the group.
         var group = this.getGroupFromItem(item);
-        group.attr('aria-hidden', 'false');
+        group.removeAttr('aria-hidden');
         item.attr('aria-expanded', 'true');
 
         // Update the list of visible items.
diff --git a/lib/behat/axe/axe.min.js b/lib/behat/axe/axe.min.js
new file mode 100644 (file)
index 0000000..1f45720
--- /dev/null
@@ -0,0 +1,12 @@
+/*! axe v3.5.5
+ * Copyright (c) 2020 Deque Systems, Inc.
+ *
+ * Your use of 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/.
+ *
+ * This entire copyright notice must appear in every copy of this file you
+ * distribute or in any file that contains substantial portions of this source
+ * code.
+ */
+!function e(window){var a=window,document=window.document;function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e){this.name="SupportError",this.cause=e.cause,this.message="`".concat(e.cause,"` - feature unsupported in your environment."),e.ruleId&&(this.ruleId=e.ruleId,this.message+=" Skipping ".concat(this.ruleId," rule.")),this.stack=(new Error).stack}(axe=axe||{}).version="3.5.5","function"==typeof define&&define.amd&&define("axe-core",[],function(){"use strict";return axe}),"object"===("undefined"==typeof module?"undefined":W(module))&&module.exports&&"function"==typeof e.toString&&(axe.source="("+e.toString()+')(typeof window === "object" ? window : this);',module.exports=axe),"function"==typeof window.getComputedStyle&&(window.axe=axe),(u.prototype=Object.create(Error.prototype)).constructor=u,function o(i,s,l){function u(t,e){if(!s[t]){if(!i[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(c)return c(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var a=s[t]={exports:{}};i[t][0].call(a.exports,function(e){return u(i[t][1][e]||e)},a,a.exports,o,i,s,l)}return s[t].exports}for(var c="function"==typeof require&&require,e=0;e<l.length;e++)u(l[e]);return u}({1:[function(e,t,r){"Promise"in window||e("es6-promise").polyfill(),"Uint32Array"in window||e("core-js/features/typed-array/uint32-array"),window.Uint32Array&&("some"in window.Uint32Array.prototype||e("core-js/features/typed-array/some"),"reduce"in window.Uint32Array.prototype||e("core-js/features/typed-array/reduce")),e("weakmap-polyfill"),axe.imports={axios:e("axios"),CssSelectorParser:e("css-selector-parser").CssSelectorParser,doT:e("@deque/dot"),emojiRegexText:e("emoji-regex"),memoize:e("memoizee")}},{"@deque/dot":2,axios:3,"core-js/features/typed-array/reduce":31,"core-js/features/typed-array/some":32,"core-js/features/typed-array/uint32-array":33,"css-selector-parser":155,"emoji-regex":158,"es6-promise":202,memoizee:223,"weakmap-polyfill":245}],2:[function(e,r,t){(function(t){!function(){"use strict";var l={name:"doT",version:"1.1.1",templateSettings:{evaluate:/\{\{([\s\S]+?(\}?)+)\}\}/g,interpolate:/\{\{=([\s\S]+?)\}\}/g,encode:/\{\{!([\s\S]+?)\}\}/g,use:/\{\{#([\s\S]+?)\}\}/g,useParams:/(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,define:/\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,defineParams:/^\s*([\w$]+):([\s\S]+)/,conditional:/\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,iterate:/\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,varname:"it",strip:!0,append:!0,selfcontained:!1,doNotSkipEncoded:!1},template:void 0,compile:void 0,log:!0};!function(){if("object"!=typeof globalThis)try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch(e){window.globalThis=function(){if("undefined"!=typeof self)return self;if(void 0!==window)return window;if(void 0!==t)return t;if(void 0!==this)return this;throw new Error("Unable to locate global `this`")}()}}(),l.encodeHTMLSource=function(e){var t={"&":"&#38;","<":"&#60;",">":"&#62;",'"':"&#34;","'":"&#39;","/":"&#47;"},r=e?/[&<>"'\/]/g:/&(?!#?\w+;)|<|>|"|'|\//g;return function(e){return e?e.toString().replace(r,function(e){return t[e]||e}):""}},void 0!==r&&r.exports?r.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):globalThis.doT=l;var u={append:{start:"'+(",end:")+'",startencode:"'+encodeHTML("},split:{start:"';out+=(",end:");out+='",startencode:"';out+=encodeHTML("}},c=/$^/;function d(e){return e.replace(/\\('|\\)/g,"$1").replace(/[\r\t\n]/g," ")}l.template=function(e,t,r){var n,a,o=(t=t||l.templateSettings).append?u.append:u.split,i=0,s=t.use||t.define?function n(a,e,o){return("string"==typeof e?e:e.toString()).replace(a.define||c,function(e,n,t,r){return 0===n.indexOf("def.")&&(n=n.substring(4)),n in o||(":"===t?(a.defineParams&&r.replace(a.defineParams,function(e,t,r){o[n]={arg:t,text:r}}),n in o||(o[n]=r)):new Function("def","def['"+n+"']="+r)(o)),""}).replace(a.use||c,function(e,t){a.useParams&&(t=t.replace(a.useParams,function(e,t,r,n){if(o[r]&&o[r].arg&&n){var a=(r+":"+n).replace(/'|\\/g,"_");return o.__exp=o.__exp||{},o.__exp[a]=o[r].text.replace(new RegExp("(^|[^\\w$])"+o[r].arg+"([^\\w$])","g"),"$1"+n+"$2"),t+"def.__exp['"+a+"']"}}));var r=new Function("def","return "+t)(o);return r?n(a,r,o):r})}(t,e,r||{}):e;s=("var out='"+(t.strip?s.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ").replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""):s).replace(/'|\\/g,"\\$&").replace(t.interpolate||c,function(e,t){return o.start+d(t)+o.end}).replace(t.encode||c,function(e,t){return n=!0,o.startencode+d(t)+o.end}).replace(t.conditional||c,function(e,t,r){return t?r?"';}else if("+d(r)+"){out+='":"';}else{out+='":r?"';if("+d(r)+"){out+='":"';}out+='"}).replace(t.iterate||c,function(e,t,r,n){return t?(i+=1,a=n||"i"+i,t=d(t),"';var arr"+i+"="+t+";if(arr"+i+"){var "+r+","+a+"=-1,l"+i+"=arr"+i+".length-1;while("+a+"<l"+i+"){"+r+"=arr"+i+"["+a+"+=1];out+='"):"';} } out+='"}).replace(t.evaluate||c,function(e,t){return"';"+d(t)+"out+='"})+"';return out;").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/(\s|;|\}|^|\{)out\+='';/g,"$1").replace(/\+''/g,""),n&&(t.selfcontained||!globalThis||globalThis._encodeHTML||(globalThis._encodeHTML=l.encodeHTMLSource(t.doNotSkipEncoded)),s="var encodeHTML = typeof _encodeHTML !== 'undefined' ? _encodeHTML : ("+l.encodeHTMLSource.toString()+"("+(t.doNotSkipEncoded||"")+"));"+s);try{return new Function(t.varname,s)}catch(e){throw"undefined"!=typeof console&&console.log("Could not create a template function: "+s),e}},l.compile=function(e,t){return l.template(e,null,t)}}()}).call(this,void 0!==a?a:"undefined"!=typeof self?self:void 0!==window?window:{})},{}],3:[function(e,t,r){t.exports=e("./lib/axios")},{"./lib/axios":5}],4:[function(d,e,t){"use strict";var utils=d("./../utils"),p=d("./../core/settle"),m=d("./../helpers/buildURL"),f=d("../core/buildFullPath"),h=d("./../helpers/parseHeaders"),b=d("./../helpers/isURLSameOrigin"),g=d("../core/createError");e.exports=function(c){return new Promise(function(r,n){var a=c.data,o=c.headers;utils.isFormData(a)&&delete o["Content-Type"];var i=new XMLHttpRequest;if(c.auth){var e=c.auth.username||"",t=c.auth.password||"";o.Authorization="Basic "+btoa(e+":"+t)}var s=f(c.baseURL,c.url);if(i.open(c.method.toUpperCase(),m(s,c.params,c.paramsSerializer),!0),i.timeout=c.timeout,i.onreadystatechange=function(){if(i&&4===i.readyState&&(0!==i.status||i.responseURL&&0===i.responseURL.indexOf("file:"))){var e="getAllResponseHeaders"in i?h(i.getAllResponseHeaders()):null,t={data:c.responseType&&"text"!==c.responseType?i.response:i.responseText,status:i.status,statusText:i.statusText,headers:e,config:c,request:i};p(r,n,t),i=null}},i.onabort=function(){i&&(n(g("Request aborted",c,"ECONNABORTED",i)),i=null)},i.onerror=function(){n(g("Network Error",c,null,i)),i=null},i.ontimeout=function(){var e="timeout of "+c.timeout+"ms exceeded";c.timeoutErrorMessage&&(e=c.timeoutErrorMessage),n(g(e,c,"ECONNABORTED",i)),i=null},utils.isStandardBrowserEnv()){var l=d("./../helpers/cookies"),u=(c.withCredentials||b(s))&&c.xsrfCookieName?l.read(c.xsrfCookieName):void 0;u&&(o[c.xsrfHeaderName]=u)}if("setRequestHeader"in i&&utils.forEach(o,function(e,t){void 0===a&&"content-type"===t.toLowerCase()?delete o[t]:i.setRequestHeader(t,e)}),utils.isUndefined(c.withCredentials)||(i.withCredentials=!!c.withCredentials),c.responseType)try{i.responseType=c.responseType}catch(e){if("json"!==c.responseType)throw e}"function"==typeof c.onDownloadProgress&&i.addEventListener("progress",c.onDownloadProgress),"function"==typeof c.onUploadProgress&&i.upload&&i.upload.addEventListener("progress",c.onUploadProgress),c.cancelToken&&c.cancelToken.promise.then(function(e){i&&(i.abort(),n(e),i=null)}),void 0===a&&(a=null),i.send(a)})}},{"../core/buildFullPath":11,"../core/createError":12,"./../core/settle":16,"./../helpers/buildURL":20,"./../helpers/cookies":22,"./../helpers/isURLSameOrigin":24,"./../helpers/parseHeaders":26,"./../utils":28}],5:[function(e,t,r){"use strict";var utils=e("./utils"),n=e("./helpers/bind"),a=e("./core/Axios"),o=e("./core/mergeConfig");function i(e){var t=new a(e),r=n(a.prototype.request,t);return utils.extend(r,a.prototype,t),utils.extend(r,t),r}var s=i(e("./defaults"));s.Axios=a,s.create=function(e){return i(o(s.defaults,e))},s.Cancel=e("./cancel/Cancel"),s.CancelToken=e("./cancel/CancelToken"),s.isCancel=e("./cancel/isCancel"),s.all=function(e){return Promise.all(e)},s.spread=e("./helpers/spread"),t.exports=s,t.exports.default=s},{"./cancel/Cancel":6,"./cancel/CancelToken":7,"./cancel/isCancel":8,"./core/Axios":9,"./core/mergeConfig":15,"./defaults":18,"./helpers/bind":19,"./helpers/spread":27,"./utils":28}],6:[function(e,t,r){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,t.exports=n},{}],7:[function(e,t,r){"use strict";var n=e("./Cancel");function a(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var r=this;e(function(e){r.reason||(r.reason=new n(e),t(r.reason))})}a.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},a.source=function(){var t;return{token:new a(function(e){t=e}),cancel:t}},t.exports=a},{"./Cancel":6}],8:[function(e,t,r){"use strict";t.exports=function(e){return!(!e||!e.__CANCEL__)}},{}],9:[function(e,t,r){"use strict";var utils=e("./../utils"),n=e("../helpers/buildURL"),a=e("./InterceptorManager"),o=e("./dispatchRequest"),i=e("./mergeConfig");function s(e){this.defaults=e,this.interceptors={request:new a,response:new a}}s.prototype.request=function(e,t){"string"==typeof e?(e=t||{}).url=arguments[0]:e=e||{},(e=i(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var r=[o,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){r.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){r.push(e.fulfilled,e.rejected)});r.length;)n=n.then(r.shift(),r.shift());return n},s.prototype.getUri=function(e){return e=i(this.defaults,e),n(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},utils.forEach(["delete","get","head","options"],function(r){s.prototype[r]=function(e,t){return this.request(utils.merge(t||{},{method:r,url:e}))}}),utils.forEach(["post","put","patch"],function(n){s.prototype[n]=function(e,t,r){return this.request(utils.merge(r||{},{method:n,url:e,data:t}))}}),t.exports=s},{"../helpers/buildURL":20,"./../utils":28,"./InterceptorManager":10,"./dispatchRequest":13,"./mergeConfig":15}],10:[function(e,t,r){"use strict";var utils=e("./../utils");function n(){this.handlers=[]}n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(t){utils.forEach(this.handlers,function(e){null!==e&&t(e)})},t.exports=n},{"./../utils":28}],11:[function(e,t,r){"use strict";var n=e("../helpers/isAbsoluteURL"),a=e("../helpers/combineURLs");t.exports=function(e,t){return e&&!n(t)?a(e,t):t}},{"../helpers/combineURLs":21,"../helpers/isAbsoluteURL":23}],12:[function(e,t,r){"use strict";var i=e("./enhanceError");t.exports=function(e,t,r,n,a){var o=new Error(e);return i(o,t,r,n,a)}},{"./enhanceError":14}],13:[function(e,t,r){"use strict";var utils=e("./../utils"),n=e("./transformData"),a=e("../cancel/isCancel"),o=e("../defaults");function i(e){e.cancelToken&&e.cancelToken.throwIfRequested()}t.exports=function(t){return i(t),t.headers=t.headers||{},t.data=n(t.data,t.headers,t.transformRequest),t.headers=utils.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),utils.forEach(["delete","get","head","post","put","patch","common"],function(e){delete t.headers[e]}),(t.adapter||o.adapter)(t).then(function(e){return i(t),e.data=n(e.data,e.headers,t.transformResponse),e},function(e){return a(e)||(i(t),e&&e.response&&(e.response.data=n(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)})}},{"../cancel/isCancel":8,"../defaults":18,"./../utils":28,"./transformData":17}],14:[function(e,t,r){"use strict";t.exports=function(e,t,r,n,a){return e.config=t,r&&(e.code=r),e.request=n,e.response=a,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},{}],15:[function(e,t,r){"use strict";var utils=e("../utils");t.exports=function(t,r){r=r||{};var n={},e=["url","method","params","data"],a=["headers","auth","proxy"],o=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];utils.forEach(e,function(e){void 0!==r[e]&&(n[e]=r[e])}),utils.forEach(a,function(e){utils.isObject(r[e])?n[e]=utils.deepMerge(t[e],r[e]):void 0!==r[e]?n[e]=r[e]:utils.isObject(t[e])?n[e]=utils.deepMerge(t[e]):void 0!==t[e]&&(n[e]=t[e])}),utils.forEach(o,function(e){void 0!==r[e]?n[e]=r[e]:void 0!==t[e]&&(n[e]=t[e])});var i=e.concat(a).concat(o),s=Object.keys(r).filter(function(e){return-1===i.indexOf(e)});return utils.forEach(s,function(e){void 0!==r[e]?n[e]=r[e]:void 0!==t[e]&&(n[e]=t[e])}),n}},{"../utils":28}],16:[function(e,t,r){"use strict";var a=e("./createError");t.exports=function(e,t,r){var n=r.config.validateStatus;!n||n(r.status)?e(r):t(a("Request failed with status code "+r.status,r.config,null,r.request,r))}},{"./createError":12}],17:[function(e,t,r){"use strict";var utils=e("./../utils");t.exports=function(t,r,e){return utils.forEach(e,function(e){t=e(t,r)}),t}},{"./../utils":28}],18:[function(i,s,e){(function(e){"use strict";var utils=i("./utils"),r=i("./helpers/normalizeHeaderName"),t={"Content-Type":"application/x-www-form-urlencoded"};function n(e,t){!utils.isUndefined(e)&&utils.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var a,o={adapter:("undefined"!=typeof XMLHttpRequest?a=i("./adapters/xhr"):void 0!==e&&"[object process]"===Object.prototype.toString.call(e)&&(a=i("./adapters/http")),a),transformRequest:[function(e,t){return r(t,"Accept"),r(t,"Content-Type"),utils.isFormData(e)||utils.isArrayBuffer(e)||utils.isBuffer(e)||utils.isStream(e)||utils.isFile(e)||utils.isBlob(e)?e:utils.isArrayBufferView(e)?e.buffer:utils.isURLSearchParams(e)?(n(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):utils.isObject(e)?(n(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return 200<=e&&e<300}};o.headers={common:{Accept:"application/json, text/plain, */*"}},utils.forEach(["delete","get","head"],function(e){o.headers[e]={}}),utils.forEach(["post","put","patch"],function(e){o.headers[e]=utils.merge(t)}),s.exports=o}).call(this,i("_process"))},{"./adapters/http":4,"./adapters/xhr":4,"./helpers/normalizeHeaderName":25,"./utils":28,_process:236}],19:[function(e,t,r){"use strict";t.exports=function(r,n){return function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];return r.apply(n,e)}}},{}],20:[function(e,t,r){"use strict";var utils=e("./../utils");function i(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(e,t,r){if(!t)return e;var n;if(r)n=r(t);else if(utils.isURLSearchParams(t))n=t.toString();else{var a=[];utils.forEach(t,function(e,t){null!=e&&(utils.isArray(e)?t+="[]":e=[e],utils.forEach(e,function(e){utils.isDate(e)?e=e.toISOString():utils.isObject(e)&&(e=JSON.stringify(e)),a.push(i(t)+"="+i(e))}))}),n=a.join("&")}if(n){var o=e.indexOf("#");-1!==o&&(e=e.slice(0,o)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}},{"./../utils":28}],21:[function(e,t,r){"use strict";t.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},{}],22:[function(e,t,r){"use strict";var utils=e("./../utils");t.exports=utils.isStandardBrowserEnv()?{write:function(e,t,r,n,a,o){var i=[];i.push(e+"="+encodeURIComponent(t)),utils.isNumber(r)&&i.push("expires="+new Date(r).toGMTString()),utils.isString(n)&&i.push("path="+n),utils.isString(a)&&i.push("domain="+a),!0===o&&i.push("secure"),document.cookie=i.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},{"./../utils":28}],23:[function(e,t,r){"use strict";t.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},{}],24:[function(e,t,r){"use strict";var n,a,o,utils=e("./../utils");function i(e){var t=e;return a&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}t.exports=utils.isStandardBrowserEnv()?(a=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a"),n=i(window.location.href),function(e){var t=utils.isString(e)?i(e):e;return t.protocol===n.protocol&&t.host===n.host}):function(){return!0}},{"./../utils":28}],25:[function(e,t,r){"use strict";var utils=e("../utils");t.exports=function(r,n){utils.forEach(r,function(e,t){t!==n&&t.toUpperCase()===n.toUpperCase()&&(r[n]=e,delete r[t])})}},{"../utils":28}],26:[function(e,t,r){"use strict";var utils=e("./../utils"),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(e){var t,r,n,a={};return e&&utils.forEach(e.split("\n"),function(e){if(n=e.indexOf(":"),t=utils.trim(e.substr(0,n)).toLowerCase(),r=utils.trim(e.substr(n+1)),t){if(a[t]&&0<=o.indexOf(t))return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([r]):a[t]?a[t]+", "+r:r}}),a}},{"./../utils":28}],27:[function(e,t,r){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},{}],28:[function(e,t,r){"use strict";var a=e("./helpers/bind"),n=Object.prototype.toString;function o(e){return"[object Array]"===n.call(e)}function i(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function l(e){return"[object Function]"===n.call(e)}function u(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var r=0,n=e.length;r<n;r++)t.call(null,e[r],r,e);else for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.call(null,e[a],a,e)}t.exports={isArray:o,isArrayBuffer:function(e){return"[object ArrayBuffer]"===n.call(e)},isBuffer:function(e){return null!==e&&!i(e)&&null!==e.constructor&&!i(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:s,isUndefined:i,isDate:function(e){return"[object Date]"===n.call(e)},isFile:function(e){return"[object File]"===n.call(e)},isBlob:function(e){return"[object Blob]"===n.call(e)},isFunction:l,isStream:function(e){return s(e)&&l(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&(void 0!==window&&void 0!==document)},forEach:u,merge:function r(){var n={};function e(e,t){"object"==typeof n[t]&&"object"==typeof e?n[t]=r(n[t],e):n[t]=e}for(var t=0,a=arguments.length;t<a;t++)u(arguments[t],e);return n},deepMerge:function r(){var n={};function e(e,t){"object"==typeof n[t]&&"object"==typeof e?n[t]=r(n[t],e):n[t]="object"==typeof e?r({},e):e}for(var t=0,a=arguments.length;t<a;t++)u(arguments[t],e);return n},extend:function(r,e,n){return u(e,function(e,t){r[t]=n&&"function"==typeof e?a(e,n):e}),r},trim:function(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}}},{"./helpers/bind":19}],29:[function(e,t,r){e("../../modules/es.typed-array.from"),e("../../modules/es.typed-array.of"),e("../../modules/es.typed-array.copy-within"),e("../../modules/es.typed-array.every"),e("../../modules/es.typed-array.fill"),e("../../modules/es.typed-array.filter"),e("../../modules/es.typed-array.find"),e("../../modules/es.typed-array.find-index"),e("../../modules/es.typed-array.for-each"),e("../../modules/es.typed-array.includes"),e("../../modules/es.typed-array.index-of"),e("../../modules/es.typed-array.join"),e("../../modules/es.typed-array.last-index-of"),e("../../modules/es.typed-array.map"),e("../../modules/es.typed-array.reduce"),e("../../modules/es.typed-array.reduce-right"),e("../../modules/es.typed-array.reverse"),e("../../modules/es.typed-array.set"),e("../../modules/es.typed-array.slice"),e("../../modules/es.typed-array.some"),e("../../modules/es.typed-array.sort"),e("../../modules/es.typed-array.subarray"),e("../../modules/es.typed-array.to-locale-string"),e("../../modules/es.typed-array.to-string"),e("../../modules/es.typed-array.iterator"),e("../../modules/es.object.to-string")},{"../../modules/es.object.to-string":128,"../../modules/es.typed-array.copy-within":129,"../../modules/es.typed-array.every":130,"../../modules/es.typed-array.fill":131,"../../modules/es.typed-array.filter":132,"../../modules/es.typed-array.find":134,"../../modules/es.typed-array.find-index":133,"../../modules/es.typed-array.for-each":135,"../../modules/es.typed-array.from":136,"../../modules/es.typed-array.includes":137,"../../modules/es.typed-array.index-of":138,"../../modules/es.typed-array.iterator":139,"../../modules/es.typed-array.join":140,"../../modules/es.typed-array.last-index-of":141,"../../modules/es.typed-array.map":142,"../../modules/es.typed-array.of":143,"../../modules/es.typed-array.reduce":145,"../../modules/es.typed-array.reduce-right":144,"../../modules/es.typed-array.reverse":146,"../../modules/es.typed-array.set":147,"../../modules/es.typed-array.slice":148,"../../modules/es.typed-array.some":149,"../../modules/es.typed-array.sort":150,"../../modules/es.typed-array.subarray":151,"../../modules/es.typed-array.to-locale-string":152,"../../modules/es.typed-array.to-string":153}],30:[function(e,t,r){e("../../modules/es.typed-array.uint32-array"),e("./methods");var n=e("../../internals/global");t.exports=n.Uint32Array},{"../../internals/global":68,"../../modules/es.typed-array.uint32-array":154,"./methods":29}],31:[function(e,t,r){e("../../modules/es.typed-array.reduce")},{"../../modules/es.typed-array.reduce":145}],32:[function(e,t,r){e("../../modules/es.typed-array.some")},{"../../modules/es.typed-array.some":149}],33:[function(e,t,r){var n=e("../../es/typed-array/uint32-array");t.exports=n},{"../../es/typed-array/uint32-array":30}],34:[function(e,t,r){t.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},{}],35:[function(e,t,r){var n=e("../internals/is-object");t.exports=function(e){if(!n(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},{"../internals/is-object":81}],36:[function(e,t,r){var n=e("../internals/well-known-symbol"),a=e("../internals/object-create"),o=e("../internals/object-define-property"),i=n("unscopables"),s=Array.prototype;null==s[i]&&o.f(s,i,{configurable:!0,value:a(null)}),t.exports=function(e){s[i][e]=!0}},{"../internals/object-create":87,"../internals/object-define-property":89,"../internals/well-known-symbol":126}],37:[function(e,t,r){t.exports=function(e,t,r){if(!(e instanceof t))throw TypeError("Incorrect "+(r?r+" ":"")+"invocation");return e}},{}],38:[function(e,t,r){var n=e("../internals/is-object");t.exports=function(e){if(!n(e))throw TypeError(String(e)+" is not an object");return e}},{"../internals/is-object":81}],39:[function(e,t,r){t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},{}],40:[function(e,t,r){"use strict";function n(e){return l(e)&&u(N,c(e))}var a,o=e("../internals/array-buffer-native"),i=e("../internals/descriptors"),s=e("../internals/global"),l=e("../internals/is-object"),u=e("../internals/has"),c=e("../internals/classof"),d=e("../internals/create-non-enumerable-property"),p=e("../internals/redefine"),m=e("../internals/object-define-property").f,f=e("../internals/object-get-prototype-of"),h=e("../internals/object-set-prototype-of"),b=e("../internals/well-known-symbol"),g=e("../internals/uid"),y=s.Int8Array,v=y&&y.prototype,w=s.Uint8ClampedArray,x=w&&w.prototype,k=y&&f(y),D=v&&f(v),E=Object.prototype,A=E.isPrototypeOf,j=b("toStringTag"),C=g("TYPED_ARRAY_TAG"),F=o&&!!h&&"Opera"!==c(s.opera),T=!1,N={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8};for(a in N)s[a]||(F=!1);if((!F||"function"!=typeof k||k===Function.prototype)&&(k=function(){throw TypeError("Incorrect invocation")},F))for(a in N)s[a]&&h(s[a],k);if((!F||!D||D===E)&&(D=k.prototype,F))for(a in N)s[a]&&h(s[a].prototype,D);if(F&&f(x)!==D&&h(x,D),i&&!u(D,j))for(a in T=!0,m(D,j,{get:function(){return l(this)?this[C]:void 0}}),N)s[a]&&d(s[a],C,a);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:F,TYPED_ARRAY_TAG:T&&C,aTypedArray:function(e){if(n(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(A.call(k,e))return e}else for(var t in N)if(u(N,a)){var r=s[t];if(r&&(e===r||A.call(r,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,r){if(i){if(r)for(var n in N){var a=s[n];a&&u(a.prototype,e)&&delete a.prototype[e]}D[e]&&!r||p(D,e,!r&&F&&v[e]||t)}},exportTypedArrayStaticMethod:function(e,t,r){var n,a;if(i){if(h){if(r)for(n in N)(a=s[n])&&u(a,e)&&delete a[e];if(k[e]&&!r)return;try{return p(k,e,!r&&F&&y[e]||t)}catch(e){}}for(n in N)!(a=s[n])||a[e]&&!r||p(a,e,t)}},isView:function(e){var t=c(e);return"DataView"===t||u(N,t)},isTypedArray:n,TypedArray:k,TypedArrayPrototype:D}},{"../internals/array-buffer-native":39,"../internals/classof":53,"../internals/create-non-enumerable-property":57,"../internals/descriptors":60,"../internals/global":68,"../internals/has":69,"../internals/is-object":81,"../internals/object-define-property":89,"../internals/object-get-prototype-of":93,"../internals/object-set-prototype-of":97,"../internals/redefine":102,"../internals/uid":124,"../internals/well-known-symbol":126}],41:[function(e,t,r){"use strict";function n(e){return[255&e]}function a(e){return[255&e,e>>8&255]}function o(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function i(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function s(e){return V(e,23,4)}function l(e){return V(e,52,8)}function u(e,t){j(e[O],t,{get:function(){return N(this)[t]}})}function c(e,t,r,n){var a=x(r),o=N(e);if(a+t>o.byteLength)throw M(_);var i=N(o.buffer).bytes,s=a+o.byteOffset,l=i.slice(s,s+t);return n?l:l.reverse()}function d(e,t,r,n,a,o){var i=x(r),s=N(e);if(i+t>s.byteLength)throw M(_);for(var l=N(s.buffer).bytes,u=i+s.byteOffset,c=n(+a),d=0;d<t;d++)l[u+d]=c[o?d:t-d-1]}var p=e("../internals/global"),m=e("../internals/descriptors"),f=e("../internals/array-buffer-native"),h=e("../internals/create-non-enumerable-property"),b=e("../internals/redefine-all"),g=e("../internals/fails"),y=e("../internals/an-instance"),v=e("../internals/to-integer"),w=e("../internals/to-length"),x=e("../internals/to-index"),k=e("../internals/ieee754"),D=e("../internals/object-get-prototype-of"),E=e("../internals/object-set-prototype-of"),A=e("../internals/object-get-own-property-names").f,j=e("../internals/object-define-property").f,C=e("../internals/array-fill"),F=e("../internals/set-to-string-tag"),T=e("../internals/internal-state"),N=T.get,S=T.set,z="ArrayBuffer",q="DataView",O="prototype",_="Wrong index",R=p[z],P=R,I=p[q],L=I&&I[O],B=Object.prototype,M=p.RangeError,V=k.pack,U=k.unpack;if(f){if(!g(function(){R(1)})||!g(function(){new R(-1)})||g(function(){return new R,new R(1.5),new R(NaN),R.name!=z})){for(var H,$=(P=function(e){return y(this,P),new R(x(e))})[O]=R[O],G=A(R),W=0;G.length>W;)(H=G[W++])in P||h(P,H,R[H]);$.constructor=P}E&&D(L)!==B&&E(L,B);var Y=new I(new P(2)),K=L.setInt8;Y.setInt8(0,2147483648),Y.setInt8(1,2147483649),!Y.getInt8(0)&&Y.getInt8(1)||b(L,{setInt8:function(e,t){K.call(this,e,t<<24>>24)},setUint8:function(e,t){K.call(this,e,t<<24>>24)}},{unsafe:!0})}else P=function(e){y(this,P,z);var t=x(e);S(this,{bytes:C.call(new Array(t),0),byteLength:t}),m||(this.byteLength=t)},I=function(e,t,r){y(this,I,q),y(e,P,q);var n=N(e).byteLength,a=v(t);if(a<0||n<a)throw M("Wrong offset");if(n<a+(r=void 0===r?n-a:w(r)))throw M("Wrong length");S(this,{buffer:e,byteLength:r,byteOffset:a}),m||(this.buffer=e,this.byteLength=r,this.byteOffset=a)},m&&(u(P,"byteLength"),u(I,"buffer"),u(I,"byteLength"),u(I,"byteOffset")),b(I[O],{getInt8:function(e){return c(this,1,e)[0]<<24>>24},getUint8:function(e){return c(this,1,e)[0]},getInt16:function(e,t){var r=c(this,2,e,1<arguments.length?t:void 0);return(r[1]<<8|r[0])<<16>>16},getUint16:function(e,t){var r=c(this,2,e,1<arguments.length?t:void 0);return r[1]<<8|r[0]},getInt32:function(e,t){return i(c(this,4,e,1<arguments.length?t:void 0))},getUint32:function(e,t){return i(c(this,4,e,1<arguments.length?t:void 0))>>>0},getFloat32:function(e,t){return U(c(this,4,e,1<arguments.length?t:void 0),23)},getFloat64:function(e,t){return U(c(this,8,e,1<arguments.length?t:void 0),52)},setInt8:function(e,t){d(this,1,e,n,t)},setUint8:function(e,t){d(this,1,e,n,t)},setInt16:function(e,t,r){d(this,2,e,a,t,2<arguments.length?r:void 0)},setUint16:function(e,t,r){d(this,2,e,a,t,2<arguments.length?r:void 0)},setInt32:function(e,t,r){d(this,4,e,o,t,2<arguments.length?r:void 0)},setUint32:function(e,t,r){d(this,4,e,o,t,2<arguments.length?r:void 0)},setFloat32:function(e,t,r){d(this,4,e,s,t,2<arguments.length?r:void 0)},setFloat64:function(e,t,r){d(this,8,e,l,t,2<arguments.length?r:void 0)}});F(P,z),F(I,q),t.exports={ArrayBuffer:P,DataView:I}},{"../internals/an-instance":37,"../internals/array-buffer-native":39,"../internals/array-fill":43,"../internals/create-non-enumerable-property":57,"../internals/descriptors":60,"../internals/fails":64,"../internals/global":68,"../internals/ieee754":73,"../internals/internal-state":77,"../internals/object-define-property":89,"../internals/object-get-own-property-names":91,"../internals/object-get-prototype-of":93,"../internals/object-set-prototype-of":97,"../internals/redefine-all":101,"../internals/set-to-string-tag":106,"../internals/to-index":112,"../internals/to-integer":114,"../internals/to-length":115}],42:[function(e,t,r){"use strict";var c=e("../internals/to-object"),d=e("../internals/to-absolute-index"),p=e("../internals/to-length"),m=Math.min;t.exports=[].copyWithin||function(e,t,r){var n=c(this),a=p(n.length),o=d(e,a),i=d(t,a),s=2<arguments.length?r:void 0,l=m((void 0===s?a:d(s,a))-i,a-o),u=1;for(i<o&&o<i+l&&(u=-1,i+=l-1,o+=l-1);0<l--;)i in n?n[o]=n[i]:delete n[o],o+=u,i+=u;return n}},{"../internals/to-absolute-index":111,"../internals/to-length":115,"../internals/to-object":116}],43:[function(e,t,r){"use strict";var u=e("../internals/to-object"),c=e("../internals/to-absolute-index"),d=e("../internals/to-length");t.exports=function(e,t,r){for(var n=u(this),a=d(n.length),o=arguments.length,i=c(1<o?t:void 0,a),s=2<o?r:void 0,l=void 0===s?a:c(s,a);i<l;)n[i++]=e;return n}},{"../internals/to-absolute-index":111,"../internals/to-length":115,"../internals/to-object":116}],44:[function(e,t,r){function n(s){return function(e,t,r){var n,a=l(e),o=u(a.length),i=c(r,o);if(s&&t!=t){for(;i<o;)if((n=a[i++])!=n)return!0}else for(;i<o;i++)if((s||i in a)&&a[i]===t)return s||i||0;return!s&&-1}}var l=e("../internals/to-indexed-object"),u=e("../internals/to-length"),c=e("../internals/to-absolute-index");t.exports={includes:n(!0),indexOf:n(!1)}},{"../internals/to-absolute-index":111,"../internals/to-indexed-object":113,"../internals/to-length":115}],45:[function(e,t,r){function n(m){var f=1==m,h=2==m,b=3==m,g=4==m,y=6==m,v=5==m||y;return function(e,t,r,n){for(var a,o,i=k(e),s=x(i),l=w(t,r,3),u=D(s.length),c=0,d=n||E,p=f?d(e,u):h?d(e,0):void 0;c<u;c++)if((v||c in s)&&(o=l(a=s[c],c,i),m))if(f)p[c]=o;else if(o)switch(m){case 3:return!0;case 5:return a;case 6:return c;case 2:A.call(p,a)}else if(g)return!1;return y?-1:b||g?g:p}}var w=e("../internals/function-bind-context"),x=e("../internals/indexed-object"),k=e("../internals/to-object"),D=e("../internals/to-length"),E=e("../internals/array-species-create"),A=[].push;t.exports={forEach:n(0),map:n(1),filter:n(2),some:n(3),every:n(4),find:n(5),findIndex:n(6)}},{"../internals/array-species-create":50,"../internals/function-bind-context":65,"../internals/indexed-object":74,"../internals/to-length":115,"../internals/to-object":116}],46:[function(e,t,r){"use strict";var o=e("../internals/to-indexed-object"),i=e("../internals/to-integer"),s=e("../internals/to-length"),n=e("../internals/array-method-is-strict"),a=e("../internals/array-method-uses-to-length"),l=Math.min,u=[].lastIndexOf,c=!!u&&1/[1].lastIndexOf(1,-0)<0,d=n("lastIndexOf"),p=a("indexOf",{ACCESSORS:!0,1:0}),m=c||!d||!p;t.exports=m?function(e,t){if(c)return u.apply(this,arguments)||0;var r=o(this),n=s(r.length),a=n-1;for(1<arguments.length&&(a=l(a,i(t))),a<0&&(a=n+a);0<=a;a--)if(a in r&&r[a]===e)return a||0;return-1}:u},{"../internals/array-method-is-strict":47,"../internals/array-method-uses-to-length":48,"../internals/to-indexed-object":113,"../internals/to-integer":114,"../internals/to-length":115}],47:[function(e,t,r){"use strict";var n=e("../internals/fails");t.exports=function(e,t){var r=[][e];return!!r&&n(function(){r.call(null,t||function(){throw 1},1)})}},{"../internals/fails":64}],48:[function(e,t,r){function i(e){throw e}var s=e("../internals/descriptors"),l=e("../internals/fails"),u=e("../internals/has"),c=Object.defineProperty,d={};t.exports=function(e,t){if(u(d,e))return d[e];var r=[][e],n=!!u(t=t||{},"ACCESSORS")&&t.ACCESSORS,a=u(t,0)?t[0]:i,o=u(t,1)?t[1]:void 0;return d[e]=!!r&&!l(function(){if(n&&!s)return!0;var e={length:-1};n?c(e,1,{enumerable:!0,get:i}):e[1]=1,r.call(e,a,o)})}},{"../internals/descriptors":60,"../internals/fails":64,"../internals/has":69}],49:[function(e,t,r){function n(u){return function(e,t,r,n){c(t);var a=d(e),o=p(a),i=m(a.length),s=u?i-1:0,l=u?-1:1;if(r<2)for(;;){if(s in o){n=o[s],s+=l;break}if(s+=l,u?s<0:i<=s)throw TypeError("Reduce of empty array with no initial value")}for(;u?0<=s:s<i;s+=l)s in o&&(n=t(n,o[s],s,a));return n}}var c=e("../internals/a-function"),d=e("../internals/to-object"),p=e("../internals/indexed-object"),m=e("../internals/to-length");t.exports={left:n(!1),right:n(!0)}},{"../internals/a-function":34,"../internals/indexed-object":74,"../internals/to-length":115,"../internals/to-object":116}],50:[function(e,t,r){var n=e("../internals/is-object"),a=e("../internals/is-array"),o=e("../internals/well-known-symbol")("species");t.exports=function(e,t){var r;return a(e)&&("function"==typeof(r=e.constructor)&&(r===Array||a(r.prototype))||n(r)&&null===(r=r[o]))&&(r=void 0),new(void 0===r?Array:r)(0===t?0:t)}},{"../internals/is-array":79,"../internals/is-object":81,"../internals/well-known-symbol":126}],51:[function(e,t,r){var a=e("../internals/well-known-symbol")("iterator"),o=!1;try{var n=0,i={next:function(){return{done:!!n++}},return:function(){o=!0}};i[a]=function(){return this},Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var n={};n[a]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch(e){}return r}},{"../internals/well-known-symbol":126}],52:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],53:[function(e,t,r){var n=e("../internals/to-string-tag-support"),a=e("../internals/classof-raw"),o=e("../internals/well-known-symbol")("toStringTag"),i="Arguments"==a(function(){return arguments}());t.exports=n?a:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:i?a(t):"Object"==(n=a(t))&&"function"==typeof t.callee?"Arguments":n}},{"../internals/classof-raw":52,"../internals/to-string-tag-support":120,"../internals/well-known-symbol":126}],54:[function(e,t,r){var s=e("../internals/has"),l=e("../internals/own-keys"),u=e("../internals/object-get-own-property-descriptor"),c=e("../internals/object-define-property");t.exports=function(e,t){for(var r=l(t),n=c.f,a=u.f,o=0;o<r.length;o++){var i=r[o];s(e,i)||n(e,i,a(t,i))}}},{"../internals/has":69,"../internals/object-define-property":89,"../internals/object-get-own-property-descriptor":90,"../internals/own-keys":99}],55:[function(e,t,r){var n=e("../internals/fails");t.exports=!n(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},{"../internals/fails":64}],56:[function(e,t,r){"use strict";function a(){return this}var o=e("../internals/iterators-core").IteratorPrototype,i=e("../internals/object-create"),s=e("../internals/create-property-descriptor"),l=e("../internals/set-to-string-tag"),u=e("../internals/iterators");t.exports=function(e,t,r){var n=t+" Iterator";return e.prototype=i(o,{next:s(1,r)}),l(e,n,!1,!0),u[n]=a,e}},{"../internals/create-property-descriptor":58,"../internals/iterators":84,"../internals/iterators-core":83,"../internals/object-create":87,"../internals/set-to-string-tag":106}],57:[function(e,t,r){var n=e("../internals/descriptors"),a=e("../internals/object-define-property"),o=e("../internals/create-property-descriptor");t.exports=n?function(e,t,r){return a.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"../internals/create-property-descriptor":58,"../internals/descriptors":60,"../internals/object-define-property":89}],58:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],59:[function(e,t,r){"use strict";function g(){return this}var y=e("../internals/export"),v=e("../internals/create-iterator-constructor"),w=e("../internals/object-get-prototype-of"),x=e("../internals/object-set-prototype-of"),k=e("../internals/set-to-string-tag"),D=e("../internals/create-non-enumerable-property"),E=e("../internals/redefine"),n=e("../internals/well-known-symbol"),A=e("../internals/is-pure"),j=e("../internals/iterators"),a=e("../internals/iterators-core"),C=a.IteratorPrototype,F=a.BUGGY_SAFARI_ITERATORS,T=n("iterator"),N="values",S="entries";t.exports=function(e,t,r,n,a,o,i){v(r,t,n);function s(e){if(e===a&&h)return h;if(!F&&e in m)return m[e];switch(e){case"keys":case N:case S:return function(){return new r(this,e)}}return function(){return new r(this)}}var l,u,c,d=t+" Iterator",p=!1,m=e.prototype,f=m[T]||m["@@iterator"]||a&&m[a],h=!F&&f||s(a),b="Array"==t&&m.entries||f;if(b&&(l=w(b.call(new e)),C!==Object.prototype&&l.next&&(A||w(l)===C||(x?x(l,C):"function"!=typeof l[T]&&D(l,T,g)),k(l,d,!0,!0),A&&(j[d]=g))),a==N&&f&&f.name!==N&&(p=!0,h=function(){return f.call(this)}),A&&!i||m[T]===h||D(m,T,h),j[t]=h,a)if(u={values:s(N),keys:o?h:s("keys"),entries:s(S)},i)for(c in u)!F&&!p&&c in m||E(m,c,u[c]);else y({target:t,proto:!0,forced:F||p},u);return u}},{"../internals/create-iterator-constructor":56,"../internals/create-non-enumerable-property":57,"../internals/export":63,"../internals/is-pure":82,"../internals/iterators":84,"../internals/iterators-core":83,"../internals/object-get-prototype-of":93,"../internals/object-set-prototype-of":97,"../internals/redefine":102,"../internals/set-to-string-tag":106,"../internals/well-known-symbol":126}],60:[function(e,t,r){var n=e("../internals/fails");t.exports=!n(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},{"../internals/fails":64}],61:[function(e,t,r){var n=e("../internals/global"),a=e("../internals/is-object"),document=n.document,o=a(document)&&a(document.createElement);t.exports=function(e){return o?document.createElement(e):{}}},{"../internals/global":68,"../internals/is-object":81}],62:[function(e,t,r){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],63:[function(e,t,r){var c=e("../internals/global"),d=e("../internals/object-get-own-property-descriptor").f,p=e("../internals/create-non-enumerable-property"),m=e("../internals/redefine"),f=e("../internals/set-global"),h=e("../internals/copy-constructor-properties"),b=e("../internals/is-forced");t.exports=function(e,t){var r,n,a,o,i,s=e.target,l=e.global,u=e.stat;if(r=l?c:u?c[s]||f(s,{}):(c[s]||{}).prototype)for(n in t){if(o=t[n],a=e.noTargetGet?(i=d(r,n))&&i.value:r[n],!b(l?n:s+(u?".":"#")+n,e.forced)&&void 0!==a){if(typeof o==typeof a)continue;h(o,a)}(e.sham||a&&a.sham)&&p(o,"sham",!0),m(r,n,o,e)}}},{"../internals/copy-constructor-properties":54,"../internals/create-non-enumerable-property":57,"../internals/global":68,"../internals/is-forced":80,"../internals/object-get-own-property-descriptor":90,"../internals/redefine":102,"../internals/set-global":104}],64:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],65:[function(e,t,r){var o=e("../internals/a-function");t.exports=function(n,a,e){if(o(n),void 0===a)return n;switch(e){case 0:return function(){return n.call(a)};case 1:return function(e){return n.call(a,e)};case 2:return function(e,t){return n.call(a,e,t)};case 3:return function(e,t,r){return n.call(a,e,t,r)}}return function(){return n.apply(a,arguments)}}},{"../internals/a-function":34}],66:[function(e,t,r){function n(e){return"function"==typeof e?e:void 0}var a=e("../internals/path"),o=e("../internals/global");t.exports=function(e,t){return arguments.length<2?n(a[e])||n(o[e]):a[e]&&a[e][t]||o[e]&&o[e][t]}},{"../internals/global":68,"../internals/path":100}],67:[function(e,t,r){var n=e("../internals/classof"),a=e("../internals/iterators"),o=e("../internals/well-known-symbol")("iterator");t.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||a[n(e)]}},{"../internals/classof":53,"../internals/iterators":84,"../internals/well-known-symbol":126}],68:[function(e,r,t){(function(e){function t(e){return e&&e.Math==Math&&e}r.exports=t("object"==typeof globalThis&&globalThis)||t("object"==typeof window&&window)||t("object"==typeof self&&self)||t("object"==typeof e&&e)||Function("return this")()}).call(this,void 0!==a?a:"undefined"!=typeof self?self:void 0!==window?window:{})},{}],69:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],70:[function(e,t,r){t.exports={}},{}],71:[function(e,t,r){var n=e("../internals/get-built-in");t.exports=n("document","documentElement")},{"../internals/get-built-in":66}],72:[function(e,t,r){var n=e("../internals/descriptors"),a=e("../internals/fails"),o=e("../internals/document-create-element");t.exports=!n&&!a(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},{"../internals/descriptors":60,"../internals/document-create-element":61,"../internals/fails":64}],73:[function(e,t,r){var m=Math.abs,f=Math.pow,h=Math.floor,b=Math.log,g=Math.LN2;t.exports={pack:function(e,t,r){var n,a,o,i=new Array(r),s=8*r-t-1,l=(1<<s)-1,u=l>>1,c=23===t?f(2,-24)-f(2,-77):0,d=e<0||0===e&&1/e<0?1:0,p=0;for((e=m(e))!=e||e===1/0?(a=e!=e?1:0,n=l):(n=h(b(e)/g),e*(o=f(2,-n))<1&&(n--,o*=2),2<=(e+=1<=n+u?c/o:c*f(2,1-u))*o&&(n++,o/=2),l<=n+u?(a=0,n=l):1<=n+u?(a=(e*o-1)*f(2,t),n+=u):(a=e*f(2,u-1)*f(2,t),n=0));8<=t;i[p++]=255&a,a/=256,t-=8);for(n=n<<t|a,s+=t;0<s;i[p++]=255&n,n/=256,s-=8);return i[--p]|=128*d,i},unpack:function(e,t){var r,n=e.length,a=8*n-t-1,o=(1<<a)-1,i=o>>1,s=a-7,l=n-1,u=e[l--],c=127&u;for(u>>=7;0<s;c=256*c+e[l],l--,s-=8);for(r=c&(1<<-s)-1,c>>=-s,s+=t;0<s;r=256*r+e[l],l--,s-=8);if(0===c)c=1-i;else{if(c===o)return r?NaN:u?-1/0:1/0;r+=f(2,t),c-=i}return(u?-1:1)*r*f(2,c-t)}}},{}],74:[function(e,t,r){var n=e("../internals/fails"),a=e("../internals/classof-raw"),o="".split;t.exports=n(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==a(e)?o.call(e,""):Object(e)}:Object},{"../internals/classof-raw":52,"../internals/fails":64}],75:[function(e,t,r){var o=e("../internals/is-object"),i=e("../internals/object-set-prototype-of");t.exports=function(e,t,r){var n,a;return i&&"function"==typeof(n=t.constructor)&&n!==r&&o(a=n.prototype)&&a!==r.prototype&&i(e,a),e}},{"../internals/is-object":81,"../internals/object-set-prototype-of":97}],76:[function(e,t,r){var n=e("../internals/shared-store"),a=Function.toString;"function"!=typeof n.inspectSource&&(n.inspectSource=function(e){return a.call(e)}),t.exports=n.inspectSource},{"../internals/shared-store":108}],77:[function(e,t,r){var n,a,o,i=e("../internals/native-weak-map"),s=e("../internals/global"),l=e("../internals/is-object"),u=e("../internals/create-non-enumerable-property"),c=e("../internals/has"),d=e("../internals/shared-key"),p=e("../internals/hidden-keys"),m=s.WeakMap;if(i){var f=new m,h=f.get,b=f.has,g=f.set;n=function(e,t){return g.call(f,e,t),t},a=function(e){return h.call(f,e)||{}},o=function(e){return b.call(f,e)}}else{var y=d("state");p[y]=!0,n=function(e,t){return u(e,y,t),t},a=function(e){return c(e,y)?e[y]:{}},o=function(e){return c(e,y)}}t.exports={set:n,get:a,has:o,enforce:function(e){return o(e)?a(e):n(e,{})},getterFor:function(r){return function(e){var t;if(!l(e)||(t=a(e)).type!==r)throw TypeError("Incompatible receiver, "+r+" required");return t}}}},{"../internals/create-non-enumerable-property":57,"../internals/global":68,"../internals/has":69,"../internals/hidden-keys":70,"../internals/is-object":81,"../internals/native-weak-map":86,"../internals/shared-key":107}],78:[function(e,t,r){var n=e("../internals/well-known-symbol"),a=e("../internals/iterators"),o=n("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(a.Array===e||i[o]===e)}},{"../internals/iterators":84,"../internals/well-known-symbol":126}],79:[function(e,t,r){var n=e("../internals/classof-raw");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"../internals/classof-raw":52}],80:[function(e,t,r){function n(e,t){var r=s[i(e)];return r==u||r!=l&&("function"==typeof t?a(t):!!t)}var a=e("../internals/fails"),o=/#|\.prototype\./,i=n.normalize=function(e){return String(e).replace(o,".").toLowerCase()},s=n.data={},l=n.NATIVE="N",u=n.POLYFILL="P";t.exports=n},{"../internals/fails":64}],81:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],82:[function(e,t,r){t.exports=!1},{}],83:[function(e,t,r){"use strict";var n,a,o,i=e("../internals/object-get-prototype-of"),s=e("../internals/create-non-enumerable-property"),l=e("../internals/has"),u=e("../internals/well-known-symbol"),c=e("../internals/is-pure"),d=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(a=i(i(o)))!==Object.prototype&&(n=a):p=!0),null==n&&(n={}),c||l(n,d)||s(n,d,function(){return this}),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:p}},{"../internals/create-non-enumerable-property":57,"../internals/has":69,"../internals/is-pure":82,"../internals/object-get-prototype-of":93,"../internals/well-known-symbol":126}],84:[function(e,t,r){arguments[4][70][0].apply(r,arguments)},{dup:70}],85:[function(e,t,r){var n=e("../internals/fails");t.exports=!!Object.getOwnPropertySymbols&&!n(function(){return!String(Symbol())})},{"../internals/fails":64}],86:[function(e,t,r){var n=e("../internals/global"),a=e("../internals/inspect-source"),o=n.WeakMap;t.exports="function"==typeof o&&/native code/.test(a(o))},{"../internals/global":68,"../internals/inspect-source":76}],87:[function(e,t,r){function n(){}function a(e){return"<script>"+e+"</"+f+">"}var o,i=e("../internals/an-object"),s=e("../internals/object-define-properties"),l=e("../internals/enum-bug-keys"),u=e("../internals/hidden-keys"),c=e("../internals/html"),d=e("../internals/document-create-element"),p=e("../internals/shared-key"),m="prototype",f="script",h=p("IE_PROTO"),b=function(){try{o=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;b=o?function(e){e.write(a("")),e.close();var t=e.parentWindow.Object;return e=null,t}(o):((t=d("iframe")).style.display="none",c.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(a("document.F=Object")),e.close(),e.F);for(var r=l.length;r--;)delete b[m][l[r]];return b()};u[h]=!0,t.exports=Object.create||function(e,t){var r;return null!==e?(n[m]=i(e),r=new n,n[m]=null,r[h]=e):r=b(),void 0===t?r:s(r,t)}},{"../internals/an-object":38,"../internals/document-create-element":61,"../internals/enum-bug-keys":62,"../internals/hidden-keys":70,"../internals/html":71,"../internals/object-define-properties":88,"../internals/shared-key":107}],88:[function(e,t,r){var n=e("../internals/descriptors"),i=e("../internals/object-define-property"),s=e("../internals/an-object"),l=e("../internals/object-keys");t.exports=n?Object.defineProperties:function(e,t){s(e);for(var r,n=l(t),a=n.length,o=0;o<a;)i.f(e,r=n[o++],t[r]);return e}},{"../internals/an-object":38,"../internals/descriptors":60,"../internals/object-define-property":89,"../internals/object-keys":95}],89:[function(e,t,r){var n=e("../internals/descriptors"),a=e("../internals/ie8-dom-define"),o=e("../internals/an-object"),i=e("../internals/to-primitive"),s=Object.defineProperty;r.f=n?s:function(e,t,r){if(o(e),t=i(t,!0),o(r),a)try{return s(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},{"../internals/an-object":38,"../internals/descriptors":60,"../internals/ie8-dom-define":72,"../internals/to-primitive":119}],90:[function(e,t,r){var n=e("../internals/descriptors"),a=e("../internals/object-property-is-enumerable"),o=e("../internals/create-property-descriptor"),i=e("../internals/to-indexed-object"),s=e("../internals/to-primitive"),l=e("../internals/has"),u=e("../internals/ie8-dom-define"),c=Object.getOwnPropertyDescriptor;r.f=n?c:function(e,t){if(e=i(e),t=s(t,!0),u)try{return c(e,t)}catch(e){}if(l(e,t))return o(!a.f.call(e,t),e[t])}},{"../internals/create-property-descriptor":58,"../internals/descriptors":60,"../internals/has":69,"../internals/ie8-dom-define":72,"../internals/object-property-is-enumerable":96,"../internals/to-indexed-object":113,"../internals/to-primitive":119}],91:[function(e,t,r){var n=e("../internals/object-keys-internal"),a=e("../internals/enum-bug-keys").concat("length","prototype");r.f=Object.getOwnPropertyNames||function(e){return n(e,a)}},{"../internals/enum-bug-keys":62,"../internals/object-keys-internal":94}],92:[function(e,t,r){r.f=Object.getOwnPropertySymbols},{}],93:[function(e,t,r){var n=e("../internals/has"),a=e("../internals/to-object"),o=e("../internals/shared-key"),i=e("../internals/correct-prototype-getter"),s=o("IE_PROTO"),l=Object.prototype;t.exports=i?Object.getPrototypeOf:function(e){return e=a(e),n(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},{"../internals/correct-prototype-getter":55,"../internals/has":69,"../internals/shared-key":107,"../internals/to-object":116}],94:[function(e,t,r){var i=e("../internals/has"),s=e("../internals/to-indexed-object"),l=e("../internals/array-includes").indexOf,u=e("../internals/hidden-keys");t.exports=function(e,t){var r,n=s(e),a=0,o=[];for(r in n)!i(u,r)&&i(n,r)&&o.push(r);for(;t.length>a;)i(n,r=t[a++])&&(~l(o,r)||o.push(r));return o}},{"../internals/array-includes":44,"../internals/has":69,"../internals/hidden-keys":70,"../internals/to-indexed-object":113}],95:[function(e,t,r){var n=e("../internals/object-keys-internal"),a=e("../internals/enum-bug-keys");t.exports=Object.keys||function(e){return n(e,a)}},{"../internals/enum-bug-keys":62,"../internals/object-keys-internal":94}],96:[function(e,t,r){"use strict";var n={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,o=a&&!n.call({1:2},1);r.f=o?function(e){var t=a(this,e);return!!t&&t.enumerable}:n},{}],97:[function(e,t,r){var a=e("../internals/an-object"),o=e("../internals/a-possible-prototype");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r,n=!1,e={};try{(r=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),n=e instanceof Array}catch(e){}return function(e,t){return a(e),o(t),n?r.call(e,t):e.__proto__=t,e}}():void 0)},{"../internals/a-possible-prototype":35,"../internals/an-object":38}],98:[function(e,t,r){"use strict";var n=e("../internals/to-string-tag-support"),a=e("../internals/classof");t.exports=n?{}.toString:function(){return"[object "+a(this)+"]"}},{"../internals/classof":53,"../internals/to-string-tag-support":120}],99:[function(e,t,r){var n=e("../internals/get-built-in"),a=e("../internals/object-get-own-property-names"),o=e("../internals/object-get-own-property-symbols"),i=e("../internals/an-object");t.exports=n("Reflect","ownKeys")||function(e){var t=a.f(i(e)),r=o.f;return r?t.concat(r(e)):t}},{"../internals/an-object":38,"../internals/get-built-in":66,"../internals/object-get-own-property-names":91,"../internals/object-get-own-property-symbols":92}],100:[function(e,t,r){var n=e("../internals/global");t.exports=n},{"../internals/global":68}],101:[function(e,t,r){var a=e("../internals/redefine");t.exports=function(e,t,r){for(var n in t)a(e,n,t[n],r);return e}},{"../internals/redefine":102}],102:[function(e,t,r){var s=e("../internals/global"),l=e("../internals/create-non-enumerable-property"),u=e("../internals/has"),c=e("../internals/set-global"),n=e("../internals/inspect-source"),a=e("../internals/internal-state"),o=a.get,d=a.enforce,p=String(String).split("String");(t.exports=function(e,t,r,n){var a=!!n&&!!n.unsafe,o=!!n&&!!n.enumerable,i=!!n&&!!n.noTargetGet;"function"==typeof r&&("string"!=typeof t||u(r,"name")||l(r,"name",t),d(r).source=p.join("string"==typeof t?t:"")),e!==s?(a?!i&&e[t]&&(o=!0):delete e[t],o?e[t]=r:l(e,t,r)):o?e[t]=r:c(t,r)})(Function.prototype,"toString",function(){return"function"==typeof this&&o(this).source||n(this)})},{"../internals/create-non-enumerable-property":57,"../internals/global":68,"../internals/has":69,"../internals/inspect-source":76,"../internals/internal-state":77,"../internals/set-global":104}],103:[function(e,t,r){t.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},{}],104:[function(e,t,r){var n=e("../internals/global"),a=e("../internals/create-non-enumerable-property");t.exports=function(t,r){try{a(n,t,r)}catch(e){n[t]=r}return r}},{"../internals/create-non-enumerable-property":57,"../internals/global":68}],105:[function(e,t,r){"use strict";var n=e("../internals/get-built-in"),a=e("../internals/object-define-property"),o=e("../internals/well-known-symbol"),i=e("../internals/descriptors"),s=o("species");t.exports=function(e){var t=n(e),r=a.f;i&&t&&!t[s]&&r(t,s,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":60,"../internals/get-built-in":66,"../internals/object-define-property":89,"../internals/well-known-symbol":126}],106:[function(e,t,r){var n=e("../internals/object-define-property").f,a=e("../internals/has"),o=e("../internals/well-known-symbol")("toStringTag");t.exports=function(e,t,r){e&&!a(e=r?e:e.prototype,o)&&n(e,o,{configurable:!0,value:t})}},{"../internals/has":69,"../internals/object-define-property":89,"../internals/well-known-symbol":126}],107:[function(e,t,r){var n=e("../internals/shared"),a=e("../internals/uid"),o=n("keys");t.exports=function(e){return o[e]||(o[e]=a(e))}},{"../internals/shared":109,"../internals/uid":124}],108:[function(e,t,r){var n=e("../internals/global"),a=e("../internals/set-global"),o="__core-js_shared__",i=n[o]||a(o,{});t.exports=i},{"../internals/global":68,"../internals/set-global":104}],109:[function(e,t,r){var n=e("../internals/is-pure"),a=e("../internals/shared-store");(t.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.4",mode:n?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":82,"../internals/shared-store":108}],110:[function(e,t,r){var a=e("../internals/an-object"),o=e("../internals/a-function"),i=e("../internals/well-known-symbol")("species");t.exports=function(e,t){var r,n=a(e).constructor;return void 0===n||null==(r=a(n)[i])?t:o(r)}},{"../internals/a-function":34,"../internals/an-object":38,"../internals/well-known-symbol":126}],111:[function(e,t,r){var n=e("../internals/to-integer"),a=Math.max,o=Math.min;t.exports=function(e,t){var r=n(e);return r<0?a(r+t,0):o(r,t)}},{"../internals/to-integer":114}],112:[function(e,t,r){var n=e("../internals/to-integer"),a=e("../internals/to-length");t.exports=function(e){if(void 0===e)return 0;var t=n(e),r=a(t);if(t!==r)throw RangeError("Wrong length or index");return r}},{"../internals/to-integer":114,"../internals/to-length":115}],113:[function(e,t,r){var n=e("../internals/indexed-object"),a=e("../internals/require-object-coercible");t.exports=function(e){return n(a(e))}},{"../internals/indexed-object":74,"../internals/require-object-coercible":103}],114:[function(e,t,r){var n=Math.ceil,a=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(0<e?a:n)(e)}},{}],115:[function(e,t,r){var n=e("../internals/to-integer"),a=Math.min;t.exports=function(e){return 0<e?a(n(e),9007199254740991):0}},{"../internals/to-integer":114}],116:[function(e,t,r){var n=e("../internals/require-object-coercible");t.exports=function(e){return Object(n(e))}},{"../internals/require-object-coercible":103}],117:[function(e,t,r){var n=e("../internals/to-positive-integer");t.exports=function(e,t){var r=n(e);if(r%t)throw RangeError("Wrong offset");return r}},{"../internals/to-positive-integer":118}],118:[function(e,t,r){var n=e("../internals/to-integer");t.exports=function(e){var t=n(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},{"../internals/to-integer":114}],119:[function(e,t,r){var a=e("../internals/is-object");t.exports=function(e,t){if(!a(e))return e;var r,n;if(t&&"function"==typeof(r=e.toString)&&!a(n=r.call(e)))return n;if("function"==typeof(r=e.valueOf)&&!a(n=r.call(e)))return n;if(!t&&"function"==typeof(r=e.toString)&&!a(n=r.call(e)))return n;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":81}],120:[function(e,t,r){var n={};n[e("../internals/well-known-symbol")("toStringTag")]="z",t.exports="[object z]"===String(n)},{"../internals/well-known-symbol":126}],121:[function(e,t,r){"use strict";function f(e,t){for(var r=0,n=t.length,a=new(W(e))(n);r<n;)a[r]=t[r++];return a}function n(e,t){P(e,t,{get:function(){return _(this)[t]}})}function h(e){var t;return e instanceof M||"ArrayBuffer"==(t=D(e))||"SharedArrayBuffer"==t}function a(e,t){return Y(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)}function o(e,t){return a(e,t=m(t,!0))?p(2,e[t]):I(e,t)}function i(e,t,r){return!(a(e,t=m(t,!0))&&E(r)&&k(r,"value"))||k(r,"get")||k(r,"set")||r.configurable||k(r,"writable")&&!r.writable||k(r,"enumerable")&&!r.enumerable?P(e,t,r):(e[t]=r.value,e)}var l=e("../internals/export"),u=e("../internals/global"),s=e("../internals/descriptors"),b=e("../internals/typed-array-constructors-require-wrappers"),c=e("../internals/array-buffer-view-core"),d=e("../internals/array-buffer"),g=e("../internals/an-instance"),p=e("../internals/create-property-descriptor"),y=e("../internals/create-non-enumerable-property"),v=e("../internals/to-length"),w=e("../internals/to-index"),x=e("../internals/to-offset"),m=e("../internals/to-primitive"),k=e("../internals/has"),D=e("../internals/classof"),E=e("../internals/is-object"),A=e("../internals/object-create"),j=e("../internals/object-set-prototype-of"),C=e("../internals/object-get-own-property-names").f,F=e("../internals/typed-array-from"),T=e("../internals/array-iteration").forEach,N=e("../internals/set-species"),S=e("../internals/object-define-property"),z=e("../internals/object-get-own-property-descriptor"),q=e("../internals/internal-state"),O=e("../internals/inherit-if-required"),_=q.get,R=q.set,P=S.f,I=z.f,L=Math.round,B=u.RangeError,M=d.ArrayBuffer,V=d.DataView,U=c.NATIVE_ARRAY_BUFFER_VIEWS,H=c.TYPED_ARRAY_TAG,$=c.TypedArray,G=c.TypedArrayPrototype,W=c.aTypedArrayConstructor,Y=c.isTypedArray,K="BYTES_PER_ELEMENT",X="Wrong length";s?(U||(z.f=o,S.f=i,n(G,"buffer"),n(G,"byteOffset"),n(G,"byteLength"),n(G,"length")),l({target:"Object",stat:!0,forced:!U},{getOwnPropertyDescriptor:o,defineProperty:i}),t.exports=function(e,t,o){function c(e,a){P(e,a,{get:function(){return e=a,(t=_(this)).view[r](e*d+t.byteOffset,!0);var e,t},set:function(e){return t=a,r=e,n=_(this),o&&(r=(r=L(r))<0?0:255<r?255:255&r),void n.view[i](t*d+n.byteOffset,r,!0);var t,r,n},enumerable:!0})}var d=e.match(/\d+$/)[0]/8,p=e+(o?"Clamped":"")+"Array",r="get"+e,i="set"+e,a=u[p],m=a,n=m&&m.prototype,s={};U?b&&(m=t(function(e,t,r,n){return g(e,m,p),O(E(t)?h(t)?void 0!==n?new a(t,x(r,d),n):void 0!==r?new a(t,x(r,d)):new a(t):Y(t)?f(m,t):F.call(m,t):new a(w(t)),e,m)}),j&&j(m,$),T(C(a),function(e){e in m||y(m,e,a[e])}),m.prototype=n):(m=t(function(e,t,r,n){g(e,m,p);var a,o,i,s=0,l=0;if(E(t)){if(!h(t))return Y(t)?f(m,t):F.call(m,t);a=t,l=x(r,d);var u=t.byteLength;if(void 0===n){if(u%d)throw B(X);if((o=u-l)<0)throw B(X)}else if(u<(o=v(n)*d)+l)throw B(X);i=o/d}else i=w(t),a=new M(o=i*d);for(R(e,{buffer:a,byteOffset:l,byteLength:o,length:i,view:new V(a)});s<i;)c(e,s++)}),j&&j(m,$),n=m.prototype=A(G)),n.constructor!==m&&y(n,"constructor",m),H&&y(n,H,p),s[p]=m,l({global:!0,forced:m!=a,sham:!U},s),K in m||y(m,K,d),K in n||y(n,K,d),N(p)}):t.exports=function(){}},{"../internals/an-instance":37,"../internals/array-buffer":41,"../internals/array-buffer-view-core":40,"../internals/array-iteration":45,"../internals/classof":53,"../internals/create-non-enumerable-property":57,"../internals/create-property-descriptor":58,"../internals/descriptors":60,"../internals/export":63,"../internals/global":68,"../internals/has":69,"../internals/inherit-if-required":75,"../internals/internal-state":77,"../internals/is-object":81,"../internals/object-create":87,"../internals/object-define-property":89,"../internals/object-get-own-property-descriptor":90,"../internals/object-get-own-property-names":91,"../internals/object-set-prototype-of":97,"../internals/set-species":105,"../internals/to-index":112,"../internals/to-length":115,"../internals/to-offset":117,"../internals/to-primitive":119,"../internals/typed-array-constructors-require-wrappers":122,"../internals/typed-array-from":123}],122:[function(e,t,r){var n=e("../internals/global"),a=e("../internals/fails"),o=e("../internals/check-correctness-of-iteration"),i=e("../internals/array-buffer-view-core").NATIVE_ARRAY_BUFFER_VIEWS,s=n.ArrayBuffer,l=n.Int8Array;t.exports=!i||!a(function(){l(1)})||!a(function(){new l(-1)})||!o(function(e){new l,new l(null),new l(1.5),new l(e)},!0)||a(function(){return 1!==new l(new s(2),1,void 0).length})},{"../internals/array-buffer-view-core":40,"../internals/check-correctness-of-iteration":51,"../internals/fails":64,"../internals/global":68}],123:[function(e,t,r){var f=e("../internals/to-object"),h=e("../internals/to-length"),b=e("../internals/get-iterator-method"),g=e("../internals/is-array-iterator-method"),y=e("../internals/function-bind-context"),v=e("../internals/array-buffer-view-core").aTypedArrayConstructor;t.exports=function(e,t,r){var n,a,o,i,s,l,u=f(e),c=arguments.length,d=1<c?t:void 0,p=void 0!==d,m=b(u);if(null!=m&&!g(m))for(l=(s=m.call(u)).next,u=[];!(i=l.call(s)).done;)u.push(i.value);for(p&&2<c&&(d=y(d,r,2)),a=h(u.length),o=new(v(this))(a),n=0;n<a;n++)o[n]=p?d(u[n],n):u[n];return o}},{"../internals/array-buffer-view-core":40,"../internals/function-bind-context":65,"../internals/get-iterator-method":67,"../internals/is-array-iterator-method":78,"../internals/to-length":115,"../internals/to-object":116}],124:[function(e,t,r){var n=0,a=Math.random();t.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++n+a).toString(36)}},{}],125:[function(e,t,r){var n=e("../internals/native-symbol");t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},{"../internals/native-symbol":85}],126:[function(e,t,r){var n=e("../internals/global"),a=e("../internals/shared"),o=e("../internals/has"),i=e("../internals/uid"),s=e("../internals/native-symbol"),l=e("../internals/use-symbol-as-uid"),u=a("wks"),c=n.Symbol,d=l?c:c&&c.withoutSetter||i;t.exports=function(e){return o(u,e)||(s&&o(c,e)?u[e]=c[e]:u[e]=d("Symbol."+e)),u[e]}},{"../internals/global":68,"../internals/has":69,"../internals/native-symbol":85,"../internals/shared":109,"../internals/uid":124,"../internals/use-symbol-as-uid":125}],127:[function(e,t,r){"use strict";var n=e("../internals/to-indexed-object"),a=e("../internals/add-to-unscopables"),o=e("../internals/iterators"),i=e("../internals/internal-state"),s=e("../internals/define-iterator"),l="Array Iterator",u=i.set,c=i.getterFor(l);t.exports=s(Array,"Array",function(e,t){u(this,{type:l,target:n(e),index:0,kind:t})},function(){var e=c(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?{value:e.target=void 0,done:!0}:"keys"==r?{value:n,done:!1}:"values"==r?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}},"values"),o.Arguments=o.Array,a("keys"),a("values"),a("entries")},{"../internals/add-to-unscopables":36,"../internals/define-iterator":59,"../internals/internal-state":77,"../internals/iterators":84,"../internals/to-indexed-object":113}],128:[function(e,t,r){var n=e("../internals/to-string-tag-support"),a=e("../internals/redefine"),o=e("../internals/object-to-string");n||a(Object.prototype,"toString",o,{unsafe:!0})},{"../internals/object-to-string":98,"../internals/redefine":102,"../internals/to-string-tag-support":120}],129:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-copy-within"),o=n.aTypedArray;(0,n.exportTypedArrayMethod)("copyWithin",function(e,t,r){return a.call(o(this),e,t,2<arguments.length?r:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-copy-within":42}],130:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-iteration").every,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("every",function(e,t){return a(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-iteration":45}],131:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-fill"),o=n.aTypedArray;(0,n.exportTypedArrayMethod)("fill",function(e){return a.apply(o(this),arguments)})},{"../internals/array-buffer-view-core":40,"../internals/array-fill":43}],132:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),s=e("../internals/array-iteration").filter,l=e("../internals/species-constructor"),u=n.aTypedArray,c=n.aTypedArrayConstructor;(0,n.exportTypedArrayMethod)("filter",function(e,t){for(var r=s(u(this),e,1<arguments.length?t:void 0),n=l(this,this.constructor),a=0,o=r.length,i=new(c(n))(o);a<o;)i[a]=r[a++];return i})},{"../internals/array-buffer-view-core":40,"../internals/array-iteration":45,"../internals/species-constructor":110}],133:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-iteration").findIndex,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("findIndex",function(e,t){return a(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-iteration":45}],134:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-iteration").find,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("find",function(e,t){return a(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-iteration":45}],135:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-iteration").forEach,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("forEach",function(e,t){a(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-iteration":45}],136:[function(e,t,r){"use strict";var n=e("../internals/typed-array-constructors-require-wrappers");(0,e("../internals/array-buffer-view-core").exportTypedArrayStaticMethod)("from",e("../internals/typed-array-from"),n)},{"../internals/array-buffer-view-core":40,"../internals/typed-array-constructors-require-wrappers":122,"../internals/typed-array-from":123}],137:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-includes").includes,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("includes",function(e,t){return a(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-includes":44}],138:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-includes").indexOf,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("indexOf",function(e,t){return a(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-includes":44}],139:[function(e,t,r){"use strict";function n(){return u.call(p(this))}var a=e("../internals/global"),o=e("../internals/array-buffer-view-core"),i=e("../modules/es.array.iterator"),s=e("../internals/well-known-symbol")("iterator"),l=a.Uint8Array,u=i.values,c=i.keys,d=i.entries,p=o.aTypedArray,m=o.exportTypedArrayMethod,f=l&&l.prototype[s],h=!!f&&("values"==f.name||null==f.name);m("entries",function(){return d.call(p(this))}),m("keys",function(){return c.call(p(this))}),m("values",n,!h),m(s,n,!h)},{"../internals/array-buffer-view-core":40,"../internals/global":68,"../internals/well-known-symbol":126,"../modules/es.array.iterator":127}],140:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=n.aTypedArray,o=n.exportTypedArrayMethod,i=[].join;o("join",function(e){return i.apply(a(this),arguments)})},{"../internals/array-buffer-view-core":40}],141:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-last-index-of"),o=n.aTypedArray;(0,n.exportTypedArrayMethod)("lastIndexOf",function(e){return a.apply(o(this),arguments)})},{"../internals/array-buffer-view-core":40,"../internals/array-last-index-of":46}],142:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-iteration").map,o=e("../internals/species-constructor"),i=n.aTypedArray,s=n.aTypedArrayConstructor;(0,n.exportTypedArrayMethod)("map",function(e,t){return a(i(this),e,1<arguments.length?t:void 0,function(e,t){return new(s(o(e,e.constructor)))(t)})})},{"../internals/array-buffer-view-core":40,"../internals/array-iteration":45,"../internals/species-constructor":110}],143:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/typed-array-constructors-require-wrappers"),o=n.aTypedArrayConstructor;(0,n.exportTypedArrayStaticMethod)("of",function(){for(var e=0,t=arguments.length,r=new(o(this))(t);e<t;)r[e]=arguments[e++];return r},a)},{"../internals/array-buffer-view-core":40,"../internals/typed-array-constructors-require-wrappers":122}],144:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-reduce").right,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("reduceRight",function(e,t){return a(o(this),e,arguments.length,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-reduce":49}],145:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-reduce").left,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("reduce",function(e,t){return a(o(this),e,arguments.length,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-reduce":49}],146:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),o=n.aTypedArray,a=n.exportTypedArrayMethod,i=Math.floor;a("reverse",function(){for(var e,t=this,r=o(t).length,n=i(r/2),a=0;a<n;)e=t[a],t[a++]=t[--r],t[r]=e;return t})},{"../internals/array-buffer-view-core":40}],147:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),s=e("../internals/to-length"),l=e("../internals/to-offset"),u=e("../internals/to-object"),a=e("../internals/fails"),c=n.aTypedArray;(0,n.exportTypedArrayMethod)("set",function(e,t){c(this);var r=l(1<arguments.length?t:void 0,1),n=this.length,a=u(e),o=s(a.length),i=0;if(n<o+r)throw RangeError("Wrong length");for(;i<o;)this[r+i]=a[i++]},a(function(){new Int8Array(1).set({})}))},{"../internals/array-buffer-view-core":40,"../internals/fails":64,"../internals/to-length":115,"../internals/to-object":116,"../internals/to-offset":117}],148:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),s=e("../internals/species-constructor"),a=e("../internals/fails"),l=n.aTypedArray,u=n.aTypedArrayConstructor,o=n.exportTypedArrayMethod,c=[].slice;o("slice",function(e,t){for(var r=c.call(l(this),e,t),n=s(this,this.constructor),a=0,o=r.length,i=new(u(n))(o);a<o;)i[a]=r[a++];return i},a(function(){new Int8Array(1).slice()}))},{"../internals/array-buffer-view-core":40,"../internals/fails":64,"../internals/species-constructor":110}],149:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=e("../internals/array-iteration").some,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("some",function(e,t){return a(o(this),e,1<arguments.length?t:void 0)})},{"../internals/array-buffer-view-core":40,"../internals/array-iteration":45}],150:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),a=n.aTypedArray,o=n.exportTypedArrayMethod,i=[].sort;o("sort",function(e){return i.call(a(this),e)})},{"../internals/array-buffer-view-core":40}],151:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),o=e("../internals/to-length"),i=e("../internals/to-absolute-index"),s=e("../internals/species-constructor"),l=n.aTypedArray;(0,n.exportTypedArrayMethod)("subarray",function(e,t){var r=l(this),n=r.length,a=i(e,n);return new(s(r,r.constructor))(r.buffer,r.byteOffset+a*r.BYTES_PER_ELEMENT,o((void 0===t?n:i(t,n))-a))})},{"../internals/array-buffer-view-core":40,"../internals/species-constructor":110,"../internals/to-absolute-index":111,"../internals/to-length":115}],152:[function(e,t,r){"use strict";var n=e("../internals/global"),a=e("../internals/array-buffer-view-core"),o=e("../internals/fails"),i=n.Int8Array,s=a.aTypedArray,l=a.exportTypedArrayMethod,u=[].toLocaleString,c=[].slice,d=!!i&&o(function(){u.call(new i(1))});l("toLocaleString",function(){return u.apply(d?c.call(s(this)):s(this),arguments)},o(function(){return[1,2].toLocaleString()!=new i([1,2]).toLocaleString()})||!o(function(){i.prototype.toLocaleString.call([1,2])}))},{"../internals/array-buffer-view-core":40,"../internals/fails":64,"../internals/global":68}],153:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core").exportTypedArrayMethod,a=e("../internals/fails"),o=e("../internals/global").Uint8Array,i=o&&o.prototype||{},s=[].toString,l=[].join;a(function(){s.call({})})&&(s=function(){return l.call(this)}),n("toString",s,i.toString!=s)},{"../internals/array-buffer-view-core":40,"../internals/fails":64,"../internals/global":68}],154:[function(e,t,r){e("../internals/typed-array-constructor")("Uint32",function(n){return function(e,t,r){return n(this,e,t,r)}})},{"../internals/typed-array-constructor":121}],155:[function(e,t,r){t.exports={CssSelectorParser:e("./lib/css-selector-parser.js").CssSelectorParser}},{"./lib/css-selector-parser.js":156}],156:[function(e,t,r){function n(){this.pseudos={},this.attrEqualityMods={},this.ruleNestingOperators={},this.substitutesEnabled=!1}function o(e){return"a"<=e&&e<="f"||"A"<=e&&e<="F"||"0"<=e&&e<="9"}n.prototype.registerSelectorPseudos=function(e){for(var t=0,r=arguments.length;t<r;t++)e=arguments[t],this.pseudos[e]="selector";return this},n.prototype.unregisterSelectorPseudos=function(e){for(var t=0,r=arguments.length;t<r;t++)e=arguments[t],delete this.pseudos[e];return this},n.prototype.registerNumericPseudos=function(e){for(var t=0,r=arguments.length;t<r;t++)e=arguments[t],this.pseudos[e]="numeric";return this},n.prototype.unregisterNumericPseudos=function(e){for(var t=0,r=arguments.length;t<r;t++)e=arguments[t],delete this.pseudos[e];return this},n.prototype.registerNestingOperators=function(e){for(var t=0,r=arguments.length;t<r;t++)e=arguments[t],this.ruleNestingOperators[e]=!0;return this},n.prototype.unregisterNestingOperators=function(e){for(var t=0,r=arguments.length;t<r;t++)e=arguments[t],delete this.ruleNestingOperators[e];return this},n.prototype.registerAttrEqualityMods=function(e){for(var t=0,r=arguments.length;t<r;t++)e=arguments[t],this.attrEqualityMods[e]=!0;return this},n.prototype.unregisterAttrEqualityMods=function(e){for(var t=0,r=arguments.length;t<r;t++)e=arguments[t],delete this.attrEqualityMods[e];return this},n.prototype.enableSubstitutes=function(){return this.substitutesEnabled=!0,this},n.prototype.disableSubstitutes=function(){return this.substitutesEnabled=!1,this};var s={"!":!0,'"':!0,"#":!0,$:!0,"%":!0,"&":!0,"'":!0,"(":!0,")":!0,"*":!0,"+":!0,",":!0,".":!0,"/":!0,";":!0,"<":!0,"=":!0,">":!0,"?":!0,"@":!0,"[":!0,"\\":!0,"]":!0,"^":!0,"`":!0,"{":!0,"|":!0,"}":!0,"~":!0},i={"\n":"\\n","\r":"\\r","\t":"\\t","\f":"\\f","\v":"\\v"},y={n:"\n",r:"\r",t:"\t",f:"\f","\\":"\\","'":"'"},v={n:"\n",r:"\r",t:"\t",f:"\f","\\":"\\",'"':'"'};function a(l,u,c,d,a,p){var m,f,h,b,g;return b=l.length,m=null,h=function(e,t){var r,n,a;for(a="",u++,m=l.charAt(u);u<b;){if(m===e)return u++,a;if("\\"===m)if(u++,(m=l.charAt(u))===e)a+=e;else if(r=t[m])a+=r;else{if(o(m)){for(n=m,u++,m=l.charAt(u);o(m);)n+=m,u++,m=l.charAt(u);" "===m&&(u++,m=l.charAt(u)),a+=String.fromCharCode(parseInt(n,16));continue}a+=m}else a+=m;u++,m=l.charAt(u)}return a},f=function(){var e,t="";for(m=l.charAt(u);u<b;){if("a"<=(e=m)&&e<="z"||"A"<=e&&e<="Z"||"0"<=e&&e<="9"||"-"===e||"_"===e)t+=m;else{if("\\"!==m)return t;if(b<=++u)throw Error("Expected symbol but end of file reached.");if(m=l.charAt(u),s[m])t+=m;else{if(o(m)){var r=m;for(u++,m=l.charAt(u);o(m);)r+=m,u++,m=l.charAt(u);" "===m&&(u++,m=l.charAt(u)),t+=String.fromCharCode(parseInt(r,16));continue}t+=m}}u++,m=l.charAt(u)}return t},g=function(){m=l.charAt(u);for(var e=!1;" "===m||"\t"===m||"\n"===m||"\r"===m||"\f"===m;)e=!0,u++,m=l.charAt(u);return e},this.parse=function(){var e=this.parseSelector();if(u<b)throw Error('Rule expected but "'+l.charAt(u)+'" found.');return e},this.parseSelector=function(){var e,t=e=this.parseSingleSelector();for(m=l.charAt(u);","===m;){if(u++,g(),"selectors"!==e.type&&(e={type:"selectors",selectors:[t]}),!(t=this.parseSingleSelector()))throw Error('Rule expected after ",".');e.selectors.push(t)}return e},this.parseSingleSelector=function(){g();var e={type:"ruleSet"},t=this.parseRule();if(!t)return null;for(var r=e;t&&(t.type="rule",r.rule=t,r=t,g(),m=l.charAt(u),!(b<=u||","===m||")"===m));)if(a[m]){var n=m;if(u++,g(),!(t=this.parseRule()))throw Error('Rule expected after "'+n+'".');t.nestingOperator=n}else(t=this.parseRule())&&(t.nestingOperator=null);return e},this.parseRule=function(){for(var e,t=null;u<b;)if("*"===(m=l.charAt(u)))u++,(t=t||{}).tagName="*";else if("a"<=(e=m)&&e<="z"||"A"<=e&&e<="Z"||"-"===e||"_"===e||"\\"===m)(t=t||{}).tagName=f();else if("."===m)u++,((t=t||{}).classNames=t.classNames||[]).push(f());else if("#"===m)u++,(t=t||{}).id=f();else if("["===m){u++,g();var r={name:f()};if(g(),"]"===m)u++;else{var n="";if(d[m]&&(n=m,u++,m=l.charAt(u)),b<=u)throw Error('Expected "=" but end of file reached.');if("="!==m)throw Error('Expected "=" but "'+m+'" found.');r.operator=n+"=",u++,g();var a="";if(r.valueType="string",'"'===m)a=h('"',v);else if("'"===m)a=h("'",y);else if(p&&"$"===m)u++,a=f(),r.valueType="substitute";else{for(;u<b&&"]"!==m;)a+=m,u++,m=l.charAt(u);a=a.trim()}if(g(),b<=u)throw Error('Expected "]" but end of file reached.');if("]"!==m)throw Error('Expected "]" but "'+m+'" found.');u++,r.value=a}((t=t||{}).attrs=t.attrs||[]).push(r)}else{if(":"!==m)break;u++;var o=f(),i={name:o};if("("===m){u++;var s="";if(g(),"selector"===c[o])i.valueType="selector",s=this.parseSelector();else{if(i.valueType=c[o]||"string",'"'===m)s=h('"',v);else if("'"===m)s=h("'",y);else if(p&&"$"===m)u++,s=f(),i.valueType="substitute";else{for(;u<b&&")"!==m;)s+=m,u++,m=l.charAt(u);s=s.trim()}g()}if(b<=u)throw Error('Expected ")" but end of file reached.');if(")"!==m)throw Error('Expected ")" but "'+m+'" found.');u++,i.value=s}((t=t||{}).pseudos=t.pseudos||[]).push(i)}return t},this}n.prototype.parse=function(e){return new a(e,0,this.pseudos,this.attrEqualityMods,this.ruleNestingOperators,this.substitutesEnabled).parse()},n.prototype.escapeIdentifier=function(e){for(var t="",r=0,n=e.length;r<n;){var a=e.charAt(r);if(s[a])t+="\\"+a;else if("_"===a||"-"===a||"A"<=a&&a<="Z"||"a"<=a&&a<="z"||0!==r&&"0"<=a&&a<="9")t+=a;else{var o=a.charCodeAt(0);if(55296==(63488&o)){var i=e.charCodeAt(r++);if(55296!=(64512&o)||56320!=(64512&i))throw Error("UCS-2(decode): illegal sequence");o=((1023&o)<<10)+(1023&i)+65536}t+="\\"+o.toString(16)+" "}r++}return t},n.prototype.escapeStr=function(e){for(var t,r,n="",a=0,o=e.length;a<o;)'"'===(t=e.charAt(a))?t='\\"':"\\"===t?t="\\\\":(r=i[t])&&(t=r),n+=t,a++;return'"'+n+'"'},n.prototype.render=function(e){return this._renderEntity(e).trim()},n.prototype._renderEntity=function(e){var t,r,n;switch(n="",e.type){case"ruleSet":for(t=e.rule,r=[];t;)t.nestingOperator&&r.push(t.nestingOperator),r.push(this._renderEntity(t)),t=t.rule;n=r.join(" ");break;case"selectors":n=e.selectors.map(this._renderEntity,this).join(", ");break;case"rule":e.tagName&&(n="*"===e.tagName?"*":this.escapeIdentifier(e.tagName)),e.id&&(n+="#"+this.escapeIdentifier(e.id)),e.classNames&&(n+=e.classNames.map(function(e){return"."+this.escapeIdentifier(e)},this).join("")),e.attrs&&(n+=e.attrs.map(function(e){return e.operator?"substitute"===e.valueType?"["+this.escapeIdentifier(e.name)+e.operator+"$"+e.value+"]":"["+this.escapeIdentifier(e.name)+e.operator+this.escapeStr(e.value)+"]":"["+this.escapeIdentifier(e.name)+"]"},this).join("")),e.pseudos&&(n+=e.pseudos.map(function(e){return e.valueType?"selector"===e.valueType?":"+this.escapeIdentifier(e.name)+"("+this._renderEntity(e.value)+")":"substitute"===e.valueType?":"+this.escapeIdentifier(e.name)+"($"+e.value+")":"numeric"===e.valueType?":"+this.escapeIdentifier(e.name)+"("+e.value+")":":"+this.escapeIdentifier(e.name)+"("+this.escapeIdentifier(e.value)+")":":"+this.escapeIdentifier(e.name)},this).join(""));break;default:throw Error('Unknown entity type: "'+e.type(NaN))}return n},r.CssSelectorParser=n},{}],157:[function(e,t,r){"use strict";var s=e("type/value/is"),l=e("type/plain-function/is"),u=e("es5-ext/object/assign"),c=e("es5-ext/object/normalize-options"),d=e("es5-ext/string/#/contains");(t.exports=function(e,t){var r,n,a,o,i;return arguments.length<2||"string"!=typeof e?(o=t,t=e,e=null):o=arguments[2],s(e)?(r=d.call(e,"c"),n=d.call(e,"e"),a=d.call(e,"w")):(r=a=!0,n=!1),i={value:t,configurable:r,enumerable:n,writable:a},o?u(c(o),i):i}).gs=function(e,t,r){var n,a,o,i;return"string"!=typeof e?(o=r,r=t,t=e,e=null):o=arguments[3],s(t)?l(t)?s(r)?l(r)||(o=r,r=void 0):r=void 0:(o=t,t=r=void 0):t=void 0,a=s(e)?(n=d.call(e,"c"),d.call(e,"e")):!(n=!0),i={get:t,set:r,configurable:n,enumerable:a},o?u(c(o),i):i}},{"es5-ext/object/assign":178,"es5-ext/object/normalize-options":190,"es5-ext/string/#/contains":197,"type/plain-function/is":242,"type/value/is":244}],158:[function(e,t,r){"use strict";t.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}},{}],159:[function(e,t,r){"use strict";var o=e("../../number/is-nan"),i=e("../../number/to-pos-integer"),s=e("../../object/valid-value"),l=Array.prototype.indexOf,u=Object.prototype.hasOwnProperty,c=Math.abs,d=Math.floor;t.exports=function(e){var t,r,n,a;if(!o(e))return l.apply(this,arguments);for(r=i(s(this).length),n=arguments[1],t=n=isNaN(n)?0:0<=n?d(n):i(this.length)-d(c(n));t<r;++t)if(u.call(this,t)&&(a=this[t],o(a)))return t;return-1}},{"../../number/is-nan":172,"../../number/to-pos-integer":176,"../../object/valid-value":193}],160:[function(e,t,r){"use strict";t.exports=e("./is-implemented")()?Array.from:e("./shim")},{"./is-implemented":161,"./shim":162}],161:[function(e,t,r){"use strict";t.exports=function(){var e,t,r=Array.from;return"function"==typeof r&&(t=r(e=["raz","dwa"]),Boolean(t&&t!==e&&"dwa"===t[1]))}},{}],162:[function(e,t,r){"use strict";var m=e("es6-symbol").iterator,f=e("../../function/is-arguments"),h=e("../../function/is-function"),b=e("../../number/to-pos-integer"),g=e("../../object/valid-callable"),y=e("../../object/valid-value"),v=e("../../object/is-value"),w=e("../../string/is-string"),x=Array.isArray,k=Function.prototype.call,D={configurable:!0,enumerable:!0,writable:!0,value:null},E=Object.defineProperty;t.exports=function(e){var t,r,n,a,o,i,s,l,u,c,d=arguments[1],p=arguments[2];if(e=Object(y(e)),v(d)&&g(d),this&&this!==Array&&h(this))t=this;else{if(!d){if(f(e))return 1!==(o=e.length)?Array.apply(null,e):((a=new Array(1))[0]=e[0],a);if(x(e)){for(a=new Array(o=e.length),r=0;r<o;++r)a[r]=e[r];return a}}a=[]}if(!x(e))if(void 0!==(u=e[m])){for(s=g(u).call(e),t&&(a=new t),l=s.next(),r=0;!l.done;)c=d?k.call(d,p,l.value,r):l.value,t?(D.value=c,E(a,r,D)):a[r]=c,l=s.next(),++r;o=r}else if(w(e)){for(o=e.length,t&&(a=new t),n=r=0;r<o;++r)c=e[r],r+1<o&&55296<=(i=c.charCodeAt(0))&&i<=56319&&(c+=e[++r]),c=d?k.call(d,p,c,n):c,t?(D.value=c,E(a,n,D)):a[n]=c,++n;o=n}if(void 0===o)for(o=b(e.length),t&&(a=new t(o)),r=0;r<o;++r)c=d?k.call(d,p,e[r],r):e[r],t?(D.value=c,E(a,r,D)):a[r]=c;return t&&(D.value=null,a.length=o),a}},{"../../function/is-arguments":166,"../../function/is-function":167,"../../number/to-pos-integer":176,"../../object/is-value":184,"../../object/valid-callable":192,"../../object/valid-value":193,"../../string/is-string":200,"es6-symbol":203}],163:[function(e,t,r){"use strict";var n=e("./from"),a=Array.isArray;t.exports=function(e){return a(e)?e:n(e)}},{"./from":160}],164:[function(e,a,t){"use strict";var o=e("../object/assign"),i=e("../object/is-object"),s=e("../object/is-value"),l=Error.captureStackTrace;a.exports=function(e){var t=new Error(e),r=arguments[1],n=arguments[2];return s(n)||i(r)&&(n=r,r=null),s(n)&&o(t,n),s(r)&&(t.code=r),l&&l(t,a.exports),t}},{"../object/assign":178,"../object/is-object":183,"../object/is-value":184}],165:[function(e,t,r){"use strict";function n(e,t){return t}var a,o,i,s,l,u=e("../number/to-pos-integer");try{Object.defineProperty(n,"length",{configurable:!0,writable:!1,enumerable:!1,value:1})}catch(e){}1===n.length?(a={configurable:!0,writable:!1,enumerable:!1},o=Object.defineProperty,t.exports=function(e,t){return t=u(t),e.length===t?e:(a.value=t,o(e,"length",a))}):(s=e("../object/mixin"),l=[],i=function(e){var t,r=0;if(l[e])return l[e];for(t=[];e--;)t.push("a"+(++r).toString(36));return new Function("fn","return function ("+t.join(", ")+") { return fn.apply(this, arguments); };")},t.exports=function(e,t){var r;if(t=u(t),e.length===t)return e;r=i(t)(e);try{s(r,e)}catch(e){}return r})},{"../number/to-pos-integer":176,"../object/mixin":189}],166:[function(e,t,r){"use strict";var n=Object.prototype.toString,a=n.call(function(){return arguments}());t.exports=function(e){return n.call(e)===a}},{}],167:[function(e,t,r){"use strict";var n=Object.prototype.toString,a=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);t.exports=function(e){return"function"==typeof e&&a(n.call(e))}},{}],168:[function(e,t,r){"use strict";t.exports=function(){}},{}],169:[function(e,t,r){"use strict";t.exports=e("./is-implemented")()?Math.sign:e("./shim")},{"./is-implemented":170,"./shim":171}],170:[function(e,t,r){"use strict";t.exports=function(){var e=Math.sign;return"function"==typeof e&&(1===e(10)&&-1===e(-20))}},{}],171:[function(e,t,r){"use strict";t.exports=function(e){return e=Number(e),isNaN(e)||0===e?e:0<e?1:-1}},{}],172:[function(e,t,r){"use strict";t.exports=e("./is-implemented")()?Number.isNaN:e("./shim")},{"./is-implemented":173,"./shim":174}],173:[function(e,t,r){"use strict";t.exports=function(){var e=Number.isNaN;return"function"==typeof e&&(!e({})&&e(NaN)&&!e(34))}},{}],174:[function(e,t,r){"use strict";t.exports=function(e){return e!=e}},{}],175:[function(e,t,r){"use strict";var n=e("../math/sign"),a=Math.abs,o=Math.floor;t.exports=function(e){return isNaN(e)?0:0!==(e=Number(e))&&isFinite(e)?n(e)*o(a(e)):e}},{"../math/sign":169}],176:[function(e,t,r){"use strict";var n=e("./to-integer"),a=Math.max;t.exports=function(e){return a(0,n(e))}},{"./to-integer":175}],177:[function(e,t,r){"use strict";var s=e("./valid-callable"),l=e("./valid-value"),u=Function.prototype.bind,c=Function.prototype.call,d=Object.keys,p=Object.prototype.propertyIsEnumerable;t.exports=function(o,i){return function(r,n){var e,a=arguments[2],t=arguments[3];return r=Object(l(r)),s(n),e=d(r),t&&e.sort("function"==typeof t?u.call(t,r):void 0),"function"!=typeof o&&(o=e[o]),c.call(o,e,function(e,t){return p.call(r,e)?c.call(n,a,r[e],e,r,t):i})}}},{"./valid-callable":192,"./valid-value":193}],178:[function(e,t,r){"use strict";t.exports=e("./is-implemented")()?Object.assign:e("./shim")},{"./is-implemented":179,"./shim":180}],179:[function(e,t,r){"use strict";t.exports=function(){var e,t=Object.assign;return"function"==typeof t&&(t(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")}},{}],180:[function(e,t,r){"use strict";var i=e("../keys"),s=e("../valid-value"),l=Math.max;t.exports=function(t,r){var n,e,a,o=l(arguments.length,2);for(t=Object(s(t)),a=function(e){try{t[e]=r[e]}catch(e){n=n||e}},e=1;e<o;++e)i(r=arguments[e]).forEach(a);if(void 0!==n)throw n;return t}},{"../keys":185,"../valid-value":193}],181:[function(e,t,r){"use strict";t.exports=e("./_iterate")("forEach")},{"./_iterate":177}],182:[function(e,t,r){"use strict";t.exports=function(e){return"function"==typeof e}},{}],183:[function(e,t,r){"use strict";var n=e("./is-value"),a={function:!0,object:!0};t.exports=function(e){return n(e)&&a[typeof e]||!1}},{"./is-value":184}],184:[function(e,t,r){"use strict";var n=e("../function/noop")();t.exports=function(e){return e!==n&&null!==e}},{"../function/noop":168}],185:[function(e,t,r){"use strict";t.exports=e("./is-implemented")()?Object.keys:e("./shim")},{"./is-implemented":186,"./shim":187}],186:[function(e,t,r){"use strict";t.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}},{}],187:[function(e,t,r){"use strict";var n=e("../is-value"),a=Object.keys;t.exports=function(e){return a(n(e)?Object(e):e)}},{"../is-value":184}],188:[function(e,t,r){"use strict";var n=e("./valid-callable"),s=e("./for-each"),l=Function.prototype.call;t.exports=function(e,a){var o={},i=arguments[2];return n(a),s(e,function(e,t,r,n){o[t]=l.call(a,i,e,t,r,n)}),o}},{"./for-each":181,"./valid-callable":192}],189:[function(e,t,r){"use strict";var a=e("./valid-value"),o=Object.defineProperty,i=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,l=Object.getOwnPropertySymbols;t.exports=function(t,r){var n,e=Object(a(r));if(t=Object(a(t)),s(e).forEach(function(e){try{o(t,e,i(r,e))}catch(e){n=e}}),"function"==typeof l&&l(e).forEach(function(e){try{o(t,e,i(r,e))}catch(e){n=e}}),void 0!==n)throw n;return t}},{"./valid-value":193}],190:[function(e,t,r){"use strict";var n=e("./is-value"),a=Array.prototype.forEach,o=Object.create;t.exports=function(e){var t=o(null);return a.call(arguments,function(e){n(e)&&function(e,t){var r;for(r in e)t[r]=e[r]}(Object(e),t)}),t}},{"./is-value":184}],191:[function(e,t,r){"use strict";var n=Array.prototype.forEach,a=Object.create;t.exports=function(e){var t=a(null);return n.call(arguments,function(e){t[e]=!0}),t}},{}],192:[function(e,t,r){"use strict";t.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}},{}],193:[function(e,t,r){"use strict";var n=e("./is-value");t.exports=function(e){if(!n(e))throw new TypeError("Cannot use null or undefined");return e}},{"./is-value":184}],194:[function(e,t,r){"use strict";var n=e("./valid-value"),a=e("./validate-stringifiable");t.exports=function(e){return a(n(e))}},{"./valid-value":193,"./validate-stringifiable":195}],195:[function(e,t,r){"use strict";var n=e("./is-callable");t.exports=function(e){try{return e&&n(e.toString)?e.toString():String(e)}catch(e){throw new TypeError("Passed argument cannot be stringifed")}}},{"./is-callable":182}],196:[function(e,t,r){"use strict";var n=e("./object/is-callable");t.exports=function(e){try{return e&&n(e.toString)?e.toString():String(e)}catch(e){return"<Non-coercible to string value>"}}},{"./object/is-callable":182}],197:[function(e,t,r){"use strict";t.exports=e("./is-implemented")()?String.prototype.contains:e("./shim")},{"./is-implemented":198,"./shim":199}],198:[function(e,t,r){"use strict";var n="razdwatrzy";t.exports=function(){return"function"==typeof n.contains&&(!0===n.contains("dwa")&&!1===n.contains("foo"))}},{}],199:[function(e,t,r){"use strict";var n=String.prototype.indexOf;t.exports=function(e){return-1<n.call(this,e,arguments[1])}},{}],200:[function(e,t,r){"use strict";var n=Object.prototype.toString,a=n.call("");t.exports=function(e){return"string"==typeof e||e&&"object"==typeof e&&(e instanceof String||n.call(e)===a)||!1}},{}],201:[function(e,t,r){"use strict";var n=e("./safe-to-string"),a=/[\n\r\u2028\u2029]/g;t.exports=function(e){var t=n(e);return 100<t.length&&(t=t.slice(0,99)+"…"),t=t.replace(a,function(e){return JSON.stringify(e).slice(1,-1)})}},{"./safe-to-string":196}],202:[function(U,r,n){(function(M,V){var e,t;e=this,t=function(){"use strict";function l(e){return"function"==typeof e}var r=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},n=0,t=void 0,a=void 0,i=function(e,t){p[n]=e,p[n+1]=t,2===(n+=2)&&(a?a(m):y())};var e=void 0!==window?window:void 0,o=e||{},s=o.MutationObserver||o.WebKitMutationObserver,u="undefined"==typeof self&&void 0!==M&&"[object process]"==={}.toString.call(M),c="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function d(){var e=setTimeout;return function(){return e(m,1)}}var p=new Array(1e3);function m(){for(var e=0;e<n;e+=2){(0,p[e])(p[e+1]),p[e]=void 0,p[e+1]=void 0}n=0}var f,h,b,g,y=void 0;function v(e,t){var r=this,n=new this.constructor(k);void 0===n[x]&&R(n);var a=r._state;if(a){var o=arguments[a-1];i(function(){return O(a,n,o,r._result)})}else z(r,n,e,t);return n}function w(e){if(e&&"object"==typeof e&&e.constructor===this)return e;var t=new this(k);return F(t,e),t}y=u?function(){return M.nextTick(m)}:s?(h=0,b=new s(m),g=document.createTextNode(""),b.observe(g,{characterData:!0}),function(){g.data=h=++h%2}):c?((f=new MessageChannel).port1.onmessage=m,function(){return f.port2.postMessage(0)}):(void 0===e&&"function"==typeof U?function(){try{var e=Function("return this")().require("vertx");return void 0!==(t=e.runOnLoop||e.runOnContext)?function(){t(m)}:d()}catch(e){return d()}}:d)();var x=Math.random().toString(36).substring(2);function k(){}var D=void 0,E=1,A=2;function j(e,n,a){i(function(t){var r=!1,e=function(e,t,r,n){try{e.call(t,r,n)}catch(e){return e}}(a,n,function(e){r||(r=!0,(n!==e?F:N)(t,e))},function(e){r||(r=!0,S(t,e))},t._label);!r&&e&&(r=!0,S(t,e))},e)}function C(e,t,r){var n,a;t.constructor===e.constructor&&r===v&&t.constructor.resolve===w?(n=e,(a=t)._state===E?N(n,a._result):a._state===A?S(n,a._result):z(a,void 0,function(e){return F(n,e)},function(e){return S(n,e)})):void 0!==r&&l(r)?j(e,t,r):N(e,t)}function F(t,e){if(t===e)S(t,new TypeError("You cannot resolve a promise with itself"));else if(a=typeof(n=e),null===n||"object"!=a&&"function"!=a)N(t,e);else{var r=void 0;try{r=e.then}catch(e){return void S(t,e)}C(t,e,r)}var n,a}function T(e){e._onerror&&e._onerror(e._result),q(e)}function N(e,t){e._state===D&&(e._result=t,e._state=E,0!==e._subscribers.length&&i(q,e))}function S(e,t){e._state===D&&(e._state=A,e._result=t,i(T,e))}function z(e,t,r,n){var a=e._subscribers,o=a.length;e._onerror=null,a[o]=t,a[o+E]=r,a[o+A]=n,0===o&&e._state&&i(q,e)}function q(e){var t=e._subscribers,r=e._state;if(0!==t.length){for(var n=void 0,a=void 0,o=e._result,i=0;i<t.length;i+=3)n=t[i],a=t[i+r],n?O(r,n,a,o):a(o);e._subscribers.length=0}}function O(e,t,r,n){var a=l(r),o=void 0,i=void 0,s=!0;if(a){try{o=r(n)}catch(e){s=!1,i=e}if(t===o)return void S(t,new TypeError("A promises callback cannot return that same promise."))}else o=n;t._state!==D||(a&&s?F(t,o):!1===s?S(t,i):e===E?N(t,o):e===A&&S(t,o))}var _=0;function R(e){e[x]=_++,e._state=void 0,e._result=void 0,e._subscribers=[]}var P=(I.prototype._enumerate=function(e){for(var t=0;this._state===D&&t<e.length;t++)this._eachEntry(e[t],t)},I.prototype._eachEntry=function(t,e){var r=this._instanceConstructor,n=r.resolve;if(n===w){var a=void 0,o=void 0,i=!1;try{a=t.then}catch(e){i=!0,o=e}if(a===v&&t._state!==D)this._settledAt(t._state,e,t._result);else if("function"!=typeof a)this._remaining--,this._result[e]=t;else if(r===L){var s=new r(k);i?S(s,o):C(s,t,a),this._willSettleAt(s,e)}else this._willSettleAt(new r(function(e){return e(t)}),e)}else this._willSettleAt(n(t),e)},I.prototype._settledAt=function(e,t,r){var n=this.promise;n._state===D&&(this._remaining--,e===A?S(n,r):this._result[t]=r),0===this._remaining&&N(n,this._result)},I.prototype._willSettleAt=function(e,t){var r=this;z(e,void 0,function(e){return r._settledAt(E,t,e)},function(e){return r._settledAt(A,t,e)})},I);function I(e,t){this._instanceConstructor=e,this.promise=new e(k),this.promise[x]||R(this.promise),r(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?N(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&N(this.promise,this._result))):S(this.promise,new Error("Array Methods must be provided an Array"))}var L=(B.prototype.catch=function(e){return this.then(null,e)},B.prototype.finally=function(t){var r=this.constructor;return l(t)?this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})}):this.then(t,t)},B);function B(e){this[x]=_++,this._result=this._state=void 0,this._subscribers=[],k!==e&&("function"!=typeof e&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof B?function(t,e){try{e(function(e){F(t,e)},function(e){S(t,e)})}catch(e){S(t,e)}}(this,e):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return L.prototype.then=v,L.all=function(e){return new P(this,e).promise},L.race=function(a){var o=this;return r(a)?new o(function(e,t){for(var r=a.length,n=0;n<r;n++)o.resolve(a[n]).then(e,t)}):new o(function(e,t){return t(new TypeError("You must pass an array to race."))})},L.resolve=w,L.reject=function(e){var t=new this(k);return S(t,e),t},L._setScheduler=function(e){a=e},L._setAsap=function(e){i=e},L._asap=i,L.polyfill=function(){var e=void 0;if(void 0!==V)e=V;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var r=null;try{r=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===r&&!t.cast)return}e.Promise=L},L.Promise=L},"object"==typeof n&&void 0!==r?r.exports=t():"function"==typeof define&&define.amd?define(t):e.ES6Promise=t()}).call(this,U("_process"),void 0!==a?a:"undefined"!=typeof self?self:void 0!==window?window:{})},{_process:236}],203:[function(e,t,r){"use strict";t.exports=e("./is-implemented")()?e("ext/global-this").Symbol:e("./polyfill")},{"./is-implemented":204,"./polyfill":209,"ext/global-this":213}],204:[function(e,t,r){"use strict";var n=e("ext/global-this"),a={object:!0,symbol:!0};t.exports=function(){var e,t=n.Symbol;if("function"!=typeof t)return!1;e=t("test symbol");try{String(e)}catch(e){return!1}return!!a[typeof t.iterator]&&(!!a[typeof t.toPrimitive]&&!!a[typeof t.toStringTag])}},{"ext/global-this":213}],205:[function(e,t,r){"use strict";t.exports=function(e){return!!e&&("symbol"==typeof e||!!e.constructor&&("Symbol"===e.constructor.name&&"Symbol"===e[e.constructor.toStringTag]))}},{}],206:[function(e,t,r){"use strict";var a=e("d"),n=Object.create,o=Object.defineProperty,i=Object.prototype,s=n(null);t.exports=function(e){for(var t,r,n=0;s[e+(n||"")];)++n;return s[e+=n||""]=!0,o(i,t="@@"+e,a.gs(null,function(e){r||(r=!0,o(this,t,a(e)),r=!1)})),t}},{d:157}],207:[function(e,t,r){"use strict";var n=e("d"),a=e("ext/global-this").Symbol;t.exports=function(e){return Object.defineProperties(e,{hasInstance:n("",a&&a.hasInstance||e("hasInstance")),isConcatSpreadable:n("",a&&a.isConcatSpreadable||e("isConcatSpreadable")),iterator:n("",a&&a.iterator||e("iterator")),match:n("",a&&a.match||e("match")),replace:n("",a&&a.replace||e("replace")),search:n("",a&&a.search||e("search")),species:n("",a&&a.species||e("species")),split:n("",a&&a.split||e("split")),toPrimitive:n("",a&&a.toPrimitive||e("toPrimitive")),toStringTag:n("",a&&a.toStringTag||e("toStringTag")),unscopables:n("",a&&a.unscopables||e("unscopables"))})}},{d:157,"ext/global-this":213}],208:[function(e,t,r){"use strict";var n=e("d"),a=e("../../../validate-symbol"),o=Object.create(null);t.exports=function(t){return Object.defineProperties(t,{for:n(function(e){return o[e]?o[e]:o[e]=t(String(e))}),keyFor:n(function(e){var t;for(t in a(e),o)if(o[t]===e)return t})})}},{"../../../validate-symbol":210,d:157}],209:[function(e,t,r){"use strict";var n,a,o,i=e("d"),s=e("./validate-symbol"),l=e("ext/global-this").Symbol,u=e("./lib/private/generate-name"),c=e("./lib/private/setup/standard-symbols"),d=e("./lib/private/setup/symbol-registry"),p=Object.create,m=Object.defineProperties,f=Object.defineProperty;if("function"==typeof l)try{String(l()),o=!0}catch(e){}else l=null;a=function(e){if(this instanceof a)throw new TypeError("Symbol is not a constructor");return n(e)},t.exports=n=function e(t){var r;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return o?l(t):(r=p(a.prototype),t=void 0===t?"":String(t),m(r,{__description__:i("",t),__name__:i("",u(t))}))},c(n),d(n),m(a.prototype,{constructor:i(n),toString:i("",function(){return this.__name__})}),m(n.prototype,{toString:i(function(){return"Symbol ("+s(this).__description__+")"}),valueOf:i(function(){return s(this)})}),f(n.prototype,n.toPrimitive,i("",function(){var e=s(this);return"symbol"==typeof e?e:e.toString()})),f(n.prototype,n.toStringTag,i("c","Symbol")),f(a.prototype,n.toStringTag,i("c",n.prototype[n.toStringTag])),f(a.prototype,n.toPrimitive,i("c",n.prototype[n.toPrimitive]))},{"./lib/private/generate-name":206,"./lib/private/setup/standard-symbols":207,"./lib/private/setup/symbol-registry":208,"./validate-symbol":210,d:157,"ext/global-this":213}],210:[function(e,t,r){"use strict";var n=e("./is-symbol");t.exports=function(e){if(!n(e))throw new TypeError(e+" is not a symbol");return e}},{"./is-symbol":205}],211:[function(e,t,r){"use strict";var a,n,o,i,s,l,u,c=e("d"),d=e("es5-ext/object/valid-callable"),p=Function.prototype.apply,m=Function.prototype.call,f=Object.create,h=Object.defineProperty,b=Object.defineProperties,g=Object.prototype.hasOwnProperty,y={configurable:!0,enumerable:!1,writable:!0};n=function(e,t){var r,n;return d(t),a.call(n=this,e,r=function(){o.call(n,e,r),p.call(t,this,arguments)}),r.__eeOnceListener__=t,this},s={on:a=function(e,t){var r;return d(t),g.call(this,"__ee__")?r=this.__ee__:(r=y.value=f(null),h(this,"__ee__",y),y.value=null),r[e]?"object"==typeof r[e]?r[e].push(t):r[e]=[r[e],t]:r[e]=t,this},once:n,off:o=function(e,t){var r,n,a,o;if(d(t),!g.call(this,"__ee__"))return this;if(!(r=this.__ee__)[e])return this;if("object"==typeof(n=r[e]))for(o=0;a=n[o];++o)a!==t&&a.__eeOnceListener__!==t||(2===n.length?r[e]=n[o?0:1]:n.splice(o,1));else n!==t&&n.__eeOnceListener__!==t||delete r[e];return this},emit:i=function(e){var t,r,n,a,o;if(g.call(this,"__ee__")&&(a=this.__ee__[e]))if("object"==typeof a){for(r=arguments.length,o=new Array(r-1),t=1;t<r;++t)o[t-1]=arguments[t];for(a=a.slice(),t=0;n=a[t];++t)p.call(n,this,o)}else switch(arguments.length){case 1:m.call(a,this);break;case 2:m.call(a,this,arguments[1]);break;case 3:m.call(a,this,arguments[1],arguments[2]);break;default:for(r=arguments.length,o=new Array(r-1),t=1;t<r;++t)o[t-1]=arguments[t];p.call(a,this,o)}}},l={on:c(a),once:c(n),off:c(o),emit:c(i)},u=b({},l),t.exports=r=function(e){return null==e?f(u):b(Object(e),l)},r.methods=s},{d:157,"es5-ext/object/valid-callable":192}],212:[function(e,t,r){function n(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")}t.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return n()}try{return __global__?__global__:n()}finally{delete Object.prototype.__global__}}()},{}],213:[function(e,t,r){"use strict";t.exports=e("./is-implemented")()?globalThis:e("./implementation")},{"./implementation":212,"./is-implemented":214}],214:[function(e,t,r){"use strict";t.exports=function(){return"object"==typeof globalThis&&(!!globalThis&&globalThis.Array===Array)}},{}],215:[function(e,t,r){t.exports=function(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}},{}],216:[function(e,t,r){"use strict";var c=e("es5-ext/number/to-pos-integer"),d=Object.create,p=Object.prototype.hasOwnProperty;t.exports=function(n){var a,o=0,i=1,s=d(null),l=d(null),u=0;return n=c(n),{hit:function(e){var t=l[e],r=++u;if(s[r]=e,l[e]=r,!t){if(++o<=n)return;return e=s[i],a(e),e}if(delete s[t],i===t)for(;!p.call(s,++i););},delete:a=function(e){var t=l[e];if(t&&(delete s[t],delete l[e],--o,i===t)){if(!o)return u=0,void(i=1);for(;!p.call(s,++i););}},clear:function(){o=0,i=1,s=d(null),l=d(null),u=0}}}},{"es5-ext/number/to-pos-integer":176}],217:[function(e,t,r){"use strict";var p=e("es5-ext/array/from"),a=e("es5-ext/object/map"),m=e("es5-ext/object/mixin"),f=e("es5-ext/function/_define-length"),h=e("next-tick"),b=Array.prototype.slice,g=Function.prototype.apply,y=Object.create;e("../lib/registered-extensions").async=function(e,i){var s,l,u,c=y(null),d=y(null),o=i.memoized,n=i.original;i.memoized=f(function(e){var t=arguments,r=t[t.length-1];return"function"==typeof r&&(s=r,t=b.call(t,0,-1)),o.apply(l=this,u=t)},o);try{m(i.memoized,o)}catch(e){}i.on("get",function(t){var r,n,a;if(s){if(c[t])return"function"==typeof c[t]?c[t]=[c[t],s]:c[t].push(s),void(s=null);r=s,n=l,a=u,s=l=u=null,h(function(){var e;hasOwnProperty.call(d,t)?(e=d[t],i.emit("getasync",t,a,n),g.call(r,e.context,e.args)):(s=r,l=n,u=a,o.apply(n,a))})}}),i.original=function(){var e,t,r,o;return s?(e=p(arguments),t=function e(t){var r,n,a=e.id;if(null!=a){if(delete e.id,r=c[a],delete c[a],r)return n=p(arguments),i.has(a)&&(t?i.delete(a):(d[a]={context:this,args:n},i.emit("setasync",a,"function"==typeof r?1:r.length))),"function"==typeof r?o=g.call(r,this,n):r.forEach(function(e){o=g.call(e,this,n)},this),o}else h(g.bind(e,this,arguments))},r=s,s=l=u=null,e.push(t),o=g.call(n,this,e),t.cb=r,s=t,o):g.call(n,this,arguments)},i.on("set",function(e){s?(c[e]?"function"==typeof c[e]?c[e]=[c[e],s.cb]:c[e].push(s.cb):c[e]=s.cb,delete s.cb,s.id=e,s=null):i.delete(e)}),i.on("delete",function(e){var t;hasOwnProperty.call(c,e)||d[e]&&(t=d[e],delete d[e],i.emit("deleteasync",e,b.call(t.args,1)))}),i.on("clear",function(){var e=d;d=y(null),i.emit("clearasync",a(e,function(e){return b.call(e.args,1)}))})}},{"../lib/registered-extensions":225,"es5-ext/array/from":160,"es5-ext/function/_define-length":165,"es5-ext/object/map":188,"es5-ext/object/mixin":189,"next-tick":235}],218:[function(e,t,r){"use strict";var a=e("es5-ext/object/valid-callable"),o=e("es5-ext/object/for-each"),i=e("../lib/registered-extensions"),s=Function.prototype.apply;i.dispose=function(r,e,t){var n;if(a(r),t.async&&i.async||t.promise&&i.promise)return e.on("deleteasync",n=function(e,t){s.call(r,null,t)}),void e.on("clearasync",function(e){o(e,function(e,t){n(t,e)})});e.on("delete",n=function(e,t){r(t)}),e.on("clear",function(e){o(e,function(e,t){n(t,e)})})}},{"../lib/registered-extensions":225,"es5-ext/object/for-each":181,"es5-ext/object/valid-callable":192}],219:[function(e,t,r){"use strict";var s=e("es5-ext/array/from"),l=e("es5-ext/object/for-each"),u=e("next-tick"),c=e("is-promise"),d=e("timers-ext/valid-timeout"),p=e("../lib/registered-extensions"),m=Function.prototype,f=Math.max,h=Math.min,b=Object.create;p.maxAge=function(t,a,o){var r,e,n,i;(t=d(t))&&(r=b(null),e=o.async&&p.async||o.promise&&p.promise?"async":"",a.on("set"+e,function(e){r[e]=setTimeout(function(){a.delete(e)},t),"function"==typeof r[e].unref&&r[e].unref(),i&&(i[e]&&"nextTick"!==i[e]&&clearTimeout(i[e]),i[e]=setTimeout(function(){delete i[e]},n),"function"==typeof i[e].unref&&i[e].unref())}),a.on("delete"+e,function(e){clearTimeout(r[e]),delete r[e],i&&("nextTick"!==i[e]&&clearTimeout(i[e]),delete i[e])}),o.preFetch&&(n=!0===o.preFetch||isNaN(o.preFetch)?.333:f(h(Number(o.preFetch),1),0))&&(i={},n=(1-n)*t,a.on("get"+e,function(t,r,n){i[t]||(i[t]="nextTick",u(function(){var e;"nextTick"===i[t]&&(delete i[t],a.delete(t),o.async&&(r=s(r)).push(m),e=a.memoized.apply(n,r),o.promise&&c(e)&&("function"==typeof e.done?e.done(m,m):e.then(m,m)))}))})),a.on("clear"+e,function(){l(r,function(e){clearTimeout(e)}),r={},i&&(l(i,function(e){"nextTick"!==e&&clearTimeout(e)}),i={})}))}},{"../lib/registered-extensions":225,"es5-ext/array/from":160,"es5-ext/object/for-each":181,"is-promise":215,"next-tick":235,"timers-ext/valid-timeout":239}],220:[function(e,t,r){"use strict";var i=e("es5-ext/number/to-pos-integer"),s=e("lru-queue"),l=e("../lib/registered-extensions");l.max=function(e,t,r){var n,a,o;(e=i(e))&&(a=s(e),n=r.async&&l.async||r.promise&&l.promise?"async":"",t.on("set"+n,o=function(e){void 0!==(e=a.hit(e))&&t.delete(e)}),t.on("get"+n,o),t.on("delete"+n,a.delete),t.on("clear"+n,a.clear))}},{"../lib/registered-extensions":225,"es5-ext/number/to-pos-integer":176,"lru-queue":216}],221:[function(e,t,r){"use strict";var n=e("es5-ext/object/map"),a=e("es5-ext/object/primitive-set"),o=e("es5-ext/object/validate-stringifiable-value"),i=e("es5-ext/to-short-string-representation"),m=e("is-promise"),f=e("next-tick"),s=Object.create,h=a("then","then:finally","done","done:finally");e("../lib/registered-extensions").promise=function(l,u){var c=s(null),d=s(null),p=s(null);if(!0===l)l=null;else if(l=o(l),!h[l])throw new TypeError("'"+i(l)+"' is not valid promise mode");u.on("set",function(r,e,t){var n=!1;if(!m(t))return d[r]=t,void u.emit("setasync",r,1);c[r]=1,p[r]=t;function a(e){var t=c[r];if(n)throw new Error("Memoizee error: Detected unordered then|done & finally resolution, which in turn makes proper detection of success/failure impossible (when in 'done:finally' mode)\nConsider to rely on 'then' or 'done' mode instead.");t&&(delete c[r],d[r]=e,u.emit("setasync",r,t))}function o(){n=!0,c[r]&&(delete c[r],delete p[r],u.delete(r))}var i=l;if("then"===(i=i||"then")){var s=function(){f(o)};"function"==typeof(t=t.then(function(e){f(a.bind(this,e))},s)).finally&&t.finally(s)}else if("done"===i){if("function"!=typeof t.done)throw new Error("Memoizee error: Retrieved promise does not implement 'done' in 'done' mode");t.done(a,o)}else if("done:finally"===i){if("function"!=typeof t.done)throw new Error("Memoizee error: Retrieved promise does not implement 'done' in 'done:finally' mode");if("function"!=typeof t.finally)throw new Error("Memoizee error: Retrieved promise does not implement 'finally' in 'done:finally' mode");t.done(a),t.finally(o)}}),u.on("get",function(e,t,r){var n;if(c[e])++c[e];else{n=p[e];var a=function(){u.emit("getasync",e,t,r)};m(n)?"function"==typeof n.done?n.done(a):n.then(function(){f(a)}):a()}}),u.on("delete",function(e){if(delete p[e],c[e])delete c[e];else if(hasOwnProperty.call(d,e)){var t=d[e];delete d[e],u.emit("deleteasync",e,[t])}}),u.on("clear",function(){var e=d;d=s(null),c=s(null),p=s(null),u.emit("clearasync",n(e,function(e){return[e]}))})}},{"../lib/registered-extensions":225,"es5-ext/object/map":188,"es5-ext/object/primitive-set":191,"es5-ext/object/validate-stringifiable-value":194,"es5-ext/to-short-string-representation":201,"is-promise":215,"next-tick":235}],222:[function(e,t,r){"use strict";var o=e("d"),i=e("../lib/registered-extensions"),s=Object.create,l=Object.defineProperties;i.refCounter=function(e,t,r){var n,a;n=s(null),a=r.async&&i.async||r.promise&&i.promise?"async":"",t.on("set"+a,function(e,t){n[e]=t||1}),t.on("get"+a,function(e){++n[e]}),t.on("delete"+a,function(e){delete n[e]}),t.on("clear"+a,function(){n={}}),l(t.memoized,{deleteRef:o(function(){var e=t.get(arguments);return null!==e&&n[e]?!--n[e]&&(t.delete(e),!0):null}),getRefCount:o(function(){var e=t.get(arguments);return null!==e&&n[e]?n[e]:0})})}},{"../lib/registered-extensions":225,d:157}],223:[function(n,e,t){"use strict";var a=n("es5-ext/object/normalize-options"),o=n("./lib/resolve-length"),i=n("./plain");e.exports=function(e){var t,r=a(arguments[1]);return r.normalizer||0!==(t=r.length=o(r.length,e.length,r.async))&&(r.primitive?!1===t?r.normalizer=n("./normalizers/primitive"):1<t&&(r.normalizer=n("./normalizers/get-primitive-fixed")(t)):r.normalizer=!1===t?n("./normalizers/get")():1===t?n("./normalizers/get-1")():n("./normalizers/get-fixed")(t)),r.async&&n("./ext/async"),r.promise&&n("./ext/promise"),r.dispose&&n("./ext/dispose"),r.maxAge&&n("./ext/max-age"),r.max&&n("./ext/max"),r.refCounter&&n("./ext/ref-counter"),i(e,r)}},{"./ext/async":217,"./ext/dispose":218,"./ext/max":220,"./ext/max-age":219,"./ext/promise":221,"./ext/ref-counter":222,"./lib/resolve-length":226,"./normalizers/get":232,"./normalizers/get-1":229,"./normalizers/get-fixed":230,"./normalizers/get-primitive-fixed":231,"./normalizers/primitive":233,"./plain":234,"es5-ext/object/normalize-options":190}],224:[function(e,t,r){"use strict";var v=e("es5-ext/error/custom"),w=e("es5-ext/function/_define-length"),x=e("d"),n=e("event-emitter").methods,k=e("./resolve-resolve"),D=e("./resolve-normalize"),E=Function.prototype.apply,A=Function.prototype.call,j=Object.create,C=Object.defineProperties,F=n.on,T=n.emit;t.exports=function(a,r,e){var o,t,i,s,n,l,u,c,d,p,m,f,h,b,g,y=j(null);return t=!1!==r?r:isNaN(a.length)?1:a.length,e.normalizer&&(p=D(e.normalizer),i=p.get,s=p.set,n=p.delete,l=p.clear),null!=e.resolvers&&(g=k(e.resolvers)),b=i?w(function(e){var t,r,n=arguments;if(g&&(n=g(n)),null!==(t=i(n))&&hasOwnProperty.call(y,t))return m&&o.emit("get",t,n,this),y[t];if(r=1===n.length?A.call(a,this,n[0]):E.call(a,this,n),null===t){if(null!==(t=i(n)))throw v("Circular invocation","CIRCULAR_INVOCATION");t=s(n)}else if(hasOwnProperty.call(y,t))throw v("Circular invocation","CIRCULAR_INVOCATION");return y[t]=r,f&&o.emit("set",t,null,r),r},t):0===r?function(){var e;if(hasOwnProperty.call(y,"data"))return m&&o.emit("get","data",arguments,this),y.data;if(e=arguments.length?E.call(a,this,arguments):A.call(a,this),hasOwnProperty.call(y,"data"))throw v("Circular invocation","CIRCULAR_INVOCATION");return y.data=e,f&&o.emit("set","data",null,e),e}:function(e){var t,r,n=arguments;if(g&&(n=g(arguments)),r=String(n[0]),hasOwnProperty.call(y,r))return m&&o.emit("get",r,n,this),y[r];if(t=1===n.length?A.call(a,this,n[0]):E.call(a,this,n),hasOwnProperty.call(y,r))throw v("Circular invocation","CIRCULAR_INVOCATION");return y[r]=t,f&&o.emit("set",r,null,t),t},o={original:a,memoized:b,profileName:e.profileName,get:function(e){return g&&(e=g(e)),i?i(e):String(e[0])},has:function(e){return hasOwnProperty.call(y,e)},delete:function(e){var t;hasOwnProperty.call(y,e)&&(n&&n(e),t=y[e],delete y[e],h&&o.emit("delete",e,t))},clear:function(){var e=y;l&&l(),y=j(null),o.emit("clear",e)},on:function(e,t){return"get"===e?m=!0:"set"===e?f=!0:"delete"===e&&(h=!0),F.call(this,e,t)},emit:T,updateEnv:function(){a=o.original}},u=i?w(function(e){var t,r=arguments;g&&(r=g(r)),null!==(t=i(r))&&o.delete(t)},t):0===r?function(){return o.delete("data")}:function(e){return g&&(e=g(arguments)[0]),o.delete(e)},c=w(function(){var e,t=arguments;return 0===r?y.data:(g&&(t=g(t)),e=i?i(t):String(t[0]),y[e])}),d=w(function(){var e,t=arguments;return 0===r?o.has("data"):(g&&(t=g(t)),null!==(e=i?i(t):String(t[0]))&&o.has(e))}),C(b,{__memoized__:x(!0),delete:x(u),clear:x(o.clear),_get:x(c),_has:x(d)}),o}},{"./resolve-normalize":227,"./resolve-resolve":228,d:157,"es5-ext/error/custom":164,"es5-ext/function/_define-length":165,"event-emitter":211}],225:[function(e,t,r){},{}],226:[function(e,t,r){"use strict";var n=e("es5-ext/number/to-pos-integer");t.exports=function(e,t,r){return isNaN(e)?0<=t?r&&t?t-1:t:1:!1!==e&&n(e)}},{"es5-ext/number/to-pos-integer":176}],227:[function(e,t,r){"use strict";var n=e("es5-ext/object/valid-callable");t.exports=function(e){var t;return"function"==typeof e?{set:e,get:e}:(t={get:n(e.get)},void 0!==e.set?(t.set=n(e.set),e.delete&&(t.delete=n(e.delete)),e.clear&&(t.clear=n(e.clear))):t.set=t.get,t)}},{"es5-ext/object/valid-callable":192}],228:[function(e,t,r){"use strict";var n,a=e("es5-ext/array/to-array"),o=e("es5-ext/object/is-value"),i=e("es5-ext/object/valid-callable"),s=Array.prototype.slice;n=function(r){return this.map(function(e,t){return e?e(r[t]):r[t]}).concat(s.call(r,this.length))},t.exports=function(e){return(e=a(e)).forEach(function(e){o(e)&&i(e)}),n.bind(e)}},{"es5-ext/array/to-array":163,"es5-ext/object/is-value":184,"es5-ext/object/valid-callable":192}],229:[function(e,t,r){"use strict";var a=e("es5-ext/array/#/e-index-of");t.exports=function(){var t=0,r=[],n=[];return{get:function(e){var t=a.call(r,e[0]);return-1===t?null:n[t]},set:function(e){return r.push(e[0]),n.push(++t),t},delete:function(e){var t=a.call(n,e);-1!==t&&(r.splice(t,1),n.splice(t,1))},clear:function(){r=[],n=[]}}}},{"es5-ext/array/#/e-index-of":159}],230:[function(e,t,r){"use strict";var u=e("es5-ext/array/#/e-index-of"),n=Object.create;t.exports=function(i){var a=0,s=[[],[]],l=n(null);return{get:function(e){for(var t,r=0,n=s;r<i-1;){if(-1===(t=u.call(n[0],e[r])))return null;n=n[1][t],++r}return-1!==(t=u.call(n[0],e[r]))&&n[1][t]||null},set:function(e){for(var t,r=0,n=s;r<i-1;)-1===(t=u.call(n[0],e[r]))&&(t=n[0].push(e[r])-1,n[1].push([[],[]])),n=n[1][t],++r;return-1===(t=u.call(n[0],e[r]))&&(t=n[0].push(e[r])-1),n[1][t]=++a,l[a]=e,a},delete:function(e){for(var t,r=0,n=s,a=[],o=l[e];r<i-1;){if(-1===(t=u.call(n[0],o[r])))return;a.push(n,t),n=n[1][t],++r}if(-1!==(t=u.call(n[0],o[r]))){for(e=n[1][t],n[0].splice(t,1),n[1].splice(t,1);!n[0].length&&a.length;)t=a.pop(),(n=a.pop())[0].splice(t,1),n[1].splice(t,1);delete l[e]}},clear:function(){s=[[],[]],l=n(null)}}}},{"es5-ext/array/#/e-index-of":159}],231:[function(e,t,r){"use strict";t.exports=function(a){return a?function(e){for(var t=String(e[0]),r=0,n=a;--n;)t+="\ 1"+e[++r];return t}:function(){return""}}},{}],232:[function(e,t,r){"use strict";var u=e("es5-ext/array/#/e-index-of"),n=Object.create;t.exports=function(){var o=0,s=[],l=n(null);return{get:function(e){var t,r=0,n=s,a=e.length;if(0===a)return n[a]||null;if(n=n[a]){for(;r<a-1;){if(-1===(t=u.call(n[0],e[r])))return null;n=n[1][t],++r}return-1!==(t=u.call(n[0],e[r]))&&n[1][t]||null}return null},set:function(e){var t,r=0,n=s,a=e.length;if(0===a)n[a]=++o;else{for(n[a]||(n[a]=[[],[]]),n=n[a];r<a-1;)-1===(t=u.call(n[0],e[r]))&&(t=n[0].push(e[r])-1,n[1].push([[],[]])),n=n[1][t],++r;-1===(t=u.call(n[0],e[r]))&&(t=n[0].push(e[r])-1),n[1][t]=++o}return l[o]=e,o},delete:function(e){var t,r=0,n=s,a=l[e],o=a.length,i=[];if(0===o)delete n[o];else if(n=n[o]){for(;r<o-1;){if(-1===(t=u.call(n[0],a[r])))return;i.push(n,t),n=n[1][t],++r}if(-1===(t=u.call(n[0],a[r])))return;for(e=n[1][t],n[0].splice(t,1),n[1].splice(t,1);!n[0].length&&i.length;)t=i.pop(),(n=i.pop())[0].splice(t,1),n[1].splice(t,1)}delete l[e]},clear:function(){s=[],l=n(null)}}}},{"es5-ext/array/#/e-index-of":159}],233:[function(e,t,r){"use strict";t.exports=function(e){var t,r,n=e.length;if(!n)return"\ 2";for(t=String(e[r=0]);--n;)t+="\ 1"+e[++r];return t}},{}],234:[function(e,t,r){"use strict";var o=e("es5-ext/object/valid-callable"),i=e("es5-ext/object/for-each"),s=e("./lib/registered-extensions"),l=e("./lib/configure-map"),u=e("./lib/resolve-length");t.exports=function e(t){var r,n,a;if(o(t),(r=Object(arguments[1])).async&&r.promise)throw new Error("Options 'async' and 'promise' cannot be used together");return hasOwnProperty.call(t,"__memoized__")&&!r.force?t:(n=u(r.length,t.length,r.async&&s.async),a=l(t,n,r),i(s,function(e,t){r[t]&&e(r[t],a,r)}),e.__profiler__&&e.__profiler__(a),a.updateEnv(),a.memoized)}},{"./lib/configure-map":224,"./lib/registered-extensions":225,"./lib/resolve-length":226,"es5-ext/object/for-each":181,"es5-ext/object/valid-callable":192}],235:[function(e,n,t){(function(e,t){"use strict";var o,r;o=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e},r=function(e){var t,r,n=document.createTextNode(""),a=0;return new e(function(){var e;if(t)r&&(t=r.concat(t));else{if(!r)return;t=r}if(r=t,t=null,"function"==typeof r)return e=r,r=null,void e();for(n.data=a=++a%2;r;)e=r.shift(),r.length||(r=null),e()}).observe(n,{characterData:!0}),function(e){o(e),t?"function"==typeof t?t=[t,e]:t.push(e):(t=e,n.data=a=++a%2)}},n.exports=function(){if("object"==typeof e&&e&&"function"==typeof e.nextTick)return e.nextTick;if("object"==typeof document&&document){if("function"==typeof MutationObserver)return r(MutationObserver);if("function"==typeof WebKitMutationObserver)return r(WebKitMutationObserver)}return"function"==typeof t?function(e){t(o(e))}:"function"==typeof setTimeout||"object"==typeof setTimeout?function(e){setTimeout(o(e),0)}:null}()}).call(this,e("_process"),e("timers").setImmediate)},{_process:236,timers:237}],236:[function(e,t,r){var n,a,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function l(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{a="function"==typeof clearTimeout?clearTimeout:s}catch(e){a=s}}();var u,c=[],d=!1,p=-1;function m(){d&&u&&(d=!1,u.length?c=u.concat(c):p=-1,c.length&&f())}function f(){if(!d){var e=l(m);d=!0;for(var t=c.length;t;){for(u=c,c=[];++p<t;)u&&u[p].run();p=-1,t=c.length}u=null,d=!1,function(t){if(a===clearTimeout)return clearTimeout(t);if((a===s||!a)&&clearTimeout)return a=clearTimeout,clearTimeout(t);try{a(t)}catch(e){try{return a.call(null,t)}catch(e){return a.call(this,t)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function b(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||d||l(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=b,o.addListener=b,o.once=b,o.off=b,o.removeListener=b,o.removeAllListeners=b,o.emit=b,o.prependListener=b,o.prependOnceListener=b,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],237:[function(l,e,u){(function(e,t){var n=l("process/browser.js").nextTick,r=Function.prototype.apply,a=Array.prototype.slice,o={},i=0;function s(e,t){this._id=e,this._clearFn=t}u.setTimeout=function(){return new s(r.call(setTimeout,window,arguments),clearTimeout)},u.setInterval=function(){return new s(r.call(setInterval,window,arguments),clearInterval)},u.clearTimeout=u.clearInterval=function(e){e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(window,this._id)},u.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},u.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},u._unrefActive=u.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},u.setImmediate="function"==typeof e?e:function(e){var t=i++,r=!(arguments.length<2)&&a.call(arguments,1);return o[t]=!0,n(function(){o[t]&&(r?e.apply(null,r):e.call(null),u.clearImmediate(t))}),t},u.clearImmediate="function"==typeof t?t:function(e){delete o[e]}}).call(this,l("timers").setImmediate,l("timers").clearImmediate)},{"process/browser.js":236,timers:237}],238:[function(e,t,r){"use strict";t.exports=2147483647},{}],239:[function(e,t,r){"use strict";var n=e("es5-ext/number/to-pos-integer"),a=e("./max-timeout");t.exports=function(e){if(e=n(e),a<e)throw new TypeError(e+" exceeds maximum possible timeout");return e}},{"./max-timeout":238,"es5-ext/number/to-pos-integer":176}],240:[function(e,t,r){"use strict";var n=e("../prototype/is");t.exports=function(e){if("function"!=typeof e)return!1;if(!hasOwnProperty.call(e,"length"))return!1;try{if("number"!=typeof e.length)return!1;if("function"!=typeof e.call)return!1;if("function"!=typeof e.apply)return!1}catch(e){return!1}return!n(e)}},{"../prototype/is":243}],241:[function(e,t,r){"use strict";var n=e("../value/is"),a={object:!0,function:!0,undefined:!0};t.exports=function(e){return!!n(e)&&hasOwnProperty.call(a,typeof e)}},{"../value/is":244}],242:[function(e,t,r){"use strict";var n=e("../function/is"),a=/^\s*class[\s{/}]/,o=Function.prototype.toString;t.exports=function(e){return!!n(e)&&!a.test(o.call(e))}},{"../function/is":240}],243:[function(e,t,r){"use strict";var n=e("../object/is");t.exports=function(e){if(!n(e))return!1;try{return e.constructor?e.constructor.prototype===e:!1}catch(e){return!1}}},{"../object/is":241}],244:[function(e,t,r){"use strict";t.exports=function(e){return null!=e}},{}],245:[function(e,t,r){(function(e){!function(e){"use strict";if(!e.WeakMap){var r=Object.prototype.hasOwnProperty,n=function(e,t,r){Object.defineProperty?Object.defineProperty(e,t,{configurable:!0,writable:!0,value:r}):e[t]=r};e.WeakMap=(n(t.prototype,"delete",function(e){if(a(this,"delete"),!i(e))return!1;var t=e[this._id];return!(!t||t[0]!==e||(delete e[this._id],0))}),n(t.prototype,"get",function(e){if(a(this,"get"),i(e)){var t=e[this._id];return t&&t[0]===e?t[1]:void 0}}),n(t.prototype,"has",function(e){if(a(this,"has"),!i(e))return!1;var t=e[this._id];return!(!t||t[0]!==e)}),n(t.prototype,"set",function(e,t){if(a(this,"set"),!i(e))throw new TypeError("Invalid value used as weak map key");var r=e[this._id];return r&&r[0]===e?r[1]=t:n(e,this._id,[e,t]),this}),n(t,"_polyfill",!0),t)}function t(){if(void 0===this)throw new TypeError("Constructor WeakMap requires 'new'");if(n(this,"_id","_WeakMap"+"_"+o()+"."+o()),0<arguments.length)throw new TypeError("WeakMap iterable is not supported")}function a(e,t){if(!i(e)||!r.call(e,"_id"))throw new TypeError(t+" method called on incompatible receiver "+typeof e)}function o(){return Math.random().toString().substring(2)}function i(e){return Object(e)===e}}("undefined"!=typeof self?self:void 0!==window?window:void 0!==e?e:this)}).call(this,void 0!==a?a:"undefined"!=typeof self?self:void 0!==window?window:{})},{}]},{},[1]);var utils=axe.utils={},s={};function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var l=/\{\{.+?\}\}/g;function t(e,t,r){"use strict";var n,a;for(n=0,a=e.length;n<a;n++)t[r](e[n])}function r(e){this.brand="axe",this.application="axeAPI",this.tagExclude=["experimental"],this.lang="en",this.defaultConfig=e,this._init(),this._defaultLocale=null}r.prototype._setDefaultLocale=function(){if(!this._defaultLocale){for(var e={checks:{},rules:{},failureSummaries:{},incompleteFallbackMessage:"",lang:this.lang},t=Object.keys(this.data.checks),r=0;r<t.length;r++){var n=t[r],a=this.data.checks[n].messages,o=a.pass,i=a.fail,s=a.incomplete;e.checks[n]={pass:o,fail:i,incomplete:s}}for(var l=Object.keys(this.data.rules),u=0;u<l.length;u++){var c=l[u],d=this.data.rules[c],p=d.description,m=d.help;e.rules[c]={description:p,help:m}}for(var f=Object.keys(this.data.failureSummaries),h=0;h<f.length;h++){var b=f[h],g=this.data.failureSummaries[b].failureMessage;e.failureSummaries[b]={failureMessage:g}}e.incompleteFallbackMessage=this.data.incompleteFallbackMessage,this._defaultLocale=e}},r.prototype._resetLocale=function(){var e=this._defaultLocale;e&&this.applyLocale(e)};function m(a,e,o){return o.performanceTimer&&axe.utils.performanceTimer.mark("mark_rule_start_"+a.id),function(r,n){a.run(e,o,function(e){r(e)},function(e){if(o.debug)n(e);else{var t=Object.assign(new h(a),{result:axe.constants.CANTTELL,description:"An error occured while running this rule",message:e.message,stack:e.stack,error:e,errorNode:e.errorNode});r(t)}})}}function o(e,t,r){var n=e.brand,a=e.application,o=e.lang;return axe.constants.helpUrlBase+n+"/"+(r||axe.version.substring(0,axe.version.lastIndexOf(".")))+"/"+t+"?application="+encodeURIComponent(a)+(o&&"en"!==o?"&lang="+encodeURIComponent(o):"")}function c(e){"use strict";this.id=e.id,this.data=null,this.relatedNodes=[],this.result=null}function n(e){"use strict";return"string"==typeof e?new Function("return "+e+";")():e}function i(e){e&&(this.id=e.id,this.configure(e))}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(e,t,r){"use strict";var n,a;e.frames=e.frames||[];var o=document.querySelectorAll(r.shift());e:for(var i=0,s=o.length;i<s;i++){a=o[i];for(var l=0,u=e.frames.length;l<u;l++)if(e.frames[l].node===a){e.frames[l][t].push(r);break e}n={node:a,include:[],exclude:[]},r&&n[t].push(r),e.frames.push(n)}}function p(e,t){"use strict";for(var r,n,a=[],o=0,i=e[t].length;o<i;o++){if("string"==typeof(r=e[t][o])){n=Array.from(document.querySelectorAll(r)),a=a.concat(n.map(function(e){return axe.utils.getNodeFromTree(e)}));break}!r||!r.length||r instanceof Node?r instanceof Node&&(r.documentElement instanceof Node?a.push(e.flatTree[0]):a.push(axe.utils.getNodeFromTree(r))):1<r.length?d(e,t,r):(n=Array.from(document.querySelectorAll(r[0])),a=a.concat(n.map(function(e){return axe.utils.getNodeFromTree(e)})))}return a.filter(function(e){return e})}function f(e){"use strict";var t=this;this.frames=[],this.initiator=!e||"boolean"!=typeof e.initiator||e.initiator,this.page=!1,e=function(e){"use strict";if(e&&"object"===W(e)||e instanceof NodeList){if(e instanceof Node)return{include:[e],exclude:[]};if(e.hasOwnProperty("include")||e.hasOwnProperty("exclude"))return{include:e.include&&+e.include.length?e.include:[document],exclude:e.exclude||[]};if(e.length===+e.length)return{include:e,exclude:[]}}return"string"==typeof e?{include:[e],exclude:[]}:{include:[document],exclude:[]}}(e),this.flatTree=axe.utils.getFlattenedTree(function(e){for(var t=e.include,r=e.exclude,n=Array.from(t).concat(Array.from(r)),a=0;a<n.length;++a){var o=n[a];if(o instanceof Element)return o.ownerDocument.documentElement;if(o instanceof Document)return o.documentElement}return document.documentElement}(e)),this.exclude=e.exclude,this.include=e.include,this.include=p(this,"include"),this.exclude=p(this,"exclude"),axe.utils.select("frame, iframe",this).forEach(function(e){Ze(e,t)&&function(e,t){"use strict";axe.utils.isHidden(t)||axe.utils.findBy(e,"node",t)||e.push({node:t,include:[],exclude:[]})}(t.frames,e.actualNode)}),1===this.include.length&&this.include[0].actualNode===document.documentElement&&(this.page=!0);var r=function(e){"use strict";if(0===e.include.length){if(0===e.frames.length){var t=axe.utils.respondable.isInFrame()?"frame":"page";return new Error("No elements found for include in "+t+" Context")}e.frames.forEach(function(e,t){if(0===e.include.length)return new Error("No elements found for include in Context of frame "+t)})}}(this);if(r instanceof Error)throw r;Array.isArray(this.include)||(this.include=Array.from(this.include)),this.include.sort(axe.utils.nodeSorter)}function h(e){"use strict";this.id=e.id,this.result=axe.constants.NA,this.pageLevel=e.pageLevel,this.impact=null,this.nodes=[]}function b(e,t){"use strict";this._audit=t,this.id=e.id,this.selector=e.selector||"*",this.excludeHidden="boolean"!=typeof e.excludeHidden||e.excludeHidden,this.enabled="boolean"!=typeof e.enabled||e.enabled,this.pageLevel="boolean"==typeof e.pageLevel&&e.pageLevel,this.any=e.any||[],this.all=e.all||[],this.none=e.none||[],this.tags=e.tags||[],this.preload=!!e.preload,e.matches&&(this.matches=n(e.matches))}function g(e){if(e.length){var r=!1,n={};return e.forEach(function(e){var t=e.results.filter(function(e){return e});(n[e.type]=t).length&&(r=!0)}),r?n:null}}function y(e){"use strict";var n=["any","all","none"],t=e.nodes.filter(function(t){var r=0;return n.forEach(function(e){t[e]=function(e){"use strict";return e.filter(function(e){return!0!==e.filtered})}(t[e]),r+=t[e].length}),0<r});return e.pageLevel&&t.length&&(t=[t.reduce(function(t,r){if(t)return n.forEach(function(e){t[e].push.apply(t[e],r[e])}),t})]),t}function v(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function w(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function x(e,t,r){return t&&w(e.prototype,t),r&&w(e,r),e}r.prototype._applyCheckLocale=function(e){for(var t,r,n,a,o=Object.keys(e),i=0;i<o.length;i++){var s=o[i];if(!this.data.checks[s])throw new Error('Locale provided for unknown check: "'.concat(s,'"'));this.data.checks[s]=(t=this.data.checks[s],r=e[s],a=n=void 0,n=r.pass,a=r.fail,"string"==typeof n&&l.test(n)&&(n=axe.imports.doT.compile(n)),"string"==typeof a&&l.test(a)&&(a=axe.imports.doT.compile(a)),Y({},t,{messages:{pass:n||t.messages.pass,fail:a||t.messages.fail,incomplete:"object"===W(t.messages.incomplete)?Y({},t.messages.incomplete,{},r.incomplete):r.incomplete}}))}},r.prototype._applyRuleLocale=function(e){for(var t,r,n,a,o=Object.keys(e),i=0;i<o.length;i++){var s=o[i];if(!this.data.rules[s])throw new Error('Locale provided for unknown rule: "'.concat(s,'"'));this.data.rules[s]=(t=this.data.rules[s],r=e[s],a=n=void 0,n=r.help,a=r.description,"string"==typeof n&&l.test(n)&&(n=axe.imports.doT.compile(n)),"string"==typeof a&&l.test(a)&&(a=axe.imports.doT.compile(a)),Y({},t,{help:n||t.help,description:a||t.description}))}},r.prototype._applyFailureSummaries=function(e){for(var t,r,n,a=Object.keys(e),o=0;o<a.length;o++){var i=a[o];if(!this.data.failureSummaries[i])throw new Error('Locale provided for unknown failureMessage: "'.concat(i,'"'));this.data.failureSummaries[i]=(t=this.data.failureSummaries[i],r=e[i],n=void 0,"string"==typeof(n=r.failureMessage)&&l.test(n)&&(n=axe.imports.doT.compile(n)),Y({},t,{failureMessage:n||t.failureMessage}))}},r.prototype.applyLocale=function(e){var t,r;this._setDefaultLocale(),e.checks&&this._applyCheckLocale(e.checks),e.rules&&this._applyRuleLocale(e.rules),e.failureSummaries&&this._applyFailureSummaries(e.failureSummaries,"failureSummaries"),e.incompleteFallbackMessage&&(this.data.incompleteFallbackMessage=(t=this.data.incompleteFallbackMessage,"string"==typeof(r=e.incompleteFallbackMessage)&&l.test(r)&&(r=axe.imports.doT.compile(r)),r||t)),e.lang&&(this.lang=e.lang)},r.prototype._init=function(){var e=function(e){"use strict";var t;return e?(t=axe.utils.clone(e)).commons=e.commons:t={},t.reporter=t.reporter||null,t.rules=t.rules||[],t.checks=t.checks||[],t.data=Y({checks:{},rules:{}},t.data),t}(this.defaultConfig);axe.commons=e.commons,this.lang=e.lang||"en",this.reporter=e.reporter,this.commands={},this.rules=[],this.checks={},t(e.rules,this,"addRule"),t(e.checks,this,"addCheck"),this.data={},this.data.checks=e.data&&e.data.checks||{},this.data.rules=e.data&&e.data.rules||{},this.data.failureSummaries=e.data&&e.data.failureSummaries||{},this.data.incompleteFallbackMessage=e.data&&e.data.incompleteFallbackMessage||"",this._constructHelpUrls()},r.prototype.registerCommand=function(e){"use strict";this.commands[e.id]=e.callback},r.prototype.addRule=function(e){"use strict";e.metadata&&(this.data.rules[e.id]=e.metadata);var t=this.getRule(e.id);t?t.configure(e):this.rules.push(new b(e,this))},r.prototype.addCheck=function(e){"use strict";var t=e.metadata;"object"===W(t)&&(this.data.checks[e.id]=t,"object"===W(t.messages)&&Object.keys(t.messages).filter(function(e){return t.messages.hasOwnProperty(e)&&"string"==typeof t.messages[e]}).forEach(function(e){0===t.messages[e].indexOf("function")&&(t.messages[e]=new Function("return "+t.messages[e]+";")())})),this.checks[e.id]?this.checks[e.id].configure(e):this.checks[e.id]=new i(e)},r.prototype.run=function(o,i,s,l){"use strict";this.normalizeOptions(i),axe._selectCache=[];var e,r,n,t=(e=this.rules,r=o,n=i,e.reduce(function(e,t){return axe.utils.ruleShouldRun(t,r,n)&&(t.preload?e.later.push(t):e.now.push(t)),e},{now:[],later:[]})),a=t.now,u=t.later,c=axe.utils.queue();a.forEach(function(e){c.defer(m(e,o,i))});var d=axe.utils.queue();u.length&&d.defer(function(t){axe.utils.preload(i).then(function(e){return t(e)}).catch(function(e){console.warn("Couldn't load preload assets: ",e),t(void 0)})});var p=axe.utils.queue();p.defer(c),p.defer(d),p.then(function(e){var t=e.pop();if(t&&t.length){var r=t[0];r&&(o=Y({},o,{},r))}var n=e[0];if(!u.length)return axe._selectCache=void 0,void s(n.filter(function(e){return!!e}));var a=axe.utils.queue();u.forEach(function(e){var t=m(e,o,i);a.defer(t)}),a.then(function(e){axe._selectCache=void 0,s(n.concat(e).filter(function(e){return!!e}))}).catch(l)}).catch(l)},r.prototype.after=function(e,r){"use strict";var n=this.rules;return e.map(function(e){var t=axe.utils.findBy(n,"id",e.id);if(!t)throw new Error("Result for unknown rule. You may be running mismatch axe-core versions");return t.after(e,r)})},r.prototype.getRule=function(t){return this.rules.find(function(e){return e.id===t})},r.prototype.normalizeOptions=function(e){"use strict";var t=[],r=[];if(this.rules.forEach(function(e){r.push(e.id),e.tags.forEach(function(e){t.includes(e)||t.push(e)})}),"object"===W(e.runOnly)){if(Array.isArray(e.runOnly)){var n=e.runOnly.find(function(e){return t.includes(e)}),a=e.runOnly.find(function(e){return r.includes(e)});if(n&&a)throw new Error("runOnly cannot be both rules and tags");e.runOnly=a?{type:"rule",values:e.runOnly}:{type:"tag",values:e.runOnly}}var o=e.runOnly;if(o.value&&!o.values&&(o.values=o.value,delete o.value),!Array.isArray(o.values)||0===o.values.length)throw new Error("runOnly.values must be a non-empty array");if(["rule","rules"].includes(o.type))o.type="rule",o.values.forEach(function(e){if(!r.includes(e))throw new Error("unknown rule `"+e+"` in options.runOnly")});else{if(!["tag","tags",void 0].includes(o.type))throw new Error("Unknown runOnly type '".concat(o.type,"'"));o.type="tag";var i=o.values.filter(function(e){return!t.includes(e)});0!==i.length&&axe.log("Could not find tags `"+i.join("`, `")+"`")}}return"object"===W(e.rules)&&Object.keys(e.rules).forEach(function(e){if(!r.includes(e))throw new Error("unknown rule `"+e+"` in options.rules")}),e},r.prototype.setBranding=function(e){"use strict";var t={brand:this.brand,application:this.application};e&&e.hasOwnProperty("brand")&&e.brand&&"string"==typeof e.brand&&(this.brand=e.brand),e&&e.hasOwnProperty("application")&&e.application&&"string"==typeof e.application&&(this.application=e.application),this._constructHelpUrls(t)},r.prototype._constructHelpUrls=function(){var r=this,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,a=(axe.version.match(/^[1-9][0-9]*\.[0-9]+/)||["x.y"])[0];this.rules.forEach(function(e){r.data.rules[e.id]||(r.data.rules[e.id]={});var t=r.data.rules[e.id];("string"!=typeof t.helpUrl||n&&t.helpUrl===o(n,e.id,a))&&(t.helpUrl=o(r,e.id,a))})},r.prototype.resetRulesAndChecks=function(){"use strict";this._init(),this._resetLocale()},function(){"use strict";var r={},e={set:function(e,t){r[e]=t},get:function(e){return r[e]},clear:function(){r={}}};axe._cache=e}(),i.prototype.enabled=!0,i.prototype.run=function(t,e,r,n,a){"use strict";var o=(e=e||{}).hasOwnProperty("enabled")?e.enabled:this.enabled,i=e.options||this.options;if(o){var s,l=new c(this),u=axe.utils.checkHelper(l,e,n,a);try{s=this.evaluate.call(u,t.actualNode,i,t,r)}catch(e){return t&&t.actualNode&&(e.errorNode=new le(t.actualNode).toJSON()),void a(e)}u.isAsync||(l.result=s,n(l))}else n(null)},i.prototype.runSync=function(t,e,r){var n=(e=e||{}).enabled;if(!(void 0===n?this.enabled:n))return null;var a,o=e.options||this.options,i=new c(this),s=axe.utils.checkHelper(i,e);s.async=function(){throw new Error("Cannot run async check while in a synchronous run")};try{a=this.evaluate.call(s,t.actualNode,o,t,r)}catch(e){throw t&&t.actualNode&&(e.errorNode=new le(t.actualNode).toJSON()),e}return i.result=a,i},i.prototype.configure=function(t){var r=this;["options","enabled"].filter(function(e){return t.hasOwnProperty(e)}).forEach(function(e){return r[e]=t[e]}),["evaluate","after"].filter(function(e){return t.hasOwnProperty(e)}).forEach(function(e){return r[e]=n(t[e])})},b.prototype.matches=function(){"use strict";return!0},b.prototype.gather=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r="mark_gather_start_"+this.id,n="mark_gather_end_"+this.id,a="mark_isHidden_start_"+this.id,o="mark_isHidden_end_"+this.id;t.performanceTimer&&axe.utils.performanceTimer.mark(r);var i=axe.utils.select(this.selector,e);return this.excludeHidden&&(t.performanceTimer&&axe.utils.performanceTimer.mark(a),i=i.filter(function(e){return!axe.utils.isHidden(e.actualNode)}),t.performanceTimer&&(axe.utils.performanceTimer.mark(o),axe.utils.performanceTimer.measure("rule_"+this.id+"#gather_axe.utils.isHidden",a,o))),t.performanceTimer&&(axe.utils.performanceTimer.mark(n),axe.utils.performanceTimer.measure("rule_"+this.id+"#gather",r,n)),i},b.prototype.runChecks=function(t,a,o,i,r,e){"use strict";var s=this,l=axe.utils.queue();this[t].forEach(function(e){var r=s._audit.checks[e.id||e],n=axe.utils.getCheckOption(r,s.id,o);l.defer(function(e,t){r.run(a,n,i,e,t)})}),l.then(function(e){e=e.filter(function(e){return e}),r({type:t,results:e})}).catch(e)},b.prototype.runChecksSync=function(e,n,a,o){"use strict";var i=this,s=[];return this[e].forEach(function(e){var t=i._audit.checks[e.id||e],r=axe.utils.getCheckOption(t,i.id,a);s.push(t.runSync(n,r,o))}),{type:e,results:s=s.filter(function(e){return e})}},b.prototype.run=function(a){var o=this,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=2<arguments.length?arguments[2]:void 0,t=3<arguments.length?arguments[3]:void 0;i.performanceTimer&&this._trackPerformance();var r,s=axe.utils.queue(),l=new h(this);try{r=this.gatherAndMatchNodes(a,i)}catch(e){return void t(new u({cause:e,ruleId:this.id}))}i.performanceTimer&&this._logGatherPerformance(r),r.forEach(function(n){s.defer(function(r,t){var e=axe.utils.queue();["any","all","none"].forEach(function(r){e.defer(function(e,t){o.runChecks(r,n,i,a,e,t)})}),e.then(function(e){var t=g(e);t&&(t.node=new axe.utils.DqElement(n.actualNode,i),l.nodes.push(t)),r()}).catch(function(e){return t(e)})})}),s.defer(function(e){return setTimeout(e,0)}),i.performanceTimer&&this._logRulePerformance(),s.then(function(){return e(l)}).catch(function(e){return t(e)})},b.prototype.runSync=function(n){var a=this,o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};o.performanceTimer&&this._trackPerformance();var e,i=new h(this);try{e=this.gatherAndMatchNodes(n,o)}catch(e){throw new u({cause:e,ruleId:this.id})}return o.performanceTimer&&this._logGatherPerformance(e),e.forEach(function(t){var r=[];["any","all","none"].forEach(function(e){r.push(a.runChecksSync(e,t,o,n))});var e=g(r);e&&(e.node=t.actualNode?new axe.utils.DqElement(t.actualNode,o):null,i.nodes.push(e))}),o.performanceTimer&&this._logRulePerformance(),i},b.prototype._trackPerformance=function(){this._markStart="mark_rule_start_"+this.id,this._markEnd="mark_rule_end_"+this.id,this._markChecksStart="mark_runchecks_start_"+this.id,this._markChecksEnd="mark_runchecks_end_"+this.id},b.prototype._logGatherPerformance=function(e){axe.log("gather (",e.length,"):",axe.utils.performanceTimer.timeElapsed()+"ms"),axe.utils.performanceTimer.mark(this._markChecksStart)},b.prototype._logRulePerformance=function(){axe.utils.performanceTimer.mark(this._markChecksEnd),axe.utils.performanceTimer.mark(this._markEnd),axe.utils.performanceTimer.measure("runchecks_"+this.id,this._markChecksStart,this._markChecksEnd),axe.utils.performanceTimer.measure("rule_"+this.id,this._markStart,this._markEnd)},b.prototype.gatherAndMatchNodes=function(t,e){var r=this,n="mark_matches_start_"+this.id,a="mark_matches_end_"+this.id,o=this.gather(t,e);return e.performanceTimer&&axe.utils.performanceTimer.mark(n),o=o.filter(function(e){return r.matches(e.actualNode,e,t)}),e.performanceTimer&&(axe.utils.performanceTimer.mark(a),axe.utils.performanceTimer.measure("rule_"+this.id+"#matches",n,a)),o},b.prototype.after=function(a,o){"use strict";var e=function(r){"use strict";return axe.utils.getAllChecks(r).map(function(e){var t=r._audit.checks[e.id||e];return t&&"function"==typeof t.after?t:null}).filter(Boolean)}(this),i=this.id;return e.forEach(function(e){var t=function(e,t){"use strict";var r=[];return e.forEach(function(e){axe.utils.getAllChecks(e).forEach(function(e){e.id===t&&r.push(e)})}),r}(a.nodes,e.id),r=axe.utils.getCheckOption(e,i,o),n=e.after(t,r);t.forEach(function(e){-1===n.indexOf(e)&&(e.filtered=!0)})}),a.nodes=y(a),a},b.prototype.configure=function(e){"use strict";e.hasOwnProperty("selector")&&(this.selector=e.selector),e.hasOwnProperty("excludeHidden")&&(this.excludeHidden="boolean"!=typeof e.excludeHidden||e.excludeHidden),e.hasOwnProperty("enabled")&&(this.enabled="boolean"!=typeof e.enabled||e.enabled),e.hasOwnProperty("pageLevel")&&(this.pageLevel="boolean"==typeof e.pageLevel&&e.pageLevel),e.hasOwnProperty("any")&&(this.any=e.any),e.hasOwnProperty("all")&&(this.all=e.all),e.hasOwnProperty("none")&&(this.none=e.none),e.hasOwnProperty("tags")&&(this.tags=e.tags),e.hasOwnProperty("matches")&&("string"==typeof e.matches?this.matches=new Function("return "+e.matches+";")():this.matches=e.matches)};var k=/[\t\r\n\f]/g,D=(x(E,[{key:"attr",value:function(){throw new Error('VirtualNode class must have a "attr" function')}},{key:"hasAttr",value:function(){throw new Error('VirtualNode class must have a "hasAttr" function')}},{key:"hasClass",value:function(e){var t=this.attr("class");if(!t)return!1;var r=" "+e+" ";return 0<=(" "+t+" ").replace(k," ").indexOf(r)}},{key:"props",get:function(){throw new Error('VirtualNode class must have a "props" object consisting of "nodeType" and "nodeName" properties')}}]),E);function E(){v(this,E),this.children=[],this.parent=null}function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function v(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function w(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function x(e,t,r){return t&&w(e.prototype,t),r&&w(e,r),e}function A(e,t){return!t||"object"!==W(t)&&"function"!=typeof t?j(e):t}function j(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function C(e){return(C=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function F(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&T(e,t)}function T(e,t){return(T=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}axe.AbstractVirtualNode=D;var N,S,z=(N=axe.AbstractVirtualNode,F(q,N),x(q,[{key:"attr",value:function(e){return this._attrs[e]||null}},{key:"hasAttr",value:function(e){return void 0!==this._attrs[e]}},{key:"props",get:function(){return this._props}}]),q);function q(e){var t,r,n,a;return v(this,q),(t=A(this,C(q).call(this)))._props=function(e){var t=e.nodeName,r=e.nodeType,n=void 0===r?1:r;axe.utils.assert(1===n,"nodeType has to be undefined or 1, got '".concat(n,"'")),axe.utils.assert("string"==typeof t,"nodeName has to be a string, got '".concat(t,"'"));var a=Y({},e,{nodeType:n,nodeName:t.toLowerCase()});return delete a.attributes,Object.freeze(a)}(e),t._attrs=(r=e.attributes,n=void 0===r?{}:r,a={htmlFor:"for",className:"class"},Object.keys(n).reduce(function(e,t){var r=n[t];return axe.utils.assert("object"!==W(r)||null===r,"expects attributes not to be an object, '".concat(t,"' was")),void 0!==r&&(e[a[t]||t]=null!==r?String(r):null),e},{})),t}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function v(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function w(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function x(e,t,r){return t&&w(e.prototype,t),r&&w(e,r),e}function A(e,t){return!t||"object"!==W(t)&&"function"!=typeof t?j(e):t}function C(e){return(C=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function j(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function F(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&T(e,t)}function T(e,t){return(T=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}axe.SerialVirtualNode=z;var O,K=(O=axe.AbstractVirtualNode,F(_,O),x(_,[{key:"attr",value:function(e){return"function"!=typeof this.actualNode.getAttribute?null:this.actualNode.getAttribute(e)}},{key:"hasAttr",value:function(e){return"function"==typeof this.actualNode.hasAttribute&&this.actualNode.hasAttribute(e)}},{key:"getComputedStylePropertyValue",value:function(e){var t="computedStyle_"+e;return this._cache.hasOwnProperty(t)||(this._cache.hasOwnProperty("computedStyle")||(this._cache.computedStyle=window.getComputedStyle(this.actualNode)),this._cache[t]=this._cache.computedStyle.getPropertyValue(e)),this._cache[t]}},{key:"props",get:function(){var e=this.actualNode,t=e.nodeType,r=e.nodeName,n=e.id,a=e.type,o=e.multiple;return{nodeType:t,nodeName:this._isXHTML?r:r.toLowerCase(),id:n,type:a,multiple:o}}},{key:"isFocusable",get:function(){return this._cache.hasOwnProperty("isFocusable")||(this._cache.isFocusable=axe.commons.dom.isFocusable(this.actualNode)),this._cache.isFocusable}},{key:"tabbableElements",get:function(){return this._cache.hasOwnProperty("tabbableElements")||(this._cache.tabbableElements=axe.commons.dom.getTabbableElements(this)),this._cache.tabbableElements}},{key:"clientRects",get:function(){return this._cache.hasOwnProperty("clientRects")||(this._cache.clientRects=Array.from(this.actualNode.getClientRects()).filter(function(e){return 0<e.width})),this._cache.clientRects}},{key:"boundingClientRect",get:function(){return this._cache.hasOwnProperty("boundingClientRect")||(this._cache.boundingClientRect=this.actualNode.getBoundingClientRect()),this._cache.boundingClientRect}}]),_);function _(e,t,r){var n;return v(this,_),(n=A(this,C(_).call(this))).shadowId=r,n.children=[],n.actualNode=e,n.parent=t,n._isHidden=null,n._cache={},void 0===S&&(S=axe.utils.isXHTML(e.ownerDocument)),n._isXHTML=S,axe._cache.get("nodeMap")&&axe._cache.get("nodeMap").set(e,j(n)),n}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function R(t,r){"use strict";if(t=t||function(){},r=r||axe.log,!axe._audit)throw new Error("No audit configured");var n=axe.utils.queue(),a=[];Object.keys(axe.plugins).forEach(function(e){n.defer(function(t){function r(e){a.push(e),t()}try{axe.plugins[e].cleanup(t,r)}catch(e){r(e)}})});var e=axe.utils.getFlattenedTree(document.body);axe.utils.querySelectorAll(e,"iframe, frame").forEach(function(r){n.defer(function(e,t){return axe.utils.sendCommandToFrame(r.actualNode,{command:"cleanup-plugin"},e,t)})}),n.then(function(e){0===a.length?t(e):r(a)}).catch(r)}function X(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,a=!1,o=void 0;try{for(var i,s=e[Symbol.iterator]();!(n=(i=s.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw o}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function P(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function I(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,a=!1,o=void 0;try{for(var i,s=e[Symbol.iterator]();!(n=(i=s.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw o}}return r}}function L(e){if(Array.isArray(e))return e}function B(e,t,r){"use strict";function n(e){e instanceof Error==!1&&(e=new Error(e)),r(e)}var a=r,o=e&&e.context||{};o.hasOwnProperty("include")&&!o.include.length&&(o.include=[document]);var i=e&&e.options||{};switch(e.command){case"rules":return $(o,i,function(e,t){a(e),t()},n);case"cleanup-plugin":return R(a,n);default:if(axe._audit&&axe._audit.commands&&axe._audit.commands[e.command])return axe._audit.commands[e.command](e,r)}}function M(e){"use strict";this._run=e.run,this._collect=e.collect,this._registry={},e.commands.forEach(function(e){axe._audit.registerCommand(e)})}axe.VirtualNode=K,function(axe){var o={helpUrlBase:"https://dequeuniversity.com/rules/",results:[],resultGroups:[],resultGroupMap:{},impact:Object.freeze(["minor","moderate","serious","critical"]),preload:Object.freeze({assets:["cssom","media"],timeout:1e4})};[{name:"NA",value:"inapplicable",priority:0,group:"inapplicable"},{name:"PASS",value:"passed",priority:1,group:"passes"},{name:"CANTTELL",value:"cantTell",priority:2,group:"incomplete"},{name:"FAIL",value:"failed",priority:3,group:"violations"}].forEach(function(e){var t=e.name,r=e.value,n=e.priority,a=e.group;o[t]=r,o[t+"_PRIO"]=n,o[t+"_GROUP"]=a,o.results[n]=r,o.resultGroups[n]=a,o.resultGroupMap[r]=a}),Object.freeze(o.results),Object.freeze(o.resultGroups),Object.freeze(o.resultGroupMap),Object.freeze(o),Object.defineProperty(axe,"constants",{value:o,enumerable:!0,configurable:!1,writable:!1})}(axe),axe.log=function(){"use strict";"object"===("undefined"==typeof console?"undefined":W(console))&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},axe.cleanup=R,axe.configure=function(e){"use strict";var t;if(!(t=axe._audit))throw new Error("No audit configured");if(e.axeVersion||e.ver){var r=e.axeVersion||e.ver;if(!/^\d+\.\d+\.\d+(-canary)?/.test(r))throw new Error("Invalid configured version ".concat(r));var n=r.split("-"),a=X(n,2),o=a[0],i=a[1],s=o.split(".").map(Number),l=X(s,3),u=l[0],c=l[1],d=l[2],p=axe.version.split("-"),m=X(p,2),f=m[0],h=m[1],b=f.split(".").map(Number),g=X(b,3),y=g[0],v=g[1],w=g[2];if(u!==y||v<c||v===c&&w<d||u===y&&c===v&&d===w&&i&&i!==h)throw new Error("Configured version ".concat(r," is not compatible with current axe version ").concat(axe.version))}if(e.reporter&&("function"==typeof e.reporter||U[e.reporter])&&(t.reporter=e.reporter),e.checks){if(!Array.isArray(e.checks))throw new TypeError("Checks property must be an array");e.checks.forEach(function(e){if(!e.id)throw new TypeError("Configured check ".concat(JSON.stringify(e)," is invalid. Checks must be an object with at least an id property"));t.addCheck(e)})}var x=[];if(e.rules){if(!Array.isArray(e.rules))throw new TypeError("Rules property must be an array");e.rules.forEach(function(e){if(!e.id)throw new TypeError("Configured rule ".concat(JSON.stringify(e)," is invalid. Rules must be an object with at least an id property"));x.push(e.id),t.addRule(e)})}e.disableOtherRules&&t.rules.forEach(function(e){!1===x.includes(e.id)&&(e.enabled=!1)}),void 0!==e.branding?t.setBranding(e.branding):t._constructHelpUrls(),e.tagExclude&&(t.tagExclude=e.tagExclude),e.locale&&t.applyLocale(e.locale)},axe.getRules=function(e){"use strict";var t=(e=e||[]).length?axe._audit.rules.filter(function(t){return!!e.filter(function(e){return-1!==t.tags.indexOf(e)}).length}):axe._audit.rules,r=axe._audit.data.rules||{};return t.map(function(e){var t=r[e.id]||{};return{ruleId:e.id,description:t.description,help:t.help,helpUrl:t.helpUrl,tags:e.tags}})},axe._load=function(e){"use strict";axe.utils.respondable.subscribe("axe.ping",function(e,t,r){r({axe:!0})}),axe.utils.respondable.subscribe("axe.start",B),axe._audit=new r(e)},(axe=axe||{}).plugins={},M.prototype.run=function(){"use strict";return this._run.apply(this,arguments)},M.prototype.collect=function(){"use strict";return this._collect.apply(this,arguments)},M.prototype.cleanup=function(e){"use strict";var r=axe.utils.queue(),n=this;Object.keys(this._registry).forEach(function(t){r.defer(function(e){n._registry[t].cleanup(e)})}),r.then(function(){e()})},M.prototype.add=function(e){"use strict";this._registry[e.id]=e},axe.registerPlugin=function(e){"use strict";axe.plugins[e.id]=new M(e)};var V,U={};function H(){axe._memoizedFns.forEach(function(e){return e.clear()}),axe._cache.clear(),axe._tree=void 0,axe._selectorData=void 0}function $(r,n,a,o){"use strict";try{r=new f(r),axe._tree=r.flatTree,axe._selectorData=axe.utils.getSelectorData(r.flatTree)}catch(e){return H(),o(e)}var i,e=axe.utils.queue(),s=axe._audit;n.performanceTimer&&axe.utils.performanceTimer.auditStart(),r.frames.length&&!1!==n.iframes&&e.defer(function(e,t){axe.utils.collectResultsFromFrames(r,n,"rules",null,e,t)}),e.defer(function(e,t){n.restoreScroll&&(i=axe.utils.getScrollState()),s.run(r,n,e,t)}),e.then(function(e){try{i&&axe.utils.setScrollState(i),n.performanceTimer&&axe.utils.performanceTimer.auditEnd();var t=axe.utils.mergeResults(e.map(function(e){return{results:e}}));r.initiator&&((t=s.after(t,n)).forEach(axe.utils.publishMetaData),t=t.map(axe.utils.finalizeRuleResult));try{a(t,H)}catch(e){H(),axe.log(e)}}catch(e){H(),o(e)}}).catch(function(e){H(),o(e)})}function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}axe.getReporter=function(e){"use strict";return"string"==typeof e&&U[e]?U[e]:"function"==typeof e?e:V},axe.addReporter=function(e,t,r){"use strict";U[e]=t,r&&(V=t)},axe.reset=function(){"use strict";var e=axe._audit;if(!e)throw new Error("No audit configured");e.resetRulesAndChecks()},axe._runRules=$,axe.runVirtualRule=function(t,e){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};r.reporter=r.reporter||axe._audit.reporter||"v1",axe._selectorData={},e instanceof axe.AbstractVirtualNode==!1&&(e=new z(e));var n=axe._audit.rules.find(function(e){return e.id===t});if(!n)throw new Error("unknown rule `"+t+"`");var a={include:[e]},o=(n=Object.create(n,{excludeHidden:{value:!1}})).runSync(a,r);axe.utils.publishMetaData(o),axe.utils.finalizeRuleResult(o);var i=axe.utils.aggregateResult([o]);return i.violations.forEach(function(e){return e.nodes.forEach(function(e){e.failureSummary=s.failureSummary(e)})}),Y({},s.getEnvironmentData(),{},i,{toolOptions:r})};function G(){}function J(e,t,r){"use strict";var n=new TypeError("axe.run arguments are invalid");if(!function(e){"use strict";switch(!0){case"string"==typeof e:case Array.isArray(e):case Node&&e instanceof Node:case NodeList&&e instanceof NodeList:return 1;case"object"!==W(e):return;case void 0!==e.include:case void 0!==e.exclude:case"number"==typeof e.length:return 1;default:return}}(e)){if(void 0!==r)throw n;r=t,t=e,e=document}if("object"!==W(t)){if(void 0!==r)throw n;r=t,t={}}if("function"!=typeof r&&void 0!==r)throw n;return{context:e,options:t,callback:r||G}}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}axe.run=function(e,a,o){"use strict";if(!axe._audit)throw new Error("No audit configured");var t,r=J(e,a,o);e=r.context,a=r.options,o=r.callback,a.reporter=a.reporter||axe._audit.reporter||"v1",a.performanceTimer&&axe.utils.performanceTimer.start();var i=G,s=G;if("function"==typeof Promise&&o===G&&(t=new Promise(function(e,t){i=t,s=e})),axe._running){var n="Axe is already running. Use `await axe.run()` to wait for the previous run to finish before starting a new run.";return o(n),i(n),t}return axe._running=!0,axe._runRules(e,a,function(e,t){function r(e){axe._running=!1,t();try{o(null,e)}catch(e){axe.log(e)}s(e)}a.performanceTimer&&axe.utils.performanceTimer.end();try{var n=axe.getReporter(a.reporter)(e,a,r);void 0!==n&&r(n)}catch(e){axe._running=!1,t(),o(e),i(e)}},function(e){axe._running=!1,o(e),i(e)}),t},s.failureSummary=function(e){"use strict";var r={};return r.none=e.none.concat(e.all),r.any=e.any,Object.keys(r).map(function(e){if(r[e].length){var t=axe._audit.data.failureSummaries[e];return t&&"function"==typeof t.failureMessage?t.failureMessage(r[e].map(function(e){return e.message||""})):void 0}}).filter(function(e){return void 0!==e}).join("\n\n")},s.getEnvironmentData=function(e){var t=0<arguments.length&&void 0!==e?e:window,r=t.screen,n=void 0===r?{}:r,a=t.navigator,o=void 0===a?{}:a,i=t.location,s=void 0===i?{}:i,l=t.innerHeight,u=t.innerWidth,c=n.msOrientation||n.orientation||n.mozOrientation||{};return{testEngine:{name:"axe-core",version:axe.version},testRunner:{name:axe._audit.brand},testEnvironment:{userAgent:o.userAgent,windowWidth:u,windowHeight:l,orientationAngle:c.angle,orientationType:c.type},timestamp:(new Date).toISOString(),url:s.href}},s.incompleteFallbackMessage=function(){"use strict";return"function"==typeof axe._audit.data.incompleteFallbackMessage?axe._audit.data.incompleteFallbackMessage():axe._audit.data.incompleteFallbackMessage};var Z=axe.constants.resultGroups;function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}s.processAggregate=function(e,r){var t=axe.utils.aggregateResult(e);return Z.forEach(function(e){r.resultTypes&&!r.resultTypes.includes(e)&&(t[e]||[]).forEach(function(e){Array.isArray(e.nodes)&&0<e.nodes.length&&(e.nodes=[e.nodes[0]])}),t[e]=(t[e]||[]).map(function(t){return t=Object.assign({},t),Array.isArray(t.nodes)&&0<t.nodes.length&&(t.nodes=t.nodes.map(function(e){return"object"===W(e.node)&&(e.html=e.node.source,r.elementRef&&!e.node.fromFrame&&(e.element=e.node.element),!1===r.selectors&&!e.node.fromFrame||(e.target=e.node.selector),r.xpath&&(e.xpath=e.node.xpath)),delete e.result,delete e.node,function(t,r){"use strict";["any","all","none"].forEach(function(e){Array.isArray(t[e])&&t[e].filter(function(e){return Array.isArray(e.relatedNodes)}).forEach(function(e){e.relatedNodes=e.relatedNodes.map(function(e){var t={html:e.source};return r.elementRef&&!e.fromFrame&&(t.element=e.element),!1===r.selectors&&!e.fromFrame||(t.target=e.selector),r.xpath&&(t.xpath=e.xpath),t})})})}(e,r),e})),Z.forEach(function(e){return delete t[e]}),delete t.pageLevel,delete t.result,t})}),t},axe.addReporter("na",function(e,t,r){"use strict";console.warn('"na" reporter will be deprecated in axe v4.0. Use the "v2" reporter instead.'),"function"==typeof t&&(r=t,t={});var n=s.processAggregate(e,t);r(Y({},s.getEnvironmentData(),{toolOptions:t,violations:n.violations,passes:n.passes,incomplete:n.incomplete,inapplicable:n.inapplicable}))}),axe.addReporter("no-passes",function(e,t,r){"use strict";"function"==typeof t&&(r=t,t={}),t.resultTypes=["violations"];var n=s.processAggregate(e,t);r(Y({},s.getEnvironmentData(),{toolOptions:t,violations:n.violations}))}),axe.addReporter("rawEnv",function(e,t,r){"function"==typeof t&&(r=t,t={}),axe.getReporter("raw")(e,t,function(e){var t=s.getEnvironmentData();r({raw:e,env:t})})}),axe.addReporter("raw",function(e,t,r){"use strict";if("function"==typeof t&&(r=t,t={}),!e||!Array.isArray(e))return r(e);r(e.map(function(e){for(var t=Y({},e),r=0,n=["passes","violations","incomplete","inapplicable"];r<n.length;r++){var a=n[r];t[a]&&Array.isArray(t[a])&&(t[a]=t[a].map(function(e){return Y({},e,{node:e.node.toJSON()})}))}return t}))}),axe.addReporter("v1",function(e,t,r){"use strict";"function"==typeof t&&(r=t,t={});function n(e){e.nodes.forEach(function(e){e.failureSummary=s.failureSummary(e)})}var a=s.processAggregate(e,t);a.incomplete.forEach(n),a.violations.forEach(n),r(Y({},s.getEnvironmentData(),{toolOptions:t,violations:a.violations,passes:a.passes,incomplete:a.incomplete,inapplicable:a.inapplicable}))}),axe.addReporter("v2",function(e,t,r){"use strict";"function"==typeof t&&(r=t,t={});var n=s.processAggregate(e,t);r(Y({},s.getEnvironmentData(),{toolOptions:t,violations:n.violations,passes:n.passes,incomplete:n.incomplete,inapplicable:n.inapplicable}))},!0),axe.utils.aggregate=function(t,e,r){e=e.slice(),r&&e.push(r);var n=e.map(function(e){return t.indexOf(e)}).sort();return t[n.pop()]};var Q=axe.constants,ee=Q.CANTTELL_PRIO,te=Q.FAIL_PRIO,re=[];re[axe.constants.PASS_PRIO]=!0,re[axe.constants.CANTTELL_PRIO]=null,re[axe.constants.FAIL_PRIO]=!1;var axe,ne=["any","all","none"];function ae(r,n){return ne.reduce(function(e,t){return e[t]=(r[t]||[]).map(function(e){return n(e,t)}),e},{})}function oe(e,t,r){var n=Object.assign({},t);n.nodes=(n[r]||[]).concat(),axe.constants.resultGroups.forEach(function(e){delete n[e]}),e[r].push(n)}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ie(e,t){"use strict";var r;return axe._tree&&(r=axe.utils.getSelector(t)),new Error(e+": "+(r||t))}function se(e){var t=e.outerHTML;return t||"function"!=typeof XMLSerializer||(t=(new XMLSerializer).serializeToString(e)),function(e,t){if(t=t||300,e.length>t){var r=e.indexOf(">");e=e.substring(0,r+1)}return e}(t||"")}function le(e,t,r){this._fromFrame=!!r,this.spec=r||{},t&&t.absolutePaths&&(this._options={toRoot:!0}),this.source=void 0!==this.spec.source?this.spec.source:se(e),this._element=e}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ue(e,a,r){var n,t,o;function i(e,t,r){var n=ue(t,a,r);return n&&(e=e.concat(n)),e}if(e.documentElement&&(e=e.documentElement),o=e.nodeName.toLowerCase(),axe.utils.isShadowRoot(e))return n=new K(e,r,a),a="a"+Math.random().toString().substring(2),t=Array.from(e.shadowRoot.childNodes),n.children=t.reduce(function(e,t){return i(e,t,n)},[]),[n];if("content"===o&&"function"==typeof e.getDistributedNodes)return(t=Array.from(e.getDistributedNodes())).reduce(function(e,t){return i(e,t,r)},[]);if("slot"!==o||"function"!=typeof e.assignedNodes)return 1===e.nodeType?(n=new K(e,r,a),t=Array.from(e.childNodes),n.children=t.reduce(function(e,t){return i(e,t,n)},[]),[n]):3===e.nodeType?[new K(e,r)]:void 0;(t=Array.from(e.assignedNodes())).length||(t=function(e){var t=[];for(e=e.firstChild;e;)t.push(e),e=e.nextSibling;return t}(e));window.getComputedStyle(e);return t.reduce(function(e,t){return i(e,t,r)},[])}function X(e,t){return L(e)||I(e,t)||P()}function P(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function I(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,a=!1,o=void 0;try{for(var i,s=e[Symbol.iterator]();!(n=(i=s.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw o}}return r}}function L(e){if(Array.isArray(e))return e}function ce(e,t){return[e.substring(0,t),e.substring(t)]}function de(e){return e.replace(/\s+$/,"")}axe.utils.aggregateChecks=function(e){var r=Object.assign({},e);ae(r,function(e,t){var r=void 0===e.result?-1:re.indexOf(e.result);e.priority=-1!==r?r:axe.constants.CANTTELL_PRIO,"none"===t&&(e.priority===axe.constants.PASS_PRIO?e.priority=axe.constants.FAIL_PRIO:e.priority===axe.constants.FAIL_PRIO&&(e.priority=axe.constants.PASS_PRIO))});var n={all:r.all.reduce(function(e,t){return Math.max(e,t.priority)},0),none:r.none.reduce(function(e,t){return Math.max(e,t.priority)},0),any:r.any.reduce(function(e,t){return Math.min(e,t.priority)},4)%4};r.priority=Math.max(n.all,n.none,n.any);var a=[];return ne.forEach(function(t){r[t]=r[t].filter(function(e){return e.priority===r.priority&&e.priority===n[t]}),r[t].forEach(function(e){return a.push(e.impact)})}),[ee,te].includes(r.priority)?r.impact=axe.utils.aggregate(axe.constants.impact,a):r.impact=null,ae(r,function(e){delete e.result,delete e.priority}),r.result=axe.constants.results[r.priority],delete r.priority,r},axe.utils.aggregateNodeResults=function(e){var r={};if((e=e.map(function(e){if(e.any&&e.all&&e.none)return axe.utils.aggregateChecks(e);if(Array.isArray(e.node))return axe.utils.finalizeRuleResult(e);throw new TypeError("Invalid Result type")}))&&e.length){var t=e.map(function(e){return e.result});r.result=axe.utils.aggregate(axe.constants.results,t,r.result)}else r.result="inapplicable";axe.constants.resultGroups.forEach(function(e){return r[e]=[]}),e.forEach(function(e){var t=axe.constants.resultGroupMap[e.result];r[t].push(e)});var n=axe.constants.FAIL_GROUP;if(0===r[n].length&&(n=axe.constants.CANTTELL_GROUP),0<r[n].length){var a=r[n].map(function(e){return e.impact});r.impact=axe.utils.aggregate(axe.constants.impact,a)||null}else r.impact=null;return r},axe.utils.aggregateResult=function(e){var r={};return axe.constants.resultGroups.forEach(function(e){return r[e]=[]}),e.forEach(function(t){t.error?oe(r,t,axe.constants.CANTTELL_GROUP):t.result===axe.constants.NA?oe(r,t,axe.constants.NA_GROUP):axe.constants.resultGroups.forEach(function(e){Array.isArray(t[e])&&0<t[e].length&&oe(r,t,e)})}),r},axe.utils.areStylesSet=function e(t,r,n){"use strict";var a=window.getComputedStyle(t,null);if(!a)return!1;for(var o=0;o<r.length;++o){var i=r[o];if(a.getPropertyValue(i.property)===i.value)return!0}return!(!t.parentNode||t.nodeName.toUpperCase()===n.toUpperCase())&&e(t.parentNode,r,n)},axe.utils.assert=function(e,t){if(!e)throw new Error(t)},axe.utils.checkHelper=function(t,r,n,a){"use strict";return{isAsync:!1,async:function(){return this.isAsync=!0,function(e){e instanceof Error==!1?(t.result=e,n(t)):a(e)}},data:function(e){t.data=e},relatedNodes:function(e){e=e instanceof Node?[e]:axe.utils.toArray(e),t.relatedNodes=e.map(function(e){return new axe.utils.DqElement(e,r)})}}},axe.utils.clone=function(e){"use strict";var t,r,n=e;if(null!==e&&"object"===W(e))if(Array.isArray(e))for(n=[],t=0,r=e.length;t<r;t++)n[t]=axe.utils.clone(e[t]);else for(t in n={},e)n[t]=axe.utils.clone(e[t]);return n},axe.utils.sendCommandToFrame=function(t,r,n,a){"use strict";var o=t.contentWindow;if(!o)return axe.log("Frame does not have a content window",t),void n(null);var i=setTimeout(function(){i=setTimeout(function(){r.debug?a(ie("No response from frame",t)):n(null)},0)},500);axe.utils.respondable(o,"axe.ping",null,void 0,function(){clearTimeout(i);var e=r.options&&r.options.frameWaitTime||6e4;i=setTimeout(function(){a(ie("Axe in frame timed out",t))},e),axe.utils.respondable(o,"axe.start",r,void 0,function(e){clearTimeout(i),(e instanceof Error==!1?n:a)(e)})})},axe.utils.collectResultsFromFrames=function(e,t,r,o,n,a){"use strict";var i=axe.utils.queue();e.frames.forEach(function(n){var a={options:t,command:r,parameter:o,context:{initiator:!1,page:e.page,include:n.include||[],exclude:n.exclude||[]}};i.defer(function(t,e){var r=n.node;axe.utils.sendCommandToFrame(r,a,function(e){if(e)return t({results:e,frameElement:r,frame:axe.utils.getSelector(r)});t(null)},e)})}),i.then(function(e){n(axe.utils.mergeResults(e,t))}).catch(a)},axe.utils.contains=function(e,t){"use strict";if(e.shadowId||t.shadowId)return function t(e,r){return e.shadowId===r.shadowId||!!e.children.find(function(e){return t(e,r)})}(e,t);if(e.actualNode)return"function"==typeof e.actualNode.contains?e.actualNode.contains(t.actualNode):!!(16&e.actualNode.compareDocumentPosition(t.actualNode));do{if(t===e)return!0}while(t=t&&t.parent);return!1},function(axe){var e=new axe.imports.CssSelectorParser;e.registerSelectorPseudos("not"),e.registerNestingOperators(">"),e.registerAttrEqualityMods("^","$","*"),axe.utils.cssParser=e}(axe),le.prototype={get selector(){return this.spec.selector||[axe.utils.getSelector(this.element,this._options)]},get xpath(){return this.spec.xpath||[axe.utils.getXpath(this.element)]},get element(){return this._element},get fromFrame(){return this._fromFrame},toJSON:function(){"use strict";return{selector:this.selector,source:this.source,xpath:this.xpath}}},le.fromFrame=function(e,t,r){return e.selector.unshift(r.selector),e.xpath.unshift(r.xpath),new axe.utils.DqElement(r.element,t,e)},axe.utils.DqElement=le,axe.utils.matchesSelector=function(){"use strict";var r;return function(e,t){return r&&e[r]||(r=function(e){var t,r,n=["matches","matchesSelector","mozMatchesSelector","webkitMatchesSelector","msMatchesSelector"],a=n.length;for(t=0;t<a;t++)if(e[r=n[t]])return r}(e)),!!e[r]&&e[r](t)}}(),axe.utils.escapeSelector=function(e){"use strict";for(var t,r=String(e),n=r.length,a=-1,o="",i=r.charCodeAt(0);++a<n;)0!=(t=r.charCodeAt(a))?o+=1<=t&&t<=31||127==t||0==a&&48<=t&&t<=57||1==a&&48<=t&&t<=57&&45==i?"\\"+t.toString(16)+" ":(0!=a||1!=n||45!=t)&&(128<=t||45==t||95==t||48<=t&&t<=57||65<=t&&t<=90||97<=t&&t<=122)?r.charAt(a):"\\"+r.charAt(a):o+="�";return o},axe.utils.extendMetaData=function(t,r){Object.assign(t,r),Object.keys(r).filter(function(e){return"function"==typeof r[e]}).forEach(function(e){t[e]=null;try{t[e]=r[e](t)}catch(e){}})},axe.utils.finalizeRuleResult=function(e){return Object.assign(e,axe.utils.aggregateNodeResults(e.nodes)),delete e.nodes,e},axe.utils.findBy=function(e,t,r){if(Array.isArray(e))return e.find(function(e){return"object"===W(e)&&e[t]===r})},(axe=axe||{utils:{}}).utils.getFlattenedTree=function(e,t){return axe._cache.set("nodeMap",new WeakMap),ue(e,t)},axe.utils.getNodeFromTree=function(e,t){var r=t||e;return axe._cache.get("nodeMap")?axe._cache.get("nodeMap").get(r):null},axe.utils.getAllChecks=function(e){"use strict";return[].concat(e.any||[]).concat(e.all||[]).concat(e.none||[])},axe.utils.getBaseLang=function(e){return e?e.trim().split("-")[0].toLowerCase():""},axe.utils.getCheckMessage=function(e,t,r){var n=axe._audit.data.checks[e];if(!n)throw new Error("Cannot get message for unknown check: ".concat(e,"."));if(!n.messages[t])throw new Error('Check "'.concat(e,'"" does not have a "').concat(t,'" message.'));return axe.utils.processMessage(n.messages[t],r)},axe.utils.getCheckOption=function(e,t,r){var n=((r.rules&&r.rules[t]||{}).checks||{})[e.id],a=(r.checks||{})[e.id],o=e.enabled,i=e.options;return a&&(a.hasOwnProperty("enabled")&&(o=a.enabled),a.hasOwnProperty("options")&&(i=a.options)),n&&(n.hasOwnProperty("enabled")&&(o=n.enabled),n.hasOwnProperty("options")&&(i=n.options)),{enabled:o,options:i,absolutePaths:r.absolutePaths}},axe.utils.getFriendlyUriEnd=function(e,t){var r=0<arguments.length&&void 0!==e?e:"",n=1<arguments.length&&void 0!==t?t:{};if(!(r.length<=1||"data:"===r.substr(0,5)||"javascript:"===r.substr(0,11)||r.includes("?"))){var a=n.currentDomain,o=n.maxLength,i=void 0===o?25:o,s=function(e){var t=e,r="",n="",a="",o="",i="";if(e.includes("#")){var s=ce(e,e.indexOf("#")),l=X(s,2);e=l[0],i=l[1]}if(e.includes("?")){var u=ce(e,e.indexOf("?")),c=X(u,2);e=c[0],o=c[1]}if(e.includes("://")){var d=e.split("://"),p=X(d,2);r=p[0];var m=ce(e=p[1],e.indexOf("/")),f=X(m,2);n=f[0],e=f[1]}else if("//"===e.substr(0,2)){var h=ce(e=e.substr(2),e.indexOf("/")),b=X(h,2);n=b[0],e=b[1]}if("www."===n.substr(0,4)&&(n=n.substr(4)),n&&n.includes(":")){var g=ce(n,n.indexOf(":")),y=X(g,2);n=y[0],a=y[1]}return{original:t,protocol:r,domain:n,port:a,path:e,query:o,hash:i}}(r),l=s.path,u=s.domain,c=s.hash,d=l.substr(l.substr(0,l.length-2).lastIndexOf("/")+1);if(c)return d&&(d+c).length<=i?de(d+c):d.length<2&&2<c.length&&c.length<=i?de(c):void 0;if(u&&u.length<i&&l.length<=1)return de(u+l);if(l==="/"+d&&u&&a&&u!==a&&(u+l).length<=i)return de(u+l);var p=d.lastIndexOf(".");return(-1===p||1<p)&&(-1!==p||2<d.length)&&d.length<=i&&!d.match(/index(\.[a-zA-Z]{2-4})?/)&&!function(e){var t=0<arguments.length&&void 0!==e?e:"";return 0!==t.length&&(t.match(/[0-9]/g)||"").length>=t.length/2}(d)?de(d):void 0}},axe.utils.getNodeAttributes=function(e){return e.attributes instanceof window.NamedNodeMap?e.attributes:e.cloneNode(!1).attributes},axe.utils.getRootNode=function(e){var t=e.getRootNode&&e.getRootNode()||document;return t===e&&(t=document),t},axe.utils.getScroll=function(e,t){var r=1<arguments.length&&void 0!==t?t:0,n=e.scrollWidth>e.clientWidth+r,a=e.scrollHeight>e.clientHeight+r;if(n||a){var o=window.getComputedStyle(e),i=o.getPropertyValue("overflow-x"),s=o.getPropertyValue("overflow-y");return n&&("visible"!==i&&"hidden"!==i)||a&&("visible"!==s&&"hidden"!==s)?{elm:e,top:e.scrollTop,left:e.scrollLeft}:void 0}};var pe,me,fe=axe.utils.escapeSelector,he=["class","style","id","selected","checked","disabled","tabindex","aria-checked","aria-selected","aria-invalid","aria-activedescendant","aria-busy","aria-disabled","aria-expanded","aria-grabbed","aria-pressed","aria-valuenow"],be=31;function ge(e,t){var r,n=t.name;if(-1!==n.indexOf("href")||-1!==n.indexOf("src")){var a=axe.utils.getFriendlyUriEnd(e.getAttribute(n));if(a){var o=encodeURI(a);if(!o)return;r=fe(t.name)+'$="'+fe(o)+'"'}else r=fe(t.name)+'="'+fe(e.getAttribute(n))+'"'}else r=fe(n)+'="'+fe(t.value)+'"';return r}function ye(e,t){return e.count<t.count?-1:e.count===t.count?0:1}function ve(e){return!he.includes(e.name)&&-1===e.name.indexOf(":")&&(!e.value||e.value.length<be)}function we(t,r){var e=t.parentNode&&Array.from(t.parentNode.children||"")||[];return e.find(function(e){return e!==t&&axe.utils.matchesSelector(e,r)})?":nth-child("+(1+e.indexOf(t))+")":""}function xe(e){if(e.getAttribute("id")){var t=e.getRootNode&&e.getRootNode()||document,r="#"+fe(e.getAttribute("id")||"");return r.match(/player_uid_/)||1!==t.querySelectorAll(r).length?void 0:r}}function ke(e){return void 0===pe&&(pe=axe.utils.isXHTML(document)),fe(pe?e.localName:e.nodeName.toLowerCase())}function De(e,t){var r,n,a,o,i,s,l,u,c,d,p,m="",f=(n=e,o=[],i=(a=t).classes,s=a.tags,n.classList&&Array.from(n.classList).forEach(function(e){var t=fe(e);i[t]<s[n.nodeName]&&o.push({name:t,count:i[t],species:"class"})}),o.sort(ye)),h=(l=e,c=[],d=(u=t).attributes,p=u.tags,l.hasAttributes()&&Array.from(axe.utils.getNodeAttributes(l)).filter(ve).forEach(function(e){var t=ge(l,e);t&&d[t]<p[l.nodeName]&&c.push({name:t,count:d[t],species:"attribute"})}),c.sort(ye));return f.length&&1===f[0].count?r=[f[0]]:h.length&&1===h[0].count?(r=[h[0]],m=ke(e)):((r=f.concat(h)).sort(ye),(r=r.slice(0,3)).some(function(e){return"class"===e.species})?r.sort(function(e,t){return e.species!==t.species&&"class"===e.species?-1:e.species===t.species?0:1}):m=ke(e)),m+r.reduce(function(e,t){switch(t.species){case"class":return e+"."+t.name;case"attribute":return e+"["+t.name+"]"}return e},"")}function Ee(e,t,r){if(!axe._selectorData)throw new Error("Expect axe._selectorData to be set up");var n,a,o=t.toRoot,i=void 0!==o&&o;do{var s=xe(e);s||(s=De(e,axe._selectorData),s+=we(e,s)),n=n?s+" > "+n:s,a=a?a.filter(function(e){return axe.utils.matchesSelector(e,n)}):Array.from(r.querySelectorAll(n)),e=e.parentElement}while((1<a.length||i)&&e&&11!==e.nodeType);return 1===a.length?n:-1!==n.indexOf(" > ")?":root"+n.substring(n.indexOf(" > ")):":root"}axe.utils.getSelectorData=function(e){function t(){var e=a.pop(),r=e.actualNode;if(r.querySelectorAll){var t=r.nodeName;n.tags[t]?n.tags[t]++:n.tags[t]=1,r.classList&&Array.from(r.classList).forEach(function(e){var t=fe(e);n.classes[t]?n.classes[t]++:n.classes[t]=1}),r.hasAttributes()&&Array.from(axe.utils.getNodeAttributes(r)).filter(ve).forEach(function(e){var t=ge(r,e);t&&(n.attributes[t]?n.attributes[t]++:n.attributes[t]=1)})}for(e.children.length&&(o.push(a),a=e.children.slice());!a.length&&o.length;)a=o.pop()}for(var n={classes:{},tags:{},attributes:{}},a=(e=Array.isArray(e)?e:[e]).slice(),o=[];a.length;)t();return n},axe.utils.getSelector=function(e,t){var r=1<arguments.length&&void 0!==t?t:{};if(!e)return"";var n=e.getRootNode&&e.getRootNode()||document;if(11!==n.nodeType)return Ee(e,r,n);for(var a=[];11===n.nodeType;){if(!n.host)return"";a.push({elm:e,doc:n}),n=(e=n.host).getRootNode()}return a.push({elm:e,doc:n}),a.reverse().map(function(e){return Ee(e.elm,r,e.doc)})},axe.utils.getStyleSheetFactory=function(d){if(!d)throw new Error("axe.utils.getStyleSheetFactory should be invoked with an argument");return function(e){var t=e.data,r=e.isCrossOrigin,n=void 0!==r&&r,a=e.shadowId,o=e.root,i=e.priority,s=e.isLink,l=void 0!==s&&s,u=d.createElement("style");if(l){var c=d.createTextNode('@import "'.concat(t.href,'"'));u.appendChild(c)}else u.appendChild(d.createTextNode(t));return d.head.appendChild(u),{sheet:u.sheet,isCrossOrigin:n,shadowId:a,root:o,priority:i}}},axe.utils.getXpath=function(e){var t=function e(t,r){var n,a;if(!t)return[];if(!r&&9===t.nodeType)return r=[{str:"html"}];if(r=r||[],t.parentNode&&t.parentNode!==t&&(r=e(t.parentNode,r)),t.previousSibling){for(a=1,n=t.previousSibling;1===n.nodeType&&n.nodeName===t.nodeName&&a++,n=n.previousSibling;);1===a&&(a=null)}else if(t.nextSibling)for(n=t.nextSibling;n=1===n.nodeType&&n.nodeName===t.nodeName?(a=1,null):(a=null,n.previousSibling););if(1===t.nodeType){var o={};o.str=t.nodeName.toLowerCase();var i=t.getAttribute&&axe.utils.escapeSelector(t.getAttribute("id"));i&&1===t.ownerDocument.querySelectorAll("#"+i).length&&(o.id=t.getAttribute("id")),1<a&&(o.count=a),r.push(o)}return r}(e);return t.reduce(function(e,t){return t.id?"/".concat(t.str,"[@id='").concat(t.id,"']"):e+"/".concat(t.str)+(0<t.count?"[".concat(t.count,"]"):"")},"")},axe.utils.injectStyle=function(e){"use strict";if(me&&me.parentNode)return void 0===me.styleSheet?me.appendChild(document.createTextNode(e)):me.styleSheet.cssText+=e,me;if(e){var t=document.head||document.getElementsByTagName("head")[0];return(me=document.createElement("style")).type="text/css",void 0===me.styleSheet?me.appendChild(document.createTextNode(e)):me.styleSheet.cssText=e,t.appendChild(me),me}},axe.utils.isHidden=function(e,t){"use strict";var r=axe.utils.getNodeFromTree(e);if(9===e.nodeType)return!1;if(11===e.nodeType&&(e=e.host),r&&null!==r._isHidden)return r._isHidden;var n=window.getComputedStyle(e,null);if(!n||!e.parentNode||"none"===n.getPropertyValue("display")||!t&&"hidden"===n.getPropertyValue("visibility")||"true"===e.getAttribute("aria-hidden"))return!0;var a=e.assignedSlot?e.assignedSlot:e.parentNode,o=axe.utils.isHidden(a,!0);return r&&(r._isHidden=o),o};var Ae=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];axe.utils.isHtmlElement=function(e){return"http://www.w3.org/2000/svg"!==e.namespaceURI&&Ae.includes(e.nodeName.toLowerCase())};var je=["article","aside","blockquote","body","div","footer","h1","h2","h3","h4","h5","h6","header","main","nav","p","section","span"];function Ce(e,t){return d=t,1===(c=e).props.nodeType&&("*"===d.tag||c.props.nodeName===d.tag)&&(l=e,!(u=t).classes||u.classes.every(function(e){return l.hasClass(e.value)}))&&(i=e,!(s=t).attributes||s.attributes.every(function(e){var t=i.attr(e.key);return null!==t&&(!e.value||e.test(t))}))&&(a=e,!(o=t).id||a.props.id===o.id)&&(r=e,!((n=t).pseudos&&!n.pseudos.every(function(e){if("not"===e.name)return!axe.utils.matchesExpression(r,e.expressions[0]);throw new Error("the pseudo selector "+e.name+" has not yet been implemented")})));var r,n,a,o,i,s,l,u,c,d}axe.utils.isShadowRoot=function(e){if(e.shadowRoot){var t=e.nodeName.toLowerCase();if(je.includes(t)||/^[a-z][a-z0-9_.-]*-[a-z0-9_.-]*$/.test(t))return!0}return!1},axe.utils.isXHTML=function(e){"use strict";return!!e.createElement&&"A"===e.createElement("A").localName};var Fe,Te,Ne,Se=(Fe=/(?=[\-\[\]{}()*+?.\\\^$|,#\s])/g,function(e){return e.replace(Fe,"\\")}),ze=/\\/g;function qe(e){if(e)return e.map(function(e){var t,r,n=e.name.replace(ze,""),a=(e.value||"").replace(ze,"");switch(e.operator){case"^=":r=new RegExp("^"+Se(a));break;case"$=":r=new RegExp(Se(a)+"$");break;case"~=":r=new RegExp("(^|\\s)"+Se(a)+"(\\s|$)");break;case"|=":r=new RegExp("^"+Se(a)+"(-|$)");break;case"=":t=function(e){return a===e};break;case"*=":t=function(e){return e&&e.includes(a)};break;case"!=":t=function(e){return a!==e};break;default:t=function(e){return!!e}}return""===a&&/^[*$^]=$/.test(e.operator)&&(t=function(){return!1}),{key:n,value:a,test:t=t||function(e){return e&&r.test(e)}}})}function Oe(e){if(e)return e.map(function(e){return{value:e=e.replace(ze,""),regexp:new RegExp("(^|\\s)"+Se(e)+"(\\s|$)")}})}function _e(e){if(e)return e.map(function(e){var t;return"not"===e.name&&(t=Re(t=(t=e.value).selectors?t.selectors:[t])),{name:e.name,expressions:t,value:e.value}})}function Re(e){return e.map(function(e){for(var t=[],r=e.rule;r;)t.push({tag:r.tagName?r.tagName.toLowerCase():"*",combinator:r.nestingOperator?r.nestingOperator:" ",id:r.id,attributes:qe(r.attrs),classes:Oe(r.classNames),pseudos:_e(r.pseudos)}),r=r.rule;return t})}function Pe(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function Ie(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function Le(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function Be(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}function Me(e){return"function"==typeof e||"[object Function]"===Te.call(e)}function Ve(e){var t,r=(t=Number(e),isNaN(t)?0:0!==t&&isFinite(t)?(0<t?1:-1)*Math.floor(Math.abs(t)):t);return Math.min(Math.max(r,0),Ne)}function Ue(e){var t=e.nodeName.toUpperCase(),r=e.getAttribute("href"),n=e.getAttribute("rel"),a="LINK"===t&&r&&n&&e.rel.toUpperCase().includes("STYLESHEET");return"STYLE"===t||a&&He(e.media)}function He(e){return!e||!e.toUpperCase().includes("PRINT")}function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}axe.utils.convertSelector=function(e){var t=axe.utils.cssParser.parse(e);return Re(t=t.selectors?t.selectors:[t])},axe.utils.matchesExpression=function(e,t,r){for(var n=[].concat(t),a=n.pop(),o=Ce(e,a);!o&&r&&e.parent;)o=Ce(e=e.parent,a);if(n.length){if(!1===[" ",">"].includes(a.combinator))throw new Error("axe.utils.matchesExpression does not support the combinator: "+a.combinator);o=o&&axe.utils.matchesExpression(e.parent,n," "===a.combinator)}return o},axe.utils.matches=function(t,e){return axe.utils.convertSelector(e).some(function(e){return axe.utils.matchesExpression(t,e)})},axe._memoizedFns=[],axe.utils.memoize=function(e){var t=axe.imports.memoize(e);return axe._memoizedFns.push(t),t},axe.utils.mergeResults=function(e,n){"use strict";var a=[];return e.forEach(function(r){var e=function(e){"use strict";return e&&e.results?Array.isArray(e.results)?e.results.length?e.results:null:[e.results]:null}(r);e&&e.length&&e.forEach(function(e){e.nodes&&r.frame&&function(e,r,t,n){"use strict";var a={element:t,selector:n,xpath:axe.utils.getXpath(t)};e.forEach(function(e){e.node=axe.utils.DqElement.fromFrame(e.node,r,a);var t=axe.utils.getAllChecks(e);t.length&&t.forEach(function(e){e.relatedNodes=e.relatedNodes.map(function(e){return axe.utils.DqElement.fromFrame(e,r,a)})})})}(e.nodes,n,r.frameElement,r.frame);var t=axe.utils.findBy(a,"id",e.id);t?e.nodes.length&&function(e,t){"use strict";for(var r,n,a=t[0].node,o=0,i=e.length;o<i;o++)if(n=e[o].node,0<(r=axe.utils.nodeSorter({actualNode:n.element},{actualNode:a.element}))||0===r&&a.selector.length<n.selector.length)return e.splice.apply(e,[o,0].concat(t));e.push.apply(e,t)}(t.nodes,e.nodes):a.push(e)})}),a},axe.utils.nodeSorter=function(e,t){return(e=e.actualNode||e)===(t=t.actualNode||t)?0:4&e.compareDocumentPosition(t)?-1:1},axe.utils.parseCrossOriginStylesheet=function(e,n,a,o,i){var t={method:"get",timeout:axe.constants.preload.timeout,url:e};return o.push(e),axe.imports.axios(t).then(function(e){var t=e.data,r=n.convertDataToStylesheet({data:t,isCrossOrigin:i,priority:a,root:n.rootNode,shadowId:n.shadowId});return axe.utils.parseStylesheet(r.sheet,n,a,o,r.isCrossOrigin)})},axe.utils.parseSameOriginStylesheet=function(e,a,o,i,t){var r=4<arguments.length&&void 0!==t&&t,n=Array.from(e.cssRules);if(!n)return Promise.resolve();var s=n.filter(function(e){return 3===e.type});if(!s.length)return Promise.resolve({isCrossOrigin:r,priority:o,root:a.rootNode,shadowId:a.shadowId,sheet:e});var l=s.filter(function(e){return e.href}).map(function(e){return e.href}).filter(function(e){return!i.includes(e)}).map(function(e,t){var r=[].concat(Pe(o),[t]),n=/^https?:\/\/|^\/\//i.test(e);return axe.utils.parseCrossOriginStylesheet(e,a,r,i,n)}),u=n.filter(function(e){return 3!==e.type});return u.length&&l.push(Promise.resolve(a.convertDataToStylesheet({data:u.map(function(e){return e.cssText}).join(),isCrossOrigin:r,priority:o,root:a.rootNode,shadowId:a.shadowId}))),Promise.all(l)},axe.utils.parseStylesheet=function(e,t,r,n,a){var o=4<arguments.length&&void 0!==a&&a;return function(e){try{return!e.cssRules&&e.href?!1:!0}catch(e){return!1}}(e)?axe.utils.parseSameOriginStylesheet(e,t,r,n,o):axe.utils.parseCrossOriginStylesheet(e.href,t,r,n,!0)},utils.performanceTimer=function(){"use strict";function e(){if(window.performance&&window.performance)return window.performance.now()}var t=null,r=e();return{start:function(){this.mark("mark_axe_start")},end:function(){this.mark("mark_axe_end"),this.measure("axe","mark_axe_start","mark_axe_end"),this.logMeasures("axe")},auditStart:function(){this.mark("mark_audit_start")},auditEnd:function(){this.mark("mark_audit_end"),this.measure("audit_start_to_end","mark_audit_start","mark_audit_end"),this.logMeasures()},mark:function(e){window.performance&&void 0!==window.performance.mark&&window.performance.mark(e)},measure:function(e,t,r){window.performance&&void 0!==window.performance.measure&&window.performance.measure(e,t,r)},logMeasures:function(e){function t(e){axe.log("Measure "+e.name+" took "+e.duration+"ms")}if(window.performance&&void 0!==window.performance.getEntriesByType)for(var r=window.performance.getEntriesByName("mark_axe_start")[0],n=window.performance.getEntriesByType("measure").filter(function(e){return e.startTime>=r.startTime}),a=0;a<n.length;++a){var o=n[a];if(o.name===e)return void t(o);t(o)}},timeElapsed:function(){return e()-r},reset:function(){t=t||e(),r=e()}}}(),"function"!=typeof Object.assign&&(Object.assign=function(e){"use strict";if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),r=1;r<arguments.length;r++){var n=arguments[r];if(null!=n)for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a])}return t}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t,r=Object(this),n=r.length>>>0,a=arguments[1],o=0;o<n;o++)if(t=r[o],e.call(a,t,o,r))return t}}),axe.utils.pollyfillElementsFromPoint=function(){if(document.elementsFromPoint)return document.elementsFromPoint;if(document.msElementsFromPoint)return document.msElementsFromPoint;var e,t=((e=document.createElement("x")).style.cssText="pointer-events:auto","auto"===e.style.pointerEvents),s=t?"pointer-events":"visibility",l=t?"none":"hidden",u=document.createElement("style");return u.innerHTML=t?"* { pointer-events: all }":"* { visibility: visible }",function(e,t){var r,n,a,o=[],i=[];for(document.head.appendChild(u);(r=document.elementFromPoint(e,t))&&-1===o.indexOf(r);)o.push(r),i.push({value:r.style.getPropertyValue(s),priority:r.style.getPropertyPriority(s)}),r.style.setProperty(s,l,"important");for(o.indexOf(document.documentElement)<o.length-1&&(o.splice(o.indexOf(document.documentElement),1),o.push(document.documentElement)),n=i.length;a=i[--n];)o[n].style.setProperty(s,a.value?a.value:"",a.priority);return document.head.removeChild(u),o}},"function"==typeof window.addEventListener&&(document.elementsFromPoint=axe.utils.pollyfillElementsFromPoint()),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){"use strict";var r=Object(this),n=parseInt(r.length,10)||0;if(0===n)return!1;var a,o,i=parseInt(t,10)||0;for(0<=i?a=i:(a=n+i)<0&&(a=0);a<n;){if(e===(o=r[a])||e!=e&&o!=o)return!0;a++}return!1}}),Array.prototype.some||Object.defineProperty(Array.prototype,"some",{value:function(e,t){"use strict";if(null==this)throw new TypeError("Array.prototype.some called on null or undefined");if("function"!=typeof e)throw new TypeError;for(var r=Object(this),n=r.length>>>0,a=2<=arguments.length?t:void 0,o=0;o<n;o++)if(o in r&&e.call(a,r[o],o,r))return!0;return!1}}),Array.from||Object.defineProperty(Array,"from",{value:(Te=Object.prototype.toString,Ne=Math.pow(2,53)-1,function(e,t,r){var n=Object(e);if(null==e)throw new TypeError("Array.from requires an array-like object - not null or undefined");var a,o=1<arguments.length?t:void 0;if(void 0!==o){if(!Me(o))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(a=r)}for(var i,s=Ve(n.length),l=Me(this)?Object(new this(s)):new Array(s),u=0;u<s;)i=n[u],l[u]=o?void 0===a?o(i,u):o.call(a,i,u):i,u+=1;return l.length=s,l})}),String.prototype.includes||(String.prototype.includes=function(e,t){return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),axe.utils.preloadCssom=function(e){var t,r,n,a=e.treeRoot,o=void 0===a?axe._tree[0]:a,i=(t=o,r=[],n=axe.utils.querySelectorAllFilter(t,"*",function(e){return!r.includes(e.shadowId)&&(r.push(e.shadowId),!0)}).map(function(e){return{shadowId:e.shadowId,rootNode:axe.utils.getRootNode(e.actualNode)}}),axe.utils.uniqueArray(n,[]));if(!i.length)return Promise.resolve();var u,c,s=document.implementation.createHTMLDocument("Dynamic document for loading cssom"),l=axe.utils.getStyleSheetFactory(s);return u=l,c=[],i.forEach(function(e,t){var r=e.rootNode,n=e.shadowId,a=function(e,t,r){return function(e){var t=[];return e.filter(function(e){return!e.href||!t.includes(e.href)&&(t.push(e.href),!0)})}(11===e.nodeType&&t?function(o,i){return Array.from(o.children).filter(Ue).reduce(function(e,t){var r=t.nodeName.toUpperCase(),n="STYLE"===r?t.textContent:t,a=i({data:n,isLink:"LINK"===r,root:o});return e.push(a.sheet),e},[])}(e,r):function(e){return Array.from(e.styleSheets).filter(function(e){return He(e.media.mediaText)})}(e))}(r,n,u);if(!a)return Promise.all(c);var o=t+1,i={rootNode:r,shadowId:n,convertDataToStylesheet:u,rootIndex:o},s=[],l=Promise.all(a.map(function(e,t){var r=[o,t];return axe.utils.parseStylesheet(e,i,r,s)}));c.push(l)}),Promise.all(c).then(function(e){return function r(e){return e.reduce(function(e,t){return Array.isArray(t)?e.concat(r(t)):e.concat(t)},[])}(e)})},axe.utils.preloadMedia=function(e){var t=e.treeRoot,r=void 0===t?axe._tree[0]:t,n=axe.utils.querySelectorAllFilter(r,"video, audio",function(e){var t=e.actualNode;return t.hasAttribute("src")?!!t.getAttribute("src"):!(Array.from(t.getElementsByTagName("source")).filter(function(e){return!!e.getAttribute("src")}).length<=0)});return Promise.all(n.map(function(e){var r,t=e.actualNode;return r=t,new Promise(function(t){0<r.readyState&&t(r),r.addEventListener("loadedmetadata",function e(){r.removeEventListener("loadedmetadata",e),t(r)})})}))},axe.utils.shouldPreload=function(e){return!e||void 0===e.preload||null===e.preload||("boolean"==typeof e.preload?e.preload:(t=e.preload,"object"===W(t)&&Array.isArray(t.assets)));var t},axe.utils.getPreloadConfig=function(e){var t=axe.constants.preload,r=t.assets,n=t.timeout,a={assets:r,timeout:n};if(!e.preload)return a;if("boolean"==typeof e.preload)return a;if(!e.preload.assets.every(function(e){return r.includes(e.toLowerCase())}))throw new Error("Requested assets, not supported. "+"Supported assets are: ".concat(r.join(", "),"."));return a.assets=axe.utils.uniqueArray(e.preload.assets.map(function(e){return e.toLowerCase()}),[]),e.preload.timeout&&"number"==typeof e.preload.timeout&&!isNaN(e.preload.timeout)&&(a.timeout=e.preload.timeout),a},axe.utils.preload=function(i){var s={cssom:axe.utils.preloadCssom,media:axe.utils.preloadMedia};return axe.utils.shouldPreload(i)?new Promise(function(r,t){var e=axe.utils.getPreloadConfig(i),n=e.assets,a=e.timeout,o=setTimeout(function(){return t(new Error("Preload assets timed out."))},a);Promise.all(n.map(function(a){return s[a](i).then(function(e){return n=e,(r=a)in(t={})?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t;var t,r,n})})).then(function(e){var t=e.reduce(function(e,t){return Y({},e,{},t)},{});clearTimeout(o),r(t)}).catch(function(e){clearTimeout(o),t(e)})}):Promise.resolve()};var $e,Ge=/\$\{\s?data\s?\}/g;function We(e,t){if("string"==typeof t)return e.replace(Ge,t);for(var r in t)if(t.hasOwnProperty(r)){var n=new RegExp("\\${\\s?data\\."+r+"\\s?}","g");e=e.replace(n,t[r])}return e}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ye(a,o){"use strict";return function(e){var t=a[e.id]||{},r=t.messages||{},n=Object.assign({},t);delete n.messages,void 0===e.result?("object"!==W(r.incomplete)||Array.isArray(e.data)||(n.message=function(t,r){function n(e){return e.incomplete&&e.incomplete.default?e.incomplete.default:s.incompleteFallbackMessage()}if(!t||!t.missingData)return t&&t.messageKey?r.incomplete[t.messageKey]:n(r);try{var e=r.incomplete[t.missingData[0].reason];if(!e)throw new Error;return e}catch(e){return"string"==typeof t.missingData?r.incomplete[t.missingData]:n(r)}}(e.data,r)),n.message||(n.message=r.incomplete)):n.message=e.result===o?r.pass:r.fail,"function"!=typeof n.message&&(n.message=axe.utils.processMessage(n.message,e.data)),axe.utils.extendMetaData(e,n)}}function Ke(e,t,r,n){var a={vNodes:e.slice(),anyLevel:t,thisLevel:r,parentShadowId:n};return a.vNodes.reverse(),a}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Xe(t,e){"use strict";var r,n,a=axe._audit&&axe._audit.tagExclude?axe._audit.tagExclude:[];return n=e.hasOwnProperty("include")||e.hasOwnProperty("exclude")?(r=e.include||[],r=Array.isArray(r)?r:[r],n=e.exclude||[],(n=Array.isArray(n)?n:[n]).concat(a.filter(function(e){return-1===r.indexOf(e)}))):(r=Array.isArray(e)?e:[e],a.filter(function(e){return-1===r.indexOf(e)})),!!(r.some(function(e){return-1!==t.tags.indexOf(e)})||0===r.length&&!1!==t.enabled)&&n.every(function(e){return-1===t.tags.indexOf(e)})}function Je(e){"use strict";return e.sort(function(e,t){return axe.utils.contains(e,t)?1:-1})[0]}function Ze(t,e){"use strict";var r=e.include&&Je(e.include.filter(function(e){return axe.utils.contains(e,t)})),n=e.exclude&&Je(e.exclude.filter(function(e){return axe.utils.contains(e,t)}));return!!(!n&&r||n&&axe.utils.contains(n,r))}function Qe(e,t){"use strict";var r;if(0===e.length)return t;e.length<t.length&&(r=e,e=t,t=r);for(var n=0,a=t.length;n<a;n++)e.includes(t[n])||e.push(t[n]);return e}axe.utils.processMessage=function e(t,r){if(t){if(Array.isArray(r))return(r.values=r.join(", "),"string"!=typeof t.singular||"string"!=typeof t.plural)?We(t,r):We(1===r.length?t.singular:t.plural,r);if("string"==typeof t)return We(t,r);if("string"==typeof r)return We(t[r],r);var n=t.default||s.incompleteFallbackMessage();return r&&r.messageKey&&t[r.messageKey]&&(n=t[r.messageKey]),e(n,r)}},axe.utils.publishMetaData=function(e){"use strict";var t=axe._audit.data.checks||{},r=axe._audit.data.rules||{},n=axe.utils.findBy(axe._audit.rules,"id",e.id)||{};e.tags=axe.utils.clone(n.tags||[]);var a=Ye(t,!0),o=Ye(t,!1);e.nodes.forEach(function(e){e.any.forEach(a),e.all.forEach(a),e.none.forEach(o)}),axe.utils.extendMetaData(e,axe.utils.clone(r[e.id]||{}))},axe.utils.querySelectorAll=function(e,t){return axe.utils.querySelectorAllFilter(e,t)},axe.utils.querySelectorAllFilter=function(e,t,r){return function(e,t,r){for(var n=[],a=Ke(Array.isArray(e)?e:[e],t,[],e[0].shadowId),o=[];a.vNodes.length;){for(var i=a.vNodes.pop(),s=[],l=[],u=a.anyLevel.slice().concat(a.thisLevel),c=!1,d=0;d<u.length;d++){var p=u[d];if((!p[0].id||i.shadowId===a.parentShadowId)&&axe.utils.matchesExpression(i,p[0]))if(1===p.length)c||r&&!r(i)||(o.push(i),c=!0);else{var m=p.slice(1);if(!1===[" ",">"].includes(m[0].combinator))throw new Error("axe.utils.querySelectorAll does not support the combinator: "+p[1].combinator);">"===m[0].combinator?s.push(m):l.push(m)}p[0].id&&i.shadowId!==a.parentShadowId||!a.anyLevel.includes(p)||l.push(p)}for(i.children&&i.children.length&&(n.push(a),a=Ke(i.children,l,s,i.shadowId));!a.vNodes.length&&n.length;)a=n.pop()}return o}(e=Array.isArray(e)?e:[e],axe.utils.convertSelector(t),r)},function(){"use strict";function p(){}function m(e){if("function"!=typeof e)throw new TypeError("Queue methods require functions as arguments")}axe.utils.queue=function(){function t(e){n=e,setTimeout(function(){null!=n&&axe.log("Uncaught error (of queue)",n)},1)}var n,a=[],o=0,i=0,r=p,s=!1,l=t;function u(t){return function(e){a[t]=e,--i||r===p||(s=!0,r(a))}}function c(e){return r=p,l(e),a}var d={defer:function(e){if("object"===W(e)&&e.then&&e.catch){var r=e;e=function(e,t){r.then(e).catch(t)}}if(m(e),void 0===n){if(s)throw new Error("Queue already completed");return a.push(e),++i,function(){for(var e=a.length;o<e;o++){var t=a[o];try{t.call(null,u(o),c)}catch(e){c(e)}}}(),d}},then:function(e){if(m(e),r!==p)throw new Error("queue `then` already set");return n||(r=e,i||(s=!0,r(a))),d},catch:function(e){if(m(e),l!==t)throw new Error("queue `catch` already set");return n?(e(n),n=null):l=e,d},abort:c};return d}}(),function(e){"use strict";var u={},i={},s=Object.freeze(["EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function c(){var e="axeAPI",t="";return void 0!==axe&&axe._audit&&axe._audit.application&&(e=axe._audit.application),void 0!==axe&&(t=axe.version),e+"."+t}function l(e,t,r,n,a,o){var i;r instanceof Error&&(i={name:r.name,message:r.message,stack:r.stack},r=void 0);var s={uuid:n,topic:t,message:r,error:i,_respondable:!0,_source:c(),_axeuuid:axe._uuid,_keepalive:a},l=axe._cache.get("axeRespondables");l||(l={},axe._cache.set("axeRespondables",l)),l[n]=!0,"function"==typeof o&&(u[n]=o),e.postMessage(JSON.stringify(s),"*")}function t(e,t,r,n,a){l(e,t,r,$e.v1(),n,a)}function d(n,a,o){return function(e,t,r){l(n,a,e,o,t,r)}}function o(e){var t;if("string"==typeof e){try{t=JSON.parse(e)}catch(e){}var r,n,a,o;if(function(e){if("object"===W(e)&&"string"==typeof e.uuid&&!0===e._respondable){var t=c();return e._source===t||"axeAPI.x.y.z"===e._source||"axeAPI.x.y.z"===t}}(t))return"object"===W(t.error)?t.error=(r=t.error,n=r.message||"Unknown error occurred",a=s.includes(r.name)?r.name:"Error",o=window[a]||Error,r.stack&&(n+="\n"+r.stack.replace(r.message,"")),new o(n)):t.error=void 0,t}}t.subscribe=function(e,t){i[e]=t},t.isInFrame=function(e){return!!(e=e||window).frameElement},"function"==typeof window.addEventListener&&window.addEventListener("message",function(t){var e=o(t.data);if(e&&e._axeuuid){var r=e.uuid;if(!(axe._cache.get("axeRespondables")||{})[r]||e._axeuuid!==axe._uuid){var n=e._keepalive,a=u[r];if(a)a(e.error||e.message,n,d(t.source,e.topic,r)),n||delete u[r];if(!e.error)try{!function(e,t,r){var n=t.topic,a=i[n];if(a){var o=d(e,null,t.uuid);a(t.message,r,o)}}(t.source,e,n)}catch(e){l(t.source,null,e,r,!1)}}}},!1),e.respondable=t}(utils),axe.utils.ruleShouldRun=function(e,t,r){"use strict";var n=r.runOnly||{},a=(r.rules||{})[e.id];return!(e.pageLevel&&!t.page)&&("rule"===n.type?-1!==n.values.indexOf(e.id):a&&"boolean"==typeof a.enabled?a.enabled:"tag"===n.type&&n.values?Xe(e,n.values):Xe(e,[]))},axe.utils.getScrollState=function(e){var t=0<arguments.length&&void 0!==e?e:window,r=t.document.documentElement;return[void 0!==t.pageXOffset?{elm:t,top:t.pageYOffset,left:t.pageXOffset}:{elm:r,top:r.scrollTop,left:r.scrollLeft}].concat(function n(e){return Array.from(e.children||e.childNodes||[]).reduce(function(e,t){var r=axe.utils.getScroll(t);return r&&e.push(r),e.concat(n(t))},[])}(document.body))},axe.utils.setScrollState=function(e){e.forEach(function(e){return function(e,t,r){if(e===window)return e.scroll(r,t);e.scrollTop=t,e.scrollLeft=r}(e.elm,e.top,e.left)})},axe.utils.select=function(e,t){"use strict";var r,n=[];if(axe._selectCache)for(var a=0,o=axe._selectCache.length;a<o;a++){var i=axe._selectCache[a];if(i.selector===e)return i.result}for(var s,l=function(e){return Ze(e,s)},u=(s=t).include.reduce(function(e,t){return e.length&&axe.utils.contains(e[e.length-1],t)||e.push(t),e},[]),c=0;c<u.length;c++)r=u[c],n=Qe(n,axe.utils.querySelectorAllFilter(r,e,l));return axe._selectCache&&axe._selectCache.push({selector:e,result:n}),n},axe.utils.toArray=function(e){"use strict";return Array.prototype.slice.call(e)},axe.utils.uniqueArray=function(e,t){return e.concat(t).filter(function(e,t,r){return r.indexOf(e)===t})},axe.utils.tokenList=function(e){"use strict";return e.trim().replace(/\s{2,}/g," ").split(" ")},function(e){var i,t=e.crypto||e.msCrypto;if(!i&&t&&t.getRandomValues){var r=new Uint8Array(16);i=function(){return t.getRandomValues(r),r}}if(!i){var n=new Array(16);i=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n}}for(var s="function"==typeof e.Buffer?e.Buffer:Array,a=[],o={},l=0;l<256;l++)a[l]=(l+256).toString(16).substr(1),o[a[l]]=l;function m(e,t){var r=t||0;return a[e[r++]]+a[e[r++]]+a[e[r++]]+a[e[r++]]+"-"+a[e[r++]]+a[e[r++]]+"-"+a[e[r++]]+a[e[r++]]+"-"+a[e[r++]]+a[e[r++]]+"-"+a[e[r++]]+a[e[r++]]+a[e[r++]]+a[e[r++]]+a[e[r++]]+a[e[r++]]}var u=i(),f=[1|u[0],u[1],u[2],u[3],u[4],u[5]],h=16383&(u[6]<<8|u[7]),b=0,g=0;function c(e,t,r){var n=t&&r||0,a=t||[],o=null!=(e=e||{}).clockseq?e.clockseq:h,i=null!=e.msecs?e.msecs:(new Date).getTime(),s=null!=e.nsecs?e.nsecs:g+1,l=i-b+(s-g)/1e4;if(l<0&&null==e.clockseq&&(o=o+1&16383),(l<0||b<i)&&null==e.nsecs&&(s=0),1e4<=s)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");b=i,h=o;var u=(1e4*(268435455&(i+=122192928e5))+(g=s))%4294967296;a[n++]=u>>>24&255,a[n++]=u>>>16&255,a[n++]=u>>>8&255,a[n++]=255&u;var c=i/4294967296*1e4&268435455;a[n++]=c>>>8&255,a[n++]=255&c,a[n++]=c>>>24&15|16,a[n++]=c>>>16&255,a[n++]=o>>>8|128,a[n++]=255&o;for(var d=e.node||f,p=0;p<6;p++)a[n+p]=d[p];return t||m(a)}function d(e,t,r){var n=t&&r||0;"string"==typeof e&&(t="binary"==e?new s(16):null,e=null);var a=(e=e||{}).random||(e.rng||i)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t)for(var o=0;o<16;o++)t[n+o]=a[o];return t||m(a)}($e=d).v1=c,$e.v4=d,$e.parse=function(e,t,r){var n=t&&r||0,a=0;for(t=t||[],e.toLowerCase().replace(/[0-9a-f]{2}/g,function(e){a<16&&(t[n+a++]=o[e])});a<16;)t[n+a++]=0;return t},$e.unparse=m,$e.BufferClass=s,axe._uuid=c()}(window),axe.utils.validInputTypes=function(){"use strict";return["hidden","text","search","tel","url","email","password","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]};var et=["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","in","io","is","it","iu","iw","ja","ji","jv","jw","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mo","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","sh","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu","aaa","aab","aac","aad","aae","aaf","aag","aah","aai","aak","aal","aam","aan","aao","aap","aaq","aas","aat","aau","aav","aaw","aax","aaz","aba","abb","abc","abd","abe","abf","abg","abh","abi","abj","abl","abm","abn","abo","abp","abq","abr","abs","abt","abu","abv","abw","abx","aby","abz","aca","acb","acd","ace","acf","ach","aci","ack","acl","acm","acn","acp","acq","acr","acs","act","acu","acv","acw","acx","acy","acz","ada","adb","add","ade","adf","adg","adh","adi","adj","adl","adn","ado","adp","adq","adr","ads","adt","adu","adw","adx","ady","adz","aea","aeb","aec","aed","aee","aek","ael","aem","aen","aeq","aer","aes","aeu","aew","aey","aez","afa","afb","afd","afe","afg","afh","afi","afk","afn","afo","afp","afs","aft","afu","afz","aga","agb","agc","agd","age","agf","agg","agh","agi","agj","agk","agl","agm","agn","ago","agp","agq","agr","ags","agt","agu","agv","agw","agx","agy","agz","aha","ahb","ahg","ahh","ahi","ahk","ahl","ahm","ahn","aho","ahp","ahr","ahs","aht","aia","aib","aic","aid","aie","aif","aig","aih","aii","aij","aik","ail","aim","ain","aio","aip","aiq","air","ais","ait","aiw","aix","aiy","aja","ajg","aji","ajn","ajp","ajt","aju","ajw","ajz","akb","akc","akd","ake","akf","akg","akh","aki","akj","akk","akl","akm","ako","akp","akq","akr","aks","akt","aku","akv","akw","akx","aky","akz","ala","alc","ald","ale","alf","alg","alh","ali","alj","alk","all","alm","aln","alo","alp","alq","alr","als","alt","alu","alv","alw","alx","aly","alz","ama","amb","amc","ame","amf","amg","ami","amj","amk","aml","amm","amn","amo","amp","amq","amr","ams","amt","amu","amv","amw","amx","amy","amz","ana","anb","anc","and","ane","anf","ang","anh","ani","anj","ank","anl","anm","ann","ano","anp","anq","anr","ans","ant","anu","anv","anw","anx","any","anz","aoa","aob","aoc","aod","aoe","aof","aog","aoh","aoi","aoj","aok","aol","aom","aon","aor","aos","aot","aou","aox","aoz","apa","apb","apc","apd","ape","apf","apg","aph","api","apj","apk","apl","apm","apn","apo","app","apq","apr","aps","apt","apu","apv","apw","apx","apy","apz","aqa","aqc","aqd","aqg","aql","aqm","aqn","aqp","aqr","aqt","aqz","arb","arc","ard","are","arh","ari","arj","ark","arl","arn","aro","arp","arq","arr","ars","art","aru","arv","arw","arx","ary","arz","asa","asb","asc","asd","ase","asf","asg","ash","asi","asj","ask","asl","asn","aso","asp","asq","asr","ass","ast","asu","asv","asw","asx","asy","asz","ata","atb","atc","atd","ate","atg","ath","ati","atj","atk","atl","atm","atn","ato","atp","atq","atr","ats","att","atu","atv","atw","atx","aty","atz","aua","aub","auc","aud","aue","auf","aug","auh","aui","auj","auk","aul","aum","aun","auo","aup","auq","aur","aus","aut","auu","auw","aux","auy","auz","avb","avd","avi","avk","avl","avm","avn","avo","avs","avt","avu","avv","awa","awb","awc","awd","awe","awg","awh","awi","awk","awm","awn","awo","awr","aws","awt","awu","awv","aww","awx","awy","axb","axe","axg","axk","axl","axm","axx","aya","ayb","ayc","ayd","aye","ayg","ayh","ayi","ayk","ayl","ayn","ayo","ayp","ayq","ayr","ays","ayt","ayu","ayx","ayy","ayz","aza","azb","azc","azd","azg","azj","azm","azn","azo","azt","azz","baa","bab","bac","bad","bae","baf","bag","bah","bai","baj","bal","ban","bao","bap","bar","bas","bat","bau","bav","baw","bax","bay","baz","bba","bbb","bbc","bbd","bbe","bbf","bbg","bbh","bbi","bbj","bbk","bbl","bbm","bbn","bbo","bbp","bbq","bbr","bbs","bbt","bbu","bbv","bbw","bbx","bby","bbz","bca","bcb","bcc","bcd","bce","bcf","bcg","bch","bci","bcj","bck","bcl","bcm","bcn","bco","bcp","bcq","bcr","bcs","bct","bcu","bcv","bcw","bcy","bcz","bda","bdb","bdc","bdd","bde","bdf","bdg","bdh","bdi","bdj","bdk","bdl","bdm","bdn","bdo","bdp","bdq","bdr","bds","bdt","bdu","bdv","bdw","bdx","bdy","bdz","bea","beb","bec","bed","bee","bef","beg","beh","bei","bej","bek","bem","beo","bep","beq","ber","bes","bet","beu","bev","bew","bex","bey","bez","bfa","bfb","bfc","bfd","bfe","bff","bfg","bfh","bfi","bfj","bfk","bfl","bfm","bfn","bfo","bfp","bfq","bfr","bfs","bft","bfu","bfw","bfx","bfy","bfz","bga","bgb","bgc","bgd","bge","bgf","bgg","bgi","bgj","bgk","bgl","bgm","bgn","bgo","bgp","bgq","bgr","bgs","bgt","bgu","bgv","bgw","bgx","bgy","bgz","bha","bhb","bhc","bhd","bhe","bhf","bhg","bhh","bhi","bhj","bhk","bhl","bhm","bhn","bho","bhp","bhq","bhr","bhs","bht","bhu","bhv","bhw","bhx","bhy","bhz","bia","bib","bic","bid","bie","bif","big","bij","bik","bil","bim","bin","bio","bip","biq","bir","bit","biu","biv","biw","bix","biy","biz","bja","bjb","bjc","bjd","bje","bjf","bjg","bjh","bji","bjj","bjk","bjl","bjm","bjn","bjo","bjp","bjq","bjr","bjs","bjt","bju","bjv","bjw","bjx","bjy","bjz","bka","bkb","bkc","bkd","bkf","bkg","bkh","bki","bkj","bkk","bkl","bkm","bkn","bko","bkp","bkq","bkr","bks","bkt","bku","bkv","bkw","bkx","bky","bkz","bla","blb","blc","bld","ble","blf","blg","blh","bli","blj","blk","bll","blm","bln","blo","blp","blq","blr","bls","blt","blv","blw","blx","bly","blz","bma","bmb","bmc","bmd","bme","bmf","bmg","bmh","bmi","bmj","bmk","bml","bmm","bmn","bmo","bmp","bmq","bmr","bms","bmt","bmu","bmv","bmw","bmx","bmy","bmz","bna","bnb","bnc","bnd","bne","bnf","bng","bni","bnj","bnk","bnl","bnm","bnn","bno","bnp","bnq","bnr","bns","bnt","bnu","bnv","bnw","bnx","bny","bnz","boa","bob","boe","bof","bog","boh","boi","boj","bok","bol","bom","bon","boo","bop","boq","bor","bot","bou","bov","bow","box","boy","boz","bpa","bpb","bpd","bpg","bph","bpi","bpj","bpk","bpl","bpm","bpn","bpo","bpp","bpq","bpr","bps","bpt","bpu","bpv","bpw","bpx","bpy","bpz","bqa","bqb","bqc","bqd","bqf","bqg","bqh","bqi","bqj","bqk","bql","bqm","bqn","bqo","bqp","bqq","bqr","bqs","bqt","bqu","bqv","bqw","bqx","bqy","bqz","bra","brb","brc","brd","brf","brg","brh","bri","brj","brk","brl","brm","brn","bro","brp","brq","brr","brs","brt","bru","brv","brw","brx","bry","brz","bsa","bsb","bsc","bse","bsf","bsg","bsh","bsi","bsj","bsk","bsl","bsm","bsn","bso","bsp","bsq","bsr","bss","bst","bsu","bsv","bsw","bsx","bsy","bta","btb","btc","btd","bte","btf","btg","bth","bti","btj","btk","btl","btm","btn","bto","btp","btq","btr","bts","btt","btu","btv","btw","btx","bty","btz","bua","bub","buc","bud","bue","buf","bug","buh","bui","buj","buk","bum","bun","buo","bup","buq","bus","but","buu","buv","buw","bux","buy","buz","bva","bvb","bvc","bvd","bve","bvf","bvg","bvh","bvi","bvj","bvk","bvl","bvm","bvn","bvo","bvp","bvq","bvr","bvt","bvu","bvv","bvw","bvx","bvy","bvz","bwa","bwb","bwc","bwd","bwe","bwf","bwg","bwh","bwi","bwj","bwk","bwl","bwm","bwn","bwo","bwp","bwq","bwr","bws","bwt","bwu","bww","bwx","bwy","bwz","bxa","bxb","bxc","bxd","bxe","bxf","bxg","bxh","bxi","bxj","bxk","bxl","bxm","bxn","bxo","bxp","bxq","bxr","bxs","bxu","bxv","bxw","bxx","bxz","bya","byb","byc","byd","bye","byf","byg","byh","byi","byj","byk","byl","bym","byn","byo","byp","byq","byr","bys","byt","byv","byw","byx","byy","byz","bza","bzb","bzc","bzd","bze","bzf","bzg","bzh","bzi","bzj","bzk","bzl","bzm","bzn","bzo","bzp","bzq","bzr","bzs","bzt","bzu","bzv","bzw","bzx","bzy","bzz","caa","cab","cac","cad","cae","caf","cag","cah","cai&qu