mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 13:18:45 +02:00
Move major DevTools files to new directories using the following steps: hg mv browser/devtools devtools/client hg mv toolkit/devtools/server devtools/server hg mv toolkit/devtools devtools/shared No other changes are made. --HG-- rename : browser/devtools/.eslintignore => devtools/client/.eslintignore rename : browser/devtools/.eslintrc => devtools/client/.eslintrc rename : browser/devtools/.eslintrc.mochitests => devtools/client/.eslintrc.mochitests rename : browser/devtools/.eslintrc.xpcshell => devtools/client/.eslintrc.xpcshell rename : browser/devtools/animationinspector/animation-controller.js => devtools/client/animationinspector/animation-controller.js rename : browser/devtools/animationinspector/animation-inspector.xhtml => devtools/client/animationinspector/animation-inspector.xhtml rename : browser/devtools/animationinspector/animation-panel.js => devtools/client/animationinspector/animation-panel.js rename : browser/devtools/animationinspector/components.js => devtools/client/animationinspector/components.js rename : browser/devtools/animationinspector/moz.build => devtools/client/animationinspector/moz.build rename : browser/devtools/animationinspector/test/.eslintrc => devtools/client/animationinspector/test/.eslintrc rename : browser/devtools/animationinspector/test/browser.ini => devtools/client/animationinspector/test/browser.ini rename : browser/devtools/animationinspector/test/browser_animation_controller_exposes_document_currentTime.js => devtools/client/animationinspector/test/browser_animation_controller_exposes_document_currentTime.js rename : browser/devtools/animationinspector/test/browser_animation_empty_on_invalid_nodes.js => devtools/client/animationinspector/test/browser_animation_empty_on_invalid_nodes.js rename : browser/devtools/animationinspector/test/browser_animation_mutations_with_same_names.js => devtools/client/animationinspector/test/browser_animation_mutations_with_same_names.js rename : browser/devtools/animationinspector/test/browser_animation_panel_exists.js => devtools/client/animationinspector/test/browser_animation_panel_exists.js rename : browser/devtools/animationinspector/test/browser_animation_participate_in_inspector_update.js => devtools/client/animationinspector/test/browser_animation_participate_in_inspector_update.js rename : browser/devtools/animationinspector/test/browser_animation_playerFronts_are_refreshed.js => devtools/client/animationinspector/test/browser_animation_playerFronts_are_refreshed.js rename : browser/devtools/animationinspector/test/browser_animation_playerWidgets_appear_on_panel_init.js => devtools/client/animationinspector/test/browser_animation_playerWidgets_appear_on_panel_init.js rename : browser/devtools/animationinspector/test/browser_animation_playerWidgets_target_nodes.js => devtools/client/animationinspector/test/browser_animation_playerWidgets_target_nodes.js rename : browser/devtools/animationinspector/test/browser_animation_refresh_on_added_animation.js => devtools/client/animationinspector/test/browser_animation_refresh_on_added_animation.js rename : browser/devtools/animationinspector/test/browser_animation_refresh_on_removed_animation.js => devtools/client/animationinspector/test/browser_animation_refresh_on_removed_animation.js rename : browser/devtools/animationinspector/test/browser_animation_refresh_when_active.js => devtools/client/animationinspector/test/browser_animation_refresh_when_active.js rename : browser/devtools/animationinspector/test/browser_animation_same_nb_of_playerWidgets_and_playerFronts.js => devtools/client/animationinspector/test/browser_animation_same_nb_of_playerWidgets_and_playerFronts.js rename : browser/devtools/animationinspector/test/browser_animation_shows_player_on_valid_node.js => devtools/client/animationinspector/test/browser_animation_shows_player_on_valid_node.js rename : browser/devtools/animationinspector/test/browser_animation_target_highlight_select.js => devtools/client/animationinspector/test/browser_animation_target_highlight_select.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_header.js => devtools/client/animationinspector/test/browser_animation_timeline_header.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_pause_button.js => devtools/client/animationinspector/test/browser_animation_timeline_pause_button.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_scrubber_exists.js => devtools/client/animationinspector/test/browser_animation_timeline_scrubber_exists.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_scrubber_movable.js => devtools/client/animationinspector/test/browser_animation_timeline_scrubber_movable.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_scrubber_moves.js => devtools/client/animationinspector/test/browser_animation_timeline_scrubber_moves.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_shows_delay.js => devtools/client/animationinspector/test/browser_animation_timeline_shows_delay.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_shows_iterations.js => devtools/client/animationinspector/test/browser_animation_timeline_shows_iterations.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_shows_time_info.js => devtools/client/animationinspector/test/browser_animation_timeline_shows_time_info.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_takes_rate_into_account.js => devtools/client/animationinspector/test/browser_animation_timeline_takes_rate_into_account.js rename : browser/devtools/animationinspector/test/browser_animation_timeline_ui.js => devtools/client/animationinspector/test/browser_animation_timeline_ui.js rename : browser/devtools/animationinspector/test/browser_animation_toggle_button_resets_on_navigate.js => devtools/client/animationinspector/test/browser_animation_toggle_button_resets_on_navigate.js rename : browser/devtools/animationinspector/test/browser_animation_toggle_button_toggles_animations.js => devtools/client/animationinspector/test/browser_animation_toggle_button_toggles_animations.js rename : browser/devtools/animationinspector/test/browser_animation_toolbar_exists.js => devtools/client/animationinspector/test/browser_animation_toolbar_exists.js rename : browser/devtools/animationinspector/test/browser_animation_ui_updates_when_animation_data_changes.js => devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_data_changes.js rename : browser/devtools/animationinspector/test/doc_body_animation.html => devtools/client/animationinspector/test/doc_body_animation.html rename : browser/devtools/animationinspector/test/doc_frame_script.js => devtools/client/animationinspector/test/doc_frame_script.js rename : browser/devtools/animationinspector/test/doc_modify_playbackRate.html => devtools/client/animationinspector/test/doc_modify_playbackRate.html rename : browser/devtools/animationinspector/test/doc_negative_animation.html => devtools/client/animationinspector/test/doc_negative_animation.html rename : browser/devtools/animationinspector/test/doc_simple_animation.html => devtools/client/animationinspector/test/doc_simple_animation.html rename : browser/devtools/animationinspector/test/head.js => devtools/client/animationinspector/test/head.js rename : browser/devtools/animationinspector/test/unit/.eslintrc => devtools/client/animationinspector/test/unit/.eslintrc rename : browser/devtools/animationinspector/test/unit/test_findOptimalTimeInterval.js => devtools/client/animationinspector/test/unit/test_findOptimalTimeInterval.js rename : browser/devtools/animationinspector/test/unit/test_timeScale.js => devtools/client/animationinspector/test/unit/test_timeScale.js rename : browser/devtools/animationinspector/test/unit/xpcshell.ini => devtools/client/animationinspector/test/unit/xpcshell.ini rename : browser/devtools/animationinspector/utils.js => devtools/client/animationinspector/utils.js rename : browser/devtools/app-manager/app-projects.js => devtools/client/app-manager/app-projects.js rename : browser/devtools/app-manager/app-validator.js => devtools/client/app-manager/app-validator.js rename : browser/devtools/app-manager/builtin-adb-store.js => devtools/client/app-manager/builtin-adb-store.js rename : browser/devtools/app-manager/connection-store.js => devtools/client/app-manager/connection-store.js rename : browser/devtools/app-manager/content/connection-footer.js => devtools/client/app-manager/content/connection-footer.js rename : browser/devtools/app-manager/content/connection-footer.xhtml => devtools/client/app-manager/content/connection-footer.xhtml rename : browser/devtools/app-manager/content/device.js => devtools/client/app-manager/content/device.js rename : browser/devtools/app-manager/content/device.xhtml => devtools/client/app-manager/content/device.xhtml rename : browser/devtools/app-manager/content/help.xhtml => devtools/client/app-manager/content/help.xhtml rename : browser/devtools/app-manager/content/index.js => devtools/client/app-manager/content/index.js rename : browser/devtools/app-manager/content/index.xul => devtools/client/app-manager/content/index.xul rename : browser/devtools/app-manager/content/manifest-editor.js => devtools/client/app-manager/content/manifest-editor.js rename : browser/devtools/app-manager/content/projects.js => devtools/client/app-manager/content/projects.js rename : browser/devtools/app-manager/content/projects.xhtml => devtools/client/app-manager/content/projects.xhtml rename : browser/devtools/app-manager/content/template.js => devtools/client/app-manager/content/template.js rename : browser/devtools/app-manager/content/utils.js => devtools/client/app-manager/content/utils.js rename : browser/devtools/app-manager/device-store.js => devtools/client/app-manager/device-store.js rename : browser/devtools/app-manager/moz.build => devtools/client/app-manager/moz.build rename : browser/devtools/app-manager/simulators-store.js => devtools/client/app-manager/simulators-store.js rename : browser/devtools/app-manager/test/.eslintrc => devtools/client/app-manager/test/.eslintrc rename : browser/devtools/app-manager/test/browser.ini => devtools/client/app-manager/test/browser.ini rename : browser/devtools/app-manager/test/browser_manifest_editor.js => devtools/client/app-manager/test/browser_manifest_editor.js rename : browser/devtools/app-manager/test/chrome.ini => devtools/client/app-manager/test/chrome.ini rename : browser/devtools/app-manager/test/head.js => devtools/client/app-manager/test/head.js rename : browser/devtools/app-manager/test/hosted_app.manifest => devtools/client/app-manager/test/hosted_app.manifest rename : browser/devtools/app-manager/test/manifest.webapp => devtools/client/app-manager/test/manifest.webapp rename : browser/devtools/app-manager/test/test_app_validator.html => devtools/client/app-manager/test/test_app_validator.html rename : browser/devtools/app-manager/test/test_connection_store.html => devtools/client/app-manager/test/test_connection_store.html rename : browser/devtools/app-manager/test/test_device_store.html => devtools/client/app-manager/test/test_device_store.html rename : browser/devtools/app-manager/test/test_projects_store.html => devtools/client/app-manager/test/test_projects_store.html rename : browser/devtools/app-manager/test/test_remain_connected.html => devtools/client/app-manager/test/test_remain_connected.html rename : browser/devtools/app-manager/test/test_template.html => devtools/client/app-manager/test/test_template.html rename : browser/devtools/app-manager/test/validator/no-name-or-icon/home.html => devtools/client/app-manager/test/validator/no-name-or-icon/home.html rename : browser/devtools/app-manager/test/validator/no-name-or-icon/manifest.webapp => devtools/client/app-manager/test/validator/no-name-or-icon/manifest.webapp rename : browser/devtools/app-manager/test/validator/non-absolute-path/manifest.webapp => devtools/client/app-manager/test/validator/non-absolute-path/manifest.webapp rename : browser/devtools/app-manager/test/validator/valid/alsoValid/manifest.webapp => devtools/client/app-manager/test/validator/valid/alsoValid/manifest.webapp rename : browser/devtools/app-manager/test/validator/valid/home.html => devtools/client/app-manager/test/validator/valid/home.html rename : browser/devtools/app-manager/test/validator/valid/icon.png => devtools/client/app-manager/test/validator/valid/icon.png rename : browser/devtools/app-manager/test/validator/valid/manifest.webapp => devtools/client/app-manager/test/validator/valid/manifest.webapp rename : browser/devtools/app-manager/test/validator/wrong-launch-path/icon.png => devtools/client/app-manager/test/validator/wrong-launch-path/icon.png rename : browser/devtools/app-manager/test/validator/wrong-launch-path/manifest.webapp => devtools/client/app-manager/test/validator/wrong-launch-path/manifest.webapp rename : browser/devtools/app-manager/webapps-store.js => devtools/client/app-manager/webapps-store.js rename : browser/devtools/canvasdebugger/callslist.js => devtools/client/canvasdebugger/callslist.js rename : browser/devtools/canvasdebugger/canvasdebugger.js => devtools/client/canvasdebugger/canvasdebugger.js rename : browser/devtools/canvasdebugger/canvasdebugger.xul => devtools/client/canvasdebugger/canvasdebugger.xul rename : browser/devtools/canvasdebugger/moz.build => devtools/client/canvasdebugger/moz.build rename : browser/devtools/canvasdebugger/panel.js => devtools/client/canvasdebugger/panel.js rename : browser/devtools/canvasdebugger/snapshotslist.js => devtools/client/canvasdebugger/snapshotslist.js rename : browser/devtools/canvasdebugger/test/.eslintrc => devtools/client/canvasdebugger/test/.eslintrc rename : browser/devtools/canvasdebugger/test/browser.ini => devtools/client/canvasdebugger/test/browser.ini rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-01.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-01.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-02.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-02.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-03.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-03.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-04.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-04.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-05.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-05.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-06.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-06.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-07.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-07.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-08.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-08.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-09.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-09.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-10.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-10.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-11.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-11.js rename : browser/devtools/canvasdebugger/test/browser_canvas-actor-test-12.js => devtools/client/canvasdebugger/test/browser_canvas-actor-test-12.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-call-highlight.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-call-highlight.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-call-list.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-call-list.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-call-search.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-call-search.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-call-stack-01.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-01.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-call-stack-02.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-02.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-call-stack-03.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-03.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-clear.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-clear.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-img-screenshots.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-img-screenshots.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-img-thumbnails-01.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-img-thumbnails-01.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-img-thumbnails-02.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-img-thumbnails-02.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-open.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-open.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-record-01.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-record-01.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-record-02.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-record-02.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-record-03.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-record-03.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-record-04.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-record-04.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-reload-01.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-reload-01.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-reload-02.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-reload-02.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-slider-01.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-slider-01.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-slider-02.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-slider-02.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-snapshot-select-01.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-snapshot-select-01.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-snapshot-select-02.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-snapshot-select-02.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-stepping.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-stepping.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-stop-01.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-stop-01.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-stop-02.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-stop-02.js rename : browser/devtools/canvasdebugger/test/browser_canvas-frontend-stop-03.js => devtools/client/canvasdebugger/test/browser_canvas-frontend-stop-03.js rename : browser/devtools/canvasdebugger/test/browser_profiling-canvas.js => devtools/client/canvasdebugger/test/browser_profiling-canvas.js rename : browser/devtools/canvasdebugger/test/browser_profiling-webgl.js => devtools/client/canvasdebugger/test/browser_profiling-webgl.js rename : browser/devtools/canvasdebugger/test/doc_no-canvas.html => devtools/client/canvasdebugger/test/doc_no-canvas.html rename : browser/devtools/canvasdebugger/test/doc_raf-begin.html => devtools/client/canvasdebugger/test/doc_raf-begin.html rename : browser/devtools/canvasdebugger/test/doc_raf-no-canvas.html => devtools/client/canvasdebugger/test/doc_raf-no-canvas.html rename : browser/devtools/canvasdebugger/test/doc_settimeout.html => devtools/client/canvasdebugger/test/doc_settimeout.html rename : browser/devtools/canvasdebugger/test/doc_simple-canvas-bitmasks.html => devtools/client/canvasdebugger/test/doc_simple-canvas-bitmasks.html rename : browser/devtools/canvasdebugger/test/doc_simple-canvas-deep-stack.html => devtools/client/canvasdebugger/test/doc_simple-canvas-deep-stack.html rename : browser/devtools/canvasdebugger/test/doc_simple-canvas-transparent.html => devtools/client/canvasdebugger/test/doc_simple-canvas-transparent.html rename : browser/devtools/canvasdebugger/test/doc_simple-canvas.html => devtools/client/canvasdebugger/test/doc_simple-canvas.html rename : browser/devtools/canvasdebugger/test/doc_webgl-bindings.html => devtools/client/canvasdebugger/test/doc_webgl-bindings.html rename : browser/devtools/canvasdebugger/test/doc_webgl-enum.html => devtools/client/canvasdebugger/test/doc_webgl-enum.html rename : browser/devtools/canvasdebugger/test/head.js => devtools/client/canvasdebugger/test/head.js rename : browser/devtools/commandline/commandline.css => devtools/client/commandline/commandline.css rename : browser/devtools/commandline/commandlineoutput.xhtml => devtools/client/commandline/commandlineoutput.xhtml rename : browser/devtools/commandline/commandlinetooltip.xhtml => devtools/client/commandline/commandlinetooltip.xhtml rename : browser/devtools/commandline/moz.build => devtools/client/commandline/moz.build rename : browser/devtools/commandline/test/.eslintrc => devtools/client/commandline/test/.eslintrc rename : browser/devtools/commandline/test/browser.ini => devtools/client/commandline/test/browser.ini rename : browser/devtools/commandline/test/browser_cmd_addon.js => devtools/client/commandline/test/browser_cmd_addon.js rename : browser/devtools/commandline/test/browser_cmd_appcache_invalid.js => devtools/client/commandline/test/browser_cmd_appcache_invalid.js rename : browser/devtools/commandline/test/browser_cmd_appcache_invalid_appcache.appcache => devtools/client/commandline/test/browser_cmd_appcache_invalid_appcache.appcache rename : browser/devtools/commandline/test/browser_cmd_appcache_invalid_appcache.appcache^headers^ => devtools/client/commandline/test/browser_cmd_appcache_invalid_appcache.appcache^headers^ rename : browser/devtools/commandline/test/browser_cmd_appcache_invalid_index.html => devtools/client/commandline/test/browser_cmd_appcache_invalid_index.html rename : browser/devtools/commandline/test/browser_cmd_appcache_invalid_page1.html => devtools/client/commandline/test/browser_cmd_appcache_invalid_page1.html rename : browser/devtools/commandline/test/browser_cmd_appcache_invalid_page2.html => devtools/client/commandline/test/browser_cmd_appcache_invalid_page2.html rename : browser/devtools/commandline/test/browser_cmd_appcache_invalid_page3.html => devtools/client/commandline/test/browser_cmd_appcache_invalid_page3.html rename : browser/devtools/commandline/test/browser_cmd_appcache_invalid_page3.html^headers^ => devtools/client/commandline/test/browser_cmd_appcache_invalid_page3.html^headers^ rename : browser/devtools/commandline/test/browser_cmd_appcache_valid.js => devtools/client/commandline/test/browser_cmd_appcache_valid.js rename : browser/devtools/commandline/test/browser_cmd_appcache_valid_appcache.appcache => devtools/client/commandline/test/browser_cmd_appcache_valid_appcache.appcache rename : browser/devtools/commandline/test/browser_cmd_appcache_valid_appcache.appcache^headers^ => devtools/client/commandline/test/browser_cmd_appcache_valid_appcache.appcache^headers^ rename : browser/devtools/commandline/test/browser_cmd_appcache_valid_index.html => devtools/client/commandline/test/browser_cmd_appcache_valid_index.html rename : browser/devtools/commandline/test/browser_cmd_appcache_valid_page1.html => devtools/client/commandline/test/browser_cmd_appcache_valid_page1.html rename : browser/devtools/commandline/test/browser_cmd_appcache_valid_page2.html => devtools/client/commandline/test/browser_cmd_appcache_valid_page2.html rename : browser/devtools/commandline/test/browser_cmd_appcache_valid_page3.html => devtools/client/commandline/test/browser_cmd_appcache_valid_page3.html rename : browser/devtools/commandline/test/browser_cmd_calllog.js => devtools/client/commandline/test/browser_cmd_calllog.js rename : browser/devtools/commandline/test/browser_cmd_calllog_chrome.js => devtools/client/commandline/test/browser_cmd_calllog_chrome.js rename : browser/devtools/commandline/test/browser_cmd_commands.js => devtools/client/commandline/test/browser_cmd_commands.js rename : browser/devtools/commandline/test/browser_cmd_cookie.html => devtools/client/commandline/test/browser_cmd_cookie.html rename : browser/devtools/commandline/test/browser_cmd_cookie.js => devtools/client/commandline/test/browser_cmd_cookie.js rename : browser/devtools/commandline/test/browser_cmd_cookie_host.js => devtools/client/commandline/test/browser_cmd_cookie_host.js rename : browser/devtools/commandline/test/browser_cmd_csscoverage_oneshot.js => devtools/client/commandline/test/browser_cmd_csscoverage_oneshot.js rename : browser/devtools/commandline/test/browser_cmd_csscoverage_page1.html => devtools/client/commandline/test/browser_cmd_csscoverage_page1.html rename : browser/devtools/commandline/test/browser_cmd_csscoverage_page2.html => devtools/client/commandline/test/browser_cmd_csscoverage_page2.html rename : browser/devtools/commandline/test/browser_cmd_csscoverage_page3.html => devtools/client/commandline/test/browser_cmd_csscoverage_page3.html rename : browser/devtools/commandline/test/browser_cmd_csscoverage_sheetA.css => devtools/client/commandline/test/browser_cmd_csscoverage_sheetA.css rename : browser/devtools/commandline/test/browser_cmd_csscoverage_sheetB.css => devtools/client/commandline/test/browser_cmd_csscoverage_sheetB.css rename : browser/devtools/commandline/test/browser_cmd_csscoverage_sheetC.css => devtools/client/commandline/test/browser_cmd_csscoverage_sheetC.css rename : browser/devtools/commandline/test/browser_cmd_csscoverage_sheetD.css => devtools/client/commandline/test/browser_cmd_csscoverage_sheetD.css rename : browser/devtools/commandline/test/browser_cmd_csscoverage_startstop.js => devtools/client/commandline/test/browser_cmd_csscoverage_startstop.js rename : browser/devtools/commandline/test/browser_cmd_csscoverage_util.js => devtools/client/commandline/test/browser_cmd_csscoverage_util.js rename : browser/devtools/commandline/test/browser_cmd_folder.js => devtools/client/commandline/test/browser_cmd_folder.js rename : browser/devtools/commandline/test/browser_cmd_highlight_01.js => devtools/client/commandline/test/browser_cmd_highlight_01.js rename : browser/devtools/commandline/test/browser_cmd_highlight_02.js => devtools/client/commandline/test/browser_cmd_highlight_02.js rename : browser/devtools/commandline/test/browser_cmd_inject.html => devtools/client/commandline/test/browser_cmd_inject.html rename : browser/devtools/commandline/test/browser_cmd_inject.js => devtools/client/commandline/test/browser_cmd_inject.js rename : browser/devtools/commandline/test/browser_cmd_jsb.js => devtools/client/commandline/test/browser_cmd_jsb.js rename : browser/devtools/commandline/test/browser_cmd_jsb_script.jsi => devtools/client/commandline/test/browser_cmd_jsb_script.jsi rename : browser/devtools/commandline/test/browser_cmd_listen.js => devtools/client/commandline/test/browser_cmd_listen.js rename : browser/devtools/commandline/test/browser_cmd_media.html => devtools/client/commandline/test/browser_cmd_media.html rename : browser/devtools/commandline/test/browser_cmd_media.js => devtools/client/commandline/test/browser_cmd_media.js rename : browser/devtools/commandline/test/browser_cmd_pagemod_export.html => devtools/client/commandline/test/browser_cmd_pagemod_export.html rename : browser/devtools/commandline/test/browser_cmd_pagemod_export.js => devtools/client/commandline/test/browser_cmd_pagemod_export.js rename : browser/devtools/commandline/test/browser_cmd_paintflashing.js => devtools/client/commandline/test/browser_cmd_paintflashing.js rename : browser/devtools/commandline/test/browser_cmd_pref1.js => devtools/client/commandline/test/browser_cmd_pref1.js rename : browser/devtools/commandline/test/browser_cmd_pref2.js => devtools/client/commandline/test/browser_cmd_pref2.js rename : browser/devtools/commandline/test/browser_cmd_pref3.js => devtools/client/commandline/test/browser_cmd_pref3.js rename : browser/devtools/commandline/test/browser_cmd_restart.js => devtools/client/commandline/test/browser_cmd_restart.js rename : browser/devtools/commandline/test/browser_cmd_rulers.js => devtools/client/commandline/test/browser_cmd_rulers.js rename : browser/devtools/commandline/test/browser_cmd_screenshot.html => devtools/client/commandline/test/browser_cmd_screenshot.html rename : browser/devtools/commandline/test/browser_cmd_screenshot.js => devtools/client/commandline/test/browser_cmd_screenshot.js rename : browser/devtools/commandline/test/browser_cmd_settings.js => devtools/client/commandline/test/browser_cmd_settings.js rename : browser/devtools/commandline/test/browser_gcli_async.js => devtools/client/commandline/test/browser_gcli_async.js rename : browser/devtools/commandline/test/browser_gcli_canon.js => devtools/client/commandline/test/browser_gcli_canon.js rename : browser/devtools/commandline/test/browser_gcli_cli1.js => devtools/client/commandline/test/browser_gcli_cli1.js rename : browser/devtools/commandline/test/browser_gcli_cli2.js => devtools/client/commandline/test/browser_gcli_cli2.js rename : browser/devtools/commandline/test/browser_gcli_completion1.js => devtools/client/commandline/test/browser_gcli_completion1.js rename : browser/devtools/commandline/test/browser_gcli_completion2.js => devtools/client/commandline/test/browser_gcli_completion2.js rename : browser/devtools/commandline/test/browser_gcli_context.js => devtools/client/commandline/test/browser_gcli_context.js rename : browser/devtools/commandline/test/browser_gcli_date.js => devtools/client/commandline/test/browser_gcli_date.js rename : browser/devtools/commandline/test/browser_gcli_exec.js => devtools/client/commandline/test/browser_gcli_exec.js rename : browser/devtools/commandline/test/browser_gcli_fail.js => devtools/client/commandline/test/browser_gcli_fail.js rename : browser/devtools/commandline/test/browser_gcli_file.js => devtools/client/commandline/test/browser_gcli_file.js rename : browser/devtools/commandline/test/browser_gcli_fileparser.js => devtools/client/commandline/test/browser_gcli_fileparser.js rename : browser/devtools/commandline/test/browser_gcli_filesystem.js => devtools/client/commandline/test/browser_gcli_filesystem.js rename : browser/devtools/commandline/test/browser_gcli_focus.js => devtools/client/commandline/test/browser_gcli_focus.js rename : browser/devtools/commandline/test/browser_gcli_history.js => devtools/client/commandline/test/browser_gcli_history.js rename : browser/devtools/commandline/test/browser_gcli_incomplete.js => devtools/client/commandline/test/browser_gcli_incomplete.js rename : browser/devtools/commandline/test/browser_gcli_inputter.js => devtools/client/commandline/test/browser_gcli_inputter.js rename : browser/devtools/commandline/test/browser_gcli_intro.js => devtools/client/commandline/test/browser_gcli_intro.js rename : browser/devtools/commandline/test/browser_gcli_js.js => devtools/client/commandline/test/browser_gcli_js.js rename : browser/devtools/commandline/test/browser_gcli_keyboard1.js => devtools/client/commandline/test/browser_gcli_keyboard1.js rename : browser/devtools/commandline/test/browser_gcli_keyboard2.js => devtools/client/commandline/test/browser_gcli_keyboard2.js rename : browser/devtools/commandline/test/browser_gcli_keyboard3.js => devtools/client/commandline/test/browser_gcli_keyboard3.js rename : browser/devtools/commandline/test/browser_gcli_keyboard4.js => devtools/client/commandline/test/browser_gcli_keyboard4.js rename : browser/devtools/commandline/test/browser_gcli_keyboard5.js => devtools/client/commandline/test/browser_gcli_keyboard5.js rename : browser/devtools/commandline/test/browser_gcli_keyboard6.js => devtools/client/commandline/test/browser_gcli_keyboard6.js rename : browser/devtools/commandline/test/browser_gcli_menu.js => devtools/client/commandline/test/browser_gcli_menu.js rename : browser/devtools/commandline/test/browser_gcli_node.js => devtools/client/commandline/test/browser_gcli_node.js rename : browser/devtools/commandline/test/browser_gcli_pref1.js => devtools/client/commandline/test/browser_gcli_pref1.js rename : browser/devtools/commandline/test/browser_gcli_pref2.js => devtools/client/commandline/test/browser_gcli_pref2.js rename : browser/devtools/commandline/test/browser_gcli_remotews.js => devtools/client/commandline/test/browser_gcli_remotews.js rename : browser/devtools/commandline/test/browser_gcli_remotexhr.js => devtools/client/commandline/test/browser_gcli_remotexhr.js rename : browser/devtools/commandline/test/browser_gcli_resource.js => devtools/client/commandline/test/browser_gcli_resource.js rename : browser/devtools/commandline/test/browser_gcli_short.js => devtools/client/commandline/test/browser_gcli_short.js rename : browser/devtools/commandline/test/browser_gcli_spell.js => devtools/client/commandline/test/browser_gcli_spell.js rename : browser/devtools/commandline/test/browser_gcli_split.js => devtools/client/commandline/test/browser_gcli_split.js rename : browser/devtools/commandline/test/browser_gcli_string.js => devtools/client/commandline/test/browser_gcli_string.js rename : browser/devtools/commandline/test/browser_gcli_tokenize.js => devtools/client/commandline/test/browser_gcli_tokenize.js rename : browser/devtools/commandline/test/browser_gcli_tooltip.js => devtools/client/commandline/test/browser_gcli_tooltip.js rename : browser/devtools/commandline/test/browser_gcli_types.js => devtools/client/commandline/test/browser_gcli_types.js rename : browser/devtools/commandline/test/browser_gcli_union.js => devtools/client/commandline/test/browser_gcli_union.js rename : browser/devtools/commandline/test/browser_gcli_url.js => devtools/client/commandline/test/browser_gcli_url.js rename : browser/devtools/commandline/test/head.js => devtools/client/commandline/test/head.js rename : browser/devtools/commandline/test/helpers.js => devtools/client/commandline/test/helpers.js rename : browser/devtools/commandline/test/mockCommands.js => devtools/client/commandline/test/mockCommands.js rename : browser/devtools/debugger/content/actions/event-listeners.js => devtools/client/debugger/content/actions/event-listeners.js rename : browser/devtools/debugger/content/constants.js => devtools/client/debugger/content/constants.js rename : browser/devtools/debugger/content/globalActions.js => devtools/client/debugger/content/globalActions.js rename : browser/devtools/debugger/content/reducers/event-listeners.js => devtools/client/debugger/content/reducers/event-listeners.js rename : browser/devtools/debugger/content/reducers/index.js => devtools/client/debugger/content/reducers/index.js rename : browser/devtools/debugger/content/utils.js => devtools/client/debugger/content/utils.js rename : browser/devtools/debugger/content/views/event-listeners-view.js => devtools/client/debugger/content/views/event-listeners-view.js rename : browser/devtools/debugger/debugger-commands.js => devtools/client/debugger/debugger-commands.js rename : browser/devtools/debugger/debugger-controller.js => devtools/client/debugger/debugger-controller.js rename : browser/devtools/debugger/debugger-view.js => devtools/client/debugger/debugger-view.js rename : browser/devtools/debugger/debugger.css => devtools/client/debugger/debugger.css rename : browser/devtools/debugger/debugger.xul => devtools/client/debugger/debugger.xul rename : browser/devtools/debugger/moz.build => devtools/client/debugger/moz.build rename : browser/devtools/debugger/panel.js => devtools/client/debugger/panel.js rename : browser/devtools/debugger/test/.eslintrc => devtools/client/debugger/test/.eslintrc rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon3/lib/main.js => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon3/lib/main.js rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon3/package.json => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon3/package.json rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/bootstrap.js => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/bootstrap.js rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/chrome.manifest => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/chrome.manifest rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/install.rdf => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/install.rdf rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/test.jsm => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/test.jsm rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/test.xul => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/test.xul rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/test2.jsm => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/test2.jsm rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/test2.xul => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/test2.xul rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/testxul.js => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/testxul.js rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon4/testxul2.js => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon4/testxul2.js rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/bootstrap.js => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/bootstrap.js rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/chrome.manifest => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/chrome.manifest rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/install.rdf => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/install.rdf rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/test.jsm => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/test.jsm rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/test.xul => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/test.xul rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/test2.jsm => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/test2.jsm rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/test2.xul => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/test2.xul rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/testxul.js => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/testxul.js rename : browser/devtools/debugger/test/mochitest/addon-source/browser_dbg_addon5/testxul2.js => devtools/client/debugger/test/mochitest/addon-source/browser_dbg_addon5/testxul2.js rename : browser/devtools/debugger/test/mochitest/addon1.xpi => devtools/client/debugger/test/mochitest/addon1.xpi rename : browser/devtools/debugger/test/mochitest/addon2.xpi => devtools/client/debugger/test/mochitest/addon2.xpi rename : browser/devtools/debugger/test/mochitest/addon3.xpi => devtools/client/debugger/test/mochitest/addon3.xpi rename : browser/devtools/debugger/test/mochitest/addon4.xpi => devtools/client/debugger/test/mochitest/addon4.xpi rename : browser/devtools/debugger/test/mochitest/addon5.xpi => devtools/client/debugger/test/mochitest/addon5.xpi rename : browser/devtools/debugger/test/mochitest/browser.ini => devtools/client/debugger/test/mochitest/browser.ini rename : browser/devtools/debugger/test/mochitest/browser_dbg_WorkerActor.attach.js => devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attach.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js => devtools/client/debugger/test/mochitest/browser_dbg_WorkerActor.attachThread.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_aaa_run_first_leaktest.js => devtools/client/debugger/test/mochitest/browser_dbg_aaa_run_first_leaktest.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_addon-console.js => devtools/client/debugger/test/mochitest/browser_dbg_addon-console.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_addon-modules-unpacked.js => devtools/client/debugger/test/mochitest/browser_dbg_addon-modules-unpacked.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_addon-modules.js => devtools/client/debugger/test/mochitest/browser_dbg_addon-modules.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_addon-panels.js => devtools/client/debugger/test/mochitest/browser_dbg_addon-panels.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_addon-sources.js => devtools/client/debugger/test/mochitest/browser_dbg_addon-sources.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_addonactor.js => devtools/client/debugger/test/mochitest/browser_dbg_addonactor.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_auto-pretty-print-01.js => devtools/client/debugger/test/mochitest/browser_dbg_auto-pretty-print-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_auto-pretty-print-02.js => devtools/client/debugger/test/mochitest/browser_dbg_auto-pretty-print-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_bfcache.js => devtools/client/debugger/test/mochitest/browser_dbg_bfcache.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_blackboxing-01.js => devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_blackboxing-02.js => devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_blackboxing-03.js => devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_blackboxing-04.js => devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_blackboxing-05.js => devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_blackboxing-06.js => devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-06.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breadcrumbs-access.js => devtools/client/debugger/test/mochitest/browser_dbg_breadcrumbs-access.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-in-anon.js => devtools/client/debugger/test/mochitest/browser_dbg_break-in-anon.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-01.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-02.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-03.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-04.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-05.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-06.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-06.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-07.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-07.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-08.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-08.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-event-01.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-event-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-event-02.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-event-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-dom-event-03.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-event-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-next-console.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-next-console.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_break-on-next.js => devtools/client/debugger/test/mochitest/browser_dbg_break-on-next.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-actual-location.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-break-on-last-line-of-script-on-reload.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-break-on-last-line-of-script-on-reload.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-button-01.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-button-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-button-02.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-button-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-condition-thrown-message.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-condition-thrown-message.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-contextmenu-add.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-contextmenu-add.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-contextmenu.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-contextmenu.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-disabled-reload.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-disabled-reload.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-editor.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-editor.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-eval.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-eval.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-highlight.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-highlight.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-new-script.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-new-script.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-other-tabs.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-other-tabs.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-pane.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-pane.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_breakpoints-reload.js => devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-reload.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_bug-896139.js => devtools/client/debugger/test/mochitest/browser_dbg_bug-896139.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_chrome-create.js => devtools/client/debugger/test/mochitest/browser_dbg_chrome-create.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_chrome-debugging.js => devtools/client/debugger/test/mochitest/browser_dbg_chrome-debugging.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_clean-exit-window.js => devtools/client/debugger/test/mochitest/browser_dbg_clean-exit-window.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_clean-exit.js => devtools/client/debugger/test/mochitest/browser_dbg_clean-exit.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_closure-inspection.js => devtools/client/debugger/test/mochitest/browser_dbg_closure-inspection.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_cmd-blackbox.js => devtools/client/debugger/test/mochitest/browser_dbg_cmd-blackbox.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_cmd-break.js => devtools/client/debugger/test/mochitest/browser_dbg_cmd-break.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_cmd-dbg.js => devtools/client/debugger/test/mochitest/browser_dbg_cmd-dbg.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_conditional-breakpoints-01.js => devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_conditional-breakpoints-02.js => devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_conditional-breakpoints-03.js => devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_conditional-breakpoints-04.js => devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_conditional-breakpoints-05.js => devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_console-eval.js => devtools/client/debugger/test/mochitest/browser_dbg_console-eval.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_console-named-eval.js => devtools/client/debugger/test/mochitest/browser_dbg_console-named-eval.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_controller-evaluate-01.js => devtools/client/debugger/test/mochitest/browser_dbg_controller-evaluate-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_controller-evaluate-02.js => devtools/client/debugger/test/mochitest/browser_dbg_controller-evaluate-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_debugger-statement.js => devtools/client/debugger/test/mochitest/browser_dbg_debugger-statement.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_editor-contextmenu.js => devtools/client/debugger/test/mochitest/browser_dbg_editor-contextmenu.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_editor-mode.js => devtools/client/debugger/test/mochitest/browser_dbg_editor-mode.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_event-listeners-01.js => devtools/client/debugger/test/mochitest/browser_dbg_event-listeners-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_event-listeners-02.js => devtools/client/debugger/test/mochitest/browser_dbg_event-listeners-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_event-listeners-03.js => devtools/client/debugger/test/mochitest/browser_dbg_event-listeners-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_event-listeners-04.js => devtools/client/debugger/test/mochitest/browser_dbg_event-listeners-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_file-reload.js => devtools/client/debugger/test/mochitest/browser_dbg_file-reload.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_function-display-name.js => devtools/client/debugger/test/mochitest/browser_dbg_function-display-name.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_global-method-override.js => devtools/client/debugger/test/mochitest/browser_dbg_global-method-override.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_globalactor.js => devtools/client/debugger/test/mochitest/browser_dbg_globalactor.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_hide-toolbar-buttons.js => devtools/client/debugger/test/mochitest/browser_dbg_hide-toolbar-buttons.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_host-layout.js => devtools/client/debugger/test/mochitest/browser_dbg_host-layout.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_iframes.js => devtools/client/debugger/test/mochitest/browser_dbg_iframes.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_instruments-pane-collapse.js => devtools/client/debugger/test/mochitest/browser_dbg_instruments-pane-collapse.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_interrupts.js => devtools/client/debugger/test/mochitest/browser_dbg_interrupts.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_listaddons.js => devtools/client/debugger/test/mochitest/browser_dbg_listaddons.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_listtabs-01.js => devtools/client/debugger/test/mochitest/browser_dbg_listtabs-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_listtabs-02.js => devtools/client/debugger/test/mochitest/browser_dbg_listtabs-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_listtabs-03.js => devtools/client/debugger/test/mochitest/browser_dbg_listtabs-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_listworkers.js => devtools/client/debugger/test/mochitest/browser_dbg_listworkers.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_location-changes-01-simple.js => devtools/client/debugger/test/mochitest/browser_dbg_location-changes-01-simple.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_location-changes-02-blank.js => devtools/client/debugger/test/mochitest/browser_dbg_location-changes-02-blank.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_location-changes-03-new.js => devtools/client/debugger/test/mochitest/browser_dbg_location-changes-03-new.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_location-changes-04-breakpoint.js => devtools/client/debugger/test/mochitest/browser_dbg_location-changes-04-breakpoint.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_multiple-windows.js => devtools/client/debugger/test/mochitest/browser_dbg_multiple-windows.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_navigation.js => devtools/client/debugger/test/mochitest/browser_dbg_navigation.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_no-page-sources.js => devtools/client/debugger/test/mochitest/browser_dbg_no-page-sources.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_on-pause-highlight.js => devtools/client/debugger/test/mochitest/browser_dbg_on-pause-highlight.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_on-pause-raise.js => devtools/client/debugger/test/mochitest/browser_dbg_on-pause-raise.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_optimized-out-vars.js => devtools/client/debugger/test/mochitest/browser_dbg_optimized-out-vars.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_panel-size.js => devtools/client/debugger/test/mochitest/browser_dbg_panel-size.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-01.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-02.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-03.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-04.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-05.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-06.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-06.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-07.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-07.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-08.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-08.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-09.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-09.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_parser-10.js => devtools/client/debugger/test/mochitest/browser_dbg_parser-10.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pause-exceptions-01.js => devtools/client/debugger/test/mochitest/browser_dbg_pause-exceptions-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pause-exceptions-02.js => devtools/client/debugger/test/mochitest/browser_dbg_pause-exceptions-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pause-no-step.js => devtools/client/debugger/test/mochitest/browser_dbg_pause-no-step.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pause-resume.js => devtools/client/debugger/test/mochitest/browser_dbg_pause-resume.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pause-warning.js => devtools/client/debugger/test/mochitest/browser_dbg_pause-warning.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_paused-keybindings.js => devtools/client/debugger/test/mochitest/browser_dbg_paused-keybindings.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-01.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-02.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-03.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-04.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-05.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-06.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-06.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-07.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-07.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-08.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-08.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-09.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-09.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-10.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-10.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-11.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-11.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-12.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-12.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-13.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-13.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_pretty-print-on-paused.js => devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-on-paused.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_progress-listener-bug.js => devtools/client/debugger/test/mochitest/browser_dbg_progress-listener-bug.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_promises-allocation-stack.js => devtools/client/debugger/test/mochitest/browser_dbg_promises-allocation-stack.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_promises-chrome-allocation-stack.js => devtools/client/debugger/test/mochitest/browser_dbg_promises-chrome-allocation-stack.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_promises-fulfillment-stack.js => devtools/client/debugger/test/mochitest/browser_dbg_promises-fulfillment-stack.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_promises-rejection-stack.js => devtools/client/debugger/test/mochitest/browser_dbg_promises-rejection-stack.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_reload-preferred-script-01.js => devtools/client/debugger/test/mochitest/browser_dbg_reload-preferred-script-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_reload-preferred-script-02.js => devtools/client/debugger/test/mochitest/browser_dbg_reload-preferred-script-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_reload-preferred-script-03.js => devtools/client/debugger/test/mochitest/browser_dbg_reload-preferred-script-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_reload-same-script.js => devtools/client/debugger/test/mochitest/browser_dbg_reload-same-script.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_scripts-switching-01.js => devtools/client/debugger/test/mochitest/browser_dbg_scripts-switching-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_scripts-switching-02.js => devtools/client/debugger/test/mochitest/browser_dbg_scripts-switching-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_scripts-switching-03.js => devtools/client/debugger/test/mochitest/browser_dbg_scripts-switching-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-autofill-identifier.js => devtools/client/debugger/test/mochitest/browser_dbg_search-autofill-identifier.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-basic-01.js => devtools/client/debugger/test/mochitest/browser_dbg_search-basic-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-basic-02.js => devtools/client/debugger/test/mochitest/browser_dbg_search-basic-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-basic-03.js => devtools/client/debugger/test/mochitest/browser_dbg_search-basic-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-basic-04.js => devtools/client/debugger/test/mochitest/browser_dbg_search-basic-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-global-01.js => devtools/client/debugger/test/mochitest/browser_dbg_search-global-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-global-02.js => devtools/client/debugger/test/mochitest/browser_dbg_search-global-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-global-03.js => devtools/client/debugger/test/mochitest/browser_dbg_search-global-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-global-04.js => devtools/client/debugger/test/mochitest/browser_dbg_search-global-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-global-05.js => devtools/client/debugger/test/mochitest/browser_dbg_search-global-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-global-06.js => devtools/client/debugger/test/mochitest/browser_dbg_search-global-06.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-popup-jank.js => devtools/client/debugger/test/mochitest/browser_dbg_search-popup-jank.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-sources-01.js => devtools/client/debugger/test/mochitest/browser_dbg_search-sources-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-sources-02.js => devtools/client/debugger/test/mochitest/browser_dbg_search-sources-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-sources-03.js => devtools/client/debugger/test/mochitest/browser_dbg_search-sources-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_search-symbols.js => devtools/client/debugger/test/mochitest/browser_dbg_search-symbols.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_searchbox-help-popup-01.js => devtools/client/debugger/test/mochitest/browser_dbg_searchbox-help-popup-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_searchbox-help-popup-02.js => devtools/client/debugger/test/mochitest/browser_dbg_searchbox-help-popup-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_searchbox-parse.js => devtools/client/debugger/test/mochitest/browser_dbg_searchbox-parse.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_server-conditional-bp-01.js => devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_server-conditional-bp-02.js => devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_server-conditional-bp-03.js => devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_server-conditional-bp-04.js => devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_server-conditional-bp-05.js => devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_source-maps-01.js => devtools/client/debugger/test/mochitest/browser_dbg_source-maps-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_source-maps-02.js => devtools/client/debugger/test/mochitest/browser_dbg_source-maps-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_source-maps-03.js => devtools/client/debugger/test/mochitest/browser_dbg_source-maps-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_source-maps-04.js => devtools/client/debugger/test/mochitest/browser_dbg_source-maps-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-bookmarklet.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-bookmarklet.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-cache.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-cache.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-contextmenu-01.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-contextmenu-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-contextmenu-02.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-contextmenu-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-eval-01.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-eval-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-eval-02.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-eval-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-keybindings.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-keybindings.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-labels.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-labels.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_sources-sorting.js => devtools/client/debugger/test/mochitest/browser_dbg_sources-sorting.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_split-console-paused-reload.js => devtools/client/debugger/test/mochitest/browser_dbg_split-console-paused-reload.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_stack-01.js => devtools/client/debugger/test/mochitest/browser_dbg_stack-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_stack-02.js => devtools/client/debugger/test/mochitest/browser_dbg_stack-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_stack-03.js => devtools/client/debugger/test/mochitest/browser_dbg_stack-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_stack-04.js => devtools/client/debugger/test/mochitest/browser_dbg_stack-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_stack-05.js => devtools/client/debugger/test/mochitest/browser_dbg_stack-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_stack-06.js => devtools/client/debugger/test/mochitest/browser_dbg_stack-06.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_stack-07.js => devtools/client/debugger/test/mochitest/browser_dbg_stack-07.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_step-out.js => devtools/client/debugger/test/mochitest/browser_dbg_step-out.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_tabactor-01.js => devtools/client/debugger/test/mochitest/browser_dbg_tabactor-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_tabactor-02.js => devtools/client/debugger/test/mochitest/browser_dbg_tabactor-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_terminate-on-tab-close.js => devtools/client/debugger/test/mochitest/browser_dbg_terminate-on-tab-close.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-01.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-02.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-03.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-04.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-05.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-06.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-06.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-accessibility.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-accessibility.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-data.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-data.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-edit-cancel.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-cancel.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-edit-click.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-click.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-edit-getset-01.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-getset-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-edit-getset-02.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-getset-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-edit-value.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-value.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-edit-watch.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-watch.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-filter-01.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-filter-02.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-filter-03.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-filter-04.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-filter-05.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-filter-pref.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-pref.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-filter-searchbox.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-searchbox.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-01.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-02.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-03.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-frame-with.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-with.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-frozen-sealed-nonext.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frozen-sealed-nonext.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-hide-non-enums.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-hide-non-enums.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-large-array-buffer.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-large-array-buffer.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-override-01.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-override-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-override-02.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-override-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-01.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-02.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-03.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-04.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-04.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-05.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-05.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-06.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-06.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-07.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-07.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-08.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-08.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-09.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-09.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-10.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-10.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-11.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-11.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-12.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-12.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-13.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-13.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-14.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-14.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-15.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-15.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-popup-16.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-16.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-reexpand-01.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-reexpand-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-reexpand-02.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-reexpand-02.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-reexpand-03.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-reexpand-03.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_variables-view-webidl.js => devtools/client/debugger/test/mochitest/browser_dbg_variables-view-webidl.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_watch-expressions-01.js => devtools/client/debugger/test/mochitest/browser_dbg_watch-expressions-01.js rename : browser/devtools/debugger/test/mochitest/browser_dbg_watch-expressions-02.js => devtools/client/debugger/test/mochitest/browser_dbg_watch-expressions-02.js rename : browser/devtools/debugger/test/mochitest/code_WorkerActor.attach-worker1.js => devtools/client/debugger/test/mochitest/code_WorkerActor.attach-worker1.js rename : browser/devtools/debugger/test/mochitest/code_WorkerActor.attach-worker2.js => devtools/client/debugger/test/mochitest/code_WorkerActor.attach-worker2.js rename : browser/devtools/debugger/test/mochitest/code_WorkerActor.attachThread-worker.js => devtools/client/debugger/test/mochitest/code_WorkerActor.attachThread-worker.js rename : browser/devtools/debugger/test/mochitest/code_binary_search.coffee => devtools/client/debugger/test/mochitest/code_binary_search.coffee rename : browser/devtools/debugger/test/mochitest/code_binary_search.js => devtools/client/debugger/test/mochitest/code_binary_search.js rename : browser/devtools/debugger/test/mochitest/code_binary_search.map => devtools/client/debugger/test/mochitest/code_binary_search.map rename : browser/devtools/debugger/test/mochitest/code_blackboxing_blackboxme.js => devtools/client/debugger/test/mochitest/code_blackboxing_blackboxme.js rename : browser/devtools/debugger/test/mochitest/code_blackboxing_one.js => devtools/client/debugger/test/mochitest/code_blackboxing_one.js rename : browser/devtools/debugger/test/mochitest/code_blackboxing_three.js => devtools/client/debugger/test/mochitest/code_blackboxing_three.js rename : browser/devtools/debugger/test/mochitest/code_blackboxing_two.js => devtools/client/debugger/test/mochitest/code_blackboxing_two.js rename : browser/devtools/debugger/test/mochitest/code_breakpoints-break-on-last-line-of-script-on-reload.js => devtools/client/debugger/test/mochitest/code_breakpoints-break-on-last-line-of-script-on-reload.js rename : browser/devtools/debugger/test/mochitest/code_breakpoints-other-tabs.js => devtools/client/debugger/test/mochitest/code_breakpoints-other-tabs.js rename : browser/devtools/debugger/test/mochitest/code_bug-896139.js => devtools/client/debugger/test/mochitest/code_bug-896139.js rename : browser/devtools/debugger/test/mochitest/code_frame-script.js => devtools/client/debugger/test/mochitest/code_frame-script.js rename : browser/devtools/debugger/test/mochitest/code_function-search-01.js => devtools/client/debugger/test/mochitest/code_function-search-01.js rename : browser/devtools/debugger/test/mochitest/code_function-search-02.js => devtools/client/debugger/test/mochitest/code_function-search-02.js rename : browser/devtools/debugger/test/mochitest/code_function-search-03.js => devtools/client/debugger/test/mochitest/code_function-search-03.js rename : browser/devtools/debugger/test/mochitest/code_listworkers-worker1.js => devtools/client/debugger/test/mochitest/code_listworkers-worker1.js rename : browser/devtools/debugger/test/mochitest/code_listworkers-worker2.js => devtools/client/debugger/test/mochitest/code_listworkers-worker2.js rename : browser/devtools/debugger/test/mochitest/code_location-changes.js => devtools/client/debugger/test/mochitest/code_location-changes.js rename : browser/devtools/debugger/test/mochitest/code_math.js => devtools/client/debugger/test/mochitest/code_math.js rename : browser/devtools/debugger/test/mochitest/code_math.map => devtools/client/debugger/test/mochitest/code_math.map rename : browser/devtools/debugger/test/mochitest/code_math.min.js => devtools/client/debugger/test/mochitest/code_math.min.js rename : browser/devtools/debugger/test/mochitest/code_math_bogus_map.js => devtools/client/debugger/test/mochitest/code_math_bogus_map.js rename : browser/devtools/debugger/test/mochitest/code_same-line-functions.js => devtools/client/debugger/test/mochitest/code_same-line-functions.js rename : browser/devtools/debugger/test/mochitest/code_script-eval.js => devtools/client/debugger/test/mochitest/code_script-eval.js rename : browser/devtools/debugger/test/mochitest/code_script-switching-01.js => devtools/client/debugger/test/mochitest/code_script-switching-01.js rename : browser/devtools/debugger/test/mochitest/code_script-switching-02.js => devtools/client/debugger/test/mochitest/code_script-switching-02.js rename : browser/devtools/debugger/test/mochitest/code_test-editor-mode => devtools/client/debugger/test/mochitest/code_test-editor-mode rename : browser/devtools/debugger/test/mochitest/code_ugly-2.js => devtools/client/debugger/test/mochitest/code_ugly-2.js rename : browser/devtools/debugger/test/mochitest/code_ugly-3.js => devtools/client/debugger/test/mochitest/code_ugly-3.js rename : browser/devtools/debugger/test/mochitest/code_ugly-4.js => devtools/client/debugger/test/mochitest/code_ugly-4.js rename : browser/devtools/debugger/test/mochitest/code_ugly-5.js => devtools/client/debugger/test/mochitest/code_ugly-5.js rename : browser/devtools/debugger/test/mochitest/code_ugly-6.js => devtools/client/debugger/test/mochitest/code_ugly-6.js rename : browser/devtools/debugger/test/mochitest/code_ugly-7.js => devtools/client/debugger/test/mochitest/code_ugly-7.js rename : browser/devtools/debugger/test/mochitest/code_ugly-8 => devtools/client/debugger/test/mochitest/code_ugly-8 rename : browser/devtools/debugger/test/mochitest/code_ugly-8^headers^ => devtools/client/debugger/test/mochitest/code_ugly-8^headers^ rename : browser/devtools/debugger/test/mochitest/code_ugly.js => devtools/client/debugger/test/mochitest/code_ugly.js rename : browser/devtools/debugger/test/mochitest/code_workeractor-worker.js => devtools/client/debugger/test/mochitest/code_workeractor-worker.js rename : browser/devtools/debugger/test/mochitest/doc_WorkerActor.attach-tab1.html => devtools/client/debugger/test/mochitest/doc_WorkerActor.attach-tab1.html rename : browser/devtools/debugger/test/mochitest/doc_WorkerActor.attach-tab2.html => devtools/client/debugger/test/mochitest/doc_WorkerActor.attach-tab2.html rename : browser/devtools/debugger/test/mochitest/doc_WorkerActor.attachThread-tab.html => devtools/client/debugger/test/mochitest/doc_WorkerActor.attachThread-tab.html rename : browser/devtools/debugger/test/mochitest/doc_auto-pretty-print-01.html => devtools/client/debugger/test/mochitest/doc_auto-pretty-print-01.html rename : browser/devtools/debugger/test/mochitest/doc_auto-pretty-print-02.html => devtools/client/debugger/test/mochitest/doc_auto-pretty-print-02.html rename : browser/devtools/debugger/test/mochitest/doc_binary_search.html => devtools/client/debugger/test/mochitest/doc_binary_search.html rename : browser/devtools/debugger/test/mochitest/doc_blackboxing.html => devtools/client/debugger/test/mochitest/doc_blackboxing.html rename : browser/devtools/debugger/test/mochitest/doc_breakpoint-move.html => devtools/client/debugger/test/mochitest/doc_breakpoint-move.html rename : browser/devtools/debugger/test/mochitest/doc_breakpoints-break-on-last-line-of-script-on-reload.html => devtools/client/debugger/test/mochitest/doc_breakpoints-break-on-last-line-of-script-on-reload.html rename : browser/devtools/debugger/test/mochitest/doc_breakpoints-other-tabs.html => devtools/client/debugger/test/mochitest/doc_breakpoints-other-tabs.html rename : browser/devtools/debugger/test/mochitest/doc_breakpoints-reload.html => devtools/client/debugger/test/mochitest/doc_breakpoints-reload.html rename : browser/devtools/debugger/test/mochitest/doc_bug-896139.html => devtools/client/debugger/test/mochitest/doc_bug-896139.html rename : browser/devtools/debugger/test/mochitest/doc_closure-optimized-out.html => devtools/client/debugger/test/mochitest/doc_closure-optimized-out.html rename : browser/devtools/debugger/test/mochitest/doc_closures.html => devtools/client/debugger/test/mochitest/doc_closures.html rename : browser/devtools/debugger/test/mochitest/doc_cmd-break.html => devtools/client/debugger/test/mochitest/doc_cmd-break.html rename : browser/devtools/debugger/test/mochitest/doc_cmd-dbg.html => devtools/client/debugger/test/mochitest/doc_cmd-dbg.html rename : browser/devtools/debugger/test/mochitest/doc_conditional-breakpoints.html => devtools/client/debugger/test/mochitest/doc_conditional-breakpoints.html rename : browser/devtools/debugger/test/mochitest/doc_domnode-variables.html => devtools/client/debugger/test/mochitest/doc_domnode-variables.html rename : browser/devtools/debugger/test/mochitest/doc_editor-mode.html => devtools/client/debugger/test/mochitest/doc_editor-mode.html rename : browser/devtools/debugger/test/mochitest/doc_empty-tab-01.html => devtools/client/debugger/test/mochitest/doc_empty-tab-01.html rename : browser/devtools/debugger/test/mochitest/doc_empty-tab-02.html => devtools/client/debugger/test/mochitest/doc_empty-tab-02.html rename : browser/devtools/debugger/test/mochitest/doc_event-listeners-01.html => devtools/client/debugger/test/mochitest/doc_event-listeners-01.html rename : browser/devtools/debugger/test/mochitest/doc_event-listeners-02.html => devtools/client/debugger/test/mochitest/doc_event-listeners-02.html rename : browser/devtools/debugger/test/mochitest/doc_event-listeners-03.html => devtools/client/debugger/test/mochitest/doc_event-listeners-03.html rename : browser/devtools/debugger/test/mochitest/doc_event-listeners-04.html => devtools/client/debugger/test/mochitest/doc_event-listeners-04.html rename : browser/devtools/debugger/test/mochitest/doc_frame-parameters.html => devtools/client/debugger/test/mochitest/doc_frame-parameters.html rename : browser/devtools/debugger/test/mochitest/doc_function-display-name.html => devtools/client/debugger/test/mochitest/doc_function-display-name.html rename : browser/devtools/debugger/test/mochitest/doc_function-search.html => devtools/client/debugger/test/mochitest/doc_function-search.html rename : browser/devtools/debugger/test/mochitest/doc_global-method-override.html => devtools/client/debugger/test/mochitest/doc_global-method-override.html rename : browser/devtools/debugger/test/mochitest/doc_iframes.html => devtools/client/debugger/test/mochitest/doc_iframes.html rename : browser/devtools/debugger/test/mochitest/doc_included-script.html => devtools/client/debugger/test/mochitest/doc_included-script.html rename : browser/devtools/debugger/test/mochitest/doc_inline-debugger-statement.html => devtools/client/debugger/test/mochitest/doc_inline-debugger-statement.html rename : browser/devtools/debugger/test/mochitest/doc_inline-script.html => devtools/client/debugger/test/mochitest/doc_inline-script.html rename : browser/devtools/debugger/test/mochitest/doc_large-array-buffer.html => devtools/client/debugger/test/mochitest/doc_large-array-buffer.html rename : browser/devtools/debugger/test/mochitest/doc_listworkers-tab.html => devtools/client/debugger/test/mochitest/doc_listworkers-tab.html rename : browser/devtools/debugger/test/mochitest/doc_minified.html => devtools/client/debugger/test/mochitest/doc_minified.html rename : browser/devtools/debugger/test/mochitest/doc_minified_bogus_map.html => devtools/client/debugger/test/mochitest/doc_minified_bogus_map.html rename : browser/devtools/debugger/test/mochitest/doc_native-event-handler.html => devtools/client/debugger/test/mochitest/doc_native-event-handler.html rename : browser/devtools/debugger/test/mochitest/doc_no-page-sources.html => devtools/client/debugger/test/mochitest/doc_no-page-sources.html rename : browser/devtools/debugger/test/mochitest/doc_pause-exceptions.html => devtools/client/debugger/test/mochitest/doc_pause-exceptions.html rename : browser/devtools/debugger/test/mochitest/doc_pretty-print-2.html => devtools/client/debugger/test/mochitest/doc_pretty-print-2.html rename : browser/devtools/debugger/test/mochitest/doc_pretty-print-3.html => devtools/client/debugger/test/mochitest/doc_pretty-print-3.html rename : browser/devtools/debugger/test/mochitest/doc_pretty-print-on-paused.html => devtools/client/debugger/test/mochitest/doc_pretty-print-on-paused.html rename : browser/devtools/debugger/test/mochitest/doc_pretty-print.html => devtools/client/debugger/test/mochitest/doc_pretty-print.html rename : browser/devtools/debugger/test/mochitest/doc_promise-get-allocation-stack.html => devtools/client/debugger/test/mochitest/doc_promise-get-allocation-stack.html rename : browser/devtools/debugger/test/mochitest/doc_promise-get-fulfillment-stack.html => devtools/client/debugger/test/mochitest/doc_promise-get-fulfillment-stack.html rename : browser/devtools/debugger/test/mochitest/doc_promise-get-rejection-stack.html => devtools/client/debugger/test/mochitest/doc_promise-get-rejection-stack.html rename : browser/devtools/debugger/test/mochitest/doc_promise.html => devtools/client/debugger/test/mochitest/doc_promise.html rename : browser/devtools/debugger/test/mochitest/doc_random-javascript.html => devtools/client/debugger/test/mochitest/doc_random-javascript.html rename : browser/devtools/debugger/test/mochitest/doc_recursion-stack.html => devtools/client/debugger/test/mochitest/doc_recursion-stack.html rename : browser/devtools/debugger/test/mochitest/doc_scope-variable-2.html => devtools/client/debugger/test/mochitest/doc_scope-variable-2.html rename : browser/devtools/debugger/test/mochitest/doc_scope-variable-3.html => devtools/client/debugger/test/mochitest/doc_scope-variable-3.html rename : browser/devtools/debugger/test/mochitest/doc_scope-variable-4.html => devtools/client/debugger/test/mochitest/doc_scope-variable-4.html rename : browser/devtools/debugger/test/mochitest/doc_scope-variable.html => devtools/client/debugger/test/mochitest/doc_scope-variable.html rename : browser/devtools/debugger/test/mochitest/doc_script-bookmarklet.html => devtools/client/debugger/test/mochitest/doc_script-bookmarklet.html rename : browser/devtools/debugger/test/mochitest/doc_script-eval.html => devtools/client/debugger/test/mochitest/doc_script-eval.html rename : browser/devtools/debugger/test/mochitest/doc_script-switching-01.html => devtools/client/debugger/test/mochitest/doc_script-switching-01.html rename : browser/devtools/debugger/test/mochitest/doc_script-switching-02.html => devtools/client/debugger/test/mochitest/doc_script-switching-02.html rename : browser/devtools/debugger/test/mochitest/doc_split-console-paused-reload.html => devtools/client/debugger/test/mochitest/doc_split-console-paused-reload.html rename : browser/devtools/debugger/test/mochitest/doc_step-out.html => devtools/client/debugger/test/mochitest/doc_step-out.html rename : browser/devtools/debugger/test/mochitest/doc_terminate-on-tab-close.html => devtools/client/debugger/test/mochitest/doc_terminate-on-tab-close.html rename : browser/devtools/debugger/test/mochitest/doc_watch-expression-button.html => devtools/client/debugger/test/mochitest/doc_watch-expression-button.html rename : browser/devtools/debugger/test/mochitest/doc_watch-expressions.html => devtools/client/debugger/test/mochitest/doc_watch-expressions.html rename : browser/devtools/debugger/test/mochitest/doc_with-frame.html => devtools/client/debugger/test/mochitest/doc_with-frame.html rename : browser/devtools/debugger/test/mochitest/head.js => devtools/client/debugger/test/mochitest/head.js rename : browser/devtools/debugger/test/mochitest/sjs_random-javascript.sjs => devtools/client/debugger/test/mochitest/sjs_random-javascript.sjs rename : browser/devtools/debugger/test/mochitest/testactors.js => devtools/client/debugger/test/mochitest/testactors.js rename : browser/devtools/debugger/utils.js => devtools/client/debugger/utils.js rename : browser/devtools/debugger/views/filter-view.js => devtools/client/debugger/views/filter-view.js rename : browser/devtools/debugger/views/global-search-view.js => devtools/client/debugger/views/global-search-view.js rename : browser/devtools/debugger/views/options-view.js => devtools/client/debugger/views/options-view.js rename : browser/devtools/debugger/views/sources-view.js => devtools/client/debugger/views/sources-view.js rename : browser/devtools/debugger/views/stack-frames-classic-view.js => devtools/client/debugger/views/stack-frames-classic-view.js rename : browser/devtools/debugger/views/stack-frames-view.js => devtools/client/debugger/views/stack-frames-view.js rename : browser/devtools/debugger/views/toolbar-view.js => devtools/client/debugger/views/toolbar-view.js rename : browser/devtools/debugger/views/variable-bubble-view.js => devtools/client/debugger/views/variable-bubble-view.js rename : browser/devtools/debugger/views/watch-expressions-view.js => devtools/client/debugger/views/watch-expressions-view.js rename : browser/devtools/debugger/views/workers-view.js => devtools/client/debugger/views/workers-view.js rename : browser/devtools/definitions.js => devtools/client/definitions.js rename : browser/devtools/devtools-clhandler.js => devtools/client/devtools-clhandler.js rename : browser/devtools/devtools-clhandler.manifest => devtools/client/devtools-clhandler.manifest rename : browser/devtools/eyedropper/commands.js => devtools/client/eyedropper/commands.js rename : browser/devtools/eyedropper/crosshairs.css => devtools/client/eyedropper/crosshairs.css rename : browser/devtools/eyedropper/eyedropper-child.js => devtools/client/eyedropper/eyedropper-child.js rename : browser/devtools/eyedropper/eyedropper.js => devtools/client/eyedropper/eyedropper.js rename : browser/devtools/eyedropper/eyedropper.xul => devtools/client/eyedropper/eyedropper.xul rename : browser/devtools/eyedropper/moz.build => devtools/client/eyedropper/moz.build rename : browser/devtools/eyedropper/nocursor.css => devtools/client/eyedropper/nocursor.css rename : browser/devtools/eyedropper/test/.eslintrc => devtools/client/eyedropper/test/.eslintrc rename : browser/devtools/eyedropper/test/browser.ini => devtools/client/eyedropper/test/browser.ini rename : browser/devtools/eyedropper/test/browser_eyedropper_basic.js => devtools/client/eyedropper/test/browser_eyedropper_basic.js rename : browser/devtools/eyedropper/test/browser_eyedropper_cmd.js => devtools/client/eyedropper/test/browser_eyedropper_cmd.js rename : browser/devtools/eyedropper/test/color-block.html => devtools/client/eyedropper/test/color-block.html rename : browser/devtools/eyedropper/test/head.js => devtools/client/eyedropper/test/head.js rename : browser/devtools/fontinspector/font-inspector.css => devtools/client/fontinspector/font-inspector.css rename : browser/devtools/fontinspector/font-inspector.js => devtools/client/fontinspector/font-inspector.js rename : browser/devtools/fontinspector/font-inspector.xhtml => devtools/client/fontinspector/font-inspector.xhtml rename : browser/devtools/fontinspector/moz.build => devtools/client/fontinspector/moz.build rename : browser/devtools/fontinspector/test/.eslintrc => devtools/client/fontinspector/test/.eslintrc rename : browser/devtools/fontinspector/test/OstrichLicense.txt => devtools/client/fontinspector/test/OstrichLicense.txt rename : browser/devtools/fontinspector/test/browser.ini => devtools/client/fontinspector/test/browser.ini rename : browser/devtools/fontinspector/test/browser_fontinspector.html => devtools/client/fontinspector/test/browser_fontinspector.html rename : browser/devtools/fontinspector/test/browser_fontinspector.js => devtools/client/fontinspector/test/browser_fontinspector.js rename : browser/devtools/fontinspector/test/browser_fontinspector_edit-previews-show-all.js => devtools/client/fontinspector/test/browser_fontinspector_edit-previews-show-all.js rename : browser/devtools/fontinspector/test/browser_fontinspector_edit-previews.js => devtools/client/fontinspector/test/browser_fontinspector_edit-previews.js rename : browser/devtools/fontinspector/test/browser_fontinspector_theme-change.js => devtools/client/fontinspector/test/browser_fontinspector_theme-change.js rename : browser/devtools/fontinspector/test/head.js => devtools/client/fontinspector/test/head.js rename : browser/devtools/fontinspector/test/ostrich-black.ttf => devtools/client/fontinspector/test/ostrich-black.ttf rename : browser/devtools/fontinspector/test/ostrich-regular.ttf => devtools/client/fontinspector/test/ostrich-regular.ttf rename : browser/devtools/fontinspector/test/test_iframe.html => devtools/client/fontinspector/test/test_iframe.html rename : browser/devtools/framework/ToolboxProcess.jsm => devtools/client/framework/ToolboxProcess.jsm rename : browser/devtools/framework/connect/connect.css => devtools/client/framework/connect/connect.css rename : browser/devtools/framework/connect/connect.js => devtools/client/framework/connect/connect.js rename : browser/devtools/framework/connect/connect.xhtml => devtools/client/framework/connect/connect.xhtml rename : browser/devtools/framework/dev-edition-promo/dev-edition-logo.png => devtools/client/framework/dev-edition-promo/dev-edition-logo.png rename : browser/devtools/framework/dev-edition-promo/dev-edition-promo.css => devtools/client/framework/dev-edition-promo/dev-edition-promo.css rename : browser/devtools/framework/dev-edition-promo/dev-edition-promo.xul => devtools/client/framework/dev-edition-promo/dev-edition-promo.xul rename : browser/devtools/framework/gDevTools.jsm => devtools/client/framework/gDevTools.jsm rename : browser/devtools/framework/moz.build => devtools/client/framework/moz.build rename : browser/devtools/framework/options-panel.css => devtools/client/framework/options-panel.css rename : browser/devtools/framework/selection.js => devtools/client/framework/selection.js rename : browser/devtools/framework/sidebar.js => devtools/client/framework/sidebar.js rename : browser/devtools/framework/target.js => devtools/client/framework/target.js rename : browser/devtools/framework/test/.eslintrc => devtools/client/framework/test/.eslintrc rename : browser/devtools/framework/test/browser.ini => devtools/client/framework/test/browser.ini rename : browser/devtools/framework/test/browser_devtools_api.js => devtools/client/framework/test/browser_devtools_api.js rename : browser/devtools/framework/test/browser_devtools_api_destroy.js => devtools/client/framework/test/browser_devtools_api_destroy.js rename : browser/devtools/framework/test/browser_dynamic_tool_enabling.js => devtools/client/framework/test/browser_dynamic_tool_enabling.js rename : browser/devtools/framework/test/browser_ignore_toolbox_network_requests.js => devtools/client/framework/test/browser_ignore_toolbox_network_requests.js rename : browser/devtools/framework/test/browser_keybindings_01.js => devtools/client/framework/test/browser_keybindings_01.js rename : browser/devtools/framework/test/browser_keybindings_02.js => devtools/client/framework/test/browser_keybindings_02.js rename : browser/devtools/framework/test/browser_keybindings_03.js => devtools/client/framework/test/browser_keybindings_03.js rename : browser/devtools/framework/test/browser_new_activation_workflow.js => devtools/client/framework/test/browser_new_activation_workflow.js rename : browser/devtools/framework/test/browser_target_events.js => devtools/client/framework/test/browser_target_events.js rename : browser/devtools/framework/test/browser_target_remote.js => devtools/client/framework/test/browser_target_remote.js rename : browser/devtools/framework/test/browser_target_support.js => devtools/client/framework/test/browser_target_support.js rename : browser/devtools/framework/test/browser_toolbox_custom_host.js => devtools/client/framework/test/browser_toolbox_custom_host.js rename : browser/devtools/framework/test/browser_toolbox_dynamic_registration.js => devtools/client/framework/test/browser_toolbox_dynamic_registration.js rename : browser/devtools/framework/test/browser_toolbox_getpanelwhenready.js => devtools/client/framework/test/browser_toolbox_getpanelwhenready.js rename : browser/devtools/framework/test/browser_toolbox_highlight.js => devtools/client/framework/test/browser_toolbox_highlight.js rename : browser/devtools/framework/test/browser_toolbox_hosts.js => devtools/client/framework/test/browser_toolbox_hosts.js rename : browser/devtools/framework/test/browser_toolbox_hosts_size.js => devtools/client/framework/test/browser_toolbox_hosts_size.js rename : browser/devtools/framework/test/browser_toolbox_minimize.js => devtools/client/framework/test/browser_toolbox_minimize.js rename : browser/devtools/framework/test/browser_toolbox_options.js => devtools/client/framework/test/browser_toolbox_options.js rename : browser/devtools/framework/test/browser_toolbox_options_disable_buttons.js => devtools/client/framework/test/browser_toolbox_options_disable_buttons.js rename : browser/devtools/framework/test/browser_toolbox_options_disable_cache-01.js => devtools/client/framework/test/browser_toolbox_options_disable_cache-01.js rename : browser/devtools/framework/test/browser_toolbox_options_disable_cache-02.js => devtools/client/framework/test/browser_toolbox_options_disable_cache-02.js rename : browser/devtools/framework/test/browser_toolbox_options_disable_cache.sjs => devtools/client/framework/test/browser_toolbox_options_disable_cache.sjs rename : browser/devtools/framework/test/browser_toolbox_options_disable_js.html => devtools/client/framework/test/browser_toolbox_options_disable_js.html rename : browser/devtools/framework/test/browser_toolbox_options_disable_js.js => devtools/client/framework/test/browser_toolbox_options_disable_js.js rename : browser/devtools/framework/test/browser_toolbox_options_disable_js_iframe.html => devtools/client/framework/test/browser_toolbox_options_disable_js_iframe.html rename : browser/devtools/framework/test/browser_toolbox_options_enable_serviceworkers_testing.html => devtools/client/framework/test/browser_toolbox_options_enable_serviceworkers_testing.html rename : browser/devtools/framework/test/browser_toolbox_options_enable_serviceworkers_testing.js => devtools/client/framework/test/browser_toolbox_options_enable_serviceworkers_testing.js rename : browser/devtools/framework/test/browser_toolbox_options_enable_serviceworkers_testing_frame_script.js => devtools/client/framework/test/browser_toolbox_options_enable_serviceworkers_testing_frame_script.js rename : browser/devtools/framework/test/browser_toolbox_raise.js => devtools/client/framework/test/browser_toolbox_raise.js rename : browser/devtools/framework/test/browser_toolbox_ready.js => devtools/client/framework/test/browser_toolbox_ready.js rename : browser/devtools/framework/test/browser_toolbox_select_event.js => devtools/client/framework/test/browser_toolbox_select_event.js rename : browser/devtools/framework/test/browser_toolbox_selected_tool_unavailable.js => devtools/client/framework/test/browser_toolbox_selected_tool_unavailable.js rename : browser/devtools/framework/test/browser_toolbox_sidebar.js => devtools/client/framework/test/browser_toolbox_sidebar.js rename : browser/devtools/framework/test/browser_toolbox_sidebar_events.js => devtools/client/framework/test/browser_toolbox_sidebar_events.js rename : browser/devtools/framework/test/browser_toolbox_sidebar_existing_tabs.js => devtools/client/framework/test/browser_toolbox_sidebar_existing_tabs.js rename : browser/devtools/framework/test/browser_toolbox_sidebar_overflow_menu.js => devtools/client/framework/test/browser_toolbox_sidebar_overflow_menu.js rename : browser/devtools/framework/test/browser_toolbox_sidebar_tool.xul => devtools/client/framework/test/browser_toolbox_sidebar_tool.xul rename : browser/devtools/framework/test/browser_toolbox_tabsswitch_shortcuts.js => devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js rename : browser/devtools/framework/test/browser_toolbox_textbox_context_menu.js => devtools/client/framework/test/browser_toolbox_textbox_context_menu.js rename : browser/devtools/framework/test/browser_toolbox_theme_registration.js => devtools/client/framework/test/browser_toolbox_theme_registration.js rename : browser/devtools/framework/test/browser_toolbox_toggle.js => devtools/client/framework/test/browser_toolbox_toggle.js rename : browser/devtools/framework/test/browser_toolbox_tool_ready.js => devtools/client/framework/test/browser_toolbox_tool_ready.js rename : browser/devtools/framework/test/browser_toolbox_tool_remote_reopen.js => devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js rename : browser/devtools/framework/test/browser_toolbox_transport_events.js => devtools/client/framework/test/browser_toolbox_transport_events.js rename : browser/devtools/framework/test/browser_toolbox_view_source_01.js => devtools/client/framework/test/browser_toolbox_view_source_01.js rename : browser/devtools/framework/test/browser_toolbox_view_source_02.js => devtools/client/framework/test/browser_toolbox_view_source_02.js rename : browser/devtools/framework/test/browser_toolbox_view_source_03.js => devtools/client/framework/test/browser_toolbox_view_source_03.js rename : browser/devtools/framework/test/browser_toolbox_view_source_04.js => devtools/client/framework/test/browser_toolbox_view_source_04.js rename : browser/devtools/framework/test/browser_toolbox_window_reload_target.js => devtools/client/framework/test/browser_toolbox_window_reload_target.js rename : browser/devtools/framework/test/browser_toolbox_window_shortcuts.js => devtools/client/framework/test/browser_toolbox_window_shortcuts.js rename : browser/devtools/framework/test/browser_toolbox_window_title_changes.js => devtools/client/framework/test/browser_toolbox_window_title_changes.js rename : browser/devtools/framework/test/browser_toolbox_zoom.js => devtools/client/framework/test/browser_toolbox_zoom.js rename : browser/devtools/framework/test/browser_two_tabs.js => devtools/client/framework/test/browser_two_tabs.js rename : browser/devtools/framework/test/code_math.js => devtools/client/framework/test/code_math.js rename : browser/devtools/framework/test/doc_theme.css => devtools/client/framework/test/doc_theme.css rename : browser/devtools/framework/test/doc_viewsource.html => devtools/client/framework/test/doc_viewsource.html rename : browser/devtools/framework/test/head.js => devtools/client/framework/test/head.js rename : browser/devtools/framework/test/helper_disable_cache.js => devtools/client/framework/test/helper_disable_cache.js rename : browser/devtools/framework/test/serviceworker.js => devtools/client/framework/test/serviceworker.js rename : browser/devtools/framework/test/shared-head.js => devtools/client/framework/test/shared-head.js rename : browser/devtools/framework/toolbox-highlighter-utils.js => devtools/client/framework/toolbox-highlighter-utils.js rename : browser/devtools/framework/toolbox-hosts.js => devtools/client/framework/toolbox-hosts.js rename : browser/devtools/framework/toolbox-options.js => devtools/client/framework/toolbox-options.js rename : browser/devtools/framework/toolbox-options.xul => devtools/client/framework/toolbox-options.xul rename : browser/devtools/framework/toolbox-process-window.js => devtools/client/framework/toolbox-process-window.js rename : browser/devtools/framework/toolbox-process-window.xul => devtools/client/framework/toolbox-process-window.xul rename : browser/devtools/framework/toolbox-window.xul => devtools/client/framework/toolbox-window.xul rename : browser/devtools/framework/toolbox.js => devtools/client/framework/toolbox.js rename : browser/devtools/framework/toolbox.xul => devtools/client/framework/toolbox.xul rename : browser/devtools/inspector/breadcrumbs.js => devtools/client/inspector/breadcrumbs.js rename : browser/devtools/inspector/inspector-commands.js => devtools/client/inspector/inspector-commands.js rename : browser/devtools/inspector/inspector-panel.js => devtools/client/inspector/inspector-panel.js rename : browser/devtools/inspector/inspector.css => devtools/client/inspector/inspector.css rename : browser/devtools/inspector/inspector.xul => devtools/client/inspector/inspector.xul rename : browser/devtools/inspector/moz.build => devtools/client/inspector/moz.build rename : browser/devtools/inspector/selector-search.js => devtools/client/inspector/selector-search.js rename : browser/devtools/inspector/test/.eslintrc => devtools/client/inspector/test/.eslintrc rename : browser/devtools/inspector/test/browser.ini => devtools/client/inspector/test/browser.ini rename : browser/devtools/inspector/test/browser_inspector_breadcrumbs.js => devtools/client/inspector/test/browser_inspector_breadcrumbs.js rename : browser/devtools/inspector/test/browser_inspector_breadcrumbs_highlight_hover.js => devtools/client/inspector/test/browser_inspector_breadcrumbs_highlight_hover.js rename : browser/devtools/inspector/test/browser_inspector_breadcrumbs_keybinding.js => devtools/client/inspector/test/browser_inspector_breadcrumbs_keybinding.js rename : browser/devtools/inspector/test/browser_inspector_breadcrumbs_menu.js => devtools/client/inspector/test/browser_inspector_breadcrumbs_menu.js rename : browser/devtools/inspector/test/browser_inspector_breadcrumbs_mutations.js => devtools/client/inspector/test/browser_inspector_breadcrumbs_mutations.js rename : browser/devtools/inspector/test/browser_inspector_delete-selected-node-01.js => devtools/client/inspector/test/browser_inspector_delete-selected-node-01.js rename : browser/devtools/inspector/test/browser_inspector_delete-selected-node-02.js => devtools/client/inspector/test/browser_inspector_delete-selected-node-02.js rename : browser/devtools/inspector/test/browser_inspector_delete-selected-node-03.js => devtools/client/inspector/test/browser_inspector_delete-selected-node-03.js rename : browser/devtools/inspector/test/browser_inspector_destroy-after-navigation.js => devtools/client/inspector/test/browser_inspector_destroy-after-navigation.js rename : browser/devtools/inspector/test/browser_inspector_destroy-before-ready.js => devtools/client/inspector/test/browser_inspector_destroy-before-ready.js rename : browser/devtools/inspector/test/browser_inspector_gcli-inspect-command.js => devtools/client/inspector/test/browser_inspector_gcli-inspect-command.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-01.js => devtools/client/inspector/test/browser_inspector_highlighter-01.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-02.js => devtools/client/inspector/test/browser_inspector_highlighter-02.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-03.js => devtools/client/inspector/test/browser_inspector_highlighter-03.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-04.js => devtools/client/inspector/test/browser_inspector_highlighter-04.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-by-type.js => devtools/client/inspector/test/browser_inspector_highlighter-by-type.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-comments.js => devtools/client/inspector/test/browser_inspector_highlighter-comments.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-csstransform_01.js => devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-csstransform_02.js => devtools/client/inspector/test/browser_inspector_highlighter-csstransform_02.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-geometry_01.js => devtools/client/inspector/test/browser_inspector_highlighter-geometry_01.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-geometry_02.js => devtools/client/inspector/test/browser_inspector_highlighter-geometry_02.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-geometry_03.js => devtools/client/inspector/test/browser_inspector_highlighter-geometry_03.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-geometry_04.js => devtools/client/inspector/test/browser_inspector_highlighter-geometry_04.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-geometry_05.js => devtools/client/inspector/test/browser_inspector_highlighter-geometry_05.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-hover_01.js => devtools/client/inspector/test/browser_inspector_highlighter-hover_01.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-hover_02.js => devtools/client/inspector/test/browser_inspector_highlighter-hover_02.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-hover_03.js => devtools/client/inspector/test/browser_inspector_highlighter-hover_03.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-iframes.js => devtools/client/inspector/test/browser_inspector_highlighter-iframes.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-inline.js => devtools/client/inspector/test/browser_inspector_highlighter-inline.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-keybinding_01.js => devtools/client/inspector/test/browser_inspector_highlighter-keybinding_01.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-keybinding_02.js => devtools/client/inspector/test/browser_inspector_highlighter-keybinding_02.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-keybinding_03.js => devtools/client/inspector/test/browser_inspector_highlighter-keybinding_03.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-keybinding_04.js => devtools/client/inspector/test/browser_inspector_highlighter-keybinding_04.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-options.js => devtools/client/inspector/test/browser_inspector_highlighter-options.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-rect_01.js => devtools/client/inspector/test/browser_inspector_highlighter-rect_01.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-rect_02.js => devtools/client/inspector/test/browser_inspector_highlighter-rect_02.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-rulers_01.js => devtools/client/inspector/test/browser_inspector_highlighter-rulers_01.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-rulers_02.js => devtools/client/inspector/test/browser_inspector_highlighter-rulers_02.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-selector_01.js => devtools/client/inspector/test/browser_inspector_highlighter-selector_01.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-selector_02.js => devtools/client/inspector/test/browser_inspector_highlighter-selector_02.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-xbl.js => devtools/client/inspector/test/browser_inspector_highlighter-xbl.js rename : browser/devtools/inspector/test/browser_inspector_highlighter-zoom.js => devtools/client/inspector/test/browser_inspector_highlighter-zoom.js rename : browser/devtools/inspector/test/browser_inspector_iframe-navigation.js => devtools/client/inspector/test/browser_inspector_iframe-navigation.js rename : browser/devtools/inspector/test/browser_inspector_infobar_01.js => devtools/client/inspector/test/browser_inspector_infobar_01.js rename : browser/devtools/inspector/test/browser_inspector_initialization.js => devtools/client/inspector/test/browser_inspector_initialization.js rename : browser/devtools/inspector/test/browser_inspector_inspect-object-element.js => devtools/client/inspector/test/browser_inspector_inspect-object-element.js rename : browser/devtools/inspector/test/browser_inspector_invalidate.js => devtools/client/inspector/test/browser_inspector_invalidate.js rename : browser/devtools/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js => devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js rename : browser/devtools/inspector/test/browser_inspector_keyboard-shortcuts.js => devtools/client/inspector/test/browser_inspector_keyboard-shortcuts.js rename : browser/devtools/inspector/test/browser_inspector_menu-01-sensitivity.js => devtools/client/inspector/test/browser_inspector_menu-01-sensitivity.js rename : browser/devtools/inspector/test/browser_inspector_menu-02-copy-items.js => devtools/client/inspector/test/browser_inspector_menu-02-copy-items.js rename : browser/devtools/inspector/test/browser_inspector_menu-03-paste-items.js => devtools/client/inspector/test/browser_inspector_menu-03-paste-items.js rename : browser/devtools/inspector/test/browser_inspector_menu-04-use-in-console.js => devtools/client/inspector/test/browser_inspector_menu-04-use-in-console.js rename : browser/devtools/inspector/test/browser_inspector_menu-05-other.js => devtools/client/inspector/test/browser_inspector_menu-05-other.js rename : browser/devtools/inspector/test/browser_inspector_navigation.js => devtools/client/inspector/test/browser_inspector_navigation.js rename : browser/devtools/inspector/test/browser_inspector_pane-toggle-01.js => devtools/client/inspector/test/browser_inspector_pane-toggle-01.js rename : browser/devtools/inspector/test/browser_inspector_pane-toggle-02.js => devtools/client/inspector/test/browser_inspector_pane-toggle-02.js rename : browser/devtools/inspector/test/browser_inspector_pane-toggle-03.js => devtools/client/inspector/test/browser_inspector_pane-toggle-03.js rename : browser/devtools/inspector/test/browser_inspector_picker-stop-on-destroy.js => devtools/client/inspector/test/browser_inspector_picker-stop-on-destroy.js rename : browser/devtools/inspector/test/browser_inspector_picker-stop-on-tool-change.js => devtools/client/inspector/test/browser_inspector_picker-stop-on-tool-change.js rename : browser/devtools/inspector/test/browser_inspector_pseudoclass-lock.js => devtools/client/inspector/test/browser_inspector_pseudoclass-lock.js rename : browser/devtools/inspector/test/browser_inspector_pseudoclass-menu.js => devtools/client/inspector/test/browser_inspector_pseudoclass-menu.js rename : browser/devtools/inspector/test/browser_inspector_reload-01.js => devtools/client/inspector/test/browser_inspector_reload-01.js rename : browser/devtools/inspector/test/browser_inspector_reload-02.js => devtools/client/inspector/test/browser_inspector_reload-02.js rename : browser/devtools/inspector/test/browser_inspector_remove-iframe-during-load.js => devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js rename : browser/devtools/inspector/test/browser_inspector_scrolling.js => devtools/client/inspector/test/browser_inspector_scrolling.js rename : browser/devtools/inspector/test/browser_inspector_search-01.js => devtools/client/inspector/test/browser_inspector_search-01.js rename : browser/devtools/inspector/test/browser_inspector_search-02.js => devtools/client/inspector/test/browser_inspector_search-02.js rename : browser/devtools/inspector/test/browser_inspector_search-03.js => devtools/client/inspector/test/browser_inspector_search-03.js rename : browser/devtools/inspector/test/browser_inspector_search-04.js => devtools/client/inspector/test/browser_inspector_search-04.js rename : browser/devtools/inspector/test/browser_inspector_search-05.js => devtools/client/inspector/test/browser_inspector_search-05.js rename : browser/devtools/inspector/test/browser_inspector_search-06.js => devtools/client/inspector/test/browser_inspector_search-06.js rename : browser/devtools/inspector/test/browser_inspector_search-navigation.js => devtools/client/inspector/test/browser_inspector_search-navigation.js rename : browser/devtools/inspector/test/browser_inspector_search-reserved.js => devtools/client/inspector/test/browser_inspector_search-reserved.js rename : browser/devtools/inspector/test/browser_inspector_search-suggests-ids-and-classes.js => devtools/client/inspector/test/browser_inspector_search-suggests-ids-and-classes.js rename : browser/devtools/inspector/test/browser_inspector_select-docshell.js => devtools/client/inspector/test/browser_inspector_select-docshell.js rename : browser/devtools/inspector/test/browser_inspector_select-last-selected.js => devtools/client/inspector/test/browser_inspector_select-last-selected.js rename : browser/devtools/inspector/test/browser_inspector_sidebarstate.js => devtools/client/inspector/test/browser_inspector_sidebarstate.js rename : browser/devtools/inspector/test/browser_inspector_switch-to-inspector-on-pick.js => devtools/client/inspector/test/browser_inspector_switch-to-inspector-on-pick.js rename : browser/devtools/inspector/test/doc_inspector_breadcrumbs.html => devtools/client/inspector/test/doc_inspector_breadcrumbs.html rename : browser/devtools/inspector/test/doc_inspector_delete-selected-node-01.html => devtools/client/inspector/test/doc_inspector_delete-selected-node-01.html rename : browser/devtools/inspector/test/doc_inspector_delete-selected-node-02.html => devtools/client/inspector/test/doc_inspector_delete-selected-node-02.html rename : browser/devtools/inspector/test/doc_inspector_gcli-inspect-command.html => devtools/client/inspector/test/doc_inspector_gcli-inspect-command.html rename : browser/devtools/inspector/test/doc_inspector_highlight_after_transition.html => devtools/client/inspector/test/doc_inspector_highlight_after_transition.html rename : browser/devtools/inspector/test/doc_inspector_highlighter-comments.html => devtools/client/inspector/test/doc_inspector_highlighter-comments.html rename : browser/devtools/inspector/test/doc_inspector_highlighter-geometry_01.html => devtools/client/inspector/test/doc_inspector_highlighter-geometry_01.html rename : browser/devtools/inspector/test/doc_inspector_highlighter-geometry_02.html => devtools/client/inspector/test/doc_inspector_highlighter-geometry_02.html rename : browser/devtools/inspector/test/doc_inspector_highlighter.html => devtools/client/inspector/test/doc_inspector_highlighter.html rename : browser/devtools/inspector/test/doc_inspector_highlighter_csstransform.html => devtools/client/inspector/test/doc_inspector_highlighter_csstransform.html rename : browser/devtools/inspector/test/doc_inspector_highlighter_dom.html => devtools/client/inspector/test/doc_inspector_highlighter_dom.html rename : browser/devtools/inspector/test/doc_inspector_highlighter_inline.html => devtools/client/inspector/test/doc_inspector_highlighter_inline.html rename : browser/devtools/inspector/test/doc_inspector_highlighter_rect.html => devtools/client/inspector/test/doc_inspector_highlighter_rect.html rename : browser/devtools/inspector/test/doc_inspector_highlighter_rect_iframe.html => devtools/client/inspector/test/doc_inspector_highlighter_rect_iframe.html rename : browser/devtools/inspector/test/doc_inspector_highlighter_xbl.xul => devtools/client/inspector/test/doc_inspector_highlighter_xbl.xul rename : browser/devtools/inspector/test/doc_inspector_infobar.html => devtools/client/inspector/test/doc_inspector_infobar.html rename : browser/devtools/inspector/test/doc_inspector_infobar_01.html => devtools/client/inspector/test/doc_inspector_infobar_01.html rename : browser/devtools/inspector/test/doc_inspector_infobar_02.html => devtools/client/inspector/test/doc_inspector_infobar_02.html rename : browser/devtools/inspector/test/doc_inspector_menu.html => devtools/client/inspector/test/doc_inspector_menu.html rename : browser/devtools/inspector/test/doc_inspector_outerhtml.html => devtools/client/inspector/test/doc_inspector_outerhtml.html rename : browser/devtools/inspector/test/doc_inspector_remove-iframe-during-load.html => devtools/client/inspector/test/doc_inspector_remove-iframe-during-load.html rename : browser/devtools/inspector/test/doc_inspector_search-reserved.html => devtools/client/inspector/test/doc_inspector_search-reserved.html rename : browser/devtools/inspector/test/doc_inspector_search-suggestions.html => devtools/client/inspector/test/doc_inspector_search-suggestions.html rename : browser/devtools/inspector/test/doc_inspector_search.html => devtools/client/inspector/test/doc_inspector_search.html rename : browser/devtools/inspector/test/doc_inspector_select-last-selected-01.html => devtools/client/inspector/test/doc_inspector_select-last-selected-01.html rename : browser/devtools/inspector/test/doc_inspector_select-last-selected-02.html => devtools/client/inspector/test/doc_inspector_select-last-selected-02.html rename : browser/devtools/inspector/test/head.js => devtools/client/inspector/test/head.js rename : browser/devtools/jar.mn => devtools/client/jar.mn rename : browser/devtools/layoutview/moz.build => devtools/client/layoutview/moz.build rename : browser/devtools/layoutview/test/.eslintrc => devtools/client/layoutview/test/.eslintrc rename : browser/devtools/layoutview/test/browser.ini => devtools/client/layoutview/test/browser.ini rename : browser/devtools/layoutview/test/browser_layoutview.js => devtools/client/layoutview/test/browser_layoutview.js rename : browser/devtools/layoutview/test/browser_layoutview_editablemodel.js => devtools/client/layoutview/test/browser_layoutview_editablemodel.js rename : browser/devtools/layoutview/test/browser_layoutview_editablemodel_allproperties.js => devtools/client/layoutview/test/browser_layoutview_editablemodel_allproperties.js rename : browser/devtools/layoutview/test/browser_layoutview_editablemodel_border.js => devtools/client/layoutview/test/browser_layoutview_editablemodel_border.js rename : browser/devtools/layoutview/test/browser_layoutview_editablemodel_stylerules.js => devtools/client/layoutview/test/browser_layoutview_editablemodel_stylerules.js rename : browser/devtools/layoutview/test/browser_layoutview_guides.js => devtools/client/layoutview/test/browser_layoutview_guides.js rename : browser/devtools/layoutview/test/browser_layoutview_rotate-labels-on-sides.js => devtools/client/layoutview/test/browser_layoutview_rotate-labels-on-sides.js rename : browser/devtools/layoutview/test/browser_layoutview_tooltips.js => devtools/client/layoutview/test/browser_layoutview_tooltips.js rename : browser/devtools/layoutview/test/browser_layoutview_update-after-navigation.js => devtools/client/layoutview/test/browser_layoutview_update-after-navigation.js rename : browser/devtools/layoutview/test/browser_layoutview_update-after-reload.js => devtools/client/layoutview/test/browser_layoutview_update-after-reload.js rename : browser/devtools/layoutview/test/browser_layoutview_update-in-iframes.js => devtools/client/layoutview/test/browser_layoutview_update-in-iframes.js rename : browser/devtools/layoutview/test/doc_layoutview_iframe1.html => devtools/client/layoutview/test/doc_layoutview_iframe1.html rename : browser/devtools/layoutview/test/doc_layoutview_iframe2.html => devtools/client/layoutview/test/doc_layoutview_iframe2.html rename : browser/devtools/layoutview/test/head.js => devtools/client/layoutview/test/head.js rename : browser/devtools/layoutview/view.js => devtools/client/layoutview/view.js rename : browser/devtools/layoutview/view.xhtml => devtools/client/layoutview/view.xhtml rename : browser/devtools/main.js => devtools/client/main.js rename : browser/devtools/markupview/html-editor.js => devtools/client/markupview/html-editor.js rename : browser/devtools/markupview/markup-view.css => devtools/client/markupview/markup-view.css rename : browser/devtools/markupview/markup-view.js => devtools/client/markupview/markup-view.js rename : browser/devtools/markupview/markup-view.xhtml => devtools/client/markupview/markup-view.xhtml rename : browser/devtools/markupview/moz.build => devtools/client/markupview/moz.build rename : browser/devtools/markupview/test/.eslintrc => devtools/client/markupview/test/.eslintrc rename : browser/devtools/markupview/test/actor_events_form.js => devtools/client/markupview/test/actor_events_form.js rename : browser/devtools/markupview/test/browser.ini => devtools/client/markupview/test/browser.ini rename : browser/devtools/markupview/test/browser_markupview_anonymous_01.js => devtools/client/markupview/test/browser_markupview_anonymous_01.js rename : browser/devtools/markupview/test/browser_markupview_anonymous_02.js => devtools/client/markupview/test/browser_markupview_anonymous_02.js rename : browser/devtools/markupview/test/browser_markupview_anonymous_03.js => devtools/client/markupview/test/browser_markupview_anonymous_03.js rename : browser/devtools/markupview/test/browser_markupview_anonymous_04.js => devtools/client/markupview/test/browser_markupview_anonymous_04.js rename : browser/devtools/markupview/test/browser_markupview_copy_image_data.js => devtools/client/markupview/test/browser_markupview_copy_image_data.js rename : browser/devtools/markupview/test/browser_markupview_css_completion_style_attribute.js => devtools/client/markupview/test/browser_markupview_css_completion_style_attribute.js rename : browser/devtools/markupview/test/browser_markupview_dragdrop_autoscroll.js => devtools/client/markupview/test/browser_markupview_dragdrop_autoscroll.js rename : browser/devtools/markupview/test/browser_markupview_dragdrop_dragRootNode.js => devtools/client/markupview/test/browser_markupview_dragdrop_dragRootNode.js rename : browser/devtools/markupview/test/browser_markupview_dragdrop_escapeKeyPress.js => devtools/client/markupview/test/browser_markupview_dragdrop_escapeKeyPress.js rename : browser/devtools/markupview/test/browser_markupview_dragdrop_invalidNodes.js => devtools/client/markupview/test/browser_markupview_dragdrop_invalidNodes.js rename : browser/devtools/markupview/test/browser_markupview_dragdrop_isDragging.js => devtools/client/markupview/test/browser_markupview_dragdrop_isDragging.js rename : browser/devtools/markupview/test/browser_markupview_dragdrop_reorder.js => devtools/client/markupview/test/browser_markupview_dragdrop_reorder.js rename : browser/devtools/markupview/test/browser_markupview_dragdrop_textSelection.js => devtools/client/markupview/test/browser_markupview_dragdrop_textSelection.js rename : browser/devtools/markupview/test/browser_markupview_events-overflow.js => devtools/client/markupview/test/browser_markupview_events-overflow.js rename : browser/devtools/markupview/test/browser_markupview_events.js => devtools/client/markupview/test/browser_markupview_events.js rename : browser/devtools/markupview/test/browser_markupview_events_form.js => devtools/client/markupview/test/browser_markupview_events_form.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_1.0.js => devtools/client/markupview/test/browser_markupview_events_jquery_1.0.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_1.1.js => devtools/client/markupview/test/browser_markupview_events_jquery_1.1.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_1.11.1.js => devtools/client/markupview/test/browser_markupview_events_jquery_1.11.1.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_1.2.js => devtools/client/markupview/test/browser_markupview_events_jquery_1.2.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_1.3.js => devtools/client/markupview/test/browser_markupview_events_jquery_1.3.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_1.4.js => devtools/client/markupview/test/browser_markupview_events_jquery_1.4.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_1.6.js => devtools/client/markupview/test/browser_markupview_events_jquery_1.6.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_1.7.js => devtools/client/markupview/test/browser_markupview_events_jquery_1.7.js rename : browser/devtools/markupview/test/browser_markupview_events_jquery_2.1.1.js => devtools/client/markupview/test/browser_markupview_events_jquery_2.1.1.js rename : browser/devtools/markupview/test/browser_markupview_html_edit_01.js => devtools/client/markupview/test/browser_markupview_html_edit_01.js rename : browser/devtools/markupview/test/browser_markupview_html_edit_02.js => devtools/client/markupview/test/browser_markupview_html_edit_02.js rename : browser/devtools/markupview/test/browser_markupview_html_edit_03.js => devtools/client/markupview/test/browser_markupview_html_edit_03.js rename : browser/devtools/markupview/test/browser_markupview_image_tooltip.js => devtools/client/markupview/test/browser_markupview_image_tooltip.js rename : browser/devtools/markupview/test/browser_markupview_image_tooltip_mutations.js => devtools/client/markupview/test/browser_markupview_image_tooltip_mutations.js rename : browser/devtools/markupview/test/browser_markupview_keybindings_01.js => devtools/client/markupview/test/browser_markupview_keybindings_01.js rename : browser/devtools/markupview/test/browser_markupview_keybindings_02.js => devtools/client/markupview/test/browser_markupview_keybindings_02.js rename : browser/devtools/markupview/test/browser_markupview_keybindings_03.js => devtools/client/markupview/test/browser_markupview_keybindings_03.js rename : browser/devtools/markupview/test/browser_markupview_keybindings_04.js => devtools/client/markupview/test/browser_markupview_keybindings_04.js rename : browser/devtools/markupview/test/browser_markupview_links_01.js => devtools/client/markupview/test/browser_markupview_links_01.js rename : browser/devtools/markupview/test/browser_markupview_links_02.js => devtools/client/markupview/test/browser_markupview_links_02.js rename : browser/devtools/markupview/test/browser_markupview_links_03.js => devtools/client/markupview/test/browser_markupview_links_03.js rename : browser/devtools/markupview/test/browser_markupview_links_04.js => devtools/client/markupview/test/browser_markupview_links_04.js rename : browser/devtools/markupview/test/browser_markupview_links_05.js => devtools/client/markupview/test/browser_markupview_links_05.js rename : browser/devtools/markupview/test/browser_markupview_links_06.js => devtools/client/markupview/test/browser_markupview_links_06.js rename : browser/devtools/markupview/test/browser_markupview_links_07.js => devtools/client/markupview/test/browser_markupview_links_07.js rename : browser/devtools/markupview/test/browser_markupview_load_01.js => devtools/client/markupview/test/browser_markupview_load_01.js rename : browser/devtools/markupview/test/browser_markupview_mutation_01.js => devtools/client/markupview/test/browser_markupview_mutation_01.js rename : browser/devtools/markupview/test/browser_markupview_mutation_02.js => devtools/client/markupview/test/browser_markupview_mutation_02.js rename : browser/devtools/markupview/test/browser_markupview_navigation.js => devtools/client/markupview/test/browser_markupview_navigation.js rename : browser/devtools/markupview/test/browser_markupview_node_not_displayed_01.js => devtools/client/markupview/test/browser_markupview_node_not_displayed_01.js rename : browser/devtools/markupview/test/browser_markupview_node_not_displayed_02.js => devtools/client/markupview/test/browser_markupview_node_not_displayed_02.js rename : browser/devtools/markupview/test/browser_markupview_pagesize_01.js => devtools/client/markupview/test/browser_markupview_pagesize_01.js rename : browser/devtools/markupview/test/browser_markupview_pagesize_02.js => devtools/client/markupview/test/browser_markupview_pagesize_02.js rename : browser/devtools/markupview/test/browser_markupview_remove_xul_attributes.js => devtools/client/markupview/test/browser_markupview_remove_xul_attributes.js rename : browser/devtools/markupview/test/browser_markupview_search_01.js => devtools/client/markupview/test/browser_markupview_search_01.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_01.js => devtools/client/markupview/test/browser_markupview_tag_edit_01.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_02.js => devtools/client/markupview/test/browser_markupview_tag_edit_02.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_03.js => devtools/client/markupview/test/browser_markupview_tag_edit_03.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_04.js => devtools/client/markupview/test/browser_markupview_tag_edit_04.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_05.js => devtools/client/markupview/test/browser_markupview_tag_edit_05.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_06.js => devtools/client/markupview/test/browser_markupview_tag_edit_06.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_07.js => devtools/client/markupview/test/browser_markupview_tag_edit_07.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_08.js => devtools/client/markupview/test/browser_markupview_tag_edit_08.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_09.js => devtools/client/markupview/test/browser_markupview_tag_edit_09.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_10.js => devtools/client/markupview/test/browser_markupview_tag_edit_10.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_11.js => devtools/client/markupview/test/browser_markupview_tag_edit_11.js rename : browser/devtools/markupview/test/browser_markupview_tag_edit_12.js => devtools/client/markupview/test/browser_markupview_tag_edit_12.js rename : browser/devtools/markupview/test/browser_markupview_textcontent_edit_01.js => devtools/client/markupview/test/browser_markupview_textcontent_edit_01.js rename : browser/devtools/markupview/test/browser_markupview_toggle_01.js => devtools/client/markupview/test/browser_markupview_toggle_01.js rename : browser/devtools/markupview/test/browser_markupview_toggle_02.js => devtools/client/markupview/test/browser_markupview_toggle_02.js rename : browser/devtools/markupview/test/browser_markupview_toggle_03.js => devtools/client/markupview/test/browser_markupview_toggle_03.js rename : browser/devtools/markupview/test/browser_markupview_update-on-navigtion.js => devtools/client/markupview/test/browser_markupview_update-on-navigtion.js rename : browser/devtools/markupview/test/doc_markup_anonymous.html => devtools/client/markupview/test/doc_markup_anonymous.html rename : browser/devtools/markupview/test/doc_markup_dragdrop.html => devtools/client/markupview/test/doc_markup_dragdrop.html rename : browser/devtools/markupview/test/doc_markup_dragdrop_autoscroll.html => devtools/client/markupview/test/doc_markup_dragdrop_autoscroll.html rename : browser/devtools/markupview/test/doc_markup_edit.html => devtools/client/markupview/test/doc_markup_edit.html rename : browser/devtools/markupview/test/doc_markup_events-overflow.html => devtools/client/markupview/test/doc_markup_events-overflow.html rename : browser/devtools/markupview/test/doc_markup_events.html => devtools/client/markupview/test/doc_markup_events.html rename : browser/devtools/markupview/test/doc_markup_events_form.html => devtools/client/markupview/test/doc_markup_events_form.html rename : browser/devtools/markupview/test/doc_markup_events_jquery.html => devtools/client/markupview/test/doc_markup_events_jquery.html rename : browser/devtools/markupview/test/doc_markup_flashing.html => devtools/client/markupview/test/doc_markup_flashing.html rename : browser/devtools/markupview/test/doc_markup_links.html => devtools/client/markupview/test/doc_markup_links.html rename : browser/devtools/markupview/test/doc_markup_mutation.html => devtools/client/markupview/test/doc_markup_mutation.html rename : browser/devtools/markupview/test/doc_markup_navigation.html => devtools/client/markupview/test/doc_markup_navigation.html rename : browser/devtools/markupview/test/doc_markup_not_displayed.html => devtools/client/markupview/test/doc_markup_not_displayed.html rename : browser/devtools/markupview/test/doc_markup_pagesize_01.html => devtools/client/markupview/test/doc_markup_pagesize_01.html rename : browser/devtools/markupview/test/doc_markup_pagesize_02.html => devtools/client/markupview/test/doc_markup_pagesize_02.html rename : browser/devtools/markupview/test/doc_markup_search.html => devtools/client/markupview/test/doc_markup_search.html rename : browser/devtools/markupview/test/doc_markup_svg_attributes.html => devtools/client/markupview/test/doc_markup_svg_attributes.html rename : browser/devtools/markupview/test/doc_markup_toggle.html => devtools/client/markupview/test/doc_markup_toggle.html rename : browser/devtools/markupview/test/doc_markup_tooltip.png => devtools/client/markupview/test/doc_markup_tooltip.png rename : browser/devtools/markupview/test/doc_markup_xul.xul => devtools/client/markupview/test/doc_markup_xul.xul rename : browser/devtools/markupview/test/frame-script-utils.js => devtools/client/markupview/test/frame-script-utils.js rename : browser/devtools/markupview/test/head.js => devtools/client/markupview/test/head.js rename : browser/devtools/markupview/test/helper_attributes_test_runner.js => devtools/client/markupview/test/helper_attributes_test_runner.js rename : browser/devtools/markupview/test/helper_events_test_runner.js => devtools/client/markupview/test/helper_events_test_runner.js rename : browser/devtools/markupview/test/helper_outerhtml_test_runner.js => devtools/client/markupview/test/helper_outerhtml_test_runner.js rename : browser/devtools/markupview/test/lib_jquery_1.0.js => devtools/client/markupview/test/lib_jquery_1.0.js rename : browser/devtools/markupview/test/lib_jquery_1.1.js => devtools/client/markupview/test/lib_jquery_1.1.js rename : browser/devtools/markupview/test/lib_jquery_1.11.1_min.js => devtools/client/markupview/test/lib_jquery_1.11.1_min.js rename : browser/devtools/markupview/test/lib_jquery_1.2_min.js => devtools/client/markupview/test/lib_jquery_1.2_min.js rename : browser/devtools/markupview/test/lib_jquery_1.3_min.js => devtools/client/markupview/test/lib_jquery_1.3_min.js rename : browser/devtools/markupview/test/lib_jquery_1.4_min.js => devtools/client/markupview/test/lib_jquery_1.4_min.js rename : browser/devtools/markupview/test/lib_jquery_1.6_min.js => devtools/client/markupview/test/lib_jquery_1.6_min.js rename : browser/devtools/markupview/test/lib_jquery_1.7_min.js => devtools/client/markupview/test/lib_jquery_1.7_min.js rename : browser/devtools/markupview/test/lib_jquery_2.1.1_min.js => devtools/client/markupview/test/lib_jquery_2.1.1_min.js rename : browser/devtools/memory/controller.js => devtools/client/memory/controller.js rename : browser/devtools/memory/memory.xhtml => devtools/client/memory/memory.xhtml rename : browser/devtools/memory/modules/census-view.js => devtools/client/memory/modules/census-view.js rename : browser/devtools/memory/moz.build => devtools/client/memory/moz.build rename : browser/devtools/memory/panel.js => devtools/client/memory/panel.js rename : browser/devtools/memory/test/mochitest/chrome.ini => devtools/client/memory/test/mochitest/chrome.ini rename : browser/devtools/memory/test/mochitest/head.js => devtools/client/memory/test/mochitest/head.js rename : browser/devtools/memory/test/mochitest/test_census-view-01.html => devtools/client/memory/test/mochitest/test_census-view-01.html rename : browser/devtools/moz.build => devtools/client/moz.build rename : browser/devtools/netmonitor/har/har-automation.js => devtools/client/netmonitor/har/har-automation.js rename : browser/devtools/netmonitor/har/har-builder.js => devtools/client/netmonitor/har/har-builder.js rename : browser/devtools/netmonitor/har/har-collector.js => devtools/client/netmonitor/har/har-collector.js rename : browser/devtools/netmonitor/har/har-exporter.js => devtools/client/netmonitor/har/har-exporter.js rename : browser/devtools/netmonitor/har/har-utils.js => devtools/client/netmonitor/har/har-utils.js rename : browser/devtools/netmonitor/har/moz.build => devtools/client/netmonitor/har/moz.build rename : browser/devtools/netmonitor/har/test/browser.ini => devtools/client/netmonitor/har/test/browser.ini rename : browser/devtools/netmonitor/har/test/browser_net_har_copy_all_as_har.js => devtools/client/netmonitor/har/test/browser_net_har_copy_all_as_har.js rename : browser/devtools/netmonitor/har/test/browser_net_har_post_data.js => devtools/client/netmonitor/har/test/browser_net_har_post_data.js rename : browser/devtools/netmonitor/har/test/head.js => devtools/client/netmonitor/har/test/head.js rename : browser/devtools/netmonitor/har/test/html_har_post-data-test-page.html => devtools/client/netmonitor/har/test/html_har_post-data-test-page.html rename : browser/devtools/netmonitor/har/toolbox-overlay.js => devtools/client/netmonitor/har/toolbox-overlay.js rename : browser/devtools/netmonitor/moz.build => devtools/client/netmonitor/moz.build rename : browser/devtools/netmonitor/netmonitor-controller.js => devtools/client/netmonitor/netmonitor-controller.js rename : browser/devtools/netmonitor/netmonitor-view.js => devtools/client/netmonitor/netmonitor-view.js rename : browser/devtools/netmonitor/netmonitor.css => devtools/client/netmonitor/netmonitor.css rename : browser/devtools/netmonitor/netmonitor.xul => devtools/client/netmonitor/netmonitor.xul rename : browser/devtools/netmonitor/panel.js => devtools/client/netmonitor/panel.js rename : browser/devtools/netmonitor/test/.eslintrc => devtools/client/netmonitor/test/.eslintrc rename : browser/devtools/netmonitor/test/browser.ini => devtools/client/netmonitor/test/browser.ini rename : browser/devtools/netmonitor/test/browser_net_aaa_leaktest.js => devtools/client/netmonitor/test/browser_net_aaa_leaktest.js rename : browser/devtools/netmonitor/test/browser_net_accessibility-01.js => devtools/client/netmonitor/test/browser_net_accessibility-01.js rename : browser/devtools/netmonitor/test/browser_net_accessibility-02.js => devtools/client/netmonitor/test/browser_net_accessibility-02.js rename : browser/devtools/netmonitor/test/browser_net_api-calls.js => devtools/client/netmonitor/test/browser_net_api-calls.js rename : browser/devtools/netmonitor/test/browser_net_autoscroll.js => devtools/client/netmonitor/test/browser_net_autoscroll.js rename : browser/devtools/netmonitor/test/browser_net_cached-status.js => devtools/client/netmonitor/test/browser_net_cached-status.js rename : browser/devtools/netmonitor/test/browser_net_charts-01.js => devtools/client/netmonitor/test/browser_net_charts-01.js rename : browser/devtools/netmonitor/test/browser_net_charts-02.js => devtools/client/netmonitor/test/browser_net_charts-02.js rename : browser/devtools/netmonitor/test/browser_net_charts-03.js => devtools/client/netmonitor/test/browser_net_charts-03.js rename : browser/devtools/netmonitor/test/browser_net_charts-04.js => devtools/client/netmonitor/test/browser_net_charts-04.js rename : browser/devtools/netmonitor/test/browser_net_charts-05.js => devtools/client/netmonitor/test/browser_net_charts-05.js rename : browser/devtools/netmonitor/test/browser_net_charts-06.js => devtools/client/netmonitor/test/browser_net_charts-06.js rename : browser/devtools/netmonitor/test/browser_net_charts-07.js => devtools/client/netmonitor/test/browser_net_charts-07.js rename : browser/devtools/netmonitor/test/browser_net_clear.js => devtools/client/netmonitor/test/browser_net_clear.js rename : browser/devtools/netmonitor/test/browser_net_complex-params.js => devtools/client/netmonitor/test/browser_net_complex-params.js rename : browser/devtools/netmonitor/test/browser_net_content-type.js => devtools/client/netmonitor/test/browser_net_content-type.js rename : browser/devtools/netmonitor/test/browser_net_copy_as_curl.js => devtools/client/netmonitor/test/browser_net_copy_as_curl.js rename : browser/devtools/netmonitor/test/browser_net_copy_headers.js => devtools/client/netmonitor/test/browser_net_copy_headers.js rename : browser/devtools/netmonitor/test/browser_net_copy_image_as_data_uri.js => devtools/client/netmonitor/test/browser_net_copy_image_as_data_uri.js rename : browser/devtools/netmonitor/test/browser_net_copy_params.js => devtools/client/netmonitor/test/browser_net_copy_params.js rename : browser/devtools/netmonitor/test/browser_net_copy_response.js => devtools/client/netmonitor/test/browser_net_copy_response.js rename : browser/devtools/netmonitor/test/browser_net_copy_url.js => devtools/client/netmonitor/test/browser_net_copy_url.js rename : browser/devtools/netmonitor/test/browser_net_curl-utils.js => devtools/client/netmonitor/test/browser_net_curl-utils.js rename : browser/devtools/netmonitor/test/browser_net_cyrillic-01.js => devtools/client/netmonitor/test/browser_net_cyrillic-01.js rename : browser/devtools/netmonitor/test/browser_net_cyrillic-02.js => devtools/client/netmonitor/test/browser_net_cyrillic-02.js rename : browser/devtools/netmonitor/test/browser_net_details-no-duplicated-content.js => devtools/client/netmonitor/test/browser_net_details-no-duplicated-content.js rename : browser/devtools/netmonitor/test/browser_net_filter-01.js => devtools/client/netmonitor/test/browser_net_filter-01.js rename : browser/devtools/netmonitor/test/browser_net_filter-02.js => devtools/client/netmonitor/test/browser_net_filter-02.js rename : browser/devtools/netmonitor/test/browser_net_filter-03.js => devtools/client/netmonitor/test/browser_net_filter-03.js rename : browser/devtools/netmonitor/test/browser_net_filter-04.js => devtools/client/netmonitor/test/browser_net_filter-04.js rename : browser/devtools/netmonitor/test/browser_net_footer-summary.js => devtools/client/netmonitor/test/browser_net_footer-summary.js rename : browser/devtools/netmonitor/test/browser_net_html-preview.js => devtools/client/netmonitor/test/browser_net_html-preview.js rename : browser/devtools/netmonitor/test/browser_net_icon-preview.js => devtools/client/netmonitor/test/browser_net_icon-preview.js rename : browser/devtools/netmonitor/test/browser_net_image-tooltip.js => devtools/client/netmonitor/test/browser_net_image-tooltip.js rename : browser/devtools/netmonitor/test/browser_net_json-long.js => devtools/client/netmonitor/test/browser_net_json-long.js rename : browser/devtools/netmonitor/test/browser_net_json-malformed.js => devtools/client/netmonitor/test/browser_net_json-malformed.js rename : browser/devtools/netmonitor/test/browser_net_json_custom_mime.js => devtools/client/netmonitor/test/browser_net_json_custom_mime.js rename : browser/devtools/netmonitor/test/browser_net_json_text_mime.js => devtools/client/netmonitor/test/browser_net_json_text_mime.js rename : browser/devtools/netmonitor/test/browser_net_jsonp.js => devtools/client/netmonitor/test/browser_net_jsonp.js rename : browser/devtools/netmonitor/test/browser_net_large-response.js => devtools/client/netmonitor/test/browser_net_large-response.js rename : browser/devtools/netmonitor/test/browser_net_open_request_in_tab.js => devtools/client/netmonitor/test/browser_net_open_request_in_tab.js rename : browser/devtools/netmonitor/test/browser_net_page-nav.js => devtools/client/netmonitor/test/browser_net_page-nav.js rename : browser/devtools/netmonitor/test/browser_net_pane-collapse.js => devtools/client/netmonitor/test/browser_net_pane-collapse.js rename : browser/devtools/netmonitor/test/browser_net_pane-toggle.js => devtools/client/netmonitor/test/browser_net_pane-toggle.js rename : browser/devtools/netmonitor/test/browser_net_persistent_logs.js => devtools/client/netmonitor/test/browser_net_persistent_logs.js rename : browser/devtools/netmonitor/test/browser_net_post-data-01.js => devtools/client/netmonitor/test/browser_net_post-data-01.js rename : browser/devtools/netmonitor/test/browser_net_post-data-02.js => devtools/client/netmonitor/test/browser_net_post-data-02.js rename : browser/devtools/netmonitor/test/browser_net_post-data-03.js => devtools/client/netmonitor/test/browser_net_post-data-03.js rename : browser/devtools/netmonitor/test/browser_net_prefs-and-l10n.js => devtools/client/netmonitor/test/browser_net_prefs-and-l10n.js rename : browser/devtools/netmonitor/test/browser_net_prefs-reload.js => devtools/client/netmonitor/test/browser_net_prefs-reload.js rename : browser/devtools/netmonitor/test/browser_net_raw_headers.js => devtools/client/netmonitor/test/browser_net_raw_headers.js rename : browser/devtools/netmonitor/test/browser_net_reload-button.js => devtools/client/netmonitor/test/browser_net_reload-button.js rename : browser/devtools/netmonitor/test/browser_net_req-resp-bodies.js => devtools/client/netmonitor/test/browser_net_req-resp-bodies.js rename : browser/devtools/netmonitor/test/browser_net_resend.js => devtools/client/netmonitor/test/browser_net_resend.js rename : browser/devtools/netmonitor/test/browser_net_security-details.js => devtools/client/netmonitor/test/browser_net_security-details.js rename : browser/devtools/netmonitor/test/browser_net_security-error.js => devtools/client/netmonitor/test/browser_net_security-error.js rename : browser/devtools/netmonitor/test/browser_net_security-icon-click.js => devtools/client/netmonitor/test/browser_net_security-icon-click.js rename : browser/devtools/netmonitor/test/browser_net_security-redirect.js => devtools/client/netmonitor/test/browser_net_security-redirect.js rename : browser/devtools/netmonitor/test/browser_net_security-state.js => devtools/client/netmonitor/test/browser_net_security-state.js rename : browser/devtools/netmonitor/test/browser_net_security-tab-deselect.js => devtools/client/netmonitor/test/browser_net_security-tab-deselect.js rename : browser/devtools/netmonitor/test/browser_net_security-tab-visibility.js => devtools/client/netmonitor/test/browser_net_security-tab-visibility.js rename : browser/devtools/netmonitor/test/browser_net_security-warnings.js => devtools/client/netmonitor/test/browser_net_security-warnings.js rename : browser/devtools/netmonitor/test/browser_net_send-beacon-other-tab.js => devtools/client/netmonitor/test/browser_net_send-beacon-other-tab.js rename : browser/devtools/netmonitor/test/browser_net_send-beacon.js => devtools/client/netmonitor/test/browser_net_send-beacon.js rename : browser/devtools/netmonitor/test/browser_net_simple-init.js => devtools/client/netmonitor/test/browser_net_simple-init.js rename : browser/devtools/netmonitor/test/browser_net_simple-request-data.js => devtools/client/netmonitor/test/browser_net_simple-request-data.js rename : browser/devtools/netmonitor/test/browser_net_simple-request-details.js => devtools/client/netmonitor/test/browser_net_simple-request-details.js rename : browser/devtools/netmonitor/test/browser_net_simple-request.js => devtools/client/netmonitor/test/browser_net_simple-request.js rename : browser/devtools/netmonitor/test/browser_net_sort-01.js => devtools/client/netmonitor/test/browser_net_sort-01.js rename : browser/devtools/netmonitor/test/browser_net_sort-02.js => devtools/client/netmonitor/test/browser_net_sort-02.js rename : browser/devtools/netmonitor/test/browser_net_sort-03.js => devtools/client/netmonitor/test/browser_net_sort-03.js rename : browser/devtools/netmonitor/test/browser_net_statistics-01.js => devtools/client/netmonitor/test/browser_net_statistics-01.js rename : browser/devtools/netmonitor/test/browser_net_statistics-02.js => devtools/client/netmonitor/test/browser_net_statistics-02.js rename : browser/devtools/netmonitor/test/browser_net_statistics-03.js => devtools/client/netmonitor/test/browser_net_statistics-03.js rename : browser/devtools/netmonitor/test/browser_net_status-codes.js => devtools/client/netmonitor/test/browser_net_status-codes.js rename : browser/devtools/netmonitor/test/browser_net_timeline_ticks.js => devtools/client/netmonitor/test/browser_net_timeline_ticks.js rename : browser/devtools/netmonitor/test/browser_net_timing-division.js => devtools/client/netmonitor/test/browser_net_timing-division.js rename : browser/devtools/netmonitor/test/head.js => devtools/client/netmonitor/test/head.js rename : browser/devtools/netmonitor/test/html_api-calls-test-page.html => devtools/client/netmonitor/test/html_api-calls-test-page.html rename : browser/devtools/netmonitor/test/html_content-type-test-page.html => devtools/client/netmonitor/test/html_content-type-test-page.html rename : browser/devtools/netmonitor/test/html_content-type-without-cache-test-page.html => devtools/client/netmonitor/test/html_content-type-without-cache-test-page.html rename : browser/devtools/netmonitor/test/html_copy-as-curl.html => devtools/client/netmonitor/test/html_copy-as-curl.html rename : browser/devtools/netmonitor/test/html_curl-utils.html => devtools/client/netmonitor/test/html_curl-utils.html rename : browser/devtools/netmonitor/test/html_custom-get-page.html => devtools/client/netmonitor/test/html_custom-get-page.html rename : browser/devtools/netmonitor/test/html_cyrillic-test-page.html => devtools/client/netmonitor/test/html_cyrillic-test-page.html rename : browser/devtools/netmonitor/test/html_filter-test-page.html => devtools/client/netmonitor/test/html_filter-test-page.html rename : browser/devtools/netmonitor/test/html_har_post-data-test-page.html => devtools/client/netmonitor/test/html_har_post-data-test-page.html rename : browser/devtools/netmonitor/test/html_infinite-get-page.html => devtools/client/netmonitor/test/html_infinite-get-page.html rename : browser/devtools/netmonitor/test/html_json-custom-mime-test-page.html => devtools/client/netmonitor/test/html_json-custom-mime-test-page.html rename : browser/devtools/netmonitor/test/html_json-long-test-page.html => devtools/client/netmonitor/test/html_json-long-test-page.html rename : browser/devtools/netmonitor/test/html_json-malformed-test-page.html => devtools/client/netmonitor/test/html_json-malformed-test-page.html rename : browser/devtools/netmonitor/test/html_json-text-mime-test-page.html => devtools/client/netmonitor/test/html_json-text-mime-test-page.html rename : browser/devtools/netmonitor/test/html_jsonp-test-page.html => devtools/client/netmonitor/test/html_jsonp-test-page.html rename : browser/devtools/netmonitor/test/html_navigate-test-page.html => devtools/client/netmonitor/test/html_navigate-test-page.html rename : browser/devtools/netmonitor/test/html_params-test-page.html => devtools/client/netmonitor/test/html_params-test-page.html rename : browser/devtools/netmonitor/test/html_post-data-test-page.html => devtools/client/netmonitor/test/html_post-data-test-page.html rename : browser/devtools/netmonitor/test/html_post-raw-test-page.html => devtools/client/netmonitor/test/html_post-raw-test-page.html rename : browser/devtools/netmonitor/test/html_post-raw-with-headers-test-page.html => devtools/client/netmonitor/test/html_post-raw-with-headers-test-page.html rename : browser/devtools/netmonitor/test/html_send-beacon.html => devtools/client/netmonitor/test/html_send-beacon.html rename : browser/devtools/netmonitor/test/html_simple-test-page.html => devtools/client/netmonitor/test/html_simple-test-page.html rename : browser/devtools/netmonitor/test/html_single-get-page.html => devtools/client/netmonitor/test/html_single-get-page.html rename : browser/devtools/netmonitor/test/html_sorting-test-page.html => devtools/client/netmonitor/test/html_sorting-test-page.html rename : browser/devtools/netmonitor/test/html_statistics-test-page.html => devtools/client/netmonitor/test/html_statistics-test-page.html rename : browser/devtools/netmonitor/test/html_status-codes-test-page.html => devtools/client/netmonitor/test/html_status-codes-test-page.html rename : browser/devtools/netmonitor/test/sjs_content-type-test-server.sjs => devtools/client/netmonitor/test/sjs_content-type-test-server.sjs rename : browser/devtools/netmonitor/test/sjs_cors-test-server.sjs => devtools/client/netmonitor/test/sjs_cors-test-server.sjs rename : browser/devtools/netmonitor/test/sjs_https-redirect-test-server.sjs => devtools/client/netmonitor/test/sjs_https-redirect-test-server.sjs rename : browser/devtools/netmonitor/test/sjs_simple-test-server.sjs => devtools/client/netmonitor/test/sjs_simple-test-server.sjs rename : browser/devtools/netmonitor/test/sjs_sorting-test-server.sjs => devtools/client/netmonitor/test/sjs_sorting-test-server.sjs rename : browser/devtools/netmonitor/test/sjs_status-codes-test-server.sjs => devtools/client/netmonitor/test/sjs_status-codes-test-server.sjs rename : browser/devtools/netmonitor/test/test-image.png => devtools/client/netmonitor/test/test-image.png rename : browser/devtools/performance/docs/markers.md => devtools/client/performance/docs/markers.md rename : browser/devtools/performance/events.js => devtools/client/performance/events.js rename : browser/devtools/performance/modules/global.js => devtools/client/performance/modules/global.js rename : browser/devtools/performance/modules/logic/frame-utils.js => devtools/client/performance/modules/logic/frame-utils.js rename : browser/devtools/performance/modules/logic/jit.js => devtools/client/performance/modules/logic/jit.js rename : browser/devtools/performance/modules/logic/marker-utils.js => devtools/client/performance/modules/logic/marker-utils.js rename : browser/devtools/performance/modules/logic/telemetry.js => devtools/client/performance/modules/logic/telemetry.js rename : browser/devtools/performance/modules/logic/tree-model.js => devtools/client/performance/modules/logic/tree-model.js rename : browser/devtools/performance/modules/logic/waterfall-utils.js => devtools/client/performance/modules/logic/waterfall-utils.js rename : browser/devtools/performance/modules/markers.js => devtools/client/performance/modules/markers.js rename : browser/devtools/performance/modules/widgets/graphs.js => devtools/client/performance/modules/widgets/graphs.js rename : browser/devtools/performance/modules/widgets/marker-details.js => devtools/client/performance/modules/widgets/marker-details.js rename : browser/devtools/performance/modules/widgets/marker-view.js => devtools/client/performance/modules/widgets/marker-view.js rename : browser/devtools/performance/modules/widgets/markers-overview.js => devtools/client/performance/modules/widgets/markers-overview.js rename : browser/devtools/performance/modules/widgets/tree-view.js => devtools/client/performance/modules/widgets/tree-view.js rename : browser/devtools/performance/modules/widgets/waterfall-ticks.js => devtools/client/performance/modules/widgets/waterfall-ticks.js rename : browser/devtools/performance/moz.build => devtools/client/performance/moz.build rename : browser/devtools/performance/panel.js => devtools/client/performance/panel.js rename : browser/devtools/performance/performance-controller.js => devtools/client/performance/performance-controller.js rename : browser/devtools/performance/performance-view.js => devtools/client/performance/performance-view.js rename : browser/devtools/performance/performance.xul => devtools/client/performance/performance.xul rename : browser/devtools/performance/test/.eslintrc => devtools/client/performance/test/.eslintrc rename : browser/devtools/performance/test/browser.ini => devtools/client/performance/test/browser.ini rename : browser/devtools/performance/test/browser_aaa-run-first-leaktest.js => devtools/client/performance/test/browser_aaa-run-first-leaktest.js rename : browser/devtools/performance/test/browser_perf-categories-js-calltree.js => devtools/client/performance/test/browser_perf-categories-js-calltree.js rename : browser/devtools/performance/test/browser_perf-clear-01.js => devtools/client/performance/test/browser_perf-clear-01.js rename : browser/devtools/performance/test/browser_perf-clear-02.js => devtools/client/performance/test/browser_perf-clear-02.js rename : browser/devtools/performance/test/browser_perf-columns-js-calltree.js => devtools/client/performance/test/browser_perf-columns-js-calltree.js rename : browser/devtools/performance/test/browser_perf-columns-memory-calltree.js => devtools/client/performance/test/browser_perf-columns-memory-calltree.js rename : browser/devtools/performance/test/browser_perf-console-record-01.js => devtools/client/performance/test/browser_perf-console-record-01.js rename : browser/devtools/performance/test/browser_perf-console-record-02.js => devtools/client/performance/test/browser_perf-console-record-02.js rename : browser/devtools/performance/test/browser_perf-console-record-03.js => devtools/client/performance/test/browser_perf-console-record-03.js rename : browser/devtools/performance/test/browser_perf-console-record-04.js => devtools/client/performance/test/browser_perf-console-record-04.js rename : browser/devtools/performance/test/browser_perf-console-record-05.js => devtools/client/performance/test/browser_perf-console-record-05.js rename : browser/devtools/performance/test/browser_perf-console-record-06.js => devtools/client/performance/test/browser_perf-console-record-06.js rename : browser/devtools/performance/test/browser_perf-console-record-07.js => devtools/client/performance/test/browser_perf-console-record-07.js rename : browser/devtools/performance/test/browser_perf-console-record-08.js => devtools/client/performance/test/browser_perf-console-record-08.js rename : browser/devtools/performance/test/browser_perf-console-record-09.js => devtools/client/performance/test/browser_perf-console-record-09.js rename : browser/devtools/performance/test/browser_perf-details-01.js => devtools/client/performance/test/browser_perf-details-01.js rename : browser/devtools/performance/test/browser_perf-details-02.js => devtools/client/performance/test/browser_perf-details-02.js rename : browser/devtools/performance/test/browser_perf-details-03.js => devtools/client/performance/test/browser_perf-details-03.js rename : browser/devtools/performance/test/browser_perf-details-04.js => devtools/client/performance/test/browser_perf-details-04.js rename : browser/devtools/performance/test/browser_perf-details-05.js => devtools/client/performance/test/browser_perf-details-05.js rename : browser/devtools/performance/test/browser_perf-details-06.js => devtools/client/performance/test/browser_perf-details-06.js rename : browser/devtools/performance/test/browser_perf-details-07.js => devtools/client/performance/test/browser_perf-details-07.js rename : browser/devtools/performance/test/browser_perf-details-calltree-render.js => devtools/client/performance/test/browser_perf-details-calltree-render.js rename : browser/devtools/performance/test/browser_perf-details-flamegraph-render.js => devtools/client/performance/test/browser_perf-details-flamegraph-render.js rename : browser/devtools/performance/test/browser_perf-details-memory-calltree-render.js => devtools/client/performance/test/browser_perf-details-memory-calltree-render.js rename : browser/devtools/performance/test/browser_perf-details-memory-flamegraph-render.js => devtools/client/performance/test/browser_perf-details-memory-flamegraph-render.js rename : browser/devtools/performance/test/browser_perf-details-waterfall-gc-snap.js => devtools/client/performance/test/browser_perf-details-waterfall-gc-snap.js rename : browser/devtools/performance/test/browser_perf-details-waterfall-render.js => devtools/client/performance/test/browser_perf-details-waterfall-render.js rename : browser/devtools/performance/test/browser_perf-events-calltree.js => devtools/client/performance/test/browser_perf-events-calltree.js rename : browser/devtools/performance/test/browser_perf-highlighted.js => devtools/client/performance/test/browser_perf-highlighted.js rename : browser/devtools/performance/test/browser_perf-jit-view-01.js => devtools/client/performance/test/browser_perf-jit-view-01.js rename : browser/devtools/performance/test/browser_perf-jit-view-02.js => devtools/client/performance/test/browser_perf-jit-view-02.js rename : browser/devtools/performance/test/browser_perf-legacy-front-01.js => devtools/client/performance/test/browser_perf-legacy-front-01.js rename : browser/devtools/performance/test/browser_perf-legacy-front-02.js => devtools/client/performance/test/browser_perf-legacy-front-02.js rename : browser/devtools/performance/test/browser_perf-legacy-front-03.js => devtools/client/performance/test/browser_perf-legacy-front-03.js rename : browser/devtools/performance/test/browser_perf-legacy-front-04.js => devtools/client/performance/test/browser_perf-legacy-front-04.js rename : browser/devtools/performance/test/browser_perf-legacy-front-05.js => devtools/client/performance/test/browser_perf-legacy-front-05.js rename : browser/devtools/performance/test/browser_perf-legacy-front-06.js => devtools/client/performance/test/browser_perf-legacy-front-06.js rename : browser/devtools/performance/test/browser_perf-loading-01.js => devtools/client/performance/test/browser_perf-loading-01.js rename : browser/devtools/performance/test/browser_perf-loading-02.js => devtools/client/performance/test/browser_perf-loading-02.js rename : browser/devtools/performance/test/browser_perf-marker-details-01.js => devtools/client/performance/test/browser_perf-marker-details-01.js rename : browser/devtools/performance/test/browser_perf-options-01.js => devtools/client/performance/test/browser_perf-options-01.js rename : browser/devtools/performance/test/browser_perf-options-02.js => devtools/client/performance/test/browser_perf-options-02.js rename : browser/devtools/performance/test/browser_perf-options-03.js => devtools/client/performance/test/browser_perf-options-03.js rename : browser/devtools/performance/test/browser_perf-options-allocations.js => devtools/client/performance/test/browser_perf-options-allocations.js rename : browser/devtools/performance/test/browser_perf-options-enable-framerate.js => devtools/client/performance/test/browser_perf-options-enable-framerate.js rename : browser/devtools/performance/test/browser_perf-options-enable-memory-01.js => devtools/client/performance/test/browser_perf-options-enable-memory-01.js rename : browser/devtools/performance/test/browser_perf-options-enable-memory-02.js => devtools/client/performance/test/browser_perf-options-enable-memory-02.js rename : browser/devtools/performance/test/browser_perf-options-flatten-tree-recursion-01.js => devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-01.js rename : browser/devtools/performance/test/browser_perf-options-flatten-tree-recursion-02.js => devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-02.js rename : browser/devtools/performance/test/browser_perf-options-invert-call-tree-01.js => devtools/client/performance/test/browser_perf-options-invert-call-tree-01.js rename : browser/devtools/performance/test/browser_perf-options-invert-call-tree-02.js => devtools/client/performance/test/browser_perf-options-invert-call-tree-02.js rename : browser/devtools/performance/test/browser_perf-options-invert-flame-graph-01.js => devtools/client/performance/test/browser_perf-options-invert-flame-graph-01.js rename : browser/devtools/performance/test/browser_perf-options-invert-flame-graph-02.js => devtools/client/performance/test/browser_perf-options-invert-flame-graph-02.js rename : browser/devtools/performance/test/browser_perf-options-profiler.js => devtools/client/performance/test/browser_perf-options-profiler.js rename : browser/devtools/performance/test/browser_perf-options-show-idle-blocks-01.js => devtools/client/performance/test/browser_perf-options-show-idle-blocks-01.js rename : browser/devtools/performance/test/browser_perf-options-show-idle-blocks-02.js => devtools/client/performance/test/browser_perf-options-show-idle-blocks-02.js rename : browser/devtools/performance/test/browser_perf-options-show-platform-data-01.js => devtools/client/performance/test/browser_perf-options-show-platform-data-01.js rename : browser/devtools/performance/test/browser_perf-options-show-platform-data-02.js => devtools/client/performance/test/browser_perf-options-show-platform-data-02.js rename : browser/devtools/performance/test/browser_perf-overview-render-01.js => devtools/client/performance/test/browser_perf-overview-render-01.js rename : browser/devtools/performance/test/browser_perf-overview-render-02.js => devtools/client/performance/test/browser_perf-overview-render-02.js rename : browser/devtools/performance/test/browser_perf-overview-render-03.js => devtools/client/performance/test/browser_perf-overview-render-03.js rename : browser/devtools/performance/test/browser_perf-overview-render-04.js => devtools/client/performance/test/browser_perf-overview-render-04.js rename : browser/devtools/performance/test/browser_perf-overview-selection-01.js => devtools/client/performance/test/browser_perf-overview-selection-01.js rename : browser/devtools/performance/test/browser_perf-overview-selection-02.js => devtools/client/performance/test/browser_perf-overview-selection-02.js rename : browser/devtools/performance/test/browser_perf-overview-selection-03.js => devtools/client/performance/test/browser_perf-overview-selection-03.js rename : browser/devtools/performance/test/browser_perf-overview-time-interval.js => devtools/client/performance/test/browser_perf-overview-time-interval.js rename : browser/devtools/performance/test/browser_perf-range-changed-render.js => devtools/client/performance/test/browser_perf-range-changed-render.js rename : browser/devtools/performance/test/browser_perf-recording-notices-01.js => devtools/client/performance/test/browser_perf-recording-notices-01.js rename : browser/devtools/performance/test/browser_perf-recording-notices-02.js => devtools/client/performance/test/browser_perf-recording-notices-02.js rename : browser/devtools/performance/test/browser_perf-recording-notices-03.js => devtools/client/performance/test/browser_perf-recording-notices-03.js rename : browser/devtools/performance/test/browser_perf-recording-notices-04.js => devtools/client/performance/test/browser_perf-recording-notices-04.js rename : browser/devtools/performance/test/browser_perf-recording-notices-05.js => devtools/client/performance/test/browser_perf-recording-notices-05.js rename : browser/devtools/performance/test/browser_perf-recording-selected-01.js => devtools/client/performance/test/browser_perf-recording-selected-01.js rename : browser/devtools/performance/test/browser_perf-recording-selected-02.js => devtools/client/performance/test/browser_perf-recording-selected-02.js rename : browser/devtools/performance/test/browser_perf-recording-selected-03.js => devtools/client/performance/test/browser_perf-recording-selected-03.js rename : browser/devtools/performance/test/browser_perf-recording-selected-04.js => devtools/client/performance/test/browser_perf-recording-selected-04.js rename : browser/devtools/performance/test/browser_perf-recordings-io-01.js => devtools/client/performance/test/browser_perf-recordings-io-01.js rename : browser/devtools/performance/test/browser_perf-recordings-io-02.js => devtools/client/performance/test/browser_perf-recordings-io-02.js rename : browser/devtools/performance/test/browser_perf-recordings-io-03.js => devtools/client/performance/test/browser_perf-recordings-io-03.js rename : browser/devtools/performance/test/browser_perf-recordings-io-04.js => devtools/client/performance/test/browser_perf-recordings-io-04.js rename : browser/devtools/performance/test/browser_perf-recordings-io-05.js => devtools/client/performance/test/browser_perf-recordings-io-05.js rename : browser/devtools/performance/test/browser_perf-recordings-io-06.js => devtools/client/performance/test/browser_perf-recordings-io-06.js rename : browser/devtools/performance/test/browser_perf-refresh.js => devtools/client/performance/test/browser_perf-refresh.js rename : browser/devtools/performance/test/browser_perf-states.js => devtools/client/performance/test/browser_perf-states.js rename : browser/devtools/performance/test/browser_perf-telemetry.js => devtools/client/performance/test/browser_perf-telemetry.js rename : browser/devtools/performance/test/browser_perf-theme-toggle-01.js => devtools/client/performance/test/browser_perf-theme-toggle-01.js rename : browser/devtools/performance/test/browser_perf-ui-recording.js => devtools/client/performance/test/browser_perf-ui-recording.js rename : browser/devtools/performance/test/browser_profiler_tree-abstract-01.js => devtools/client/performance/test/browser_profiler_tree-abstract-01.js rename : browser/devtools/performance/test/browser_profiler_tree-abstract-02.js => devtools/client/performance/test/browser_profiler_tree-abstract-02.js rename : browser/devtools/performance/test/browser_profiler_tree-abstract-03.js => devtools/client/performance/test/browser_profiler_tree-abstract-03.js rename : browser/devtools/performance/test/browser_profiler_tree-abstract-04.js => devtools/client/performance/test/browser_profiler_tree-abstract-04.js rename : browser/devtools/performance/test/browser_profiler_tree-view-01.js => devtools/client/performance/test/browser_profiler_tree-view-01.js rename : browser/devtools/performance/test/browser_profiler_tree-view-02.js => devtools/client/performance/test/browser_profiler_tree-view-02.js rename : browser/devtools/performance/test/browser_profiler_tree-view-03.js => devtools/client/performance/test/browser_profiler_tree-view-03.js rename : browser/devtools/performance/test/browser_profiler_tree-view-04.js => devtools/client/performance/test/browser_profiler_tree-view-04.js rename : browser/devtools/performance/test/browser_profiler_tree-view-05.js => devtools/client/performance/test/browser_profiler_tree-view-05.js rename : browser/devtools/performance/test/browser_profiler_tree-view-06.js => devtools/client/performance/test/browser_profiler_tree-view-06.js rename : browser/devtools/performance/test/browser_profiler_tree-view-07.js => devtools/client/performance/test/browser_profiler_tree-view-07.js rename : browser/devtools/performance/test/browser_profiler_tree-view-08.js => devtools/client/performance/test/browser_profiler_tree-view-08.js rename : browser/devtools/performance/test/browser_profiler_tree-view-09.js => devtools/client/performance/test/browser_profiler_tree-view-09.js rename : browser/devtools/performance/test/browser_profiler_tree-view-10.js => devtools/client/performance/test/browser_profiler_tree-view-10.js rename : browser/devtools/performance/test/browser_profiler_tree-view-11.js => devtools/client/performance/test/browser_profiler_tree-view-11.js rename : browser/devtools/performance/test/browser_timeline-filters-01.js => devtools/client/performance/test/browser_timeline-filters-01.js rename : browser/devtools/performance/test/browser_timeline-filters-02.js => devtools/client/performance/test/browser_timeline-filters-02.js rename : browser/devtools/performance/test/browser_timeline-waterfall-background.js => devtools/client/performance/test/browser_timeline-waterfall-background.js rename : browser/devtools/performance/test/browser_timeline-waterfall-generic.js => devtools/client/performance/test/browser_timeline-waterfall-generic.js rename : browser/devtools/performance/test/browser_timeline-waterfall-rerender.js => devtools/client/performance/test/browser_timeline-waterfall-rerender.js rename : browser/devtools/performance/test/browser_timeline-waterfall-sidebar.js => devtools/client/performance/test/browser_timeline-waterfall-sidebar.js rename : browser/devtools/performance/test/doc_allocs.html => devtools/client/performance/test/doc_allocs.html rename : browser/devtools/performance/test/doc_innerHTML.html => devtools/client/performance/test/doc_innerHTML.html rename : browser/devtools/performance/test/doc_markers.html => devtools/client/performance/test/doc_markers.html rename : browser/devtools/performance/test/doc_simple-test.html => devtools/client/performance/test/doc_simple-test.html rename : browser/devtools/performance/test/head.js => devtools/client/performance/test/head.js rename : browser/devtools/performance/test/unit/head.js => devtools/client/performance/test/unit/head.js rename : browser/devtools/performance/test/unit/test_frame-utils-01.js => devtools/client/performance/test/unit/test_frame-utils-01.js rename : browser/devtools/performance/test/unit/test_frame-utils-02.js => devtools/client/performance/test/unit/test_frame-utils-02.js rename : browser/devtools/performance/test/unit/test_jit-graph-data.js => devtools/client/performance/test/unit/test_jit-graph-data.js rename : browser/devtools/performance/test/unit/test_jit-model-01.js => devtools/client/performance/test/unit/test_jit-model-01.js rename : browser/devtools/performance/test/unit/test_jit-model-02.js => devtools/client/performance/test/unit/test_jit-model-02.js rename : browser/devtools/performance/test/unit/test_marker-blueprint.js => devtools/client/performance/test/unit/test_marker-blueprint.js rename : browser/devtools/performance/test/unit/test_marker-utils.js => devtools/client/performance/test/unit/test_marker-utils.js rename : browser/devtools/performance/test/unit/test_perf-utils-allocations-to-samples.js => devtools/client/performance/test/unit/test_perf-utils-allocations-to-samples.js rename : browser/devtools/performance/test/unit/test_profiler-categories.js => devtools/client/performance/test/unit/test_profiler-categories.js rename : browser/devtools/performance/test/unit/test_tree-model-01.js => devtools/client/performance/test/unit/test_tree-model-01.js rename : browser/devtools/performance/test/unit/test_tree-model-02.js => devtools/client/performance/test/unit/test_tree-model-02.js rename : browser/devtools/performance/test/unit/test_tree-model-03.js => devtools/client/performance/test/unit/test_tree-model-03.js rename : browser/devtools/performance/test/unit/test_tree-model-04.js => devtools/client/performance/test/unit/test_tree-model-04.js rename : browser/devtools/performance/test/unit/test_tree-model-05.js => devtools/client/performance/test/unit/test_tree-model-05.js rename : browser/devtools/performance/test/unit/test_tree-model-06.js => devtools/client/performance/test/unit/test_tree-model-06.js rename : browser/devtools/performance/test/unit/test_tree-model-07.js => devtools/client/performance/test/unit/test_tree-model-07.js rename : browser/devtools/performance/test/unit/test_tree-model-08.js => devtools/client/performance/test/unit/test_tree-model-08.js rename : browser/devtools/performance/test/unit/test_tree-model-09.js => devtools/client/performance/test/unit/test_tree-model-09.js rename : browser/devtools/performance/test/unit/test_tree-model-10.js => devtools/client/performance/test/unit/test_tree-model-10.js rename : browser/devtools/performance/test/unit/test_tree-model-11.js => devtools/client/performance/test/unit/test_tree-model-11.js rename : browser/devtools/performance/test/unit/test_tree-model-12.js => devtools/client/performance/test/unit/test_tree-model-12.js rename : browser/devtools/performance/test/unit/test_tree-model-13.js => devtools/client/performance/test/unit/test_tree-model-13.js rename : browser/devtools/performance/test/unit/test_tree-model-allocations-01.js => devtools/client/performance/test/unit/test_tree-model-allocations-01.js rename : browser/devtools/performance/test/unit/test_tree-model-allocations-02.js => devtools/client/performance/test/unit/test_tree-model-allocations-02.js rename : browser/devtools/performance/test/unit/test_waterfall-utils-collapse-01.js => devtools/client/performance/test/unit/test_waterfall-utils-collapse-01.js rename : browser/devtools/performance/test/unit/test_waterfall-utils-collapse-02.js => devtools/client/performance/test/unit/test_waterfall-utils-collapse-02.js rename : browser/devtools/performance/test/unit/test_waterfall-utils-collapse-03.js => devtools/client/performance/test/unit/test_waterfall-utils-collapse-03.js rename : browser/devtools/performance/test/unit/test_waterfall-utils-collapse-04.js => devtools/client/performance/test/unit/test_waterfall-utils-collapse-04.js rename : browser/devtools/performance/test/unit/xpcshell.ini => devtools/client/performance/test/unit/xpcshell.ini rename : browser/devtools/performance/views/details-abstract-subview.js => devtools/client/performance/views/details-abstract-subview.js rename : browser/devtools/performance/views/details-js-call-tree.js => devtools/client/performance/views/details-js-call-tree.js rename : browser/devtools/performance/views/details-js-flamegraph.js => devtools/client/performance/views/details-js-flamegraph.js rename : browser/devtools/performance/views/details-memory-call-tree.js => devtools/client/performance/views/details-memory-call-tree.js rename : browser/devtools/performance/views/details-memory-flamegraph.js => devtools/client/performance/views/details-memory-flamegraph.js rename : browser/devtools/performance/views/details-waterfall.js => devtools/client/performance/views/details-waterfall.js rename : browser/devtools/performance/views/details.js => devtools/client/performance/views/details.js rename : browser/devtools/performance/views/optimizations-list.js => devtools/client/performance/views/optimizations-list.js rename : browser/devtools/performance/views/overview.js => devtools/client/performance/views/overview.js rename : browser/devtools/performance/views/recordings.js => devtools/client/performance/views/recordings.js rename : browser/devtools/performance/views/toolbar.js => devtools/client/performance/views/toolbar.js rename : browser/devtools/projecteditor/chrome/content/projecteditor-loader.js => devtools/client/projecteditor/chrome/content/projecteditor-loader.js rename : browser/devtools/projecteditor/chrome/content/projecteditor-loader.xul => devtools/client/projecteditor/chrome/content/projecteditor-loader.xul rename : browser/devtools/projecteditor/chrome/content/projecteditor-test.xul => devtools/client/projecteditor/chrome/content/projecteditor-test.xul rename : browser/devtools/projecteditor/chrome/content/projecteditor.xul => devtools/client/projecteditor/chrome/content/projecteditor.xul rename : browser/devtools/projecteditor/lib/editors.js => devtools/client/projecteditor/lib/editors.js rename : browser/devtools/projecteditor/lib/helpers/event.js => devtools/client/projecteditor/lib/helpers/event.js rename : browser/devtools/projecteditor/lib/helpers/file-picker.js => devtools/client/projecteditor/lib/helpers/file-picker.js rename : browser/devtools/projecteditor/lib/helpers/l10n.js => devtools/client/projecteditor/lib/helpers/l10n.js rename : browser/devtools/projecteditor/lib/helpers/prompts.js => devtools/client/projecteditor/lib/helpers/prompts.js rename : browser/devtools/projecteditor/lib/helpers/readdir.js => devtools/client/projecteditor/lib/helpers/readdir.js rename : browser/devtools/projecteditor/lib/plugins/app-manager/app-project-editor.js => devtools/client/projecteditor/lib/plugins/app-manager/app-project-editor.js rename : browser/devtools/projecteditor/lib/plugins/app-manager/plugin.js => devtools/client/projecteditor/lib/plugins/app-manager/plugin.js rename : browser/devtools/projecteditor/lib/plugins/core.js => devtools/client/projecteditor/lib/plugins/core.js rename : browser/devtools/projecteditor/lib/plugins/delete/delete.js => devtools/client/projecteditor/lib/plugins/delete/delete.js rename : browser/devtools/projecteditor/lib/plugins/dirty/dirty.js => devtools/client/projecteditor/lib/plugins/dirty/dirty.js rename : browser/devtools/projecteditor/lib/plugins/image-view/image-editor.js => devtools/client/projecteditor/lib/plugins/image-view/image-editor.js rename : browser/devtools/projecteditor/lib/plugins/image-view/plugin.js => devtools/client/projecteditor/lib/plugins/image-view/plugin.js rename : browser/devtools/projecteditor/lib/plugins/logging/logging.js => devtools/client/projecteditor/lib/plugins/logging/logging.js rename : browser/devtools/projecteditor/lib/plugins/new/new.js => devtools/client/projecteditor/lib/plugins/new/new.js rename : browser/devtools/projecteditor/lib/plugins/rename/rename.js => devtools/client/projecteditor/lib/plugins/rename/rename.js rename : browser/devtools/projecteditor/lib/plugins/save/save.js => devtools/client/projecteditor/lib/plugins/save/save.js rename : browser/devtools/projecteditor/lib/plugins/status-bar/plugin.js => devtools/client/projecteditor/lib/plugins/status-bar/plugin.js rename : browser/devtools/projecteditor/lib/project.js => devtools/client/projecteditor/lib/project.js rename : browser/devtools/projecteditor/lib/projecteditor.js => devtools/client/projecteditor/lib/projecteditor.js rename : browser/devtools/projecteditor/lib/shells.js => devtools/client/projecteditor/lib/shells.js rename : browser/devtools/projecteditor/lib/stores/base.js => devtools/client/projecteditor/lib/stores/base.js rename : browser/devtools/projecteditor/lib/stores/local.js => devtools/client/projecteditor/lib/stores/local.js rename : browser/devtools/projecteditor/lib/stores/resource.js => devtools/client/projecteditor/lib/stores/resource.js rename : browser/devtools/projecteditor/lib/tree.js => devtools/client/projecteditor/lib/tree.js rename : browser/devtools/projecteditor/moz.build => devtools/client/projecteditor/moz.build rename : browser/devtools/projecteditor/test/.eslintrc => devtools/client/projecteditor/test/.eslintrc rename : browser/devtools/projecteditor/test/browser.ini => devtools/client/projecteditor/test/browser.ini rename : browser/devtools/projecteditor/test/browser_projecteditor_app_options.js => devtools/client/projecteditor/test/browser_projecteditor_app_options.js rename : browser/devtools/projecteditor/test/browser_projecteditor_confirm_unsaved.js => devtools/client/projecteditor/test/browser_projecteditor_confirm_unsaved.js rename : browser/devtools/projecteditor/test/browser_projecteditor_contextmenu_01.js => devtools/client/projecteditor/test/browser_projecteditor_contextmenu_01.js rename : browser/devtools/projecteditor/test/browser_projecteditor_contextmenu_02.js => devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js rename : browser/devtools/projecteditor/test/browser_projecteditor_delete_file.js => devtools/client/projecteditor/test/browser_projecteditor_delete_file.js rename : browser/devtools/projecteditor/test/browser_projecteditor_editing_01.js => devtools/client/projecteditor/test/browser_projecteditor_editing_01.js rename : browser/devtools/projecteditor/test/browser_projecteditor_editors_image.js => devtools/client/projecteditor/test/browser_projecteditor_editors_image.js rename : browser/devtools/projecteditor/test/browser_projecteditor_external_change.js => devtools/client/projecteditor/test/browser_projecteditor_external_change.js rename : browser/devtools/projecteditor/test/browser_projecteditor_immediate_destroy.js => devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js rename : browser/devtools/projecteditor/test/browser_projecteditor_init.js => devtools/client/projecteditor/test/browser_projecteditor_init.js rename : browser/devtools/projecteditor/test/browser_projecteditor_menubar_01.js => devtools/client/projecteditor/test/browser_projecteditor_menubar_01.js rename : browser/devtools/projecteditor/test/browser_projecteditor_menubar_02.js => devtools/client/projecteditor/test/browser_projecteditor_menubar_02.js rename : browser/devtools/projecteditor/test/browser_projecteditor_new_file.js => devtools/client/projecteditor/test/browser_projecteditor_new_file.js rename : browser/devtools/projecteditor/test/browser_projecteditor_rename_file.js => devtools/client/projecteditor/test/browser_projecteditor_rename_file.js rename : browser/devtools/projecteditor/test/browser_projecteditor_stores.js => devtools/client/projecteditor/test/browser_projecteditor_stores.js rename : browser/devtools/projecteditor/test/browser_projecteditor_tree_selection_01.js => devtools/client/projecteditor/test/browser_projecteditor_tree_selection_01.js rename : browser/devtools/projecteditor/test/browser_projecteditor_tree_selection_02.js => devtools/client/projecteditor/test/browser_projecteditor_tree_selection_02.js rename : browser/devtools/projecteditor/test/head.js => devtools/client/projecteditor/test/head.js rename : browser/devtools/projecteditor/test/helper_edits.js => devtools/client/projecteditor/test/helper_edits.js rename : browser/devtools/projecteditor/test/helper_homepage.html => devtools/client/projecteditor/test/helper_homepage.html rename : browser/devtools/promisedebugger/moz.build => devtools/client/promisedebugger/moz.build rename : browser/devtools/promisedebugger/promise-controller.js => devtools/client/promisedebugger/promise-controller.js rename : browser/devtools/promisedebugger/promise-debugger.xhtml => devtools/client/promisedebugger/promise-debugger.xhtml rename : browser/devtools/promisedebugger/promise-panel.js => devtools/client/promisedebugger/promise-panel.js rename : browser/devtools/promisedebugger/test/.eslintrc => devtools/client/promisedebugger/test/.eslintrc rename : browser/devtools/promisedebugger/test/browser.ini => devtools/client/promisedebugger/test/browser.ini rename : browser/devtools/promisedebugger/test/head.js => devtools/client/promisedebugger/test/head.js rename : browser/devtools/responsivedesign/moz.build => devtools/client/responsivedesign/moz.build rename : browser/devtools/responsivedesign/resize-commands.js => devtools/client/responsivedesign/resize-commands.js rename : browser/devtools/responsivedesign/responsivedesign-child.js => devtools/client/responsivedesign/responsivedesign-child.js rename : browser/devtools/responsivedesign/responsivedesign.jsm => devtools/client/responsivedesign/responsivedesign.jsm rename : browser/devtools/responsivedesign/test/.eslintrc => devtools/client/responsivedesign/test/.eslintrc rename : browser/devtools/responsivedesign/test/browser.ini => devtools/client/responsivedesign/test/browser.ini rename : browser/devtools/responsivedesign/test/browser_responsive_cmd.js => devtools/client/responsivedesign/test/browser_responsive_cmd.js rename : browser/devtools/responsivedesign/test/browser_responsive_devicewidth.js => devtools/client/responsivedesign/test/browser_responsive_devicewidth.js rename : browser/devtools/responsivedesign/test/browser_responsivecomputedview.js => devtools/client/responsivedesign/test/browser_responsivecomputedview.js rename : browser/devtools/responsivedesign/test/browser_responsiveruleview.js => devtools/client/responsivedesign/test/browser_responsiveruleview.js rename : browser/devtools/responsivedesign/test/browser_responsiveui.js => devtools/client/responsivedesign/test/browser_responsiveui.js rename : browser/devtools/responsivedesign/test/browser_responsiveui_touch.js => devtools/client/responsivedesign/test/browser_responsiveui_touch.js rename : browser/devtools/responsivedesign/test/browser_responsiveuiaddcustompreset.js => devtools/client/responsivedesign/test/browser_responsiveuiaddcustompreset.js rename : browser/devtools/responsivedesign/test/head.js => devtools/client/responsivedesign/test/head.js rename : browser/devtools/responsivedesign/test/touch.html => devtools/client/responsivedesign/test/touch.html rename : browser/devtools/scratchpad/moz.build => devtools/client/scratchpad/moz.build rename : browser/devtools/scratchpad/scratchpad-commands.js => devtools/client/scratchpad/scratchpad-commands.js rename : browser/devtools/scratchpad/scratchpad-manager.jsm => devtools/client/scratchpad/scratchpad-manager.jsm rename : browser/devtools/scratchpad/scratchpad-panel.js => devtools/client/scratchpad/scratchpad-panel.js rename : browser/devtools/scratchpad/scratchpad.js => devtools/client/scratchpad/scratchpad.js rename : browser/devtools/scratchpad/scratchpad.xul => devtools/client/scratchpad/scratchpad.xul rename : browser/devtools/scratchpad/test/.eslintrc => devtools/client/scratchpad/test/.eslintrc rename : browser/devtools/scratchpad/test/NS_ERROR_ILLEGAL_INPUT.txt => devtools/client/scratchpad/test/NS_ERROR_ILLEGAL_INPUT.txt rename : browser/devtools/scratchpad/test/browser.ini => devtools/client/scratchpad/test/browser.ini rename : browser/devtools/scratchpad/test/browser_scratchpad_autocomplete.js => devtools/client/scratchpad/test/browser_scratchpad_autocomplete.js rename : browser/devtools/scratchpad/test/browser_scratchpad_browser_last_window_closing.js => devtools/client/scratchpad/test/browser_scratchpad_browser_last_window_closing.js rename : browser/devtools/scratchpad/test/browser_scratchpad_chrome_context_pref.js => devtools/client/scratchpad/test/browser_scratchpad_chrome_context_pref.js rename : browser/devtools/scratchpad/test/browser_scratchpad_close_toolbox.js => devtools/client/scratchpad/test/browser_scratchpad_close_toolbox.js rename : browser/devtools/scratchpad/test/browser_scratchpad_confirm_close.js => devtools/client/scratchpad/test/browser_scratchpad_confirm_close.js rename : browser/devtools/scratchpad/test/browser_scratchpad_contexts.js => devtools/client/scratchpad/test/browser_scratchpad_contexts.js rename : browser/devtools/scratchpad/test/browser_scratchpad_disable_view_menu_items.js => devtools/client/scratchpad/test/browser_scratchpad_disable_view_menu_items.js rename : browser/devtools/scratchpad/test/browser_scratchpad_display_non_error_exceptions.js => devtools/client/scratchpad/test/browser_scratchpad_display_non_error_exceptions.js rename : browser/devtools/scratchpad/test/browser_scratchpad_display_outputs_errors.js => devtools/client/scratchpad/test/browser_scratchpad_display_outputs_errors.js rename : browser/devtools/scratchpad/test/browser_scratchpad_edit_ui_updates.js => devtools/client/scratchpad/test/browser_scratchpad_edit_ui_updates.js rename : browser/devtools/scratchpad/test/browser_scratchpad_eval_func.js => devtools/client/scratchpad/test/browser_scratchpad_eval_func.js rename : browser/devtools/scratchpad/test/browser_scratchpad_execute_print.js => devtools/client/scratchpad/test/browser_scratchpad_execute_print.js rename : browser/devtools/scratchpad/test/browser_scratchpad_falsy.js => devtools/client/scratchpad/test/browser_scratchpad_falsy.js rename : browser/devtools/scratchpad/test/browser_scratchpad_files.js => devtools/client/scratchpad/test/browser_scratchpad_files.js rename : browser/devtools/scratchpad/test/browser_scratchpad_goto_line_ui.js => devtools/client/scratchpad/test/browser_scratchpad_goto_line_ui.js rename : browser/devtools/scratchpad/test/browser_scratchpad_help_key.js => devtools/client/scratchpad/test/browser_scratchpad_help_key.js rename : browser/devtools/scratchpad/test/browser_scratchpad_initialization.js => devtools/client/scratchpad/test/browser_scratchpad_initialization.js rename : browser/devtools/scratchpad/test/browser_scratchpad_inspect.js => devtools/client/scratchpad/test/browser_scratchpad_inspect.js rename : browser/devtools/scratchpad/test/browser_scratchpad_inspect_primitives.js => devtools/client/scratchpad/test/browser_scratchpad_inspect_primitives.js rename : browser/devtools/scratchpad/test/browser_scratchpad_long_string.js => devtools/client/scratchpad/test/browser_scratchpad_long_string.js rename : browser/devtools/scratchpad/test/browser_scratchpad_modeline.js => devtools/client/scratchpad/test/browser_scratchpad_modeline.js rename : browser/devtools/scratchpad/test/browser_scratchpad_open.js => devtools/client/scratchpad/test/browser_scratchpad_open.js rename : browser/devtools/scratchpad/test/browser_scratchpad_open_error_console.js => devtools/client/scratchpad/test/browser_scratchpad_open_error_console.js rename : browser/devtools/scratchpad/test/browser_scratchpad_pprint-02.js => devtools/client/scratchpad/test/browser_scratchpad_pprint-02.js rename : browser/devtools/scratchpad/test/browser_scratchpad_pprint.js => devtools/client/scratchpad/test/browser_scratchpad_pprint.js rename : browser/devtools/scratchpad/test/browser_scratchpad_pprint_error_goto_line.js => devtools/client/scratchpad/test/browser_scratchpad_pprint_error_goto_line.js rename : browser/devtools/scratchpad/test/browser_scratchpad_recent_files.js => devtools/client/scratchpad/test/browser_scratchpad_recent_files.js rename : browser/devtools/scratchpad/test/browser_scratchpad_reload_and_run.js => devtools/client/scratchpad/test/browser_scratchpad_reload_and_run.js rename : browser/devtools/scratchpad/test/browser_scratchpad_remember_view_options.js => devtools/client/scratchpad/test/browser_scratchpad_remember_view_options.js rename : browser/devtools/scratchpad/test/browser_scratchpad_reset_undo.js => devtools/client/scratchpad/test/browser_scratchpad_reset_undo.js rename : browser/devtools/scratchpad/test/browser_scratchpad_restore.js => devtools/client/scratchpad/test/browser_scratchpad_restore.js rename : browser/devtools/scratchpad/test/browser_scratchpad_revert_to_saved.js => devtools/client/scratchpad/test/browser_scratchpad_revert_to_saved.js rename : browser/devtools/scratchpad/test/browser_scratchpad_run_error_goto_line.js => devtools/client/scratchpad/test/browser_scratchpad_run_error_goto_line.js rename : browser/devtools/scratchpad/test/browser_scratchpad_tab.js => devtools/client/scratchpad/test/browser_scratchpad_tab.js rename : browser/devtools/scratchpad/test/browser_scratchpad_tab_switch.js => devtools/client/scratchpad/test/browser_scratchpad_tab_switch.js rename : browser/devtools/scratchpad/test/browser_scratchpad_throw_output.js => devtools/client/scratchpad/test/browser_scratchpad_throw_output.js rename : browser/devtools/scratchpad/test/browser_scratchpad_ui.js => devtools/client/scratchpad/test/browser_scratchpad_ui.js rename : browser/devtools/scratchpad/test/browser_scratchpad_unsaved.js => devtools/client/scratchpad/test/browser_scratchpad_unsaved.js rename : browser/devtools/scratchpad/test/browser_scratchpad_wrong_window_focus.js => devtools/client/scratchpad/test/browser_scratchpad_wrong_window_focus.js rename : browser/devtools/scratchpad/test/head.js => devtools/client/scratchpad/test/head.js rename : browser/devtools/shadereditor/moz.build => devtools/client/shadereditor/moz.build rename : browser/devtools/shadereditor/panel.js => devtools/client/shadereditor/panel.js rename : browser/devtools/shadereditor/shadereditor.js => devtools/client/shadereditor/shadereditor.js rename : browser/devtools/shadereditor/shadereditor.xul => devtools/client/shadereditor/shadereditor.xul rename : browser/devtools/shadereditor/test/.eslintrc => devtools/client/shadereditor/test/.eslintrc rename : browser/devtools/shadereditor/test/browser.ini => devtools/client/shadereditor/test/browser.ini rename : browser/devtools/shadereditor/test/browser_se_aaa_run_first_leaktest.js => devtools/client/shadereditor/test/browser_se_aaa_run_first_leaktest.js rename : browser/devtools/shadereditor/test/browser_se_bfcache.js => devtools/client/shadereditor/test/browser_se_bfcache.js rename : browser/devtools/shadereditor/test/browser_se_editors-contents.js => devtools/client/shadereditor/test/browser_se_editors-contents.js rename : browser/devtools/shadereditor/test/browser_se_editors-error-gutter.js => devtools/client/shadereditor/test/browser_se_editors-error-gutter.js rename : browser/devtools/shadereditor/test/browser_se_editors-error-tooltip.js => devtools/client/shadereditor/test/browser_se_editors-error-tooltip.js rename : browser/devtools/shadereditor/test/browser_se_editors-lazy-init.js => devtools/client/shadereditor/test/browser_se_editors-lazy-init.js rename : browser/devtools/shadereditor/test/browser_se_first-run.js => devtools/client/shadereditor/test/browser_se_first-run.js rename : browser/devtools/shadereditor/test/browser_se_navigation.js => devtools/client/shadereditor/test/browser_se_navigation.js rename : browser/devtools/shadereditor/test/browser_se_programs-blackbox-01.js => devtools/client/shadereditor/test/browser_se_programs-blackbox-01.js rename : browser/devtools/shadereditor/test/browser_se_programs-blackbox-02.js => devtools/client/shadereditor/test/browser_se_programs-blackbox-02.js rename : browser/devtools/shadereditor/test/browser_se_programs-cache.js => devtools/client/shadereditor/test/browser_se_programs-cache.js rename : browser/devtools/shadereditor/test/browser_se_programs-highlight-01.js => devtools/client/shadereditor/test/browser_se_programs-highlight-01.js rename : browser/devtools/shadereditor/test/browser_se_programs-highlight-02.js => devtools/client/shadereditor/test/browser_se_programs-highlight-02.js rename : browser/devtools/shadereditor/test/browser_se_programs-list.js => devtools/client/shadereditor/test/browser_se_programs-list.js rename : browser/devtools/shadereditor/test/browser_se_shaders-edit-01.js => devtools/client/shadereditor/test/browser_se_shaders-edit-01.js rename : browser/devtools/shadereditor/test/browser_se_shaders-edit-02.js => devtools/client/shadereditor/test/browser_se_shaders-edit-02.js rename : browser/devtools/shadereditor/test/browser_se_shaders-edit-03.js => devtools/client/shadereditor/test/browser_se_shaders-edit-03.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-01.js => devtools/client/shadereditor/test/browser_webgl-actor-test-01.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-02.js => devtools/client/shadereditor/test/browser_webgl-actor-test-02.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-03.js => devtools/client/shadereditor/test/browser_webgl-actor-test-03.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-04.js => devtools/client/shadereditor/test/browser_webgl-actor-test-04.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-05.js => devtools/client/shadereditor/test/browser_webgl-actor-test-05.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-06.js => devtools/client/shadereditor/test/browser_webgl-actor-test-06.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-07.js => devtools/client/shadereditor/test/browser_webgl-actor-test-07.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-08.js => devtools/client/shadereditor/test/browser_webgl-actor-test-08.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-09.js => devtools/client/shadereditor/test/browser_webgl-actor-test-09.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-10.js => devtools/client/shadereditor/test/browser_webgl-actor-test-10.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-11.js => devtools/client/shadereditor/test/browser_webgl-actor-test-11.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-12.js => devtools/client/shadereditor/test/browser_webgl-actor-test-12.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-13.js => devtools/client/shadereditor/test/browser_webgl-actor-test-13.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-14.js => devtools/client/shadereditor/test/browser_webgl-actor-test-14.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-15.js => devtools/client/shadereditor/test/browser_webgl-actor-test-15.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-16.js => devtools/client/shadereditor/test/browser_webgl-actor-test-16.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-17.js => devtools/client/shadereditor/test/browser_webgl-actor-test-17.js rename : browser/devtools/shadereditor/test/browser_webgl-actor-test-18.js => devtools/client/shadereditor/test/browser_webgl-actor-test-18.js rename : browser/devtools/shadereditor/test/doc_blended-geometry.html => devtools/client/shadereditor/test/doc_blended-geometry.html rename : browser/devtools/shadereditor/test/doc_multiple-contexts.html => devtools/client/shadereditor/test/doc_multiple-contexts.html rename : browser/devtools/shadereditor/test/doc_overlapping-geometry.html => devtools/client/shadereditor/test/doc_overlapping-geometry.html rename : browser/devtools/shadereditor/test/doc_shader-order.html => devtools/client/shadereditor/test/doc_shader-order.html rename : browser/devtools/shadereditor/test/doc_simple-canvas.html => devtools/client/shadereditor/test/doc_simple-canvas.html rename : browser/devtools/shadereditor/test/head.js => devtools/client/shadereditor/test/head.js rename : browser/devtools/shared/AppCacheUtils.jsm => devtools/client/shared/AppCacheUtils.jsm rename : browser/devtools/shared/Curl.jsm => devtools/client/shared/Curl.jsm rename : browser/devtools/shared/DOMHelpers.jsm => devtools/client/shared/DOMHelpers.jsm rename : browser/devtools/shared/DeveloperToolbar.jsm => devtools/client/shared/DeveloperToolbar.jsm rename : browser/devtools/shared/Jsbeautify.jsm => devtools/client/shared/Jsbeautify.jsm rename : browser/devtools/shared/Parser.jsm => devtools/client/shared/Parser.jsm rename : browser/devtools/shared/SplitView.jsm => devtools/client/shared/SplitView.jsm rename : browser/devtools/shared/autocomplete-popup.js => devtools/client/shared/autocomplete-popup.js rename : browser/devtools/shared/browser-loader.js => devtools/client/shared/browser-loader.js rename : browser/devtools/shared/devices.js => devtools/client/shared/devices.js rename : browser/devtools/shared/doorhanger.js => devtools/client/shared/doorhanger.js rename : browser/devtools/shared/frame-script-utils.js => devtools/client/shared/frame-script-utils.js rename : browser/devtools/shared/getjson.js => devtools/client/shared/getjson.js rename : browser/devtools/shared/inplace-editor.js => devtools/client/shared/inplace-editor.js rename : browser/devtools/shared/moz.build => devtools/client/shared/moz.build rename : browser/devtools/shared/node-attribute-parser.js => devtools/client/shared/node-attribute-parser.js rename : browser/devtools/shared/observable-object.js => devtools/client/shared/observable-object.js rename : browser/devtools/shared/options-view.js => devtools/client/shared/options-view.js rename : browser/devtools/shared/poller.js => devtools/client/shared/poller.js rename : browser/devtools/shared/redux/create-store.js => devtools/client/shared/redux/create-store.js rename : browser/devtools/shared/redux/middleware/log.js => devtools/client/shared/redux/middleware/log.js rename : browser/devtools/shared/redux/middleware/thunk.js => devtools/client/shared/redux/middleware/thunk.js rename : browser/devtools/shared/redux/middleware/wait-service.js => devtools/client/shared/redux/middleware/wait-service.js rename : browser/devtools/shared/redux/moz.build => devtools/client/shared/redux/moz.build rename : browser/devtools/shared/redux/reducers.js => devtools/client/shared/redux/reducers.js rename : browser/devtools/shared/source-utils.js => devtools/client/shared/source-utils.js rename : browser/devtools/shared/splitview.css => devtools/client/shared/splitview.css rename : browser/devtools/shared/telemetry.js => devtools/client/shared/telemetry.js rename : browser/devtools/shared/test/.eslintrc => devtools/client/shared/test/.eslintrc rename : browser/devtools/shared/test/browser.ini => devtools/client/shared/test/browser.ini rename : browser/devtools/shared/test/browser_css_color.js => devtools/client/shared/test/browser_css_color.js rename : browser/devtools/shared/test/browser_cubic-bezier-01.js => devtools/client/shared/test/browser_cubic-bezier-01.js rename : browser/devtools/shared/test/browser_cubic-bezier-02.js => devtools/client/shared/test/browser_cubic-bezier-02.js rename : browser/devtools/shared/test/browser_cubic-bezier-03.js => devtools/client/shared/test/browser_cubic-bezier-03.js rename : browser/devtools/shared/test/browser_cubic-bezier-04.js => devtools/client/shared/test/browser_cubic-bezier-04.js rename : browser/devtools/shared/test/browser_cubic-bezier-05.js => devtools/client/shared/test/browser_cubic-bezier-05.js rename : browser/devtools/shared/test/browser_cubic-bezier-06.js => devtools/client/shared/test/browser_cubic-bezier-06.js rename : browser/devtools/shared/test/browser_devices.js => devtools/client/shared/test/browser_devices.js rename : browser/devtools/shared/test/browser_devices.json => devtools/client/shared/test/browser_devices.json rename : browser/devtools/shared/test/browser_filter-editor-01.js => devtools/client/shared/test/browser_filter-editor-01.js rename : browser/devtools/shared/test/browser_filter-editor-02.js => devtools/client/shared/test/browser_filter-editor-02.js rename : browser/devtools/shared/test/browser_filter-editor-03.js => devtools/client/shared/test/browser_filter-editor-03.js rename : browser/devtools/shared/test/browser_filter-editor-04.js => devtools/client/shared/test/browser_filter-editor-04.js rename : browser/devtools/shared/test/browser_filter-editor-05.js => devtools/client/shared/test/browser_filter-editor-05.js rename : browser/devtools/shared/test/browser_filter-editor-06.js => devtools/client/shared/test/browser_filter-editor-06.js rename : browser/devtools/shared/test/browser_filter-editor-07.js => devtools/client/shared/test/browser_filter-editor-07.js rename : browser/devtools/shared/test/browser_filter-editor-08.js => devtools/client/shared/test/browser_filter-editor-08.js rename : browser/devtools/shared/test/browser_filter-editor-09.js => devtools/client/shared/test/browser_filter-editor-09.js rename : browser/devtools/shared/test/browser_filter-editor-10.js => devtools/client/shared/test/browser_filter-editor-10.js rename : browser/devtools/shared/test/browser_filter-presets-01.js => devtools/client/shared/test/browser_filter-presets-01.js rename : browser/devtools/shared/test/browser_filter-presets-02.js => devtools/client/shared/test/browser_filter-presets-02.js rename : browser/devtools/shared/test/browser_filter-presets-03.js => devtools/client/shared/test/browser_filter-presets-03.js rename : browser/devtools/shared/test/browser_flame-graph-01.js => devtools/client/shared/test/browser_flame-graph-01.js rename : browser/devtools/shared/test/browser_flame-graph-02.js => devtools/client/shared/test/browser_flame-graph-02.js rename : browser/devtools/shared/test/browser_flame-graph-03a.js => devtools/client/shared/test/browser_flame-graph-03a.js rename : browser/devtools/shared/test/browser_flame-graph-03b.js => devtools/client/shared/test/browser_flame-graph-03b.js rename : browser/devtools/shared/test/browser_flame-graph-03c.js => devtools/client/shared/test/browser_flame-graph-03c.js rename : browser/devtools/shared/test/browser_flame-graph-04.js => devtools/client/shared/test/browser_flame-graph-04.js rename : browser/devtools/shared/test/browser_flame-graph-utils-01.js => devtools/client/shared/test/browser_flame-graph-utils-01.js rename : browser/devtools/shared/test/browser_flame-graph-utils-02.js => devtools/client/shared/test/browser_flame-graph-utils-02.js rename : browser/devtools/shared/test/browser_flame-graph-utils-03.js => devtools/client/shared/test/browser_flame-graph-utils-03.js rename : browser/devtools/shared/test/browser_flame-graph-utils-04.js => devtools/client/shared/test/browser_flame-graph-utils-04.js rename : browser/devtools/shared/test/browser_flame-graph-utils-05.js => devtools/client/shared/test/browser_flame-graph-utils-05.js rename : browser/devtools/shared/test/browser_flame-graph-utils-06.js => devtools/client/shared/test/browser_flame-graph-utils-06.js rename : browser/devtools/shared/test/browser_flame-graph-utils-hash.js => devtools/client/shared/test/browser_flame-graph-utils-hash.js rename : browser/devtools/shared/test/browser_graphs-01.js => devtools/client/shared/test/browser_graphs-01.js rename : browser/devtools/shared/test/browser_graphs-02.js => devtools/client/shared/test/browser_graphs-02.js rename : browser/devtools/shared/test/browser_graphs-03.js => devtools/client/shared/test/browser_graphs-03.js rename : browser/devtools/shared/test/browser_graphs-04.js => devtools/client/shared/test/browser_graphs-04.js rename : browser/devtools/shared/test/browser_graphs-05.js => devtools/client/shared/test/browser_graphs-05.js rename : browser/devtools/shared/test/browser_graphs-06.js => devtools/client/shared/test/browser_graphs-06.js rename : browser/devtools/shared/test/browser_graphs-07a.js => devtools/client/shared/test/browser_graphs-07a.js rename : browser/devtools/shared/test/browser_graphs-07b.js => devtools/client/shared/test/browser_graphs-07b.js rename : browser/devtools/shared/test/browser_graphs-07c.js => devtools/client/shared/test/browser_graphs-07c.js rename : browser/devtools/shared/test/browser_graphs-07d.js => devtools/client/shared/test/browser_graphs-07d.js rename : browser/devtools/shared/test/browser_graphs-07e.js => devtools/client/shared/test/browser_graphs-07e.js rename : browser/devtools/shared/test/browser_graphs-08.js => devtools/client/shared/test/browser_graphs-08.js rename : browser/devtools/shared/test/browser_graphs-09a.js => devtools/client/shared/test/browser_graphs-09a.js rename : browser/devtools/shared/test/browser_graphs-09b.js => devtools/client/shared/test/browser_graphs-09b.js rename : browser/devtools/shared/test/browser_graphs-09c.js => devtools/client/shared/test/browser_graphs-09c.js rename : browser/devtools/shared/test/browser_graphs-09d.js => devtools/client/shared/test/browser_graphs-09d.js rename : browser/devtools/shared/test/browser_graphs-09e.js => devtools/client/shared/test/browser_graphs-09e.js rename : browser/devtools/shared/test/browser_graphs-09f.js => devtools/client/shared/test/browser_graphs-09f.js rename : browser/devtools/shared/test/browser_graphs-10a.js => devtools/client/shared/test/browser_graphs-10a.js rename : browser/devtools/shared/test/browser_graphs-10b.js => devtools/client/shared/test/browser_graphs-10b.js rename : browser/devtools/shared/test/browser_graphs-10c.js => devtools/client/shared/test/browser_graphs-10c.js rename : browser/devtools/shared/test/browser_graphs-11a.js => devtools/client/shared/test/browser_graphs-11a.js rename : browser/devtools/shared/test/browser_graphs-11b.js => devtools/client/shared/test/browser_graphs-11b.js rename : browser/devtools/shared/test/browser_graphs-12.js => devtools/client/shared/test/browser_graphs-12.js rename : browser/devtools/shared/test/browser_graphs-13.js => devtools/client/shared/test/browser_graphs-13.js rename : browser/devtools/shared/test/browser_graphs-14.js => devtools/client/shared/test/browser_graphs-14.js rename : browser/devtools/shared/test/browser_graphs-15.js => devtools/client/shared/test/browser_graphs-15.js rename : browser/devtools/shared/test/browser_graphs-16.js => devtools/client/shared/test/browser_graphs-16.js rename : browser/devtools/shared/test/browser_inplace-editor-01.js => devtools/client/shared/test/browser_inplace-editor-01.js rename : browser/devtools/shared/test/browser_inplace-editor-02.js => devtools/client/shared/test/browser_inplace-editor-02.js rename : browser/devtools/shared/test/browser_layoutHelpers-getBoxQuads.html => devtools/client/shared/test/browser_layoutHelpers-getBoxQuads.html rename : browser/devtools/shared/test/browser_layoutHelpers-getBoxQuads.js => devtools/client/shared/test/browser_layoutHelpers-getBoxQuads.js rename : browser/devtools/shared/test/browser_layoutHelpers.html => devtools/client/shared/test/browser_layoutHelpers.html rename : browser/devtools/shared/test/browser_layoutHelpers.js => devtools/client/shared/test/browser_layoutHelpers.js rename : browser/devtools/shared/test/browser_mdn-docs-01.js => devtools/client/shared/test/browser_mdn-docs-01.js rename : browser/devtools/shared/test/browser_mdn-docs-02.js => devtools/client/shared/test/browser_mdn-docs-02.js rename : browser/devtools/shared/test/browser_mdn-docs-03.js => devtools/client/shared/test/browser_mdn-docs-03.js rename : browser/devtools/shared/test/browser_num-l10n.js => devtools/client/shared/test/browser_num-l10n.js rename : browser/devtools/shared/test/browser_observableobject.js => devtools/client/shared/test/browser_observableobject.js rename : browser/devtools/shared/test/browser_options-view-01.js => devtools/client/shared/test/browser_options-view-01.js rename : browser/devtools/shared/test/browser_outputparser.js => devtools/client/shared/test/browser_outputparser.js rename : browser/devtools/shared/test/browser_poller.js => devtools/client/shared/test/browser_poller.js rename : browser/devtools/shared/test/browser_prefs-01.js => devtools/client/shared/test/browser_prefs-01.js rename : browser/devtools/shared/test/browser_prefs-02.js => devtools/client/shared/test/browser_prefs-02.js rename : browser/devtools/shared/test/browser_spectrum.js => devtools/client/shared/test/browser_spectrum.js rename : browser/devtools/shared/test/browser_tableWidget_basic.js => devtools/client/shared/test/browser_tableWidget_basic.js rename : browser/devtools/shared/test/browser_tableWidget_keyboard_interaction.js => devtools/client/shared/test/browser_tableWidget_keyboard_interaction.js rename : browser/devtools/shared/test/browser_tableWidget_mouse_interaction.js => devtools/client/shared/test/browser_tableWidget_mouse_interaction.js rename : browser/devtools/shared/test/browser_telemetry_button_eyedropper.js => devtools/client/shared/test/browser_telemetry_button_eyedropper.js rename : browser/devtools/shared/test/browser_telemetry_button_paintflashing.js => devtools/client/shared/test/browser_telemetry_button_paintflashing.js rename : browser/devtools/shared/test/browser_telemetry_button_responsive.js => devtools/client/shared/test/browser_telemetry_button_responsive.js rename : browser/devtools/shared/test/browser_telemetry_button_scratchpad.js => devtools/client/shared/test/browser_telemetry_button_scratchpad.js rename : browser/devtools/shared/test/browser_telemetry_button_tilt.js => devtools/client/shared/test/browser_telemetry_button_tilt.js rename : browser/devtools/shared/test/browser_telemetry_sidebar.js => devtools/client/shared/test/browser_telemetry_sidebar.js rename : browser/devtools/shared/test/browser_telemetry_toolbox.js => devtools/client/shared/test/browser_telemetry_toolbox.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_canvasdebugger.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_canvasdebugger.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_inspector.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_inspector.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_jsdebugger.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_jsdebugger.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_jsprofiler.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_jsprofiler.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_netmonitor.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_netmonitor.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_options.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_options.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_shadereditor.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_shadereditor.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_storage.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_storage.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_styleeditor.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_styleeditor.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_webaudioeditor.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_webaudioeditor.js rename : browser/devtools/shared/test/browser_telemetry_toolboxtabs_webconsole.js => devtools/client/shared/test/browser_telemetry_toolboxtabs_webconsole.js rename : browser/devtools/shared/test/browser_templater_basic.html => devtools/client/shared/test/browser_templater_basic.html rename : browser/devtools/shared/test/browser_templater_basic.js => devtools/client/shared/test/browser_templater_basic.js rename : browser/devtools/shared/test/browser_theme.js => devtools/client/shared/test/browser_theme.js rename : browser/devtools/shared/test/browser_toolbar_basic.html => devtools/client/shared/test/browser_toolbar_basic.html rename : browser/devtools/shared/test/browser_toolbar_basic.js => devtools/client/shared/test/browser_toolbar_basic.js rename : browser/devtools/shared/test/browser_toolbar_tooltip.js => devtools/client/shared/test/browser_toolbar_tooltip.js rename : browser/devtools/shared/test/browser_toolbar_webconsole_errors_count.html => devtools/client/shared/test/browser_toolbar_webconsole_errors_count.html rename : browser/devtools/shared/test/browser_toolbar_webconsole_errors_count.js => devtools/client/shared/test/browser_toolbar_webconsole_errors_count.js rename : browser/devtools/shared/test/browser_treeWidget_basic.js => devtools/client/shared/test/browser_treeWidget_basic.js rename : browser/devtools/shared/test/browser_treeWidget_keyboard_interaction.js => devtools/client/shared/test/browser_treeWidget_keyboard_interaction.js rename : browser/devtools/shared/test/browser_treeWidget_mouse_interaction.js => devtools/client/shared/test/browser_treeWidget_mouse_interaction.js rename : browser/devtools/shared/test/doc_options-view.xul => devtools/client/shared/test/doc_options-view.xul rename : browser/devtools/shared/test/head.js => devtools/client/shared/test/head.js rename : browser/devtools/shared/test/html-mdn-css-basic-testing.html => devtools/client/shared/test/html-mdn-css-basic-testing.html rename : browser/devtools/shared/test/html-mdn-css-no-summary-or-syntax.html => devtools/client/shared/test/html-mdn-css-no-summary-or-syntax.html rename : browser/devtools/shared/test/html-mdn-css-no-summary.html => devtools/client/shared/test/html-mdn-css-no-summary.html rename : browser/devtools/shared/test/html-mdn-css-no-syntax.html => devtools/client/shared/test/html-mdn-css-no-syntax.html rename : browser/devtools/shared/test/html-mdn-css-syntax-old-style.html => devtools/client/shared/test/html-mdn-css-syntax-old-style.html rename : browser/devtools/shared/test/leakhunt.js => devtools/client/shared/test/leakhunt.js rename : browser/devtools/shared/test/test-actor-registry.js => devtools/client/shared/test/test-actor-registry.js rename : browser/devtools/shared/test/test-actor.js => devtools/client/shared/test/test-actor.js rename : browser/devtools/shared/test/unit/.eslintrc => devtools/client/shared/test/unit/.eslintrc rename : browser/devtools/shared/test/unit/test_VariablesView_filtering-without-controller.js => devtools/client/shared/test/unit/test_VariablesView_filtering-without-controller.js rename : browser/devtools/shared/test/unit/test_VariablesView_getString_promise.js => devtools/client/shared/test/unit/test_VariablesView_getString_promise.js rename : browser/devtools/shared/test/unit/test_advanceValidate.js => devtools/client/shared/test/unit/test_advanceValidate.js rename : browser/devtools/shared/test/unit/test_attribute-parsing-01.js => devtools/client/shared/test/unit/test_attribute-parsing-01.js rename : browser/devtools/shared/test/unit/test_attribute-parsing-02.js => devtools/client/shared/test/unit/test_attribute-parsing-02.js rename : browser/devtools/shared/test/unit/test_bezierCanvas.js => devtools/client/shared/test/unit/test_bezierCanvas.js rename : browser/devtools/shared/test/unit/test_cubicBezier.js => devtools/client/shared/test/unit/test_cubicBezier.js rename : browser/devtools/shared/test/unit/test_undoStack.js => devtools/client/shared/test/unit/test_undoStack.js rename : browser/devtools/shared/test/unit/xpcshell.ini => devtools/client/shared/test/unit/xpcshell.ini rename : browser/devtools/shared/theme-switching.js => devtools/client/shared/theme-switching.js rename : browser/devtools/shared/theme.js => devtools/client/shared/theme.js rename : browser/devtools/shared/undo.js => devtools/client/shared/undo.js rename : browser/devtools/shared/vendor/D3_LICENSE => devtools/client/shared/vendor/D3_LICENSE rename : browser/devtools/shared/vendor/DAGRE_D3_LICENSE => devtools/client/shared/vendor/DAGRE_D3_LICENSE rename : browser/devtools/shared/vendor/REDUX_LICENSE => devtools/client/shared/vendor/REDUX_LICENSE rename : browser/devtools/shared/vendor/d3.js => devtools/client/shared/vendor/d3.js rename : browser/devtools/shared/vendor/dagre-d3.js => devtools/client/shared/vendor/dagre-d3.js rename : browser/devtools/shared/vendor/moz.build => devtools/client/shared/vendor/moz.build rename : browser/devtools/shared/vendor/react-dev.js => devtools/client/shared/vendor/react-dev.js rename : browser/devtools/shared/vendor/react.js => devtools/client/shared/vendor/react.js rename : browser/devtools/shared/vendor/redux.js => devtools/client/shared/vendor/redux.js rename : browser/devtools/shared/widgets/AbstractTreeItem.jsm => devtools/client/shared/widgets/AbstractTreeItem.jsm rename : browser/devtools/shared/widgets/BarGraphWidget.js => devtools/client/shared/widgets/BarGraphWidget.js rename : browser/devtools/shared/widgets/BreadcrumbsWidget.jsm => devtools/client/shared/widgets/BreadcrumbsWidget.jsm rename : browser/devtools/shared/widgets/Chart.jsm => devtools/client/shared/widgets/Chart.jsm rename : browser/devtools/shared/widgets/CubicBezierPresets.js => devtools/client/shared/widgets/CubicBezierPresets.js rename : browser/devtools/shared/widgets/CubicBezierWidget.js => devtools/client/shared/widgets/CubicBezierWidget.js rename : browser/devtools/shared/widgets/FastListWidget.js => devtools/client/shared/widgets/FastListWidget.js rename : browser/devtools/shared/widgets/FilterWidget.js => devtools/client/shared/widgets/FilterWidget.js rename : browser/devtools/shared/widgets/FlameGraph.js => devtools/client/shared/widgets/FlameGraph.js rename : browser/devtools/shared/widgets/Graphs.js => devtools/client/shared/widgets/Graphs.js rename : browser/devtools/shared/widgets/GraphsWorker.js => devtools/client/shared/widgets/GraphsWorker.js rename : browser/devtools/shared/widgets/LineGraphWidget.js => devtools/client/shared/widgets/LineGraphWidget.js rename : browser/devtools/shared/widgets/MdnDocsWidget.js => devtools/client/shared/widgets/MdnDocsWidget.js rename : browser/devtools/shared/widgets/MountainGraphWidget.js => devtools/client/shared/widgets/MountainGraphWidget.js rename : browser/devtools/shared/widgets/SideMenuWidget.jsm => devtools/client/shared/widgets/SideMenuWidget.jsm rename : browser/devtools/shared/widgets/SimpleListWidget.jsm => devtools/client/shared/widgets/SimpleListWidget.jsm rename : browser/devtools/shared/widgets/Spectrum.js => devtools/client/shared/widgets/Spectrum.js rename : browser/devtools/shared/widgets/TableWidget.js => devtools/client/shared/widgets/TableWidget.js rename : browser/devtools/shared/widgets/Tooltip.js => devtools/client/shared/widgets/Tooltip.js rename : browser/devtools/shared/widgets/TreeWidget.js => devtools/client/shared/widgets/TreeWidget.js rename : browser/devtools/shared/widgets/VariablesView.jsm => devtools/client/shared/widgets/VariablesView.jsm rename : browser/devtools/shared/widgets/VariablesView.xul => devtools/client/shared/widgets/VariablesView.xul rename : browser/devtools/shared/widgets/VariablesViewController.jsm => devtools/client/shared/widgets/VariablesViewController.jsm rename : browser/devtools/shared/widgets/ViewHelpers.jsm => devtools/client/shared/widgets/ViewHelpers.jsm rename : browser/devtools/shared/widgets/cubic-bezier-frame.xhtml => devtools/client/shared/widgets/cubic-bezier-frame.xhtml rename : browser/devtools/shared/widgets/cubic-bezier.css => devtools/client/shared/widgets/cubic-bezier.css rename : browser/devtools/shared/widgets/filter-frame.xhtml => devtools/client/shared/widgets/filter-frame.xhtml rename : browser/devtools/shared/widgets/filter-widget.css => devtools/client/shared/widgets/filter-widget.css rename : browser/devtools/shared/widgets/graphs-frame.xhtml => devtools/client/shared/widgets/graphs-frame.xhtml rename : browser/devtools/shared/widgets/mdn-docs-frame.xhtml => devtools/client/shared/widgets/mdn-docs-frame.xhtml rename : browser/devtools/shared/widgets/mdn-docs.css => devtools/client/shared/widgets/mdn-docs.css rename : browser/devtools/shared/widgets/spectrum-frame.xhtml => devtools/client/shared/widgets/spectrum-frame.xhtml rename : browser/devtools/shared/widgets/spectrum.css => devtools/client/shared/widgets/spectrum.css rename : browser/devtools/shared/widgets/widgets.css => devtools/client/shared/widgets/widgets.css rename : browser/devtools/sourceeditor/autocomplete.js => devtools/client/sourceeditor/autocomplete.js rename : browser/devtools/sourceeditor/codemirror/LICENSE => devtools/client/sourceeditor/codemirror/LICENSE rename : browser/devtools/sourceeditor/codemirror/README => devtools/client/sourceeditor/codemirror/README rename : browser/devtools/sourceeditor/codemirror/codemirror.css => devtools/client/sourceeditor/codemirror/codemirror.css rename : browser/devtools/sourceeditor/codemirror/codemirror.js => devtools/client/sourceeditor/codemirror/codemirror.js rename : browser/devtools/sourceeditor/codemirror/comment/comment.js => devtools/client/sourceeditor/codemirror/comment/comment.js rename : browser/devtools/sourceeditor/codemirror/comment/continuecomment.js => devtools/client/sourceeditor/codemirror/comment/continuecomment.js rename : browser/devtools/sourceeditor/codemirror/dialog/dialog.css => devtools/client/sourceeditor/codemirror/dialog/dialog.css rename : browser/devtools/sourceeditor/codemirror/dialog/dialog.js => devtools/client/sourceeditor/codemirror/dialog/dialog.js rename : browser/devtools/sourceeditor/codemirror/edit/closebrackets.js => devtools/client/sourceeditor/codemirror/edit/closebrackets.js rename : browser/devtools/sourceeditor/codemirror/edit/closetag.js => devtools/client/sourceeditor/codemirror/edit/closetag.js rename : browser/devtools/sourceeditor/codemirror/edit/continuelist.js => devtools/client/sourceeditor/codemirror/edit/continuelist.js rename : browser/devtools/sourceeditor/codemirror/edit/matchbrackets.js => devtools/client/sourceeditor/codemirror/edit/matchbrackets.js rename : browser/devtools/sourceeditor/codemirror/edit/matchtags.js => devtools/client/sourceeditor/codemirror/edit/matchtags.js rename : browser/devtools/sourceeditor/codemirror/edit/trailingspace.js => devtools/client/sourceeditor/codemirror/edit/trailingspace.js rename : browser/devtools/sourceeditor/codemirror/fold/brace-fold.js => devtools/client/sourceeditor/codemirror/fold/brace-fold.js rename : browser/devtools/sourceeditor/codemirror/fold/comment-fold.js => devtools/client/sourceeditor/codemirror/fold/comment-fold.js rename : browser/devtools/sourceeditor/codemirror/fold/foldcode.js => devtools/client/sourceeditor/codemirror/fold/foldcode.js rename : browser/devtools/sourceeditor/codemirror/fold/foldgutter.css => devtools/client/sourceeditor/codemirror/fold/foldgutter.css rename : browser/devtools/sourceeditor/codemirror/fold/foldgutter.js => devtools/client/sourceeditor/codemirror/fold/foldgutter.js rename : browser/devtools/sourceeditor/codemirror/fold/indent-fold.js => devtools/client/sourceeditor/codemirror/fold/indent-fold.js rename : browser/devtools/sourceeditor/codemirror/fold/markdown-fold.js => devtools/client/sourceeditor/codemirror/fold/markdown-fold.js rename : browser/devtools/sourceeditor/codemirror/fold/xml-fold.js => devtools/client/sourceeditor/codemirror/fold/xml-fold.js rename : browser/devtools/sourceeditor/codemirror/hint/show-hint.js => devtools/client/sourceeditor/codemirror/hint/show-hint.js rename : browser/devtools/sourceeditor/codemirror/keymap/emacs.js => devtools/client/sourceeditor/codemirror/keymap/emacs.js rename : browser/devtools/sourceeditor/codemirror/keymap/sublime.js => devtools/client/sourceeditor/codemirror/keymap/sublime.js rename : browser/devtools/sourceeditor/codemirror/keymap/vim.js => devtools/client/sourceeditor/codemirror/keymap/vim.js rename : browser/devtools/sourceeditor/codemirror/mode/clike.js => devtools/client/sourceeditor/codemirror/mode/clike.js rename : browser/devtools/sourceeditor/codemirror/mode/css.js => devtools/client/sourceeditor/codemirror/mode/css.js rename : browser/devtools/sourceeditor/codemirror/mode/htmlmixed.js => devtools/client/sourceeditor/codemirror/mode/htmlmixed.js rename : browser/devtools/sourceeditor/codemirror/mode/javascript.js => devtools/client/sourceeditor/codemirror/mode/javascript.js rename : browser/devtools/sourceeditor/codemirror/mode/xml.js => devtools/client/sourceeditor/codemirror/mode/xml.js rename : browser/devtools/sourceeditor/codemirror/mozilla.css => devtools/client/sourceeditor/codemirror/mozilla.css rename : browser/devtools/sourceeditor/codemirror/search/match-highlighter.js => devtools/client/sourceeditor/codemirror/search/match-highlighter.js rename : browser/devtools/sourceeditor/codemirror/search/search.js => devtools/client/sourceeditor/codemirror/search/search.js rename : browser/devtools/sourceeditor/codemirror/search/searchcursor.js => devtools/client/sourceeditor/codemirror/search/searchcursor.js rename : browser/devtools/sourceeditor/codemirror/selection/active-line.js => devtools/client/sourceeditor/codemirror/selection/active-line.js rename : browser/devtools/sourceeditor/codemirror/selection/mark-selection.js => devtools/client/sourceeditor/codemirror/selection/mark-selection.js rename : browser/devtools/sourceeditor/codemirror/tern/tern.css => devtools/client/sourceeditor/codemirror/tern/tern.css rename : browser/devtools/sourceeditor/codemirror/tern/tern.js => devtools/client/sourceeditor/codemirror/tern/tern.js rename : browser/devtools/sourceeditor/css-autocompleter.js => devtools/client/sourceeditor/css-autocompleter.js rename : browser/devtools/sourceeditor/css-tokenizer.js => devtools/client/sourceeditor/css-tokenizer.js rename : browser/devtools/sourceeditor/debugger.js => devtools/client/sourceeditor/debugger.js rename : browser/devtools/sourceeditor/editor.js => devtools/client/sourceeditor/editor.js rename : browser/devtools/sourceeditor/moz.build => devtools/client/sourceeditor/moz.build rename : browser/devtools/sourceeditor/test/.eslintrc => devtools/client/sourceeditor/test/.eslintrc rename : browser/devtools/sourceeditor/test/browser.ini => devtools/client/sourceeditor/test/browser.ini rename : browser/devtools/sourceeditor/test/browser_codemirror.js => devtools/client/sourceeditor/test/browser_codemirror.js rename : browser/devtools/sourceeditor/test/browser_css_autocompletion.js => devtools/client/sourceeditor/test/browser_css_autocompletion.js rename : browser/devtools/sourceeditor/test/browser_css_getInfo.js => devtools/client/sourceeditor/test/browser_css_getInfo.js rename : browser/devtools/sourceeditor/test/browser_css_statemachine.js => devtools/client/sourceeditor/test/browser_css_statemachine.js rename : browser/devtools/sourceeditor/test/browser_detectindent.js => devtools/client/sourceeditor/test/browser_detectindent.js rename : browser/devtools/sourceeditor/test/browser_editor_addons.js => devtools/client/sourceeditor/test/browser_editor_addons.js rename : browser/devtools/sourceeditor/test/browser_editor_autocomplete_basic.js => devtools/client/sourceeditor/test/browser_editor_autocomplete_basic.js rename : browser/devtools/sourceeditor/test/browser_editor_autocomplete_events.js => devtools/client/sourceeditor/test/browser_editor_autocomplete_events.js rename : browser/devtools/sourceeditor/test/browser_editor_autocomplete_js.js => devtools/client/sourceeditor/test/browser_editor_autocomplete_js.js rename : browser/devtools/sourceeditor/test/browser_editor_basic.js => devtools/client/sourceeditor/test/browser_editor_basic.js rename : browser/devtools/sourceeditor/test/browser_editor_cursor.js => devtools/client/sourceeditor/test/browser_editor_cursor.js rename : browser/devtools/sourceeditor/test/browser_editor_find_again.js => devtools/client/sourceeditor/test/browser_editor_find_again.js rename : browser/devtools/sourceeditor/test/browser_editor_goto_line.js => devtools/client/sourceeditor/test/browser_editor_goto_line.js rename : browser/devtools/sourceeditor/test/browser_editor_history.js => devtools/client/sourceeditor/test/browser_editor_history.js rename : browser/devtools/sourceeditor/test/browser_editor_markers.js => devtools/client/sourceeditor/test/browser_editor_markers.js rename : browser/devtools/sourceeditor/test/browser_editor_movelines.js => devtools/client/sourceeditor/test/browser_editor_movelines.js rename : browser/devtools/sourceeditor/test/browser_editor_prefs.js => devtools/client/sourceeditor/test/browser_editor_prefs.js rename : browser/devtools/sourceeditor/test/browser_editor_script_injection.js => devtools/client/sourceeditor/test/browser_editor_script_injection.js rename : browser/devtools/sourceeditor/test/browser_vimemacs.js => devtools/client/sourceeditor/test/browser_vimemacs.js rename : browser/devtools/sourceeditor/test/cm_comment_test.js => devtools/client/sourceeditor/test/cm_comment_test.js rename : browser/devtools/sourceeditor/test/cm_doc_test.js => devtools/client/sourceeditor/test/cm_doc_test.js rename : browser/devtools/sourceeditor/test/cm_driver.js => devtools/client/sourceeditor/test/cm_driver.js rename : browser/devtools/sourceeditor/test/cm_emacs_test.js => devtools/client/sourceeditor/test/cm_emacs_test.js rename : browser/devtools/sourceeditor/test/cm_mode_javascript_test.js => devtools/client/sourceeditor/test/cm_mode_javascript_test.js rename : browser/devtools/sourceeditor/test/cm_mode_ruby.js => devtools/client/sourceeditor/test/cm_mode_ruby.js rename : browser/devtools/sourceeditor/test/cm_mode_test.css => devtools/client/sourceeditor/test/cm_mode_test.css rename : browser/devtools/sourceeditor/test/cm_mode_test.js => devtools/client/sourceeditor/test/cm_mode_test.js rename : browser/devtools/sourceeditor/test/cm_multi_test.js => devtools/client/sourceeditor/test/cm_multi_test.js rename : browser/devtools/sourceeditor/test/cm_script_injection_test.js => devtools/client/sourceeditor/test/cm_script_injection_test.js rename : browser/devtools/sourceeditor/test/cm_search_test.js => devtools/client/sourceeditor/test/cm_search_test.js rename : browser/devtools/sourceeditor/test/cm_sublime_test.js => devtools/client/sourceeditor/test/cm_sublime_test.js rename : browser/devtools/sourceeditor/test/cm_test.js => devtools/client/sourceeditor/test/cm_test.js rename : browser/devtools/sourceeditor/test/cm_vim_test.js => devtools/client/sourceeditor/test/cm_vim_test.js rename : browser/devtools/sourceeditor/test/codemirror.html => devtools/client/sourceeditor/test/codemirror.html rename : browser/devtools/sourceeditor/test/css_autocompletion_tests.json => devtools/client/sourceeditor/test/css_autocompletion_tests.json rename : browser/devtools/sourceeditor/test/css_statemachine_testcases.css => devtools/client/sourceeditor/test/css_statemachine_testcases.css rename : browser/devtools/sourceeditor/test/css_statemachine_tests.json => devtools/client/sourceeditor/test/css_statemachine_tests.json rename : browser/devtools/sourceeditor/test/head.js => devtools/client/sourceeditor/test/head.js rename : browser/devtools/sourceeditor/test/helper_codemirror_runner.js => devtools/client/sourceeditor/test/helper_codemirror_runner.js rename : browser/devtools/sourceeditor/test/vimemacs.html => devtools/client/sourceeditor/test/vimemacs.html rename : browser/devtools/storage/moz.build => devtools/client/storage/moz.build rename : browser/devtools/storage/panel.js => devtools/client/storage/panel.js rename : browser/devtools/storage/storage.xul => devtools/client/storage/storage.xul rename : browser/devtools/storage/test/.eslintrc => devtools/client/storage/test/.eslintrc rename : browser/devtools/storage/test/browser.ini => devtools/client/storage/test/browser.ini rename : browser/devtools/storage/test/browser_storage_basic.js => devtools/client/storage/test/browser_storage_basic.js rename : browser/devtools/storage/test/browser_storage_dynamic_updates.js => devtools/client/storage/test/browser_storage_dynamic_updates.js rename : browser/devtools/storage/test/browser_storage_sidebar.js => devtools/client/storage/test/browser_storage_sidebar.js rename : browser/devtools/storage/test/browser_storage_values.js => devtools/client/storage/test/browser_storage_values.js rename : browser/devtools/storage/test/head.js => devtools/client/storage/test/head.js rename : browser/devtools/storage/test/storage-complex-values.html => devtools/client/storage/test/storage-complex-values.html rename : browser/devtools/storage/test/storage-listings.html => devtools/client/storage/test/storage-listings.html rename : browser/devtools/storage/test/storage-secured-iframe.html => devtools/client/storage/test/storage-secured-iframe.html rename : browser/devtools/storage/test/storage-unsecured-iframe.html => devtools/client/storage/test/storage-unsecured-iframe.html rename : browser/devtools/storage/test/storage-updates.html => devtools/client/storage/test/storage-updates.html rename : browser/devtools/storage/ui.js => devtools/client/storage/ui.js rename : browser/devtools/styleeditor/StyleEditorUI.jsm => devtools/client/styleeditor/StyleEditorUI.jsm rename : browser/devtools/styleeditor/StyleEditorUtil.jsm => devtools/client/styleeditor/StyleEditorUtil.jsm rename : browser/devtools/styleeditor/StyleSheetEditor.jsm => devtools/client/styleeditor/StyleSheetEditor.jsm rename : browser/devtools/styleeditor/moz.build => devtools/client/styleeditor/moz.build rename : browser/devtools/styleeditor/styleeditor-commands.js => devtools/client/styleeditor/styleeditor-commands.js rename : browser/devtools/styleeditor/styleeditor-panel.js => devtools/client/styleeditor/styleeditor-panel.js rename : browser/devtools/styleeditor/styleeditor.css => devtools/client/styleeditor/styleeditor.css rename : browser/devtools/styleeditor/styleeditor.xul => devtools/client/styleeditor/styleeditor.xul rename : browser/devtools/styleeditor/test/.eslintrc => devtools/client/styleeditor/test/.eslintrc rename : browser/devtools/styleeditor/test/autocomplete.html => devtools/client/styleeditor/test/autocomplete.html rename : browser/devtools/styleeditor/test/browser.ini => devtools/client/styleeditor/test/browser.ini rename : browser/devtools/styleeditor/test/browser_styleeditor_autocomplete-disabled.js => devtools/client/styleeditor/test/browser_styleeditor_autocomplete-disabled.js rename : browser/devtools/styleeditor/test/browser_styleeditor_autocomplete.js => devtools/client/styleeditor/test/browser_styleeditor_autocomplete.js rename : browser/devtools/styleeditor/test/browser_styleeditor_bug_740541_iframes.js => devtools/client/styleeditor/test/browser_styleeditor_bug_740541_iframes.js rename : browser/devtools/styleeditor/test/browser_styleeditor_bug_851132_middle_click.js => devtools/client/styleeditor/test/browser_styleeditor_bug_851132_middle_click.js rename : browser/devtools/styleeditor/test/browser_styleeditor_bug_870339.js => devtools/client/styleeditor/test/browser_styleeditor_bug_870339.js rename : browser/devtools/styleeditor/test/browser_styleeditor_cmd_edit.html => devtools/client/styleeditor/test/browser_styleeditor_cmd_edit.html rename : browser/devtools/styleeditor/test/browser_styleeditor_cmd_edit.js => devtools/client/styleeditor/test/browser_styleeditor_cmd_edit.js rename : browser/devtools/styleeditor/test/browser_styleeditor_enabled.js => devtools/client/styleeditor/test/browser_styleeditor_enabled.js rename : browser/devtools/styleeditor/test/browser_styleeditor_fetch-from-cache.js => devtools/client/styleeditor/test/browser_styleeditor_fetch-from-cache.js rename : browser/devtools/styleeditor/test/browser_styleeditor_filesave.js => devtools/client/styleeditor/test/browser_styleeditor_filesave.js rename : browser/devtools/styleeditor/test/browser_styleeditor_highlight-selector.js => devtools/client/styleeditor/test/browser_styleeditor_highlight-selector.js rename : browser/devtools/styleeditor/test/browser_styleeditor_import.js => devtools/client/styleeditor/test/browser_styleeditor_import.js rename : browser/devtools/styleeditor/test/browser_styleeditor_import_rule.js => devtools/client/styleeditor/test/browser_styleeditor_import_rule.js rename : browser/devtools/styleeditor/test/browser_styleeditor_init.js => devtools/client/styleeditor/test/browser_styleeditor_init.js rename : browser/devtools/styleeditor/test/browser_styleeditor_inline_friendly_names.js => devtools/client/styleeditor/test/browser_styleeditor_inline_friendly_names.js rename : browser/devtools/styleeditor/test/browser_styleeditor_loading.js => devtools/client/styleeditor/test/browser_styleeditor_loading.js rename : browser/devtools/styleeditor/test/browser_styleeditor_media_sidebar.js => devtools/client/styleeditor/test/browser_styleeditor_media_sidebar.js rename : browser/devtools/styleeditor/test/browser_styleeditor_media_sidebar_sourcemaps.js => devtools/client/styleeditor/test/browser_styleeditor_media_sidebar_sourcemaps.js rename : browser/devtools/styleeditor/test/browser_styleeditor_missing_stylesheet.js => devtools/client/styleeditor/test/browser_styleeditor_missing_stylesheet.js rename : browser/devtools/styleeditor/test/browser_styleeditor_navigate.js => devtools/client/styleeditor/test/browser_styleeditor_navigate.js rename : browser/devtools/styleeditor/test/browser_styleeditor_new.js => devtools/client/styleeditor/test/browser_styleeditor_new.js rename : browser/devtools/styleeditor/test/browser_styleeditor_nostyle.js => devtools/client/styleeditor/test/browser_styleeditor_nostyle.js rename : browser/devtools/styleeditor/test/browser_styleeditor_opentab.js => devtools/client/styleeditor/test/browser_styleeditor_opentab.js rename : browser/devtools/styleeditor/test/browser_styleeditor_pretty.js => devtools/client/styleeditor/test/browser_styleeditor_pretty.js rename : browser/devtools/styleeditor/test/browser_styleeditor_private_perwindowpb.js => devtools/client/styleeditor/test/browser_styleeditor_private_perwindowpb.js rename : browser/devtools/styleeditor/test/browser_styleeditor_reload.js => devtools/client/styleeditor/test/browser_styleeditor_reload.js rename : browser/devtools/styleeditor/test/browser_styleeditor_scroll.js => devtools/client/styleeditor/test/browser_styleeditor_scroll.js rename : browser/devtools/styleeditor/test/browser_styleeditor_selectstylesheet.js => devtools/client/styleeditor/test/browser_styleeditor_selectstylesheet.js rename : browser/devtools/styleeditor/test/browser_styleeditor_sourcemap_large.js => devtools/client/styleeditor/test/browser_styleeditor_sourcemap_large.js rename : browser/devtools/styleeditor/test/browser_styleeditor_sourcemap_watching.js => devtools/client/styleeditor/test/browser_styleeditor_sourcemap_watching.js rename : browser/devtools/styleeditor/test/browser_styleeditor_sourcemaps.js => devtools/client/styleeditor/test/browser_styleeditor_sourcemaps.js rename : browser/devtools/styleeditor/test/browser_styleeditor_sv_keynav.js => devtools/client/styleeditor/test/browser_styleeditor_sv_keynav.js rename : browser/devtools/styleeditor/test/browser_styleeditor_sv_resize.js => devtools/client/styleeditor/test/browser_styleeditor_sv_resize.js rename : browser/devtools/styleeditor/test/browser_styleeditor_transition_rule.js => devtools/client/styleeditor/test/browser_styleeditor_transition_rule.js rename : browser/devtools/styleeditor/test/browser_styleeditor_xul.js => devtools/client/styleeditor/test/browser_styleeditor_xul.js rename : browser/devtools/styleeditor/test/doc_long.css => devtools/client/styleeditor/test/doc_long.css rename : browser/devtools/styleeditor/test/doc_uncached.css => devtools/client/styleeditor/test/doc_uncached.css rename : browser/devtools/styleeditor/test/doc_uncached.html => devtools/client/styleeditor/test/doc_uncached.html rename : browser/devtools/styleeditor/test/doc_xulpage.xul => devtools/client/styleeditor/test/doc_xulpage.xul rename : browser/devtools/styleeditor/test/four.html => devtools/client/styleeditor/test/four.html rename : browser/devtools/styleeditor/test/head.js => devtools/client/styleeditor/test/head.js rename : browser/devtools/styleeditor/test/import.css => devtools/client/styleeditor/test/import.css rename : browser/devtools/styleeditor/test/import.html => devtools/client/styleeditor/test/import.html rename : browser/devtools/styleeditor/test/import2.css => devtools/client/styleeditor/test/import2.css rename : browser/devtools/styleeditor/test/inline-1.html => devtools/client/styleeditor/test/inline-1.html rename : browser/devtools/styleeditor/test/inline-2.html => devtools/client/styleeditor/test/inline-2.html rename : browser/devtools/styleeditor/test/longload.html => devtools/client/styleeditor/test/longload.html rename : browser/devtools/styleeditor/test/media-rules-sourcemaps.html => devtools/client/styleeditor/test/media-rules-sourcemaps.html rename : browser/devtools/styleeditor/test/media-rules.css => devtools/client/styleeditor/test/media-rules.css rename : browser/devtools/styleeditor/test/media-rules.html => devtools/client/styleeditor/test/media-rules.html rename : browser/devtools/styleeditor/test/media-small.css => devtools/client/styleeditor/test/media-small.css rename : browser/devtools/styleeditor/test/media.html => devtools/client/styleeditor/test/media.html rename : browser/devtools/styleeditor/test/minified.html => devtools/client/styleeditor/test/minified.html rename : browser/devtools/styleeditor/test/missing.html => devtools/client/styleeditor/test/missing.html rename : browser/devtools/styleeditor/test/nostyle.html => devtools/client/styleeditor/test/nostyle.html rename : browser/devtools/styleeditor/test/pretty.css => devtools/client/styleeditor/test/pretty.css rename : browser/devtools/styleeditor/test/resources_inpage.jsi => devtools/client/styleeditor/test/resources_inpage.jsi rename : browser/devtools/styleeditor/test/resources_inpage1.css => devtools/client/styleeditor/test/resources_inpage1.css rename : browser/devtools/styleeditor/test/resources_inpage2.css => devtools/client/styleeditor/test/resources_inpage2.css rename : browser/devtools/styleeditor/test/simple.css => devtools/client/styleeditor/test/simple.css rename : browser/devtools/styleeditor/test/simple.css.gz => devtools/client/styleeditor/test/simple.css.gz rename : browser/devtools/styleeditor/test/simple.css.gz^headers^ => devtools/client/styleeditor/test/simple.css.gz^headers^ rename : browser/devtools/styleeditor/test/simple.gz.html => devtools/client/styleeditor/test/simple.gz.html rename : browser/devtools/styleeditor/test/simple.html => devtools/client/styleeditor/test/simple.html rename : browser/devtools/styleeditor/test/sourcemap-css/contained.css => devtools/client/styleeditor/test/sourcemap-css/contained.css rename : browser/devtools/styleeditor/test/sourcemap-css/media-rules.css => devtools/client/styleeditor/test/sourcemap-css/media-rules.css rename : browser/devtools/styleeditor/test/sourcemap-css/media-rules.css.map => devtools/client/styleeditor/test/sourcemap-css/media-rules.css.map rename : browser/devtools/styleeditor/test/sourcemap-css/sourcemaps.css => devtools/client/styleeditor/test/sourcemap-css/sourcemaps.css rename : browser/devtools/styleeditor/test/sourcemap-css/sourcemaps.css.map => devtools/client/styleeditor/test/sourcemap-css/sourcemaps.css.map rename : browser/devtools/styleeditor/test/sourcemap-css/test-bootstrap-scss.css => devtools/client/styleeditor/test/sourcemap-css/test-bootstrap-scss.css rename : browser/devtools/styleeditor/test/sourcemap-css/test-stylus.css => devtools/client/styleeditor/test/sourcemap-css/test-stylus.css rename : browser/devtools/styleeditor/test/sourcemap-sass/media-rules.scss => devtools/client/styleeditor/test/sourcemap-sass/media-rules.scss rename : browser/devtools/styleeditor/test/sourcemap-sass/sourcemaps.scss => devtools/client/styleeditor/test/sourcemap-sass/sourcemaps.scss rename : browser/devtools/styleeditor/test/sourcemap-styl/test-stylus.styl => devtools/client/styleeditor/test/sourcemap-styl/test-stylus.styl rename : browser/devtools/styleeditor/test/sourcemaps-large.html => devtools/client/styleeditor/test/sourcemaps-large.html rename : browser/devtools/styleeditor/test/sourcemaps-watching.html => devtools/client/styleeditor/test/sourcemaps-watching.html rename : browser/devtools/styleeditor/test/sourcemaps.html => devtools/client/styleeditor/test/sourcemaps.html rename : browser/devtools/styleeditor/test/test_private.css => devtools/client/styleeditor/test/test_private.css rename : browser/devtools/styleeditor/test/test_private.html => devtools/client/styleeditor/test/test_private.html rename : browser/devtools/styleeditor/utils.js => devtools/client/styleeditor/utils.js rename : browser/devtools/styleinspector/computed-view.js => devtools/client/styleinspector/computed-view.js rename : browser/devtools/styleinspector/computedview.xhtml => devtools/client/styleinspector/computedview.xhtml rename : browser/devtools/styleinspector/css-parsing-utils.js => devtools/client/styleinspector/css-parsing-utils.js rename : browser/devtools/styleinspector/cssruleview.xhtml => devtools/client/styleinspector/cssruleview.xhtml rename : browser/devtools/styleinspector/moz.build => devtools/client/styleinspector/moz.build rename : browser/devtools/styleinspector/rule-view.js => devtools/client/styleinspector/rule-view.js rename : browser/devtools/styleinspector/ruleview.css => devtools/client/styleinspector/ruleview.css rename : browser/devtools/styleinspector/style-inspector-menu.js => devtools/client/styleinspector/style-inspector-menu.js rename : browser/devtools/styleinspector/style-inspector-overlays.js => devtools/client/styleinspector/style-inspector-overlays.js rename : browser/devtools/styleinspector/style-inspector.js => devtools/client/styleinspector/style-inspector.js rename : browser/devtools/styleinspector/test/.eslintrc => devtools/client/styleinspector/test/.eslintrc rename : browser/devtools/styleinspector/test/browser.ini => devtools/client/styleinspector/test/browser.ini rename : browser/devtools/styleinspector/test/browser_computedview_browser-styles.js => devtools/client/styleinspector/test/browser_computedview_browser-styles.js rename : browser/devtools/styleinspector/test/browser_computedview_cycle_color.js => devtools/client/styleinspector/test/browser_computedview_cycle_color.js rename : browser/devtools/styleinspector/test/browser_computedview_getNodeInfo.js => devtools/client/styleinspector/test/browser_computedview_getNodeInfo.js rename : browser/devtools/styleinspector/test/browser_computedview_keybindings_01.js => devtools/client/styleinspector/test/browser_computedview_keybindings_01.js rename : browser/devtools/styleinspector/test/browser_computedview_keybindings_02.js => devtools/client/styleinspector/test/browser_computedview_keybindings_02.js rename : browser/devtools/styleinspector/test/browser_computedview_matched-selectors-toggle.js => devtools/client/styleinspector/test/browser_computedview_matched-selectors-toggle.js rename : browser/devtools/styleinspector/test/browser_computedview_matched-selectors_01.js => devtools/client/styleinspector/test/browser_computedview_matched-selectors_01.js rename : browser/devtools/styleinspector/test/browser_computedview_matched-selectors_02.js => devtools/client/styleinspector/test/browser_computedview_matched-selectors_02.js rename : browser/devtools/styleinspector/test/browser_computedview_media-queries.js => devtools/client/styleinspector/test/browser_computedview_media-queries.js rename : browser/devtools/styleinspector/test/browser_computedview_no-results-placeholder.js => devtools/client/styleinspector/test/browser_computedview_no-results-placeholder.js rename : browser/devtools/styleinspector/test/browser_computedview_original-source-link.js => devtools/client/styleinspector/test/browser_computedview_original-source-link.js rename : browser/devtools/styleinspector/test/browser_computedview_pseudo-element_01.js => devtools/client/styleinspector/test/browser_computedview_pseudo-element_01.js rename : browser/devtools/styleinspector/test/browser_computedview_refresh-on-style-change_01.js => devtools/client/styleinspector/test/browser_computedview_refresh-on-style-change_01.js rename : browser/devtools/styleinspector/test/browser_computedview_search-filter.js => devtools/client/styleinspector/test/browser_computedview_search-filter.js rename : browser/devtools/styleinspector/test/browser_computedview_search-filter_clear.js => devtools/client/styleinspector/test/browser_computedview_search-filter_clear.js rename : browser/devtools/styleinspector/test/browser_computedview_search-filter_context-menu.js => devtools/client/styleinspector/test/browser_computedview_search-filter_context-menu.js rename : browser/devtools/styleinspector/test/browser_computedview_search-filter_escape-keypress.js => devtools/client/styleinspector/test/browser_computedview_search-filter_escape-keypress.js rename : browser/devtools/styleinspector/test/browser_computedview_select-and-copy-styles.js => devtools/client/styleinspector/test/browser_computedview_select-and-copy-styles.js rename : browser/devtools/styleinspector/test/browser_computedview_style-editor-link.js => devtools/client/styleinspector/test/browser_computedview_style-editor-link.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-property-and-reselect.js => devtools/client/styleinspector/test/browser_ruleview_add-property-and-reselect.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-property-cancel_01.js => devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-property-cancel_02.js => devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-property-cancel_03.js => devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-property-svg.js => devtools/client/styleinspector/test/browser_ruleview_add-property-svg.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-property_01.js => devtools/client/styleinspector/test/browser_ruleview_add-property_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-property_02.js => devtools/client/styleinspector/test/browser_ruleview_add-property_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-rule_01.js => devtools/client/styleinspector/test/browser_ruleview_add-rule_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-rule_02.js => devtools/client/styleinspector/test/browser_ruleview_add-rule_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-rule_03.js => devtools/client/styleinspector/test/browser_ruleview_add-rule_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-rule_04.js => devtools/client/styleinspector/test/browser_ruleview_add-rule_04.js rename : browser/devtools/styleinspector/test/browser_ruleview_add-rule_pseudo_class.js => devtools/client/styleinspector/test/browser_ruleview_add-rule_pseudo_class.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_01.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_02.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-appears-on-swatch-click.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-appears-on-swatch-click.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-commit-on-ENTER.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-commit-on-ENTER.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-edit-gradient.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-edit-gradient.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-hides-on-tooltip.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-hides-on-tooltip.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-multiple-changes.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-multiple-changes.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-release-outside-frame.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-release-outside-frame.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-revert-on-ESC.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-revert-on-ESC.js rename : browser/devtools/styleinspector/test/browser_ruleview_colorpicker-swatch-displayed.js => devtools/client/styleinspector/test/browser_ruleview_colorpicker-swatch-displayed.js rename : browser/devtools/styleinspector/test/browser_ruleview_completion-existing-property_01.js => devtools/client/styleinspector/test/browser_ruleview_completion-existing-property_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_completion-existing-property_02.js => devtools/client/styleinspector/test/browser_ruleview_completion-existing-property_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_completion-new-property_01.js => devtools/client/styleinspector/test/browser_ruleview_completion-new-property_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_completion-new-property_02.js => devtools/client/styleinspector/test/browser_ruleview_completion-new-property_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_completion-popup-hidden-after-navigation.js => devtools/client/styleinspector/test/browser_ruleview_completion-popup-hidden-after-navigation.js rename : browser/devtools/styleinspector/test/browser_ruleview_computed-lists_01.js => devtools/client/styleinspector/test/browser_ruleview_computed-lists_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_computed-lists_02.js => devtools/client/styleinspector/test/browser_ruleview_computed-lists_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_content_01.js => devtools/client/styleinspector/test/browser_ruleview_content_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_content_02.js => devtools/client/styleinspector/test/browser_ruleview_content_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-01.js => devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-01.js rename : browser/devtools/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-02.js => devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-02.js rename : browser/devtools/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-03.js => devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-03.js rename : browser/devtools/styleinspector/test/browser_ruleview_copy_styles.js => devtools/client/styleinspector/test/browser_ruleview_copy_styles.js rename : browser/devtools/styleinspector/test/browser_ruleview_cubicbezier-appears-on-swatch-click.js => devtools/client/styleinspector/test/browser_ruleview_cubicbezier-appears-on-swatch-click.js rename : browser/devtools/styleinspector/test/browser_ruleview_cubicbezier-commit-on-ENTER.js => devtools/client/styleinspector/test/browser_ruleview_cubicbezier-commit-on-ENTER.js rename : browser/devtools/styleinspector/test/browser_ruleview_cubicbezier-revert-on-ESC.js => devtools/client/styleinspector/test/browser_ruleview_cubicbezier-revert-on-ESC.js rename : browser/devtools/styleinspector/test/browser_ruleview_custom.js => devtools/client/styleinspector/test/browser_ruleview_custom.js rename : browser/devtools/styleinspector/test/browser_ruleview_cycle-color.js => devtools/client/styleinspector/test/browser_ruleview_cycle-color.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property-cancel.js => devtools/client/styleinspector/test/browser_ruleview_edit-property-cancel.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property-commit.js => devtools/client/styleinspector/test/browser_ruleview_edit-property-commit.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property-computed.js => devtools/client/styleinspector/test/browser_ruleview_edit-property-computed.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property-increments.js => devtools/client/styleinspector/test/browser_ruleview_edit-property-increments.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property-order.js => devtools/client/styleinspector/test/browser_ruleview_edit-property-order.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property-remove_01.js => devtools/client/styleinspector/test/browser_ruleview_edit-property-remove_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property-remove_02.js => devtools/client/styleinspector/test/browser_ruleview_edit-property-remove_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property-remove_03.js => devtools/client/styleinspector/test/browser_ruleview_edit-property-remove_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property_01.js => devtools/client/styleinspector/test/browser_ruleview_edit-property_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property_02.js => devtools/client/styleinspector/test/browser_ruleview_edit-property_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property_03.js => devtools/client/styleinspector/test/browser_ruleview_edit-property_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property_04.js => devtools/client/styleinspector/test/browser_ruleview_edit-property_04.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property_05.js => devtools/client/styleinspector/test/browser_ruleview_edit-property_05.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property_06.js => devtools/client/styleinspector/test/browser_ruleview_edit-property_06.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-property_07.js => devtools/client/styleinspector/test/browser_ruleview_edit-property_07.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-selector-commit.js => devtools/client/styleinspector/test/browser_ruleview_edit-selector-commit.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-selector_01.js => devtools/client/styleinspector/test/browser_ruleview_edit-selector_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-selector_02.js => devtools/client/styleinspector/test/browser_ruleview_edit-selector_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-selector_03.js => devtools/client/styleinspector/test/browser_ruleview_edit-selector_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-selector_04.js => devtools/client/styleinspector/test/browser_ruleview_edit-selector_04.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-selector_05.js => devtools/client/styleinspector/test/browser_ruleview_edit-selector_05.js rename : browser/devtools/styleinspector/test/browser_ruleview_edit-selector_06.js => devtools/client/styleinspector/test/browser_ruleview_edit-selector_06.js rename : browser/devtools/styleinspector/test/browser_ruleview_editable-field-focus_01.js => devtools/client/styleinspector/test/browser_ruleview_editable-field-focus_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_editable-field-focus_02.js => devtools/client/styleinspector/test/browser_ruleview_editable-field-focus_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_eyedropper.js => devtools/client/styleinspector/test/browser_ruleview_eyedropper.js rename : browser/devtools/styleinspector/test/browser_ruleview_filtereditor-appears-on-swatch-click.js => devtools/client/styleinspector/test/browser_ruleview_filtereditor-appears-on-swatch-click.js rename : browser/devtools/styleinspector/test/browser_ruleview_filtereditor-commit-on-ENTER.js => devtools/client/styleinspector/test/browser_ruleview_filtereditor-commit-on-ENTER.js rename : browser/devtools/styleinspector/test/browser_ruleview_filtereditor-revert-on-ESC.js => devtools/client/styleinspector/test/browser_ruleview_filtereditor-revert-on-ESC.js rename : browser/devtools/styleinspector/test/browser_ruleview_inherited-properties_01.js => devtools/client/styleinspector/test/browser_ruleview_inherited-properties_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_inherited-properties_02.js => devtools/client/styleinspector/test/browser_ruleview_inherited-properties_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_inherited-properties_03.js => devtools/client/styleinspector/test/browser_ruleview_inherited-properties_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_keybindings.js => devtools/client/styleinspector/test/browser_ruleview_keybindings.js rename : browser/devtools/styleinspector/test/browser_ruleview_keyframes-rule_01.js => devtools/client/styleinspector/test/browser_ruleview_keyframes-rule_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_keyframes-rule_02.js => devtools/client/styleinspector/test/browser_ruleview_keyframes-rule_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_livepreview.js => devtools/client/styleinspector/test/browser_ruleview_livepreview.js rename : browser/devtools/styleinspector/test/browser_ruleview_mark_overridden_01.js => devtools/client/styleinspector/test/browser_ruleview_mark_overridden_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_mark_overridden_02.js => devtools/client/styleinspector/test/browser_ruleview_mark_overridden_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_mark_overridden_03.js => devtools/client/styleinspector/test/browser_ruleview_mark_overridden_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_mark_overridden_04.js => devtools/client/styleinspector/test/browser_ruleview_mark_overridden_04.js rename : browser/devtools/styleinspector/test/browser_ruleview_mark_overridden_05.js => devtools/client/styleinspector/test/browser_ruleview_mark_overridden_05.js rename : browser/devtools/styleinspector/test/browser_ruleview_mathml-element.js => devtools/client/styleinspector/test/browser_ruleview_mathml-element.js rename : browser/devtools/styleinspector/test/browser_ruleview_media-queries.js => devtools/client/styleinspector/test/browser_ruleview_media-queries.js rename : browser/devtools/styleinspector/test/browser_ruleview_multiple-properties-duplicates.js => devtools/client/styleinspector/test/browser_ruleview_multiple-properties-duplicates.js rename : browser/devtools/styleinspector/test/browser_ruleview_multiple-properties-priority.js => devtools/client/styleinspector/test/browser_ruleview_multiple-properties-priority.js rename : browser/devtools/styleinspector/test/browser_ruleview_multiple-properties-unfinished_01.js => devtools/client/styleinspector/test/browser_ruleview_multiple-properties-unfinished_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_multiple-properties-unfinished_02.js => devtools/client/styleinspector/test/browser_ruleview_multiple-properties-unfinished_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_multiple_properties_01.js => devtools/client/styleinspector/test/browser_ruleview_multiple_properties_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_multiple_properties_02.js => devtools/client/styleinspector/test/browser_ruleview_multiple_properties_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_original-source-link.js => devtools/client/styleinspector/test/browser_ruleview_original-source-link.js rename : browser/devtools/styleinspector/test/browser_ruleview_pseudo-element_01.js => devtools/client/styleinspector/test/browser_ruleview_pseudo-element_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_pseudo-element_02.js => devtools/client/styleinspector/test/browser_ruleview_pseudo-element_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_pseudo_lock_options.js => devtools/client/styleinspector/test/browser_ruleview_pseudo_lock_options.js rename : browser/devtools/styleinspector/test/browser_ruleview_refresh-on-attribute-change_01.js => devtools/client/styleinspector/test/browser_ruleview_refresh-on-attribute-change_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js => devtools/client/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_refresh-on-style-change.js => devtools/client/styleinspector/test/browser_ruleview_refresh-on-style-change.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter-computed-list_01.js => devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter-computed-list_02.js => devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter-computed-list_03.js => devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter-computed-list_04.js => devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_04.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter-computed-list_expander.js => devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_expander.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter-overridden-property.js => devtools/client/styleinspector/test/browser_ruleview_search-filter-overridden-property.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_01.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_02.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_03.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_04.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_04.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_05.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_05.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_06.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_06.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_07.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_07.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_08.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_08.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_09.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_09.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_10.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_10.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_context-menu.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_context-menu.js rename : browser/devtools/styleinspector/test/browser_ruleview_search-filter_escape-keypress.js => devtools/client/styleinspector/test/browser_ruleview_search-filter_escape-keypress.js rename : browser/devtools/styleinspector/test/browser_ruleview_select-and-copy-styles.js => devtools/client/styleinspector/test/browser_ruleview_select-and-copy-styles.js rename : browser/devtools/styleinspector/test/browser_ruleview_selector-highlighter_01.js => devtools/client/styleinspector/test/browser_ruleview_selector-highlighter_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_selector-highlighter_02.js => devtools/client/styleinspector/test/browser_ruleview_selector-highlighter_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_selector-highlighter_03.js => devtools/client/styleinspector/test/browser_ruleview_selector-highlighter_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_selector_highlight.js => devtools/client/styleinspector/test/browser_ruleview_selector_highlight.js rename : browser/devtools/styleinspector/test/browser_ruleview_strict-search-filter-computed-list_01.js => devtools/client/styleinspector/test/browser_ruleview_strict-search-filter-computed-list_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_strict-search-filter_01.js => devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_01.js rename : browser/devtools/styleinspector/test/browser_ruleview_strict-search-filter_02.js => devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_02.js rename : browser/devtools/styleinspector/test/browser_ruleview_strict-search-filter_03.js => devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_03.js rename : browser/devtools/styleinspector/test/browser_ruleview_style-editor-link.js => devtools/client/styleinspector/test/browser_ruleview_style-editor-link.js rename : browser/devtools/styleinspector/test/browser_ruleview_urls-clickable.js => devtools/client/styleinspector/test/browser_ruleview_urls-clickable.js rename : browser/devtools/styleinspector/test/browser_ruleview_user-agent-styles-uneditable.js => devtools/client/styleinspector/test/browser_ruleview_user-agent-styles-uneditable.js rename : browser/devtools/styleinspector/test/browser_ruleview_user-agent-styles.js => devtools/client/styleinspector/test/browser_ruleview_user-agent-styles.js rename : browser/devtools/styleinspector/test/browser_ruleview_user-property-reset.js => devtools/client/styleinspector/test/browser_ruleview_user-property-reset.js rename : browser/devtools/styleinspector/test/browser_styleinspector_context-menu-copy-color_01.js => devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-color_01.js rename : browser/devtools/styleinspector/test/browser_styleinspector_context-menu-copy-color_02.js => devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-color_02.js rename : browser/devtools/styleinspector/test/browser_styleinspector_context-menu-copy-urls.js => devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-urls.js rename : browser/devtools/styleinspector/test/browser_styleinspector_csslogic-content-stylesheets.js => devtools/client/styleinspector/test/browser_styleinspector_csslogic-content-stylesheets.js rename : browser/devtools/styleinspector/test/browser_styleinspector_output-parser.js => devtools/client/styleinspector/test/browser_styleinspector_output-parser.js rename : browser/devtools/styleinspector/test/browser_styleinspector_refresh_when_active.js => devtools/client/styleinspector/test/browser_styleinspector_refresh_when_active.js rename : browser/devtools/styleinspector/test/browser_styleinspector_tooltip-background-image.js => devtools/client/styleinspector/test/browser_styleinspector_tooltip-background-image.js rename : browser/devtools/styleinspector/test/browser_styleinspector_tooltip-closes-on-new-selection.js => devtools/client/styleinspector/test/browser_styleinspector_tooltip-closes-on-new-selection.js rename : browser/devtools/styleinspector/test/browser_styleinspector_tooltip-longhand-fontfamily.js => devtools/client/styleinspector/test/browser_styleinspector_tooltip-longhand-fontfamily.js rename : browser/devtools/styleinspector/test/browser_styleinspector_tooltip-multiple-background-images.js => devtools/client/styleinspector/test/browser_styleinspector_tooltip-multiple-background-images.js rename : browser/devtools/styleinspector/test/browser_styleinspector_tooltip-shorthand-fontfamily.js => devtools/client/styleinspector/test/browser_styleinspector_tooltip-shorthand-fontfamily.js rename : browser/devtools/styleinspector/test/browser_styleinspector_tooltip-size.js => devtools/client/styleinspector/test/browser_styleinspector_tooltip-size.js rename : browser/devtools/styleinspector/test/browser_styleinspector_transform-highlighter-01.js => devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-01.js rename : browser/devtools/styleinspector/test/browser_styleinspector_transform-highlighter-02.js => devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-02.js rename : browser/devtools/styleinspector/test/browser_styleinspector_transform-highlighter-03.js => devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-03.js rename : browser/devtools/styleinspector/test/browser_styleinspector_transform-highlighter-04.js => devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-04.js rename : browser/devtools/styleinspector/test/doc_content_stylesheet.html => devtools/client/styleinspector/test/doc_content_stylesheet.html rename : browser/devtools/styleinspector/test/doc_content_stylesheet.xul => devtools/client/styleinspector/test/doc_content_stylesheet.xul rename : browser/devtools/styleinspector/test/doc_content_stylesheet_imported.css => devtools/client/styleinspector/test/doc_content_stylesheet_imported.css rename : browser/devtools/styleinspector/test/doc_content_stylesheet_imported2.css => devtools/client/styleinspector/test/doc_content_stylesheet_imported2.css rename : browser/devtools/styleinspector/test/doc_content_stylesheet_linked.css => devtools/client/styleinspector/test/doc_content_stylesheet_linked.css rename : browser/devtools/styleinspector/test/doc_content_stylesheet_script.css => devtools/client/styleinspector/test/doc_content_stylesheet_script.css rename : browser/devtools/styleinspector/test/doc_content_stylesheet_xul.css => devtools/client/styleinspector/test/doc_content_stylesheet_xul.css rename : browser/devtools/styleinspector/test/doc_copystyles.css => devtools/client/styleinspector/test/doc_copystyles.css rename : browser/devtools/styleinspector/test/doc_copystyles.html => devtools/client/styleinspector/test/doc_copystyles.html rename : browser/devtools/styleinspector/test/doc_custom.html => devtools/client/styleinspector/test/doc_custom.html rename : browser/devtools/styleinspector/test/doc_filter.html => devtools/client/styleinspector/test/doc_filter.html rename : browser/devtools/styleinspector/test/doc_frame_script.js => devtools/client/styleinspector/test/doc_frame_script.js rename : browser/devtools/styleinspector/test/doc_keyframeanimation.css => devtools/client/styleinspector/test/doc_keyframeanimation.css rename : browser/devtools/styleinspector/test/doc_keyframeanimation.html => devtools/client/styleinspector/test/doc_keyframeanimation.html rename : browser/devtools/styleinspector/test/doc_matched_selectors.html => devtools/client/styleinspector/test/doc_matched_selectors.html rename : browser/devtools/styleinspector/test/doc_media_queries.html => devtools/client/styleinspector/test/doc_media_queries.html rename : browser/devtools/styleinspector/test/doc_pseudoelement.html => devtools/client/styleinspector/test/doc_pseudoelement.html rename : browser/devtools/styleinspector/test/doc_sourcemaps.css => devtools/client/styleinspector/test/doc_sourcemaps.css rename : browser/devtools/styleinspector/test/doc_sourcemaps.css.map => devtools/client/styleinspector/test/doc_sourcemaps.css.map rename : browser/devtools/styleinspector/test/doc_sourcemaps.html => devtools/client/styleinspector/test/doc_sourcemaps.html rename : browser/devtools/styleinspector/test/doc_sourcemaps.scss => devtools/client/styleinspector/test/doc_sourcemaps.scss rename : browser/devtools/styleinspector/test/doc_style_editor_link.css => devtools/client/styleinspector/test/doc_style_editor_link.css rename : browser/devtools/styleinspector/test/doc_test_image.png => devtools/client/styleinspector/test/doc_test_image.png rename : browser/devtools/styleinspector/test/doc_urls_clickable.css => devtools/client/styleinspector/test/doc_urls_clickable.css rename : browser/devtools/styleinspector/test/doc_urls_clickable.html => devtools/client/styleinspector/test/doc_urls_clickable.html rename : browser/devtools/styleinspector/test/head.js => devtools/client/styleinspector/test/head.js rename : browser/devtools/styleinspector/test/unit/.eslintrc => devtools/client/styleinspector/test/unit/.eslintrc rename : browser/devtools/styleinspector/test/unit/test_parseDeclarations.js => devtools/client/styleinspector/test/unit/test_parseDeclarations.js rename : browser/devtools/styleinspector/test/unit/test_parsePseudoClassesAndAttributes.js => devtools/client/styleinspector/test/unit/test_parsePseudoClassesAndAttributes.js rename : browser/devtools/styleinspector/test/unit/test_parseSingleValue.js => devtools/client/styleinspector/test/unit/test_parseSingleValue.js rename : browser/devtools/styleinspector/test/unit/xpcshell.ini => devtools/client/styleinspector/test/unit/xpcshell.ini rename : browser/devtools/styleinspector/utils.js => devtools/client/styleinspector/utils.js rename : browser/devtools/tilt/TiltWorkerCrafter.js => devtools/client/tilt/TiltWorkerCrafter.js rename : browser/devtools/tilt/TiltWorkerPicker.js => devtools/client/tilt/TiltWorkerPicker.js rename : browser/devtools/tilt/moz.build => devtools/client/tilt/moz.build rename : browser/devtools/tilt/test/.eslintrc => devtools/client/tilt/test/.eslintrc rename : browser/devtools/tilt/test/browser.ini => devtools/client/tilt/test/browser.ini rename : browser/devtools/tilt/test/browser_tilt_01_lazy_getter.js => devtools/client/tilt/test/browser_tilt_01_lazy_getter.js rename : browser/devtools/tilt/test/browser_tilt_02_notifications-seq.js => devtools/client/tilt/test/browser_tilt_02_notifications-seq.js rename : browser/devtools/tilt/test/browser_tilt_02_notifications-tabs.js => devtools/client/tilt/test/browser_tilt_02_notifications-tabs.js rename : browser/devtools/tilt/test/browser_tilt_02_notifications.js => devtools/client/tilt/test/browser_tilt_02_notifications.js rename : browser/devtools/tilt/test/browser_tilt_03_tab_switch.js => devtools/client/tilt/test/browser_tilt_03_tab_switch.js rename : browser/devtools/tilt/test/browser_tilt_04_initialization.js => devtools/client/tilt/test/browser_tilt_04_initialization.js rename : browser/devtools/tilt/test/browser_tilt_05_destruction-esc.js => devtools/client/tilt/test/browser_tilt_05_destruction-esc.js rename : browser/devtools/tilt/test/browser_tilt_05_destruction-url.js => devtools/client/tilt/test/browser_tilt_05_destruction-url.js rename : browser/devtools/tilt/test/browser_tilt_05_destruction.js => devtools/client/tilt/test/browser_tilt_05_destruction.js rename : browser/devtools/tilt/test/browser_tilt_arcball-reset-typeahead.js => devtools/client/tilt/test/browser_tilt_arcball-reset-typeahead.js rename : browser/devtools/tilt/test/browser_tilt_arcball-reset.js => devtools/client/tilt/test/browser_tilt_arcball-reset.js rename : browser/devtools/tilt/test/browser_tilt_arcball.js => devtools/client/tilt/test/browser_tilt_arcball.js rename : browser/devtools/tilt/test/browser_tilt_controller.js => devtools/client/tilt/test/browser_tilt_controller.js rename : browser/devtools/tilt/test/browser_tilt_gl01.js => devtools/client/tilt/test/browser_tilt_gl01.js rename : browser/devtools/tilt/test/browser_tilt_gl02.js => devtools/client/tilt/test/browser_tilt_gl02.js rename : browser/devtools/tilt/test/browser_tilt_gl03.js => devtools/client/tilt/test/browser_tilt_gl03.js rename : browser/devtools/tilt/test/browser_tilt_gl04.js => devtools/client/tilt/test/browser_tilt_gl04.js rename : browser/devtools/tilt/test/browser_tilt_gl05.js => devtools/client/tilt/test/browser_tilt_gl05.js rename : browser/devtools/tilt/test/browser_tilt_gl06.js => devtools/client/tilt/test/browser_tilt_gl06.js rename : browser/devtools/tilt/test/browser_tilt_gl07.js => devtools/client/tilt/test/browser_tilt_gl07.js rename : browser/devtools/tilt/test/browser_tilt_gl08.js => devtools/client/tilt/test/browser_tilt_gl08.js rename : browser/devtools/tilt/test/browser_tilt_math01.js => devtools/client/tilt/test/browser_tilt_math01.js rename : browser/devtools/tilt/test/browser_tilt_math02.js => devtools/client/tilt/test/browser_tilt_math02.js rename : browser/devtools/tilt/test/browser_tilt_math03.js => devtools/client/tilt/test/browser_tilt_math03.js rename : browser/devtools/tilt/test/browser_tilt_math04.js => devtools/client/tilt/test/browser_tilt_math04.js rename : browser/devtools/tilt/test/browser_tilt_math05.js => devtools/client/tilt/test/browser_tilt_math05.js rename : browser/devtools/tilt/test/browser_tilt_math06.js => devtools/client/tilt/test/browser_tilt_math06.js rename : browser/devtools/tilt/test/browser_tilt_math07.js => devtools/client/tilt/test/browser_tilt_math07.js rename : browser/devtools/tilt/test/browser_tilt_picking.js => devtools/client/tilt/test/browser_tilt_picking.js rename : browser/devtools/tilt/test/browser_tilt_picking_delete.js => devtools/client/tilt/test/browser_tilt_picking_delete.js rename : browser/devtools/tilt/test/browser_tilt_picking_highlight01-offs.js => devtools/client/tilt/test/browser_tilt_picking_highlight01-offs.js rename : browser/devtools/tilt/test/browser_tilt_picking_highlight01.js => devtools/client/tilt/test/browser_tilt_picking_highlight01.js rename : browser/devtools/tilt/test/browser_tilt_picking_highlight02.js => devtools/client/tilt/test/browser_tilt_picking_highlight02.js rename : browser/devtools/tilt/test/browser_tilt_picking_highlight03.js => devtools/client/tilt/test/browser_tilt_picking_highlight03.js rename : browser/devtools/tilt/test/browser_tilt_picking_inspector.js => devtools/client/tilt/test/browser_tilt_picking_inspector.js rename : browser/devtools/tilt/test/browser_tilt_picking_miv.js => devtools/client/tilt/test/browser_tilt_picking_miv.js rename : browser/devtools/tilt/test/browser_tilt_utils01.js => devtools/client/tilt/test/browser_tilt_utils01.js rename : browser/devtools/tilt/test/browser_tilt_utils02.js => devtools/client/tilt/test/browser_tilt_utils02.js rename : browser/devtools/tilt/test/browser_tilt_utils03.js => devtools/client/tilt/test/browser_tilt_utils03.js rename : browser/devtools/tilt/test/browser_tilt_utils04.js => devtools/client/tilt/test/browser_tilt_utils04.js rename : browser/devtools/tilt/test/browser_tilt_utils05.js => devtools/client/tilt/test/browser_tilt_utils05.js rename : browser/devtools/tilt/test/browser_tilt_utils06.js => devtools/client/tilt/test/browser_tilt_utils06.js rename : browser/devtools/tilt/test/browser_tilt_utils07.js => devtools/client/tilt/test/browser_tilt_utils07.js rename : browser/devtools/tilt/test/browser_tilt_utils08.js => devtools/client/tilt/test/browser_tilt_utils08.js rename : browser/devtools/tilt/test/browser_tilt_visualizer.js => devtools/client/tilt/test/browser_tilt_visualizer.js rename : browser/devtools/tilt/test/browser_tilt_zoom.js => devtools/client/tilt/test/browser_tilt_zoom.js rename : browser/devtools/tilt/test/head.js => devtools/client/tilt/test/head.js rename : browser/devtools/tilt/tilt-commands.js => devtools/client/tilt/tilt-commands.js rename : browser/devtools/tilt/tilt-gl.js => devtools/client/tilt/tilt-gl.js rename : browser/devtools/tilt/tilt-math.js => devtools/client/tilt/tilt-math.js rename : browser/devtools/tilt/tilt-utils.js => devtools/client/tilt/tilt-utils.js rename : browser/devtools/tilt/tilt-visualizer-style.js => devtools/client/tilt/tilt-visualizer-style.js rename : browser/devtools/tilt/tilt-visualizer.js => devtools/client/tilt/tilt-visualizer.js rename : browser/devtools/tilt/tilt.js => devtools/client/tilt/tilt.js rename : browser/devtools/webaudioeditor/controller.js => devtools/client/webaudioeditor/controller.js rename : browser/devtools/webaudioeditor/includes.js => devtools/client/webaudioeditor/includes.js rename : browser/devtools/webaudioeditor/models.js => devtools/client/webaudioeditor/models.js rename : browser/devtools/webaudioeditor/moz.build => devtools/client/webaudioeditor/moz.build rename : browser/devtools/webaudioeditor/panel.js => devtools/client/webaudioeditor/panel.js rename : browser/devtools/webaudioeditor/test/.eslintrc => devtools/client/webaudioeditor/test/.eslintrc rename : browser/devtools/webaudioeditor/test/440hz_sine.ogg => devtools/client/webaudioeditor/test/440hz_sine.ogg rename : browser/devtools/webaudioeditor/test/browser.ini => devtools/client/webaudioeditor/test/browser.ini rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-add-automation-event.js => devtools/client/webaudioeditor/test/browser_audionode-actor-add-automation-event.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-bypass.js => devtools/client/webaudioeditor/test/browser_audionode-actor-bypass.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-bypassable.js => devtools/client/webaudioeditor/test/browser_audionode-actor-bypassable.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js => devtools/client/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-connectparam.js => devtools/client/webaudioeditor/test/browser_audionode-actor-connectparam.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-get-automation-data-01.js => devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-01.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-get-automation-data-02.js => devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-02.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-get-automation-data-03.js => devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-03.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-get-param-flags.js => devtools/client/webaudioeditor/test/browser_audionode-actor-get-param-flags.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-get-params-01.js => devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-01.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-get-params-02.js => devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-get-set-param.js => devtools/client/webaudioeditor/test/browser_audionode-actor-get-set-param.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-source.js => devtools/client/webaudioeditor/test/browser_audionode-actor-source.js rename : browser/devtools/webaudioeditor/test/browser_audionode-actor-type.js => devtools/client/webaudioeditor/test/browser_audionode-actor-type.js rename : browser/devtools/webaudioeditor/test/browser_callwatcher-01.js => devtools/client/webaudioeditor/test/browser_callwatcher-01.js rename : browser/devtools/webaudioeditor/test/browser_callwatcher-02.js => devtools/client/webaudioeditor/test/browser_callwatcher-02.js rename : browser/devtools/webaudioeditor/test/browser_wa_automation-view-01.js => devtools/client/webaudioeditor/test/browser_wa_automation-view-01.js rename : browser/devtools/webaudioeditor/test/browser_wa_automation-view-02.js => devtools/client/webaudioeditor/test/browser_wa_automation-view-02.js rename : browser/devtools/webaudioeditor/test/browser_wa_controller-01.js => devtools/client/webaudioeditor/test/browser_wa_controller-01.js rename : browser/devtools/webaudioeditor/test/browser_wa_destroy-node-01.js => devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js rename : browser/devtools/webaudioeditor/test/browser_wa_first-run.js => devtools/client/webaudioeditor/test/browser_wa_first-run.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-click.js => devtools/client/webaudioeditor/test/browser_wa_graph-click.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-markers.js => devtools/client/webaudioeditor/test/browser_wa_graph-markers.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-render-01.js => devtools/client/webaudioeditor/test/browser_wa_graph-render-01.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-render-02.js => devtools/client/webaudioeditor/test/browser_wa_graph-render-02.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-render-03.js => devtools/client/webaudioeditor/test/browser_wa_graph-render-03.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-render-04.js => devtools/client/webaudioeditor/test/browser_wa_graph-render-04.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-render-05.js => devtools/client/webaudioeditor/test/browser_wa_graph-render-05.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-render-06.js => devtools/client/webaudioeditor/test/browser_wa_graph-render-06.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-selected.js => devtools/client/webaudioeditor/test/browser_wa_graph-selected.js rename : browser/devtools/webaudioeditor/test/browser_wa_graph-zoom.js => devtools/client/webaudioeditor/test/browser_wa_graph-zoom.js rename : browser/devtools/webaudioeditor/test/browser_wa_inspector-bypass-01.js => devtools/client/webaudioeditor/test/browser_wa_inspector-bypass-01.js rename : browser/devtools/webaudioeditor/test/browser_wa_inspector-toggle.js => devtools/client/webaudioeditor/test/browser_wa_inspector-toggle.js rename : browser/devtools/webaudioeditor/test/browser_wa_inspector-width.js => devtools/client/webaudioeditor/test/browser_wa_inspector-width.js rename : browser/devtools/webaudioeditor/test/browser_wa_inspector.js => devtools/client/webaudioeditor/test/browser_wa_inspector.js rename : browser/devtools/webaudioeditor/test/browser_wa_navigate.js => devtools/client/webaudioeditor/test/browser_wa_navigate.js rename : browser/devtools/webaudioeditor/test/browser_wa_properties-view-edit-01.js => devtools/client/webaudioeditor/test/browser_wa_properties-view-edit-01.js rename : browser/devtools/webaudioeditor/test/browser_wa_properties-view-edit-02.js => devtools/client/webaudioeditor/test/browser_wa_properties-view-edit-02.js rename : browser/devtools/webaudioeditor/test/browser_wa_properties-view-media-nodes.js => devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js rename : browser/devtools/webaudioeditor/test/browser_wa_properties-view-params-objects.js => devtools/client/webaudioeditor/test/browser_wa_properties-view-params-objects.js rename : browser/devtools/webaudioeditor/test/browser_wa_properties-view-params.js => devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js rename : browser/devtools/webaudioeditor/test/browser_wa_properties-view.js => devtools/client/webaudioeditor/test/browser_wa_properties-view.js rename : browser/devtools/webaudioeditor/test/browser_wa_reset-01.js => devtools/client/webaudioeditor/test/browser_wa_reset-01.js rename : browser/devtools/webaudioeditor/test/browser_wa_reset-02.js => devtools/client/webaudioeditor/test/browser_wa_reset-02.js rename : browser/devtools/webaudioeditor/test/browser_wa_reset-03.js => devtools/client/webaudioeditor/test/browser_wa_reset-03.js rename : browser/devtools/webaudioeditor/test/browser_wa_reset-04.js => devtools/client/webaudioeditor/test/browser_wa_reset-04.js rename : browser/devtools/webaudioeditor/test/browser_webaudio-actor-automation-event.js => devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js rename : browser/devtools/webaudioeditor/test/browser_webaudio-actor-connect-param.js => devtools/client/webaudioeditor/test/browser_webaudio-actor-connect-param.js rename : browser/devtools/webaudioeditor/test/browser_webaudio-actor-destroy-node.js => devtools/client/webaudioeditor/test/browser_webaudio-actor-destroy-node.js rename : browser/devtools/webaudioeditor/test/browser_webaudio-actor-simple.js => devtools/client/webaudioeditor/test/browser_webaudio-actor-simple.js rename : browser/devtools/webaudioeditor/test/doc_automation.html => devtools/client/webaudioeditor/test/doc_automation.html rename : browser/devtools/webaudioeditor/test/doc_buffer-and-array.html => devtools/client/webaudioeditor/test/doc_buffer-and-array.html rename : browser/devtools/webaudioeditor/test/doc_bug_1112378.html => devtools/client/webaudioeditor/test/doc_bug_1112378.html rename : browser/devtools/webaudioeditor/test/doc_bug_1125817.html => devtools/client/webaudioeditor/test/doc_bug_1125817.html rename : browser/devtools/webaudioeditor/test/doc_bug_1130901.html => devtools/client/webaudioeditor/test/doc_bug_1130901.html rename : browser/devtools/webaudioeditor/test/doc_bug_1141261.html => devtools/client/webaudioeditor/test/doc_bug_1141261.html rename : browser/devtools/webaudioeditor/test/doc_complex-context.html => devtools/client/webaudioeditor/test/doc_complex-context.html rename : browser/devtools/webaudioeditor/test/doc_connect-multi-param.html => devtools/client/webaudioeditor/test/doc_connect-multi-param.html rename : browser/devtools/webaudioeditor/test/doc_connect-param.html => devtools/client/webaudioeditor/test/doc_connect-param.html rename : browser/devtools/webaudioeditor/test/doc_destroy-nodes.html => devtools/client/webaudioeditor/test/doc_destroy-nodes.html rename : browser/devtools/webaudioeditor/test/doc_iframe-context.html => devtools/client/webaudioeditor/test/doc_iframe-context.html rename : browser/devtools/webaudioeditor/test/doc_media-node-creation.html => devtools/client/webaudioeditor/test/doc_media-node-creation.html rename : browser/devtools/webaudioeditor/test/doc_simple-context.html => devtools/client/webaudioeditor/test/doc_simple-context.html rename : browser/devtools/webaudioeditor/test/doc_simple-node-creation.html => devtools/client/webaudioeditor/test/doc_simple-node-creation.html rename : browser/devtools/webaudioeditor/test/head.js => devtools/client/webaudioeditor/test/head.js rename : browser/devtools/webaudioeditor/views/automation.js => devtools/client/webaudioeditor/views/automation.js rename : browser/devtools/webaudioeditor/views/context.js => devtools/client/webaudioeditor/views/context.js rename : browser/devtools/webaudioeditor/views/inspector.js => devtools/client/webaudioeditor/views/inspector.js rename : browser/devtools/webaudioeditor/views/properties.js => devtools/client/webaudioeditor/views/properties.js rename : browser/devtools/webaudioeditor/views/utils.js => devtools/client/webaudioeditor/views/utils.js rename : browser/devtools/webaudioeditor/webaudioeditor.xul => devtools/client/webaudioeditor/webaudioeditor.xul rename : browser/devtools/webconsole/console-commands.js => devtools/client/webconsole/console-commands.js rename : browser/devtools/webconsole/console-output.js => devtools/client/webconsole/console-output.js rename : browser/devtools/webconsole/hudservice.js => devtools/client/webconsole/hudservice.js rename : browser/devtools/webconsole/moz.build => devtools/client/webconsole/moz.build rename : browser/devtools/webconsole/panel.js => devtools/client/webconsole/panel.js rename : browser/devtools/webconsole/test/.eslintrc => devtools/client/webconsole/test/.eslintrc rename : browser/devtools/webconsole/test/browser.ini => devtools/client/webconsole/test/browser.ini rename : browser/devtools/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js => devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js rename : browser/devtools/webconsole/test/browser_bug664688_sandbox_update_after_navigation.js => devtools/client/webconsole/test/browser_bug664688_sandbox_update_after_navigation.js rename : browser/devtools/webconsole/test/browser_bug_638949_copy_link_location.js => devtools/client/webconsole/test/browser_bug_638949_copy_link_location.js rename : browser/devtools/webconsole/test/browser_bug_862916_console_dir_and_filter_off.js => devtools/client/webconsole/test/browser_bug_862916_console_dir_and_filter_off.js rename : browser/devtools/webconsole/test/browser_bug_865288_repeat_different_objects.js => devtools/client/webconsole/test/browser_bug_865288_repeat_different_objects.js rename : browser/devtools/webconsole/test/browser_bug_865871_variables_view_close_on_esc_key.js => devtools/client/webconsole/test/browser_bug_865871_variables_view_close_on_esc_key.js rename : browser/devtools/webconsole/test/browser_bug_869003_inspect_cross_domain_object.js => devtools/client/webconsole/test/browser_bug_869003_inspect_cross_domain_object.js rename : browser/devtools/webconsole/test/browser_bug_871156_ctrlw_close_tab.js => devtools/client/webconsole/test/browser_bug_871156_ctrlw_close_tab.js rename : browser/devtools/webconsole/test/browser_cached_messages.js => devtools/client/webconsole/test/browser_cached_messages.js rename : browser/devtools/webconsole/test/browser_console.js => devtools/client/webconsole/test/browser_console.js rename : browser/devtools/webconsole/test/browser_console_addonsdk_loader_exception.js => devtools/client/webconsole/test/browser_console_addonsdk_loader_exception.js rename : browser/devtools/webconsole/test/browser_console_clear_on_reload.js => devtools/client/webconsole/test/browser_console_clear_on_reload.js rename : browser/devtools/webconsole/test/browser_console_click_focus.js => devtools/client/webconsole/test/browser_console_click_focus.js rename : browser/devtools/webconsole/test/browser_console_consolejsm_output.js => devtools/client/webconsole/test/browser_console_consolejsm_output.js rename : browser/devtools/webconsole/test/browser_console_copy_command.js => devtools/client/webconsole/test/browser_console_copy_command.js rename : browser/devtools/webconsole/test/browser_console_copy_entire_message_context_menu.js => devtools/client/webconsole/test/browser_console_copy_entire_message_context_menu.js rename : browser/devtools/webconsole/test/browser_console_dead_objects.js => devtools/client/webconsole/test/browser_console_dead_objects.js rename : browser/devtools/webconsole/test/browser_console_error_source_click.js => devtools/client/webconsole/test/browser_console_error_source_click.js rename : browser/devtools/webconsole/test/browser_console_filters.js => devtools/client/webconsole/test/browser_console_filters.js rename : browser/devtools/webconsole/test/browser_console_hide_jsterm_when_devtools_chrome_enabled_false.js => devtools/client/webconsole/test/browser_console_hide_jsterm_when_devtools_chrome_enabled_false.js rename : browser/devtools/webconsole/test/browser_console_history_persist.js => devtools/client/webconsole/test/browser_console_history_persist.js rename : browser/devtools/webconsole/test/browser_console_iframe_messages.js => devtools/client/webconsole/test/browser_console_iframe_messages.js rename : browser/devtools/webconsole/test/browser_console_keyboard_accessibility.js => devtools/client/webconsole/test/browser_console_keyboard_accessibility.js rename : browser/devtools/webconsole/test/browser_console_log_inspectable_object.js => devtools/client/webconsole/test/browser_console_log_inspectable_object.js rename : browser/devtools/webconsole/test/browser_console_native_getters.js => devtools/client/webconsole/test/browser_console_native_getters.js rename : browser/devtools/webconsole/test/browser_console_navigation_marker.js => devtools/client/webconsole/test/browser_console_navigation_marker.js rename : browser/devtools/webconsole/test/browser_console_nsiconsolemessage.js => devtools/client/webconsole/test/browser_console_nsiconsolemessage.js rename : browser/devtools/webconsole/test/browser_console_open_or_focus.js => devtools/client/webconsole/test/browser_console_open_or_focus.js rename : browser/devtools/webconsole/test/browser_console_optimized_out_vars.js => devtools/client/webconsole/test/browser_console_optimized_out_vars.js rename : browser/devtools/webconsole/test/browser_console_private_browsing.js => devtools/client/webconsole/test/browser_console_private_browsing.js rename : browser/devtools/webconsole/test/browser_console_server_logging.js => devtools/client/webconsole/test/browser_console_server_logging.js rename : browser/devtools/webconsole/test/browser_console_variables_view.js => devtools/client/webconsole/test/browser_console_variables_view.js rename : browser/devtools/webconsole/test/browser_console_variables_view_dom_nodes.js => devtools/client/webconsole/test/browser_console_variables_view_dom_nodes.js rename : browser/devtools/webconsole/test/browser_console_variables_view_dont_sort_non_sortable_classes_properties.js => devtools/client/webconsole/test/browser_console_variables_view_dont_sort_non_sortable_classes_properties.js rename : browser/devtools/webconsole/test/browser_console_variables_view_filter.js => devtools/client/webconsole/test/browser_console_variables_view_filter.js rename : browser/devtools/webconsole/test/browser_console_variables_view_highlighter.js => devtools/client/webconsole/test/browser_console_variables_view_highlighter.js rename : browser/devtools/webconsole/test/browser_console_variables_view_while_debugging.js => devtools/client/webconsole/test/browser_console_variables_view_while_debugging.js rename : browser/devtools/webconsole/test/browser_console_variables_view_while_debugging_and_inspecting.js => devtools/client/webconsole/test/browser_console_variables_view_while_debugging_and_inspecting.js rename : browser/devtools/webconsole/test/browser_eval_in_debugger_stackframe.js => devtools/client/webconsole/test/browser_eval_in_debugger_stackframe.js rename : browser/devtools/webconsole/test/browser_eval_in_debugger_stackframe2.js => devtools/client/webconsole/test/browser_eval_in_debugger_stackframe2.js rename : browser/devtools/webconsole/test/browser_jsterm_inspect.js => devtools/client/webconsole/test/browser_jsterm_inspect.js rename : browser/devtools/webconsole/test/browser_longstring_hang.js => devtools/client/webconsole/test/browser_longstring_hang.js rename : browser/devtools/webconsole/test/browser_netmonitor_shows_reqs_in_webconsole.js => devtools/client/webconsole/test/browser_netmonitor_shows_reqs_in_webconsole.js rename : browser/devtools/webconsole/test/browser_output_breaks_after_console_dir_uninspectable.js => devtools/client/webconsole/test/browser_output_breaks_after_console_dir_uninspectable.js rename : browser/devtools/webconsole/test/browser_output_longstring_expand.js => devtools/client/webconsole/test/browser_output_longstring_expand.js rename : browser/devtools/webconsole/test/browser_repeated_messages_accuracy.js => devtools/client/webconsole/test/browser_repeated_messages_accuracy.js rename : browser/devtools/webconsole/test/browser_result_format_as_string.js => devtools/client/webconsole/test/browser_result_format_as_string.js rename : browser/devtools/webconsole/test/browser_warn_user_about_replaced_api.js => devtools/client/webconsole/test/browser_warn_user_about_replaced_api.js rename : browser/devtools/webconsole/test/browser_webconsole_abbreviate_source_url.js => devtools/client/webconsole/test/browser_webconsole_abbreviate_source_url.js rename : browser/devtools/webconsole/test/browser_webconsole_allow_mixedcontent_securityerrors.js => devtools/client/webconsole/test/browser_webconsole_allow_mixedcontent_securityerrors.js rename : browser/devtools/webconsole/test/browser_webconsole_assert.js => devtools/client/webconsole/test/browser_webconsole_assert.js rename : browser/devtools/webconsole/test/browser_webconsole_autocomplete-properties-with-non-alphanumeric-names.js => devtools/client/webconsole/test/browser_webconsole_autocomplete-properties-with-non-alphanumeric-names.js rename : browser/devtools/webconsole/test/browser_webconsole_autocomplete_and_selfxss.js => devtools/client/webconsole/test/browser_webconsole_autocomplete_and_selfxss.js rename : browser/devtools/webconsole/test/browser_webconsole_autocomplete_crossdomain_iframe.js => devtools/client/webconsole/test/browser_webconsole_autocomplete_crossdomain_iframe.js rename : browser/devtools/webconsole/test/browser_webconsole_autocomplete_in_debugger_stackframe.js => devtools/client/webconsole/test/browser_webconsole_autocomplete_in_debugger_stackframe.js rename : browser/devtools/webconsole/test/browser_webconsole_autocomplete_popup_close_on_tab_switch.js => devtools/client/webconsole/test/browser_webconsole_autocomplete_popup_close_on_tab_switch.js rename : browser/devtools/webconsole/test/browser_webconsole_basic_net_logging.js => devtools/client/webconsole/test/browser_webconsole_basic_net_logging.js rename : browser/devtools/webconsole/test/browser_webconsole_block_mixedcontent_securityerrors.js => devtools/client/webconsole/test/browser_webconsole_block_mixedcontent_securityerrors.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_1006027_message_timestamps_incorrect.js => devtools/client/webconsole/test/browser_webconsole_bug_1006027_message_timestamps_incorrect.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_1010953_cspro.js => devtools/client/webconsole/test/browser_webconsole_bug_1010953_cspro.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_1050691_click_function_to_source.js => devtools/client/webconsole/test/browser_webconsole_bug_1050691_click_function_to_source.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_578437_page_reload.js => devtools/client/webconsole/test/browser_webconsole_bug_578437_page_reload.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_579412_input_focus.js => devtools/client/webconsole/test/browser_webconsole_bug_579412_input_focus.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_580001_closing_after_completion.js => devtools/client/webconsole/test/browser_webconsole_bug_580001_closing_after_completion.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_580030_errors_after_page_reload.js => devtools/client/webconsole/test/browser_webconsole_bug_580030_errors_after_page_reload.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_580454_timestamp_l10n.js => devtools/client/webconsole/test/browser_webconsole_bug_580454_timestamp_l10n.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_582201_duplicate_errors.js => devtools/client/webconsole/test/browser_webconsole_bug_582201_duplicate_errors.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_583816_No_input_and_Tab_key_pressed.js => devtools/client/webconsole/test/browser_webconsole_bug_583816_No_input_and_Tab_key_pressed.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_585237_line_limit.js => devtools/client/webconsole/test/browser_webconsole_bug_585237_line_limit.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_585956_console_trace.js => devtools/client/webconsole/test/browser_webconsole_bug_585956_console_trace.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_585991_autocomplete_keys.js => devtools/client/webconsole/test/browser_webconsole_bug_585991_autocomplete_keys.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_585991_autocomplete_popup.js => devtools/client/webconsole/test/browser_webconsole_bug_585991_autocomplete_popup.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_586388_select_all.js => devtools/client/webconsole/test/browser_webconsole_bug_586388_select_all.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_587617_output_copy.js => devtools/client/webconsole/test/browser_webconsole_bug_587617_output_copy.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_588342_document_focus.js => devtools/client/webconsole/test/browser_webconsole_bug_588342_document_focus.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_588730_text_node_insertion.js => devtools/client/webconsole/test/browser_webconsole_bug_588730_text_node_insertion.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_588967_input_expansion.js => devtools/client/webconsole/test/browser_webconsole_bug_588967_input_expansion.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_589162_css_filter.js => devtools/client/webconsole/test/browser_webconsole_bug_589162_css_filter.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_592442_closing_brackets.js => devtools/client/webconsole/test/browser_webconsole_bug_592442_closing_brackets.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_593003_iframe_wrong_hud.js => devtools/client/webconsole/test/browser_webconsole_bug_593003_iframe_wrong_hud.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_594497_history_arrow_keys.js => devtools/client/webconsole/test/browser_webconsole_bug_594497_history_arrow_keys.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_595223_file_uri.js => devtools/client/webconsole/test/browser_webconsole_bug_595223_file_uri.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_595350_multiple_windows_and_tabs.js => devtools/client/webconsole/test/browser_webconsole_bug_595350_multiple_windows_and_tabs.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_595934_message_categories.js => devtools/client/webconsole/test/browser_webconsole_bug_595934_message_categories.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_597103_deactivateHUDForContext_unfocused_window.js => devtools/client/webconsole/test/browser_webconsole_bug_597103_deactivateHUDForContext_unfocused_window.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_597136_external_script_errors.js => devtools/client/webconsole/test/browser_webconsole_bug_597136_external_script_errors.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_597136_network_requests_from_chrome.js => devtools/client/webconsole/test/browser_webconsole_bug_597136_network_requests_from_chrome.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_597460_filter_scroll.js => devtools/client/webconsole/test/browser_webconsole_bug_597460_filter_scroll.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_597756_reopen_closed_tab.js => devtools/client/webconsole/test/browser_webconsole_bug_597756_reopen_closed_tab.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_599725_response_headers.js => devtools/client/webconsole/test/browser_webconsole_bug_599725_response_headers.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_600183_charset.js => devtools/client/webconsole/test/browser_webconsole_bug_600183_charset.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_601177_log_levels.js => devtools/client/webconsole/test/browser_webconsole_bug_601177_log_levels.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_601352_scroll.js => devtools/client/webconsole/test/browser_webconsole_bug_601352_scroll.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_601667_filter_buttons.js => devtools/client/webconsole/test/browser_webconsole_bug_601667_filter_buttons.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_603750_websocket.js => devtools/client/webconsole/test/browser_webconsole_bug_603750_websocket.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_611795.js => devtools/client/webconsole/test/browser_webconsole_bug_611795.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_613013_console_api_iframe.js => devtools/client/webconsole/test/browser_webconsole_bug_613013_console_api_iframe.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_613280_jsterm_copy.js => devtools/client/webconsole/test/browser_webconsole_bug_613280_jsterm_copy.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_613642_maintain_scroll.js => devtools/client/webconsole/test/browser_webconsole_bug_613642_maintain_scroll.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_613642_prune_scroll.js => devtools/client/webconsole/test/browser_webconsole_bug_613642_prune_scroll.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_614793_jsterm_scroll.js => devtools/client/webconsole/test/browser_webconsole_bug_614793_jsterm_scroll.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_618078_network_exceptions.js => devtools/client/webconsole/test/browser_webconsole_bug_618078_network_exceptions.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_621644_jsterm_dollar.js => devtools/client/webconsole/test/browser_webconsole_bug_621644_jsterm_dollar.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_622303_persistent_filters.js => devtools/client/webconsole/test/browser_webconsole_bug_622303_persistent_filters.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_623749_ctrl_a_select_all_winnt.js => devtools/client/webconsole/test/browser_webconsole_bug_623749_ctrl_a_select_all_winnt.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_630733_response_redirect_headers.js => devtools/client/webconsole/test/browser_webconsole_bug_630733_response_redirect_headers.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_632275_getters_document_width.js => devtools/client/webconsole/test/browser_webconsole_bug_632275_getters_document_width.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_632347_iterators_generators.js => devtools/client/webconsole/test/browser_webconsole_bug_632347_iterators_generators.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_632817.js => devtools/client/webconsole/test/browser_webconsole_bug_632817.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_642108_pruneTest.js => devtools/client/webconsole/test/browser_webconsole_bug_642108_pruneTest.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_644419_log_limits.js => devtools/client/webconsole/test/browser_webconsole_bug_644419_log_limits.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_646025_console_file_location.js => devtools/client/webconsole/test/browser_webconsole_bug_646025_console_file_location.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_651501_document_body_autocomplete.js => devtools/client/webconsole/test/browser_webconsole_bug_651501_document_body_autocomplete.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_653531_highlighter_console_helper.js => devtools/client/webconsole/test/browser_webconsole_bug_653531_highlighter_console_helper.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_658368_time_methods.js => devtools/client/webconsole/test/browser_webconsole_bug_658368_time_methods.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_659907_console_dir.js => devtools/client/webconsole/test/browser_webconsole_bug_659907_console_dir.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_660806_history_nav.js => devtools/client/webconsole/test/browser_webconsole_bug_660806_history_nav.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_664131_console_group.js => devtools/client/webconsole/test/browser_webconsole_bug_664131_console_group.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_686937_autocomplete_JSTerm_helpers.js => devtools/client/webconsole/test/browser_webconsole_bug_686937_autocomplete_JSTerm_helpers.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_704295.js => devtools/client/webconsole/test/browser_webconsole_bug_704295.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_734061_No_input_change_and_Tab_key_pressed.js => devtools/client/webconsole/test/browser_webconsole_bug_734061_No_input_change_and_Tab_key_pressed.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_737873_mixedcontent.js => devtools/client/webconsole/test/browser_webconsole_bug_737873_mixedcontent.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_752559_ineffective_iframe_sandbox_warning.js => devtools/client/webconsole/test/browser_webconsole_bug_752559_ineffective_iframe_sandbox_warning.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_762593_insecure_passwords_about_blank_web_console_warning.js => devtools/client/webconsole/test/browser_webconsole_bug_762593_insecure_passwords_about_blank_web_console_warning.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_762593_insecure_passwords_web_console_warning.js => devtools/client/webconsole/test/browser_webconsole_bug_762593_insecure_passwords_web_console_warning.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_764572_output_open_url.js => devtools/client/webconsole/test/browser_webconsole_bug_764572_output_open_url.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_766001_JS_Console_in_Debugger.js => devtools/client/webconsole/test/browser_webconsole_bug_766001_JS_Console_in_Debugger.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_770099_violation.js => devtools/client/webconsole/test/browser_webconsole_bug_770099_violation.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js => devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_804845_ctrl_key_nav.js => devtools/client/webconsole/test/browser_webconsole_bug_804845_ctrl_key_nav.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_817834_add_edited_input_to_history.js => devtools/client/webconsole/test/browser_webconsole_bug_817834_add_edited_input_to_history.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_837351_securityerrors.js => devtools/client/webconsole/test/browser_webconsole_bug_837351_securityerrors.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_915141_toggle_response_logging_with_keyboard.js => devtools/client/webconsole/test/browser_webconsole_bug_915141_toggle_response_logging_with_keyboard.js rename : browser/devtools/webconsole/test/browser_webconsole_bug_922212_console_dirxml.js => devtools/client/webconsole/test/browser_webconsole_bug_922212_console_dirxml.js rename : browser/devtools/webconsole/test/browser_webconsole_cached_autocomplete.js => devtools/client/webconsole/test/browser_webconsole_cached_autocomplete.js rename : browser/devtools/webconsole/test/browser_webconsole_cd_iframe.js => devtools/client/webconsole/test/browser_webconsole_cd_iframe.js rename : browser/devtools/webconsole/test/browser_webconsole_certificate_messages.js => devtools/client/webconsole/test/browser_webconsole_certificate_messages.js rename : browser/devtools/webconsole/test/browser_webconsole_change_font_size.js => devtools/client/webconsole/test/browser_webconsole_change_font_size.js rename : browser/devtools/webconsole/test/browser_webconsole_chrome.js => devtools/client/webconsole/test/browser_webconsole_chrome.js rename : browser/devtools/webconsole/test/browser_webconsole_clickable_urls.js => devtools/client/webconsole/test/browser_webconsole_clickable_urls.js rename : browser/devtools/webconsole/test/browser_webconsole_closure_inspection.js => devtools/client/webconsole/test/browser_webconsole_closure_inspection.js rename : browser/devtools/webconsole/test/browser_webconsole_column_numbers.js => devtools/client/webconsole/test/browser_webconsole_column_numbers.js rename : browser/devtools/webconsole/test/browser_webconsole_completion.js => devtools/client/webconsole/test/browser_webconsole_completion.js rename : browser/devtools/webconsole/test/browser_webconsole_console_api_stackframe.js => devtools/client/webconsole/test/browser_webconsole_console_api_stackframe.js rename : browser/devtools/webconsole/test/browser_webconsole_console_custom_styles.js => devtools/client/webconsole/test/browser_webconsole_console_custom_styles.js rename : browser/devtools/webconsole/test/browser_webconsole_console_extras.js => devtools/client/webconsole/test/browser_webconsole_console_extras.js rename : browser/devtools/webconsole/test/browser_webconsole_console_logging_api.js => devtools/client/webconsole/test/browser_webconsole_console_logging_api.js rename : browser/devtools/webconsole/test/browser_webconsole_console_logging_workers_api.js => devtools/client/webconsole/test/browser_webconsole_console_logging_workers_api.js rename : browser/devtools/webconsole/test/browser_webconsole_console_trace_duplicates.js => devtools/client/webconsole/test/browser_webconsole_console_trace_duplicates.js rename : browser/devtools/webconsole/test/browser_webconsole_context_menu_open_in_var_view.js => devtools/client/webconsole/test/browser_webconsole_context_menu_open_in_var_view.js rename : browser/devtools/webconsole/test/browser_webconsole_count.js => devtools/client/webconsole/test/browser_webconsole_count.js rename : browser/devtools/webconsole/test/browser_webconsole_dont_navigate_on_doubleclick.js => devtools/client/webconsole/test/browser_webconsole_dont_navigate_on_doubleclick.js rename : browser/devtools/webconsole/test/browser_webconsole_exception_stackframe.js => devtools/client/webconsole/test/browser_webconsole_exception_stackframe.js rename : browser/devtools/webconsole/test/browser_webconsole_execution_scope.js => devtools/client/webconsole/test/browser_webconsole_execution_scope.js rename : browser/devtools/webconsole/test/browser_webconsole_expandable_timestamps.js => devtools/client/webconsole/test/browser_webconsole_expandable_timestamps.js rename : browser/devtools/webconsole/test/browser_webconsole_filter_buttons_contextmenu.js => devtools/client/webconsole/test/browser_webconsole_filter_buttons_contextmenu.js rename : browser/devtools/webconsole/test/browser_webconsole_for_of.js => devtools/client/webconsole/test/browser_webconsole_for_of.js rename : browser/devtools/webconsole/test/browser_webconsole_history.js => devtools/client/webconsole/test/browser_webconsole_history.js rename : browser/devtools/webconsole/test/browser_webconsole_hpkp_invalid-headers.js => devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js rename : browser/devtools/webconsole/test/browser_webconsole_hsts_invalid-headers.js => devtools/client/webconsole/test/browser_webconsole_hsts_invalid-headers.js rename : browser/devtools/webconsole/test/browser_webconsole_input_field_focus_on_panel_select.js => devtools/client/webconsole/test/browser_webconsole_input_field_focus_on_panel_select.js rename : browser/devtools/webconsole/test/browser_webconsole_inspect-parsed-documents.js => devtools/client/webconsole/test/browser_webconsole_inspect-parsed-documents.js rename : browser/devtools/webconsole/test/browser_webconsole_js_input_expansion.js => devtools/client/webconsole/test/browser_webconsole_js_input_expansion.js rename : browser/devtools/webconsole/test/browser_webconsole_jsterm.js => devtools/client/webconsole/test/browser_webconsole_jsterm.js rename : browser/devtools/webconsole/test/browser_webconsole_live_filtering_of_message_types.js => devtools/client/webconsole/test/browser_webconsole_live_filtering_of_message_types.js rename : browser/devtools/webconsole/test/browser_webconsole_live_filtering_on_search_strings.js => devtools/client/webconsole/test/browser_webconsole_live_filtering_on_search_strings.js rename : browser/devtools/webconsole/test/browser_webconsole_log_file_filter.js => devtools/client/webconsole/test/browser_webconsole_log_file_filter.js rename : browser/devtools/webconsole/test/browser_webconsole_message_node_id.js => devtools/client/webconsole/test/browser_webconsole_message_node_id.js rename : browser/devtools/webconsole/test/browser_webconsole_netlogging.js => devtools/client/webconsole/test/browser_webconsole_netlogging.js rename : browser/devtools/webconsole/test/browser_webconsole_netlogging_reset_filter.js => devtools/client/webconsole/test/browser_webconsole_netlogging_reset_filter.js rename : browser/devtools/webconsole/test/browser_webconsole_notifications.js => devtools/client/webconsole/test/browser_webconsole_notifications.js rename : browser/devtools/webconsole/test/browser_webconsole_open-links-without-callback.js => devtools/client/webconsole/test/browser_webconsole_open-links-without-callback.js rename : browser/devtools/webconsole/test/browser_webconsole_output_01.js => devtools/client/webconsole/test/browser_webconsole_output_01.js rename : browser/devtools/webconsole/test/browser_webconsole_output_02.js => devtools/client/webconsole/test/browser_webconsole_output_02.js rename : browser/devtools/webconsole/test/browser_webconsole_output_03.js => devtools/client/webconsole/test/browser_webconsole_output_03.js rename : browser/devtools/webconsole/test/browser_webconsole_output_04.js => devtools/client/webconsole/test/browser_webconsole_output_04.js rename : browser/devtools/webconsole/test/browser_webconsole_output_05.js => devtools/client/webconsole/test/browser_webconsole_output_05.js rename : browser/devtools/webconsole/test/browser_webconsole_output_06.js => devtools/client/webconsole/test/browser_webconsole_output_06.js rename : browser/devtools/webconsole/test/browser_webconsole_output_copy_newlines.js => devtools/client/webconsole/test/browser_webconsole_output_copy_newlines.js rename : browser/devtools/webconsole/test/browser_webconsole_output_dom_elements_01.js => devtools/client/webconsole/test/browser_webconsole_output_dom_elements_01.js rename : browser/devtools/webconsole/test/browser_webconsole_output_dom_elements_02.js => devtools/client/webconsole/test/browser_webconsole_output_dom_elements_02.js rename : browser/devtools/webconsole/test/browser_webconsole_output_dom_elements_03.js => devtools/client/webconsole/test/browser_webconsole_output_dom_elements_03.js rename : browser/devtools/webconsole/test/browser_webconsole_output_dom_elements_04.js => devtools/client/webconsole/test/browser_webconsole_output_dom_elements_04.js rename : browser/devtools/webconsole/test/browser_webconsole_output_events.js => devtools/client/webconsole/test/browser_webconsole_output_events.js rename : browser/devtools/webconsole/test/browser_webconsole_output_order.js => devtools/client/webconsole/test/browser_webconsole_output_order.js rename : browser/devtools/webconsole/test/browser_webconsole_output_regexp.js => devtools/client/webconsole/test/browser_webconsole_output_regexp.js rename : browser/devtools/webconsole/test/browser_webconsole_output_table.js => devtools/client/webconsole/test/browser_webconsole_output_table.js rename : browser/devtools/webconsole/test/browser_webconsole_promise.js => devtools/client/webconsole/test/browser_webconsole_promise.js rename : browser/devtools/webconsole/test/browser_webconsole_property_provider.js => devtools/client/webconsole/test/browser_webconsole_property_provider.js rename : browser/devtools/webconsole/test/browser_webconsole_reflow.js => devtools/client/webconsole/test/browser_webconsole_reflow.js rename : browser/devtools/webconsole/test/browser_webconsole_scratchpad_panel_link.js => devtools/client/webconsole/test/browser_webconsole_scratchpad_panel_link.js rename : browser/devtools/webconsole/test/browser_webconsole_show_subresource_security_errors.js => devtools/client/webconsole/test/browser_webconsole_show_subresource_security_errors.js rename : browser/devtools/webconsole/test/browser_webconsole_shows_reqs_in_netmonitor.js => devtools/client/webconsole/test/browser_webconsole_shows_reqs_in_netmonitor.js rename : browser/devtools/webconsole/test/browser_webconsole_split.js => devtools/client/webconsole/test/browser_webconsole_split.js rename : browser/devtools/webconsole/test/browser_webconsole_split_escape_key.js => devtools/client/webconsole/test/browser_webconsole_split_escape_key.js rename : browser/devtools/webconsole/test/browser_webconsole_split_focus.js => devtools/client/webconsole/test/browser_webconsole_split_focus.js rename : browser/devtools/webconsole/test/browser_webconsole_split_persist.js => devtools/client/webconsole/test/browser_webconsole_split_persist.js rename : browser/devtools/webconsole/test/browser_webconsole_start_netmon_first.js => devtools/client/webconsole/test/browser_webconsole_start_netmon_first.js rename : browser/devtools/webconsole/test/browser_webconsole_trackingprotection_errors.js => devtools/client/webconsole/test/browser_webconsole_trackingprotection_errors.js rename : browser/devtools/webconsole/test/browser_webconsole_view_source.js => devtools/client/webconsole/test/browser_webconsole_view_source.js rename : browser/devtools/webconsole/test/head.js => devtools/client/webconsole/test/head.js rename : browser/devtools/webconsole/test/test-autocomplete-in-stackframe.html => devtools/client/webconsole/test/test-autocomplete-in-stackframe.html rename : browser/devtools/webconsole/test/test-bug-585956-console-trace.html => devtools/client/webconsole/test/test-bug-585956-console-trace.html rename : browser/devtools/webconsole/test/test-bug-593003-iframe-wrong-hud-iframe.html => devtools/client/webconsole/test/test-bug-593003-iframe-wrong-hud-iframe.html rename : browser/devtools/webconsole/test/test-bug-593003-iframe-wrong-hud.html => devtools/client/webconsole/test/test-bug-593003-iframe-wrong-hud.html rename : browser/devtools/webconsole/test/test-bug-595934-canvas-css.html => devtools/client/webconsole/test/test-bug-595934-canvas-css.html rename : browser/devtools/webconsole/test/test-bug-595934-canvas-css.js => devtools/client/webconsole/test/test-bug-595934-canvas-css.js rename : browser/devtools/webconsole/test/test-bug-595934-css-loader.css => devtools/client/webconsole/test/test-bug-595934-css-loader.css rename : browser/devtools/webconsole/test/test-bug-595934-css-loader.css^headers^ => devtools/client/webconsole/test/test-bug-595934-css-loader.css^headers^ rename : browser/devtools/webconsole/test/test-bug-595934-css-loader.html => devtools/client/webconsole/test/test-bug-595934-css-loader.html rename : browser/devtools/webconsole/test/test-bug-595934-css-parser.css => devtools/client/webconsole/test/test-bug-595934-css-parser.css rename : browser/devtools/webconsole/test/test-bug-595934-css-parser.html => devtools/client/webconsole/test/test-bug-595934-css-parser.html rename : browser/devtools/webconsole/test/test-bug-595934-empty-getelementbyid.html => devtools/client/webconsole/test/test-bug-595934-empty-getelementbyid.html rename : browser/devtools/webconsole/test/test-bug-595934-empty-getelementbyid.js => devtools/client/webconsole/test/test-bug-595934-empty-getelementbyid.js rename : browser/devtools/webconsole/test/test-bug-595934-html.html => devtools/client/webconsole/test/test-bug-595934-html.html rename : browser/devtools/webconsole/test/test-bug-595934-image.html => devtools/client/webconsole/test/test-bug-595934-image.html rename : browser/devtools/webconsole/test/test-bug-595934-image.jpg => devtools/client/webconsole/test/test-bug-595934-image.jpg rename : browser/devtools/webconsole/test/test-bug-595934-imagemap.html => devtools/client/webconsole/test/test-bug-595934-imagemap.html rename : browser/devtools/webconsole/test/test-bug-595934-malformedxml-external.html => devtools/client/webconsole/test/test-bug-595934-malformedxml-external.html rename : browser/devtools/webconsole/test/test-bug-595934-malformedxml-external.xml => devtools/client/webconsole/test/test-bug-595934-malformedxml-external.xml rename : browser/devtools/webconsole/test/test-bug-595934-malformedxml.xhtml => devtools/client/webconsole/test/test-bug-595934-malformedxml.xhtml rename : browser/devtools/webconsole/test/test-bug-595934-svg.xhtml => devtools/client/webconsole/test/test-bug-595934-svg.xhtml rename : browser/devtools/webconsole/test/test-bug-595934-workers.html => devtools/client/webconsole/test/test-bug-595934-workers.html rename : browser/devtools/webconsole/test/test-bug-595934-workers.js => devtools/client/webconsole/test/test-bug-595934-workers.js rename : browser/devtools/webconsole/test/test-bug-597136-external-script-errors.html => devtools/client/webconsole/test/test-bug-597136-external-script-errors.html rename : browser/devtools/webconsole/test/test-bug-597136-external-script-errors.js => devtools/client/webconsole/test/test-bug-597136-external-script-errors.js rename : browser/devtools/webconsole/test/test-bug-597756-reopen-closed-tab.html => devtools/client/webconsole/test/test-bug-597756-reopen-closed-tab.html rename : browser/devtools/webconsole/test/test-bug-599725-response-headers.sjs => devtools/client/webconsole/test/test-bug-599725-response-headers.sjs rename : browser/devtools/webconsole/test/test-bug-600183-charset.html => devtools/client/webconsole/test/test-bug-600183-charset.html rename : browser/devtools/webconsole/test/test-bug-600183-charset.html^headers^ => devtools/client/webconsole/test/test-bug-600183-charset.html^headers^ rename : browser/devtools/webconsole/test/test-bug-601177-log-levels.html => devtools/client/webconsole/test/test-bug-601177-log-levels.html rename : browser/devtools/webconsole/test/test-bug-601177-log-levels.js => devtools/client/webconsole/test/test-bug-601177-log-levels.js rename : browser/devtools/webconsole/test/test-bug-603750-websocket.html => devtools/client/webconsole/test/test-bug-603750-websocket.html rename : browser/devtools/webconsole/test/test-bug-603750-websocket.js => devtools/client/webconsole/test/test-bug-603750-websocket.js rename : browser/devtools/webconsole/test/test-bug-609872-cd-iframe-child.html => devtools/client/webconsole/test/test-bug-609872-cd-iframe-child.html rename : browser/devtools/webconsole/test/test-bug-609872-cd-iframe-parent.html => devtools/client/webconsole/test/test-bug-609872-cd-iframe-parent.html rename : browser/devtools/webconsole/test/test-bug-613013-console-api-iframe.html => devtools/client/webconsole/test/test-bug-613013-console-api-iframe.html rename : browser/devtools/webconsole/test/test-bug-618078-network-exceptions.html => devtools/client/webconsole/test/test-bug-618078-network-exceptions.html rename : browser/devtools/webconsole/test/test-bug-621644-jsterm-dollar.html => devtools/client/webconsole/test/test-bug-621644-jsterm-dollar.html rename : browser/devtools/webconsole/test/test-bug-630733-response-redirect-headers.sjs => devtools/client/webconsole/test/test-bug-630733-response-redirect-headers.sjs rename : browser/devtools/webconsole/test/test-bug-632275-getters.html => devtools/client/webconsole/test/test-bug-632275-getters.html rename : browser/devtools/webconsole/test/test-bug-632347-iterators-generators.html => devtools/client/webconsole/test/test-bug-632347-iterators-generators.html rename : browser/devtools/webconsole/test/test-bug-644419-log-limits.html => devtools/client/webconsole/test/test-bug-644419-log-limits.html rename : browser/devtools/webconsole/test/test-bug-646025-console-file-location.html => devtools/client/webconsole/test/test-bug-646025-console-file-location.html rename : browser/devtools/webconsole/test/test-bug-658368-time-methods.html => devtools/client/webconsole/test/test-bug-658368-time-methods.html rename : browser/devtools/webconsole/test/test-bug-737873-mixedcontent.html => devtools/client/webconsole/test/test-bug-737873-mixedcontent.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning-inner.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning-inner.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning-nested1.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning-nested1.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning-nested2.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning-nested2.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning0.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning0.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning1.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning1.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning2.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning2.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning3.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning3.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning4.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning4.html rename : browser/devtools/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning5.html => devtools/client/webconsole/test/test-bug-752559-ineffective-iframe-sandbox-warning5.html rename : browser/devtools/webconsole/test/test-bug-762593-insecure-passwords-about-blank-web-console-warning.html => devtools/client/webconsole/test/test-bug-762593-insecure-passwords-about-blank-web-console-warning.html rename : browser/devtools/webconsole/test/test-bug-762593-insecure-passwords-web-console-warning.html => devtools/client/webconsole/test/test-bug-762593-insecure-passwords-web-console-warning.html rename : browser/devtools/webconsole/test/test-bug-766001-console-log.js => devtools/client/webconsole/test/test-bug-766001-console-log.js rename : browser/devtools/webconsole/test/test-bug-766001-js-console-links.html => devtools/client/webconsole/test/test-bug-766001-js-console-links.html rename : browser/devtools/webconsole/test/test-bug-766001-js-errors.js => devtools/client/webconsole/test/test-bug-766001-js-errors.js rename : browser/devtools/webconsole/test/test-bug-782653-css-errors-1.css => devtools/client/webconsole/test/test-bug-782653-css-errors-1.css rename : browser/devtools/webconsole/test/test-bug-782653-css-errors-2.css => devtools/client/webconsole/test/test-bug-782653-css-errors-2.css rename : browser/devtools/webconsole/test/test-bug-782653-css-errors.html => devtools/client/webconsole/test/test-bug-782653-css-errors.html rename : browser/devtools/webconsole/test/test-bug-837351-security-errors.html => devtools/client/webconsole/test/test-bug-837351-security-errors.html rename : browser/devtools/webconsole/test/test-bug-859170-longstring-hang.html => devtools/client/webconsole/test/test-bug-859170-longstring-hang.html rename : browser/devtools/webconsole/test/test-bug-869003-iframe.html => devtools/client/webconsole/test/test-bug-869003-iframe.html rename : browser/devtools/webconsole/test/test-bug-869003-top-window.html => devtools/client/webconsole/test/test-bug-869003-top-window.html rename : browser/devtools/webconsole/test/test-bug-952277-highlight-nodes-in-vview.html => devtools/client/webconsole/test/test-bug-952277-highlight-nodes-in-vview.html rename : browser/devtools/webconsole/test/test-bug-989025-iframe-parent.html => devtools/client/webconsole/test/test-bug-989025-iframe-parent.html rename : browser/devtools/webconsole/test/test-bug_1050691_click_function_to_source.html => devtools/client/webconsole/test/test-bug_1050691_click_function_to_source.html rename : browser/devtools/webconsole/test/test-bug_1050691_click_function_to_source.js => devtools/client/webconsole/test/test-bug_1050691_click_function_to_source.js rename : browser/devtools/webconsole/test/test-bug_923281_console_log_filter.html => devtools/client/webconsole/test/test-bug_923281_console_log_filter.html rename : browser/devtools/webconsole/test/test-bug_923281_test1.js => devtools/client/webconsole/test/test-bug_923281_test1.js rename : browser/devtools/webconsole/test/test-bug_923281_test2.js => devtools/client/webconsole/test/test-bug_923281_test2.js rename : browser/devtools/webconsole/test/test-bug_939783_console_trace_duplicates.html => devtools/client/webconsole/test/test-bug_939783_console_trace_duplicates.html rename : browser/devtools/webconsole/test/test-certificate-messages.html => devtools/client/webconsole/test/test-certificate-messages.html rename : browser/devtools/webconsole/test/test-closure-optimized-out.html => devtools/client/webconsole/test/test-closure-optimized-out.html rename : browser/devtools/webconsole/test/test-closures.html => devtools/client/webconsole/test/test-closures.html rename : browser/devtools/webconsole/test/test-console-api-stackframe.html => devtools/client/webconsole/test/test-console-api-stackframe.html rename : browser/devtools/webconsole/test/test-console-assert.html => devtools/client/webconsole/test/test-console-assert.html rename : browser/devtools/webconsole/test/test-console-column.html => devtools/client/webconsole/test/test-console-column.html rename : browser/devtools/webconsole/test/test-console-count-external-file.js => devtools/client/webconsole/test/test-console-count-external-file.js rename : browser/devtools/webconsole/test/test-console-count.html => devtools/client/webconsole/test/test-console-count.html rename : browser/devtools/webconsole/test/test-console-extras.html => devtools/client/webconsole/test/test-console-extras.html rename : browser/devtools/webconsole/test/test-console-output-02.html => devtools/client/webconsole/test/test-console-output-02.html rename : browser/devtools/webconsole/test/test-console-output-03.html => devtools/client/webconsole/test/test-console-output-03.html rename : browser/devtools/webconsole/test/test-console-output-04.html => devtools/client/webconsole/test/test-console-output-04.html rename : browser/devtools/webconsole/test/test-console-output-dom-elements.html => devtools/client/webconsole/test/test-console-output-dom-elements.html rename : browser/devtools/webconsole/test/test-console-output-events.html => devtools/client/webconsole/test/test-console-output-events.html rename : browser/devtools/webconsole/test/test-console-output-regexp.html => devtools/client/webconsole/test/test-console-output-regexp.html rename : browser/devtools/webconsole/test/test-console-replaced-api.html => devtools/client/webconsole/test/test-console-replaced-api.html rename : browser/devtools/webconsole/test/test-console-server-logging.sjs => devtools/client/webconsole/test/test-console-server-logging.sjs rename : browser/devtools/webconsole/test/test-console-table.html => devtools/client/webconsole/test/test-console-table.html rename : browser/devtools/webconsole/test/test-console-workers.html => devtools/client/webconsole/test/test-console-workers.html rename : browser/devtools/webconsole/test/test-console.html => devtools/client/webconsole/test/test-console.html rename : browser/devtools/webconsole/test/test-consoleiframes.html => devtools/client/webconsole/test/test-consoleiframes.html rename : browser/devtools/webconsole/test/test-data.json => devtools/client/webconsole/test/test-data.json rename : browser/devtools/webconsole/test/test-data.json^headers^ => devtools/client/webconsole/test/test-data.json^headers^ rename : browser/devtools/webconsole/test/test-duplicate-error.html => devtools/client/webconsole/test/test-duplicate-error.html rename : browser/devtools/webconsole/test/test-encoding-ISO-8859-1.html => devtools/client/webconsole/test/test-encoding-ISO-8859-1.html rename : browser/devtools/webconsole/test/test-error.html => devtools/client/webconsole/test/test-error.html rename : browser/devtools/webconsole/test/test-eval-in-stackframe.html => devtools/client/webconsole/test/test-eval-in-stackframe.html rename : browser/devtools/webconsole/test/test-exception-stackframe.html => devtools/client/webconsole/test/test-exception-stackframe.html rename : browser/devtools/webconsole/test/test-file-location.js => devtools/client/webconsole/test/test-file-location.js rename : browser/devtools/webconsole/test/test-filter.html => devtools/client/webconsole/test/test-filter.html rename : browser/devtools/webconsole/test/test-for-of.html => devtools/client/webconsole/test/test-for-of.html rename : browser/devtools/webconsole/test/test-iframe-762593-insecure-form-action.html => devtools/client/webconsole/test/test-iframe-762593-insecure-form-action.html rename : browser/devtools/webconsole/test/test-iframe-762593-insecure-frame.html => devtools/client/webconsole/test/test-iframe-762593-insecure-frame.html rename : browser/devtools/webconsole/test/test-iframe1.html => devtools/client/webconsole/test/test-iframe1.html rename : browser/devtools/webconsole/test/test-iframe2.html => devtools/client/webconsole/test/test-iframe2.html rename : browser/devtools/webconsole/test/test-iframe3.html => devtools/client/webconsole/test/test-iframe3.html rename : browser/devtools/webconsole/test/test-image.png => devtools/client/webconsole/test/test-image.png rename : browser/devtools/webconsole/test/test-mixedcontent-securityerrors.html => devtools/client/webconsole/test/test-mixedcontent-securityerrors.html rename : browser/devtools/webconsole/test/test-mutation.html => devtools/client/webconsole/test/test-mutation.html rename : browser/devtools/webconsole/test/test-network-request.html => devtools/client/webconsole/test/test-network-request.html rename : browser/devtools/webconsole/test/test-network.html => devtools/client/webconsole/test/test-network.html rename : browser/devtools/webconsole/test/test-observe-http-ajax.html => devtools/client/webconsole/test/test-observe-http-ajax.html rename : browser/devtools/webconsole/test/test-own-console.html => devtools/client/webconsole/test/test-own-console.html rename : browser/devtools/webconsole/test/test-property-provider.html => devtools/client/webconsole/test/test-property-provider.html rename : browser/devtools/webconsole/test/test-repeated-messages.html => devtools/client/webconsole/test/test-repeated-messages.html rename : browser/devtools/webconsole/test/test-result-format-as-string.html => devtools/client/webconsole/test/test-result-format-as-string.html rename : browser/devtools/webconsole/test/test-trackingprotection-securityerrors.html => devtools/client/webconsole/test/test-trackingprotection-securityerrors.html rename : browser/devtools/webconsole/test/test-webconsole-error-observer.html => devtools/client/webconsole/test/test-webconsole-error-observer.html rename : browser/devtools/webconsole/test/test_bug1045902_console_csp_ignore_reflected_xss_message.html => devtools/client/webconsole/test/test_bug1045902_console_csp_ignore_reflected_xss_message.html rename : browser/devtools/webconsole/test/test_bug1045902_console_csp_ignore_reflected_xss_message.html^headers^ => devtools/client/webconsole/test/test_bug1045902_console_csp_ignore_reflected_xss_message.html^headers^ rename : browser/devtools/webconsole/test/test_bug1092055_shouldwarn.html => devtools/client/webconsole/test/test_bug1092055_shouldwarn.html rename : browser/devtools/webconsole/test/test_bug1092055_shouldwarn.js => devtools/client/webconsole/test/test_bug1092055_shouldwarn.js rename : browser/devtools/webconsole/test/test_bug1092055_shouldwarn.js^headers^ => devtools/client/webconsole/test/test_bug1092055_shouldwarn.js^headers^ rename : browser/devtools/webconsole/test/test_bug_1010953_cspro.html => devtools/client/webconsole/test/test_bug_1010953_cspro.html rename : browser/devtools/webconsole/test/test_bug_1010953_cspro.html^headers^ => devtools/client/webconsole/test/test_bug_1010953_cspro.html^headers^ rename : browser/devtools/webconsole/test/test_bug_770099_violation.html => devtools/client/webconsole/test/test_bug_770099_violation.html rename : browser/devtools/webconsole/test/test_bug_770099_violation.html^headers^ => devtools/client/webconsole/test/test_bug_770099_violation.html^headers^ rename : browser/devtools/webconsole/test/test_hpkp-invalid-headers.sjs => devtools/client/webconsole/test/test_hpkp-invalid-headers.sjs rename : browser/devtools/webconsole/test/test_hsts-invalid-headers.sjs => devtools/client/webconsole/test/test_hsts-invalid-headers.sjs rename : browser/devtools/webconsole/test/testscript.js => devtools/client/webconsole/test/testscript.js rename : browser/devtools/webconsole/webconsole.js => devtools/client/webconsole/webconsole.js rename : browser/devtools/webconsole/webconsole.xul => devtools/client/webconsole/webconsole.xul rename : browser/devtools/webide/components/moz.build => devtools/client/webide/components/moz.build rename : browser/devtools/webide/components/webideCli.js => devtools/client/webide/components/webideCli.js rename : browser/devtools/webide/components/webideComponents.manifest => devtools/client/webide/components/webideComponents.manifest rename : browser/devtools/webide/content/addons.js => devtools/client/webide/content/addons.js rename : browser/devtools/webide/content/addons.xhtml => devtools/client/webide/content/addons.xhtml rename : browser/devtools/webide/content/details.js => devtools/client/webide/content/details.js rename : browser/devtools/webide/content/details.xhtml => devtools/client/webide/content/details.xhtml rename : browser/devtools/webide/content/devicepreferences.js => devtools/client/webide/content/devicepreferences.js rename : browser/devtools/webide/content/devicepreferences.xhtml => devtools/client/webide/content/devicepreferences.xhtml rename : browser/devtools/webide/content/devicesettings.js => devtools/client/webide/content/devicesettings.js rename : browser/devtools/webide/content/devicesettings.xhtml => devtools/client/webide/content/devicesettings.xhtml rename : browser/devtools/webide/content/jar.mn => devtools/client/webide/content/jar.mn rename : browser/devtools/webide/content/logs.js => devtools/client/webide/content/logs.js rename : browser/devtools/webide/content/logs.xhtml => devtools/client/webide/content/logs.xhtml rename : browser/devtools/webide/content/monitor.js => devtools/client/webide/content/monitor.js rename : browser/devtools/webide/content/monitor.xhtml => devtools/client/webide/content/monitor.xhtml rename : browser/devtools/webide/content/moz.build => devtools/client/webide/content/moz.build rename : browser/devtools/webide/content/newapp.js => devtools/client/webide/content/newapp.js rename : browser/devtools/webide/content/newapp.xul => devtools/client/webide/content/newapp.xul rename : browser/devtools/webide/content/permissionstable.js => devtools/client/webide/content/permissionstable.js rename : browser/devtools/webide/content/permissionstable.xhtml => devtools/client/webide/content/permissionstable.xhtml rename : browser/devtools/webide/content/prefs.js => devtools/client/webide/content/prefs.js rename : browser/devtools/webide/content/prefs.xhtml => devtools/client/webide/content/prefs.xhtml rename : browser/devtools/webide/content/project-listing.js => devtools/client/webide/content/project-listing.js rename : browser/devtools/webide/content/project-listing.xhtml => devtools/client/webide/content/project-listing.xhtml rename : browser/devtools/webide/content/project-panel.js => devtools/client/webide/content/project-panel.js rename : browser/devtools/webide/content/runtime-listing.js => devtools/client/webide/content/runtime-listing.js rename : browser/devtools/webide/content/runtime-listing.xhtml => devtools/client/webide/content/runtime-listing.xhtml rename : browser/devtools/webide/content/runtime-panel.js => devtools/client/webide/content/runtime-panel.js rename : browser/devtools/webide/content/runtimedetails.js => devtools/client/webide/content/runtimedetails.js rename : browser/devtools/webide/content/runtimedetails.xhtml => devtools/client/webide/content/runtimedetails.xhtml rename : browser/devtools/webide/content/simulator.js => devtools/client/webide/content/simulator.js rename : browser/devtools/webide/content/simulator.xhtml => devtools/client/webide/content/simulator.xhtml rename : browser/devtools/webide/content/webide.js => devtools/client/webide/content/webide.js rename : browser/devtools/webide/content/webide.xul => devtools/client/webide/content/webide.xul rename : browser/devtools/webide/content/wifi-auth.js => devtools/client/webide/content/wifi-auth.js rename : browser/devtools/webide/content/wifi-auth.xhtml => devtools/client/webide/content/wifi-auth.xhtml rename : browser/devtools/webide/modules/addons.js => devtools/client/webide/modules/addons.js rename : browser/devtools/webide/modules/app-manager.js => devtools/client/webide/modules/app-manager.js rename : browser/devtools/webide/modules/build.js => devtools/client/webide/modules/build.js rename : browser/devtools/webide/modules/config-view.js => devtools/client/webide/modules/config-view.js rename : browser/devtools/webide/modules/project-list.js => devtools/client/webide/modules/project-list.js rename : browser/devtools/webide/modules/runtime-list.js => devtools/client/webide/modules/runtime-list.js rename : browser/devtools/webide/modules/runtimes.js => devtools/client/webide/modules/runtimes.js rename : browser/devtools/webide/modules/simulator-process.js => devtools/client/webide/modules/simulator-process.js rename : browser/devtools/webide/modules/simulators.js => devtools/client/webide/modules/simulators.js rename : browser/devtools/webide/modules/tab-store.js => devtools/client/webide/modules/tab-store.js rename : browser/devtools/webide/modules/utils.js => devtools/client/webide/modules/utils.js rename : browser/devtools/webide/moz.build => devtools/client/webide/moz.build rename : browser/devtools/webide/test/.eslintrc => devtools/client/webide/test/.eslintrc rename : browser/devtools/webide/test/addons/adbhelper-linux.xpi => devtools/client/webide/test/addons/adbhelper-linux.xpi rename : browser/devtools/webide/test/addons/adbhelper-linux64.xpi => devtools/client/webide/test/addons/adbhelper-linux64.xpi rename : browser/devtools/webide/test/addons/adbhelper-mac64.xpi => devtools/client/webide/test/addons/adbhelper-mac64.xpi rename : browser/devtools/webide/test/addons/adbhelper-win32.xpi => devtools/client/webide/test/addons/adbhelper-win32.xpi rename : browser/devtools/webide/test/addons/fxdt-adapters-linux32.xpi => devtools/client/webide/test/addons/fxdt-adapters-linux32.xpi rename : browser/devtools/webide/test/addons/fxdt-adapters-linux64.xpi => devtools/client/webide/test/addons/fxdt-adapters-linux64.xpi rename : browser/devtools/webide/test/addons/fxdt-adapters-mac64.xpi => devtools/client/webide/test/addons/fxdt-adapters-mac64.xpi rename : browser/devtools/webide/test/addons/fxdt-adapters-win32.xpi => devtools/client/webide/test/addons/fxdt-adapters-win32.xpi rename : browser/devtools/webide/test/addons/fxos_1_0_simulator-linux.xpi => devtools/client/webide/test/addons/fxos_1_0_simulator-linux.xpi rename : browser/devtools/webide/test/addons/fxos_1_0_simulator-linux64.xpi => devtools/client/webide/test/addons/fxos_1_0_simulator-linux64.xpi rename : browser/devtools/webide/test/addons/fxos_1_0_simulator-mac64.xpi => devtools/client/webide/test/addons/fxos_1_0_simulator-mac64.xpi rename : browser/devtools/webide/test/addons/fxos_1_0_simulator-win32.xpi => devtools/client/webide/test/addons/fxos_1_0_simulator-win32.xpi rename : browser/devtools/webide/test/addons/fxos_2_0_simulator-linux.xpi => devtools/client/webide/test/addons/fxos_2_0_simulator-linux.xpi rename : browser/devtools/webide/test/addons/fxos_2_0_simulator-linux64.xpi => devtools/client/webide/test/addons/fxos_2_0_simulator-linux64.xpi rename : browser/devtools/webide/test/addons/fxos_2_0_simulator-mac64.xpi => devtools/client/webide/test/addons/fxos_2_0_simulator-mac64.xpi rename : browser/devtools/webide/test/addons/fxos_2_0_simulator-win32.xpi => devtools/client/webide/test/addons/fxos_2_0_simulator-win32.xpi rename : browser/devtools/webide/test/addons/fxos_3_0_simulator-linux.xpi => devtools/client/webide/test/addons/fxos_3_0_simulator-linux.xpi rename : browser/devtools/webide/test/addons/fxos_3_0_simulator-linux64.xpi => devtools/client/webide/test/addons/fxos_3_0_simulator-linux64.xpi rename : browser/devtools/webide/test/addons/fxos_3_0_simulator-mac64.xpi => devtools/client/webide/test/addons/fxos_3_0_simulator-mac64.xpi rename : browser/devtools/webide/test/addons/fxos_3_0_simulator-win32.xpi => devtools/client/webide/test/addons/fxos_3_0_simulator-win32.xpi rename : browser/devtools/webide/test/addons/simulators.json => devtools/client/webide/test/addons/simulators.json rename : browser/devtools/webide/test/app.zip => devtools/client/webide/test/app.zip rename : browser/devtools/webide/test/app/index.html => devtools/client/webide/test/app/index.html rename : browser/devtools/webide/test/app/manifest.webapp => devtools/client/webide/test/app/manifest.webapp rename : browser/devtools/webide/test/browser.ini => devtools/client/webide/test/browser.ini rename : browser/devtools/webide/test/browser_tabs.js => devtools/client/webide/test/browser_tabs.js rename : browser/devtools/webide/test/browser_widget.js => devtools/client/webide/test/browser_widget.js rename : browser/devtools/webide/test/build_app1/package.json => devtools/client/webide/test/build_app1/package.json rename : browser/devtools/webide/test/build_app2/manifest.webapp => devtools/client/webide/test/build_app2/manifest.webapp rename : browser/devtools/webide/test/build_app2/package.json => devtools/client/webide/test/build_app2/package.json rename : browser/devtools/webide/test/build_app2/stage/empty-directory => devtools/client/webide/test/build_app2/stage/empty-directory rename : browser/devtools/webide/test/build_app_windows1/package.json => devtools/client/webide/test/build_app_windows1/package.json rename : browser/devtools/webide/test/build_app_windows2/manifest.webapp => devtools/client/webide/test/build_app_windows2/manifest.webapp rename : browser/devtools/webide/test/build_app_windows2/package.json => devtools/client/webide/test/build_app_windows2/package.json rename : browser/devtools/webide/test/build_app_windows2/stage/empty-directory => devtools/client/webide/test/build_app_windows2/stage/empty-directory rename : browser/devtools/webide/test/chrome.ini => devtools/client/webide/test/chrome.ini rename : browser/devtools/webide/test/device_front_shared.js => devtools/client/webide/test/device_front_shared.js rename : browser/devtools/webide/test/doc_tabs.html => devtools/client/webide/test/doc_tabs.html rename : browser/devtools/webide/test/head.js => devtools/client/webide/test/head.js rename : browser/devtools/webide/test/hosted_app.manifest => devtools/client/webide/test/hosted_app.manifest rename : browser/devtools/webide/test/sidebars/browser.ini => devtools/client/webide/test/sidebars/browser.ini rename : browser/devtools/webide/test/sidebars/browser_tabs.js => devtools/client/webide/test/sidebars/browser_tabs.js rename : browser/devtools/webide/test/sidebars/chrome.ini => devtools/client/webide/test/sidebars/chrome.ini rename : browser/devtools/webide/test/sidebars/test_addons.html => devtools/client/webide/test/sidebars/test_addons.html rename : browser/devtools/webide/test/sidebars/test_autoconnect_runtime.html => devtools/client/webide/test/sidebars/test_autoconnect_runtime.html rename : browser/devtools/webide/test/sidebars/test_autoselect_project.html => devtools/client/webide/test/sidebars/test_autoselect_project.html rename : browser/devtools/webide/test/sidebars/test_device_permissions.html => devtools/client/webide/test/sidebars/test_device_permissions.html rename : browser/devtools/webide/test/sidebars/test_device_preferences.html => devtools/client/webide/test/sidebars/test_device_preferences.html rename : browser/devtools/webide/test/sidebars/test_device_runtime.html => devtools/client/webide/test/sidebars/test_device_runtime.html rename : browser/devtools/webide/test/sidebars/test_device_settings.html => devtools/client/webide/test/sidebars/test_device_settings.html rename : browser/devtools/webide/test/sidebars/test_duplicate_import.html => devtools/client/webide/test/sidebars/test_duplicate_import.html rename : browser/devtools/webide/test/sidebars/test_fullscreenToolbox.html => devtools/client/webide/test/sidebars/test_fullscreenToolbox.html rename : browser/devtools/webide/test/sidebars/test_import.html => devtools/client/webide/test/sidebars/test_import.html rename : browser/devtools/webide/test/sidebars/test_manifestUpdate.html => devtools/client/webide/test/sidebars/test_manifestUpdate.html rename : browser/devtools/webide/test/sidebars/test_newapp.html => devtools/client/webide/test/sidebars/test_newapp.html rename : browser/devtools/webide/test/sidebars/test_runtime.html => devtools/client/webide/test/sidebars/test_runtime.html rename : browser/devtools/webide/test/sidebars/test_telemetry.html => devtools/client/webide/test/sidebars/test_telemetry.html rename : browser/devtools/webide/test/templates.json => devtools/client/webide/test/templates.json rename : browser/devtools/webide/test/test_addons.html => devtools/client/webide/test/test_addons.html rename : browser/devtools/webide/test/test_autoconnect_runtime.html => devtools/client/webide/test/test_autoconnect_runtime.html rename : browser/devtools/webide/test/test_autoselect_project.html => devtools/client/webide/test/test_autoselect_project.html rename : browser/devtools/webide/test/test_basic.html => devtools/client/webide/test/test_basic.html rename : browser/devtools/webide/test/test_build.html => devtools/client/webide/test/test_build.html rename : browser/devtools/webide/test/test_device_permissions.html => devtools/client/webide/test/test_device_permissions.html rename : browser/devtools/webide/test/test_device_preferences.html => devtools/client/webide/test/test_device_preferences.html rename : browser/devtools/webide/test/test_device_runtime.html => devtools/client/webide/test/test_device_runtime.html rename : browser/devtools/webide/test/test_device_settings.html => devtools/client/webide/test/test_device_settings.html rename : browser/devtools/webide/test/test_duplicate_import.html => devtools/client/webide/test/test_duplicate_import.html rename : browser/devtools/webide/test/test_fullscreenToolbox.html => devtools/client/webide/test/test_fullscreenToolbox.html rename : browser/devtools/webide/test/test_import.html => devtools/client/webide/test/test_import.html rename : browser/devtools/webide/test/test_manifestUpdate.html => devtools/client/webide/test/test_manifestUpdate.html rename : browser/devtools/webide/test/test_newapp.html => devtools/client/webide/test/test_newapp.html rename : browser/devtools/webide/test/test_runtime.html => devtools/client/webide/test/test_runtime.html rename : browser/devtools/webide/test/test_simulators.html => devtools/client/webide/test/test_simulators.html rename : browser/devtools/webide/test/test_telemetry.html => devtools/client/webide/test/test_telemetry.html rename : browser/devtools/webide/test/test_zoom.html => devtools/client/webide/test/test_zoom.html rename : browser/devtools/webide/themes/addons.css => devtools/client/webide/themes/addons.css rename : browser/devtools/webide/themes/config-view.css => devtools/client/webide/themes/config-view.css rename : browser/devtools/webide/themes/deck.css => devtools/client/webide/themes/deck.css rename : browser/devtools/webide/themes/details.css => devtools/client/webide/themes/details.css rename : browser/devtools/webide/themes/icons.png => devtools/client/webide/themes/icons.png rename : browser/devtools/webide/themes/jar.mn => devtools/client/webide/themes/jar.mn rename : browser/devtools/webide/themes/logs.css => devtools/client/webide/themes/logs.css rename : browser/devtools/webide/themes/monitor.css => devtools/client/webide/themes/monitor.css rename : browser/devtools/webide/themes/moz.build => devtools/client/webide/themes/moz.build rename : browser/devtools/webide/themes/newapp.css => devtools/client/webide/themes/newapp.css rename : browser/devtools/webide/themes/panel-listing.css => devtools/client/webide/themes/panel-listing.css rename : browser/devtools/webide/themes/permissionstable.css => devtools/client/webide/themes/permissionstable.css rename : browser/devtools/webide/themes/runtimedetails.css => devtools/client/webide/themes/runtimedetails.css rename : browser/devtools/webide/themes/simulator.css => devtools/client/webide/themes/simulator.css rename : browser/devtools/webide/themes/throbber.svg => devtools/client/webide/themes/throbber.svg rename : browser/devtools/webide/themes/webide.css => devtools/client/webide/themes/webide.css rename : browser/devtools/webide/themes/wifi-auth.css => devtools/client/webide/themes/wifi-auth.css rename : browser/devtools/webide/webide-prefs.js => devtools/client/webide/webide-prefs.js rename : toolkit/devtools/server/actors/actor-registry.js => devtools/server/actors/actor-registry.js rename : toolkit/devtools/server/actors/addon.js => devtools/server/actors/addon.js rename : toolkit/devtools/server/actors/animation.js => devtools/server/actors/animation.js rename : toolkit/devtools/server/actors/call-watcher.js => devtools/server/actors/call-watcher.js rename : toolkit/devtools/server/actors/canvas.js => devtools/server/actors/canvas.js rename : toolkit/devtools/server/actors/child-process.js => devtools/server/actors/child-process.js rename : toolkit/devtools/server/actors/childtab.js => devtools/server/actors/childtab.js rename : toolkit/devtools/server/actors/chrome.js => devtools/server/actors/chrome.js rename : toolkit/devtools/server/actors/common.js => devtools/server/actors/common.js rename : toolkit/devtools/server/actors/csscoverage.js => devtools/server/actors/csscoverage.js rename : toolkit/devtools/server/actors/device.js => devtools/server/actors/device.js rename : toolkit/devtools/server/actors/director-manager.js => devtools/server/actors/director-manager.js rename : toolkit/devtools/server/actors/director-registry.js => devtools/server/actors/director-registry.js rename : toolkit/devtools/server/actors/eventlooplag.js => devtools/server/actors/eventlooplag.js rename : toolkit/devtools/server/actors/framerate.js => devtools/server/actors/framerate.js rename : toolkit/devtools/server/actors/gcli.js => devtools/server/actors/gcli.js rename : toolkit/devtools/server/actors/highlighters.css => devtools/server/actors/highlighters.css rename : toolkit/devtools/server/actors/highlighters.js => devtools/server/actors/highlighters.js rename : toolkit/devtools/server/actors/highlighters/auto-refresh.js => devtools/server/actors/highlighters/auto-refresh.js rename : toolkit/devtools/server/actors/highlighters/box-model.js => devtools/server/actors/highlighters/box-model.js rename : toolkit/devtools/server/actors/highlighters/css-transform.js => devtools/server/actors/highlighters/css-transform.js rename : toolkit/devtools/server/actors/highlighters/geometry-editor.js => devtools/server/actors/highlighters/geometry-editor.js rename : toolkit/devtools/server/actors/highlighters/rect.js => devtools/server/actors/highlighters/rect.js rename : toolkit/devtools/server/actors/highlighters/rulers.js => devtools/server/actors/highlighters/rulers.js rename : toolkit/devtools/server/actors/highlighters/selector.js => devtools/server/actors/highlighters/selector.js rename : toolkit/devtools/server/actors/highlighters/simple-outline.js => devtools/server/actors/highlighters/simple-outline.js rename : toolkit/devtools/server/actors/highlighters/utils/markup.js => devtools/server/actors/highlighters/utils/markup.js rename : toolkit/devtools/server/actors/inspector.js => devtools/server/actors/inspector.js rename : toolkit/devtools/server/actors/layout.js => devtools/server/actors/layout.js rename : toolkit/devtools/server/actors/memory.js => devtools/server/actors/memory.js rename : toolkit/devtools/server/actors/memprof.js => devtools/server/actors/memprof.js rename : toolkit/devtools/server/actors/monitor.js => devtools/server/actors/monitor.js rename : toolkit/devtools/server/actors/object.js => devtools/server/actors/object.js rename : toolkit/devtools/server/actors/performance-entries.js => devtools/server/actors/performance-entries.js rename : toolkit/devtools/server/actors/performance-recording.js => devtools/server/actors/performance-recording.js rename : toolkit/devtools/server/actors/performance.js => devtools/server/actors/performance.js rename : toolkit/devtools/server/actors/preference.js => devtools/server/actors/preference.js rename : toolkit/devtools/server/actors/pretty-print-worker.js => devtools/server/actors/pretty-print-worker.js rename : toolkit/devtools/server/actors/profiler.js => devtools/server/actors/profiler.js rename : toolkit/devtools/server/actors/promises.js => devtools/server/actors/promises.js rename : toolkit/devtools/server/actors/root.js => devtools/server/actors/root.js rename : toolkit/devtools/server/actors/script.js => devtools/server/actors/script.js rename : toolkit/devtools/server/actors/settings.js => devtools/server/actors/settings.js rename : toolkit/devtools/server/actors/storage.js => devtools/server/actors/storage.js rename : toolkit/devtools/server/actors/string.js => devtools/server/actors/string.js rename : toolkit/devtools/server/actors/styleeditor.js => devtools/server/actors/styleeditor.js rename : toolkit/devtools/server/actors/styles.js => devtools/server/actors/styles.js rename : toolkit/devtools/server/actors/stylesheets.js => devtools/server/actors/stylesheets.js rename : toolkit/devtools/server/actors/timeline.js => devtools/server/actors/timeline.js rename : toolkit/devtools/server/actors/utils/ScriptStore.js => devtools/server/actors/utils/ScriptStore.js rename : toolkit/devtools/server/actors/utils/TabSources.js => devtools/server/actors/utils/TabSources.js rename : toolkit/devtools/server/actors/utils/actor-registry-utils.js => devtools/server/actors/utils/actor-registry-utils.js rename : toolkit/devtools/server/actors/utils/audionodes.json => devtools/server/actors/utils/audionodes.json rename : toolkit/devtools/server/actors/utils/automation-timeline.js => devtools/server/actors/utils/automation-timeline.js rename : toolkit/devtools/server/actors/utils/make-debugger.js => devtools/server/actors/utils/make-debugger.js rename : toolkit/devtools/server/actors/utils/map-uri-to-addon-id.js => devtools/server/actors/utils/map-uri-to-addon-id.js rename : toolkit/devtools/server/actors/utils/stack.js => devtools/server/actors/utils/stack.js rename : toolkit/devtools/server/actors/webapps.js => devtools/server/actors/webapps.js rename : toolkit/devtools/server/actors/webaudio.js => devtools/server/actors/webaudio.js rename : toolkit/devtools/server/actors/webbrowser.js => devtools/server/actors/webbrowser.js rename : toolkit/devtools/server/actors/webconsole.js => devtools/server/actors/webconsole.js rename : toolkit/devtools/server/actors/webgl.js => devtools/server/actors/webgl.js rename : toolkit/devtools/server/actors/worker.js => devtools/server/actors/worker.js rename : toolkit/devtools/server/child.js => devtools/server/child.js rename : toolkit/devtools/server/content-globals.js => devtools/server/content-globals.js rename : toolkit/devtools/server/content-server.jsm => devtools/server/content-server.jsm rename : toolkit/devtools/server/dbg-server.jsm => devtools/server/dbg-server.jsm rename : toolkit/devtools/server/docs/actor-e10s-handling.md => devtools/server/docs/actor-e10s-handling.md rename : toolkit/devtools/server/docs/actor-hierarchy.md => devtools/server/docs/actor-hierarchy.md rename : toolkit/devtools/server/docs/actor-registration.md => devtools/server/docs/actor-registration.md rename : toolkit/devtools/server/docs/protocol.js.md => devtools/server/docs/protocol.js.md rename : toolkit/devtools/server/main.js => devtools/server/main.js rename : toolkit/devtools/server/moz.build => devtools/server/moz.build rename : toolkit/devtools/server/nsIJSInspector.idl => devtools/server/nsIJSInspector.idl rename : toolkit/devtools/server/nsJSInspector.cpp => devtools/server/nsJSInspector.cpp rename : toolkit/devtools/server/nsJSInspector.h => devtools/server/nsJSInspector.h rename : toolkit/devtools/server/protocol.js => devtools/server/protocol.js rename : toolkit/devtools/server/tests/browser/.eslintrc => devtools/server/tests/browser/.eslintrc rename : toolkit/devtools/server/tests/browser/animation.html => devtools/server/tests/browser/animation.html rename : toolkit/devtools/server/tests/browser/browser.ini => devtools/server/tests/browser/browser.ini rename : toolkit/devtools/server/tests/browser/browser_animation_actors_01.js => devtools/server/tests/browser/browser_animation_actors_01.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_02.js => devtools/server/tests/browser/browser_animation_actors_02.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_03.js => devtools/server/tests/browser/browser_animation_actors_03.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_04.js => devtools/server/tests/browser/browser_animation_actors_04.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_06.js => devtools/server/tests/browser/browser_animation_actors_06.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_07.js => devtools/server/tests/browser/browser_animation_actors_07.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_08.js => devtools/server/tests/browser/browser_animation_actors_08.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_09.js => devtools/server/tests/browser/browser_animation_actors_09.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_10.js => devtools/server/tests/browser/browser_animation_actors_10.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_11.js => devtools/server/tests/browser/browser_animation_actors_11.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_12.js => devtools/server/tests/browser/browser_animation_actors_12.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_13.js => devtools/server/tests/browser/browser_animation_actors_13.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_14.js => devtools/server/tests/browser/browser_animation_actors_14.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_15.js => devtools/server/tests/browser/browser_animation_actors_15.js rename : toolkit/devtools/server/tests/browser/browser_animation_actors_16.js => devtools/server/tests/browser/browser_animation_actors_16.js rename : toolkit/devtools/server/tests/browser/browser_canvasframe_helper_01.js => devtools/server/tests/browser/browser_canvasframe_helper_01.js rename : toolkit/devtools/server/tests/browser/browser_canvasframe_helper_02.js => devtools/server/tests/browser/browser_canvasframe_helper_02.js rename : toolkit/devtools/server/tests/browser/browser_canvasframe_helper_03.js => devtools/server/tests/browser/browser_canvasframe_helper_03.js rename : toolkit/devtools/server/tests/browser/browser_canvasframe_helper_04.js => devtools/server/tests/browser/browser_canvasframe_helper_04.js rename : toolkit/devtools/server/tests/browser/browser_canvasframe_helper_05.js => devtools/server/tests/browser/browser_canvasframe_helper_05.js rename : toolkit/devtools/server/tests/browser/browser_canvasframe_helper_06.js => devtools/server/tests/browser/browser_canvasframe_helper_06.js rename : toolkit/devtools/server/tests/browser/browser_directorscript_actors.js => devtools/server/tests/browser/browser_directorscript_actors.js rename : toolkit/devtools/server/tests/browser/browser_directorscript_actors_error_events.js => devtools/server/tests/browser/browser_directorscript_actors_error_events.js rename : toolkit/devtools/server/tests/browser/browser_directorscript_actors_exports.js => devtools/server/tests/browser/browser_directorscript_actors_exports.js rename : toolkit/devtools/server/tests/browser/browser_markers-cycle-collection.js => devtools/server/tests/browser/browser_markers-cycle-collection.js rename : toolkit/devtools/server/tests/browser/browser_markers-gc.js => devtools/server/tests/browser/browser_markers-gc.js rename : toolkit/devtools/server/tests/browser/browser_markers-parse-html.js => devtools/server/tests/browser/browser_markers-parse-html.js rename : toolkit/devtools/server/tests/browser/browser_markers-styles.js => devtools/server/tests/browser/browser_markers-styles.js rename : toolkit/devtools/server/tests/browser/browser_markers-timestamp.js => devtools/server/tests/browser/browser_markers-timestamp.js rename : toolkit/devtools/server/tests/browser/browser_navigateEvents.js => devtools/server/tests/browser/browser_navigateEvents.js rename : toolkit/devtools/server/tests/browser/browser_perf-allocation-data.js => devtools/server/tests/browser/browser_perf-allocation-data.js rename : toolkit/devtools/server/tests/browser/browser_perf-legacy-front-01.js => devtools/server/tests/browser/browser_perf-legacy-front-01.js rename : toolkit/devtools/server/tests/browser/browser_perf-legacy-front-02.js => devtools/server/tests/browser/browser_perf-legacy-front-02.js rename : toolkit/devtools/server/tests/browser/browser_perf-legacy-front-03.js => devtools/server/tests/browser/browser_perf-legacy-front-03.js rename : toolkit/devtools/server/tests/browser/browser_perf-profiler-01.js => devtools/server/tests/browser/browser_perf-profiler-01.js rename : toolkit/devtools/server/tests/browser/browser_perf-profiler-02.js => devtools/server/tests/browser/browser_perf-profiler-02.js rename : toolkit/devtools/server/tests/browser/browser_perf-profiler-03.js => devtools/server/tests/browser/browser_perf-profiler-03.js rename : toolkit/devtools/server/tests/browser/browser_perf-realtime-markers.js => devtools/server/tests/browser/browser_perf-realtime-markers.js rename : toolkit/devtools/server/tests/browser/browser_perf-recording-actor-01.js => devtools/server/tests/browser/browser_perf-recording-actor-01.js rename : toolkit/devtools/server/tests/browser/browser_perf-recording-actor-02.js => devtools/server/tests/browser/browser_perf-recording-actor-02.js rename : toolkit/devtools/server/tests/browser/browser_perf-samples-01.js => devtools/server/tests/browser/browser_perf-samples-01.js rename : toolkit/devtools/server/tests/browser/browser_perf-samples-02.js => devtools/server/tests/browser/browser_perf-samples-02.js rename : toolkit/devtools/server/tests/browser/browser_storage_dynamic_windows.js => devtools/server/tests/browser/browser_storage_dynamic_windows.js rename : toolkit/devtools/server/tests/browser/browser_storage_listings.js => devtools/server/tests/browser/browser_storage_listings.js rename : toolkit/devtools/server/tests/browser/browser_storage_updates.js => devtools/server/tests/browser/browser_storage_updates.js rename : toolkit/devtools/server/tests/browser/browser_stylesheets_nested-iframes.js => devtools/server/tests/browser/browser_stylesheets_nested-iframes.js rename : toolkit/devtools/server/tests/browser/browser_timeline.js => devtools/server/tests/browser/browser_timeline.js rename : toolkit/devtools/server/tests/browser/browser_timeline_actors.js => devtools/server/tests/browser/browser_timeline_actors.js rename : toolkit/devtools/server/tests/browser/browser_timeline_iframes.js => devtools/server/tests/browser/browser_timeline_iframes.js rename : toolkit/devtools/server/tests/browser/director-script-target.html => devtools/server/tests/browser/director-script-target.html rename : toolkit/devtools/server/tests/browser/doc_allocations.html => devtools/server/tests/browser/doc_allocations.html rename : toolkit/devtools/server/tests/browser/doc_force_cc.html => devtools/server/tests/browser/doc_force_cc.html rename : toolkit/devtools/server/tests/browser/doc_force_gc.html => devtools/server/tests/browser/doc_force_gc.html rename : toolkit/devtools/server/tests/browser/doc_innerHTML.html => devtools/server/tests/browser/doc_innerHTML.html rename : toolkit/devtools/server/tests/browser/doc_perf.html => devtools/server/tests/browser/doc_perf.html rename : toolkit/devtools/server/tests/browser/head.js => devtools/server/tests/browser/head.js rename : toolkit/devtools/server/tests/browser/navigate-first.html => devtools/server/tests/browser/navigate-first.html rename : toolkit/devtools/server/tests/browser/navigate-second.html => devtools/server/tests/browser/navigate-second.html rename : toolkit/devtools/server/tests/browser/storage-dynamic-windows.html => devtools/server/tests/browser/storage-dynamic-windows.html rename : toolkit/devtools/server/tests/browser/storage-listings.html => devtools/server/tests/browser/storage-listings.html rename : toolkit/devtools/server/tests/browser/storage-secured-iframe.html => devtools/server/tests/browser/storage-secured-iframe.html rename : toolkit/devtools/server/tests/browser/storage-unsecured-iframe.html => devtools/server/tests/browser/storage-unsecured-iframe.html rename : toolkit/devtools/server/tests/browser/storage-updates.html => devtools/server/tests/browser/storage-updates.html rename : toolkit/devtools/server/tests/browser/stylesheets-nested-iframes.html => devtools/server/tests/browser/stylesheets-nested-iframes.html rename : toolkit/devtools/server/tests/browser/timeline-iframe-child.html => devtools/server/tests/browser/timeline-iframe-child.html rename : toolkit/devtools/server/tests/browser/timeline-iframe-parent.html => devtools/server/tests/browser/timeline-iframe-parent.html rename : toolkit/devtools/server/tests/mochitest/.eslintrc => devtools/server/tests/mochitest/.eslintrc rename : toolkit/devtools/server/tests/mochitest/Debugger.Source.prototype.element-2.js => devtools/server/tests/mochitest/Debugger.Source.prototype.element-2.js rename : toolkit/devtools/server/tests/mochitest/Debugger.Source.prototype.element.html => devtools/server/tests/mochitest/Debugger.Source.prototype.element.html rename : toolkit/devtools/server/tests/mochitest/Debugger.Source.prototype.element.js => devtools/server/tests/mochitest/Debugger.Source.prototype.element.js rename : toolkit/devtools/server/tests/mochitest/chrome.ini => devtools/server/tests/mochitest/chrome.ini rename : toolkit/devtools/server/tests/mochitest/director-helpers.js => devtools/server/tests/mochitest/director-helpers.js rename : toolkit/devtools/server/tests/mochitest/hello-actor.js => devtools/server/tests/mochitest/hello-actor.js rename : toolkit/devtools/server/tests/mochitest/inspector-delay-image-response.sjs => devtools/server/tests/mochitest/inspector-delay-image-response.sjs rename : toolkit/devtools/server/tests/mochitest/inspector-helpers.js => devtools/server/tests/mochitest/inspector-helpers.js rename : toolkit/devtools/server/tests/mochitest/inspector-styles-data.css => devtools/server/tests/mochitest/inspector-styles-data.css rename : toolkit/devtools/server/tests/mochitest/inspector-styles-data.html => devtools/server/tests/mochitest/inspector-styles-data.html rename : toolkit/devtools/server/tests/mochitest/inspector-traversal-data.html => devtools/server/tests/mochitest/inspector-traversal-data.html rename : toolkit/devtools/server/tests/mochitest/inspector_getImageData.html => devtools/server/tests/mochitest/inspector_getImageData.html rename : toolkit/devtools/server/tests/mochitest/large-image.jpg => devtools/server/tests/mochitest/large-image.jpg rename : toolkit/devtools/server/tests/mochitest/memory-helpers.js => devtools/server/tests/mochitest/memory-helpers.js rename : toolkit/devtools/server/tests/mochitest/memprof-helpers.js => devtools/server/tests/mochitest/memprof-helpers.js rename : toolkit/devtools/server/tests/mochitest/nonchrome_unsafeDereference.html => devtools/server/tests/mochitest/nonchrome_unsafeDereference.html rename : toolkit/devtools/server/tests/mochitest/setup-in-child.js => devtools/server/tests/mochitest/setup-in-child.js rename : toolkit/devtools/server/tests/mochitest/setup-in-parent.js => devtools/server/tests/mochitest/setup-in-parent.js rename : toolkit/devtools/server/tests/mochitest/small-image.gif => devtools/server/tests/mochitest/small-image.gif rename : toolkit/devtools/server/tests/mochitest/test_Debugger.Script.prototype.global.html => devtools/server/tests/mochitest/test_Debugger.Script.prototype.global.html rename : toolkit/devtools/server/tests/mochitest/test_Debugger.Source.prototype.element.html => devtools/server/tests/mochitest/test_Debugger.Source.prototype.element.html rename : toolkit/devtools/server/tests/mochitest/test_Debugger.Source.prototype.introductionScript.html => devtools/server/tests/mochitest/test_Debugger.Source.prototype.introductionScript.html rename : toolkit/devtools/server/tests/mochitest/test_Debugger.Source.prototype.introductionType.html => devtools/server/tests/mochitest/test_Debugger.Source.prototype.introductionType.html rename : toolkit/devtools/server/tests/mochitest/test_connectToChild.html => devtools/server/tests/mochitest/test_connectToChild.html rename : toolkit/devtools/server/tests/mochitest/test_connection-manager.html => devtools/server/tests/mochitest/test_connection-manager.html rename : toolkit/devtools/server/tests/mochitest/test_css-logic-inheritance.html => devtools/server/tests/mochitest/test_css-logic-inheritance.html rename : toolkit/devtools/server/tests/mochitest/test_css-logic-media-queries.html => devtools/server/tests/mochitest/test_css-logic-media-queries.html rename : toolkit/devtools/server/tests/mochitest/test_css-logic-specificity.html => devtools/server/tests/mochitest/test_css-logic-specificity.html rename : toolkit/devtools/server/tests/mochitest/test_css-logic.html => devtools/server/tests/mochitest/test_css-logic.html rename : toolkit/devtools/server/tests/mochitest/test_device.html => devtools/server/tests/mochitest/test_device.html rename : toolkit/devtools/server/tests/mochitest/test_director.html => devtools/server/tests/mochitest/test_director.html rename : toolkit/devtools/server/tests/mochitest/test_director_connectToChild.html => devtools/server/tests/mochitest/test_director_connectToChild.html rename : toolkit/devtools/server/tests/mochitest/test_executeInGlobal-outerized_this.html => devtools/server/tests/mochitest/test_executeInGlobal-outerized_this.html rename : toolkit/devtools/server/tests/mochitest/test_framerate_01.html => devtools/server/tests/mochitest/test_framerate_01.html rename : toolkit/devtools/server/tests/mochitest/test_framerate_02.html => devtools/server/tests/mochitest/test_framerate_02.html rename : toolkit/devtools/server/tests/mochitest/test_framerate_03.html => devtools/server/tests/mochitest/test_framerate_03.html rename : toolkit/devtools/server/tests/mochitest/test_framerate_04.html => devtools/server/tests/mochitest/test_framerate_04.html rename : toolkit/devtools/server/tests/mochitest/test_framerate_05.html => devtools/server/tests/mochitest/test_framerate_05.html rename : toolkit/devtools/server/tests/mochitest/test_framerate_06.html => devtools/server/tests/mochitest/test_framerate_06.html rename : toolkit/devtools/server/tests/mochitest/test_getProcess.html => devtools/server/tests/mochitest/test_getProcess.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-anonymous.html => devtools/server/tests/mochitest/test_inspector-anonymous.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-changeattrs.html => devtools/server/tests/mochitest/test_inspector-changeattrs.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-changevalue.html => devtools/server/tests/mochitest/test_inspector-changevalue.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-dead-nodes.html => devtools/server/tests/mochitest/test_inspector-dead-nodes.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-hide.html => devtools/server/tests/mochitest/test_inspector-hide.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-insert.html => devtools/server/tests/mochitest/test_inspector-insert.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-mutations-attr.html => devtools/server/tests/mochitest/test_inspector-mutations-attr.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-mutations-childlist.html => devtools/server/tests/mochitest/test_inspector-mutations-childlist.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-mutations-frameload.html => devtools/server/tests/mochitest/test_inspector-mutations-frameload.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-mutations-value.html => devtools/server/tests/mochitest/test_inspector-mutations-value.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-pseudoclass-lock.html => devtools/server/tests/mochitest/test_inspector-pseudoclass-lock.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-release.html => devtools/server/tests/mochitest/test_inspector-release.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-reload.html => devtools/server/tests/mochitest/test_inspector-reload.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-remove.html => devtools/server/tests/mochitest/test_inspector-remove.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-resolve-url.html => devtools/server/tests/mochitest/test_inspector-resolve-url.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-retain.html => devtools/server/tests/mochitest/test_inspector-retain.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-scroll-into-view.html => devtools/server/tests/mochitest/test_inspector-scroll-into-view.html rename : toolkit/devtools/server/tests/mochitest/test_inspector-traversal.html => devtools/server/tests/mochitest/test_inspector-traversal.html rename : toolkit/devtools/server/tests/mochitest/test_inspector_getImageData-wait-for-load.html => devtools/server/tests/mochitest/test_inspector_getImageData-wait-for-load.html rename : toolkit/devtools/server/tests/mochitest/test_inspector_getImageData.html => devtools/server/tests/mochitest/test_inspector_getImageData.html rename : toolkit/devtools/server/tests/mochitest/test_inspector_getImageDataFromURL.html => devtools/server/tests/mochitest/test_inspector_getImageDataFromURL.html rename : toolkit/devtools/server/tests/mochitest/test_inspector_getNodeFromActor.html => devtools/server/tests/mochitest/test_inspector_getNodeFromActor.html rename : toolkit/devtools/server/tests/mochitest/test_makeGlobalObjectReference.html => devtools/server/tests/mochitest/test_makeGlobalObjectReference.html rename : toolkit/devtools/server/tests/mochitest/test_memory.html => devtools/server/tests/mochitest/test_memory.html rename : toolkit/devtools/server/tests/mochitest/test_memory_allocations_01.html => devtools/server/tests/mochitest/test_memory_allocations_01.html rename : toolkit/devtools/server/tests/mochitest/test_memory_allocations_02.html => devtools/server/tests/mochitest/test_memory_allocations_02.html rename : toolkit/devtools/server/tests/mochitest/test_memory_allocations_03.html => devtools/server/tests/mochitest/test_memory_allocations_03.html rename : toolkit/devtools/server/tests/mochitest/test_memory_allocations_04.html => devtools/server/tests/mochitest/test_memory_allocations_04.html rename : toolkit/devtools/server/tests/mochitest/test_memory_allocations_05.html => devtools/server/tests/mochitest/test_memory_allocations_05.html rename : toolkit/devtools/server/tests/mochitest/test_memory_allocations_06.html => devtools/server/tests/mochitest/test_memory_allocations_06.html rename : toolkit/devtools/server/tests/mochitest/test_memory_allocations_07.html => devtools/server/tests/mochitest/test_memory_allocations_07.html rename : toolkit/devtools/server/tests/mochitest/test_memory_attach_01.html => devtools/server/tests/mochitest/test_memory_attach_01.html rename : toolkit/devtools/server/tests/mochitest/test_memory_attach_02.html => devtools/server/tests/mochitest/test_memory_attach_02.html rename : toolkit/devtools/server/tests/mochitest/test_memory_census.html => devtools/server/tests/mochitest/test_memory_census.html rename : toolkit/devtools/server/tests/mochitest/test_memory_gc_01.html => devtools/server/tests/mochitest/test_memory_gc_01.html rename : toolkit/devtools/server/tests/mochitest/test_memory_gc_events.html => devtools/server/tests/mochitest/test_memory_gc_events.html rename : toolkit/devtools/server/tests/mochitest/test_memprof.html => devtools/server/tests/mochitest/test_memprof.html rename : toolkit/devtools/server/tests/mochitest/test_preference.html => devtools/server/tests/mochitest/test_preference.html rename : toolkit/devtools/server/tests/mochitest/test_registerActor.html => devtools/server/tests/mochitest/test_registerActor.html rename : toolkit/devtools/server/tests/mochitest/test_settings.html => devtools/server/tests/mochitest/test_settings.html rename : toolkit/devtools/server/tests/mochitest/test_setupInParentChild.html => devtools/server/tests/mochitest/test_setupInParentChild.html rename : toolkit/devtools/server/tests/mochitest/test_styles-applied.html => devtools/server/tests/mochitest/test_styles-applied.html rename : toolkit/devtools/server/tests/mochitest/test_styles-computed.html => devtools/server/tests/mochitest/test_styles-computed.html rename : toolkit/devtools/server/tests/mochitest/test_styles-layout.html => devtools/server/tests/mochitest/test_styles-layout.html rename : toolkit/devtools/server/tests/mochitest/test_styles-matched.html => devtools/server/tests/mochitest/test_styles-matched.html rename : toolkit/devtools/server/tests/mochitest/test_styles-modify.html => devtools/server/tests/mochitest/test_styles-modify.html rename : toolkit/devtools/server/tests/mochitest/test_styles-svg.html => devtools/server/tests/mochitest/test_styles-svg.html rename : toolkit/devtools/server/tests/mochitest/test_unsafeDereference.html => devtools/server/tests/mochitest/test_unsafeDereference.html rename : toolkit/devtools/server/tests/unit/.eslintrc => devtools/server/tests/unit/.eslintrc rename : toolkit/devtools/server/tests/unit/babel_and_browserify_script_with_source_map.js => devtools/server/tests/unit/babel_and_browserify_script_with_source_map.js rename : toolkit/devtools/server/tests/unit/head_dbg.js => devtools/server/tests/unit/head_dbg.js rename : toolkit/devtools/server/tests/unit/hello-actor.js => devtools/server/tests/unit/hello-actor.js rename : toolkit/devtools/server/tests/unit/post_init_global_actors.js => devtools/server/tests/unit/post_init_global_actors.js rename : toolkit/devtools/server/tests/unit/post_init_tab_actors.js => devtools/server/tests/unit/post_init_tab_actors.js rename : toolkit/devtools/server/tests/unit/pre_init_global_actors.js => devtools/server/tests/unit/pre_init_global_actors.js rename : toolkit/devtools/server/tests/unit/pre_init_tab_actors.js => devtools/server/tests/unit/pre_init_tab_actors.js rename : toolkit/devtools/server/tests/unit/registertestactors-01.js => devtools/server/tests/unit/registertestactors-01.js rename : toolkit/devtools/server/tests/unit/registertestactors-02.js => devtools/server/tests/unit/registertestactors-02.js rename : toolkit/devtools/server/tests/unit/registertestactors-03.js => devtools/server/tests/unit/registertestactors-03.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-column-in-gcd-script.js => devtools/server/tests/unit/setBreakpoint-on-column-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-column-with-no-offsets-at-end-of-line.js => devtools/server/tests/unit/setBreakpoint-on-column-with-no-offsets-at-end-of-line.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-column-with-no-offsets-at-end-of-script.js => devtools/server/tests/unit/setBreakpoint-on-column-with-no-offsets-at-end-of-script.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-column-with-no-offsets-in-gcd-script.js => devtools/server/tests/unit/setBreakpoint-on-column-with-no-offsets-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-column-with-no-offsets.js => devtools/server/tests/unit/setBreakpoint-on-column-with-no-offsets.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-column.js => devtools/server/tests/unit/setBreakpoint-on-column.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-line-in-gcd-script.js => devtools/server/tests/unit/setBreakpoint-on-line-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-line-with-multiple-offsets.js => devtools/server/tests/unit/setBreakpoint-on-line-with-multiple-offsets.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-line-with-multiple-statements.js => devtools/server/tests/unit/setBreakpoint-on-line-with-multiple-statements.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-line-with-no-offsets-at-end-of-script.js => devtools/server/tests/unit/setBreakpoint-on-line-with-no-offsets-at-end-of-script.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-line-with-no-offsets-in-gcd-script.js => devtools/server/tests/unit/setBreakpoint-on-line-with-no-offsets-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-line-with-no-offsets.js => devtools/server/tests/unit/setBreakpoint-on-line-with-no-offsets.js rename : toolkit/devtools/server/tests/unit/setBreakpoint-on-line.js => devtools/server/tests/unit/setBreakpoint-on-line.js rename : toolkit/devtools/server/tests/unit/source-map-data/sourcemapped.coffee => devtools/server/tests/unit/source-map-data/sourcemapped.coffee rename : toolkit/devtools/server/tests/unit/source-map-data/sourcemapped.map => devtools/server/tests/unit/source-map-data/sourcemapped.map rename : toolkit/devtools/server/tests/unit/sourcemapped.js => devtools/server/tests/unit/sourcemapped.js rename : toolkit/devtools/server/tests/unit/test_MemoryActor_saveHeapSnapshot_01.js => devtools/server/tests/unit/test_MemoryActor_saveHeapSnapshot_01.js rename : toolkit/devtools/server/tests/unit/test_MemoryActor_saveHeapSnapshot_02.js => devtools/server/tests/unit/test_MemoryActor_saveHeapSnapshot_02.js rename : toolkit/devtools/server/tests/unit/test_ScriptStore.js => devtools/server/tests/unit/test_ScriptStore.js rename : toolkit/devtools/server/tests/unit/test_actor-registry-actor.js => devtools/server/tests/unit/test_actor-registry-actor.js rename : toolkit/devtools/server/tests/unit/test_add_actors.js => devtools/server/tests/unit/test_add_actors.js rename : toolkit/devtools/server/tests/unit/test_attach.js => devtools/server/tests/unit/test_attach.js rename : toolkit/devtools/server/tests/unit/test_blackboxing-01.js => devtools/server/tests/unit/test_blackboxing-01.js rename : toolkit/devtools/server/tests/unit/test_blackboxing-02.js => devtools/server/tests/unit/test_blackboxing-02.js rename : toolkit/devtools/server/tests/unit/test_blackboxing-03.js => devtools/server/tests/unit/test_blackboxing-03.js rename : toolkit/devtools/server/tests/unit/test_blackboxing-04.js => devtools/server/tests/unit/test_blackboxing-04.js rename : toolkit/devtools/server/tests/unit/test_blackboxing-05.js => devtools/server/tests/unit/test_blackboxing-05.js rename : toolkit/devtools/server/tests/unit/test_blackboxing-06.js => devtools/server/tests/unit/test_blackboxing-06.js rename : toolkit/devtools/server/tests/unit/test_blackboxing-07.js => devtools/server/tests/unit/test_blackboxing-07.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-01.js => devtools/server/tests/unit/test_breakpoint-01.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-02.js => devtools/server/tests/unit/test_breakpoint-02.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-03.js => devtools/server/tests/unit/test_breakpoint-03.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-04.js => devtools/server/tests/unit/test_breakpoint-04.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-05.js => devtools/server/tests/unit/test_breakpoint-05.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-06.js => devtools/server/tests/unit/test_breakpoint-06.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-07.js => devtools/server/tests/unit/test_breakpoint-07.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-08.js => devtools/server/tests/unit/test_breakpoint-08.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-09.js => devtools/server/tests/unit/test_breakpoint-09.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-10.js => devtools/server/tests/unit/test_breakpoint-10.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-11.js => devtools/server/tests/unit/test_breakpoint-11.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-12.js => devtools/server/tests/unit/test_breakpoint-12.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-13.js => devtools/server/tests/unit/test_breakpoint-13.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-14.js => devtools/server/tests/unit/test_breakpoint-14.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-15.js => devtools/server/tests/unit/test_breakpoint-15.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-16.js => devtools/server/tests/unit/test_breakpoint-16.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-17.js => devtools/server/tests/unit/test_breakpoint-17.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-18.js => devtools/server/tests/unit/test_breakpoint-18.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-19.js => devtools/server/tests/unit/test_breakpoint-19.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-20.js => devtools/server/tests/unit/test_breakpoint-20.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-21.js => devtools/server/tests/unit/test_breakpoint-21.js rename : toolkit/devtools/server/tests/unit/test_breakpoint-actor-map.js => devtools/server/tests/unit/test_breakpoint-actor-map.js rename : toolkit/devtools/server/tests/unit/test_client_request.js => devtools/server/tests/unit/test_client_request.js rename : toolkit/devtools/server/tests/unit/test_conditional_breakpoint-01.js => devtools/server/tests/unit/test_conditional_breakpoint-01.js rename : toolkit/devtools/server/tests/unit/test_conditional_breakpoint-02.js => devtools/server/tests/unit/test_conditional_breakpoint-02.js rename : toolkit/devtools/server/tests/unit/test_conditional_breakpoint-03.js => devtools/server/tests/unit/test_conditional_breakpoint-03.js rename : toolkit/devtools/server/tests/unit/test_dbgactor.js => devtools/server/tests/unit/test_dbgactor.js rename : toolkit/devtools/server/tests/unit/test_dbgclient_debuggerstatement.js => devtools/server/tests/unit/test_dbgclient_debuggerstatement.js rename : toolkit/devtools/server/tests/unit/test_dbgglobal.js => devtools/server/tests/unit/test_dbgglobal.js rename : toolkit/devtools/server/tests/unit/test_eval-01.js => devtools/server/tests/unit/test_eval-01.js rename : toolkit/devtools/server/tests/unit/test_eval-02.js => devtools/server/tests/unit/test_eval-02.js rename : toolkit/devtools/server/tests/unit/test_eval-03.js => devtools/server/tests/unit/test_eval-03.js rename : toolkit/devtools/server/tests/unit/test_eval-04.js => devtools/server/tests/unit/test_eval-04.js rename : toolkit/devtools/server/tests/unit/test_eval-05.js => devtools/server/tests/unit/test_eval-05.js rename : toolkit/devtools/server/tests/unit/test_eventlooplag_actor.js => devtools/server/tests/unit/test_eventlooplag_actor.js rename : toolkit/devtools/server/tests/unit/test_forwardingprefix.js => devtools/server/tests/unit/test_forwardingprefix.js rename : toolkit/devtools/server/tests/unit/test_frameactor-01.js => devtools/server/tests/unit/test_frameactor-01.js rename : toolkit/devtools/server/tests/unit/test_frameactor-02.js => devtools/server/tests/unit/test_frameactor-02.js rename : toolkit/devtools/server/tests/unit/test_frameactor-03.js => devtools/server/tests/unit/test_frameactor-03.js rename : toolkit/devtools/server/tests/unit/test_frameactor-04.js => devtools/server/tests/unit/test_frameactor-04.js rename : toolkit/devtools/server/tests/unit/test_frameactor-05.js => devtools/server/tests/unit/test_frameactor-05.js rename : toolkit/devtools/server/tests/unit/test_framearguments-01.js => devtools/server/tests/unit/test_framearguments-01.js rename : toolkit/devtools/server/tests/unit/test_framebindings-01.js => devtools/server/tests/unit/test_framebindings-01.js rename : toolkit/devtools/server/tests/unit/test_framebindings-02.js => devtools/server/tests/unit/test_framebindings-02.js rename : toolkit/devtools/server/tests/unit/test_framebindings-03.js => devtools/server/tests/unit/test_framebindings-03.js rename : toolkit/devtools/server/tests/unit/test_framebindings-04.js => devtools/server/tests/unit/test_framebindings-04.js rename : toolkit/devtools/server/tests/unit/test_framebindings-05.js => devtools/server/tests/unit/test_framebindings-05.js rename : toolkit/devtools/server/tests/unit/test_framebindings-06.js => devtools/server/tests/unit/test_framebindings-06.js rename : toolkit/devtools/server/tests/unit/test_framebindings-07.js => devtools/server/tests/unit/test_framebindings-07.js rename : toolkit/devtools/server/tests/unit/test_frameclient-01.js => devtools/server/tests/unit/test_frameclient-01.js rename : toolkit/devtools/server/tests/unit/test_frameclient-02.js => devtools/server/tests/unit/test_frameclient-02.js rename : toolkit/devtools/server/tests/unit/test_functiongrips-01.js => devtools/server/tests/unit/test_functiongrips-01.js rename : toolkit/devtools/server/tests/unit/test_get-executable-lines-source-map.js => devtools/server/tests/unit/test_get-executable-lines-source-map.js rename : toolkit/devtools/server/tests/unit/test_get-executable-lines.js => devtools/server/tests/unit/test_get-executable-lines.js rename : toolkit/devtools/server/tests/unit/test_getRuleText.js => devtools/server/tests/unit/test_getRuleText.js rename : toolkit/devtools/server/tests/unit/test_getTextAtLineColumn.js => devtools/server/tests/unit/test_getTextAtLineColumn.js rename : toolkit/devtools/server/tests/unit/test_getyoungestframe.js => devtools/server/tests/unit/test_getyoungestframe.js rename : toolkit/devtools/server/tests/unit/test_ignore_caught_exceptions.js => devtools/server/tests/unit/test_ignore_caught_exceptions.js rename : toolkit/devtools/server/tests/unit/test_interrupt.js => devtools/server/tests/unit/test_interrupt.js rename : toolkit/devtools/server/tests/unit/test_layout-reflows-observer.js => devtools/server/tests/unit/test_layout-reflows-observer.js rename : toolkit/devtools/server/tests/unit/test_listsources-01.js => devtools/server/tests/unit/test_listsources-01.js rename : toolkit/devtools/server/tests/unit/test_listsources-02.js => devtools/server/tests/unit/test_listsources-02.js rename : toolkit/devtools/server/tests/unit/test_listsources-03.js => devtools/server/tests/unit/test_listsources-03.js rename : toolkit/devtools/server/tests/unit/test_longstringactor.js => devtools/server/tests/unit/test_longstringactor.js rename : toolkit/devtools/server/tests/unit/test_longstringgrips-01.js => devtools/server/tests/unit/test_longstringgrips-01.js rename : toolkit/devtools/server/tests/unit/test_longstringgrips-02.js => devtools/server/tests/unit/test_longstringgrips-02.js rename : toolkit/devtools/server/tests/unit/test_memory_footprint.js => devtools/server/tests/unit/test_memory_footprint.js rename : toolkit/devtools/server/tests/unit/test_monitor_actor.js => devtools/server/tests/unit/test_monitor_actor.js rename : toolkit/devtools/server/tests/unit/test_nativewrappers.js => devtools/server/tests/unit/test_nativewrappers.js rename : toolkit/devtools/server/tests/unit/test_nesting-01.js => devtools/server/tests/unit/test_nesting-01.js rename : toolkit/devtools/server/tests/unit/test_nesting-02.js => devtools/server/tests/unit/test_nesting-02.js rename : toolkit/devtools/server/tests/unit/test_nesting-03.js => devtools/server/tests/unit/test_nesting-03.js rename : toolkit/devtools/server/tests/unit/test_new_source-01.js => devtools/server/tests/unit/test_new_source-01.js rename : toolkit/devtools/server/tests/unit/test_nodelistactor.js => devtools/server/tests/unit/test_nodelistactor.js rename : toolkit/devtools/server/tests/unit/test_nsjsinspector.js => devtools/server/tests/unit/test_nsjsinspector.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-01.js => devtools/server/tests/unit/test_objectgrips-01.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-02.js => devtools/server/tests/unit/test_objectgrips-02.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-03.js => devtools/server/tests/unit/test_objectgrips-03.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-04.js => devtools/server/tests/unit/test_objectgrips-04.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-05.js => devtools/server/tests/unit/test_objectgrips-05.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-06.js => devtools/server/tests/unit/test_objectgrips-06.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-07.js => devtools/server/tests/unit/test_objectgrips-07.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-08.js => devtools/server/tests/unit/test_objectgrips-08.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-09.js => devtools/server/tests/unit/test_objectgrips-09.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-10.js => devtools/server/tests/unit/test_objectgrips-10.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-11.js => devtools/server/tests/unit/test_objectgrips-11.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-12.js => devtools/server/tests/unit/test_objectgrips-12.js rename : toolkit/devtools/server/tests/unit/test_objectgrips-13.js => devtools/server/tests/unit/test_objectgrips-13.js rename : toolkit/devtools/server/tests/unit/test_pause_exceptions-01.js => devtools/server/tests/unit/test_pause_exceptions-01.js rename : toolkit/devtools/server/tests/unit/test_pause_exceptions-02.js => devtools/server/tests/unit/test_pause_exceptions-02.js rename : toolkit/devtools/server/tests/unit/test_pauselifetime-01.js => devtools/server/tests/unit/test_pauselifetime-01.js rename : toolkit/devtools/server/tests/unit/test_pauselifetime-02.js => devtools/server/tests/unit/test_pauselifetime-02.js rename : toolkit/devtools/server/tests/unit/test_pauselifetime-03.js => devtools/server/tests/unit/test_pauselifetime-03.js rename : toolkit/devtools/server/tests/unit/test_pauselifetime-04.js => devtools/server/tests/unit/test_pauselifetime-04.js rename : toolkit/devtools/server/tests/unit/test_profiler_activation-01.js => devtools/server/tests/unit/test_profiler_activation-01.js rename : toolkit/devtools/server/tests/unit/test_profiler_activation-02.js => devtools/server/tests/unit/test_profiler_activation-02.js rename : toolkit/devtools/server/tests/unit/test_profiler_bufferstatus.js => devtools/server/tests/unit/test_profiler_bufferstatus.js rename : toolkit/devtools/server/tests/unit/test_profiler_close.js => devtools/server/tests/unit/test_profiler_close.js rename : toolkit/devtools/server/tests/unit/test_profiler_data.js => devtools/server/tests/unit/test_profiler_data.js rename : toolkit/devtools/server/tests/unit/test_profiler_events-01.js => devtools/server/tests/unit/test_profiler_events-01.js rename : toolkit/devtools/server/tests/unit/test_profiler_events-02.js => devtools/server/tests/unit/test_profiler_events-02.js rename : toolkit/devtools/server/tests/unit/test_profiler_getbufferinfo.js => devtools/server/tests/unit/test_profiler_getbufferinfo.js rename : toolkit/devtools/server/tests/unit/test_profiler_getfeatures.js => devtools/server/tests/unit/test_profiler_getfeatures.js rename : toolkit/devtools/server/tests/unit/test_profiler_getsharedlibraryinformation.js => devtools/server/tests/unit/test_profiler_getsharedlibraryinformation.js rename : toolkit/devtools/server/tests/unit/test_promise_state-01.js => devtools/server/tests/unit/test_promise_state-01.js rename : toolkit/devtools/server/tests/unit/test_promise_state-02.js => devtools/server/tests/unit/test_promise_state-02.js rename : toolkit/devtools/server/tests/unit/test_promise_state-03.js => devtools/server/tests/unit/test_promise_state-03.js rename : toolkit/devtools/server/tests/unit/test_promises_actor_attach.js => devtools/server/tests/unit/test_promises_actor_attach.js rename : toolkit/devtools/server/tests/unit/test_promises_actor_exist.js => devtools/server/tests/unit/test_promises_actor_exist.js rename : toolkit/devtools/server/tests/unit/test_promises_actor_list_promises.js => devtools/server/tests/unit/test_promises_actor_list_promises.js rename : toolkit/devtools/server/tests/unit/test_promises_actor_onnewpromise.js => devtools/server/tests/unit/test_promises_actor_onnewpromise.js rename : toolkit/devtools/server/tests/unit/test_promises_actor_onpromisesettled.js => devtools/server/tests/unit/test_promises_actor_onpromisesettled.js rename : toolkit/devtools/server/tests/unit/test_promises_client_getdependentpromises.js => devtools/server/tests/unit/test_promises_client_getdependentpromises.js rename : toolkit/devtools/server/tests/unit/test_promises_object_creationtimestamp.js => devtools/server/tests/unit/test_promises_object_creationtimestamp.js rename : toolkit/devtools/server/tests/unit/test_promises_object_timetosettle-01.js => devtools/server/tests/unit/test_promises_object_timetosettle-01.js rename : toolkit/devtools/server/tests/unit/test_promises_object_timetosettle-02.js => devtools/server/tests/unit/test_promises_object_timetosettle-02.js rename : toolkit/devtools/server/tests/unit/test_protocolSpec.js => devtools/server/tests/unit/test_protocolSpec.js rename : toolkit/devtools/server/tests/unit/test_protocol_abort.js => devtools/server/tests/unit/test_protocol_abort.js rename : toolkit/devtools/server/tests/unit/test_protocol_async.js => devtools/server/tests/unit/test_protocol_async.js rename : toolkit/devtools/server/tests/unit/test_protocol_children.js => devtools/server/tests/unit/test_protocol_children.js rename : toolkit/devtools/server/tests/unit/test_protocol_formtype.js => devtools/server/tests/unit/test_protocol_formtype.js rename : toolkit/devtools/server/tests/unit/test_protocol_longstring.js => devtools/server/tests/unit/test_protocol_longstring.js rename : toolkit/devtools/server/tests/unit/test_protocol_simple.js => devtools/server/tests/unit/test_protocol_simple.js rename : toolkit/devtools/server/tests/unit/test_protocol_stack.js => devtools/server/tests/unit/test_protocol_stack.js rename : toolkit/devtools/server/tests/unit/test_protocol_unregister.js => devtools/server/tests/unit/test_protocol_unregister.js rename : toolkit/devtools/server/tests/unit/test_reattach-thread.js => devtools/server/tests/unit/test_reattach-thread.js rename : toolkit/devtools/server/tests/unit/test_registerClient.js => devtools/server/tests/unit/test_registerClient.js rename : toolkit/devtools/server/tests/unit/test_register_actor.js => devtools/server/tests/unit/test_register_actor.js rename : toolkit/devtools/server/tests/unit/test_requestTypes.js => devtools/server/tests/unit/test_requestTypes.js rename : toolkit/devtools/server/tests/unit/test_safe-getter.js => devtools/server/tests/unit/test_safe-getter.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-column-in-gcd-script.js => devtools/server/tests/unit/test_setBreakpoint-on-column-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offests-in-gcd-script.js => devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offests-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-at-end-of-line.js => devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-at-end-of-line.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-at-end-of-script.js => devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-at-end-of-script.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-in-gcd-script.js => devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets.js => devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-column.js => devtools/server/tests/unit/test_setBreakpoint-on-column.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-line-in-gcd-script.js => devtools/server/tests/unit/test_setBreakpoint-on-line-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-line-with-multiple-offsets.js => devtools/server/tests/unit/test_setBreakpoint-on-line-with-multiple-offsets.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-line-with-multiple-statements.js => devtools/server/tests/unit/test_setBreakpoint-on-line-with-multiple-statements.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-line-with-no-offets-in-gcd-script.js => devtools/server/tests/unit/test_setBreakpoint-on-line-with-no-offets-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-line-with-no-offsets-at-end-of-script.js => devtools/server/tests/unit/test_setBreakpoint-on-line-with-no-offsets-at-end-of-script.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-line-with-no-offsets-in-gcd-script.js => devtools/server/tests/unit/test_setBreakpoint-on-line-with-no-offsets-in-gcd-script.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-line-with-no-offsets.js => devtools/server/tests/unit/test_setBreakpoint-on-line-with-no-offsets.js rename : toolkit/devtools/server/tests/unit/test_setBreakpoint-on-line.js => devtools/server/tests/unit/test_setBreakpoint-on-line.js rename : toolkit/devtools/server/tests/unit/test_source-01.js => devtools/server/tests/unit/test_source-01.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-01.js => devtools/server/tests/unit/test_sourcemaps-01.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-02.js => devtools/server/tests/unit/test_sourcemaps-02.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-03.js => devtools/server/tests/unit/test_sourcemaps-03.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-04.js => devtools/server/tests/unit/test_sourcemaps-04.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-05.js => devtools/server/tests/unit/test_sourcemaps-05.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-06.js => devtools/server/tests/unit/test_sourcemaps-06.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-07.js => devtools/server/tests/unit/test_sourcemaps-07.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-08.js => devtools/server/tests/unit/test_sourcemaps-08.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-09.js => devtools/server/tests/unit/test_sourcemaps-09.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-10.js => devtools/server/tests/unit/test_sourcemaps-10.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-11.js => devtools/server/tests/unit/test_sourcemaps-11.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-12.js => devtools/server/tests/unit/test_sourcemaps-12.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-13.js => devtools/server/tests/unit/test_sourcemaps-13.js rename : toolkit/devtools/server/tests/unit/test_sourcemaps-16.js => devtools/server/tests/unit/test_sourcemaps-16.js rename : toolkit/devtools/server/tests/unit/test_stepping-01.js => devtools/server/tests/unit/test_stepping-01.js rename : toolkit/devtools/server/tests/unit/test_stepping-02.js => devtools/server/tests/unit/test_stepping-02.js rename : toolkit/devtools/server/tests/unit/test_stepping-03.js => devtools/server/tests/unit/test_stepping-03.js rename : toolkit/devtools/server/tests/unit/test_stepping-04.js => devtools/server/tests/unit/test_stepping-04.js rename : toolkit/devtools/server/tests/unit/test_stepping-05.js => devtools/server/tests/unit/test_stepping-05.js rename : toolkit/devtools/server/tests/unit/test_stepping-06.js => devtools/server/tests/unit/test_stepping-06.js rename : toolkit/devtools/server/tests/unit/test_symbols-01.js => devtools/server/tests/unit/test_symbols-01.js rename : toolkit/devtools/server/tests/unit/test_symbols-02.js => devtools/server/tests/unit/test_symbols-02.js rename : toolkit/devtools/server/tests/unit/test_threadlifetime-01.js => devtools/server/tests/unit/test_threadlifetime-01.js rename : toolkit/devtools/server/tests/unit/test_threadlifetime-02.js => devtools/server/tests/unit/test_threadlifetime-02.js rename : toolkit/devtools/server/tests/unit/test_threadlifetime-03.js => devtools/server/tests/unit/test_threadlifetime-03.js rename : toolkit/devtools/server/tests/unit/test_threadlifetime-04.js => devtools/server/tests/unit/test_threadlifetime-04.js rename : toolkit/devtools/server/tests/unit/test_threadlifetime-05.js => devtools/server/tests/unit/test_threadlifetime-05.js rename : toolkit/devtools/server/tests/unit/test_threadlifetime-06.js => devtools/server/tests/unit/test_threadlifetime-06.js rename : toolkit/devtools/server/tests/unit/test_unsafeDereference.js => devtools/server/tests/unit/test_unsafeDereference.js rename : toolkit/devtools/server/tests/unit/test_xpcshell_debugging.js => devtools/server/tests/unit/test_xpcshell_debugging.js rename : toolkit/devtools/server/tests/unit/testactors.js => devtools/server/tests/unit/testactors.js rename : toolkit/devtools/server/tests/unit/tracerlocations.js => devtools/server/tests/unit/tracerlocations.js rename : toolkit/devtools/server/tests/unit/xpcshell.ini => devtools/server/tests/unit/xpcshell.ini rename : toolkit/devtools/server/tests/unit/xpcshell_debugging_script.js => devtools/server/tests/unit/xpcshell_debugging_script.js rename : toolkit/devtools/server/worker.js => devtools/server/worker.js rename : toolkit/devtools/.eslintignore => devtools/shared/.eslintignore rename : toolkit/devtools/.eslintrc => devtools/shared/.eslintrc rename : toolkit/devtools/Console.jsm => devtools/shared/Console.jsm rename : toolkit/devtools/DevToolsUtils.js => devtools/shared/DevToolsUtils.js rename : toolkit/devtools/Loader.jsm => devtools/shared/Loader.jsm rename : toolkit/devtools/acorn/LICENSE => devtools/shared/acorn/LICENSE rename : toolkit/devtools/acorn/UPGRADING.md => devtools/shared/acorn/UPGRADING.md rename : toolkit/devtools/acorn/acorn.js => devtools/shared/acorn/acorn.js rename : toolkit/devtools/acorn/acorn_loose.js => devtools/shared/acorn/acorn_loose.js rename : toolkit/devtools/acorn/moz.build => devtools/shared/acorn/moz.build rename : toolkit/devtools/acorn/tests/unit/head_acorn.js => devtools/shared/acorn/tests/unit/head_acorn.js rename : toolkit/devtools/acorn/tests/unit/test_import_acorn.js => devtools/shared/acorn/tests/unit/test_import_acorn.js rename : toolkit/devtools/acorn/tests/unit/test_lenient_parser.js => devtools/shared/acorn/tests/unit/test_lenient_parser.js rename : toolkit/devtools/acorn/tests/unit/test_same_ast.js => devtools/shared/acorn/tests/unit/test_same_ast.js rename : toolkit/devtools/acorn/tests/unit/xpcshell.ini => devtools/shared/acorn/tests/unit/xpcshell.ini rename : toolkit/devtools/acorn/walk.js => devtools/shared/acorn/walk.js rename : toolkit/devtools/apps/Devices.jsm => devtools/shared/apps/Devices.jsm rename : toolkit/devtools/apps/Simulator.jsm => devtools/shared/apps/Simulator.jsm rename : toolkit/devtools/apps/app-actor-front.js => devtools/shared/apps/app-actor-front.js rename : toolkit/devtools/apps/moz.build => devtools/shared/apps/moz.build rename : toolkit/devtools/apps/tests/data/app-certified.zip => devtools/shared/apps/tests/data/app-certified.zip rename : toolkit/devtools/apps/tests/data/app-overload.zip => devtools/shared/apps/tests/data/app-overload.zip rename : toolkit/devtools/apps/tests/data/app-redirect.zip => devtools/shared/apps/tests/data/app-redirect.zip rename : toolkit/devtools/apps/tests/data/app-system.zip => devtools/shared/apps/tests/data/app-system.zip rename : toolkit/devtools/apps/tests/data/app-updated.zip => devtools/shared/apps/tests/data/app-updated.zip rename : toolkit/devtools/apps/tests/data/app.zip => devtools/shared/apps/tests/data/app.zip rename : toolkit/devtools/apps/tests/data/mochitest.ini => devtools/shared/apps/tests/data/mochitest.ini rename : toolkit/devtools/apps/tests/debugger-protocol-helper.js => devtools/shared/apps/tests/debugger-protocol-helper.js rename : toolkit/devtools/apps/tests/mochitest.ini => devtools/shared/apps/tests/mochitest.ini rename : toolkit/devtools/apps/tests/redirect.sjs => devtools/shared/apps/tests/redirect.sjs rename : toolkit/devtools/apps/tests/test_webapps_actor.html => devtools/shared/apps/tests/test_webapps_actor.html rename : toolkit/devtools/apps/tests/unit/data/app-engineering.zip => devtools/shared/apps/tests/unit/data/app-engineering.zip rename : toolkit/devtools/apps/tests/unit/data/app.zip => devtools/shared/apps/tests/unit/data/app.zip rename : toolkit/devtools/apps/tests/unit/head_apps.js => devtools/shared/apps/tests/unit/head_apps.js rename : toolkit/devtools/apps/tests/unit/tail_apps.js => devtools/shared/apps/tests/unit/tail_apps.js rename : toolkit/devtools/apps/tests/unit/test_webappsActor.js => devtools/shared/apps/tests/unit/test_webappsActor.js rename : toolkit/devtools/apps/tests/unit/xpcshell.ini => devtools/shared/apps/tests/unit/xpcshell.ini rename : toolkit/devtools/async-utils.js => devtools/shared/async-utils.js rename : toolkit/devtools/client/connection-manager.js => devtools/shared/client/connection-manager.js rename : toolkit/devtools/client/dbg-client.jsm => devtools/shared/client/dbg-client.jsm rename : toolkit/devtools/client/main.js => devtools/shared/client/main.js rename : toolkit/devtools/client/moz.build => devtools/shared/client/moz.build rename : toolkit/devtools/content-observer.js => devtools/shared/content-observer.js rename : toolkit/devtools/css-color.js => devtools/shared/css-color.js rename : toolkit/devtools/deprecated-sync-thenables.js => devtools/shared/deprecated-sync-thenables.js rename : toolkit/devtools/discovery/discovery.js => devtools/shared/discovery/discovery.js rename : toolkit/devtools/discovery/moz.build => devtools/shared/discovery/moz.build rename : toolkit/devtools/discovery/tests/unit/test_discovery.js => devtools/shared/discovery/tests/unit/test_discovery.js rename : toolkit/devtools/discovery/tests/unit/xpcshell.ini => devtools/shared/discovery/tests/unit/xpcshell.ini rename : toolkit/devtools/event-emitter.js => devtools/shared/event-emitter.js rename : toolkit/devtools/event-parsers.js => devtools/shared/event-parsers.js rename : toolkit/devtools/gcli/Templater.jsm => devtools/shared/gcli/Templater.jsm rename : toolkit/devtools/gcli/commands/addon.js => devtools/shared/gcli/commands/addon.js rename : toolkit/devtools/gcli/commands/appcache.js => devtools/shared/gcli/commands/appcache.js rename : toolkit/devtools/gcli/commands/calllog.js => devtools/shared/gcli/commands/calllog.js rename : toolkit/devtools/gcli/commands/cmd.js => devtools/shared/gcli/commands/cmd.js rename : toolkit/devtools/gcli/commands/cookie.js => devtools/shared/gcli/commands/cookie.js rename : toolkit/devtools/gcli/commands/csscoverage.js => devtools/shared/gcli/commands/csscoverage.js rename : toolkit/devtools/gcli/commands/folder.js => devtools/shared/gcli/commands/folder.js rename : toolkit/devtools/gcli/commands/highlight.js => devtools/shared/gcli/commands/highlight.js rename : toolkit/devtools/gcli/commands/index.js => devtools/shared/gcli/commands/index.js rename : toolkit/devtools/gcli/commands/inject.js => devtools/shared/gcli/commands/inject.js rename : toolkit/devtools/gcli/commands/jsb.js => devtools/shared/gcli/commands/jsb.js rename : toolkit/devtools/gcli/commands/listen.js => devtools/shared/gcli/commands/listen.js rename : toolkit/devtools/gcli/commands/media.js => devtools/shared/gcli/commands/media.js rename : toolkit/devtools/gcli/commands/pagemod.js => devtools/shared/gcli/commands/pagemod.js rename : toolkit/devtools/gcli/commands/paintflashing.js => devtools/shared/gcli/commands/paintflashing.js rename : toolkit/devtools/gcli/commands/restart.js => devtools/shared/gcli/commands/restart.js rename : toolkit/devtools/gcli/commands/rulers.js => devtools/shared/gcli/commands/rulers.js rename : toolkit/devtools/gcli/commands/screenshot.js => devtools/shared/gcli/commands/screenshot.js rename : toolkit/devtools/gcli/commands/security.js => devtools/shared/gcli/commands/security.js rename : toolkit/devtools/gcli/commands/tools.js => devtools/shared/gcli/commands/tools.js rename : toolkit/devtools/gcli/gcli.jsm => devtools/shared/gcli/gcli.jsm rename : toolkit/devtools/gcli/moz.build => devtools/shared/gcli/moz.build rename : toolkit/devtools/gcli/source/LICENSE => devtools/shared/gcli/source/LICENSE rename : toolkit/devtools/gcli/source/docs/design.md => devtools/shared/gcli/source/docs/design.md rename : toolkit/devtools/gcli/source/docs/developing-gcli.md => devtools/shared/gcli/source/docs/developing-gcli.md rename : toolkit/devtools/gcli/source/docs/index.md => devtools/shared/gcli/source/docs/index.md rename : toolkit/devtools/gcli/source/docs/running-tests.md => devtools/shared/gcli/source/docs/running-tests.md rename : toolkit/devtools/gcli/source/docs/writing-commands.md => devtools/shared/gcli/source/docs/writing-commands.md rename : toolkit/devtools/gcli/source/docs/writing-tests.md => devtools/shared/gcli/source/docs/writing-tests.md rename : toolkit/devtools/gcli/source/docs/writing-types.md => devtools/shared/gcli/source/docs/writing-types.md rename : toolkit/devtools/gcli/source/lib/gcli/cli.js => devtools/shared/gcli/source/lib/gcli/cli.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/clear.js => devtools/shared/gcli/source/lib/gcli/commands/clear.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/commands.js => devtools/shared/gcli/source/lib/gcli/commands/commands.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/connect.js => devtools/shared/gcli/source/lib/gcli/commands/connect.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/context.js => devtools/shared/gcli/source/lib/gcli/commands/context.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/exec.js => devtools/shared/gcli/source/lib/gcli/commands/exec.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/global.js => devtools/shared/gcli/source/lib/gcli/commands/global.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/help.js => devtools/shared/gcli/source/lib/gcli/commands/help.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/intro.js => devtools/shared/gcli/source/lib/gcli/commands/intro.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/lang.js => devtools/shared/gcli/source/lib/gcli/commands/lang.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/mocks.js => devtools/shared/gcli/source/lib/gcli/commands/mocks.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/pref.js => devtools/shared/gcli/source/lib/gcli/commands/pref.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/preflist.js => devtools/shared/gcli/source/lib/gcli/commands/preflist.js rename : toolkit/devtools/gcli/source/lib/gcli/commands/test.js => devtools/shared/gcli/source/lib/gcli/commands/test.js rename : toolkit/devtools/gcli/source/lib/gcli/connectors/connectors.js => devtools/shared/gcli/source/lib/gcli/connectors/connectors.js rename : toolkit/devtools/gcli/source/lib/gcli/converters/basic.js => devtools/shared/gcli/source/lib/gcli/converters/basic.js rename : toolkit/devtools/gcli/source/lib/gcli/converters/converters.js => devtools/shared/gcli/source/lib/gcli/converters/converters.js rename : toolkit/devtools/gcli/source/lib/gcli/converters/html.js => devtools/shared/gcli/source/lib/gcli/converters/html.js rename : toolkit/devtools/gcli/source/lib/gcli/converters/terminal.js => devtools/shared/gcli/source/lib/gcli/converters/terminal.js rename : toolkit/devtools/gcli/source/lib/gcli/fields/delegate.js => devtools/shared/gcli/source/lib/gcli/fields/delegate.js rename : toolkit/devtools/gcli/source/lib/gcli/fields/fields.js => devtools/shared/gcli/source/lib/gcli/fields/fields.js rename : toolkit/devtools/gcli/source/lib/gcli/fields/selection.js => devtools/shared/gcli/source/lib/gcli/fields/selection.js rename : toolkit/devtools/gcli/source/lib/gcli/index.js => devtools/shared/gcli/source/lib/gcli/index.js rename : toolkit/devtools/gcli/source/lib/gcli/l10n.js => devtools/shared/gcli/source/lib/gcli/l10n.js rename : toolkit/devtools/gcli/source/lib/gcli/languages/command.html => devtools/shared/gcli/source/lib/gcli/languages/command.html rename : toolkit/devtools/gcli/source/lib/gcli/languages/command.js => devtools/shared/gcli/source/lib/gcli/languages/command.js rename : toolkit/devtools/gcli/source/lib/gcli/languages/javascript.js => devtools/shared/gcli/source/lib/gcli/languages/javascript.js rename : toolkit/devtools/gcli/source/lib/gcli/languages/languages.js => devtools/shared/gcli/source/lib/gcli/languages/languages.js rename : toolkit/devtools/gcli/source/lib/gcli/mozui/completer.js => devtools/shared/gcli/source/lib/gcli/mozui/completer.js rename : toolkit/devtools/gcli/source/lib/gcli/mozui/inputter.js => devtools/shared/gcli/source/lib/gcli/mozui/inputter.js rename : toolkit/devtools/gcli/source/lib/gcli/mozui/tooltip.js => devtools/shared/gcli/source/lib/gcli/mozui/tooltip.js rename : toolkit/devtools/gcli/source/lib/gcli/settings.js => devtools/shared/gcli/source/lib/gcli/settings.js rename : toolkit/devtools/gcli/source/lib/gcli/system.js => devtools/shared/gcli/source/lib/gcli/system.js rename : toolkit/devtools/gcli/source/lib/gcli/types/array.js => devtools/shared/gcli/source/lib/gcli/types/array.js rename : toolkit/devtools/gcli/source/lib/gcli/types/boolean.js => devtools/shared/gcli/source/lib/gcli/types/boolean.js rename : toolkit/devtools/gcli/source/lib/gcli/types/command.js => devtools/shared/gcli/source/lib/gcli/types/command.js rename : toolkit/devtools/gcli/source/lib/gcli/types/date.js => devtools/shared/gcli/source/lib/gcli/types/date.js rename : toolkit/devtools/gcli/source/lib/gcli/types/delegate.js => devtools/shared/gcli/source/lib/gcli/types/delegate.js rename : toolkit/devtools/gcli/source/lib/gcli/types/file.js => devtools/shared/gcli/source/lib/gcli/types/file.js rename : toolkit/devtools/gcli/source/lib/gcli/types/fileparser.js => devtools/shared/gcli/source/lib/gcli/types/fileparser.js rename : toolkit/devtools/gcli/source/lib/gcli/types/javascript.js => devtools/shared/gcli/source/lib/gcli/types/javascript.js rename : toolkit/devtools/gcli/source/lib/gcli/types/node.js => devtools/shared/gcli/source/lib/gcli/types/node.js rename : toolkit/devtools/gcli/source/lib/gcli/types/number.js => devtools/shared/gcli/source/lib/gcli/types/number.js rename : toolkit/devtools/gcli/source/lib/gcli/types/resource.js => devtools/shared/gcli/source/lib/gcli/types/resource.js rename : toolkit/devtools/gcli/source/lib/gcli/types/selection.js => devtools/shared/gcli/source/lib/gcli/types/selection.js rename : toolkit/devtools/gcli/source/lib/gcli/types/setting.js => devtools/shared/gcli/source/lib/gcli/types/setting.js rename : toolkit/devtools/gcli/source/lib/gcli/types/string.js => devtools/shared/gcli/source/lib/gcli/types/string.js rename : toolkit/devtools/gcli/source/lib/gcli/types/types.js => devtools/shared/gcli/source/lib/gcli/types/types.js rename : toolkit/devtools/gcli/source/lib/gcli/types/union.js => devtools/shared/gcli/source/lib/gcli/types/union.js rename : toolkit/devtools/gcli/source/lib/gcli/types/url.js => devtools/shared/gcli/source/lib/gcli/types/url.js rename : toolkit/devtools/gcli/source/lib/gcli/ui/focus.js => devtools/shared/gcli/source/lib/gcli/ui/focus.js rename : toolkit/devtools/gcli/source/lib/gcli/ui/history.js => devtools/shared/gcli/source/lib/gcli/ui/history.js rename : toolkit/devtools/gcli/source/lib/gcli/ui/intro.js => devtools/shared/gcli/source/lib/gcli/ui/intro.js rename : toolkit/devtools/gcli/source/lib/gcli/ui/menu.css => devtools/shared/gcli/source/lib/gcli/ui/menu.css rename : toolkit/devtools/gcli/source/lib/gcli/ui/menu.html => devtools/shared/gcli/source/lib/gcli/ui/menu.html rename : toolkit/devtools/gcli/source/lib/gcli/ui/menu.js => devtools/shared/gcli/source/lib/gcli/ui/menu.js rename : toolkit/devtools/gcli/source/lib/gcli/ui/view.js => devtools/shared/gcli/source/lib/gcli/ui/view.js rename : toolkit/devtools/gcli/source/lib/gcli/util/domtemplate.js => devtools/shared/gcli/source/lib/gcli/util/domtemplate.js rename : toolkit/devtools/gcli/source/lib/gcli/util/fileparser.js => devtools/shared/gcli/source/lib/gcli/util/fileparser.js rename : toolkit/devtools/gcli/source/lib/gcli/util/filesystem.js => devtools/shared/gcli/source/lib/gcli/util/filesystem.js rename : toolkit/devtools/gcli/source/lib/gcli/util/host.js => devtools/shared/gcli/source/lib/gcli/util/host.js rename : toolkit/devtools/gcli/source/lib/gcli/util/l10n.js => devtools/shared/gcli/source/lib/gcli/util/l10n.js rename : toolkit/devtools/gcli/source/lib/gcli/util/legacy.js => devtools/shared/gcli/source/lib/gcli/util/legacy.js rename : toolkit/devtools/gcli/source/lib/gcli/util/prism.js => devtools/shared/gcli/source/lib/gcli/util/prism.js rename : toolkit/devtools/gcli/source/lib/gcli/util/spell.js => devtools/shared/gcli/source/lib/gcli/util/spell.js rename : toolkit/devtools/gcli/source/lib/gcli/util/util.js => devtools/shared/gcli/source/lib/gcli/util/util.js rename : toolkit/devtools/heapsnapshot/AutoMemMap.cpp => devtools/shared/heapsnapshot/AutoMemMap.cpp rename : toolkit/devtools/heapsnapshot/AutoMemMap.h => devtools/shared/heapsnapshot/AutoMemMap.h rename : toolkit/devtools/heapsnapshot/CoreDump.pb.cc => devtools/shared/heapsnapshot/CoreDump.pb.cc rename : toolkit/devtools/heapsnapshot/CoreDump.pb.h => devtools/shared/heapsnapshot/CoreDump.pb.h rename : toolkit/devtools/heapsnapshot/CoreDump.proto => devtools/shared/heapsnapshot/CoreDump.proto rename : toolkit/devtools/heapsnapshot/DeserializedNode.cpp => devtools/shared/heapsnapshot/DeserializedNode.cpp rename : toolkit/devtools/heapsnapshot/DeserializedNode.h => devtools/shared/heapsnapshot/DeserializedNode.h rename : toolkit/devtools/heapsnapshot/HeapAnalysesClient.js => devtools/shared/heapsnapshot/HeapAnalysesClient.js rename : toolkit/devtools/heapsnapshot/HeapAnalysesWorker.js => devtools/shared/heapsnapshot/HeapAnalysesWorker.js rename : toolkit/devtools/heapsnapshot/HeapSnapshot.cpp => devtools/shared/heapsnapshot/HeapSnapshot.cpp rename : toolkit/devtools/heapsnapshot/HeapSnapshot.h => devtools/shared/heapsnapshot/HeapSnapshot.h rename : toolkit/devtools/heapsnapshot/HeapSnapshotFileUtils.js => devtools/shared/heapsnapshot/HeapSnapshotFileUtils.js rename : toolkit/devtools/heapsnapshot/ZeroCopyNSIOutputStream.cpp => devtools/shared/heapsnapshot/ZeroCopyNSIOutputStream.cpp rename : toolkit/devtools/heapsnapshot/ZeroCopyNSIOutputStream.h => devtools/shared/heapsnapshot/ZeroCopyNSIOutputStream.h rename : toolkit/devtools/heapsnapshot/census-tree-node.js => devtools/shared/heapsnapshot/census-tree-node.js rename : toolkit/devtools/heapsnapshot/generate-core-dump-sources.sh => devtools/shared/heapsnapshot/generate-core-dump-sources.sh rename : toolkit/devtools/heapsnapshot/moz.build => devtools/shared/heapsnapshot/moz.build rename : toolkit/devtools/heapsnapshot/tests/gtest/DeserializedNodeUbiNodes.cpp => devtools/shared/heapsnapshot/tests/gtest/DeserializedNodeUbiNodes.cpp rename : toolkit/devtools/heapsnapshot/tests/gtest/DeserializedStackFrameUbiStackFrames.cpp => devtools/shared/heapsnapshot/tests/gtest/DeserializedStackFrameUbiStackFrames.cpp rename : toolkit/devtools/heapsnapshot/tests/gtest/DevTools.h => devtools/shared/heapsnapshot/tests/gtest/DevTools.h rename : toolkit/devtools/heapsnapshot/tests/gtest/DoesCrossZoneBoundaries.cpp => devtools/shared/heapsnapshot/tests/gtest/DoesCrossZoneBoundaries.cpp rename : toolkit/devtools/heapsnapshot/tests/gtest/DoesntCrossZoneBoundaries.cpp => devtools/shared/heapsnapshot/tests/gtest/DoesntCrossZoneBoundaries.cpp rename : toolkit/devtools/heapsnapshot/tests/gtest/SerializesEdgeNames.cpp => devtools/shared/heapsnapshot/tests/gtest/SerializesEdgeNames.cpp rename : toolkit/devtools/heapsnapshot/tests/gtest/SerializesEverythingInHeapGraphOnce.cpp => devtools/shared/heapsnapshot/tests/gtest/SerializesEverythingInHeapGraphOnce.cpp rename : toolkit/devtools/heapsnapshot/tests/gtest/SerializesTypeNames.cpp => devtools/shared/heapsnapshot/tests/gtest/SerializesTypeNames.cpp rename : toolkit/devtools/heapsnapshot/tests/gtest/UniqueStringHashPolicy.cpp => devtools/shared/heapsnapshot/tests/gtest/UniqueStringHashPolicy.cpp rename : toolkit/devtools/heapsnapshot/tests/gtest/moz.build => devtools/shared/heapsnapshot/tests/gtest/moz.build rename : toolkit/devtools/heapsnapshot/tests/mochitest/chrome.ini => devtools/shared/heapsnapshot/tests/mochitest/chrome.ini rename : toolkit/devtools/heapsnapshot/tests/mochitest/test_SaveHeapSnapshot.html => devtools/shared/heapsnapshot/tests/mochitest/test_SaveHeapSnapshot.html rename : toolkit/devtools/heapsnapshot/tests/unit/Census.jsm => devtools/shared/heapsnapshot/tests/unit/Census.jsm rename : toolkit/devtools/heapsnapshot/tests/unit/Match.jsm => devtools/shared/heapsnapshot/tests/unit/Match.jsm rename : toolkit/devtools/heapsnapshot/tests/unit/head_heapsnapshot.js => devtools/shared/heapsnapshot/tests/unit/head_heapsnapshot.js rename : toolkit/devtools/heapsnapshot/tests/unit/heap-snapshot-worker.js => devtools/shared/heapsnapshot/tests/unit/heap-snapshot-worker.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapAnalyses_readHeapSnapshot_01.js => devtools/shared/heapsnapshot/tests/unit/test_HeapAnalyses_readHeapSnapshot_01.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapAnalyses_takeCensus_01.js => devtools/shared/heapsnapshot/tests/unit/test_HeapAnalyses_takeCensus_01.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapAnalyses_takeCensus_02.js => devtools/shared/heapsnapshot/tests/unit/test_HeapAnalyses_takeCensus_02.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapAnalyses_takeCensus_03.js => devtools/shared/heapsnapshot/tests/unit/test_HeapAnalyses_takeCensus_03.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_01.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_01.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_02.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_02.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_03.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_03.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_04.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_04.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_05.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_05.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_06.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_06.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_07.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_07.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_08.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_08.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_09.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_09.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_10.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_10.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_11.js => devtools/shared/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensus_11.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_ReadHeapSnapshot.js => devtools/shared/heapsnapshot/tests/unit/test_ReadHeapSnapshot.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_ReadHeapSnapshot_with_allocations.js => devtools/shared/heapsnapshot/tests/unit/test_ReadHeapSnapshot_with_allocations.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_ReadHeapSnapshot_worker.js => devtools/shared/heapsnapshot/tests/unit/test_ReadHeapSnapshot_worker.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_SaveHeapSnapshot.js => devtools/shared/heapsnapshot/tests/unit/test_SaveHeapSnapshot.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_census-tree-node-01.js => devtools/shared/heapsnapshot/tests/unit/test_census-tree-node-01.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_census-tree-node-02.js => devtools/shared/heapsnapshot/tests/unit/test_census-tree-node-02.js rename : toolkit/devtools/heapsnapshot/tests/unit/test_census-tree-node-03.js => devtools/shared/heapsnapshot/tests/unit/test_census-tree-node-03.js rename : toolkit/devtools/heapsnapshot/tests/unit/xpcshell.ini => devtools/shared/heapsnapshot/tests/unit/xpcshell.ini rename : toolkit/devtools/jsbeautify/UPGRADING.md => devtools/shared/jsbeautify/UPGRADING.md rename : toolkit/devtools/jsbeautify/beautify.js => devtools/shared/jsbeautify/beautify.js rename : toolkit/devtools/jsbeautify/lib/sanitytest.js => devtools/shared/jsbeautify/lib/sanitytest.js rename : toolkit/devtools/jsbeautify/lib/urlencode_unpacker.js => devtools/shared/jsbeautify/lib/urlencode_unpacker.js rename : toolkit/devtools/jsbeautify/moz.build => devtools/shared/jsbeautify/moz.build rename : toolkit/devtools/jsbeautify/src/beautify-css.js => devtools/shared/jsbeautify/src/beautify-css.js rename : toolkit/devtools/jsbeautify/src/beautify-html.js => devtools/shared/jsbeautify/src/beautify-html.js rename : toolkit/devtools/jsbeautify/src/beautify-js.js => devtools/shared/jsbeautify/src/beautify-js.js rename : toolkit/devtools/jsbeautify/src/beautify-tests.js => devtools/shared/jsbeautify/src/beautify-tests.js rename : toolkit/devtools/jsbeautify/tests/unit/head_jsbeautify.js => devtools/shared/jsbeautify/tests/unit/head_jsbeautify.js rename : toolkit/devtools/jsbeautify/tests/unit/test.js => devtools/shared/jsbeautify/tests/unit/test.js rename : toolkit/devtools/jsbeautify/tests/unit/xpcshell.ini => devtools/shared/jsbeautify/tests/unit/xpcshell.ini rename : toolkit/devtools/layout/utils.js => devtools/shared/layout/utils.js rename : toolkit/devtools/moz.build => devtools/shared/moz.build rename : toolkit/devtools/output-parser.js => devtools/shared/output-parser.js rename : toolkit/devtools/path.js => devtools/shared/path.js rename : toolkit/devtools/performance/io.js => devtools/shared/performance/io.js rename : toolkit/devtools/performance/legacy/actors.js => devtools/shared/performance/legacy/actors.js rename : toolkit/devtools/performance/legacy/compatibility.js => devtools/shared/performance/legacy/compatibility.js rename : toolkit/devtools/performance/legacy/front.js => devtools/shared/performance/legacy/front.js rename : toolkit/devtools/performance/legacy/recording.js => devtools/shared/performance/legacy/recording.js rename : toolkit/devtools/performance/moz.build => devtools/shared/performance/moz.build rename : toolkit/devtools/performance/process-communication.js => devtools/shared/performance/process-communication.js rename : toolkit/devtools/performance/recorder.js => devtools/shared/performance/recorder.js rename : toolkit/devtools/performance/recording-common.js => devtools/shared/performance/recording-common.js rename : toolkit/devtools/performance/test/head.js => devtools/shared/performance/test/head.js rename : toolkit/devtools/performance/test/test_perf-utils-allocations-to-samples.js => devtools/shared/performance/test/test_perf-utils-allocations-to-samples.js rename : toolkit/devtools/performance/test/xpcshell.ini => devtools/shared/performance/test/xpcshell.ini rename : toolkit/devtools/performance/utils.js => devtools/shared/performance/utils.js rename : toolkit/devtools/pretty-fast/UPGRADING.md => devtools/shared/pretty-fast/UPGRADING.md rename : toolkit/devtools/pretty-fast/moz.build => devtools/shared/pretty-fast/moz.build rename : toolkit/devtools/pretty-fast/pretty-fast.js => devtools/shared/pretty-fast/pretty-fast.js rename : toolkit/devtools/pretty-fast/tests/unit/head_pretty-fast.js => devtools/shared/pretty-fast/tests/unit/head_pretty-fast.js rename : toolkit/devtools/pretty-fast/tests/unit/test.js => devtools/shared/pretty-fast/tests/unit/test.js rename : toolkit/devtools/pretty-fast/tests/unit/xpcshell.ini => devtools/shared/pretty-fast/tests/unit/xpcshell.ini rename : toolkit/devtools/qrcode/decoder/LICENSE => devtools/shared/qrcode/decoder/LICENSE rename : toolkit/devtools/qrcode/decoder/index.js => devtools/shared/qrcode/decoder/index.js rename : toolkit/devtools/qrcode/decoder/moz.build => devtools/shared/qrcode/decoder/moz.build rename : toolkit/devtools/qrcode/encoder/LICENSE => devtools/shared/qrcode/encoder/LICENSE rename : toolkit/devtools/qrcode/encoder/index.js => devtools/shared/qrcode/encoder/index.js rename : toolkit/devtools/qrcode/encoder/moz.build => devtools/shared/qrcode/encoder/moz.build rename : toolkit/devtools/qrcode/index.js => devtools/shared/qrcode/index.js rename : toolkit/devtools/qrcode/moz.build => devtools/shared/qrcode/moz.build rename : toolkit/devtools/qrcode/tests/mochitest/chrome.ini => devtools/shared/qrcode/tests/mochitest/chrome.ini rename : toolkit/devtools/qrcode/tests/mochitest/test_decode.html => devtools/shared/qrcode/tests/mochitest/test_decode.html rename : toolkit/devtools/qrcode/tests/unit/test_encode.js => devtools/shared/qrcode/tests/unit/test_encode.js rename : toolkit/devtools/qrcode/tests/unit/xpcshell.ini => devtools/shared/qrcode/tests/unit/xpcshell.ini rename : toolkit/devtools/security/LocalCertService.cpp => devtools/shared/security/LocalCertService.cpp rename : toolkit/devtools/security/LocalCertService.h => devtools/shared/security/LocalCertService.h rename : toolkit/devtools/security/auth.js => devtools/shared/security/auth.js rename : toolkit/devtools/security/cert.js => devtools/shared/security/cert.js rename : toolkit/devtools/security/docs/wifi.md => devtools/shared/security/docs/wifi.md rename : toolkit/devtools/security/moz.build => devtools/shared/security/moz.build rename : toolkit/devtools/security/nsILocalCertService.idl => devtools/shared/security/nsILocalCertService.idl rename : toolkit/devtools/security/prompt.js => devtools/shared/security/prompt.js rename : toolkit/devtools/security/socket.js => devtools/shared/security/socket.js rename : toolkit/devtools/security/tests/unit/head_dbg.js => devtools/shared/security/tests/unit/head_dbg.js rename : toolkit/devtools/security/tests/unit/test_cert.js => devtools/shared/security/tests/unit/test_cert.js rename : toolkit/devtools/security/tests/unit/test_encryption.js => devtools/shared/security/tests/unit/test_encryption.js rename : toolkit/devtools/security/tests/unit/test_oob_cert_auth.js => devtools/shared/security/tests/unit/test_oob_cert_auth.js rename : toolkit/devtools/security/tests/unit/testactors.js => devtools/shared/security/tests/unit/testactors.js rename : toolkit/devtools/security/tests/unit/xpcshell.ini => devtools/shared/security/tests/unit/xpcshell.ini rename : toolkit/devtools/shared/async-storage.js => devtools/shared/shared/async-storage.js rename : toolkit/devtools/shared/framerate.js => devtools/shared/shared/framerate.js rename : toolkit/devtools/shared/indentation.js => devtools/shared/shared/indentation.js rename : toolkit/devtools/shared/memory.js => devtools/shared/shared/memory.js rename : toolkit/devtools/shared/moz.build => devtools/shared/shared/moz.build rename : toolkit/devtools/shared/profiler.js => devtools/shared/shared/profiler.js rename : toolkit/devtools/shared/system.js => devtools/shared/shared/system.js rename : toolkit/devtools/shared/tests/browser/browser.ini => devtools/shared/shared/tests/browser/browser.ini rename : toolkit/devtools/shared/tests/browser/browser_async_storage.js => devtools/shared/shared/tests/browser/browser_async_storage.js rename : toolkit/devtools/shared/tests/browser/browser_worker-01.js => devtools/shared/shared/tests/browser/browser_worker-01.js rename : toolkit/devtools/shared/tests/browser/browser_worker-02.js => devtools/shared/shared/tests/browser/browser_worker-02.js rename : toolkit/devtools/shared/tests/browser/browser_worker-03.js => devtools/shared/shared/tests/browser/browser_worker-03.js rename : toolkit/devtools/shared/tests/unit/.eslintrc => devtools/shared/shared/tests/unit/.eslintrc rename : toolkit/devtools/shared/tests/unit/test_indentation.js => devtools/shared/shared/tests/unit/test_indentation.js rename : toolkit/devtools/shared/tests/unit/xpcshell.ini => devtools/shared/shared/tests/unit/xpcshell.ini rename : toolkit/devtools/shared/timeline.js => devtools/shared/shared/timeline.js rename : toolkit/devtools/shared/worker-helper.js => devtools/shared/shared/worker-helper.js rename : toolkit/devtools/shared/worker.js => devtools/shared/shared/worker.js rename : toolkit/devtools/sourcemap/UPGRADING.md => devtools/shared/sourcemap/UPGRADING.md rename : toolkit/devtools/sourcemap/moz.build => devtools/shared/sourcemap/moz.build rename : toolkit/devtools/sourcemap/source-map.js => devtools/shared/sourcemap/source-map.js rename : toolkit/devtools/sourcemap/tests/unit/head_sourcemap.js => devtools/shared/sourcemap/tests/unit/head_sourcemap.js rename : toolkit/devtools/sourcemap/tests/unit/test_api.js => devtools/shared/sourcemap/tests/unit/test_api.js rename : toolkit/devtools/sourcemap/tests/unit/test_array_set.js => devtools/shared/sourcemap/tests/unit/test_array_set.js rename : toolkit/devtools/sourcemap/tests/unit/test_base64.js => devtools/shared/sourcemap/tests/unit/test_base64.js rename : toolkit/devtools/sourcemap/tests/unit/test_base64_vlq.js => devtools/shared/sourcemap/tests/unit/test_base64_vlq.js rename : toolkit/devtools/sourcemap/tests/unit/test_binary_search.js => devtools/shared/sourcemap/tests/unit/test_binary_search.js rename : toolkit/devtools/sourcemap/tests/unit/test_dog_fooding.js => devtools/shared/sourcemap/tests/unit/test_dog_fooding.js rename : toolkit/devtools/sourcemap/tests/unit/test_quick_sort.js => devtools/shared/sourcemap/tests/unit/test_quick_sort.js rename : toolkit/devtools/sourcemap/tests/unit/test_source_map_consumer.js => devtools/shared/sourcemap/tests/unit/test_source_map_consumer.js rename : toolkit/devtools/sourcemap/tests/unit/test_source_map_generator.js => devtools/shared/sourcemap/tests/unit/test_source_map_generator.js rename : toolkit/devtools/sourcemap/tests/unit/test_source_node.js => devtools/shared/sourcemap/tests/unit/test_source_node.js rename : toolkit/devtools/sourcemap/tests/unit/test_util.js => devtools/shared/sourcemap/tests/unit/test_util.js rename : toolkit/devtools/sourcemap/tests/unit/xpcshell.ini => devtools/shared/sourcemap/tests/unit/xpcshell.ini rename : toolkit/devtools/styleinspector/css-logic.js => devtools/shared/styleinspector/css-logic.js rename : toolkit/devtools/styleinspector/moz.build => devtools/shared/styleinspector/moz.build rename : toolkit/devtools/tern/README => devtools/shared/tern/README rename : toolkit/devtools/tern/browser.js => devtools/shared/tern/browser.js rename : toolkit/devtools/tern/comment.js => devtools/shared/tern/comment.js rename : toolkit/devtools/tern/condense.js => devtools/shared/tern/condense.js rename : toolkit/devtools/tern/def.js => devtools/shared/tern/def.js rename : toolkit/devtools/tern/ecma5.js => devtools/shared/tern/ecma5.js rename : toolkit/devtools/tern/infer.js => devtools/shared/tern/infer.js rename : toolkit/devtools/tern/moz.build => devtools/shared/tern/moz.build rename : toolkit/devtools/tern/signal.js => devtools/shared/tern/signal.js rename : toolkit/devtools/tern/tern.js => devtools/shared/tern/tern.js rename : toolkit/devtools/tern/tests/unit/head_tern.js => devtools/shared/tern/tests/unit/head_tern.js rename : toolkit/devtools/tern/tests/unit/test_autocompletion.js => devtools/shared/tern/tests/unit/test_autocompletion.js rename : toolkit/devtools/tern/tests/unit/test_import_tern.js => devtools/shared/tern/tests/unit/test_import_tern.js rename : toolkit/devtools/tern/tests/unit/xpcshell.ini => devtools/shared/tern/tests/unit/xpcshell.ini rename : toolkit/devtools/tests/mochitest/chrome.ini => devtools/shared/tests/mochitest/chrome.ini rename : toolkit/devtools/tests/mochitest/test_devtools_extensions.html => devtools/shared/tests/mochitest/test_devtools_extensions.html rename : toolkit/devtools/tests/mochitest/test_eventemitter_basic.html => devtools/shared/tests/mochitest/test_eventemitter_basic.html rename : toolkit/devtools/tests/mochitest/test_loader_paths.html => devtools/shared/tests/mochitest/test_loader_paths.html rename : toolkit/devtools/tests/unit/.eslintrc => devtools/shared/tests/unit/.eslintrc rename : toolkit/devtools/tests/unit/exposeLoader.js => devtools/shared/tests/unit/exposeLoader.js rename : toolkit/devtools/tests/unit/head_devtools.js => devtools/shared/tests/unit/head_devtools.js rename : toolkit/devtools/tests/unit/test_async-utils.js => devtools/shared/tests/unit/test_async-utils.js rename : toolkit/devtools/tests/unit/test_consoleID.js => devtools/shared/tests/unit/test_consoleID.js rename : toolkit/devtools/tests/unit/test_cssColor.js => devtools/shared/tests/unit/test_cssColor.js rename : toolkit/devtools/tests/unit/test_defineLazyPrototypeGetter.js => devtools/shared/tests/unit/test_defineLazyPrototypeGetter.js rename : toolkit/devtools/tests/unit/test_fetch-chrome.js => devtools/shared/tests/unit/test_fetch-chrome.js rename : toolkit/devtools/tests/unit/test_fetch-file.js => devtools/shared/tests/unit/test_fetch-file.js rename : toolkit/devtools/tests/unit/test_fetch-http.js => devtools/shared/tests/unit/test_fetch-http.js rename : toolkit/devtools/tests/unit/test_fetch-resource.js => devtools/shared/tests/unit/test_fetch-resource.js rename : toolkit/devtools/tests/unit/test_independent_loaders.js => devtools/shared/tests/unit/test_independent_loaders.js rename : toolkit/devtools/tests/unit/test_invisible_loader.js => devtools/shared/tests/unit/test_invisible_loader.js rename : toolkit/devtools/tests/unit/test_prettifyCSS.js => devtools/shared/tests/unit/test_prettifyCSS.js rename : toolkit/devtools/tests/unit/test_require.js => devtools/shared/tests/unit/test_require.js rename : toolkit/devtools/tests/unit/test_require_lazy.js => devtools/shared/tests/unit/test_require_lazy.js rename : toolkit/devtools/tests/unit/test_safeErrorString.js => devtools/shared/tests/unit/test_safeErrorString.js rename : toolkit/devtools/tests/unit/test_stack.js => devtools/shared/tests/unit/test_stack.js rename : toolkit/devtools/tests/unit/xpcshell.ini => devtools/shared/tests/unit/xpcshell.ini rename : toolkit/devtools/touch/moz.build => devtools/shared/touch/moz.build rename : toolkit/devtools/touch/simulator-content.js => devtools/shared/touch/simulator-content.js rename : toolkit/devtools/touch/simulator.js => devtools/shared/touch/simulator.js rename : toolkit/devtools/transport/moz.build => devtools/shared/transport/moz.build rename : toolkit/devtools/transport/packets.js => devtools/shared/transport/packets.js rename : toolkit/devtools/transport/stream-utils.js => devtools/shared/transport/stream-utils.js rename : toolkit/devtools/transport/tests/unit/head_dbg.js => devtools/shared/transport/tests/unit/head_dbg.js rename : toolkit/devtools/transport/tests/unit/test_bulk_error.js => devtools/shared/transport/tests/unit/test_bulk_error.js rename : toolkit/devtools/transport/tests/unit/test_client_server_bulk.js => devtools/shared/transport/tests/unit/test_client_server_bulk.js rename : toolkit/devtools/transport/tests/unit/test_dbgsocket.js => devtools/shared/transport/tests/unit/test_dbgsocket.js rename : toolkit/devtools/transport/tests/unit/test_dbgsocket_connection_drop.js => devtools/shared/transport/tests/unit/test_dbgsocket_connection_drop.js rename : toolkit/devtools/transport/tests/unit/test_delimited_read.js => devtools/shared/transport/tests/unit/test_delimited_read.js rename : toolkit/devtools/transport/tests/unit/test_no_bulk.js => devtools/shared/transport/tests/unit/test_no_bulk.js rename : toolkit/devtools/transport/tests/unit/test_packet.js => devtools/shared/transport/tests/unit/test_packet.js rename : toolkit/devtools/transport/tests/unit/test_queue.js => devtools/shared/transport/tests/unit/test_queue.js rename : toolkit/devtools/transport/tests/unit/test_transport_bulk.js => devtools/shared/transport/tests/unit/test_transport_bulk.js rename : toolkit/devtools/transport/tests/unit/testactors-no-bulk.js => devtools/shared/transport/tests/unit/testactors-no-bulk.js rename : toolkit/devtools/transport/tests/unit/testactors.js => devtools/shared/transport/tests/unit/testactors.js rename : toolkit/devtools/transport/tests/unit/xpcshell.ini => devtools/shared/transport/tests/unit/xpcshell.ini rename : toolkit/devtools/transport/transport.js => devtools/shared/transport/transport.js rename : toolkit/devtools/webconsole/client.js => devtools/shared/webconsole/client.js rename : toolkit/devtools/webconsole/moz.build => devtools/shared/webconsole/moz.build rename : toolkit/devtools/webconsole/network-helper.js => devtools/shared/webconsole/network-helper.js rename : toolkit/devtools/webconsole/network-monitor.js => devtools/shared/webconsole/network-monitor.js rename : toolkit/devtools/webconsole/server-logger-monitor.js => devtools/shared/webconsole/server-logger-monitor.js rename : toolkit/devtools/webconsole/server-logger.js => devtools/shared/webconsole/server-logger.js rename : toolkit/devtools/webconsole/test/chrome.ini => devtools/shared/webconsole/test/chrome.ini rename : toolkit/devtools/webconsole/test/common.js => devtools/shared/webconsole/test/common.js rename : toolkit/devtools/webconsole/test/data.json => devtools/shared/webconsole/test/data.json rename : toolkit/devtools/webconsole/test/data.json^headers^ => devtools/shared/webconsole/test/data.json^headers^ rename : toolkit/devtools/webconsole/test/network_requests_iframe.html => devtools/shared/webconsole/test/network_requests_iframe.html rename : toolkit/devtools/webconsole/test/sandboxed_iframe.html => devtools/shared/webconsole/test/sandboxed_iframe.html rename : toolkit/devtools/webconsole/test/test_basics.html => devtools/shared/webconsole/test/test_basics.html rename : toolkit/devtools/webconsole/test/test_bug819670_getter_throws.html => devtools/shared/webconsole/test/test_bug819670_getter_throws.html rename : toolkit/devtools/webconsole/test/test_cached_messages.html => devtools/shared/webconsole/test/test_cached_messages.html rename : toolkit/devtools/webconsole/test/test_commands_other.html => devtools/shared/webconsole/test/test_commands_other.html rename : toolkit/devtools/webconsole/test/test_commands_registration.html => devtools/shared/webconsole/test/test_commands_registration.html rename : toolkit/devtools/webconsole/test/test_console_styling.html => devtools/shared/webconsole/test/test_console_styling.html rename : toolkit/devtools/webconsole/test/test_consoleapi.html => devtools/shared/webconsole/test/test_consoleapi.html rename : toolkit/devtools/webconsole/test/test_consoleapi_innerID.html => devtools/shared/webconsole/test/test_consoleapi_innerID.html rename : toolkit/devtools/webconsole/test/test_file_uri.html => devtools/shared/webconsole/test/test_file_uri.html rename : toolkit/devtools/webconsole/test/test_jsterm.html => devtools/shared/webconsole/test/test_jsterm.html rename : toolkit/devtools/webconsole/test/test_jsterm_cd_iframe.html => devtools/shared/webconsole/test/test_jsterm_cd_iframe.html rename : toolkit/devtools/webconsole/test/test_jsterm_last_result.html => devtools/shared/webconsole/test/test_jsterm_last_result.html rename : toolkit/devtools/webconsole/test/test_jsterm_queryselector.html => devtools/shared/webconsole/test/test_jsterm_queryselector.html rename : toolkit/devtools/webconsole/test/test_network_get.html => devtools/shared/webconsole/test/test_network_get.html rename : toolkit/devtools/webconsole/test/test_network_longstring.html => devtools/shared/webconsole/test/test_network_longstring.html rename : toolkit/devtools/webconsole/test/test_network_post.html => devtools/shared/webconsole/test/test_network_post.html rename : toolkit/devtools/webconsole/test/test_network_security-hpkp.html => devtools/shared/webconsole/test/test_network_security-hpkp.html rename : toolkit/devtools/webconsole/test/test_network_security-hsts.html => devtools/shared/webconsole/test/test_network_security-hsts.html rename : toolkit/devtools/webconsole/test/test_nsiconsolemessage.html => devtools/shared/webconsole/test/test_nsiconsolemessage.html rename : toolkit/devtools/webconsole/test/test_object_actor.html => devtools/shared/webconsole/test/test_object_actor.html rename : toolkit/devtools/webconsole/test/test_object_actor_native_getters.html => devtools/shared/webconsole/test/test_object_actor_native_getters.html rename : toolkit/devtools/webconsole/test/test_object_actor_native_getters_lenient_this.html => devtools/shared/webconsole/test/test_object_actor_native_getters_lenient_this.html rename : toolkit/devtools/webconsole/test/test_page_errors.html => devtools/shared/webconsole/test/test_page_errors.html rename : toolkit/devtools/webconsole/test/test_reflow.html => devtools/shared/webconsole/test/test_reflow.html rename : toolkit/devtools/webconsole/test/test_throw.html => devtools/shared/webconsole/test/test_throw.html rename : toolkit/devtools/webconsole/test/unit/test_js_property_provider.js => devtools/shared/webconsole/test/unit/test_js_property_provider.js rename : toolkit/devtools/webconsole/test/unit/test_network_helper.js => devtools/shared/webconsole/test/unit/test_network_helper.js rename : toolkit/devtools/webconsole/test/unit/test_security-info-certificate.js => devtools/shared/webconsole/test/unit/test_security-info-certificate.js rename : toolkit/devtools/webconsole/test/unit/test_security-info-parser.js => devtools/shared/webconsole/test/unit/test_security-info-parser.js rename : toolkit/devtools/webconsole/test/unit/test_security-info-protocol-version.js => devtools/shared/webconsole/test/unit/test_security-info-protocol-version.js rename : toolkit/devtools/webconsole/test/unit/test_security-info-state.js => devtools/shared/webconsole/test/unit/test_security-info-state.js rename : toolkit/devtools/webconsole/test/unit/test_security-info-static-hpkp.js => devtools/shared/webconsole/test/unit/test_security-info-static-hpkp.js rename : toolkit/devtools/webconsole/test/unit/test_security-info-weakness-reasons.js => devtools/shared/webconsole/test/unit/test_security-info-weakness-reasons.js rename : toolkit/devtools/webconsole/test/unit/xpcshell.ini => devtools/shared/webconsole/test/unit/xpcshell.ini rename : toolkit/devtools/webconsole/utils.js => devtools/shared/webconsole/utils.js rename : toolkit/devtools/worker-loader.js => devtools/shared/worker-loader.js extra : commitid : 32KtLPk4LG6 extra : rebase_source : 4627a07ebc461c0a795f9a84ebb45af4f5c18aba
2985 lines
No EOL
258 KiB
JavaScript
2985 lines
No EOL
258 KiB
JavaScript
function run_test() {
|
|
for (var k in SOURCE_MAP_TEST_MODULE) {
|
|
if (/^test/.test(k)) {
|
|
SOURCE_MAP_TEST_MODULE[k](assert);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
var SOURCE_MAP_TEST_MODULE =
|
|
/******/ (function(modules) { // webpackBootstrap
|
|
/******/ // The module cache
|
|
/******/ var installedModules = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/
|
|
/******/ // Check if module is in cache
|
|
/******/ if(installedModules[moduleId])
|
|
/******/ return installedModules[moduleId].exports;
|
|
/******/
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = installedModules[moduleId] = {
|
|
/******/ exports: {},
|
|
/******/ id: moduleId,
|
|
/******/ loaded: false
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.loaded = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = modules;
|
|
/******/
|
|
/******/ // expose the module cache
|
|
/******/ __webpack_require__.c = installedModules;
|
|
/******/
|
|
/******/ // __webpack_public_path__
|
|
/******/ __webpack_require__.p = "";
|
|
/******/
|
|
/******/ // Load entry module and return exports
|
|
/******/ return __webpack_require__(0);
|
|
/******/ })
|
|
/************************************************************************/
|
|
/******/ ([
|
|
/* 0 */
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
var util = __webpack_require__(1);
|
|
var SourceMapConsumer = __webpack_require__(3).SourceMapConsumer;
|
|
var SourceMapGenerator = __webpack_require__(9).SourceMapGenerator;
|
|
|
|
exports['test eating our own dog food'] = function (assert) {
|
|
var smg = new SourceMapGenerator({
|
|
file: 'testing.js',
|
|
sourceRoot: '/wu/tang'
|
|
});
|
|
|
|
smg.addMapping({
|
|
source: 'gza.coffee',
|
|
original: { line: 1, column: 0 },
|
|
generated: { line: 2, column: 2 }
|
|
});
|
|
|
|
smg.addMapping({
|
|
source: 'gza.coffee',
|
|
original: { line: 2, column: 0 },
|
|
generated: { line: 3, column: 2 }
|
|
});
|
|
|
|
smg.addMapping({
|
|
source: 'gza.coffee',
|
|
original: { line: 3, column: 0 },
|
|
generated: { line: 4, column: 2 }
|
|
});
|
|
|
|
smg.addMapping({
|
|
source: 'gza.coffee',
|
|
original: { line: 4, column: 0 },
|
|
generated: { line: 5, column: 2 }
|
|
});
|
|
|
|
smg.addMapping({
|
|
source: 'gza.coffee',
|
|
original: { line: 5, column: 10 },
|
|
generated: { line: 6, column: 12 }
|
|
});
|
|
|
|
var smc = new SourceMapConsumer(smg.toString());
|
|
|
|
// Exact
|
|
util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 0, null, null, smc, assert);
|
|
util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 0, null, null, smc, assert);
|
|
util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 0, null, null, smc, assert);
|
|
util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 0, null, null, smc, assert);
|
|
util.assertMapping(6, 12, '/wu/tang/gza.coffee', 5, 10, null, null, smc, assert);
|
|
|
|
// Fuzzy
|
|
|
|
// Generated to original with default (glb) bias.
|
|
util.assertMapping(2, 0, null, null, null, null, null, smc, assert, true);
|
|
util.assertMapping(2, 9, '/wu/tang/gza.coffee', 1, 0, null, null, smc, assert, true);
|
|
util.assertMapping(3, 0, null, null, null, null, null, smc, assert, true);
|
|
util.assertMapping(3, 9, '/wu/tang/gza.coffee', 2, 0, null, null, smc, assert, true);
|
|
util.assertMapping(4, 0, null, null, null, null, null, smc, assert, true);
|
|
util.assertMapping(4, 9, '/wu/tang/gza.coffee', 3, 0, null, null, smc, assert, true);
|
|
util.assertMapping(5, 0, null, null, null, null, null, smc, assert, true);
|
|
util.assertMapping(5, 9, '/wu/tang/gza.coffee', 4, 0, null, null, smc, assert, true);
|
|
util.assertMapping(6, 0, null, null, null, null, null, smc, assert, true);
|
|
util.assertMapping(6, 9, null, null, null, null, null, smc, assert, true);
|
|
util.assertMapping(6, 13, '/wu/tang/gza.coffee', 5, 10, null, null, smc, assert, true);
|
|
|
|
// Generated to original with lub bias.
|
|
util.assertMapping(2, 0, '/wu/tang/gza.coffee', 1, 0, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(2, 9, null, null, null, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(3, 0, '/wu/tang/gza.coffee', 2, 0, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(3, 9, null, null, null, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(4, 0, '/wu/tang/gza.coffee', 3, 0, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(4, 9, null, null, null, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(5, 0, '/wu/tang/gza.coffee', 4, 0, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(5, 9, null, null, null, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(6, 0, '/wu/tang/gza.coffee', 5, 10, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(6, 9, '/wu/tang/gza.coffee', 5, 10, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
util.assertMapping(6, 13, null, null, null, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, true);
|
|
|
|
// Original to generated with default (glb) bias
|
|
util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 1, null, null, smc, assert, null, true);
|
|
util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 3, null, null, smc, assert, null, true);
|
|
util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 6, null, null, smc, assert, null, true);
|
|
util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 9, null, null, smc, assert, null, true);
|
|
util.assertMapping(5, 2, '/wu/tang/gza.coffee', 5, 9, null, null, smc, assert, null, true);
|
|
util.assertMapping(6, 12, '/wu/tang/gza.coffee', 6, 19, null, null, smc, assert, null, true);
|
|
|
|
// Original to generated with lub bias.
|
|
util.assertMapping(3, 2, '/wu/tang/gza.coffee', 1, 1, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, null, true);
|
|
util.assertMapping(4, 2, '/wu/tang/gza.coffee', 2, 3, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, null, true);
|
|
util.assertMapping(5, 2, '/wu/tang/gza.coffee', 3, 6, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, null, true);
|
|
util.assertMapping(6, 12, '/wu/tang/gza.coffee', 4, 9, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, null, true);
|
|
util.assertMapping(6, 12, '/wu/tang/gza.coffee', 5, 9, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, null, true);
|
|
util.assertMapping(null, null, '/wu/tang/gza.coffee', 6, 19, null, SourceMapConsumer.LEAST_UPPER_BOUND, smc, assert, null, true);
|
|
};
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 1 */
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
var util = __webpack_require__(2);
|
|
|
|
// This is a test mapping which maps functions from two different files
|
|
// (one.js and two.js) to a minified generated source.
|
|
//
|
|
// Here is one.js:
|
|
//
|
|
// ONE.foo = function (bar) {
|
|
// return baz(bar);
|
|
// };
|
|
//
|
|
// Here is two.js:
|
|
//
|
|
// TWO.inc = function (n) {
|
|
// return n + 1;
|
|
// };
|
|
//
|
|
// And here is the generated code (min.js):
|
|
//
|
|
// ONE.foo=function(a){return baz(a);};
|
|
// TWO.inc=function(a){return a+1;};
|
|
exports.testGeneratedCode = " ONE.foo=function(a){return baz(a);};\n"+
|
|
" TWO.inc=function(a){return a+1;};";
|
|
exports.testMap = {
|
|
version: 3,
|
|
file: 'min.js',
|
|
names: ['bar', 'baz', 'n'],
|
|
sources: ['one.js', 'two.js'],
|
|
sourceRoot: '/the/root',
|
|
mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
|
|
};
|
|
exports.testMapNoSourceRoot = {
|
|
version: 3,
|
|
file: 'min.js',
|
|
names: ['bar', 'baz', 'n'],
|
|
sources: ['one.js', 'two.js'],
|
|
mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
|
|
};
|
|
exports.testMapEmptySourceRoot = {
|
|
version: 3,
|
|
file: 'min.js',
|
|
names: ['bar', 'baz', 'n'],
|
|
sources: ['one.js', 'two.js'],
|
|
sourceRoot: '',
|
|
mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
|
|
};
|
|
// This mapping is identical to above, but uses the indexed format instead.
|
|
exports.indexedTestMap = {
|
|
version: 3,
|
|
file: 'min.js',
|
|
sections: [
|
|
{
|
|
offset: {
|
|
line: 0,
|
|
column: 0
|
|
},
|
|
map: {
|
|
version: 3,
|
|
sources: [
|
|
"one.js"
|
|
],
|
|
sourcesContent: [
|
|
' ONE.foo = function (bar) {\n' +
|
|
' return baz(bar);\n' +
|
|
' };',
|
|
],
|
|
names: [
|
|
"bar",
|
|
"baz"
|
|
],
|
|
mappings: "CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID",
|
|
file: "min.js",
|
|
sourceRoot: "/the/root"
|
|
}
|
|
},
|
|
{
|
|
offset: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
map: {
|
|
version: 3,
|
|
sources: [
|
|
"two.js"
|
|
],
|
|
sourcesContent: [
|
|
' TWO.inc = function (n) {\n' +
|
|
' return n + 1;\n' +
|
|
' };'
|
|
],
|
|
names: [
|
|
"n"
|
|
],
|
|
mappings: "CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOA",
|
|
file: "min.js",
|
|
sourceRoot: "/the/root"
|
|
}
|
|
}
|
|
]
|
|
};
|
|
exports.indexedTestMapDifferentSourceRoots = {
|
|
version: 3,
|
|
file: 'min.js',
|
|
sections: [
|
|
{
|
|
offset: {
|
|
line: 0,
|
|
column: 0
|
|
},
|
|
map: {
|
|
version: 3,
|
|
sources: [
|
|
"one.js"
|
|
],
|
|
sourcesContent: [
|
|
' ONE.foo = function (bar) {\n' +
|
|
' return baz(bar);\n' +
|
|
' };',
|
|
],
|
|
names: [
|
|
"bar",
|
|
"baz"
|
|
],
|
|
mappings: "CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID",
|
|
file: "min.js",
|
|
sourceRoot: "/the/root"
|
|
}
|
|
},
|
|
{
|
|
offset: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
map: {
|
|
version: 3,
|
|
sources: [
|
|
"two.js"
|
|
],
|
|
sourcesContent: [
|
|
' TWO.inc = function (n) {\n' +
|
|
' return n + 1;\n' +
|
|
' };'
|
|
],
|
|
names: [
|
|
"n"
|
|
],
|
|
mappings: "CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOA",
|
|
file: "min.js",
|
|
sourceRoot: "/different/root"
|
|
}
|
|
}
|
|
]
|
|
};
|
|
exports.testMapWithSourcesContent = {
|
|
version: 3,
|
|
file: 'min.js',
|
|
names: ['bar', 'baz', 'n'],
|
|
sources: ['one.js', 'two.js'],
|
|
sourcesContent: [
|
|
' ONE.foo = function (bar) {\n' +
|
|
' return baz(bar);\n' +
|
|
' };',
|
|
' TWO.inc = function (n) {\n' +
|
|
' return n + 1;\n' +
|
|
' };'
|
|
],
|
|
sourceRoot: '/the/root',
|
|
mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
|
|
};
|
|
exports.testMapRelativeSources = {
|
|
version: 3,
|
|
file: 'min.js',
|
|
names: ['bar', 'baz', 'n'],
|
|
sources: ['./one.js', './two.js'],
|
|
sourcesContent: [
|
|
' ONE.foo = function (bar) {\n' +
|
|
' return baz(bar);\n' +
|
|
' };',
|
|
' TWO.inc = function (n) {\n' +
|
|
' return n + 1;\n' +
|
|
' };'
|
|
],
|
|
sourceRoot: '/the/root',
|
|
mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
|
|
};
|
|
exports.emptyMap = {
|
|
version: 3,
|
|
file: 'min.js',
|
|
names: [],
|
|
sources: [],
|
|
mappings: ''
|
|
};
|
|
|
|
|
|
function assertMapping(generatedLine, generatedColumn, originalSource,
|
|
originalLine, originalColumn, name, bias, map, assert,
|
|
dontTestGenerated, dontTestOriginal) {
|
|
if (!dontTestOriginal) {
|
|
var origMapping = map.originalPositionFor({
|
|
line: generatedLine,
|
|
column: generatedColumn,
|
|
bias: bias
|
|
});
|
|
assert.equal(origMapping.name, name,
|
|
'Incorrect name, expected ' + JSON.stringify(name)
|
|
+ ', got ' + JSON.stringify(origMapping.name));
|
|
assert.equal(origMapping.line, originalLine,
|
|
'Incorrect line, expected ' + JSON.stringify(originalLine)
|
|
+ ', got ' + JSON.stringify(origMapping.line));
|
|
assert.equal(origMapping.column, originalColumn,
|
|
'Incorrect column, expected ' + JSON.stringify(originalColumn)
|
|
+ ', got ' + JSON.stringify(origMapping.column));
|
|
|
|
var expectedSource;
|
|
|
|
if (originalSource && map.sourceRoot && originalSource.indexOf(map.sourceRoot) === 0) {
|
|
expectedSource = originalSource;
|
|
} else if (originalSource) {
|
|
expectedSource = map.sourceRoot
|
|
? util.join(map.sourceRoot, originalSource)
|
|
: originalSource;
|
|
} else {
|
|
expectedSource = null;
|
|
}
|
|
|
|
assert.equal(origMapping.source, expectedSource,
|
|
'Incorrect source, expected ' + JSON.stringify(expectedSource)
|
|
+ ', got ' + JSON.stringify(origMapping.source));
|
|
}
|
|
|
|
if (!dontTestGenerated) {
|
|
var genMapping = map.generatedPositionFor({
|
|
source: originalSource,
|
|
line: originalLine,
|
|
column: originalColumn,
|
|
bias: bias
|
|
});
|
|
assert.equal(genMapping.line, generatedLine,
|
|
'Incorrect line, expected ' + JSON.stringify(generatedLine)
|
|
+ ', got ' + JSON.stringify(genMapping.line));
|
|
assert.equal(genMapping.column, generatedColumn,
|
|
'Incorrect column, expected ' + JSON.stringify(generatedColumn)
|
|
+ ', got ' + JSON.stringify(genMapping.column));
|
|
}
|
|
}
|
|
exports.assertMapping = assertMapping;
|
|
|
|
function assertEqualMaps(assert, actualMap, expectedMap) {
|
|
assert.equal(actualMap.version, expectedMap.version, "version mismatch");
|
|
assert.equal(actualMap.file, expectedMap.file, "file mismatch");
|
|
assert.equal(actualMap.names.length,
|
|
expectedMap.names.length,
|
|
"names length mismatch: " +
|
|
actualMap.names.join(", ") + " != " + expectedMap.names.join(", "));
|
|
for (var i = 0; i < actualMap.names.length; i++) {
|
|
assert.equal(actualMap.names[i],
|
|
expectedMap.names[i],
|
|
"names[" + i + "] mismatch: " +
|
|
actualMap.names.join(", ") + " != " + expectedMap.names.join(", "));
|
|
}
|
|
assert.equal(actualMap.sources.length,
|
|
expectedMap.sources.length,
|
|
"sources length mismatch: " +
|
|
actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", "));
|
|
for (var i = 0; i < actualMap.sources.length; i++) {
|
|
assert.equal(actualMap.sources[i],
|
|
expectedMap.sources[i],
|
|
"sources[" + i + "] length mismatch: " +
|
|
actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", "));
|
|
}
|
|
assert.equal(actualMap.sourceRoot,
|
|
expectedMap.sourceRoot,
|
|
"sourceRoot mismatch: " +
|
|
actualMap.sourceRoot + " != " + expectedMap.sourceRoot);
|
|
assert.equal(actualMap.mappings, expectedMap.mappings,
|
|
"mappings mismatch:\nActual: " + actualMap.mappings + "\nExpected: " + expectedMap.mappings);
|
|
if (actualMap.sourcesContent) {
|
|
assert.equal(actualMap.sourcesContent.length,
|
|
expectedMap.sourcesContent.length,
|
|
"sourcesContent length mismatch");
|
|
for (var i = 0; i < actualMap.sourcesContent.length; i++) {
|
|
assert.equal(actualMap.sourcesContent[i],
|
|
expectedMap.sourcesContent[i],
|
|
"sourcesContent[" + i + "] mismatch");
|
|
}
|
|
}
|
|
}
|
|
exports.assertEqualMaps = assertEqualMaps;
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 2 */
|
|
/***/ function(module, exports) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
/**
|
|
* This is a helper function for getting values from parameter/options
|
|
* objects.
|
|
*
|
|
* @param args The object we are extracting values from
|
|
* @param name The name of the property we are getting.
|
|
* @param defaultValue An optional value to return if the property is missing
|
|
* from the object. If this is not specified and the property is missing, an
|
|
* error will be thrown.
|
|
*/
|
|
function getArg(aArgs, aName, aDefaultValue) {
|
|
if (aName in aArgs) {
|
|
return aArgs[aName];
|
|
} else if (arguments.length === 3) {
|
|
return aDefaultValue;
|
|
} else {
|
|
throw new Error('"' + aName + '" is a required argument.');
|
|
}
|
|
}
|
|
exports.getArg = getArg;
|
|
|
|
var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
|
|
var dataUrlRegexp = /^data:.+\,.+$/;
|
|
|
|
function urlParse(aUrl) {
|
|
var match = aUrl.match(urlRegexp);
|
|
if (!match) {
|
|
return null;
|
|
}
|
|
return {
|
|
scheme: match[1],
|
|
auth: match[2],
|
|
host: match[3],
|
|
port: match[4],
|
|
path: match[5]
|
|
};
|
|
}
|
|
exports.urlParse = urlParse;
|
|
|
|
function urlGenerate(aParsedUrl) {
|
|
var url = '';
|
|
if (aParsedUrl.scheme) {
|
|
url += aParsedUrl.scheme + ':';
|
|
}
|
|
url += '//';
|
|
if (aParsedUrl.auth) {
|
|
url += aParsedUrl.auth + '@';
|
|
}
|
|
if (aParsedUrl.host) {
|
|
url += aParsedUrl.host;
|
|
}
|
|
if (aParsedUrl.port) {
|
|
url += ":" + aParsedUrl.port
|
|
}
|
|
if (aParsedUrl.path) {
|
|
url += aParsedUrl.path;
|
|
}
|
|
return url;
|
|
}
|
|
exports.urlGenerate = urlGenerate;
|
|
|
|
/**
|
|
* Normalizes a path, or the path portion of a URL:
|
|
*
|
|
* - Replaces consequtive slashes with one slash.
|
|
* - Removes unnecessary '.' parts.
|
|
* - Removes unnecessary '<dir>/..' parts.
|
|
*
|
|
* Based on code in the Node.js 'path' core module.
|
|
*
|
|
* @param aPath The path or url to normalize.
|
|
*/
|
|
function normalize(aPath) {
|
|
var path = aPath;
|
|
var url = urlParse(aPath);
|
|
if (url) {
|
|
if (!url.path) {
|
|
return aPath;
|
|
}
|
|
path = url.path;
|
|
}
|
|
var isAbsolute = exports.isAbsolute(path);
|
|
|
|
var parts = path.split(/\/+/);
|
|
for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
|
|
part = parts[i];
|
|
if (part === '.') {
|
|
parts.splice(i, 1);
|
|
} else if (part === '..') {
|
|
up++;
|
|
} else if (up > 0) {
|
|
if (part === '') {
|
|
// The first part is blank if the path is absolute. Trying to go
|
|
// above the root is a no-op. Therefore we can remove all '..' parts
|
|
// directly after the root.
|
|
parts.splice(i + 1, up);
|
|
up = 0;
|
|
} else {
|
|
parts.splice(i, 2);
|
|
up--;
|
|
}
|
|
}
|
|
}
|
|
path = parts.join('/');
|
|
|
|
if (path === '') {
|
|
path = isAbsolute ? '/' : '.';
|
|
}
|
|
|
|
if (url) {
|
|
url.path = path;
|
|
return urlGenerate(url);
|
|
}
|
|
return path;
|
|
}
|
|
exports.normalize = normalize;
|
|
|
|
/**
|
|
* Joins two paths/URLs.
|
|
*
|
|
* @param aRoot The root path or URL.
|
|
* @param aPath The path or URL to be joined with the root.
|
|
*
|
|
* - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
|
|
* scheme-relative URL: Then the scheme of aRoot, if any, is prepended
|
|
* first.
|
|
* - Otherwise aPath is a path. If aRoot is a URL, then its path portion
|
|
* is updated with the result and aRoot is returned. Otherwise the result
|
|
* is returned.
|
|
* - If aPath is absolute, the result is aPath.
|
|
* - Otherwise the two paths are joined with a slash.
|
|
* - Joining for example 'http://' and 'www.example.com' is also supported.
|
|
*/
|
|
function join(aRoot, aPath) {
|
|
if (aRoot === "") {
|
|
aRoot = ".";
|
|
}
|
|
if (aPath === "") {
|
|
aPath = ".";
|
|
}
|
|
var aPathUrl = urlParse(aPath);
|
|
var aRootUrl = urlParse(aRoot);
|
|
if (aRootUrl) {
|
|
aRoot = aRootUrl.path || '/';
|
|
}
|
|
|
|
// `join(foo, '//www.example.org')`
|
|
if (aPathUrl && !aPathUrl.scheme) {
|
|
if (aRootUrl) {
|
|
aPathUrl.scheme = aRootUrl.scheme;
|
|
}
|
|
return urlGenerate(aPathUrl);
|
|
}
|
|
|
|
if (aPathUrl || aPath.match(dataUrlRegexp)) {
|
|
return aPath;
|
|
}
|
|
|
|
// `join('http://', 'www.example.com')`
|
|
if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
|
|
aRootUrl.host = aPath;
|
|
return urlGenerate(aRootUrl);
|
|
}
|
|
|
|
var joined = aPath.charAt(0) === '/'
|
|
? aPath
|
|
: normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
|
|
|
|
if (aRootUrl) {
|
|
aRootUrl.path = joined;
|
|
return urlGenerate(aRootUrl);
|
|
}
|
|
return joined;
|
|
}
|
|
exports.join = join;
|
|
|
|
exports.isAbsolute = function (aPath) {
|
|
return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
|
|
};
|
|
|
|
/**
|
|
* Make a path relative to a URL or another path.
|
|
*
|
|
* @param aRoot The root path or URL.
|
|
* @param aPath The path or URL to be made relative to aRoot.
|
|
*/
|
|
function relative(aRoot, aPath) {
|
|
if (aRoot === "") {
|
|
aRoot = ".";
|
|
}
|
|
|
|
aRoot = aRoot.replace(/\/$/, '');
|
|
|
|
// It is possible for the path to be above the root. In this case, simply
|
|
// checking whether the root is a prefix of the path won't work. Instead, we
|
|
// need to remove components from the root one by one, until either we find
|
|
// a prefix that fits, or we run out of components to remove.
|
|
var level = 0;
|
|
while (aPath.indexOf(aRoot + '/') !== 0) {
|
|
var index = aRoot.lastIndexOf("/");
|
|
if (index < 0) {
|
|
return aPath;
|
|
}
|
|
|
|
// If the only part of the root that is left is the scheme (i.e. http://,
|
|
// file:///, etc.), one or more slashes (/), or simply nothing at all, we
|
|
// have exhausted all components, so the path is not relative to the root.
|
|
aRoot = aRoot.slice(0, index);
|
|
if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
|
|
return aPath;
|
|
}
|
|
|
|
++level;
|
|
}
|
|
|
|
// Make sure we add a "../" for each component we removed from the root.
|
|
return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
|
|
}
|
|
exports.relative = relative;
|
|
|
|
/**
|
|
* Because behavior goes wacky when you set `__proto__` on objects, we
|
|
* have to prefix all the strings in our set with an arbitrary character.
|
|
*
|
|
* See https://github.com/mozilla/source-map/pull/31 and
|
|
* https://github.com/mozilla/source-map/issues/30
|
|
*
|
|
* @param String aStr
|
|
*/
|
|
function toSetString(aStr) {
|
|
return '$' + aStr;
|
|
}
|
|
exports.toSetString = toSetString;
|
|
|
|
function fromSetString(aStr) {
|
|
return aStr.substr(1);
|
|
}
|
|
exports.fromSetString = fromSetString;
|
|
|
|
/**
|
|
* Comparator between two mappings where the original positions are compared.
|
|
*
|
|
* Optionally pass in `true` as `onlyCompareGenerated` to consider two
|
|
* mappings with the same original source/line/column, but different generated
|
|
* line and column the same. Useful when searching for a mapping with a
|
|
* stubbed out mapping.
|
|
*/
|
|
function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
|
|
var cmp = mappingA.source - mappingB.source;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.originalLine - mappingB.originalLine;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.originalColumn - mappingB.originalColumn;
|
|
if (cmp !== 0 || onlyCompareOriginal) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.generatedLine - mappingB.generatedLine;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
return mappingA.name - mappingB.name;
|
|
}
|
|
exports.compareByOriginalPositions = compareByOriginalPositions;
|
|
|
|
/**
|
|
* Comparator between two mappings with deflated source and name indices where
|
|
* the generated positions are compared.
|
|
*
|
|
* Optionally pass in `true` as `onlyCompareGenerated` to consider two
|
|
* mappings with the same generated line and column, but different
|
|
* source/name/original line and column the same. Useful when searching for a
|
|
* mapping with a stubbed out mapping.
|
|
*/
|
|
function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
|
|
var cmp = mappingA.generatedLine - mappingB.generatedLine;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
|
|
if (cmp !== 0 || onlyCompareGenerated) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.source - mappingB.source;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.originalLine - mappingB.originalLine;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.originalColumn - mappingB.originalColumn;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
return mappingA.name - mappingB.name;
|
|
}
|
|
exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
|
|
|
|
function strcmp(aStr1, aStr2) {
|
|
if (aStr1 === aStr2) {
|
|
return 0;
|
|
}
|
|
|
|
if (aStr1 > aStr2) {
|
|
return 1;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
/**
|
|
* Comparator between two mappings with inflated source and name strings where
|
|
* the generated positions are compared.
|
|
*/
|
|
function compareByGeneratedPositionsInflated(mappingA, mappingB) {
|
|
var cmp = mappingA.generatedLine - mappingB.generatedLine;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = strcmp(mappingA.source, mappingB.source);
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.originalLine - mappingB.originalLine;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
cmp = mappingA.originalColumn - mappingB.originalColumn;
|
|
if (cmp !== 0) {
|
|
return cmp;
|
|
}
|
|
|
|
return strcmp(mappingA.name, mappingB.name);
|
|
}
|
|
exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 3 */
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
var util = __webpack_require__(2);
|
|
var binarySearch = __webpack_require__(4);
|
|
var ArraySet = __webpack_require__(5).ArraySet;
|
|
var base64VLQ = __webpack_require__(6);
|
|
var quickSort = __webpack_require__(8).quickSort;
|
|
|
|
function SourceMapConsumer(aSourceMap) {
|
|
var sourceMap = aSourceMap;
|
|
if (typeof aSourceMap === 'string') {
|
|
sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
|
|
}
|
|
|
|
return sourceMap.sections != null
|
|
? new IndexedSourceMapConsumer(sourceMap)
|
|
: new BasicSourceMapConsumer(sourceMap);
|
|
}
|
|
|
|
SourceMapConsumer.fromSourceMap = function(aSourceMap) {
|
|
return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
|
|
}
|
|
|
|
/**
|
|
* The version of the source mapping spec that we are consuming.
|
|
*/
|
|
SourceMapConsumer.prototype._version = 3;
|
|
|
|
// `__generatedMappings` and `__originalMappings` are arrays that hold the
|
|
// parsed mapping coordinates from the source map's "mappings" attribute. They
|
|
// are lazily instantiated, accessed via the `_generatedMappings` and
|
|
// `_originalMappings` getters respectively, and we only parse the mappings
|
|
// and create these arrays once queried for a source location. We jump through
|
|
// these hoops because there can be many thousands of mappings, and parsing
|
|
// them is expensive, so we only want to do it if we must.
|
|
//
|
|
// Each object in the arrays is of the form:
|
|
//
|
|
// {
|
|
// generatedLine: The line number in the generated code,
|
|
// generatedColumn: The column number in the generated code,
|
|
// source: The path to the original source file that generated this
|
|
// chunk of code,
|
|
// originalLine: The line number in the original source that
|
|
// corresponds to this chunk of generated code,
|
|
// originalColumn: The column number in the original source that
|
|
// corresponds to this chunk of generated code,
|
|
// name: The name of the original symbol which generated this chunk of
|
|
// code.
|
|
// }
|
|
//
|
|
// All properties except for `generatedLine` and `generatedColumn` can be
|
|
// `null`.
|
|
//
|
|
// `_generatedMappings` is ordered by the generated positions.
|
|
//
|
|
// `_originalMappings` is ordered by the original positions.
|
|
|
|
SourceMapConsumer.prototype.__generatedMappings = null;
|
|
Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
|
|
get: function () {
|
|
if (!this.__generatedMappings) {
|
|
this._parseMappings(this._mappings, this.sourceRoot);
|
|
}
|
|
|
|
return this.__generatedMappings;
|
|
}
|
|
});
|
|
|
|
SourceMapConsumer.prototype.__originalMappings = null;
|
|
Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
|
|
get: function () {
|
|
if (!this.__originalMappings) {
|
|
this._parseMappings(this._mappings, this.sourceRoot);
|
|
}
|
|
|
|
return this.__originalMappings;
|
|
}
|
|
});
|
|
|
|
SourceMapConsumer.prototype._charIsMappingSeparator =
|
|
function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
|
|
var c = aStr.charAt(index);
|
|
return c === ";" || c === ",";
|
|
};
|
|
|
|
/**
|
|
* Parse the mappings in a string in to a data structure which we can easily
|
|
* query (the ordered arrays in the `this.__generatedMappings` and
|
|
* `this.__originalMappings` properties).
|
|
*/
|
|
SourceMapConsumer.prototype._parseMappings =
|
|
function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
|
|
throw new Error("Subclasses must implement _parseMappings");
|
|
};
|
|
|
|
SourceMapConsumer.GENERATED_ORDER = 1;
|
|
SourceMapConsumer.ORIGINAL_ORDER = 2;
|
|
|
|
SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
|
|
SourceMapConsumer.LEAST_UPPER_BOUND = 2;
|
|
|
|
/**
|
|
* Iterate over each mapping between an original source/line/column and a
|
|
* generated line/column in this source map.
|
|
*
|
|
* @param Function aCallback
|
|
* The function that is called with each mapping.
|
|
* @param Object aContext
|
|
* Optional. If specified, this object will be the value of `this` every
|
|
* time that `aCallback` is called.
|
|
* @param aOrder
|
|
* Either `SourceMapConsumer.GENERATED_ORDER` or
|
|
* `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
|
|
* iterate over the mappings sorted by the generated file's line/column
|
|
* order or the original's source/line/column order, respectively. Defaults to
|
|
* `SourceMapConsumer.GENERATED_ORDER`.
|
|
*/
|
|
SourceMapConsumer.prototype.eachMapping =
|
|
function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
|
|
var context = aContext || null;
|
|
var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
|
|
|
|
var mappings;
|
|
switch (order) {
|
|
case SourceMapConsumer.GENERATED_ORDER:
|
|
mappings = this._generatedMappings;
|
|
break;
|
|
case SourceMapConsumer.ORIGINAL_ORDER:
|
|
mappings = this._originalMappings;
|
|
break;
|
|
default:
|
|
throw new Error("Unknown order of iteration.");
|
|
}
|
|
|
|
var sourceRoot = this.sourceRoot;
|
|
mappings.map(function (mapping) {
|
|
var source = mapping.source === null ? null : this._sources.at(mapping.source);
|
|
if (source != null && sourceRoot != null) {
|
|
source = util.join(sourceRoot, source);
|
|
}
|
|
return {
|
|
source: source,
|
|
generatedLine: mapping.generatedLine,
|
|
generatedColumn: mapping.generatedColumn,
|
|
originalLine: mapping.originalLine,
|
|
originalColumn: mapping.originalColumn,
|
|
name: mapping.name === null ? null : this._names.at(mapping.name)
|
|
};
|
|
}, this).forEach(aCallback, context);
|
|
};
|
|
|
|
/**
|
|
* Returns all generated line and column information for the original source,
|
|
* line, and column provided. If no column is provided, returns all mappings
|
|
* corresponding to a either the line we are searching for or the next
|
|
* closest line that has any mappings. Otherwise, returns all mappings
|
|
* corresponding to the given line and either the column we are searching for
|
|
* or the next closest column that has any offsets.
|
|
*
|
|
* The only argument is an object with the following properties:
|
|
*
|
|
* - source: The filename of the original source.
|
|
* - line: The line number in the original source.
|
|
* - column: Optional. the column number in the original source.
|
|
*
|
|
* and an array of objects is returned, each with the following properties:
|
|
*
|
|
* - line: The line number in the generated source, or null.
|
|
* - column: The column number in the generated source, or null.
|
|
*/
|
|
SourceMapConsumer.prototype.allGeneratedPositionsFor =
|
|
function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
|
|
var line = util.getArg(aArgs, 'line');
|
|
|
|
// When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
|
|
// returns the index of the closest mapping less than the needle. By
|
|
// setting needle.originalColumn to 0, we thus find the last mapping for
|
|
// the given line, provided such a mapping exists.
|
|
var needle = {
|
|
source: util.getArg(aArgs, 'source'),
|
|
originalLine: line,
|
|
originalColumn: util.getArg(aArgs, 'column', 0)
|
|
};
|
|
|
|
if (this.sourceRoot != null) {
|
|
needle.source = util.relative(this.sourceRoot, needle.source);
|
|
}
|
|
if (!this._sources.has(needle.source)) {
|
|
return [];
|
|
}
|
|
needle.source = this._sources.indexOf(needle.source);
|
|
|
|
var mappings = [];
|
|
|
|
var index = this._findMapping(needle,
|
|
this._originalMappings,
|
|
"originalLine",
|
|
"originalColumn",
|
|
util.compareByOriginalPositions,
|
|
binarySearch.LEAST_UPPER_BOUND);
|
|
if (index >= 0) {
|
|
var mapping = this._originalMappings[index];
|
|
|
|
if (aArgs.column === undefined) {
|
|
var originalLine = mapping.originalLine;
|
|
|
|
// Iterate until either we run out of mappings, or we run into
|
|
// a mapping for a different line than the one we found. Since
|
|
// mappings are sorted, this is guaranteed to find all mappings for
|
|
// the line we found.
|
|
while (mapping && mapping.originalLine === originalLine) {
|
|
mappings.push({
|
|
line: util.getArg(mapping, 'generatedLine', null),
|
|
column: util.getArg(mapping, 'generatedColumn', null),
|
|
lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
|
|
});
|
|
|
|
mapping = this._originalMappings[++index];
|
|
}
|
|
} else {
|
|
var originalColumn = mapping.originalColumn;
|
|
|
|
// Iterate until either we run out of mappings, or we run into
|
|
// a mapping for a different line than the one we were searching for.
|
|
// Since mappings are sorted, this is guaranteed to find all mappings for
|
|
// the line we are searching for.
|
|
while (mapping &&
|
|
mapping.originalLine === line &&
|
|
mapping.originalColumn == originalColumn) {
|
|
mappings.push({
|
|
line: util.getArg(mapping, 'generatedLine', null),
|
|
column: util.getArg(mapping, 'generatedColumn', null),
|
|
lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
|
|
});
|
|
|
|
mapping = this._originalMappings[++index];
|
|
}
|
|
}
|
|
}
|
|
|
|
return mappings;
|
|
};
|
|
|
|
exports.SourceMapConsumer = SourceMapConsumer;
|
|
|
|
/**
|
|
* A BasicSourceMapConsumer instance represents a parsed source map which we can
|
|
* query for information about the original file positions by giving it a file
|
|
* position in the generated source.
|
|
*
|
|
* The only parameter is the raw source map (either as a JSON string, or
|
|
* already parsed to an object). According to the spec, source maps have the
|
|
* following attributes:
|
|
*
|
|
* - version: Which version of the source map spec this map is following.
|
|
* - sources: An array of URLs to the original source files.
|
|
* - names: An array of identifiers which can be referrenced by individual mappings.
|
|
* - sourceRoot: Optional. The URL root from which all sources are relative.
|
|
* - sourcesContent: Optional. An array of contents of the original source files.
|
|
* - mappings: A string of base64 VLQs which contain the actual mappings.
|
|
* - file: Optional. The generated file this source map is associated with.
|
|
*
|
|
* Here is an example source map, taken from the source map spec[0]:
|
|
*
|
|
* {
|
|
* version : 3,
|
|
* file: "out.js",
|
|
* sourceRoot : "",
|
|
* sources: ["foo.js", "bar.js"],
|
|
* names: ["src", "maps", "are", "fun"],
|
|
* mappings: "AA,AB;;ABCDE;"
|
|
* }
|
|
*
|
|
* [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
|
|
*/
|
|
function BasicSourceMapConsumer(aSourceMap) {
|
|
var sourceMap = aSourceMap;
|
|
if (typeof aSourceMap === 'string') {
|
|
sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
|
|
}
|
|
|
|
var version = util.getArg(sourceMap, 'version');
|
|
var sources = util.getArg(sourceMap, 'sources');
|
|
// Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
|
|
// requires the array) to play nice here.
|
|
var names = util.getArg(sourceMap, 'names', []);
|
|
var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
|
|
var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
|
|
var mappings = util.getArg(sourceMap, 'mappings');
|
|
var file = util.getArg(sourceMap, 'file', null);
|
|
|
|
// Once again, Sass deviates from the spec and supplies the version as a
|
|
// string rather than a number, so we use loose equality checking here.
|
|
if (version != this._version) {
|
|
throw new Error('Unsupported version: ' + version);
|
|
}
|
|
|
|
sources = sources
|
|
// Some source maps produce relative source paths like "./foo.js" instead of
|
|
// "foo.js". Normalize these first so that future comparisons will succeed.
|
|
// See bugzil.la/1090768.
|
|
.map(util.normalize)
|
|
// Always ensure that absolute sources are internally stored relative to
|
|
// the source root, if the source root is absolute. Not doing this would
|
|
// be particularly problematic when the source root is a prefix of the
|
|
// source (valid, but why??). See github issue #199 and bugzil.la/1188982.
|
|
.map(function (source) {
|
|
return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
|
|
? util.relative(sourceRoot, source)
|
|
: source;
|
|
});
|
|
|
|
// Pass `true` below to allow duplicate names and sources. While source maps
|
|
// are intended to be compressed and deduplicated, the TypeScript compiler
|
|
// sometimes generates source maps with duplicates in them. See Github issue
|
|
// #72 and bugzil.la/889492.
|
|
this._names = ArraySet.fromArray(names, true);
|
|
this._sources = ArraySet.fromArray(sources, true);
|
|
|
|
this.sourceRoot = sourceRoot;
|
|
this.sourcesContent = sourcesContent;
|
|
this._mappings = mappings;
|
|
this.file = file;
|
|
}
|
|
|
|
BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
|
|
BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
|
|
|
|
/**
|
|
* Create a BasicSourceMapConsumer from a SourceMapGenerator.
|
|
*
|
|
* @param SourceMapGenerator aSourceMap
|
|
* The source map that will be consumed.
|
|
* @returns BasicSourceMapConsumer
|
|
*/
|
|
BasicSourceMapConsumer.fromSourceMap =
|
|
function SourceMapConsumer_fromSourceMap(aSourceMap) {
|
|
var smc = Object.create(BasicSourceMapConsumer.prototype);
|
|
|
|
var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
|
|
var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
|
|
smc.sourceRoot = aSourceMap._sourceRoot;
|
|
smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
|
|
smc.sourceRoot);
|
|
smc.file = aSourceMap._file;
|
|
|
|
// Because we are modifying the entries (by converting string sources and
|
|
// names to indices into the sources and names ArraySets), we have to make
|
|
// a copy of the entry or else bad things happen. Shared mutable state
|
|
// strikes again! See github issue #191.
|
|
|
|
var generatedMappings = aSourceMap._mappings.toArray().slice();
|
|
var destGeneratedMappings = smc.__generatedMappings = [];
|
|
var destOriginalMappings = smc.__originalMappings = [];
|
|
|
|
for (var i = 0, length = generatedMappings.length; i < length; i++) {
|
|
var srcMapping = generatedMappings[i];
|
|
var destMapping = new Mapping;
|
|
destMapping.generatedLine = srcMapping.generatedLine;
|
|
destMapping.generatedColumn = srcMapping.generatedColumn;
|
|
|
|
if (srcMapping.source) {
|
|
destMapping.source = sources.indexOf(srcMapping.source);
|
|
destMapping.originalLine = srcMapping.originalLine;
|
|
destMapping.originalColumn = srcMapping.originalColumn;
|
|
|
|
if (srcMapping.name) {
|
|
destMapping.name = names.indexOf(srcMapping.name);
|
|
}
|
|
|
|
destOriginalMappings.push(destMapping);
|
|
}
|
|
|
|
destGeneratedMappings.push(destMapping);
|
|
}
|
|
|
|
quickSort(smc.__originalMappings, util.compareByOriginalPositions);
|
|
|
|
return smc;
|
|
};
|
|
|
|
/**
|
|
* The version of the source mapping spec that we are consuming.
|
|
*/
|
|
BasicSourceMapConsumer.prototype._version = 3;
|
|
|
|
/**
|
|
* The list of original sources.
|
|
*/
|
|
Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
|
|
get: function () {
|
|
return this._sources.toArray().map(function (s) {
|
|
return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
|
|
}, this);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Provide the JIT with a nice shape / hidden class.
|
|
*/
|
|
function Mapping() {
|
|
this.generatedLine = 0;
|
|
this.generatedColumn = 0;
|
|
this.source = null;
|
|
this.originalLine = null;
|
|
this.originalColumn = null;
|
|
this.name = null;
|
|
}
|
|
|
|
/**
|
|
* Parse the mappings in a string in to a data structure which we can easily
|
|
* query (the ordered arrays in the `this.__generatedMappings` and
|
|
* `this.__originalMappings` properties).
|
|
*/
|
|
BasicSourceMapConsumer.prototype._parseMappings =
|
|
function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
|
|
var generatedLine = 1;
|
|
var previousGeneratedColumn = 0;
|
|
var previousOriginalLine = 0;
|
|
var previousOriginalColumn = 0;
|
|
var previousSource = 0;
|
|
var previousName = 0;
|
|
var length = aStr.length;
|
|
var index = 0;
|
|
var cachedSegments = {};
|
|
var temp = {};
|
|
var originalMappings = [];
|
|
var generatedMappings = [];
|
|
var mapping, str, segment, end, value;
|
|
|
|
while (index < length) {
|
|
if (aStr.charAt(index) === ';') {
|
|
generatedLine++;
|
|
index++;
|
|
previousGeneratedColumn = 0;
|
|
}
|
|
else if (aStr.charAt(index) === ',') {
|
|
index++;
|
|
}
|
|
else {
|
|
mapping = new Mapping();
|
|
mapping.generatedLine = generatedLine;
|
|
|
|
// Because each offset is encoded relative to the previous one,
|
|
// many segments often have the same encoding. We can exploit this
|
|
// fact by caching the parsed variable length fields of each segment,
|
|
// allowing us to avoid a second parse if we encounter the same
|
|
// segment again.
|
|
for (end = index; end < length; end++) {
|
|
if (this._charIsMappingSeparator(aStr, end)) {
|
|
break;
|
|
}
|
|
}
|
|
str = aStr.slice(index, end);
|
|
|
|
segment = cachedSegments[str];
|
|
if (segment) {
|
|
index += str.length;
|
|
} else {
|
|
segment = [];
|
|
while (index < end) {
|
|
base64VLQ.decode(aStr, index, temp);
|
|
value = temp.value;
|
|
index = temp.rest;
|
|
segment.push(value);
|
|
}
|
|
|
|
if (segment.length === 2) {
|
|
throw new Error('Found a source, but no line and column');
|
|
}
|
|
|
|
if (segment.length === 3) {
|
|
throw new Error('Found a source and line, but no column');
|
|
}
|
|
|
|
cachedSegments[str] = segment;
|
|
}
|
|
|
|
// Generated column.
|
|
mapping.generatedColumn = previousGeneratedColumn + segment[0];
|
|
previousGeneratedColumn = mapping.generatedColumn;
|
|
|
|
if (segment.length > 1) {
|
|
// Original source.
|
|
mapping.source = previousSource + segment[1];
|
|
previousSource += segment[1];
|
|
|
|
// Original line.
|
|
mapping.originalLine = previousOriginalLine + segment[2];
|
|
previousOriginalLine = mapping.originalLine;
|
|
// Lines are stored 0-based
|
|
mapping.originalLine += 1;
|
|
|
|
// Original column.
|
|
mapping.originalColumn = previousOriginalColumn + segment[3];
|
|
previousOriginalColumn = mapping.originalColumn;
|
|
|
|
if (segment.length > 4) {
|
|
// Original name.
|
|
mapping.name = previousName + segment[4];
|
|
previousName += segment[4];
|
|
}
|
|
}
|
|
|
|
generatedMappings.push(mapping);
|
|
if (typeof mapping.originalLine === 'number') {
|
|
originalMappings.push(mapping);
|
|
}
|
|
}
|
|
}
|
|
|
|
quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
|
|
this.__generatedMappings = generatedMappings;
|
|
|
|
quickSort(originalMappings, util.compareByOriginalPositions);
|
|
this.__originalMappings = originalMappings;
|
|
};
|
|
|
|
/**
|
|
* Find the mapping that best matches the hypothetical "needle" mapping that
|
|
* we are searching for in the given "haystack" of mappings.
|
|
*/
|
|
BasicSourceMapConsumer.prototype._findMapping =
|
|
function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
|
|
aColumnName, aComparator, aBias) {
|
|
// To return the position we are searching for, we must first find the
|
|
// mapping for the given position and then return the opposite position it
|
|
// points to. Because the mappings are sorted, we can use binary search to
|
|
// find the best mapping.
|
|
|
|
if (aNeedle[aLineName] <= 0) {
|
|
throw new TypeError('Line must be greater than or equal to 1, got '
|
|
+ aNeedle[aLineName]);
|
|
}
|
|
if (aNeedle[aColumnName] < 0) {
|
|
throw new TypeError('Column must be greater than or equal to 0, got '
|
|
+ aNeedle[aColumnName]);
|
|
}
|
|
|
|
return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
|
|
};
|
|
|
|
/**
|
|
* Compute the last column for each generated mapping. The last column is
|
|
* inclusive.
|
|
*/
|
|
BasicSourceMapConsumer.prototype.computeColumnSpans =
|
|
function SourceMapConsumer_computeColumnSpans() {
|
|
for (var index = 0; index < this._generatedMappings.length; ++index) {
|
|
var mapping = this._generatedMappings[index];
|
|
|
|
// Mappings do not contain a field for the last generated columnt. We
|
|
// can come up with an optimistic estimate, however, by assuming that
|
|
// mappings are contiguous (i.e. given two consecutive mappings, the
|
|
// first mapping ends where the second one starts).
|
|
if (index + 1 < this._generatedMappings.length) {
|
|
var nextMapping = this._generatedMappings[index + 1];
|
|
|
|
if (mapping.generatedLine === nextMapping.generatedLine) {
|
|
mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
// The last mapping for each line spans the entire line.
|
|
mapping.lastGeneratedColumn = Infinity;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Returns the original source, line, and column information for the generated
|
|
* source's line and column positions provided. The only argument is an object
|
|
* with the following properties:
|
|
*
|
|
* - line: The line number in the generated source.
|
|
* - column: The column number in the generated source.
|
|
* - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
|
|
* 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
|
|
* closest element that is smaller than or greater than the one we are
|
|
* searching for, respectively, if the exact element cannot be found.
|
|
* Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
|
|
*
|
|
* and an object is returned with the following properties:
|
|
*
|
|
* - source: The original source file, or null.
|
|
* - line: The line number in the original source, or null.
|
|
* - column: The column number in the original source, or null.
|
|
* - name: The original identifier, or null.
|
|
*/
|
|
BasicSourceMapConsumer.prototype.originalPositionFor =
|
|
function SourceMapConsumer_originalPositionFor(aArgs) {
|
|
var needle = {
|
|
generatedLine: util.getArg(aArgs, 'line'),
|
|
generatedColumn: util.getArg(aArgs, 'column')
|
|
};
|
|
|
|
var index = this._findMapping(
|
|
needle,
|
|
this._generatedMappings,
|
|
"generatedLine",
|
|
"generatedColumn",
|
|
util.compareByGeneratedPositionsDeflated,
|
|
util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
|
|
);
|
|
|
|
if (index >= 0) {
|
|
var mapping = this._generatedMappings[index];
|
|
|
|
if (mapping.generatedLine === needle.generatedLine) {
|
|
var source = util.getArg(mapping, 'source', null);
|
|
if (source !== null) {
|
|
source = this._sources.at(source);
|
|
if (this.sourceRoot != null) {
|
|
source = util.join(this.sourceRoot, source);
|
|
}
|
|
}
|
|
var name = util.getArg(mapping, 'name', null);
|
|
if (name !== null) {
|
|
name = this._names.at(name);
|
|
}
|
|
return {
|
|
source: source,
|
|
line: util.getArg(mapping, 'originalLine', null),
|
|
column: util.getArg(mapping, 'originalColumn', null),
|
|
name: name
|
|
};
|
|
}
|
|
}
|
|
|
|
return {
|
|
source: null,
|
|
line: null,
|
|
column: null,
|
|
name: null
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Return true if we have the source content for every source in the source
|
|
* map, false otherwise.
|
|
*/
|
|
BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
|
|
function BasicSourceMapConsumer_hasContentsOfAllSources() {
|
|
if (!this.sourcesContent) {
|
|
return false;
|
|
}
|
|
return this.sourcesContent.length >= this._sources.size() &&
|
|
!this.sourcesContent.some(function (sc) { return sc == null; });
|
|
};
|
|
|
|
/**
|
|
* Returns the original source content. The only argument is the url of the
|
|
* original source file. Returns null if no original source content is
|
|
* availible.
|
|
*/
|
|
BasicSourceMapConsumer.prototype.sourceContentFor =
|
|
function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
|
|
if (!this.sourcesContent) {
|
|
return null;
|
|
}
|
|
|
|
if (this.sourceRoot != null) {
|
|
aSource = util.relative(this.sourceRoot, aSource);
|
|
}
|
|
|
|
if (this._sources.has(aSource)) {
|
|
return this.sourcesContent[this._sources.indexOf(aSource)];
|
|
}
|
|
|
|
var url;
|
|
if (this.sourceRoot != null
|
|
&& (url = util.urlParse(this.sourceRoot))) {
|
|
// XXX: file:// URIs and absolute paths lead to unexpected behavior for
|
|
// many users. We can help them out when they expect file:// URIs to
|
|
// behave like it would if they were running a local HTTP server. See
|
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
|
|
var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
|
|
if (url.scheme == "file"
|
|
&& this._sources.has(fileUriAbsPath)) {
|
|
return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
|
|
}
|
|
|
|
if ((!url.path || url.path == "/")
|
|
&& this._sources.has("/" + aSource)) {
|
|
return this.sourcesContent[this._sources.indexOf("/" + aSource)];
|
|
}
|
|
}
|
|
|
|
// This function is used recursively from
|
|
// IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
|
|
// don't want to throw if we can't find the source - we just want to
|
|
// return null, so we provide a flag to exit gracefully.
|
|
if (nullOnMissing) {
|
|
return null;
|
|
}
|
|
else {
|
|
throw new Error('"' + aSource + '" is not in the SourceMap.');
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Returns the generated line and column information for the original source,
|
|
* line, and column positions provided. The only argument is an object with
|
|
* the following properties:
|
|
*
|
|
* - source: The filename of the original source.
|
|
* - line: The line number in the original source.
|
|
* - column: The column number in the original source.
|
|
* - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
|
|
* 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
|
|
* closest element that is smaller than or greater than the one we are
|
|
* searching for, respectively, if the exact element cannot be found.
|
|
* Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
|
|
*
|
|
* and an object is returned with the following properties:
|
|
*
|
|
* - line: The line number in the generated source, or null.
|
|
* - column: The column number in the generated source, or null.
|
|
*/
|
|
BasicSourceMapConsumer.prototype.generatedPositionFor =
|
|
function SourceMapConsumer_generatedPositionFor(aArgs) {
|
|
var source = util.getArg(aArgs, 'source');
|
|
if (this.sourceRoot != null) {
|
|
source = util.relative(this.sourceRoot, source);
|
|
}
|
|
if (!this._sources.has(source)) {
|
|
return {
|
|
line: null,
|
|
column: null,
|
|
lastColumn: null
|
|
};
|
|
}
|
|
source = this._sources.indexOf(source);
|
|
|
|
var needle = {
|
|
source: source,
|
|
originalLine: util.getArg(aArgs, 'line'),
|
|
originalColumn: util.getArg(aArgs, 'column')
|
|
};
|
|
|
|
var index = this._findMapping(
|
|
needle,
|
|
this._originalMappings,
|
|
"originalLine",
|
|
"originalColumn",
|
|
util.compareByOriginalPositions,
|
|
util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
|
|
);
|
|
|
|
if (index >= 0) {
|
|
var mapping = this._originalMappings[index];
|
|
|
|
if (mapping.source === needle.source) {
|
|
return {
|
|
line: util.getArg(mapping, 'generatedLine', null),
|
|
column: util.getArg(mapping, 'generatedColumn', null),
|
|
lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
|
|
};
|
|
}
|
|
}
|
|
|
|
return {
|
|
line: null,
|
|
column: null,
|
|
lastColumn: null
|
|
};
|
|
};
|
|
|
|
exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
|
|
|
|
/**
|
|
* An IndexedSourceMapConsumer instance represents a parsed source map which
|
|
* we can query for information. It differs from BasicSourceMapConsumer in
|
|
* that it takes "indexed" source maps (i.e. ones with a "sections" field) as
|
|
* input.
|
|
*
|
|
* The only parameter is a raw source map (either as a JSON string, or already
|
|
* parsed to an object). According to the spec for indexed source maps, they
|
|
* have the following attributes:
|
|
*
|
|
* - version: Which version of the source map spec this map is following.
|
|
* - file: Optional. The generated file this source map is associated with.
|
|
* - sections: A list of section definitions.
|
|
*
|
|
* Each value under the "sections" field has two fields:
|
|
* - offset: The offset into the original specified at which this section
|
|
* begins to apply, defined as an object with a "line" and "column"
|
|
* field.
|
|
* - map: A source map definition. This source map could also be indexed,
|
|
* but doesn't have to be.
|
|
*
|
|
* Instead of the "map" field, it's also possible to have a "url" field
|
|
* specifying a URL to retrieve a source map from, but that's currently
|
|
* unsupported.
|
|
*
|
|
* Here's an example source map, taken from the source map spec[0], but
|
|
* modified to omit a section which uses the "url" field.
|
|
*
|
|
* {
|
|
* version : 3,
|
|
* file: "app.js",
|
|
* sections: [{
|
|
* offset: {line:100, column:10},
|
|
* map: {
|
|
* version : 3,
|
|
* file: "section.js",
|
|
* sources: ["foo.js", "bar.js"],
|
|
* names: ["src", "maps", "are", "fun"],
|
|
* mappings: "AAAA,E;;ABCDE;"
|
|
* }
|
|
* }],
|
|
* }
|
|
*
|
|
* [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
|
|
*/
|
|
function IndexedSourceMapConsumer(aSourceMap) {
|
|
var sourceMap = aSourceMap;
|
|
if (typeof aSourceMap === 'string') {
|
|
sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
|
|
}
|
|
|
|
var version = util.getArg(sourceMap, 'version');
|
|
var sections = util.getArg(sourceMap, 'sections');
|
|
|
|
if (version != this._version) {
|
|
throw new Error('Unsupported version: ' + version);
|
|
}
|
|
|
|
this._sources = new ArraySet();
|
|
this._names = new ArraySet();
|
|
|
|
var lastOffset = {
|
|
line: -1,
|
|
column: 0
|
|
};
|
|
this._sections = sections.map(function (s) {
|
|
if (s.url) {
|
|
// The url field will require support for asynchronicity.
|
|
// See https://github.com/mozilla/source-map/issues/16
|
|
throw new Error('Support for url field in sections not implemented.');
|
|
}
|
|
var offset = util.getArg(s, 'offset');
|
|
var offsetLine = util.getArg(offset, 'line');
|
|
var offsetColumn = util.getArg(offset, 'column');
|
|
|
|
if (offsetLine < lastOffset.line ||
|
|
(offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
|
|
throw new Error('Section offsets must be ordered and non-overlapping.');
|
|
}
|
|
lastOffset = offset;
|
|
|
|
return {
|
|
generatedOffset: {
|
|
// The offset fields are 0-based, but we use 1-based indices when
|
|
// encoding/decoding from VLQ.
|
|
generatedLine: offsetLine + 1,
|
|
generatedColumn: offsetColumn + 1
|
|
},
|
|
consumer: new SourceMapConsumer(util.getArg(s, 'map'))
|
|
}
|
|
});
|
|
}
|
|
|
|
IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
|
|
IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
|
|
|
|
/**
|
|
* The version of the source mapping spec that we are consuming.
|
|
*/
|
|
IndexedSourceMapConsumer.prototype._version = 3;
|
|
|
|
/**
|
|
* The list of original sources.
|
|
*/
|
|
Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
|
|
get: function () {
|
|
var sources = [];
|
|
for (var i = 0; i < this._sections.length; i++) {
|
|
for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
|
|
sources.push(this._sections[i].consumer.sources[j]);
|
|
}
|
|
}
|
|
return sources;
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Returns the original source, line, and column information for the generated
|
|
* source's line and column positions provided. The only argument is an object
|
|
* with the following properties:
|
|
*
|
|
* - line: The line number in the generated source.
|
|
* - column: The column number in the generated source.
|
|
*
|
|
* and an object is returned with the following properties:
|
|
*
|
|
* - source: The original source file, or null.
|
|
* - line: The line number in the original source, or null.
|
|
* - column: The column number in the original source, or null.
|
|
* - name: The original identifier, or null.
|
|
*/
|
|
IndexedSourceMapConsumer.prototype.originalPositionFor =
|
|
function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
|
|
var needle = {
|
|
generatedLine: util.getArg(aArgs, 'line'),
|
|
generatedColumn: util.getArg(aArgs, 'column')
|
|
};
|
|
|
|
// Find the section containing the generated position we're trying to map
|
|
// to an original position.
|
|
var sectionIndex = binarySearch.search(needle, this._sections,
|
|
function(needle, section) {
|
|
var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
|
|
if (cmp) {
|
|
return cmp;
|
|
}
|
|
|
|
return (needle.generatedColumn -
|
|
section.generatedOffset.generatedColumn);
|
|
});
|
|
var section = this._sections[sectionIndex];
|
|
|
|
if (!section) {
|
|
return {
|
|
source: null,
|
|
line: null,
|
|
column: null,
|
|
name: null
|
|
};
|
|
}
|
|
|
|
return section.consumer.originalPositionFor({
|
|
line: needle.generatedLine -
|
|
(section.generatedOffset.generatedLine - 1),
|
|
column: needle.generatedColumn -
|
|
(section.generatedOffset.generatedLine === needle.generatedLine
|
|
? section.generatedOffset.generatedColumn - 1
|
|
: 0),
|
|
bias: aArgs.bias
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Return true if we have the source content for every source in the source
|
|
* map, false otherwise.
|
|
*/
|
|
IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
|
|
function IndexedSourceMapConsumer_hasContentsOfAllSources() {
|
|
return this._sections.every(function (s) {
|
|
return s.consumer.hasContentsOfAllSources();
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Returns the original source content. The only argument is the url of the
|
|
* original source file. Returns null if no original source content is
|
|
* available.
|
|
*/
|
|
IndexedSourceMapConsumer.prototype.sourceContentFor =
|
|
function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
|
|
for (var i = 0; i < this._sections.length; i++) {
|
|
var section = this._sections[i];
|
|
|
|
var content = section.consumer.sourceContentFor(aSource, true);
|
|
if (content) {
|
|
return content;
|
|
}
|
|
}
|
|
if (nullOnMissing) {
|
|
return null;
|
|
}
|
|
else {
|
|
throw new Error('"' + aSource + '" is not in the SourceMap.');
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Returns the generated line and column information for the original source,
|
|
* line, and column positions provided. The only argument is an object with
|
|
* the following properties:
|
|
*
|
|
* - source: The filename of the original source.
|
|
* - line: The line number in the original source.
|
|
* - column: The column number in the original source.
|
|
*
|
|
* and an object is returned with the following properties:
|
|
*
|
|
* - line: The line number in the generated source, or null.
|
|
* - column: The column number in the generated source, or null.
|
|
*/
|
|
IndexedSourceMapConsumer.prototype.generatedPositionFor =
|
|
function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
|
|
for (var i = 0; i < this._sections.length; i++) {
|
|
var section = this._sections[i];
|
|
|
|
// Only consider this section if the requested source is in the list of
|
|
// sources of the consumer.
|
|
if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
|
|
continue;
|
|
}
|
|
var generatedPosition = section.consumer.generatedPositionFor(aArgs);
|
|
if (generatedPosition) {
|
|
var ret = {
|
|
line: generatedPosition.line +
|
|
(section.generatedOffset.generatedLine - 1),
|
|
column: generatedPosition.column +
|
|
(section.generatedOffset.generatedLine === generatedPosition.line
|
|
? section.generatedOffset.generatedColumn - 1
|
|
: 0)
|
|
};
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
return {
|
|
line: null,
|
|
column: null
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Parse the mappings in a string in to a data structure which we can easily
|
|
* query (the ordered arrays in the `this.__generatedMappings` and
|
|
* `this.__originalMappings` properties).
|
|
*/
|
|
IndexedSourceMapConsumer.prototype._parseMappings =
|
|
function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
|
|
this.__generatedMappings = [];
|
|
this.__originalMappings = [];
|
|
for (var i = 0; i < this._sections.length; i++) {
|
|
var section = this._sections[i];
|
|
var sectionMappings = section.consumer._generatedMappings;
|
|
for (var j = 0; j < sectionMappings.length; j++) {
|
|
var mapping = sectionMappings[i];
|
|
|
|
var source = section.consumer._sources.at(mapping.source);
|
|
if (section.consumer.sourceRoot !== null) {
|
|
source = util.join(section.consumer.sourceRoot, source);
|
|
}
|
|
this._sources.add(source);
|
|
source = this._sources.indexOf(source);
|
|
|
|
var name = section.consumer._names.at(mapping.name);
|
|
this._names.add(name);
|
|
name = this._names.indexOf(name);
|
|
|
|
// The mappings coming from the consumer for the section have
|
|
// generated positions relative to the start of the section, so we
|
|
// need to offset them to be relative to the start of the concatenated
|
|
// generated file.
|
|
var adjustedMapping = {
|
|
source: source,
|
|
generatedLine: mapping.generatedLine +
|
|
(section.generatedOffset.generatedLine - 1),
|
|
generatedColumn: mapping.column +
|
|
(section.generatedOffset.generatedLine === mapping.generatedLine)
|
|
? section.generatedOffset.generatedColumn - 1
|
|
: 0,
|
|
originalLine: mapping.originalLine,
|
|
originalColumn: mapping.originalColumn,
|
|
name: name
|
|
};
|
|
|
|
this.__generatedMappings.push(adjustedMapping);
|
|
if (typeof adjustedMapping.originalLine === 'number') {
|
|
this.__originalMappings.push(adjustedMapping);
|
|
}
|
|
}
|
|
}
|
|
|
|
quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
|
|
quickSort(this.__originalMappings, util.compareByOriginalPositions);
|
|
};
|
|
|
|
exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 4 */
|
|
/***/ function(module, exports) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
exports.GREATEST_LOWER_BOUND = 1;
|
|
exports.LEAST_UPPER_BOUND = 2;
|
|
|
|
/**
|
|
* Recursive implementation of binary search.
|
|
*
|
|
* @param aLow Indices here and lower do not contain the needle.
|
|
* @param aHigh Indices here and higher do not contain the needle.
|
|
* @param aNeedle The element being searched for.
|
|
* @param aHaystack The non-empty array being searched.
|
|
* @param aCompare Function which takes two elements and returns -1, 0, or 1.
|
|
* @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
|
|
* 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
|
|
* closest element that is smaller than or greater than the one we are
|
|
* searching for, respectively, if the exact element cannot be found.
|
|
*/
|
|
function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
|
|
// This function terminates when one of the following is true:
|
|
//
|
|
// 1. We find the exact element we are looking for.
|
|
//
|
|
// 2. We did not find the exact element, but we can return the index of
|
|
// the next-closest element.
|
|
//
|
|
// 3. We did not find the exact element, and there is no next-closest
|
|
// element than the one we are searching for, so we return -1.
|
|
var mid = Math.floor((aHigh - aLow) / 2) + aLow;
|
|
var cmp = aCompare(aNeedle, aHaystack[mid], true);
|
|
if (cmp === 0) {
|
|
// Found the element we are looking for.
|
|
return mid;
|
|
}
|
|
else if (cmp > 0) {
|
|
// Our needle is greater than aHaystack[mid].
|
|
if (aHigh - mid > 1) {
|
|
// The element is in the upper half.
|
|
return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
|
|
}
|
|
|
|
// The exact needle element was not found in this haystack. Determine if
|
|
// we are in termination case (3) or (2) and return the appropriate thing.
|
|
if (aBias == exports.LEAST_UPPER_BOUND) {
|
|
return aHigh < aHaystack.length ? aHigh : -1;
|
|
} else {
|
|
return mid;
|
|
}
|
|
}
|
|
else {
|
|
// Our needle is less than aHaystack[mid].
|
|
if (mid - aLow > 1) {
|
|
// The element is in the lower half.
|
|
return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
|
|
}
|
|
|
|
// we are in termination case (3) or (2) and return the appropriate thing.
|
|
if (aBias == exports.LEAST_UPPER_BOUND) {
|
|
return mid;
|
|
} else {
|
|
return aLow < 0 ? -1 : aLow;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This is an implementation of binary search which will always try and return
|
|
* the index of the closest element if there is no exact hit. This is because
|
|
* mappings between original and generated line/col pairs are single points,
|
|
* and there is an implicit region between each of them, so a miss just means
|
|
* that you aren't on the very start of a region.
|
|
*
|
|
* @param aNeedle The element you are looking for.
|
|
* @param aHaystack The array that is being searched.
|
|
* @param aCompare A function which takes the needle and an element in the
|
|
* array and returns -1, 0, or 1 depending on whether the needle is less
|
|
* than, equal to, or greater than the element, respectively.
|
|
* @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
|
|
* 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
|
|
* closest element that is smaller than or greater than the one we are
|
|
* searching for, respectively, if the exact element cannot be found.
|
|
* Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
|
|
*/
|
|
exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
|
|
if (aHaystack.length === 0) {
|
|
return -1;
|
|
}
|
|
|
|
var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
|
|
aCompare, aBias || exports.GREATEST_LOWER_BOUND);
|
|
if (index < 0) {
|
|
return -1;
|
|
}
|
|
|
|
// We have found either the exact element, or the next-closest element than
|
|
// the one we are searching for. However, there may be more than one such
|
|
// element. Make sure we always return the smallest of these.
|
|
while (index - 1 >= 0) {
|
|
if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
|
|
break;
|
|
}
|
|
--index;
|
|
}
|
|
|
|
return index;
|
|
};
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 5 */
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
var util = __webpack_require__(2);
|
|
|
|
/**
|
|
* A data structure which is a combination of an array and a set. Adding a new
|
|
* member is O(1), testing for membership is O(1), and finding the index of an
|
|
* element is O(1). Removing elements from the set is not supported. Only
|
|
* strings are supported for membership.
|
|
*/
|
|
function ArraySet() {
|
|
this._array = [];
|
|
this._set = {};
|
|
}
|
|
|
|
/**
|
|
* Static method for creating ArraySet instances from an existing array.
|
|
*/
|
|
ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
|
|
var set = new ArraySet();
|
|
for (var i = 0, len = aArray.length; i < len; i++) {
|
|
set.add(aArray[i], aAllowDuplicates);
|
|
}
|
|
return set;
|
|
};
|
|
|
|
/**
|
|
* Return how many unique items are in this ArraySet. If duplicates have been
|
|
* added, than those do not count towards the size.
|
|
*
|
|
* @returns Number
|
|
*/
|
|
ArraySet.prototype.size = function ArraySet_size() {
|
|
return Object.getOwnPropertyNames(this._set).length;
|
|
};
|
|
|
|
/**
|
|
* Add the given string to this set.
|
|
*
|
|
* @param String aStr
|
|
*/
|
|
ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
|
|
var sStr = util.toSetString(aStr);
|
|
var isDuplicate = this._set.hasOwnProperty(sStr);
|
|
var idx = this._array.length;
|
|
if (!isDuplicate || aAllowDuplicates) {
|
|
this._array.push(aStr);
|
|
}
|
|
if (!isDuplicate) {
|
|
this._set[sStr] = idx;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Is the given string a member of this set?
|
|
*
|
|
* @param String aStr
|
|
*/
|
|
ArraySet.prototype.has = function ArraySet_has(aStr) {
|
|
var sStr = util.toSetString(aStr);
|
|
return this._set.hasOwnProperty(sStr);
|
|
};
|
|
|
|
/**
|
|
* What is the index of the given string in the array?
|
|
*
|
|
* @param String aStr
|
|
*/
|
|
ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
|
|
var sStr = util.toSetString(aStr);
|
|
if (this._set.hasOwnProperty(sStr)) {
|
|
return this._set[sStr];
|
|
}
|
|
throw new Error('"' + aStr + '" is not in the set.');
|
|
};
|
|
|
|
/**
|
|
* What is the element at the given index?
|
|
*
|
|
* @param Number aIdx
|
|
*/
|
|
ArraySet.prototype.at = function ArraySet_at(aIdx) {
|
|
if (aIdx >= 0 && aIdx < this._array.length) {
|
|
return this._array[aIdx];
|
|
}
|
|
throw new Error('No element indexed by ' + aIdx);
|
|
};
|
|
|
|
/**
|
|
* Returns the array representation of this set (which has the proper indices
|
|
* indicated by indexOf). Note that this is a copy of the internal array used
|
|
* for storing the members so that no one can mess with internal state.
|
|
*/
|
|
ArraySet.prototype.toArray = function ArraySet_toArray() {
|
|
return this._array.slice();
|
|
};
|
|
|
|
exports.ArraySet = ArraySet;
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 6 */
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*
|
|
* Based on the Base 64 VLQ implementation in Closure Compiler:
|
|
* https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
|
|
*
|
|
* Copyright 2011 The Closure Compiler Authors. All rights reserved.
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer in the documentation and/or other materials provided
|
|
* with the distribution.
|
|
* * Neither the name of Google Inc. nor the names of its
|
|
* contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
{
|
|
var base64 = __webpack_require__(7);
|
|
|
|
// A single base 64 digit can contain 6 bits of data. For the base 64 variable
|
|
// length quantities we use in the source map spec, the first bit is the sign,
|
|
// the next four bits are the actual value, and the 6th bit is the
|
|
// continuation bit. The continuation bit tells us whether there are more
|
|
// digits in this value following this digit.
|
|
//
|
|
// Continuation
|
|
// | Sign
|
|
// | |
|
|
// V V
|
|
// 101011
|
|
|
|
var VLQ_BASE_SHIFT = 5;
|
|
|
|
// binary: 100000
|
|
var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
|
|
|
|
// binary: 011111
|
|
var VLQ_BASE_MASK = VLQ_BASE - 1;
|
|
|
|
// binary: 100000
|
|
var VLQ_CONTINUATION_BIT = VLQ_BASE;
|
|
|
|
/**
|
|
* Converts from a two-complement value to a value where the sign bit is
|
|
* placed in the least significant bit. For example, as decimals:
|
|
* 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
|
|
* 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
|
|
*/
|
|
function toVLQSigned(aValue) {
|
|
return aValue < 0
|
|
? ((-aValue) << 1) + 1
|
|
: (aValue << 1) + 0;
|
|
}
|
|
|
|
/**
|
|
* Converts to a two-complement value from a value where the sign bit is
|
|
* placed in the least significant bit. For example, as decimals:
|
|
* 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
|
|
* 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
|
|
*/
|
|
function fromVLQSigned(aValue) {
|
|
var isNegative = (aValue & 1) === 1;
|
|
var shifted = aValue >> 1;
|
|
return isNegative
|
|
? -shifted
|
|
: shifted;
|
|
}
|
|
|
|
/**
|
|
* Returns the base 64 VLQ encoded value.
|
|
*/
|
|
exports.encode = function base64VLQ_encode(aValue) {
|
|
var encoded = "";
|
|
var digit;
|
|
|
|
var vlq = toVLQSigned(aValue);
|
|
|
|
do {
|
|
digit = vlq & VLQ_BASE_MASK;
|
|
vlq >>>= VLQ_BASE_SHIFT;
|
|
if (vlq > 0) {
|
|
// There are still more digits in this value, so we must make sure the
|
|
// continuation bit is marked.
|
|
digit |= VLQ_CONTINUATION_BIT;
|
|
}
|
|
encoded += base64.encode(digit);
|
|
} while (vlq > 0);
|
|
|
|
return encoded;
|
|
};
|
|
|
|
/**
|
|
* Decodes the next base 64 VLQ value from the given string and returns the
|
|
* value and the rest of the string via the out parameter.
|
|
*/
|
|
exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
|
|
var strLen = aStr.length;
|
|
var result = 0;
|
|
var shift = 0;
|
|
var continuation, digit;
|
|
|
|
do {
|
|
if (aIndex >= strLen) {
|
|
throw new Error("Expected more digits in base 64 VLQ value.");
|
|
}
|
|
|
|
digit = base64.decode(aStr.charCodeAt(aIndex++));
|
|
if (digit === -1) {
|
|
throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
|
|
}
|
|
|
|
continuation = !!(digit & VLQ_CONTINUATION_BIT);
|
|
digit &= VLQ_BASE_MASK;
|
|
result = result + (digit << shift);
|
|
shift += VLQ_BASE_SHIFT;
|
|
} while (continuation);
|
|
|
|
aOutParam.value = fromVLQSigned(result);
|
|
aOutParam.rest = aIndex;
|
|
};
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 7 */
|
|
/***/ function(module, exports) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
|
|
|
|
/**
|
|
* Encode an integer in the range of 0 to 63 to a single base 64 digit.
|
|
*/
|
|
exports.encode = function (number) {
|
|
if (0 <= number && number < intToCharMap.length) {
|
|
return intToCharMap[number];
|
|
}
|
|
throw new TypeError("Must be between 0 and 63: " + number);
|
|
};
|
|
|
|
/**
|
|
* Decode a single base 64 character code digit to an integer. Returns -1 on
|
|
* failure.
|
|
*/
|
|
exports.decode = function (charCode) {
|
|
var bigA = 65; // 'A'
|
|
var bigZ = 90; // 'Z'
|
|
|
|
var littleA = 97; // 'a'
|
|
var littleZ = 122; // 'z'
|
|
|
|
var zero = 48; // '0'
|
|
var nine = 57; // '9'
|
|
|
|
var plus = 43; // '+'
|
|
var slash = 47; // '/'
|
|
|
|
var littleOffset = 26;
|
|
var numberOffset = 52;
|
|
|
|
// 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
if (bigA <= charCode && charCode <= bigZ) {
|
|
return (charCode - bigA);
|
|
}
|
|
|
|
// 26 - 51: abcdefghijklmnopqrstuvwxyz
|
|
if (littleA <= charCode && charCode <= littleZ) {
|
|
return (charCode - littleA + littleOffset);
|
|
}
|
|
|
|
// 52 - 61: 0123456789
|
|
if (zero <= charCode && charCode <= nine) {
|
|
return (charCode - zero + numberOffset);
|
|
}
|
|
|
|
// 62: +
|
|
if (charCode == plus) {
|
|
return 62;
|
|
}
|
|
|
|
// 63: /
|
|
if (charCode == slash) {
|
|
return 63;
|
|
}
|
|
|
|
// Invalid base64 digit.
|
|
return -1;
|
|
};
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 8 */
|
|
/***/ function(module, exports) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
// It turns out that some (most?) JavaScript engines don't self-host
|
|
// `Array.prototype.sort`. This makes sense because C++ will likely remain
|
|
// faster than JS when doing raw CPU-intensive sorting. However, when using a
|
|
// custom comparator function, calling back and forth between the VM's C++ and
|
|
// JIT'd JS is rather slow *and* loses JIT type information, resulting in
|
|
// worse generated code for the comparator function than would be optimal. In
|
|
// fact, when sorting with a comparator, these costs outweigh the benefits of
|
|
// sorting in C++. By using our own JS-implemented Quick Sort (below), we get
|
|
// a ~3500ms mean speed-up in `bench/bench.html`.
|
|
|
|
/**
|
|
* Swap the elements indexed by `x` and `y` in the array `ary`.
|
|
*
|
|
* @param {Array} ary
|
|
* The array.
|
|
* @param {Number} x
|
|
* The index of the first item.
|
|
* @param {Number} y
|
|
* The index of the second item.
|
|
*/
|
|
function swap(ary, x, y) {
|
|
var temp = ary[x];
|
|
ary[x] = ary[y];
|
|
ary[y] = temp;
|
|
}
|
|
|
|
/**
|
|
* Returns a random integer within the range `low .. high` inclusive.
|
|
*
|
|
* @param {Number} low
|
|
* The lower bound on the range.
|
|
* @param {Number} high
|
|
* The upper bound on the range.
|
|
*/
|
|
function randomIntInRange(low, high) {
|
|
return Math.round(low + (Math.random() * (high - low)));
|
|
}
|
|
|
|
/**
|
|
* The Quick Sort algorithm.
|
|
*
|
|
* @param {Array} ary
|
|
* An array to sort.
|
|
* @param {function} comparator
|
|
* Function to use to compare two items.
|
|
* @param {Number} p
|
|
* Start index of the array
|
|
* @param {Number} r
|
|
* End index of the array
|
|
*/
|
|
function doQuickSort(ary, comparator, p, r) {
|
|
// If our lower bound is less than our upper bound, we (1) partition the
|
|
// array into two pieces and (2) recurse on each half. If it is not, this is
|
|
// the empty array and our base case.
|
|
|
|
if (p < r) {
|
|
// (1) Partitioning.
|
|
//
|
|
// The partitioning chooses a pivot between `p` and `r` and moves all
|
|
// elements that are less than or equal to the pivot to the before it, and
|
|
// all the elements that are greater than it after it. The effect is that
|
|
// once partition is done, the pivot is in the exact place it will be when
|
|
// the array is put in sorted order, and it will not need to be moved
|
|
// again. This runs in O(n) time.
|
|
|
|
// Always choose a random pivot so that an input array which is reverse
|
|
// sorted does not cause O(n^2) running time.
|
|
var pivotIndex = randomIntInRange(p, r);
|
|
var i = p - 1;
|
|
|
|
swap(ary, pivotIndex, r);
|
|
var pivot = ary[r];
|
|
|
|
// Immediately after `j` is incremented in this loop, the following hold
|
|
// true:
|
|
//
|
|
// * Every element in `ary[p .. i]` is less than or equal to the pivot.
|
|
//
|
|
// * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
|
|
for (var j = p; j < r; j++) {
|
|
if (comparator(ary[j], pivot) <= 0) {
|
|
i += 1;
|
|
swap(ary, i, j);
|
|
}
|
|
}
|
|
|
|
swap(ary, i + 1, j);
|
|
var q = i + 1;
|
|
|
|
// (2) Recurse on each half.
|
|
|
|
doQuickSort(ary, comparator, p, q - 1);
|
|
doQuickSort(ary, comparator, q + 1, r);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Sort the given array in-place with the given comparator function.
|
|
*
|
|
* @param {Array} ary
|
|
* An array to sort.
|
|
* @param {function} comparator
|
|
* Function to use to compare two items.
|
|
*/
|
|
exports.quickSort = function (ary, comparator) {
|
|
doQuickSort(ary, comparator, 0, ary.length - 1);
|
|
};
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 9 */
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
var base64VLQ = __webpack_require__(6);
|
|
var util = __webpack_require__(2);
|
|
var ArraySet = __webpack_require__(5).ArraySet;
|
|
var MappingList = __webpack_require__(10).MappingList;
|
|
|
|
/**
|
|
* An instance of the SourceMapGenerator represents a source map which is
|
|
* being built incrementally. You may pass an object with the following
|
|
* properties:
|
|
*
|
|
* - file: The filename of the generated source.
|
|
* - sourceRoot: A root for all relative URLs in this source map.
|
|
*/
|
|
function SourceMapGenerator(aArgs) {
|
|
if (!aArgs) {
|
|
aArgs = {};
|
|
}
|
|
this._file = util.getArg(aArgs, 'file', null);
|
|
this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
|
|
this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
|
|
this._sources = new ArraySet();
|
|
this._names = new ArraySet();
|
|
this._mappings = new MappingList();
|
|
this._sourcesContents = null;
|
|
}
|
|
|
|
SourceMapGenerator.prototype._version = 3;
|
|
|
|
/**
|
|
* Creates a new SourceMapGenerator based on a SourceMapConsumer
|
|
*
|
|
* @param aSourceMapConsumer The SourceMap.
|
|
*/
|
|
SourceMapGenerator.fromSourceMap =
|
|
function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
|
|
var sourceRoot = aSourceMapConsumer.sourceRoot;
|
|
var generator = new SourceMapGenerator({
|
|
file: aSourceMapConsumer.file,
|
|
sourceRoot: sourceRoot
|
|
});
|
|
aSourceMapConsumer.eachMapping(function (mapping) {
|
|
var newMapping = {
|
|
generated: {
|
|
line: mapping.generatedLine,
|
|
column: mapping.generatedColumn
|
|
}
|
|
};
|
|
|
|
if (mapping.source != null) {
|
|
newMapping.source = mapping.source;
|
|
if (sourceRoot != null) {
|
|
newMapping.source = util.relative(sourceRoot, newMapping.source);
|
|
}
|
|
|
|
newMapping.original = {
|
|
line: mapping.originalLine,
|
|
column: mapping.originalColumn
|
|
};
|
|
|
|
if (mapping.name != null) {
|
|
newMapping.name = mapping.name;
|
|
}
|
|
}
|
|
|
|
generator.addMapping(newMapping);
|
|
});
|
|
aSourceMapConsumer.sources.forEach(function (sourceFile) {
|
|
var content = aSourceMapConsumer.sourceContentFor(sourceFile);
|
|
if (content != null) {
|
|
generator.setSourceContent(sourceFile, content);
|
|
}
|
|
});
|
|
return generator;
|
|
};
|
|
|
|
/**
|
|
* Add a single mapping from original source line and column to the generated
|
|
* source's line and column for this source map being created. The mapping
|
|
* object should have the following properties:
|
|
*
|
|
* - generated: An object with the generated line and column positions.
|
|
* - original: An object with the original line and column positions.
|
|
* - source: The original source file (relative to the sourceRoot).
|
|
* - name: An optional original token name for this mapping.
|
|
*/
|
|
SourceMapGenerator.prototype.addMapping =
|
|
function SourceMapGenerator_addMapping(aArgs) {
|
|
var generated = util.getArg(aArgs, 'generated');
|
|
var original = util.getArg(aArgs, 'original', null);
|
|
var source = util.getArg(aArgs, 'source', null);
|
|
var name = util.getArg(aArgs, 'name', null);
|
|
|
|
if (!this._skipValidation) {
|
|
this._validateMapping(generated, original, source, name);
|
|
}
|
|
|
|
if (source != null && !this._sources.has(source)) {
|
|
this._sources.add(source);
|
|
}
|
|
|
|
if (name != null && !this._names.has(name)) {
|
|
this._names.add(name);
|
|
}
|
|
|
|
this._mappings.add({
|
|
generatedLine: generated.line,
|
|
generatedColumn: generated.column,
|
|
originalLine: original != null && original.line,
|
|
originalColumn: original != null && original.column,
|
|
source: source,
|
|
name: name
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Set the source content for a source file.
|
|
*/
|
|
SourceMapGenerator.prototype.setSourceContent =
|
|
function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
|
|
var source = aSourceFile;
|
|
if (this._sourceRoot != null) {
|
|
source = util.relative(this._sourceRoot, source);
|
|
}
|
|
|
|
if (aSourceContent != null) {
|
|
// Add the source content to the _sourcesContents map.
|
|
// Create a new _sourcesContents map if the property is null.
|
|
if (!this._sourcesContents) {
|
|
this._sourcesContents = {};
|
|
}
|
|
this._sourcesContents[util.toSetString(source)] = aSourceContent;
|
|
} else if (this._sourcesContents) {
|
|
// Remove the source file from the _sourcesContents map.
|
|
// If the _sourcesContents map is empty, set the property to null.
|
|
delete this._sourcesContents[util.toSetString(source)];
|
|
if (Object.keys(this._sourcesContents).length === 0) {
|
|
this._sourcesContents = null;
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Applies the mappings of a sub-source-map for a specific source file to the
|
|
* source map being generated. Each mapping to the supplied source file is
|
|
* rewritten using the supplied source map. Note: The resolution for the
|
|
* resulting mappings is the minimium of this map and the supplied map.
|
|
*
|
|
* @param aSourceMapConsumer The source map to be applied.
|
|
* @param aSourceFile Optional. The filename of the source file.
|
|
* If omitted, SourceMapConsumer's file property will be used.
|
|
* @param aSourceMapPath Optional. The dirname of the path to the source map
|
|
* to be applied. If relative, it is relative to the SourceMapConsumer.
|
|
* This parameter is needed when the two source maps aren't in the same
|
|
* directory, and the source map to be applied contains relative source
|
|
* paths. If so, those relative source paths need to be rewritten
|
|
* relative to the SourceMapGenerator.
|
|
*/
|
|
SourceMapGenerator.prototype.applySourceMap =
|
|
function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
|
|
var sourceFile = aSourceFile;
|
|
// If aSourceFile is omitted, we will use the file property of the SourceMap
|
|
if (aSourceFile == null) {
|
|
if (aSourceMapConsumer.file == null) {
|
|
throw new Error(
|
|
'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
|
|
'or the source map\'s "file" property. Both were omitted.'
|
|
);
|
|
}
|
|
sourceFile = aSourceMapConsumer.file;
|
|
}
|
|
var sourceRoot = this._sourceRoot;
|
|
// Make "sourceFile" relative if an absolute Url is passed.
|
|
if (sourceRoot != null) {
|
|
sourceFile = util.relative(sourceRoot, sourceFile);
|
|
}
|
|
// Applying the SourceMap can add and remove items from the sources and
|
|
// the names array.
|
|
var newSources = new ArraySet();
|
|
var newNames = new ArraySet();
|
|
|
|
// Find mappings for the "sourceFile"
|
|
this._mappings.unsortedForEach(function (mapping) {
|
|
if (mapping.source === sourceFile && mapping.originalLine != null) {
|
|
// Check if it can be mapped by the source map, then update the mapping.
|
|
var original = aSourceMapConsumer.originalPositionFor({
|
|
line: mapping.originalLine,
|
|
column: mapping.originalColumn
|
|
});
|
|
if (original.source != null) {
|
|
// Copy mapping
|
|
mapping.source = original.source;
|
|
if (aSourceMapPath != null) {
|
|
mapping.source = util.join(aSourceMapPath, mapping.source)
|
|
}
|
|
if (sourceRoot != null) {
|
|
mapping.source = util.relative(sourceRoot, mapping.source);
|
|
}
|
|
mapping.originalLine = original.line;
|
|
mapping.originalColumn = original.column;
|
|
if (original.name != null) {
|
|
mapping.name = original.name;
|
|
}
|
|
}
|
|
}
|
|
|
|
var source = mapping.source;
|
|
if (source != null && !newSources.has(source)) {
|
|
newSources.add(source);
|
|
}
|
|
|
|
var name = mapping.name;
|
|
if (name != null && !newNames.has(name)) {
|
|
newNames.add(name);
|
|
}
|
|
|
|
}, this);
|
|
this._sources = newSources;
|
|
this._names = newNames;
|
|
|
|
// Copy sourcesContents of applied map.
|
|
aSourceMapConsumer.sources.forEach(function (sourceFile) {
|
|
var content = aSourceMapConsumer.sourceContentFor(sourceFile);
|
|
if (content != null) {
|
|
if (aSourceMapPath != null) {
|
|
sourceFile = util.join(aSourceMapPath, sourceFile);
|
|
}
|
|
if (sourceRoot != null) {
|
|
sourceFile = util.relative(sourceRoot, sourceFile);
|
|
}
|
|
this.setSourceContent(sourceFile, content);
|
|
}
|
|
}, this);
|
|
};
|
|
|
|
/**
|
|
* A mapping can have one of the three levels of data:
|
|
*
|
|
* 1. Just the generated position.
|
|
* 2. The Generated position, original position, and original source.
|
|
* 3. Generated and original position, original source, as well as a name
|
|
* token.
|
|
*
|
|
* To maintain consistency, we validate that any new mapping being added falls
|
|
* in to one of these categories.
|
|
*/
|
|
SourceMapGenerator.prototype._validateMapping =
|
|
function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
|
|
aName) {
|
|
if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
|
|
&& aGenerated.line > 0 && aGenerated.column >= 0
|
|
&& !aOriginal && !aSource && !aName) {
|
|
// Case 1.
|
|
return;
|
|
}
|
|
else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
|
|
&& aOriginal && 'line' in aOriginal && 'column' in aOriginal
|
|
&& aGenerated.line > 0 && aGenerated.column >= 0
|
|
&& aOriginal.line > 0 && aOriginal.column >= 0
|
|
&& aSource) {
|
|
// Cases 2 and 3.
|
|
return;
|
|
}
|
|
else {
|
|
throw new Error('Invalid mapping: ' + JSON.stringify({
|
|
generated: aGenerated,
|
|
source: aSource,
|
|
original: aOriginal,
|
|
name: aName
|
|
}));
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Serialize the accumulated mappings in to the stream of base 64 VLQs
|
|
* specified by the source map format.
|
|
*/
|
|
SourceMapGenerator.prototype._serializeMappings =
|
|
function SourceMapGenerator_serializeMappings() {
|
|
var previousGeneratedColumn = 0;
|
|
var previousGeneratedLine = 1;
|
|
var previousOriginalColumn = 0;
|
|
var previousOriginalLine = 0;
|
|
var previousName = 0;
|
|
var previousSource = 0;
|
|
var result = '';
|
|
var mapping;
|
|
var nameIdx;
|
|
var sourceIdx;
|
|
|
|
var mappings = this._mappings.toArray();
|
|
for (var i = 0, len = mappings.length; i < len; i++) {
|
|
mapping = mappings[i];
|
|
|
|
if (mapping.generatedLine !== previousGeneratedLine) {
|
|
previousGeneratedColumn = 0;
|
|
while (mapping.generatedLine !== previousGeneratedLine) {
|
|
result += ';';
|
|
previousGeneratedLine++;
|
|
}
|
|
}
|
|
else {
|
|
if (i > 0) {
|
|
if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
|
|
continue;
|
|
}
|
|
result += ',';
|
|
}
|
|
}
|
|
|
|
result += base64VLQ.encode(mapping.generatedColumn
|
|
- previousGeneratedColumn);
|
|
previousGeneratedColumn = mapping.generatedColumn;
|
|
|
|
if (mapping.source != null) {
|
|
sourceIdx = this._sources.indexOf(mapping.source);
|
|
result += base64VLQ.encode(sourceIdx - previousSource);
|
|
previousSource = sourceIdx;
|
|
|
|
// lines are stored 0-based in SourceMap spec version 3
|
|
result += base64VLQ.encode(mapping.originalLine - 1
|
|
- previousOriginalLine);
|
|
previousOriginalLine = mapping.originalLine - 1;
|
|
|
|
result += base64VLQ.encode(mapping.originalColumn
|
|
- previousOriginalColumn);
|
|
previousOriginalColumn = mapping.originalColumn;
|
|
|
|
if (mapping.name != null) {
|
|
nameIdx = this._names.indexOf(mapping.name);
|
|
result += base64VLQ.encode(nameIdx - previousName);
|
|
previousName = nameIdx;
|
|
}
|
|
}
|
|
}
|
|
|
|
return result;
|
|
};
|
|
|
|
SourceMapGenerator.prototype._generateSourcesContent =
|
|
function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
|
|
return aSources.map(function (source) {
|
|
if (!this._sourcesContents) {
|
|
return null;
|
|
}
|
|
if (aSourceRoot != null) {
|
|
source = util.relative(aSourceRoot, source);
|
|
}
|
|
var key = util.toSetString(source);
|
|
return Object.prototype.hasOwnProperty.call(this._sourcesContents,
|
|
key)
|
|
? this._sourcesContents[key]
|
|
: null;
|
|
}, this);
|
|
};
|
|
|
|
/**
|
|
* Externalize the source map.
|
|
*/
|
|
SourceMapGenerator.prototype.toJSON =
|
|
function SourceMapGenerator_toJSON() {
|
|
var map = {
|
|
version: this._version,
|
|
sources: this._sources.toArray(),
|
|
names: this._names.toArray(),
|
|
mappings: this._serializeMappings()
|
|
};
|
|
if (this._file != null) {
|
|
map.file = this._file;
|
|
}
|
|
if (this._sourceRoot != null) {
|
|
map.sourceRoot = this._sourceRoot;
|
|
}
|
|
if (this._sourcesContents) {
|
|
map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
|
|
}
|
|
|
|
return map;
|
|
};
|
|
|
|
/**
|
|
* Render the source map being generated to a string.
|
|
*/
|
|
SourceMapGenerator.prototype.toString =
|
|
function SourceMapGenerator_toString() {
|
|
return JSON.stringify(this.toJSON());
|
|
};
|
|
|
|
exports.SourceMapGenerator = SourceMapGenerator;
|
|
}
|
|
|
|
|
|
/***/ },
|
|
/* 10 */
|
|
/***/ function(module, exports, __webpack_require__) {
|
|
|
|
/* -*- Mode: js; js-indent-level: 2; -*- */
|
|
/*
|
|
* Copyright 2014 Mozilla Foundation and contributors
|
|
* Licensed under the New BSD license. See LICENSE or:
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
*/
|
|
{
|
|
var util = __webpack_require__(2);
|
|
|
|
/**
|
|
* Determine whether mappingB is after mappingA with respect to generated
|
|
* position.
|
|
*/
|
|
function generatedPositionAfter(mappingA, mappingB) {
|
|
// Optimized for most common case
|
|
var lineA = mappingA.generatedLine;
|
|
var lineB = mappingB.generatedLine;
|
|
var columnA = mappingA.generatedColumn;
|
|
var columnB = mappingB.generatedColumn;
|
|
return lineB > lineA || lineB == lineA && columnB >= columnA ||
|
|
util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
|
|
}
|
|
|
|
/**
|
|
* A data structure to provide a sorted view of accumulated mappings in a
|
|
* performance conscious manner. It trades a neglibable overhead in general
|
|
* case for a large speedup in case of mappings being added in order.
|
|
*/
|
|
function MappingList() {
|
|
this._array = [];
|
|
this._sorted = true;
|
|
// Serves as infimum
|
|
this._last = {generatedLine: -1, generatedColumn: 0};
|
|
}
|
|
|
|
/**
|
|
* Iterate through internal items. This method takes the same arguments that
|
|
* `Array.prototype.forEach` takes.
|
|
*
|
|
* NOTE: The order of the mappings is NOT guaranteed.
|
|
*/
|
|
MappingList.prototype.unsortedForEach =
|
|
function MappingList_forEach(aCallback, aThisArg) {
|
|
this._array.forEach(aCallback, aThisArg);
|
|
};
|
|
|
|
/**
|
|
* Add the given source mapping.
|
|
*
|
|
* @param Object aMapping
|
|
*/
|
|
MappingList.prototype.add = function MappingList_add(aMapping) {
|
|
if (generatedPositionAfter(this._last, aMapping)) {
|
|
this._last = aMapping;
|
|
this._array.push(aMapping);
|
|
} else {
|
|
this._sorted = false;
|
|
this._array.push(aMapping);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Returns the flat, sorted array of mappings. The mappings are sorted by
|
|
* generated position.
|
|
*
|
|
* WARNING: This method returns internal data without copying, for
|
|
* performance. The return value must NOT be mutated, and should be treated as
|
|
* an immutable borrow. If you want to take ownership, you must make your own
|
|
* copy.
|
|
*/
|
|
MappingList.prototype.toArray = function MappingList_toArray() {
|
|
if (!this._sorted) {
|
|
this._array.sort(util.compareByGeneratedPositionsInflated);
|
|
this._sorted = true;
|
|
}
|
|
return this._array;
|
|
};
|
|
|
|
exports.MappingList = MappingList;
|
|
}
|
|
|
|
|
|
/***/ }
|
|
/******/ ]);
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgZjg0ZTU2YjRjYmQ3YWQ2NzQ5MjAiLCJ3ZWJwYWNrOi8vLy4vdGVzdC90ZXN0LWRvZy1mb29kaW5nLmpzIiwid2VicGFjazovLy8uL3Rlc3QvdXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYXJyYXktc2V0LmpzIiwid2VicGFjazovLy8uL2xpYi9iYXNlNjQtdmxxLmpzIiwid2VicGFjazovLy8uL2xpYi9iYXNlNjQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3F1aWNrLXNvcnQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzIiwid2VicGFjazovLy8uL2xpYi9tYXBwaW5nLWxpc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSzs7QUFFTDtBQUNBO0FBQ0Esa0JBQWlCLHFCQUFxQjtBQUN0QyxtQkFBa0I7QUFDbEIsTUFBSzs7QUFFTDtBQUNBO0FBQ0Esa0JBQWlCLHFCQUFxQjtBQUN0QyxtQkFBa0I7QUFDbEIsTUFBSzs7QUFFTDtBQUNBO0FBQ0Esa0JBQWlCLHFCQUFxQjtBQUN0QyxtQkFBa0I7QUFDbEIsTUFBSzs7QUFFTDtBQUNBO0FBQ0Esa0JBQWlCLHFCQUFxQjtBQUN0QyxtQkFBa0I7QUFDbEIsTUFBSzs7QUFFTDtBQUNBO0FBQ0Esa0JBQWlCLHNCQUFzQjtBQUN2QyxtQkFBa0I7QUFDbEIsTUFBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNwR0EsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCO0FBQzNCLDRCQUEyQjtBQUMzQixxREFBb0QsZ0JBQWdCO0FBQ3BFLHFEQUFvRCxhQUFhO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUFzRDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXdDO0FBQ3hDLGlDQUFnQztBQUNoQyxpQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUFzQztBQUN0Qyw4QkFBNkI7QUFDN0IsaUJBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF3QztBQUN4QyxpQ0FBZ0M7QUFDaEMsaUJBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBc0M7QUFDdEMsOEJBQTZCO0FBQzdCLGlCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQWtDO0FBQ2xDLDJCQUEwQjtBQUMxQixXQUFVO0FBQ1YsaUNBQWdDO0FBQ2hDLHdCQUF1QjtBQUN2QixXQUFVO0FBQ1Y7QUFDQTtBQUNBLHVEQUFzRDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFrQztBQUNsQywyQkFBMEI7QUFDMUIsV0FBVTtBQUNWLGlDQUFnQztBQUNoQyx3QkFBdUI7QUFDdkIsV0FBVTtBQUNWO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDRCQUE0QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsOEJBQThCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQixxQ0FBcUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ3ZTQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaURBQWdELFFBQVE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDaFhBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5REFBd0Q7QUFDeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxzQkFBcUI7QUFDckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWE7O0FBRWI7QUFDQTtBQUNBLFVBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQTZCLE1BQU07QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBd0Q7QUFDeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5REFBd0QsWUFBWTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQSxJQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLGNBQWM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUF5Qix3Q0FBd0M7QUFDakU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFpRCxtQkFBbUIsRUFBRTtBQUN0RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBK0IsTUFBTTtBQUNyQztBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF3RDtBQUN4RDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBcUIsMkJBQTJCO0FBQ2hELHdCQUF1QiwrQ0FBK0M7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQiwyQkFBMkI7QUFDaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXFCLDJCQUEyQjtBQUNoRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBcUIsMkJBQTJCO0FBQ2hEO0FBQ0E7QUFDQSx3QkFBdUIsNEJBQTRCO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDempDQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7OztBQy9HQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBd0MsU0FBUztBQUNqRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQ3ZHQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBMkQ7QUFDM0QscUJBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDNUlBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBa0I7QUFDbEIsbUJBQWtCOztBQUVsQixzQkFBcUI7QUFDckIsdUJBQXNCOztBQUV0QixtQkFBa0I7QUFDbEIsbUJBQWtCOztBQUVsQixtQkFBa0I7QUFDbEIsb0JBQW1COztBQUVuQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDbkVBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWEsTUFBTTtBQUNuQjtBQUNBLGNBQWEsT0FBTztBQUNwQjtBQUNBLGNBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFhLE9BQU87QUFDcEI7QUFDQSxjQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFhLE1BQU07QUFDbkI7QUFDQSxjQUFhLFNBQVM7QUFDdEI7QUFDQSxjQUFhLE9BQU87QUFDcEI7QUFDQSxjQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFhLE1BQU07QUFDbkI7QUFDQSxjQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDbEhBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2Q0FBNEMsU0FBUztBQUNyRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQzNZQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFrQjtBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiJ0ZXN0X2RvZ19mb29kaW5nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGlkOiBtb2R1bGVJZCxcbiBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL2Jvb3RzdHJhcCBmODRlNTZiNGNiZDdhZDY3NDkyMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbntcbiAgdmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuICB2YXIgU291cmNlTWFwQ29uc3VtZXIgPSByZXF1aXJlKCcuLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuICB2YXIgU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xuXG4gIGV4cG9ydHNbJ3Rlc3QgZWF0aW5nIG91ciBvd24gZG9nIGZvb2QnXSA9IGZ1bmN0aW9uIChhc3NlcnQpIHtcbiAgICB2YXIgc21nID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcih7XG4gICAgICBmaWxlOiAndGVzdGluZy5qcycsXG4gICAgICBzb3VyY2VSb290OiAnL3d1L3RhbmcnXG4gICAgfSk7XG5cbiAgICBzbWcuYWRkTWFwcGluZyh7XG4gICAgICBzb3VyY2U6ICdnemEuY29mZmVlJyxcbiAgICAgIG9yaWdpbmFsOiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9LFxuICAgICAgZ2VuZXJhdGVkOiB7IGxpbmU6IDIsIGNvbHVtbjogMiB9XG4gICAgfSk7XG5cbiAgICBzbWcuYWRkTWFwcGluZyh7XG4gICAgICBzb3VyY2U6ICdnemEuY29mZmVlJyxcbiAgICAgIG9yaWdpbmFsOiB7IGxpbmU6IDIsIGNvbHVtbjogMCB9LFxuICAgICAgZ2VuZXJhdGVkOiB7IGxpbmU6IDMsIGNvbHVtbjogMiB9XG4gICAgfSk7XG5cbiAgICBzbWcuYWRkTWFwcGluZyh7XG4gICAgICBzb3VyY2U6ICdnemEuY29mZmVlJyxcbiAgICAgIG9yaWdpbmFsOiB7IGxpbmU6IDMsIGNvbHVtbjogMCB9LFxuICAgICAgZ2VuZXJhdGVkOiB7IGxpbmU6IDQsIGNvbHVtbjogMiB9XG4gICAgfSk7XG5cbiAgICBzbWcuYWRkTWFwcGluZyh7XG4gICAgICBzb3VyY2U6ICdnemEuY29mZmVlJyxcbiAgICAgIG9yaWdpbmFsOiB7IGxpbmU6IDQsIGNvbHVtbjogMCB9LFxuICAgICAgZ2VuZXJhdGVkOiB7IGxpbmU6IDUsIGNvbHVtbjogMiB9XG4gICAgfSk7XG5cbiAgICBzbWcuYWRkTWFwcGluZyh7XG4gICAgICBzb3VyY2U6ICdnemEuY29mZmVlJyxcbiAgICAgIG9yaWdpbmFsOiB7IGxpbmU6IDUsIGNvbHVtbjogMTAgfSxcbiAgICAgIGdlbmVyYXRlZDogeyBsaW5lOiA2LCBjb2x1bW46IDEyIH1cbiAgICB9KTtcblxuICAgIHZhciBzbWMgPSBuZXcgU291cmNlTWFwQ29uc3VtZXIoc21nLnRvU3RyaW5nKCkpO1xuXG4gICAgLy8gRXhhY3RcbiAgICB1dGlsLmFzc2VydE1hcHBpbmcoMiwgMiwgJy93dS90YW5nL2d6YS5jb2ZmZWUnLCAxLCAwLCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDMsIDIsICcvd3UvdGFuZy9nemEuY29mZmVlJywgMiwgMCwgbnVsbCwgbnVsbCwgc21jLCBhc3NlcnQpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg0LCAyLCAnL3d1L3RhbmcvZ3phLmNvZmZlZScsIDMsIDAsIG51bGwsIG51bGwsIHNtYywgYXNzZXJ0KTtcbiAgICB1dGlsLmFzc2VydE1hcHBpbmcoNSwgMiwgJy93dS90YW5nL2d6YS5jb2ZmZWUnLCA0LCAwLCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDYsIDEyLCAnL3d1L3RhbmcvZ3phLmNvZmZlZScsIDUsIDEwLCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCk7XG5cbiAgICAvLyBGdXp6eVxuXG4gICAgLy8gR2VuZXJhdGVkIHRvIG9yaWdpbmFsIHdpdGggZGVmYXVsdCAoZ2xiKSBiaWFzLlxuICAgIHV0aWwuYXNzZXJ0TWFwcGluZygyLCAwLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDIsIDksICcvd3UvdGFuZy9nemEuY29mZmVlJywgMSwgMCwgbnVsbCwgbnVsbCwgc21jLCBhc3NlcnQsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZygzLCAwLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDMsIDksICcvd3UvdGFuZy9nemEuY29mZmVlJywgMiwgMCwgbnVsbCwgbnVsbCwgc21jLCBhc3NlcnQsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg0LCAwLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDQsIDksICcvd3UvdGFuZy9nemEuY29mZmVlJywgMywgMCwgbnVsbCwgbnVsbCwgc21jLCBhc3NlcnQsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg1LCAwLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDUsIDksICcvd3UvdGFuZy9nemEuY29mZmVlJywgNCwgMCwgbnVsbCwgbnVsbCwgc21jLCBhc3NlcnQsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg2LCAwLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDYsIDksIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIHNtYywgYXNzZXJ0LCB0cnVlKTtcbiAgICB1dGlsLmFzc2VydE1hcHBpbmcoNiwgMTMsICcvd3UvdGFuZy9nemEuY29mZmVlJywgNSwgMTAsIG51bGwsIG51bGwsIHNtYywgYXNzZXJ0LCB0cnVlKTtcblxuICAgIC8vIEdlbmVyYXRlZCB0byBvcmlnaW5hbCB3aXRoIGx1YiBiaWFzLlxuICAgIHV0aWwuYXNzZXJ0TWFwcGluZygyLCAwLCAnL3d1L3RhbmcvZ3phLmNvZmZlZScsIDEsIDAsIG51bGwsIFNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5ELCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDIsIDksIG51bGwsIG51bGwsIG51bGwsIG51bGwsIFNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5ELCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDMsIDAsICcvd3UvdGFuZy9nemEuY29mZmVlJywgMiwgMCwgbnVsbCwgU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQsIHNtYywgYXNzZXJ0LCB0cnVlKTtcbiAgICB1dGlsLmFzc2VydE1hcHBpbmcoMywgOSwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQsIHNtYywgYXNzZXJ0LCB0cnVlKTtcbiAgICB1dGlsLmFzc2VydE1hcHBpbmcoNCwgMCwgJy93dS90YW5nL2d6YS5jb2ZmZWUnLCAzLCAwLCBudWxsLCBTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCwgc21jLCBhc3NlcnQsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg0LCA5LCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCwgc21jLCBhc3NlcnQsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg1LCAwLCAnL3d1L3RhbmcvZ3phLmNvZmZlZScsIDQsIDAsIG51bGwsIFNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5ELCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDUsIDksIG51bGwsIG51bGwsIG51bGwsIG51bGwsIFNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5ELCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDYsIDAsICcvd3UvdGFuZy9nemEuY29mZmVlJywgNSwgMTAsIG51bGwsIFNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5ELCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDYsIDksICcvd3UvdGFuZy9nemEuY29mZmVlJywgNSwgMTAsIG51bGwsIFNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5ELCBzbWMsIGFzc2VydCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDYsIDEzLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCwgc21jLCBhc3NlcnQsIHRydWUpO1xuXG4gICAgLy8gT3JpZ2luYWwgdG8gZ2VuZXJhdGVkIHdpdGggZGVmYXVsdCAoZ2xiKSBiaWFzXG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDIsIDIsICcvd3UvdGFuZy9nemEuY29mZmVlJywgMSwgMSwgbnVsbCwgbnVsbCwgc21jLCBhc3NlcnQsIG51bGwsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZygzLCAyLCAnL3d1L3RhbmcvZ3phLmNvZmZlZScsIDIsIDMsIG51bGwsIG51bGwsIHNtYywgYXNzZXJ0LCBudWxsLCB0cnVlKTtcbiAgICB1dGlsLmFzc2VydE1hcHBpbmcoNCwgMiwgJy93dS90YW5nL2d6YS5jb2ZmZWUnLCAzLCA2LCBudWxsLCBudWxsLCBzbWMsIGFzc2VydCwgbnVsbCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDUsIDIsICcvd3UvdGFuZy9nemEuY29mZmVlJywgNCwgOSwgbnVsbCwgbnVsbCwgc21jLCBhc3NlcnQsIG51bGwsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg1LCAyLCAnL3d1L3RhbmcvZ3phLmNvZmZlZScsIDUsIDksIG51bGwsIG51bGwsIHNtYywgYXNzZXJ0LCBudWxsLCB0cnVlKTtcbiAgICB1dGlsLmFzc2VydE1hcHBpbmcoNiwgMTIsICcvd3UvdGFuZy9nemEuY29mZmVlJywgNiwgMTksIG51bGwsIG51bGwsIHNtYywgYXNzZXJ0LCBudWxsLCB0cnVlKTtcblxuICAgIC8vIE9yaWdpbmFsIHRvIGdlbmVyYXRlZCB3aXRoIGx1YiBiaWFzLlxuICAgIHV0aWwuYXNzZXJ0TWFwcGluZygzLCAyLCAnL3d1L3RhbmcvZ3phLmNvZmZlZScsIDEsIDEsIG51bGwsIFNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5ELCBzbWMsIGFzc2VydCwgbnVsbCwgdHJ1ZSk7XG4gICAgdXRpbC5hc3NlcnRNYXBwaW5nKDQsIDIsICcvd3UvdGFuZy9nemEuY29mZmVlJywgMiwgMywgbnVsbCwgU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQsIHNtYywgYXNzZXJ0LCBudWxsLCB0cnVlKTtcbiAgICB1dGlsLmFzc2VydE1hcHBpbmcoNSwgMiwgJy93dS90YW5nL2d6YS5jb2ZmZWUnLCAzLCA2LCBudWxsLCBTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCwgc21jLCBhc3NlcnQsIG51bGwsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg2LCAxMiwgJy93dS90YW5nL2d6YS5jb2ZmZWUnLCA0LCA5LCBudWxsLCBTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCwgc21jLCBhc3NlcnQsIG51bGwsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyg2LCAxMiwgJy93dS90YW5nL2d6YS5jb2ZmZWUnLCA1LCA5LCBudWxsLCBTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCwgc21jLCBhc3NlcnQsIG51bGwsIHRydWUpO1xuICAgIHV0aWwuYXNzZXJ0TWFwcGluZyhudWxsLCBudWxsLCAnL3d1L3RhbmcvZ3phLmNvZmZlZScsIDYsIDE5LCBudWxsLCBTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCwgc21jLCBhc3NlcnQsIG51bGwsIHRydWUpO1xuICB9O1xufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL3Rlc3QvdGVzdC1kb2ctZm9vZGluZy5qc1xuICoqIG1vZHVsZSBpZCA9IDBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbntcbiAgdmFyIHV0aWwgPSByZXF1aXJlKCcuLi9saWIvdXRpbCcpO1xuXG4gIC8vIFRoaXMgaXMgYSB0ZXN0IG1hcHBpbmcgd2hpY2ggbWFwcyBmdW5jdGlvbnMgZnJvbSB0d28gZGlmZmVyZW50IGZpbGVzXG4gIC8vIChvbmUuanMgYW5kIHR3by5qcykgdG8gYSBtaW5pZmllZCBnZW5lcmF0ZWQgc291cmNlLlxuICAvL1xuICAvLyBIZXJlIGlzIG9uZS5qczpcbiAgLy9cbiAgLy8gICBPTkUuZm9vID0gZnVuY3Rpb24gKGJhcikge1xuICAvLyAgICAgcmV0dXJuIGJheihiYXIpO1xuICAvLyAgIH07XG4gIC8vXG4gIC8vIEhlcmUgaXMgdHdvLmpzOlxuICAvL1xuICAvLyAgIFRXTy5pbmMgPSBmdW5jdGlvbiAobikge1xuICAvLyAgICAgcmV0dXJuIG4gKyAxO1xuICAvLyAgIH07XG4gIC8vXG4gIC8vIEFuZCBoZXJlIGlzIHRoZSBnZW5lcmF0ZWQgY29kZSAobWluLmpzKTpcbiAgLy9cbiAgLy8gICBPTkUuZm9vPWZ1bmN0aW9uKGEpe3JldHVybiBiYXooYSk7fTtcbiAgLy8gICBUV08uaW5jPWZ1bmN0aW9uKGEpe3JldHVybiBhKzE7fTtcbiAgZXhwb3J0cy50ZXN0R2VuZXJhdGVkQ29kZSA9IFwiIE9ORS5mb289ZnVuY3Rpb24oYSl7cmV0dXJuIGJheihhKTt9O1xcblwiK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgVFdPLmluYz1mdW5jdGlvbihhKXtyZXR1cm4gYSsxO307XCI7XG4gIGV4cG9ydHMudGVzdE1hcCA9IHtcbiAgICB2ZXJzaW9uOiAzLFxuICAgIGZpbGU6ICdtaW4uanMnLFxuICAgIG5hbWVzOiBbJ2JhcicsICdiYXonLCAnbiddLFxuICAgIHNvdXJjZXM6IFsnb25lLmpzJywgJ3R3by5qcyddLFxuICAgIHNvdXJjZVJvb3Q6ICcvdGhlL3Jvb3QnLFxuICAgIG1hcHBpbmdzOiAnQ0FBQyxJQUFJLElBQU0sU0FBVUEsR0FDbEIsT0FBT0MsSUFBSUQ7Q0NEYixJQUFJLElBQU0sU0FBVUUsR0FDbEIsT0FBT0EnXG4gIH07XG4gIGV4cG9ydHMudGVzdE1hcE5vU291cmNlUm9vdCA9IHtcbiAgICB2ZXJzaW9uOiAzLFxuICAgIGZpbGU6ICdtaW4uanMnLFxuICAgIG5hbWVzOiBbJ2JhcicsICdiYXonLCAnbiddLFxuICAgIHNvdXJjZXM6IFsnb25lLmpzJywgJ3R3by5qcyddLFxuICAgIG1hcHBpbmdzOiAnQ0FBQyxJQUFJLElBQU0sU0FBVUEsR0FDbEIsT0FBT0MsSUFBSUQ7Q0NEYixJQUFJLElBQU0sU0FBVUUsR0FDbEIsT0FBT0EnXG4gIH07XG4gIGV4cG9ydHMudGVzdE1hcEVtcHR5U291cmNlUm9vdCA9IHtcbiAgICB2ZXJzaW9uOiAzLFxuICAgIGZpbGU6ICdtaW4uanMnLFxuICAgIG5hbWVzOiBbJ2JhcicsICdiYXonLCAnbiddLFxuICAgIHNvdXJjZXM6IFsnb25lLmpzJywgJ3R3by5qcyddLFxuICAgIHNvdXJjZVJvb3Q6ICcnLFxuICAgIG1hcHBpbmdzOiAnQ0FBQyxJQUFJLElBQU0sU0FBVUEsR0FDbEIsT0FBT0MsSUFBSUQ7Q0NEYixJQUFJLElBQU0sU0FBVUUsR0FDbEIsT0FBT0EnXG4gIH07XG4gIC8vIFRoaXMgbWFwcGluZyBpcyBpZGVudGljYWwgdG8gYWJvdmUsIGJ1dCB1c2VzIHRoZSBpbmRleGVkIGZvcm1hdCBpbnN0ZWFkLlxuICBleHBvcnRzLmluZGV4ZWRUZXN0TWFwID0ge1xuICAgIHZlcnNpb246IDMsXG4gICAgZmlsZTogJ21pbi5qcycsXG4gICAgc2VjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgb2Zmc2V0OiB7XG4gICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICBjb2x1bW46IDBcbiAgICAgICAgfSxcbiAgICAgICAgbWFwOiB7XG4gICAgICAgICAgdmVyc2lvbjogMyxcbiAgICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgICBcIm9uZS5qc1wiXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzb3VyY2VzQ29udGVudDogW1xuICAgICAgICAgICAgJyBPTkUuZm9vID0gZnVuY3Rpb24gKGJhcikge1xcbicgK1xuICAgICAgICAgICAgJyAgIHJldHVybiBiYXooYmFyKTtcXG4nICtcbiAgICAgICAgICAgICcgfTsnLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbmFtZXM6IFtcbiAgICAgICAgICAgIFwiYmFyXCIsXG4gICAgICAgICAgICBcImJhelwiXG4gICAgICAgICAgXSxcbiAgICAgICAgICBtYXBwaW5nczogXCJDQUFDLElBQUksSUFBTSxTQUFVQSxHQUNsQixPQUFPQyxJQUFJRFwiLFxuICAgICAgICAgIGZpbGU6IFwibWluLmpzXCIsXG4gICAgICAgICAgc291cmNlUm9vdDogXCIvdGhlL3Jvb3RcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvZmZzZXQ6IHtcbiAgICAgICAgICBsaW5lOiAxLFxuICAgICAgICAgIGNvbHVtbjogMFxuICAgICAgICB9LFxuICAgICAgICBtYXA6IHtcbiAgICAgICAgICB2ZXJzaW9uOiAzLFxuICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgIFwidHdvLmpzXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHNvdXJjZXNDb250ZW50OiBbXG4gICAgICAgICAgICAnIFRXTy5pbmMgPSBmdW5jdGlvbiAobikge1xcbicgK1xuICAgICAgICAgICAgJyAgIHJldHVybiBuICsgMTtcXG4nICtcbiAgICAgICAgICAgICcgfTsnXG4gICAgICAgICAgXSxcbiAgICAgICAgICBuYW1lczogW1xuICAgICAgICAgICAgXCJuXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1hcHBpbmdzOiBcIkNBQUMsSUFBSSxJQUFNLFNBQVVBLEdBQ2xCLE9BQU9BXCIsXG4gICAgICAgICAgZmlsZTogXCJtaW4uanNcIixcbiAgICAgICAgICBzb3VyY2VSb290OiBcIi90aGUvcm9vdFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGV4cG9ydHMuaW5kZXhlZFRlc3RNYXBEaWZmZXJlbnRTb3VyY2VSb290cyA9IHtcbiAgICB2ZXJzaW9uOiAzLFxuICAgIGZpbGU6ICdtaW4uanMnLFxuICAgIHNlY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG9mZnNldDoge1xuICAgICAgICAgIGxpbmU6IDAsXG4gICAgICAgICAgY29sdW1uOiAwXG4gICAgICAgIH0sXG4gICAgICAgIG1hcDoge1xuICAgICAgICAgIHZlcnNpb246IDMsXG4gICAgICAgICAgc291cmNlczogW1xuICAgICAgICAgICAgXCJvbmUuanNcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgc291cmNlc0NvbnRlbnQ6IFtcbiAgICAgICAgICAgICcgT05FLmZvbyA9IGZ1bmN0aW9uIChiYXIpIHtcXG4nICtcbiAgICAgICAgICAgICcgICByZXR1cm4gYmF6KGJhcik7XFxuJyArXG4gICAgICAgICAgICAnIH07JyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG5hbWVzOiBbXG4gICAgICAgICAgICBcImJhclwiLFxuICAgICAgICAgICAgXCJiYXpcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgbWFwcGluZ3M6IFwiQ0FBQyxJQUFJLElBQU0sU0FBVUEsR0FDbEIsT0FBT0MsSUFBSURcIixcbiAgICAgICAgICBmaWxlOiBcIm1pbi5qc1wiLFxuICAgICAgICAgIHNvdXJjZVJvb3Q6IFwiL3RoZS9yb290XCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb2Zmc2V0OiB7XG4gICAgICAgICAgbGluZTogMSxcbiAgICAgICAgICBjb2x1bW46IDBcbiAgICAgICAgfSxcbiAgICAgICAgbWFwOiB7XG4gICAgICAgICAgdmVyc2lvbjogMyxcbiAgICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgICBcInR3by5qc1wiXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzb3VyY2VzQ29udGVudDogW1xuICAgICAgICAgICAgJyBUV08uaW5jID0gZnVuY3Rpb24gKG4pIHtcXG4nICtcbiAgICAgICAgICAgICcgICByZXR1cm4gbiArIDE7XFxuJyArXG4gICAgICAgICAgICAnIH07J1xuICAgICAgICAgIF0sXG4gICAgICAgICAgbmFtZXM6IFtcbiAgICAgICAgICAgIFwiblwiXG4gICAgICAgICAgXSxcbiAgICAgICAgICBtYXBwaW5nczogXCJDQUFDLElBQUksSUFBTSxTQUFVQSxHQUNsQixPQUFPQVwiLFxuICAgICAgICAgIGZpbGU6IFwibWluLmpzXCIsXG4gICAgICAgICAgc291cmNlUm9vdDogXCIvZGlmZmVyZW50L3Jvb3RcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuICBleHBvcnRzLnRlc3RNYXBXaXRoU291cmNlc0NvbnRlbnQgPSB7XG4gICAgdmVyc2lvbjogMyxcbiAgICBmaWxlOiAnbWluLmpzJyxcbiAgICBuYW1lczogWydiYXInLCAnYmF6JywgJ24nXSxcbiAgICBzb3VyY2VzOiBbJ29uZS5qcycsICd0d28uanMnXSxcbiAgICBzb3VyY2VzQ29udGVudDogW1xuICAgICAgJyBPTkUuZm9vID0gZnVuY3Rpb24gKGJhcikge1xcbicgK1xuICAgICAgJyAgIHJldHVybiBiYXooYmFyKTtcXG4nICtcbiAgICAgICcgfTsnLFxuICAgICAgJyBUV08uaW5jID0gZnVuY3Rpb24gKG4pIHtcXG4nICtcbiAgICAgICcgICByZXR1cm4gbiArIDE7XFxuJyArXG4gICAgICAnIH07J1xuICAgIF0sXG4gICAgc291cmNlUm9vdDogJy90aGUvcm9vdCcsXG4gICAgbWFwcGluZ3M6ICdDQUFDLElBQUksSUFBTSxTQUFVQSxHQUNsQixPQUFPQyxJQUFJRDtDQ0RiLElBQUksSUFBTSxTQUFVRSxHQUNsQixPQUFPQSdcbiAgfTtcbiAgZXhwb3J0cy50ZXN0TWFwUmVsYXRpdmVTb3VyY2VzID0ge1xuICAgIHZlcnNpb246IDMsXG4gICAgZmlsZTogJ21pbi5qcycsXG4gICAgbmFtZXM6IFsnYmFyJywgJ2JheicsICduJ10sXG4gICAgc291cmNlczogWycuL29uZS5qcycsICcuL3R3by5qcyddLFxuICAgIHNvdXJjZXNDb250ZW50OiBbXG4gICAgICAnIE9ORS5mb28gPSBmdW5jdGlvbiAoYmFyKSB7XFxuJyArXG4gICAgICAnICAgcmV0dXJuIGJheihiYXIpO1xcbicgK1xuICAgICAgJyB9OycsXG4gICAgICAnIFRXTy5pbmMgPSBmdW5jdGlvbiAobikge1xcbicgK1xuICAgICAgJyAgIHJldHVybiBuICsgMTtcXG4nICtcbiAgICAgICcgfTsnXG4gICAgXSxcbiAgICBzb3VyY2VSb290OiAnL3RoZS9yb290JyxcbiAgICBtYXBwaW5nczogJ0NBQUMsSUFBSSxJQUFNLFNBQVVBLEdBQ2xCLE9BQU9DLElBQUlEO0NDRGIsSUFBSSxJQUFNLFNBQVVFLEdBQ2xCLE9BQU9BJ1xuICB9O1xuICBleHBvcnRzLmVtcHR5TWFwID0ge1xuICAgIHZlcnNpb246IDMsXG4gICAgZmlsZTogJ21pbi5qcycsXG4gICAgbmFtZXM6IFtdLFxuICAgIHNvdXJjZXM6IFtdLFxuICAgIG1hcHBpbmdzOiAnJ1xuICB9O1xuXG5cbiAgZnVuY3Rpb24gYXNzZXJ0TWFwcGluZyhnZW5lcmF0ZWRMaW5lLCBnZW5lcmF0ZWRDb2x1bW4sIG9yaWdpbmFsU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsTGluZSwgb3JpZ2luYWxDb2x1bW4sIG5hbWUsIGJpYXMsIG1hcCwgYXNzZXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRUZXN0R2VuZXJhdGVkLCBkb250VGVzdE9yaWdpbmFsKSB7XG4gICAgaWYgKCFkb250VGVzdE9yaWdpbmFsKSB7XG4gICAgICB2YXIgb3JpZ01hcHBpbmcgPSBtYXAub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgIGxpbmU6IGdlbmVyYXRlZExpbmUsXG4gICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkQ29sdW1uLFxuICAgICAgICBiaWFzOiBiaWFzXG4gICAgICB9KTtcbiAgICAgIGFzc2VydC5lcXVhbChvcmlnTWFwcGluZy5uYW1lLCBuYW1lLFxuICAgICAgICAgICAgICAgICAgICdJbmNvcnJlY3QgbmFtZSwgZXhwZWN0ZWQgJyArIEpTT04uc3RyaW5naWZ5KG5hbWUpXG4gICAgICAgICAgICAgICAgICAgKyAnLCBnb3QgJyArIEpTT04uc3RyaW5naWZ5KG9yaWdNYXBwaW5nLm5hbWUpKTtcbiAgICAgIGFzc2VydC5lcXVhbChvcmlnTWFwcGluZy5saW5lLCBvcmlnaW5hbExpbmUsXG4gICAgICAgICAgICAgICAgICAgJ0luY29ycmVjdCBsaW5lLCBleHBlY3RlZCAnICsgSlNPTi5zdHJpbmdpZnkob3JpZ2luYWxMaW5lKVxuICAgICAgICAgICAgICAgICAgICsgJywgZ290ICcgKyBKU09OLnN0cmluZ2lmeShvcmlnTWFwcGluZy5saW5lKSk7XG4gICAgICBhc3NlcnQuZXF1YWwob3JpZ01hcHBpbmcuY29sdW1uLCBvcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0IGNvbHVtbiwgZXhwZWN0ZWQgJyArIEpTT04uc3RyaW5naWZ5KG9yaWdpbmFsQ29sdW1uKVxuICAgICAgICAgICAgICAgICAgICsgJywgZ290ICcgKyBKU09OLnN0cmluZ2lmeShvcmlnTWFwcGluZy5jb2x1bW4pKTtcblxuICAgICAgdmFyIGV4cGVjdGVkU291cmNlO1xuXG4gICAgICBpZiAob3JpZ2luYWxTb3VyY2UgJiYgbWFwLnNvdXJjZVJvb3QgJiYgb3JpZ2luYWxTb3VyY2UuaW5kZXhPZihtYXAuc291cmNlUm9vdCkgPT09IDApIHtcbiAgICAgICAgZXhwZWN0ZWRTb3VyY2UgPSBvcmlnaW5hbFNvdXJjZTtcbiAgICAgIH0gZWxzZSBpZiAob3JpZ2luYWxTb3VyY2UpIHtcbiAgICAgICAgZXhwZWN0ZWRTb3VyY2UgPSBtYXAuc291cmNlUm9vdFxuICAgICAgICAgID8gdXRpbC5qb2luKG1hcC5zb3VyY2VSb290LCBvcmlnaW5hbFNvdXJjZSlcbiAgICAgICAgICA6IG9yaWdpbmFsU291cmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhwZWN0ZWRTb3VyY2UgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQuZXF1YWwob3JpZ01hcHBpbmcuc291cmNlLCBleHBlY3RlZFNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0IHNvdXJjZSwgZXhwZWN0ZWQgJyArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkU291cmNlKVxuICAgICAgICAgICAgICAgICAgICsgJywgZ290ICcgKyBKU09OLnN0cmluZ2lmeShvcmlnTWFwcGluZy5zb3VyY2UpKTtcbiAgICB9XG5cbiAgICBpZiAoIWRvbnRUZXN0R2VuZXJhdGVkKSB7XG4gICAgICB2YXIgZ2VuTWFwcGluZyA9IG1hcC5nZW5lcmF0ZWRQb3NpdGlvbkZvcih7XG4gICAgICAgIHNvdXJjZTogb3JpZ2luYWxTb3VyY2UsXG4gICAgICAgIGxpbmU6IG9yaWdpbmFsTGluZSxcbiAgICAgICAgY29sdW1uOiBvcmlnaW5hbENvbHVtbixcbiAgICAgICAgYmlhczogYmlhc1xuICAgICAgfSk7XG4gICAgICBhc3NlcnQuZXF1YWwoZ2VuTWFwcGluZy5saW5lLCBnZW5lcmF0ZWRMaW5lLFxuICAgICAgICAgICAgICAgICAgICdJbmNvcnJlY3QgbGluZSwgZXhwZWN0ZWQgJyArIEpTT04uc3RyaW5naWZ5KGdlbmVyYXRlZExpbmUpXG4gICAgICAgICAgICAgICAgICAgKyAnLCBnb3QgJyArIEpTT04uc3RyaW5naWZ5KGdlbk1hcHBpbmcubGluZSkpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGdlbk1hcHBpbmcuY29sdW1uLCBnZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgJ0luY29ycmVjdCBjb2x1bW4sIGV4cGVjdGVkICcgKyBKU09OLnN0cmluZ2lmeShnZW5lcmF0ZWRDb2x1bW4pXG4gICAgICAgICAgICAgICAgICAgKyAnLCBnb3QgJyArIEpTT04uc3RyaW5naWZ5KGdlbk1hcHBpbmcuY29sdW1uKSk7XG4gICAgfVxuICB9XG4gIGV4cG9ydHMuYXNzZXJ0TWFwcGluZyA9IGFzc2VydE1hcHBpbmc7XG5cbiAgZnVuY3Rpb24gYXNzZXJ0RXF1YWxNYXBzKGFzc2VydCwgYWN0dWFsTWFwLCBleHBlY3RlZE1hcCkge1xuICAgIGFzc2VydC5lcXVhbChhY3R1YWxNYXAudmVyc2lvbiwgZXhwZWN0ZWRNYXAudmVyc2lvbiwgXCJ2ZXJzaW9uIG1pc21hdGNoXCIpO1xuICAgIGFzc2VydC5lcXVhbChhY3R1YWxNYXAuZmlsZSwgZXhwZWN0ZWRNYXAuZmlsZSwgXCJmaWxlIG1pc21hdGNoXCIpO1xuICAgIGFzc2VydC5lcXVhbChhY3R1YWxNYXAubmFtZXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgICBleHBlY3RlZE1hcC5uYW1lcy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgIFwibmFtZXMgbGVuZ3RoIG1pc21hdGNoOiBcIiArXG4gICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLm5hbWVzLmpvaW4oXCIsIFwiKSArIFwiICE9IFwiICsgZXhwZWN0ZWRNYXAubmFtZXMuam9pbihcIiwgXCIpKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbE1hcC5uYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgYXNzZXJ0LmVxdWFsKGFjdHVhbE1hcC5uYW1lc1tpXSxcbiAgICAgICAgICAgICAgICAgICBleHBlY3RlZE1hcC5uYW1lc1tpXSxcbiAgICAgICAgICAgICAgICAgICBcIm5hbWVzW1wiICsgaSArIFwiXSBtaXNtYXRjaDogXCIgK1xuICAgICAgICAgICAgICAgICAgICAgYWN0dWFsTWFwLm5hbWVzLmpvaW4oXCIsIFwiKSArIFwiICE9IFwiICsgZXhwZWN0ZWRNYXAubmFtZXMuam9pbihcIiwgXCIpKTtcbiAgICB9XG4gICAgYXNzZXJ0LmVxdWFsKGFjdHVhbE1hcC5zb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRNYXAuc291cmNlcy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgIFwic291cmNlcyBsZW5ndGggbWlzbWF0Y2g6IFwiICtcbiAgICAgICAgICAgICAgICAgICBhY3R1YWxNYXAuc291cmNlcy5qb2luKFwiLCBcIikgKyBcIiAhPSBcIiArIGV4cGVjdGVkTWFwLnNvdXJjZXMuam9pbihcIiwgXCIpKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbE1hcC5zb3VyY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoYWN0dWFsTWFwLnNvdXJjZXNbaV0sXG4gICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRNYXAuc291cmNlc1tpXSxcbiAgICAgICAgICAgICAgICAgICBcInNvdXJjZXNbXCIgKyBpICsgXCJdIGxlbmd0aCBtaXNtYXRjaDogXCIgK1xuICAgICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5zb3VyY2VzLmpvaW4oXCIsIFwiKSArIFwiICE9IFwiICsgZXhwZWN0ZWRNYXAuc291cmNlcy5qb2luKFwiLCBcIikpO1xuICAgIH1cbiAgICBhc3NlcnQuZXF1YWwoYWN0dWFsTWFwLnNvdXJjZVJvb3QsXG4gICAgICAgICAgICAgICAgIGV4cGVjdGVkTWFwLnNvdXJjZVJvb3QsXG4gICAgICAgICAgICAgICAgIFwic291cmNlUm9vdCBtaXNtYXRjaDogXCIgK1xuICAgICAgICAgICAgICAgICAgIGFjdHVhbE1hcC5zb3VyY2VSb290ICsgXCIgIT0gXCIgKyBleHBlY3RlZE1hcC5zb3VyY2VSb290KTtcbiAgICBhc3NlcnQuZXF1YWwoYWN0dWFsTWFwLm1hcHBpbmdzLCBleHBlY3RlZE1hcC5tYXBwaW5ncyxcbiAgICAgICAgICAgICAgICAgXCJtYXBwaW5ncyBtaXNtYXRjaDpcXG5BY3R1YWw6ICAgXCIgKyBhY3R1YWxNYXAubWFwcGluZ3MgKyBcIlxcbkV4cGVjdGVkOiBcIiArIGV4cGVjdGVkTWFwLm1hcHBpbmdzKTtcbiAgICBpZiAoYWN0dWFsTWFwLnNvdXJjZXNDb250ZW50KSB7XG4gICAgICBhc3NlcnQuZXF1YWwoYWN0dWFsTWFwLnNvdXJjZXNDb250ZW50Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICBleHBlY3RlZE1hcC5zb3VyY2VzQ29udGVudC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgXCJzb3VyY2VzQ29udGVudCBsZW5ndGggbWlzbWF0Y2hcIik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbE1hcC5zb3VyY2VzQ29udGVudC5sZW5ndGg7IGkrKykge1xuICAgICAgICBhc3NlcnQuZXF1YWwoYWN0dWFsTWFwLnNvdXJjZXNDb250ZW50W2ldLFxuICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRNYXAuc291cmNlc0NvbnRlbnRbaV0sXG4gICAgICAgICAgICAgICAgICAgICBcInNvdXJjZXNDb250ZW50W1wiICsgaSArIFwiXSBtaXNtYXRjaFwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZXhwb3J0cy5hc3NlcnRFcXVhbE1hcHMgPSBhc3NlcnRFcXVhbE1hcHM7XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vdGVzdC91dGlsLmpzXG4gKiogbW9kdWxlIGlkID0gMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xue1xuICAvKipcbiAgICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXIvb3B0aW9uc1xuICAgKiBvYmplY3RzLlxuICAgKlxuICAgKiBAcGFyYW0gYXJncyBUaGUgb2JqZWN0IHdlIGFyZSBleHRyYWN0aW5nIHZhbHVlcyBmcm9tXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSBhcmUgZ2V0dGluZy5cbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBBbiBvcHRpb25hbCB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmdcbiAgICogZnJvbSB0aGUgb2JqZWN0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBhblxuICAgKiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAgICovXG4gIGZ1bmN0aW9uIGdldEFyZyhhQXJncywgYU5hbWUsIGFEZWZhdWx0VmFsdWUpIHtcbiAgICBpZiAoYU5hbWUgaW4gYUFyZ3MpIHtcbiAgICAgIHJldHVybiBhQXJnc1thTmFtZV07XG4gICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICByZXR1cm4gYURlZmF1bHRWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhTmFtZSArICdcIiBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LicpO1xuICAgIH1cbiAgfVxuICBleHBvcnRzLmdldEFyZyA9IGdldEFyZztcblxuICB2YXIgdXJsUmVnZXhwID0gL14oPzooW1xcdytcXC0uXSspOik/XFwvXFwvKD86KFxcdys6XFx3KylAKT8oW1xcdy5dKikoPzo6KFxcZCspKT8oXFxTKikkLztcbiAgdmFyIGRhdGFVcmxSZWdleHAgPSAvXmRhdGE6LitcXCwuKyQvO1xuXG4gIGZ1bmN0aW9uIHVybFBhcnNlKGFVcmwpIHtcbiAgICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWU6IG1hdGNoWzFdLFxuICAgICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgICBob3N0OiBtYXRjaFszXSxcbiAgICAgIHBvcnQ6IG1hdGNoWzRdLFxuICAgICAgcGF0aDogbWF0Y2hbNV1cbiAgICB9O1xuICB9XG4gIGV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuICBmdW5jdGlvbiB1cmxHZW5lcmF0ZShhUGFyc2VkVXJsKSB7XG4gICAgdmFyIHVybCA9ICcnO1xuICAgIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgICAgdXJsICs9IGFQYXJzZWRVcmwuc2NoZW1lICsgJzonO1xuICAgIH1cbiAgICB1cmwgKz0gJy8vJztcbiAgICBpZiAoYVBhcnNlZFVybC5hdXRoKSB7XG4gICAgICB1cmwgKz0gYVBhcnNlZFVybC5hdXRoICsgJ0AnO1xuICAgIH1cbiAgICBpZiAoYVBhcnNlZFVybC5ob3N0KSB7XG4gICAgICB1cmwgKz0gYVBhcnNlZFVybC5ob3N0O1xuICAgIH1cbiAgICBpZiAoYVBhcnNlZFVybC5wb3J0KSB7XG4gICAgICB1cmwgKz0gXCI6XCIgKyBhUGFyc2VkVXJsLnBvcnRcbiAgICB9XG4gICAgaWYgKGFQYXJzZWRVcmwucGF0aCkge1xuICAgICAgdXJsICs9IGFQYXJzZWRVcmwucGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICBleHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgYSBwYXRoLCBvciB0aGUgcGF0aCBwb3J0aW9uIG9mIGEgVVJMOlxuICAgKlxuICAgKiAtIFJlcGxhY2VzIGNvbnNlcXV0aXZlIHNsYXNoZXMgd2l0aCBvbmUgc2xhc2guXG4gICAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnLicgcGFydHMuXG4gICAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICAgKlxuICAgKiBCYXNlZCBvbiBjb2RlIGluIHRoZSBOb2RlLmpzICdwYXRoJyBjb3JlIG1vZHVsZS5cbiAgICpcbiAgICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIHVybCB0byBub3JtYWxpemUuXG4gICAqL1xuICBmdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgICB2YXIgcGF0aCA9IGFQYXRoO1xuICAgIHZhciB1cmwgPSB1cmxQYXJzZShhUGF0aCk7XG4gICAgaWYgKHVybCkge1xuICAgICAgaWYgKCF1cmwucGF0aCkge1xuICAgICAgICByZXR1cm4gYVBhdGg7XG4gICAgICB9XG4gICAgICBwYXRoID0gdXJsLnBhdGg7XG4gICAgfVxuICAgIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gICAgdmFyIHBhcnRzID0gcGF0aC5zcGxpdCgvXFwvKy8pO1xuICAgIGZvciAodmFyIHBhcnQsIHVwID0gMCwgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgICBpZiAocGFydCA9PT0gJy4nKSB7XG4gICAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgICB1cCsrO1xuICAgICAgfSBlbHNlIGlmICh1cCA+IDApIHtcbiAgICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgICAgLy8gVGhlIGZpcnN0IHBhcnQgaXMgYmxhbmsgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUuIFRyeWluZyB0byBnb1xuICAgICAgICAgIC8vIGFib3ZlIHRoZSByb290IGlzIGEgbm8tb3AuIFRoZXJlZm9yZSB3ZSBjYW4gcmVtb3ZlIGFsbCAnLi4nIHBhcnRzXG4gICAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgICAgcGFydHMuc3BsaWNlKGkgKyAxLCB1cCk7XG4gICAgICAgICAgdXAgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnRzLnNwbGljZShpLCAyKTtcbiAgICAgICAgICB1cC0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgICBpZiAocGF0aCA9PT0gJycpIHtcbiAgICAgIHBhdGggPSBpc0Fic29sdXRlID8gJy8nIDogJy4nO1xuICAgIH1cblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHVybC5wYXRoID0gcGF0aDtcbiAgICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuICBleHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcblxuICAvKipcbiAgICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gICAqXG4gICAqIEBwYXJhbSBhUm9vdCBUaGUgcm9vdCBwYXRoIG9yIFVSTC5cbiAgICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAgICpcbiAgICogLSBJZiBhUGF0aCBpcyBhIFVSTCBvciBhIGRhdGEgVVJJLCBhUGF0aCBpcyByZXR1cm5lZCwgdW5sZXNzIGFQYXRoIGlzIGFcbiAgICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gICAqICAgZmlyc3QuXG4gICAqIC0gT3RoZXJ3aXNlIGFQYXRoIGlzIGEgcGF0aC4gSWYgYVJvb3QgaXMgYSBVUkwsIHRoZW4gaXRzIHBhdGggcG9ydGlvblxuICAgKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAgICogICBpcyByZXR1cm5lZC5cbiAgICogICAtIElmIGFQYXRoIGlzIGFic29sdXRlLCB0aGUgcmVzdWx0IGlzIGFQYXRoLlxuICAgKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gICAqIC0gSm9pbmluZyBmb3IgZXhhbXBsZSAnaHR0cDovLycgYW5kICd3d3cuZXhhbXBsZS5jb20nIGlzIGFsc28gc3VwcG9ydGVkLlxuICAgKi9cbiAgZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgICBpZiAoYVJvb3QgPT09IFwiXCIpIHtcbiAgICAgIGFSb290ID0gXCIuXCI7XG4gICAgfVxuICAgIGlmIChhUGF0aCA9PT0gXCJcIikge1xuICAgICAgYVBhdGggPSBcIi5cIjtcbiAgICB9XG4gICAgdmFyIGFQYXRoVXJsID0gdXJsUGFyc2UoYVBhdGgpO1xuICAgIHZhciBhUm9vdFVybCA9IHVybFBhcnNlKGFSb290KTtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFSb290ID0gYVJvb3RVcmwucGF0aCB8fCAnLyc7XG4gICAgfVxuXG4gICAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgICBpZiAoYVBhdGhVcmwgJiYgIWFQYXRoVXJsLnNjaGVtZSkge1xuICAgICAgaWYgKGFSb290VXJsKSB7XG4gICAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUGF0aFVybCk7XG4gICAgfVxuXG4gICAgaWYgKGFQYXRoVXJsIHx8IGFQYXRoLm1hdGNoKGRhdGFVcmxSZWdleHApKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgLy8gYGpvaW4oJ2h0dHA6Ly8nLCAnd3d3LmV4YW1wbGUuY29tJylgXG4gICAgaWYgKGFSb290VXJsICYmICFhUm9vdFVybC5ob3N0ICYmICFhUm9vdFVybC5wYXRoKSB7XG4gICAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgICByZXR1cm4gdXJsR2VuZXJhdGUoYVJvb3RVcmwpO1xuICAgIH1cblxuICAgIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgICAgPyBhUGF0aFxuICAgICAgOiBub3JtYWxpemUoYVJvb3QucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyBhUGF0aCk7XG5cbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFSb290VXJsLnBhdGggPSBqb2luZWQ7XG4gICAgICByZXR1cm4gdXJsR2VuZXJhdGUoYVJvb3RVcmwpO1xuICAgIH1cbiAgICByZXR1cm4gam9pbmVkO1xuICB9XG4gIGV4cG9ydHMuam9pbiA9IGpvaW47XG5cbiAgZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24gKGFQYXRoKSB7XG4gICAgcmV0dXJuIGFQYXRoLmNoYXJBdCgwKSA9PT0gJy8nIHx8ICEhYVBhdGgubWF0Y2godXJsUmVnZXhwKTtcbiAgfTtcblxuICAvKipcbiAgICogTWFrZSBhIHBhdGggcmVsYXRpdmUgdG8gYSBVUkwgb3IgYW5vdGhlciBwYXRoLlxuICAgKlxuICAgKiBAcGFyYW0gYVJvb3QgVGhlIHJvb3QgcGF0aCBvciBVUkwuXG4gICAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciBVUkwgdG8gYmUgbWFkZSByZWxhdGl2ZSB0byBhUm9vdC5cbiAgICovXG4gIGZ1bmN0aW9uIHJlbGF0aXZlKGFSb290LCBhUGF0aCkge1xuICAgIGlmIChhUm9vdCA9PT0gXCJcIikge1xuICAgICAgYVJvb3QgPSBcIi5cIjtcbiAgICB9XG5cbiAgICBhUm9vdCA9IGFSb290LnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cbiAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gICAgLy8gY2hlY2tpbmcgd2hldGhlciB0aGUgcm9vdCBpcyBhIHByZWZpeCBvZiB0aGUgcGF0aCB3b24ndCB3b3JrLiBJbnN0ZWFkLCB3ZVxuICAgIC8vIG5lZWQgdG8gcmVtb3ZlIGNvbXBvbmVudHMgZnJvbSB0aGUgcm9vdCBvbmUgYnkgb25lLCB1bnRpbCBlaXRoZXIgd2UgZmluZFxuICAgIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgICB2YXIgbGV2ZWwgPSAwO1xuICAgIHdoaWxlIChhUGF0aC5pbmRleE9mKGFSb290ICsgJy8nKSAhPT0gMCkge1xuICAgICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gYVBhdGg7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBvbmx5IHBhcnQgb2YgdGhlIHJvb3QgdGhhdCBpcyBsZWZ0IGlzIHRoZSBzY2hlbWUgKGkuZS4gaHR0cDovLyxcbiAgICAgIC8vIGZpbGU6Ly8vLCBldGMuKSwgb25lIG9yIG1vcmUgc2xhc2hlcyAoLyksIG9yIHNpbXBseSBub3RoaW5nIGF0IGFsbCwgd2VcbiAgICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgICBhUm9vdCA9IGFSb290LnNsaWNlKDAsIGluZGV4KTtcbiAgICAgIGlmIChhUm9vdC5tYXRjaCgvXihbXlxcL10rOlxcLyk/XFwvKiQvKSkge1xuICAgICAgICByZXR1cm4gYVBhdGg7XG4gICAgICB9XG5cbiAgICAgICsrbGV2ZWw7XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIHdlIGFkZCBhIFwiLi4vXCIgZm9yIGVhY2ggY29tcG9uZW50IHdlIHJlbW92ZWQgZnJvbSB0aGUgcm9vdC5cbiAgICByZXR1cm4gQXJyYXkobGV2ZWwgKyAxKS5qb2luKFwiLi4vXCIpICsgYVBhdGguc3Vic3RyKGFSb290Lmxlbmd0aCArIDEpO1xuICB9XG4gIGV4cG9ydHMucmVsYXRpdmUgPSByZWxhdGl2ZTtcblxuICAvKipcbiAgICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICAgKiBoYXZlIHRvIHByZWZpeCBhbGwgdGhlIHN0cmluZ3MgaW4gb3VyIHNldCB3aXRoIGFuIGFyYml0cmFyeSBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvaXNzdWVzLzMwXG4gICAqXG4gICAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICAgKi9cbiAgZnVuY3Rpb24gdG9TZXRTdHJpbmcoYVN0cikge1xuICAgIHJldHVybiAnJCcgKyBhU3RyO1xuICB9XG4gIGV4cG9ydHMudG9TZXRTdHJpbmcgPSB0b1NldFN0cmluZztcblxuICBmdW5jdGlvbiBmcm9tU2V0U3RyaW5nKGFTdHIpIHtcbiAgICByZXR1cm4gYVN0ci5zdWJzdHIoMSk7XG4gIH1cbiAgZXhwb3J0cy5mcm9tU2V0U3RyaW5nID0gZnJvbVNldFN0cmluZztcblxuICAvKipcbiAgICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aGVyZSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zIGFyZSBjb21wYXJlZC5cbiAgICpcbiAgICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICAgKiBtYXBwaW5ncyB3aXRoIHRoZSBzYW1lIG9yaWdpbmFsIHNvdXJjZS9saW5lL2NvbHVtbiwgYnV0IGRpZmZlcmVudCBnZW5lcmF0ZWRcbiAgICogbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGEgbWFwcGluZyB3aXRoIGFcbiAgICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICAgIHZhciBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbExpbmUgLSBtYXBwaW5nQi5vcmlnaW5hbExpbmU7XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICAgIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lIC0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5nQS5uYW1lIC0gbWFwcGluZ0IubmFtZTtcbiAgfVxuICBleHBvcnRzLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zID0gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnM7XG5cbiAgLyoqXG4gICAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICAgKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gICAqXG4gICAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAgICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uLCBidXQgZGlmZmVyZW50XG4gICAqIHNvdXJjZS9uYW1lL29yaWdpbmFsIGxpbmUgYW5kIGNvbHVtbiB0aGUgc2FtZS4gVXNlZnVsIHdoZW4gc2VhcmNoaW5nIGZvciBhXG4gICAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gICAqL1xuICBmdW5jdGlvbiBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IsIG9ubHlDb21wYXJlR2VuZXJhdGVkKSB7XG4gICAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICAgIGlmIChjbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICAgIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgY21wID0gbWFwcGluZ0Euc291cmNlIC0gbWFwcGluZ0Iuc291cmNlO1xuICAgIGlmIChjbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICAgIGlmIChjbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxDb2x1bW4gLSBtYXBwaW5nQi5vcmlnaW5hbENvbHVtbjtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5nQS5uYW1lIC0gbWFwcGluZ0IubmFtZTtcbiAgfVxuICBleHBvcnRzLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkID0gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQ7XG5cbiAgZnVuY3Rpb24gc3RyY21wKGFTdHIxLCBhU3RyMikge1xuICAgIGlmIChhU3RyMSA9PT0gYVN0cjIpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gICAqIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zIGFyZSBjb21wYXJlZC5cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICAgIHZhciBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lIC0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbExpbmUgLSBtYXBwaW5nQi5vcmlnaW5hbExpbmU7XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICAgIGlmIChjbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbiAgfVxuICBleHBvcnRzLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkID0gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQ7XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vbGliL3V0aWwuanNcbiAqKiBtb2R1bGUgaWQgPSAyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG57XG4gIHZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG4gIHZhciBiaW5hcnlTZWFyY2ggPSByZXF1aXJlKCcuL2JpbmFyeS1zZWFyY2gnKTtcbiAgdmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbiAgdmFyIGJhc2U2NFZMUSA9IHJlcXVpcmUoJy4vYmFzZTY0LXZscScpO1xuICB2YXIgcXVpY2tTb3J0ID0gcmVxdWlyZSgnLi9xdWljay1zb3J0JykucXVpY2tTb3J0O1xuXG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXApIHtcbiAgICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgICBpZiAodHlwZW9mIGFTb3VyY2VNYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICBzb3VyY2VNYXAgPSBKU09OLnBhcnNlKGFTb3VyY2VNYXAucmVwbGFjZSgvXlxcKVxcXVxcfScvLCAnJykpO1xuICAgIH1cblxuICAgIHJldHVybiBzb3VyY2VNYXAuc2VjdGlvbnMgIT0gbnVsbFxuICAgICAgPyBuZXcgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcClcbiAgICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwKTtcbiAgfVxuXG4gIFNvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPSBmdW5jdGlvbihhU291cmNlTWFwKSB7XG4gICAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gICAqL1xuICBTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4gIC8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4gIC8vIHBhcnNlZCBtYXBwaW5nIGNvb3JkaW5hdGVzIGZyb20gdGhlIHNvdXJjZSBtYXAncyBcIm1hcHBpbmdzXCIgYXR0cmlidXRlLiBUaGV5XG4gIC8vIGFyZSBsYXppbHkgaW5zdGFudGlhdGVkLCBhY2Nlc3NlZCB2aWEgdGhlIGBfZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICAvLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3NcbiAgLy8gYW5kIGNyZWF0ZSB0aGVzZSBhcnJheXMgb25jZSBxdWVyaWVkIGZvciBhIHNvdXJjZSBsb2NhdGlvbi4gV2UganVtcCB0aHJvdWdoXG4gIC8vIHRoZXNlIGhvb3BzIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG1hbnkgdGhvdXNhbmRzIG9mIG1hcHBpbmdzLCBhbmQgcGFyc2luZ1xuICAvLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4gIC8vXG4gIC8vIEVhY2ggb2JqZWN0IGluIHRoZSBhcnJheXMgaXMgb2YgdGhlIGZvcm06XG4gIC8vXG4gIC8vICAgICB7XG4gIC8vICAgICAgIGdlbmVyYXRlZExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gIC8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuICAvLyAgICAgICBzb3VyY2U6IFRoZSBwYXRoIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSB0aGF0IGdlbmVyYXRlZCB0aGlzXG4gIC8vICAgICAgICAgICAgICAgY2h1bmsgb2YgY29kZSxcbiAgLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4gIC8vICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbiAgLy8gICAgICAgb3JpZ2luYWxDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuICAvLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbiAgLy8gICAgICAgbmFtZTogVGhlIG5hbWUgb2YgdGhlIG9yaWdpbmFsIHN5bWJvbCB3aGljaCBnZW5lcmF0ZWQgdGhpcyBjaHVuayBvZlxuICAvLyAgICAgICAgICAgICBjb2RlLlxuICAvLyAgICAgfVxuICAvL1xuICAvLyBBbGwgcHJvcGVydGllcyBleGNlcHQgZm9yIGBnZW5lcmF0ZWRMaW5lYCBhbmQgYGdlbmVyYXRlZENvbHVtbmAgY2FuIGJlXG4gIC8vIGBudWxsYC5cbiAgLy9cbiAgLy8gYF9nZW5lcmF0ZWRNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucy5cbiAgLy9cbiAgLy8gYF9vcmlnaW5hbE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBvcmlnaW5hbCBwb3NpdGlvbnMuXG5cbiAgU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBudWxsO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCF0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VNYXBwaW5ncyh0aGlzLl9tYXBwaW5ncywgdGhpcy5zb3VyY2VSb290KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICB9XG4gIH0pO1xuXG4gIFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fX29yaWdpbmFsTWFwcGluZ3MgPSBudWxsO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX29yaWdpbmFsTWFwcGluZ3MnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ3ModGhpcy5fbWFwcGluZ3MsIHRoaXMuc291cmNlUm9vdCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgICB9XG4gIH0pO1xuXG4gIFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfY2hhcklzTWFwcGluZ1NlcGFyYXRvcihhU3RyLCBpbmRleCkge1xuICAgICAgdmFyIGMgPSBhU3RyLmNoYXJBdChpbmRleCk7XG4gICAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gICAgfTtcblxuICAvKipcbiAgICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICAgKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAgICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAgICovXG4gIFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgICB9O1xuXG4gIFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUiA9IDE7XG4gIFNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuICBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCA9IDE7XG4gIFNvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EID0gMjtcblxuICAvKipcbiAgICogSXRlcmF0ZSBvdmVyIGVhY2ggbWFwcGluZyBiZXR3ZWVuIGFuIG9yaWdpbmFsIHNvdXJjZS9saW5lL2NvbHVtbiBhbmQgYVxuICAgKiBnZW5lcmF0ZWQgbGluZS9jb2x1bW4gaW4gdGhpcyBzb3VyY2UgbWFwLlxuICAgKlxuICAgKiBAcGFyYW0gRnVuY3Rpb24gYUNhbGxiYWNrXG4gICAqICAgICAgICBUaGUgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2l0aCBlYWNoIG1hcHBpbmcuXG4gICAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAgICogICAgICAgIE9wdGlvbmFsLiBJZiBzcGVjaWZpZWQsIHRoaXMgb2JqZWN0IHdpbGwgYmUgdGhlIHZhbHVlIG9mIGB0aGlzYCBldmVyeVxuICAgKiAgICAgICAgdGltZSB0aGF0IGBhQ2FsbGJhY2tgIGlzIGNhbGxlZC5cbiAgICogQHBhcmFtIGFPcmRlclxuICAgKiAgICAgICAgRWl0aGVyIGBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVJgIG9yXG4gICAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVJgLiBTcGVjaWZpZXMgd2hldGhlciB5b3Ugd2FudCB0b1xuICAgKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAgICogICAgICAgIG9yZGVyIG9yIHRoZSBvcmlnaW5hbCdzIHNvdXJjZS9saW5lL2NvbHVtbiBvcmRlciwgcmVzcGVjdGl2ZWx5LiBEZWZhdWx0cyB0b1xuICAgKiAgICAgICAgYFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUmAuXG4gICAqL1xuICBTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuZWFjaE1hcHBpbmcgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2VhY2hNYXBwaW5nKGFDYWxsYmFjaywgYUNvbnRleHQsIGFPcmRlcikge1xuICAgICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgICAgdmFyIG9yZGVyID0gYU9yZGVyIHx8IFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUjtcblxuICAgICAgdmFyIG1hcHBpbmdzO1xuICAgICAgc3dpdGNoIChvcmRlcikge1xuICAgICAgY2FzZSBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI6XG4gICAgICAgIG1hcHBpbmdzID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUjpcbiAgICAgICAgbWFwcGluZ3MgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gb3JkZXIgb2YgaXRlcmF0aW9uLlwiKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZVJvb3QgPSB0aGlzLnNvdXJjZVJvb3Q7XG4gICAgICBtYXBwaW5ncy5tYXAoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlID0gdXRpbC5qb2luKHNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbixcbiAgICAgICAgICBvcmlnaW5hbExpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICAgIG5hbWU6IG1hcHBpbmcubmFtZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpXG4gICAgICAgIH07XG4gICAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gICAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAgICogbGluZSwgYW5kIGNvbHVtbiBwcm92aWRlZC4gSWYgbm8gY29sdW1uIGlzIHByb3ZpZGVkLCByZXR1cm5zIGFsbCBtYXBwaW5nc1xuICAgKiBjb3JyZXNwb25kaW5nIHRvIGEgZWl0aGVyIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yIG9yIHRoZSBuZXh0XG4gICAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAgICogY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gbGluZSBhbmQgZWl0aGVyIHRoZSBjb2x1bW4gd2UgYXJlIHNlYXJjaGluZyBmb3JcbiAgICogb3IgdGhlIG5leHQgY2xvc2VzdCBjb2x1bW4gdGhhdCBoYXMgYW55IG9mZnNldHMuXG4gICAqXG4gICAqIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAgICogICAtIGNvbHVtbjogT3B0aW9uYWwuIHRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gICAqXG4gICAqIGFuZCBhbiBhcnJheSBvZiBvYmplY3RzIGlzIHJldHVybmVkLCBlYWNoIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICAgKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAgICovXG4gIFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2FsbEdlbmVyYXRlZFBvc2l0aW9uc0ZvcihhQXJncykge1xuICAgICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgICAgLy8gV2hlbiB0aGVyZSBpcyBubyBleGFjdCBtYXRjaCwgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nXG4gICAgICAvLyByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBtYXBwaW5nIGxlc3MgdGhhbiB0aGUgbmVlZGxlLiBCeVxuICAgICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgICAvLyB0aGUgZ2l2ZW4gbGluZSwgcHJvdmlkZWQgc3VjaCBhIG1hcHBpbmcgZXhpc3RzLlxuICAgICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgICBvcmlnaW5hbExpbmU6IGxpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicsIDApXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgbmVlZGxlLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCBuZWVkbGUuc291cmNlKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5fc291cmNlcy5oYXMobmVlZGxlLnNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihuZWVkbGUuc291cmNlKTtcblxuICAgICAgdmFyIG1hcHBpbmdzID0gW107XG5cbiAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsTGluZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCk7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICAgIGlmIChhQXJncy5jb2x1bW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgICAgLy8gYSBtYXBwaW5nIGZvciBhIGRpZmZlcmVudCBsaW5lIHRoYW4gdGhlIG9uZSB3ZSBmb3VuZC4gU2luY2VcbiAgICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgICAgLy8gdGhlIGxpbmUgd2UgZm91bmQuXG4gICAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiYgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09IG9yaWdpbmFsTGluZSkge1xuICAgICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbKytpbmRleF07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBvcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2Ugd2VyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICAgIC8vIFNpbmNlIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgICB3aGlsZSAobWFwcGluZyAmJlxuICAgICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gbGluZSAmJlxuICAgICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZExpbmUnLCBudWxsKSxcbiAgICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1hcHBpbmdzO1xuICAgIH07XG5cbiAgZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4gIC8qKlxuICAgKiBBIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5zdGFuY2UgcmVwcmVzZW50cyBhIHBhcnNlZCBzb3VyY2UgbWFwIHdoaWNoIHdlIGNhblxuICAgKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAgICogcG9zaXRpb24gaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gICAqXG4gICAqIFRoZSBvbmx5IHBhcmFtZXRlciBpcyB0aGUgcmF3IHNvdXJjZSBtYXAgKGVpdGhlciBhcyBhIEpTT04gc3RyaW5nLCBvclxuICAgKiBhbHJlYWR5IHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNvdXJjZSBtYXBzIGhhdmUgdGhlXG4gICAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICAgKlxuICAgKiAgIC0gdmVyc2lvbjogV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAgICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAgICogICAtIG5hbWVzOiBBbiBhcnJheSBvZiBpZGVudGlmaWVycyB3aGljaCBjYW4gYmUgcmVmZXJyZW5jZWQgYnkgaW5kaXZpZHVhbCBtYXBwaW5ncy5cbiAgICogICAtIHNvdXJjZVJvb3Q6IE9wdGlvbmFsLiBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gICAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gICAqICAgLSBtYXBwaW5nczogQSBzdHJpbmcgb2YgYmFzZTY0IFZMUXMgd2hpY2ggY29udGFpbiB0aGUgYWN0dWFsIG1hcHBpbmdzLlxuICAgKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICAgKlxuICAgKiBIZXJlIGlzIGFuIGV4YW1wbGUgc291cmNlIG1hcCwgdGFrZW4gZnJvbSB0aGUgc291cmNlIG1hcCBzcGVjWzBdOlxuICAgKlxuICAgKiAgICAge1xuICAgKiAgICAgICB2ZXJzaW9uIDogMyxcbiAgICogICAgICAgZmlsZTogXCJvdXQuanNcIixcbiAgICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gICAqICAgICAgIHNvdXJjZXM6IFtcImZvby5qc1wiLCBcImJhci5qc1wiXSxcbiAgICogICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gICAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICAgKiAgICAgfVxuICAgKlxuICAgKiBbMF06IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L2QvMVUxUkdBZWhRd1J5cFVUb3ZGMUtSbHBpT0Z6ZTBiLV8yZ2M2ZkFIMEtZMGsvZWRpdD9wbGk9MSNcbiAgICovXG4gIGZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICAgIHZhciBzb3VyY2VNYXAgPSBhU291cmNlTWFwO1xuICAgIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gICAgfVxuXG4gICAgdmFyIHZlcnNpb24gPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICd2ZXJzaW9uJyk7XG4gICAgdmFyIHNvdXJjZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzJyk7XG4gICAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAgIC8vIHJlcXVpcmVzIHRoZSBhcnJheSkgdG8gcGxheSBuaWNlIGhlcmUuXG4gICAgdmFyIG5hbWVzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnbmFtZXMnLCBbXSk7XG4gICAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZXNDb250ZW50ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlc0NvbnRlbnQnLCBudWxsKTtcbiAgICB2YXIgbWFwcGluZ3MgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdtYXBwaW5ncycpO1xuICAgIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gICAgLy8gT25jZSBhZ2FpbiwgU2FzcyBkZXZpYXRlcyBmcm9tIHRoZSBzcGVjIGFuZCBzdXBwbGllcyB0aGUgdmVyc2lvbiBhcyBhXG4gICAgLy8gc3RyaW5nIHJhdGhlciB0aGFuIGEgbnVtYmVyLCBzbyB3ZSB1c2UgbG9vc2UgZXF1YWxpdHkgY2hlY2tpbmcgaGVyZS5cbiAgICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHZlcnNpb246ICcgKyB2ZXJzaW9uKTtcbiAgICB9XG5cbiAgICBzb3VyY2VzID0gc291cmNlc1xuICAgICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgICAvLyBcImZvby5qc1wiLiAgTm9ybWFsaXplIHRoZXNlIGZpcnN0IHNvIHRoYXQgZnV0dXJlIGNvbXBhcmlzb25zIHdpbGwgc3VjY2VlZC5cbiAgICAgIC8vIFNlZSBidWd6aWwubGEvMTA5MDc2OC5cbiAgICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgICAvLyBBbHdheXMgZW5zdXJlIHRoYXQgYWJzb2x1dGUgc291cmNlcyBhcmUgaW50ZXJuYWxseSBzdG9yZWQgcmVsYXRpdmUgdG9cbiAgICAgIC8vIHRoZSBzb3VyY2Ugcm9vdCwgaWYgdGhlIHNvdXJjZSByb290IGlzIGFic29sdXRlLiBOb3QgZG9pbmcgdGhpcyB3b3VsZFxuICAgICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgICAgLy8gc291cmNlICh2YWxpZCwgYnV0IHdoeT8/KS4gU2VlIGdpdGh1YiBpc3N1ZSAjMTk5IGFuZCBidWd6aWwubGEvMTE4ODk4Mi5cbiAgICAgIC5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgICA/IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlKVxuICAgICAgICAgIDogc291cmNlO1xuICAgICAgfSk7XG5cbiAgICAvLyBQYXNzIGB0cnVlYCBiZWxvdyB0byBhbGxvdyBkdXBsaWNhdGUgbmFtZXMgYW5kIHNvdXJjZXMuIFdoaWxlIHNvdXJjZSBtYXBzXG4gICAgLy8gYXJlIGludGVuZGVkIHRvIGJlIGNvbXByZXNzZWQgYW5kIGRlZHVwbGljYXRlZCwgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXJcbiAgICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gICAgLy8gIzcyIGFuZCBidWd6aWwubGEvODg5NDkyLlxuICAgIHRoaXMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KG5hbWVzLCB0cnVlKTtcbiAgICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gICAgdGhpcy5zb3VyY2VSb290ID0gc291cmNlUm9vdDtcbiAgICB0aGlzLnNvdXJjZXNDb250ZW50ID0gc291cmNlc0NvbnRlbnQ7XG4gICAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICB9XG5cbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG4gIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgZnJvbSBhIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAgICpcbiAgICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gICAqICAgICAgICBUaGUgc291cmNlIG1hcCB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG4gICAqIEByZXR1cm5zIEJhc2ljU291cmNlTWFwQ29uc3VtZXJcbiAgICovXG4gIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwKSB7XG4gICAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICAgIHZhciBuYW1lcyA9IHNtYy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fbmFtZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICAgIHZhciBzb3VyY2VzID0gc21jLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX3NvdXJjZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICAgIHNtYy5zb3VyY2VzQ29udGVudCA9IGFTb3VyY2VNYXAuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQoc21jLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21jLnNvdXJjZVJvb3QpO1xuICAgICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuXG4gICAgICAvLyBCZWNhdXNlIHdlIGFyZSBtb2RpZnlpbmcgdGhlIGVudHJpZXMgKGJ5IGNvbnZlcnRpbmcgc3RyaW5nIHNvdXJjZXMgYW5kXG4gICAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgICAgLy8gYSBjb3B5IG9mIHRoZSBlbnRyeSBvciBlbHNlIGJhZCB0aGluZ3MgaGFwcGVuLiBTaGFyZWQgbXV0YWJsZSBzdGF0ZVxuICAgICAgLy8gc3RyaWtlcyBhZ2FpbiEgU2VlIGdpdGh1YiBpc3N1ZSAjMTkxLlxuXG4gICAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICAgIHZhciBkZXN0R2VuZXJhdGVkTWFwcGluZ3MgPSBzbWMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgICAgdmFyIGRlc3RPcmlnaW5hbE1hcHBpbmdzID0gc21jLl9fb3JpZ2luYWxNYXBwaW5ncyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNyY01hcHBpbmcgPSBnZW5lcmF0ZWRNYXBwaW5nc1tpXTtcbiAgICAgICAgdmFyIGRlc3RNYXBwaW5nID0gbmV3IE1hcHBpbmc7XG4gICAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHNyY01hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICAgIGlmIChzcmNNYXBwaW5nLnNvdXJjZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgICAgZGVzdE1hcHBpbmcub3JpZ2luYWxMaW5lID0gc3JjTWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgZGVzdE1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPSBzcmNNYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgICAgZGVzdE1hcHBpbmcubmFtZSA9IG5hbWVzLmluZGV4T2Yoc3JjTWFwcGluZy5uYW1lKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlc3RHZW5lcmF0ZWRNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgcXVpY2tTb3J0KHNtYy5fX29yaWdpbmFsTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMpO1xuXG4gICAgICByZXR1cm4gc21jO1xuICAgIH07XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAgICovXG4gIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl92ZXJzaW9uID0gMztcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAgICovXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ3NvdXJjZXMnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCA/IHV0aWwuam9pbih0aGlzLnNvdXJjZVJvb3QsIHMpIDogcztcbiAgICAgIH0sIHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgdGhlIEpJVCB3aXRoIGEgbmljZSBzaGFwZSAvIGhpZGRlbiBjbGFzcy5cbiAgICovXG4gIGZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gICAgdGhpcy5nZW5lcmF0ZWRMaW5lID0gMDtcbiAgICB0aGlzLmdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICAgIHRoaXMub3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgICB0aGlzLm9yaWdpbmFsQ29sdW1uID0gbnVsbDtcbiAgICB0aGlzLm5hbWUgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAgICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gICAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gICAqL1xuICBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgIHZhciBwcmV2aW91c09yaWdpbmFsTGluZSA9IDA7XG4gICAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgICB2YXIgcHJldmlvdXNTb3VyY2UgPSAwO1xuICAgICAgdmFyIHByZXZpb3VzTmFtZSA9IDA7XG4gICAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIGNhY2hlZFNlZ21lbnRzID0ge307XG4gICAgICB2YXIgdGVtcCA9IHt9O1xuICAgICAgdmFyIG9yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICAgIHZhciBnZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGlmIChhU3RyLmNoYXJBdChpbmRleCkgPT09ICc7Jykge1xuICAgICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhU3RyLmNoYXJBdChpbmRleCkgPT09ICcsJykge1xuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgbWFwcGluZyA9IG5ldyBNYXBwaW5nKCk7XG4gICAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAgIC8vIEJlY2F1c2UgZWFjaCBvZmZzZXQgaXMgZW5jb2RlZCByZWxhdGl2ZSB0byB0aGUgcHJldmlvdXMgb25lLFxuICAgICAgICAgIC8vIG1hbnkgc2VnbWVudHMgb2Z0ZW4gaGF2ZSB0aGUgc2FtZSBlbmNvZGluZy4gV2UgY2FuIGV4cGxvaXQgdGhpc1xuICAgICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAgIC8vIGFsbG93aW5nIHVzIHRvIGF2b2lkIGEgc2Vjb25kIHBhcnNlIGlmIHdlIGVuY291bnRlciB0aGUgc2FtZVxuICAgICAgICAgIC8vIHNlZ21lbnQgYWdhaW4uXG4gICAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgZW5kKSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgc3RyID0gYVN0ci5zbGljZShpbmRleCwgZW5kKTtcblxuICAgICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICAgIGlmIChzZWdtZW50KSB7XG4gICAgICAgICAgICBpbmRleCArPSBzdHIubGVuZ3RoO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWdtZW50ID0gW107XG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBlbmQpIHtcbiAgICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICAgIHZhbHVlID0gdGVtcC52YWx1ZTtcbiAgICAgICAgICAgICAgaW5kZXggPSB0ZW1wLnJlc3Q7XG4gICAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhY2hlZFNlZ21lbnRzW3N0cl0gPSBzZWdtZW50O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlZCBjb2x1bW4uXG4gICAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiArIHNlZ21lbnRbMF07XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIC8vIE9yaWdpbmFsIHNvdXJjZS5cbiAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgICAgcHJldmlvdXNTb3VyY2UgKz0gc2VnbWVudFsxXTtcblxuICAgICAgICAgICAgLy8gT3JpZ2luYWwgbGluZS5cbiAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgICAgcHJldmlvdXNPcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcbiAgICAgICAgICAgIC8vIExpbmVzIGFyZSBzdG9yZWQgMC1iYXNlZFxuICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgICAgLy8gT3JpZ2luYWwgY29sdW1uLlxuICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gKyBzZWdtZW50WzNdO1xuICAgICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA+IDQpIHtcbiAgICAgICAgICAgICAgLy8gT3JpZ2luYWwgbmFtZS5cbiAgICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgICAgcHJldmlvdXNOYW1lICs9IHNlZ21lbnRbNF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ2VuZXJhdGVkTWFwcGluZ3MucHVzaChtYXBwaW5nKTtcbiAgICAgICAgICBpZiAodHlwZW9mIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBxdWlja1NvcnQoZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gZ2VuZXJhdGVkTWFwcGluZ3M7XG5cbiAgICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzID0gb3JpZ2luYWxNYXBwaW5ncztcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSBtYXBwaW5nIHRoYXQgYmVzdCBtYXRjaGVzIHRoZSBoeXBvdGhldGljYWwgXCJuZWVkbGVcIiBtYXBwaW5nIHRoYXRcbiAgICogd2UgYXJlIHNlYXJjaGluZyBmb3IgaW4gdGhlIGdpdmVuIFwiaGF5c3RhY2tcIiBvZiBtYXBwaW5ncy5cbiAgICovXG4gIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZyA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZmluZE1hcHBpbmcoYU5lZWRsZSwgYU1hcHBpbmdzLCBhTGluZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgICAgLy8gVG8gcmV0dXJuIHRoZSBwb3NpdGlvbiB3ZSBhcmUgc2VhcmNoaW5nIGZvciwgd2UgbXVzdCBmaXJzdCBmaW5kIHRoZVxuICAgICAgLy8gbWFwcGluZyBmb3IgdGhlIGdpdmVuIHBvc2l0aW9uIGFuZCB0aGVuIHJldHVybiB0aGUgb3Bwb3NpdGUgcG9zaXRpb24gaXRcbiAgICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgICAvLyBmaW5kIHRoZSBiZXN0IG1hcHBpbmcuXG5cbiAgICAgIGlmIChhTmVlZGxlW2FMaW5lTmFtZV0gPD0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBhTmVlZGxlW2FMaW5lTmFtZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb2x1bW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCwgZ290ICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFOZWVkbGVbYUNvbHVtbk5hbWVdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaC5zZWFyY2goYU5lZWRsZSwgYU1hcHBpbmdzLCBhQ29tcGFyYXRvciwgYUJpYXMpO1xuICAgIH07XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdGhlIGxhc3QgY29sdW1uIGZvciBlYWNoIGdlbmVyYXRlZCBtYXBwaW5nLiBUaGUgbGFzdCBjb2x1bW4gaXNcbiAgICogaW5jbHVzaXZlLlxuICAgKi9cbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuY29tcHV0ZUNvbHVtblNwYW5zID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9jb21wdXRlQ29sdW1uU3BhbnMoKSB7XG4gICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICAgIC8vIE1hcHBpbmdzIGRvIG5vdCBjb250YWluIGEgZmllbGQgZm9yIHRoZSBsYXN0IGdlbmVyYXRlZCBjb2x1bW50LiBXZVxuICAgICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgICAgLy8gbWFwcGluZ3MgYXJlIGNvbnRpZ3VvdXMgKGkuZS4gZ2l2ZW4gdHdvIGNvbnNlY3V0aXZlIG1hcHBpbmdzLCB0aGVcbiAgICAgICAgLy8gZmlyc3QgbWFwcGluZyBlbmRzIHdoZXJlIHRoZSBzZWNvbmQgb25lIHN0YXJ0cykuXG4gICAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgICB2YXIgbmV4dE1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleCArIDFdO1xuXG4gICAgICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBsYXN0IG1hcHBpbmcgZm9yIGVhY2ggbGluZSBzcGFucyB0aGUgZW50aXJlIGxpbmUuXG4gICAgICAgIG1hcHBpbmcubGFzdEdlbmVyYXRlZENvbHVtbiA9IEluZmluaXR5O1xuICAgICAgfVxuICAgIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICAgKiBzb3VyY2UncyBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zIHByb3ZpZGVkLiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3RcbiAgICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICAgKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAgICogICAgICdTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAgICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAgICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICAgKiAgICAgRGVmYXVsdHMgdG8gJ1NvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAgICpcbiAgICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICAgKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gICAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAgICovXG4gIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICAgIH07XG5cbiAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgICBuZWVkbGUsXG4gICAgICAgIHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLFxuICAgICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgICAgXCJnZW5lcmF0ZWRDb2x1bW5cIixcbiAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCxcbiAgICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgICApO1xuXG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZWVkbGUuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnc291cmNlJywgbnVsbCk7XG4gICAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5hdChzb3VyY2UpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHNvdXJjZSA9IHV0aWwuam9pbih0aGlzLnNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBuYW1lID0gdXRpbC5nZXRBcmcobWFwcGluZywgJ25hbWUnLCBudWxsKTtcbiAgICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmF0KG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnb3JpZ2luYWxMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfTtcblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gICAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMgPVxuICAgIGZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXJfaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKSB7XG4gICAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAgICF0aGlzLnNvdXJjZXNDb250ZW50LnNvbWUoZnVuY3Rpb24gKHNjKSB7IHJldHVybiBzYyA9PSBudWxsOyB9KTtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAgICogb3JpZ2luYWwgc291cmNlIGZpbGUuIFJldHVybnMgbnVsbCBpZiBubyBvcmlnaW5hbCBzb3VyY2UgY29udGVudCBpc1xuICAgKiBhdmFpbGlibGUuXG4gICAqL1xuICBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgIGFTb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgYVNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhhU291cmNlKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoYVNvdXJjZSldO1xuICAgICAgfVxuXG4gICAgICB2YXIgdXJsO1xuICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsXG4gICAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgICAgLy8gWFhYOiBmaWxlOi8vIFVSSXMgYW5kIGFic29sdXRlIHBhdGhzIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBmb3JcbiAgICAgICAgLy8gbWFueSB1c2Vycy4gV2UgY2FuIGhlbHAgdGhlbSBvdXQgd2hlbiB0aGV5IGV4cGVjdCBmaWxlOi8vIFVSSXMgdG9cbiAgICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTU5Ny5cbiAgICAgICAgdmFyIGZpbGVVcmlBYnNQYXRoID0gYVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgICAgaWYgKHVybC5zY2hlbWUgPT0gXCJmaWxlXCJcbiAgICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKGZpbGVVcmlBYnNQYXRoKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKCF1cmwucGF0aCB8fCB1cmwucGF0aCA9PSBcIi9cIilcbiAgICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgYVNvdXJjZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoXCIvXCIgKyBhU291cmNlKV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAgIC8vIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvci4gSW4gdGhhdCBjYXNlLCB3ZVxuICAgICAgLy8gZG9uJ3Qgd2FudCB0byB0aHJvdyBpZiB3ZSBjYW4ndCBmaW5kIHRoZSBzb3VyY2UgLSB3ZSBqdXN0IHdhbnQgdG9cbiAgICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAgICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gICAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAgICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAgICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gICAqICAgICAnU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gICAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gICAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAgICogICAgIERlZmF1bHRzIHRvICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gICAqXG4gICAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICAgKi9cbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuZ2VuZXJhdGVkUG9zaXRpb25Gb3IgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgICB2YXIgc291cmNlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKTtcbiAgICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5fc291cmNlcy5oYXMoc291cmNlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgb3JpZ2luYWxMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICAgIH07XG5cbiAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgICBuZWVkbGUsXG4gICAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgICApO1xuXG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICAgIH07XG4gICAgfTtcblxuICBleHBvcnRzLkJhc2ljU291cmNlTWFwQ29uc3VtZXIgPSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyO1xuXG4gIC8qKlxuICAgKiBBbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIgaW5zdGFuY2UgcmVwcmVzZW50cyBhIHBhcnNlZCBzb3VyY2UgbWFwIHdoaWNoXG4gICAqIHdlIGNhbiBxdWVyeSBmb3IgaW5mb3JtYXRpb24uIEl0IGRpZmZlcnMgZnJvbSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluXG4gICAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICAgKiBpbnB1dC5cbiAgICpcbiAgICogVGhlIG9ubHkgcGFyYW1ldGVyIGlzIGEgcmF3IHNvdXJjZSBtYXAgKGVpdGhlciBhcyBhIEpTT04gc3RyaW5nLCBvciBhbHJlYWR5XG4gICAqIHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMgZm9yIGluZGV4ZWQgc291cmNlIG1hcHMsIHRoZXlcbiAgICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gICAqXG4gICAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICAgKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICAgKiAgIC0gc2VjdGlvbnM6IEEgbGlzdCBvZiBzZWN0aW9uIGRlZmluaXRpb25zLlxuICAgKlxuICAgKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gICAqICAgLSBvZmZzZXQ6IFRoZSBvZmZzZXQgaW50byB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkIGF0IHdoaWNoIHRoaXMgc2VjdGlvblxuICAgKiAgICAgICBiZWdpbnMgdG8gYXBwbHksIGRlZmluZWQgYXMgYW4gb2JqZWN0IHdpdGggYSBcImxpbmVcIiBhbmQgXCJjb2x1bW5cIlxuICAgKiAgICAgICBmaWVsZC5cbiAgICogICAtIG1hcDogQSBzb3VyY2UgbWFwIGRlZmluaXRpb24uIFRoaXMgc291cmNlIG1hcCBjb3VsZCBhbHNvIGJlIGluZGV4ZWQsXG4gICAqICAgICAgIGJ1dCBkb2Vzbid0IGhhdmUgdG8gYmUuXG4gICAqXG4gICAqIEluc3RlYWQgb2YgdGhlIFwibWFwXCIgZmllbGQsIGl0J3MgYWxzbyBwb3NzaWJsZSB0byBoYXZlIGEgXCJ1cmxcIiBmaWVsZFxuICAgKiBzcGVjaWZ5aW5nIGEgVVJMIHRvIHJldHJpZXZlIGEgc291cmNlIG1hcCBmcm9tLCBidXQgdGhhdCdzIGN1cnJlbnRseVxuICAgKiB1bnN1cHBvcnRlZC5cbiAgICpcbiAgICogSGVyZSdzIGFuIGV4YW1wbGUgc291cmNlIG1hcCwgdGFrZW4gZnJvbSB0aGUgc291cmNlIG1hcCBzcGVjWzBdLCBidXRcbiAgICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAgICpcbiAgICogIHtcbiAgICogICAgdmVyc2lvbiA6IDMsXG4gICAqICAgIGZpbGU6IFwiYXBwLmpzXCIsXG4gICAqICAgIHNlY3Rpb25zOiBbe1xuICAgKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICAgKiAgICAgIG1hcDoge1xuICAgKiAgICAgICAgdmVyc2lvbiA6IDMsXG4gICAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAgICogICAgICAgIHNvdXJjZXM6IFtcImZvby5qc1wiLCBcImJhci5qc1wiXSxcbiAgICogICAgICAgIG5hbWVzOiBbXCJzcmNcIiwgXCJtYXBzXCIsIFwiYXJlXCIsIFwiZnVuXCJdLFxuICAgKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICAgKiAgICAgIH1cbiAgICogICAgfV0sXG4gICAqICB9XG4gICAqXG4gICAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAgICovXG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcihhU291cmNlTWFwKSB7XG4gICAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gICAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgICAgc291cmNlTWFwID0gSlNPTi5wYXJzZShhU291cmNlTWFwLnJlcGxhY2UoL15cXClcXF1cXH0nLywgJycpKTtcbiAgICB9XG5cbiAgICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgICB2YXIgc2VjdGlvbnMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzZWN0aW9ucycpO1xuXG4gICAgaWYgKHZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgdGhpcy5fc291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICAgIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICB2YXIgbGFzdE9mZnNldCA9IHtcbiAgICAgIGxpbmU6IC0xLFxuICAgICAgY29sdW1uOiAwXG4gICAgfTtcbiAgICB0aGlzLl9zZWN0aW9ucyA9IHNlY3Rpb25zLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgaWYgKHMudXJsKSB7XG4gICAgICAgIC8vIFRoZSB1cmwgZmllbGQgd2lsbCByZXF1aXJlIHN1cHBvcnQgZm9yIGFzeW5jaHJvbmljaXR5LlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9pc3N1ZXMvMTZcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgICAgfVxuICAgICAgdmFyIG9mZnNldCA9IHV0aWwuZ2V0QXJnKHMsICdvZmZzZXQnKTtcbiAgICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgICAgdmFyIG9mZnNldENvbHVtbiA9IHV0aWwuZ2V0QXJnKG9mZnNldCwgJ2NvbHVtbicpO1xuXG4gICAgICBpZiAob2Zmc2V0TGluZSA8IGxhc3RPZmZzZXQubGluZSB8fFxuICAgICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2VjdGlvbiBvZmZzZXRzIG11c3QgYmUgb3JkZXJlZCBhbmQgbm9uLW92ZXJsYXBwaW5nLicpO1xuICAgICAgfVxuICAgICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ2VuZXJhdGVkT2Zmc2V0OiB7XG4gICAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgICAvLyBlbmNvZGluZy9kZWNvZGluZyBmcm9tIFZMUS5cbiAgICAgICAgICBnZW5lcmF0ZWRMaW5lOiBvZmZzZXRMaW5lICsgMSxcbiAgICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgICAgfSxcbiAgICAgICAgY29uc3VtZXI6IG5ldyBTb3VyY2VNYXBDb25zdW1lcih1dGlsLmdldEFyZyhzLCAnbWFwJykpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuICBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAgICovXG4gIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBvcmlnaW5hbCBzb3VyY2VzLlxuICAgKi9cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNvdXJjZXMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLl9zZWN0aW9uc1tpXS5jb25zdW1lci5zb3VyY2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgc291cmNlcy5wdXNoKHRoaXMuX3NlY3Rpb25zW2ldLmNvbnN1bWVyLnNvdXJjZXNbal0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc291cmNlcztcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAgICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICAgKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAgICpcbiAgICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICAgKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gICAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAgICovXG4gIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUub3JpZ2luYWxQb3NpdGlvbkZvciA9XG4gICAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICAgIH07XG5cbiAgICAgIC8vIEZpbmQgdGhlIHNlY3Rpb24gY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9uIHdlJ3JlIHRyeWluZyB0byBtYXBcbiAgICAgIC8vIHRvIGFuIG9yaWdpbmFsIHBvc2l0aW9uLlxuICAgICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgICAgZnVuY3Rpb24obmVlZGxlLCBzZWN0aW9uKSB7XG4gICAgICAgICAgdmFyIGNtcCA9IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC0gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZTtcbiAgICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgICByZXR1cm4gY21wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgICBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICB9KTtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgICAgaWYgKCFzZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICAgIG5hbWU6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgIGxpbmU6IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC1cbiAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBuZWVkbGUuZ2VuZXJhdGVkTGluZVxuICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgOiAwKSxcbiAgICAgICAgYmlhczogYUFyZ3MuYmlhc1xuICAgICAgfSk7XG4gICAgfTtcblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gICAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gICAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zLmV2ZXJ5KGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHJldHVybiBzLmNvbnN1bWVyLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAgICogb3JpZ2luYWwgc291cmNlIGZpbGUuIFJldHVybnMgbnVsbCBpZiBubyBvcmlnaW5hbCBzb3VyY2UgY29udGVudCBpc1xuICAgKiBhdmFpbGFibGUuXG4gICAqL1xuICBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICAgIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgICB2YXIgY29udGVudCA9IHNlY3Rpb24uY29uc3VtZXIuc291cmNlQ29udGVudEZvcihhU291cmNlLCB0cnVlKTtcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgICAgfVxuICAgIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gICAqIGxpbmUsIGFuZCBjb2x1bW4gcG9zaXRpb25zIHByb3ZpZGVkLiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aFxuICAgKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqICAgLSBzb3VyY2U6IFRoZSBmaWxlbmFtZSBvZiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICAgKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gICAqXG4gICAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICAgKi9cbiAgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gICAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgICAgLy8gT25seSBjb25zaWRlciB0aGlzIHNlY3Rpb24gaWYgdGhlIHJlcXVlc3RlZCBzb3VyY2UgaXMgaW4gdGhlIGxpc3Qgb2ZcbiAgICAgICAgLy8gc291cmNlcyBvZiB0aGUgY29uc3VtZXIuXG4gICAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZXMuaW5kZXhPZih1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpKSA9PT0gLTEpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZ2VuZXJhdGVkUG9zaXRpb24gPSBzZWN0aW9uLmNvbnN1bWVyLmdlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKTtcbiAgICAgICAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uKSB7XG4gICAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmUgK1xuICAgICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gZ2VuZXJhdGVkUG9zaXRpb24ubGluZVxuICAgICAgICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICAgICAgICA6IDApXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gICAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICAgKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICAgKi9cbiAgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gICAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3BhcnNlTWFwcGluZ3MoYVN0ciwgYVNvdXJjZVJvb3QpIHtcbiAgICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcbiAgICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlY3Rpb25NYXBwaW5ncy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHZhciBtYXBwaW5nID0gc2VjdGlvbk1hcHBpbmdzW2ldO1xuXG4gICAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZVJvb3QgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHNvdXJjZSA9IHV0aWwuam9pbihzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKHNvdXJjZSk7XG5cbiAgICAgICAgICB2YXIgbmFtZSA9IHNlY3Rpb24uY29uc3VtZXIuX25hbWVzLmF0KG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgICAgICAgLy8gVGhlIG1hcHBpbmdzIGNvbWluZyBmcm9tIHRoZSBjb25zdW1lciBmb3IgdGhlIHNlY3Rpb24gaGF2ZVxuICAgICAgICAgIC8vIGdlbmVyYXRlZCBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZWN0aW9uLCBzbyB3ZVxuICAgICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgICAvLyBnZW5lcmF0ZWQgZmlsZS5cbiAgICAgICAgICB2YXIgYWRqdXN0ZWRNYXBwaW5nID0ge1xuICAgICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUgK1xuICAgICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmNvbHVtbiArXG4gICAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBtYXBwaW5nLmdlbmVyYXRlZExpbmUpXG4gICAgICAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICBvcmlnaW5hbExpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgICAgb3JpZ2luYWxDb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW4sXG4gICAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncy5wdXNoKGFkanVzdGVkTWFwcGluZyk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MucHVzaChhZGp1c3RlZE1hcHBpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBxdWlja1NvcnQodGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gICAgfTtcblxuICBleHBvcnRzLkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciA9IEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcjtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuICoqIG1vZHVsZSBpZCA9IDNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbntcbiAgZXhwb3J0cy5HUkVBVEVTVF9MT1dFUl9CT1VORCA9IDE7XG4gIGV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaC5cbiAgICpcbiAgICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICAgKiBAcGFyYW0gYUhpZ2ggSW5kaWNlcyBoZXJlIGFuZCBoaWdoZXIgZG8gbm90IGNvbnRhaW4gdGhlIG5lZWRsZS5cbiAgICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgYmVpbmcgc2VhcmNoZWQgZm9yLlxuICAgKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gICAqIEBwYXJhbSBhQ29tcGFyZSBGdW5jdGlvbiB3aGljaCB0YWtlcyB0d28gZWxlbWVudHMgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEuXG4gICAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAgICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gICAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gICAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAgICovXG4gIGZ1bmN0aW9uIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlcm1pbmF0ZXMgd2hlbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOlxuICAgIC8vXG4gICAgLy8gICAxLiBXZSBmaW5kIHRoZSBleGFjdCBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgICAvL1xuICAgIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgICAvLyAgICAgIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudC5cbiAgICAvL1xuICAgIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gICAgLy8gICAgICBlbGVtZW50IHRoYW4gdGhlIG9uZSB3ZSBhcmUgc2VhcmNoaW5nIGZvciwgc28gd2UgcmV0dXJuIC0xLlxuICAgIHZhciBtaWQgPSBNYXRoLmZsb29yKChhSGlnaCAtIGFMb3cpIC8gMikgKyBhTG93O1xuICAgIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgLy8gRm91bmQgdGhlIGVsZW1lbnQgd2UgYXJlIGxvb2tpbmcgZm9yLlxuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gICAgZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgICBpZiAoYUhpZ2ggLSBtaWQgPiAxKSB7XG4gICAgICAgIC8vIFRoZSBlbGVtZW50IGlzIGluIHRoZSB1cHBlciBoYWxmLlxuICAgICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGV4YWN0IG5lZWRsZSBlbGVtZW50IHdhcyBub3QgZm91bmQgaW4gdGhpcyBoYXlzdGFjay4gRGV0ZXJtaW5lIGlmXG4gICAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgICAgaWYgKGFCaWFzID09IGV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQpIHtcbiAgICAgICAgcmV0dXJuIGFIaWdoIDwgYUhheXN0YWNrLmxlbmd0aCA/IGFIaWdoIDogLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbWlkO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIE91ciBuZWVkbGUgaXMgbGVzcyB0aGFuIGFIYXlzdGFja1ttaWRdLlxuICAgICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAgIC8vIFRoZSBlbGVtZW50IGlzIGluIHRoZSBsb3dlciBoYWxmLlxuICAgICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKGFMb3csIG1pZCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpO1xuICAgICAgfVxuXG4gICAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgICAgaWYgKGFCaWFzID09IGV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQpIHtcbiAgICAgICAgcmV0dXJuIG1pZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhTG93IDwgMCA/IC0xIDogYUxvdztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBiaW5hcnkgc2VhcmNoIHdoaWNoIHdpbGwgYWx3YXlzIHRyeSBhbmQgcmV0dXJuXG4gICAqIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBlbGVtZW50IGlmIHRoZXJlIGlzIG5vIGV4YWN0IGhpdC4gVGhpcyBpcyBiZWNhdXNlXG4gICAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAgICogYW5kIHRoZXJlIGlzIGFuIGltcGxpY2l0IHJlZ2lvbiBiZXR3ZWVuIGVhY2ggb2YgdGhlbSwgc28gYSBtaXNzIGp1c3QgbWVhbnNcbiAgICogdGhhdCB5b3UgYXJlbid0IG9uIHRoZSB2ZXJ5IHN0YXJ0IG9mIGEgcmVnaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCB5b3UgYXJlIGxvb2tpbmcgZm9yLlxuICAgKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBhcnJheSB0aGF0IGlzIGJlaW5nIHNlYXJjaGVkLlxuICAgKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICAgKiAgICAgYXJyYXkgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5lZWRsZSBpcyBsZXNzXG4gICAqICAgICB0aGFuLCBlcXVhbCB0bywgb3IgZ3JlYXRlciB0aGFuIHRoZSBlbGVtZW50LCByZXNwZWN0aXZlbHkuXG4gICAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAgICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gICAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gICAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAgICogICAgIERlZmF1bHRzIHRvICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICAgKi9cbiAgZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgICBpZiAoYUhheXN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHJlY3Vyc2l2ZVNlYXJjaCgtMSwgYUhheXN0YWNrLmxlbmd0aCwgYU5lZWRsZSwgYUhheXN0YWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhQ29tcGFyZSwgYUJpYXMgfHwgZXhwb3J0cy5HUkVBVEVTVF9MT1dFUl9CT1VORCk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAgIC8vIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IuIEhvd2V2ZXIsIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIHN1Y2hcbiAgICAvLyBlbGVtZW50LiBNYWtlIHN1cmUgd2UgYWx3YXlzIHJldHVybiB0aGUgc21hbGxlc3Qgb2YgdGhlc2UuXG4gICAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgICBpZiAoYUNvbXBhcmUoYUhheXN0YWNrW2luZGV4XSwgYUhheXN0YWNrW2luZGV4IC0gMV0sIHRydWUpICE9PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLS1pbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH07XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vbGliL2JpbmFyeS1zZWFyY2guanNcbiAqKiBtb2R1bGUgaWQgPSA0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG57XG4gIHZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbiAgLyoqXG4gICAqIEEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggaXMgYSBjb21iaW5hdGlvbiBvZiBhbiBhcnJheSBhbmQgYSBzZXQuIEFkZGluZyBhIG5ld1xuICAgKiBtZW1iZXIgaXMgTygxKSwgdGVzdGluZyBmb3IgbWVtYmVyc2hpcCBpcyBPKDEpLCBhbmQgZmluZGluZyB0aGUgaW5kZXggb2YgYW5cbiAgICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICAgKiBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQgZm9yIG1lbWJlcnNoaXAuXG4gICAqL1xuICBmdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgICB0aGlzLl9hcnJheSA9IFtdO1xuICAgIHRoaXMuX3NldCA9IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2QgZm9yIGNyZWF0aW5nIEFycmF5U2V0IGluc3RhbmNlcyBmcm9tIGFuIGV4aXN0aW5nIGFycmF5LlxuICAgKi9cbiAgQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICAgIHZhciBzZXQgPSBuZXcgQXJyYXlTZXQoKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYUFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gICAgfVxuICAgIHJldHVybiBzZXQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybiBob3cgbWFueSB1bmlxdWUgaXRlbXMgYXJlIGluIHRoaXMgQXJyYXlTZXQuIElmIGR1cGxpY2F0ZXMgaGF2ZSBiZWVuXG4gICAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICAgKlxuICAgKiBAcmV0dXJucyBOdW1iZXJcbiAgICovXG4gIEFycmF5U2V0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gQXJyYXlTZXRfc2l6ZSgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5fc2V0KS5sZW5ndGg7XG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIHRoaXMgc2V0LlxuICAgKlxuICAgKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAgICovXG4gIEFycmF5U2V0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBBcnJheVNldF9hZGQoYVN0ciwgYUFsbG93RHVwbGljYXRlcykge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICB2YXIgaXNEdXBsaWNhdGUgPSB0aGlzLl9zZXQuaGFzT3duUHJvcGVydHkoc1N0cik7XG4gICAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgICBpZiAoIWlzRHVwbGljYXRlIHx8IGFBbGxvd0R1cGxpY2F0ZXMpIHtcbiAgICAgIHRoaXMuX2FycmF5LnB1c2goYVN0cik7XG4gICAgfVxuICAgIGlmICghaXNEdXBsaWNhdGUpIHtcbiAgICAgIHRoaXMuX3NldFtzU3RyXSA9IGlkeDtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gICAqXG4gICAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICAgKi9cbiAgQXJyYXlTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIEFycmF5U2V0X2hhcyhhU3RyKSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiB0aGlzLl9zZXQuaGFzT3duUHJvcGVydHkoc1N0cik7XG4gIH07XG5cbiAgLyoqXG4gICAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICAgKlxuICAgKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAgICovXG4gIEFycmF5U2V0LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gQXJyYXlTZXRfaW5kZXhPZihhU3RyKSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIGlmICh0aGlzLl9zZXQuaGFzT3duUHJvcGVydHkoc1N0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZXRbc1N0cl07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignXCInICsgYVN0ciArICdcIiBpcyBub3QgaW4gdGhlIHNldC4nKTtcbiAgfTtcblxuICAvKipcbiAgICogV2hhdCBpcyB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXg/XG4gICAqXG4gICAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICAgKi9cbiAgQXJyYXlTZXQucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gQXJyYXlTZXRfYXQoYUlkeCkge1xuICAgIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2FycmF5W2FJZHhdO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gICAqIGluZGljYXRlZCBieSBpbmRleE9mKS4gTm90ZSB0aGF0IHRoaXMgaXMgYSBjb3B5IG9mIHRoZSBpbnRlcm5hbCBhcnJheSB1c2VkXG4gICAqIGZvciBzdG9yaW5nIHRoZSBtZW1iZXJzIHNvIHRoYXQgbm8gb25lIGNhbiBtZXNzIHdpdGggaW50ZXJuYWwgc3RhdGUuXG4gICAqL1xuICBBcnJheVNldC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIEFycmF5U2V0X3RvQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5LnNsaWNlKCk7XG4gIH07XG5cbiAgZXhwb3J0cy5BcnJheVNldCA9IEFycmF5U2V0O1xufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2xpYi9hcnJheS1zZXQuanNcbiAqKiBtb2R1bGUgaWQgPSA1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqIEJhc2VkIG9uIHRoZSBCYXNlIDY0IFZMUSBpbXBsZW1lbnRhdGlvbiBpbiBDbG9zdXJlIENvbXBpbGVyOlxuICogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jbG9zdXJlLWNvbXBpbGVyL3NvdXJjZS9icm93c2UvdHJ1bmsvc3JjL2NvbS9nb29nbGUvZGVidWdnaW5nL3NvdXJjZW1hcC9CYXNlNjRWTFEuamF2YVxuICpcbiAqIENvcHlyaWdodCAyMDExIFRoZSBDbG9zdXJlIENvbXBpbGVyIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZVxuICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZFxuICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkXG4gKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSxcbiAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWVxuICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG57XG4gIHZhciBiYXNlNjQgPSByZXF1aXJlKCcuL2Jhc2U2NCcpO1xuXG4gIC8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuICAvLyBsZW5ndGggcXVhbnRpdGllcyB3ZSB1c2UgaW4gdGhlIHNvdXJjZSBtYXAgc3BlYywgdGhlIGZpcnN0IGJpdCBpcyB0aGUgc2lnbixcbiAgLy8gdGhlIG5leHQgZm91ciBiaXRzIGFyZSB0aGUgYWN0dWFsIHZhbHVlLCBhbmQgdGhlIDZ0aCBiaXQgaXMgdGhlXG4gIC8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbiAgLy8gZGlnaXRzIGluIHRoaXMgdmFsdWUgZm9sbG93aW5nIHRoaXMgZGlnaXQuXG4gIC8vXG4gIC8vICAgQ29udGludWF0aW9uXG4gIC8vICAgfCAgICBTaWduXG4gIC8vICAgfCAgICB8XG4gIC8vICAgViAgICBWXG4gIC8vICAgMTAxMDExXG5cbiAgdmFyIFZMUV9CQVNFX1NISUZUID0gNTtcblxuICAvLyBiaW5hcnk6IDEwMDAwMFxuICB2YXIgVkxRX0JBU0UgPSAxIDw8IFZMUV9CQVNFX1NISUZUO1xuXG4gIC8vIGJpbmFyeTogMDExMTExXG4gIHZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4gIC8vIGJpbmFyeTogMTAwMDAwXG4gIHZhciBWTFFfQ09OVElOVUFUSU9OX0JJVCA9IFZMUV9CQVNFO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBmcm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXNcbiAgICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gICAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICAgKiAgIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KVxuICAgKi9cbiAgZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gICAgcmV0dXJuIGFWYWx1ZSA8IDBcbiAgICAgID8gKCgtYVZhbHVlKSA8PCAxKSArIDFcbiAgICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gICAqIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiAgRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOlxuICAgKiAgIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTFcbiAgICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAgICovXG4gIGZ1bmN0aW9uIGZyb21WTFFTaWduZWQoYVZhbHVlKSB7XG4gICAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gICAgdmFyIHNoaWZ0ZWQgPSBhVmFsdWUgPj4gMTtcbiAgICByZXR1cm4gaXNOZWdhdGl2ZVxuICAgICAgPyAtc2hpZnRlZFxuICAgICAgOiBzaGlmdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJhc2UgNjQgVkxRIGVuY29kZWQgdmFsdWUuXG4gICAqL1xuICBleHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gICAgdmFyIGVuY29kZWQgPSBcIlwiO1xuICAgIHZhciBkaWdpdDtcblxuICAgIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gICAgZG8ge1xuICAgICAgZGlnaXQgPSB2bHEgJiBWTFFfQkFTRV9NQVNLO1xuICAgICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgICBpZiAodmxxID4gMCkge1xuICAgICAgICAvLyBUaGVyZSBhcmUgc3RpbGwgbW9yZSBkaWdpdHMgaW4gdGhpcyB2YWx1ZSwgc28gd2UgbXVzdCBtYWtlIHN1cmUgdGhlXG4gICAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgICBkaWdpdCB8PSBWTFFfQ09OVElOVUFUSU9OX0JJVDtcbiAgICAgIH1cbiAgICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gICAgfSB3aGlsZSAodmxxID4gMCk7XG5cbiAgICByZXR1cm4gZW5jb2RlZDtcbiAgfTtcblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUgbmV4dCBiYXNlIDY0IFZMUSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgYW5kIHJldHVybnMgdGhlXG4gICAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAgICovXG4gIGV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2RlY29kZShhU3RyLCBhSW5kZXgsIGFPdXRQYXJhbSkge1xuICAgIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gMDtcbiAgICB2YXIgc2hpZnQgPSAwO1xuICAgIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gICAgZG8ge1xuICAgICAgaWYgKGFJbmRleCA+PSBzdHJMZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgICAgfVxuXG4gICAgICBkaWdpdCA9IGJhc2U2NC5kZWNvZGUoYVN0ci5jaGFyQ29kZUF0KGFJbmRleCsrKSk7XG4gICAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IGRpZ2l0OiBcIiArIGFTdHIuY2hhckF0KGFJbmRleCAtIDEpKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgICBkaWdpdCAmPSBWTFFfQkFTRV9NQVNLO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgKGRpZ2l0IDw8IHNoaWZ0KTtcbiAgICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICAgIH0gd2hpbGUgKGNvbnRpbnVhdGlvbik7XG5cbiAgICBhT3V0UGFyYW0udmFsdWUgPSBmcm9tVkxRU2lnbmVkKHJlc3VsdCk7XG4gICAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG4gIH07XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vbGliL2Jhc2U2NC12bHEuanNcbiAqKiBtb2R1bGUgaWQgPSA2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG57XG4gIHZhciBpbnRUb0NoYXJNYXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycuc3BsaXQoJycpO1xuXG4gIC8qKlxuICAgKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICAgKi9cbiAgZXhwb3J0cy5lbmNvZGUgPSBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBpbnRUb0NoYXJNYXBbbnVtYmVyXTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gICAqIGZhaWx1cmUuXG4gICAqL1xuICBleHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICAgIHZhciBiaWdBID0gNjU7ICAgICAvLyAnQSdcbiAgICB2YXIgYmlnWiA9IDkwOyAgICAgLy8gJ1onXG5cbiAgICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gICAgdmFyIGxpdHRsZVogPSAxMjI7IC8vICd6J1xuXG4gICAgdmFyIHplcm8gPSA0ODsgICAgIC8vICcwJ1xuICAgIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICAgIHZhciBwbHVzID0gNDM7ICAgICAvLyAnKydcbiAgICB2YXIgc2xhc2ggPSA0NzsgICAgLy8gJy8nXG5cbiAgICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gICAgdmFyIG51bWJlck9mZnNldCA9IDUyO1xuXG4gICAgLy8gMCAtIDI1OiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlxuICAgIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICAgIHJldHVybiAoY2hhckNvZGUgLSBiaWdBKTtcbiAgICB9XG5cbiAgICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICAgIGlmIChsaXR0bGVBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGxpdHRsZVopIHtcbiAgICAgIHJldHVybiAoY2hhckNvZGUgLSBsaXR0bGVBICsgbGl0dGxlT2Zmc2V0KTtcbiAgICB9XG5cbiAgICAvLyA1MiAtIDYxOiAwMTIzNDU2Nzg5XG4gICAgaWYgKHplcm8gPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gbmluZSkge1xuICAgICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIDYyOiArXG4gICAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICAgIHJldHVybiA2MjtcbiAgICB9XG5cbiAgICAvLyA2MzogL1xuICAgIGlmIChjaGFyQ29kZSA9PSBzbGFzaCkge1xuICAgICAgcmV0dXJuIDYzO1xuICAgIH1cblxuICAgIC8vIEludmFsaWQgYmFzZTY0IGRpZ2l0LlxuICAgIHJldHVybiAtMTtcbiAgfTtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9saWIvYmFzZTY0LmpzXG4gKiogbW9kdWxlIGlkID0gN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xue1xuICAvLyBJdCB0dXJucyBvdXQgdGhhdCBzb21lIChtb3N0PykgSmF2YVNjcmlwdCBlbmdpbmVzIGRvbid0IHNlbGYtaG9zdFxuICAvLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuICAvLyBmYXN0ZXIgdGhhbiBKUyB3aGVuIGRvaW5nIHJhdyBDUFUtaW50ZW5zaXZlIHNvcnRpbmcuIEhvd2V2ZXIsIHdoZW4gdXNpbmcgYVxuICAvLyBjdXN0b20gY29tcGFyYXRvciBmdW5jdGlvbiwgY2FsbGluZyBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSBWTSdzIEMrKyBhbmRcbiAgLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuICAvLyB3b3JzZSBnZW5lcmF0ZWQgY29kZSBmb3IgdGhlIGNvbXBhcmF0b3IgZnVuY3Rpb24gdGhhbiB3b3VsZCBiZSBvcHRpbWFsLiBJblxuICAvLyBmYWN0LCB3aGVuIHNvcnRpbmcgd2l0aCBhIGNvbXBhcmF0b3IsIHRoZXNlIGNvc3RzIG91dHdlaWdoIHRoZSBiZW5lZml0cyBvZlxuICAvLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuICAvLyBhIH4zNTAwbXMgbWVhbiBzcGVlZC11cCBpbiBgYmVuY2gvYmVuY2guaHRtbGAuXG5cbiAgLyoqXG4gICAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAgICogICAgICAgIFRoZSBhcnJheS5cbiAgICogQHBhcmFtIHtOdW1iZXJ9IHhcbiAgICogICAgICAgIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgaXRlbS5cbiAgICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAgICogICAgICAgIFRoZSBpbmRleCBvZiB0aGUgc2Vjb25kIGl0ZW0uXG4gICAqL1xuICBmdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICAgIHZhciB0ZW1wID0gYXJ5W3hdO1xuICAgIGFyeVt4XSA9IGFyeVt5XTtcbiAgICBhcnlbeV0gPSB0ZW1wO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gbG93XG4gICAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICAgKiBAcGFyYW0ge051bWJlcn0gaGlnaFxuICAgKiAgICAgICAgVGhlIHVwcGVyIGJvdW5kIG9uIHRoZSByYW5nZS5cbiAgICovXG4gIGZ1bmN0aW9uIHJhbmRvbUludEluUmFuZ2UobG93LCBoaWdoKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobG93ICsgKE1hdGgucmFuZG9tKCkgKiAoaGlnaCAtIGxvdykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgUXVpY2sgU29ydCBhbGdvcml0aG0uXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICAgKiAgICAgICAgQW4gYXJyYXkgdG8gc29ydC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICAgKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICAgKiBAcGFyYW0ge051bWJlcn0gcFxuICAgKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gICAqIEBwYXJhbSB7TnVtYmVyfSByXG4gICAqICAgICAgICBFbmQgaW5kZXggb2YgdGhlIGFycmF5XG4gICAqL1xuICBmdW5jdGlvbiBkb1F1aWNrU29ydChhcnksIGNvbXBhcmF0b3IsIHAsIHIpIHtcbiAgICAvLyBJZiBvdXIgbG93ZXIgYm91bmQgaXMgbGVzcyB0aGFuIG91ciB1cHBlciBib3VuZCwgd2UgKDEpIHBhcnRpdGlvbiB0aGVcbiAgICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gICAgLy8gdGhlIGVtcHR5IGFycmF5IGFuZCBvdXIgYmFzZSBjYXNlLlxuXG4gICAgaWYgKHAgPCByKSB7XG4gICAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgICAgLy9cbiAgICAgIC8vIFRoZSBwYXJ0aXRpb25pbmcgY2hvb3NlcyBhIHBpdm90IGJldHdlZW4gYHBgIGFuZCBgcmAgYW5kIG1vdmVzIGFsbFxuICAgICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAgIC8vIGFsbCB0aGUgZWxlbWVudHMgdGhhdCBhcmUgZ3JlYXRlciB0aGFuIGl0IGFmdGVyIGl0LiBUaGUgZWZmZWN0IGlzIHRoYXRcbiAgICAgIC8vIG9uY2UgcGFydGl0aW9uIGlzIGRvbmUsIHRoZSBwaXZvdCBpcyBpbiB0aGUgZXhhY3QgcGxhY2UgaXQgd2lsbCBiZSB3aGVuXG4gICAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAgIC8vIGFnYWluLiBUaGlzIHJ1bnMgaW4gTyhuKSB0aW1lLlxuXG4gICAgICAvLyBBbHdheXMgY2hvb3NlIGEgcmFuZG9tIHBpdm90IHNvIHRoYXQgYW4gaW5wdXQgYXJyYXkgd2hpY2ggaXMgcmV2ZXJzZVxuICAgICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgICB2YXIgcGl2b3RJbmRleCA9IHJhbmRvbUludEluUmFuZ2UocCwgcik7XG4gICAgICB2YXIgaSA9IHAgLSAxO1xuXG4gICAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgICB2YXIgcGl2b3QgPSBhcnlbcl07XG5cbiAgICAgIC8vIEltbWVkaWF0ZWx5IGFmdGVyIGBqYCBpcyBpbmNyZW1lbnRlZCBpbiB0aGlzIGxvb3AsIHRoZSBmb2xsb3dpbmcgaG9sZFxuICAgICAgLy8gdHJ1ZTpcbiAgICAgIC8vXG4gICAgICAvLyAgICogRXZlcnkgZWxlbWVudCBpbiBgYXJ5W3AgLi4gaV1gIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcGl2b3QuXG4gICAgICAvL1xuICAgICAgLy8gICAqIEV2ZXJ5IGVsZW1lbnQgaW4gYGFyeVtpKzEgLi4gai0xXWAgaXMgZ3JlYXRlciB0aGFuIHRoZSBwaXZvdC5cbiAgICAgIGZvciAodmFyIGogPSBwOyBqIDwgcjsgaisrKSB7XG4gICAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgc3dhcChhcnksIGksIGopO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN3YXAoYXJ5LCBpICsgMSwgaik7XG4gICAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgICAvLyAoMikgUmVjdXJzZSBvbiBlYWNoIGhhbGYuXG5cbiAgICAgIGRvUXVpY2tTb3J0KGFyeSwgY29tcGFyYXRvciwgcCwgcSAtIDEpO1xuICAgICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgdGhlIGdpdmVuIGFycmF5IGluLXBsYWNlIHdpdGggdGhlIGdpdmVuIGNvbXBhcmF0b3IgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICAgKiAgICAgICAgQW4gYXJyYXkgdG8gc29ydC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICAgKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICAgKi9cbiAgZXhwb3J0cy5xdWlja1NvcnQgPSBmdW5jdGlvbiAoYXJ5LCBjb21wYXJhdG9yKSB7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG4gIH07XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vbGliL3F1aWNrLXNvcnQuanNcbiAqKiBtb2R1bGUgaWQgPSA4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG57XG4gIHZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbiAgdmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbiAgdmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbiAgdmFyIE1hcHBpbmdMaXN0ID0gcmVxdWlyZSgnLi9tYXBwaW5nLWxpc3QnKS5NYXBwaW5nTGlzdDtcblxuICAvKipcbiAgICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICAgKiBiZWluZyBidWlsdCBpbmNyZW1lbnRhbGx5LiBZb3UgbWF5IHBhc3MgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZ1xuICAgKiBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAgIC0gZmlsZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICAgKiAgIC0gc291cmNlUm9vdDogQSByb290IGZvciBhbGwgcmVsYXRpdmUgVVJMcyBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gICAqL1xuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3IoYUFyZ3MpIHtcbiAgICBpZiAoIWFBcmdzKSB7XG4gICAgICBhQXJncyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLl9maWxlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdmaWxlJywgbnVsbCk7XG4gICAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICAgIHRoaXMuX3NraXBWYWxpZGF0aW9uID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdza2lwVmFsaWRhdGlvbicsIGZhbHNlKTtcbiAgICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgICB0aGlzLl9tYXBwaW5ncyA9IG5ldyBNYXBwaW5nTGlzdCgpO1xuICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gIH1cblxuICBTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl92ZXJzaW9uID0gMztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICAgKlxuICAgKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAuXG4gICAqL1xuICBTb3VyY2VNYXBHZW5lcmF0b3IuZnJvbVNvdXJjZU1hcCA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2Zyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcENvbnN1bWVyKSB7XG4gICAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgICAgdmFyIGdlbmVyYXRvciA9IG5ldyBTb3VyY2VNYXBHZW5lcmF0b3Ioe1xuICAgICAgICBmaWxlOiBhU291cmNlTWFwQ29uc3VtZXIuZmlsZSxcbiAgICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgICAgfSk7XG4gICAgICBhU291cmNlTWFwQ29uc3VtZXIuZWFjaE1hcHBpbmcoZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgICBsaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgbmV3TWFwcGluZy5zb3VyY2UgPSBtYXBwaW5nLnNvdXJjZTtcbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5ld01hcHBpbmcub3JpZ2luYWwgPSB7XG4gICAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5ld01hcHBpbmcubmFtZSA9IG1hcHBpbmcubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBnZW5lcmF0b3IuYWRkTWFwcGluZyhuZXdNYXBwaW5nKTtcbiAgICAgIH0pO1xuICAgICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICAgKiBzb3VyY2UncyBsaW5lIGFuZCBjb2x1bW4gZm9yIHRoaXMgc291cmNlIG1hcCBiZWluZyBjcmVhdGVkLiBUaGUgbWFwcGluZ1xuICAgKiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAgIC0gZ2VuZXJhdGVkOiBBbiBvYmplY3Qgd2l0aCB0aGUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMuXG4gICAqICAgLSBvcmlnaW5hbDogQW4gb2JqZWN0IHdpdGggdGhlIG9yaWdpbmFsIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMuXG4gICAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICAgKiAgIC0gbmFtZTogQW4gb3B0aW9uYWwgb3JpZ2luYWwgdG9rZW4gbmFtZSBmb3IgdGhpcyBtYXBwaW5nLlxuICAgKi9cbiAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfYWRkTWFwcGluZyhhQXJncykge1xuICAgICAgdmFyIGdlbmVyYXRlZCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZ2VuZXJhdGVkJyk7XG4gICAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgICB2YXIgc291cmNlID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgIHZhciBuYW1lID0gdXRpbC5nZXRBcmcoYUFyZ3MsICduYW1lJywgbnVsbCk7XG5cbiAgICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVNYXBwaW5nKGdlbmVyYXRlZCwgb3JpZ2luYWwsIHNvdXJjZSwgbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzb3VyY2UgIT0gbnVsbCAmJiAhdGhpcy5fc291cmNlcy5oYXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLl9zb3VyY2VzLmFkZChzb3VyY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9tYXBwaW5ncy5hZGQoe1xuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uLFxuICAgICAgICBvcmlnaW5hbExpbmU6IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwubGluZSxcbiAgICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgbmFtZTogbmFtZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAvKipcbiAgICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAgICovXG4gIFNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgICB2YXIgc291cmNlID0gYVNvdXJjZUZpbGU7XG4gICAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFTb3VyY2VDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBfc291cmNlc0NvbnRlbnRzIG1hcCBpZiB0aGUgcHJvcGVydHkgaXMgbnVsbC5cbiAgICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhzb3VyY2UpXSA9IGFTb3VyY2VDb250ZW50O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgICAgLy8gSWYgdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwIGlzIGVtcHR5LCBzZXQgdGhlIHByb3BlcnR5IHRvIG51bGwuXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VzQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhzb3VyY2UpXTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gICAqIHNvdXJjZSBtYXAgYmVpbmcgZ2VuZXJhdGVkLiBFYWNoIG1hcHBpbmcgdG8gdGhlIHN1cHBsaWVkIHNvdXJjZSBmaWxlIGlzXG4gICAqIHJld3JpdHRlbiB1c2luZyB0aGUgc3VwcGxpZWQgc291cmNlIG1hcC4gTm90ZTogVGhlIHJlc29sdXRpb24gZm9yIHRoZVxuICAgKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICAgKlxuICAgKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBzb3VyY2UgbWFwIHRvIGJlIGFwcGxpZWQuXG4gICAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAgICogICAgICAgIElmIG9taXR0ZWQsIFNvdXJjZU1hcENvbnN1bWVyJ3MgZmlsZSBwcm9wZXJ0eSB3aWxsIGJlIHVzZWQuXG4gICAqIEBwYXJhbSBhU291cmNlTWFwUGF0aCBPcHRpb25hbC4gVGhlIGRpcm5hbWUgb2YgdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBtYXBcbiAgICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gICAqICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyBuZWVkZWQgd2hlbiB0aGUgdHdvIHNvdXJjZSBtYXBzIGFyZW4ndCBpbiB0aGUgc2FtZVxuICAgKiAgICAgICAgZGlyZWN0b3J5LCBhbmQgdGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZCBjb250YWlucyByZWxhdGl2ZSBzb3VyY2VcbiAgICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gICAqICAgICAgICByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwR2VuZXJhdG9yLlxuICAgKi9cbiAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FwcGx5U291cmNlTWFwKGFTb3VyY2VNYXBDb25zdW1lciwgYVNvdXJjZUZpbGUsIGFTb3VyY2VNYXBQYXRoKSB7XG4gICAgICB2YXIgc291cmNlRmlsZSA9IGFTb3VyY2VGaWxlO1xuICAgICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgICAgaWYgKGFTb3VyY2VGaWxlID09IG51bGwpIHtcbiAgICAgICAgaWYgKGFTb3VyY2VNYXBDb25zdW1lci5maWxlID09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCByZXF1aXJlcyBlaXRoZXIgYW4gZXhwbGljaXQgc291cmNlIGZpbGUsICcgK1xuICAgICAgICAgICAgJ29yIHRoZSBzb3VyY2UgbWFwXFwncyBcImZpbGVcIiBwcm9wZXJ0eS4gQm90aCB3ZXJlIG9taXR0ZWQuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc291cmNlRmlsZSA9IGFTb3VyY2VNYXBDb25zdW1lci5maWxlO1xuICAgICAgfVxuICAgICAgdmFyIHNvdXJjZVJvb3QgPSB0aGlzLl9zb3VyY2VSb290O1xuICAgICAgLy8gTWFrZSBcInNvdXJjZUZpbGVcIiByZWxhdGl2ZSBpZiBhbiBhYnNvbHV0ZSBVcmwgaXMgcGFzc2VkLlxuICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgIH1cbiAgICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgICAvLyB0aGUgbmFtZXMgYXJyYXkuXG4gICAgICB2YXIgbmV3U291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICAgICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAgIC8vIEZpbmQgbWFwcGluZ3MgZm9yIHRoZSBcInNvdXJjZUZpbGVcIlxuICAgICAgdGhpcy5fbWFwcGluZ3MudW5zb3J0ZWRGb3JFYWNoKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgaXQgY2FuIGJlIG1hcHBlZCBieSB0aGUgc291cmNlIG1hcCwgdGhlbiB1cGRhdGUgdGhlIG1hcHBpbmcuXG4gICAgICAgICAgdmFyIG9yaWdpbmFsID0gYVNvdXJjZU1hcENvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIENvcHkgbWFwcGluZ1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgbWFwcGluZy5zb3VyY2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBtYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gb3JpZ2luYWwuY29sdW1uO1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzb3VyY2UgPSBtYXBwaW5nLnNvdXJjZTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmICFuZXdTb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYW1lID0gbWFwcGluZy5uYW1lO1xuICAgICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgICBuZXdOYW1lcy5hZGQobmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgfSwgdGhpcyk7XG4gICAgICB0aGlzLl9zb3VyY2VzID0gbmV3U291cmNlcztcbiAgICAgIHRoaXMuX25hbWVzID0gbmV3TmFtZXM7XG5cbiAgICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKGFTb3VyY2VNYXBQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIHNvdXJjZUZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICB9LCB0aGlzKTtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAgICpcbiAgICogICAxLiBKdXN0IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24uXG4gICAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gICAqICAgMy4gR2VuZXJhdGVkIGFuZCBvcmlnaW5hbCBwb3NpdGlvbiwgb3JpZ2luYWwgc291cmNlLCBhcyB3ZWxsIGFzIGEgbmFtZVxuICAgKiAgICAgIHRva2VuLlxuICAgKlxuICAgKiBUbyBtYWludGFpbiBjb25zaXN0ZW5jeSwgd2UgdmFsaWRhdGUgdGhhdCBhbnkgbmV3IG1hcHBpbmcgYmVpbmcgYWRkZWQgZmFsbHNcbiAgICogaW4gdG8gb25lIG9mIHRoZXNlIGNhdGVnb3JpZXMuXG4gICAqL1xuICBTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl92YWxpZGF0ZU1hcHBpbmcgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl92YWxpZGF0ZU1hcHBpbmcoYUdlbmVyYXRlZCwgYU9yaWdpbmFsLCBhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAgIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4nIGluIGFHZW5lcmF0ZWRcbiAgICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgICAmJiAhYU9yaWdpbmFsICYmICFhU291cmNlICYmICFhTmFtZSkge1xuICAgICAgICAvLyBDYXNlIDEuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgICAgICAgICYmIGFPcmlnaW5hbC5saW5lID4gMCAmJiBhT3JpZ2luYWwuY29sdW1uID49IDBcbiAgICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgICAgLy8gQ2FzZXMgMiBhbmQgMy5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXBwaW5nOiAnICsgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgICBzb3VyY2U6IGFTb3VyY2UsXG4gICAgICAgICAgb3JpZ2luYWw6IGFPcmlnaW5hbCxcbiAgICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfTtcblxuICAvKipcbiAgICogU2VyaWFsaXplIHRoZSBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiB0byB0aGUgc3RyZWFtIG9mIGJhc2UgNjQgVkxRc1xuICAgKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICAgKi9cbiAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fc2VyaWFsaXplTWFwcGluZ3MgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRMaW5lID0gMTtcbiAgICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICAgIHZhciBwcmV2aW91c09yaWdpbmFsTGluZSA9IDA7XG4gICAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICB2YXIgbWFwcGluZztcbiAgICAgIHZhciBuYW1lSWR4O1xuICAgICAgdmFyIHNvdXJjZUlkeDtcblxuICAgICAgdmFyIG1hcHBpbmdzID0gdGhpcy5fbWFwcGluZ3MudG9BcnJheSgpO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIG1hcHBpbmcgPSBtYXBwaW5nc1tpXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lICE9PSBwcmV2aW91c0dlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gJzsnO1xuICAgICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgaWYgKCF1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmcsIG1hcHBpbmdzW2kgLSAxXSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgKz0gJywnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdCArPSBiYXNlNjRWTFEuZW5jb2RlKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlSWR4ID0gdGhpcy5fc291cmNlcy5pbmRleE9mKG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgICByZXN1bHQgKz0gYmFzZTY0VkxRLmVuY29kZShzb3VyY2VJZHggLSBwcmV2aW91c1NvdXJjZSk7XG4gICAgICAgICAgcHJldmlvdXNTb3VyY2UgPSBzb3VyY2VJZHg7XG5cbiAgICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgICAgcmVzdWx0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbExpbmUgLSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDE7XG5cbiAgICAgICAgICByZXN1bHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsQ29sdW1uKTtcbiAgICAgICAgICBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgbmFtZUlkeCA9IHRoaXMuX25hbWVzLmluZGV4T2YobWFwcGluZy5uYW1lKTtcbiAgICAgICAgICAgIHJlc3VsdCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgICAgcHJldmlvdXNOYW1lID0gbmFtZUlkeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gIFNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgICAgcmV0dXJuIGFTb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFTb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBrZXkgPSB1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSk7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSlcbiAgICAgICAgICA/IHRoaXMuX3NvdXJjZXNDb250ZW50c1trZXldXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfTtcblxuICAvKipcbiAgICogRXh0ZXJuYWxpemUgdGhlIHNvdXJjZSBtYXAuXG4gICAqL1xuICBTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3RvSlNPTigpIHtcbiAgICAgIHZhciBtYXAgPSB7XG4gICAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICAgIHNvdXJjZXM6IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgICBuYW1lczogdGhpcy5fbmFtZXMudG9BcnJheSgpLFxuICAgICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLl9maWxlICE9IG51bGwpIHtcbiAgICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHNvdXJjZSBtYXAgYmVpbmcgZ2VuZXJhdGVkIHRvIGEgc3RyaW5nLlxuICAgKi9cbiAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS50b1N0cmluZyA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3RvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICAgIH07XG5cbiAgZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSBTb3VyY2VNYXBHZW5lcmF0b3I7XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzXG4gKiogbW9kdWxlIGlkID0gOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDE0IE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xue1xuICB2YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBtYXBwaW5nQiBpcyBhZnRlciBtYXBwaW5nQSB3aXRoIHJlc3BlY3QgdG8gZ2VuZXJhdGVkXG4gICAqIHBvc2l0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2VuZXJhdGVkUG9zaXRpb25BZnRlcihtYXBwaW5nQSwgbWFwcGluZ0IpIHtcbiAgICAvLyBPcHRpbWl6ZWQgZm9yIG1vc3QgY29tbW9uIGNhc2VcbiAgICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICAgIHZhciBsaW5lQiA9IG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gICAgdmFyIGNvbHVtbkEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW47XG4gICAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gICAgcmV0dXJuIGxpbmVCID4gbGluZUEgfHwgbGluZUIgPT0gbGluZUEgJiYgY29sdW1uQiA+PSBjb2x1bW5BIHx8XG4gICAgICAgICAgIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCKSA8PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZGF0YSBzdHJ1Y3R1cmUgdG8gcHJvdmlkZSBhIHNvcnRlZCB2aWV3IG9mIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIGFcbiAgICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gICAqIGNhc2UgZm9yIGEgbGFyZ2Ugc3BlZWR1cCBpbiBjYXNlIG9mIG1hcHBpbmdzIGJlaW5nIGFkZGVkIGluIG9yZGVyLlxuICAgKi9cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gICAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgICB0aGlzLl9zb3J0ZWQgPSB0cnVlO1xuICAgIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gICAgdGhpcy5fbGFzdCA9IHtnZW5lcmF0ZWRMaW5lOiAtMSwgZ2VuZXJhdGVkQ29sdW1uOiAwfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdGVyYXRlIHRocm91Z2ggaW50ZXJuYWwgaXRlbXMuIFRoaXMgbWV0aG9kIHRha2VzIHRoZSBzYW1lIGFyZ3VtZW50cyB0aGF0XG4gICAqIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgdGFrZXMuXG4gICAqXG4gICAqIE5PVEU6IFRoZSBvcmRlciBvZiB0aGUgbWFwcGluZ3MgaXMgTk9UIGd1YXJhbnRlZWQuXG4gICAqL1xuICBNYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgICBmdW5jdGlvbiBNYXBwaW5nTGlzdF9mb3JFYWNoKGFDYWxsYmFjaywgYVRoaXNBcmcpIHtcbiAgICAgIHRoaXMuX2FycmF5LmZvckVhY2goYUNhbGxiYWNrLCBhVGhpc0FyZyk7XG4gICAgfTtcblxuICAvKipcbiAgICogQWRkIHRoZSBnaXZlbiBzb3VyY2UgbWFwcGluZy5cbiAgICpcbiAgICogQHBhcmFtIE9iamVjdCBhTWFwcGluZ1xuICAgKi9cbiAgTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICAgIGlmIChnZW5lcmF0ZWRQb3NpdGlvbkFmdGVyKHRoaXMuX2xhc3QsIGFNYXBwaW5nKSkge1xuICAgICAgdGhpcy5fbGFzdCA9IGFNYXBwaW5nO1xuICAgICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NvcnRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmbGF0LCBzb3J0ZWQgYXJyYXkgb2YgbWFwcGluZ3MuIFRoZSBtYXBwaW5ncyBhcmUgc29ydGVkIGJ5XG4gICAqIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAgICpcbiAgICogV0FSTklORzogVGhpcyBtZXRob2QgcmV0dXJucyBpbnRlcm5hbCBkYXRhIHdpdGhvdXQgY29weWluZywgZm9yXG4gICAqIHBlcmZvcm1hbmNlLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgTk9UIGJlIG11dGF0ZWQsIGFuZCBzaG91bGQgYmUgdHJlYXRlZCBhc1xuICAgKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICAgKiBjb3B5LlxuICAgKi9cbiAgTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICAgIGlmICghdGhpcy5fc29ydGVkKSB7XG4gICAgICB0aGlzLl9hcnJheS5zb3J0KHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQpO1xuICAgICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5O1xuICB9O1xuXG4gIGV4cG9ydHMuTWFwcGluZ0xpc3QgPSBNYXBwaW5nTGlzdDtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9saWIvbWFwcGluZy1saXN0LmpzXG4gKiogbW9kdWxlIGlkID0gMTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0=
|