From e9e7b73a2c56b26e49cba0baac1a187be109fdb2 Mon Sep 17 00:00:00 2001 From: Aaron Iba Date: Fri, 18 Dec 2009 18:44:23 +1100 Subject: removed duplicate trunk directory --HG-- rename : trunk/trunk/COPYING => trunk/COPYING rename : trunk/trunk/README => trunk/README rename : trunk/trunk/etherpad/.gitignore => trunk/etherpad/.gitignore rename : trunk/trunk/etherpad/bin/.gitignore => trunk/etherpad/bin/.gitignore rename : trunk/trunk/etherpad/bin/rebuildjar.sh => trunk/etherpad/bin/rebuildjar.sh rename : trunk/trunk/etherpad/bin/run-local.sh => trunk/etherpad/bin/run-local.sh rename : trunk/trunk/etherpad/bin/setup-mysql-db.sh => trunk/etherpad/bin/setup-mysql-db.sh rename : trunk/trunk/etherpad/etc/etherpad.localdev-default.properties => trunk/etherpad/etc/etherpad.localdev-default.properties rename : trunk/trunk/etherpad/lib/dnsjava-2.0.6.jar => trunk/etherpad/lib/dnsjava-2.0.6.jar rename : trunk/trunk/etherpad/lib/jbcrypt-0.2.jar => trunk/etherpad/lib/jbcrypt-0.2.jar rename : trunk/trunk/etherpad/lib/jcommon-1.0.15.jar => trunk/etherpad/lib/jcommon-1.0.15.jar rename : trunk/trunk/etherpad/lib/jfreechart-1.0.12.jar => trunk/etherpad/lib/jfreechart-1.0.12.jar rename : trunk/trunk/etherpad/src/etherpad/admin/shell.js => trunk/etherpad/src/etherpad/admin/shell.js rename : trunk/trunk/etherpad/src/etherpad/billing/billing.js => trunk/etherpad/src/etherpad/billing/billing.js rename : trunk/trunk/etherpad/src/etherpad/billing/fields.js => trunk/etherpad/src/etherpad/billing/fields.js rename : trunk/trunk/etherpad/src/etherpad/billing/team_billing.js => trunk/etherpad/src/etherpad/billing/team_billing.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/contentcollector.js => trunk/etherpad/src/etherpad/collab/ace/contentcollector.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/domline.js => trunk/etherpad/src/etherpad/collab/ace/domline.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/easysync1.js => trunk/etherpad/src/etherpad/collab/ace/easysync1.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/easysync2.js => trunk/etherpad/src/etherpad/collab/ace/easysync2.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/easysync2_tests.js => trunk/etherpad/src/etherpad/collab/ace/easysync2_tests.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/linestylefilter.js => trunk/etherpad/src/etherpad/collab/ace/linestylefilter.js rename : trunk/trunk/etherpad/src/etherpad/collab/collab_server.js => trunk/etherpad/src/etherpad/collab/collab_server.js rename : trunk/trunk/etherpad/src/etherpad/collab/collabroom_server.js => trunk/etherpad/src/etherpad/collab/collabroom_server.js rename : trunk/trunk/etherpad/src/etherpad/collab/genimg.js => trunk/etherpad/src/etherpad/collab/genimg.js rename : trunk/trunk/etherpad/src/etherpad/collab/json_sans_eval.js => trunk/etherpad/src/etherpad/collab/json_sans_eval.js rename : trunk/trunk/etherpad/src/etherpad/collab/readonly_server.js => trunk/etherpad/src/etherpad/collab/readonly_server.js rename : trunk/trunk/etherpad/src/etherpad/collab/server_utils.js => trunk/etherpad/src/etherpad/collab/server_utils.js rename : trunk/trunk/etherpad/src/etherpad/control/aboutcontrol.js => trunk/etherpad/src/etherpad/control/aboutcontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/admincontrol.js => trunk/etherpad/src/etherpad/control/admincontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/blogcontrol.js => trunk/etherpad/src/etherpad/control/blogcontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/connection_diagnostics_control.js => trunk/etherpad/src/etherpad/control/connection_diagnostics_control.js rename : trunk/trunk/etherpad/src/etherpad/control/global_pro_account_control.js => trunk/etherpad/src/etherpad/control/global_pro_account_control.js rename : trunk/trunk/etherpad/src/etherpad/control/historycontrol.js => trunk/etherpad/src/etherpad/control/historycontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/loadtestcontrol.js => trunk/etherpad/src/etherpad/control/loadtestcontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/maincontrol.js => trunk/etherpad/src/etherpad/control/maincontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/pad/pad_changeset_control.js => trunk/etherpad/src/etherpad/control/pad/pad_changeset_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pad/pad_control.js => trunk/etherpad/src/etherpad/control/pad/pad_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pad/pad_importexport_control.js => trunk/etherpad/src/etherpad/control/pad/pad_importexport_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pad/pad_view_control.js => trunk/etherpad/src/etherpad/control/pad/pad_view_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pne_manual_control.js => trunk/etherpad/src/etherpad/control/pne_manual_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pne_tracker_control.js => trunk/etherpad/src/etherpad/control/pne_tracker_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/account_control.js => trunk/etherpad/src/etherpad/control/pro/account_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/account_manager_control.js => trunk/etherpad/src/etherpad/control/pro/admin/account_manager_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/license_manager_control.js => trunk/etherpad/src/etherpad/control/pro/admin/license_manager_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js => trunk/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/pro_config_control.js => trunk/etherpad/src/etherpad/control/pro/admin/pro_config_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/team_billing_control.js => trunk/etherpad/src/etherpad/control/pro/admin/team_billing_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/pro_main_control.js => trunk/etherpad/src/etherpad/control/pro/pro_main_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/pro_padlist_control.js => trunk/etherpad/src/etherpad/control/pro/pro_padlist_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro_beta_control.js => trunk/etherpad/src/etherpad/control/pro_beta_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro_help_control.js => trunk/etherpad/src/etherpad/control/pro_help_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro_signup_control.js => trunk/etherpad/src/etherpad/control/pro_signup_control.js rename : trunk/trunk/etherpad/src/etherpad/control/scriptcontrol.js => trunk/etherpad/src/etherpad/control/scriptcontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/static_control.js => trunk/etherpad/src/etherpad/control/static_control.js rename : trunk/trunk/etherpad/src/etherpad/control/statscontrol.js => trunk/etherpad/src/etherpad/control/statscontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/store/eepnet_checkout_control.js => trunk/etherpad/src/etherpad/control/store/eepnet_checkout_control.js rename : trunk/trunk/etherpad/src/etherpad/control/store/storecontrol.js => trunk/etherpad/src/etherpad/control/store/storecontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/testcontrol.js => trunk/etherpad/src/etherpad/control/testcontrol.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0000_test.js => trunk/etherpad/src/etherpad/db_migrations/m0000_test.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js => trunk/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js => trunk/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js => trunk/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js => trunk/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js => trunk/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js => trunk/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js => trunk/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js => trunk/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js => trunk/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js => trunk/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js => trunk/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js => trunk/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js => trunk/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js => trunk/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js => trunk/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js => trunk/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js => trunk/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js => trunk/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js => trunk/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js => trunk/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js => trunk/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js => trunk/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js => trunk/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js => trunk/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js => trunk/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js => trunk/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0027_pro_config.js => trunk/etherpad/src/etherpad/db_migrations/m0027_pro_config.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js => trunk/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js => trunk/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js => trunk/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js => trunk/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js => trunk/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js => trunk/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js => trunk/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js => trunk/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js => trunk/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js => trunk/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js => trunk/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/migration_runner.js => trunk/etherpad/src/etherpad/db_migrations/migration_runner.js rename : trunk/trunk/etherpad/src/etherpad/debug.js => trunk/etherpad/src/etherpad/debug.js rename : trunk/trunk/etherpad/src/etherpad/globals.js => trunk/etherpad/src/etherpad/globals.js rename : trunk/trunk/etherpad/src/etherpad/helpers.js => trunk/etherpad/src/etherpad/helpers.js rename : trunk/trunk/etherpad/src/etherpad/importexport/importexport.js => trunk/etherpad/src/etherpad/importexport/importexport.js rename : trunk/trunk/etherpad/src/etherpad/legacy_urls.js => trunk/etherpad/src/etherpad/legacy_urls.js rename : trunk/trunk/etherpad/src/etherpad/licensing.js => trunk/etherpad/src/etherpad/licensing.js rename : trunk/trunk/etherpad/src/etherpad/log.js => trunk/etherpad/src/etherpad/log.js rename : trunk/trunk/etherpad/src/etherpad/metrics/metrics.js => trunk/etherpad/src/etherpad/metrics/metrics.js rename : trunk/trunk/etherpad/src/etherpad/pad/activepads.js => trunk/etherpad/src/etherpad/pad/activepads.js rename : trunk/trunk/etherpad/src/etherpad/pad/chatarchive.js => trunk/etherpad/src/etherpad/pad/chatarchive.js rename : trunk/trunk/etherpad/src/etherpad/pad/dbwriter.js => trunk/etherpad/src/etherpad/pad/dbwriter.js rename : trunk/trunk/etherpad/src/etherpad/pad/easysync2migration.js => trunk/etherpad/src/etherpad/pad/easysync2migration.js rename : trunk/trunk/etherpad/src/etherpad/pad/exporthtml.js => trunk/etherpad/src/etherpad/pad/exporthtml.js rename : trunk/trunk/etherpad/src/etherpad/pad/importhtml.js => trunk/etherpad/src/etherpad/pad/importhtml.js rename : trunk/trunk/etherpad/src/etherpad/pad/model.js => trunk/etherpad/src/etherpad/pad/model.js rename : trunk/trunk/etherpad/src/etherpad/pad/noprowatcher.js => trunk/etherpad/src/etherpad/pad/noprowatcher.js rename : trunk/trunk/etherpad/src/etherpad/pad/pad_migrations.js => trunk/etherpad/src/etherpad/pad/pad_migrations.js rename : trunk/trunk/etherpad/src/etherpad/pad/pad_security.js => trunk/etherpad/src/etherpad/pad/pad_security.js rename : trunk/trunk/etherpad/src/etherpad/pad/padevents.js => trunk/etherpad/src/etherpad/pad/padevents.js rename : trunk/trunk/etherpad/src/etherpad/pad/padusers.js => trunk/etherpad/src/etherpad/pad/padusers.js rename : trunk/trunk/etherpad/src/etherpad/pad/padutils.js => trunk/etherpad/src/etherpad/pad/padutils.js rename : trunk/trunk/etherpad/src/etherpad/pad/revisions.js => trunk/etherpad/src/etherpad/pad/revisions.js rename : trunk/trunk/etherpad/src/etherpad/pne/pne_utils.js => trunk/etherpad/src/etherpad/pne/pne_utils.js rename : trunk/trunk/etherpad/src/etherpad/pro/domains.js => trunk/etherpad/src/etherpad/pro/domains.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_account_auto_signin.js => trunk/etherpad/src/etherpad/pro/pro_account_auto_signin.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_accounts.js => trunk/etherpad/src/etherpad/pro/pro_accounts.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_config.js => trunk/etherpad/src/etherpad/pro/pro_config.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_pad_db.js => trunk/etherpad/src/etherpad/pro/pro_pad_db.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_pad_editors.js => trunk/etherpad/src/etherpad/pro/pro_pad_editors.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_padlist.js => trunk/etherpad/src/etherpad/pro/pro_padlist.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_padmeta.js => trunk/etherpad/src/etherpad/pro/pro_padmeta.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_quotas.js => trunk/etherpad/src/etherpad/pro/pro_quotas.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_utils.js => trunk/etherpad/src/etherpad/pro/pro_utils.js rename : trunk/trunk/etherpad/src/etherpad/quotas.js => trunk/etherpad/src/etherpad/quotas.js rename : trunk/trunk/etherpad/src/etherpad/sessions.js => trunk/etherpad/src/etherpad/sessions.js rename : trunk/trunk/etherpad/src/etherpad/statistics/exceptions.js => trunk/etherpad/src/etherpad/statistics/exceptions.js rename : trunk/trunk/etherpad/src/etherpad/statistics/statistics.js => trunk/etherpad/src/etherpad/statistics/statistics.js rename : trunk/trunk/etherpad/src/etherpad/store/checkout.js => trunk/etherpad/src/etherpad/store/checkout.js rename : trunk/trunk/etherpad/src/etherpad/store/eepnet_checkout.js => trunk/etherpad/src/etherpad/store/eepnet_checkout.js rename : trunk/trunk/etherpad/src/etherpad/store/eepnet_trial.js => trunk/etherpad/src/etherpad/store/eepnet_trial.js rename : trunk/trunk/etherpad/src/etherpad/testing/testutils.js => trunk/etherpad/src/etherpad/testing/testutils.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0000_test.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0000_test.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js rename : trunk/trunk/etherpad/src/etherpad/usage_stats/usage_stats.js => trunk/etherpad/src/etherpad/usage_stats/usage_stats.js rename : trunk/trunk/etherpad/src/etherpad/utils.js => trunk/etherpad/src/etherpad/utils.js rename : trunk/trunk/etherpad/src/main.js => trunk/etherpad/src/main.js rename : trunk/trunk/etherpad/src/static/crossdomain.xml => trunk/etherpad/src/static/crossdomain.xml rename : trunk/trunk/etherpad/src/static/css/admin/admin-stats.css => trunk/etherpad/src/static/css/admin/admin-stats.css rename : trunk/trunk/etherpad/src/static/css/beta.css => trunk/etherpad/src/static/css/beta.css rename : trunk/trunk/etherpad/src/static/css/broadcast.css => trunk/etherpad/src/static/css/broadcast.css rename : trunk/trunk/etherpad/src/static/css/connection_diagnostics.css => trunk/etherpad/src/static/css/connection_diagnostics.css rename : trunk/trunk/etherpad/src/static/css/etherpad.css => trunk/etherpad/src/static/css/etherpad.css rename : trunk/trunk/etherpad/src/static/css/fluxbb.css => trunk/etherpad/src/static/css/fluxbb.css rename : trunk/trunk/etherpad/src/static/css/framedpage.css => trunk/etherpad/src/static/css/framedpage.css rename : trunk/trunk/etherpad/src/static/css/global-pro-account.css => trunk/etherpad/src/static/css/global-pro-account.css rename : trunk/trunk/etherpad/src/static/css/home-opensource.css => trunk/etherpad/src/static/css/home-opensource.css rename : trunk/trunk/etherpad/src/static/css/home.css => trunk/etherpad/src/static/css/home.css rename : trunk/trunk/etherpad/src/static/css/lib/jquery.contextmenu.css => trunk/etherpad/src/static/css/lib/jquery.contextmenu.css rename : trunk/trunk/etherpad/src/static/css/pad.css => trunk/etherpad/src/static/css/pad.css rename : trunk/trunk/etherpad/src/static/css/pad2_ejs.css => trunk/etherpad/src/static/css/pad2_ejs.css rename : trunk/trunk/etherpad/src/static/css/pne-manual.css => trunk/etherpad/src/static/css/pne-manual.css rename : trunk/trunk/etherpad/src/static/css/pricing.css => trunk/etherpad/src/static/css/pricing.css rename : trunk/trunk/etherpad/src/static/css/pro-help.css => trunk/etherpad/src/static/css/pro-help.css rename : trunk/trunk/etherpad/src/static/css/pro-signup.css => trunk/etherpad/src/static/css/pro-signup.css rename : trunk/trunk/etherpad/src/static/css/pro/account.css => trunk/etherpad/src/static/css/pro/account.css rename : trunk/trunk/etherpad/src/static/css/pro/framedpage-pro.css => trunk/etherpad/src/static/css/pro/framedpage-pro.css rename : trunk/trunk/etherpad/src/static/css/pro/padlist.css => trunk/etherpad/src/static/css/pro/padlist.css rename : trunk/trunk/etherpad/src/static/css/pro/payment-required.css => trunk/etherpad/src/static/css/pro/payment-required.css rename : trunk/trunk/etherpad/src/static/css/pro/pro-admin.css => trunk/etherpad/src/static/css/pro/pro-admin.css rename : trunk/trunk/etherpad/src/static/css/pro/pro-home.css => trunk/etherpad/src/static/css/pro/pro-home.css rename : trunk/trunk/etherpad/src/static/css/stats.css => trunk/etherpad/src/static/css/stats.css rename : trunk/trunk/etherpad/src/static/css/store/eepnet-checkout.css => trunk/etherpad/src/static/css/store/eepnet-checkout.css rename : trunk/trunk/etherpad/src/static/css/store/ondemand-billing.css => trunk/etherpad/src/static/css/store/ondemand-billing.css rename : trunk/trunk/etherpad/src/static/css/store/store.css => trunk/etherpad/src/static/css/store/store.css rename : trunk/trunk/etherpad/src/static/favicon.ico => trunk/etherpad/src/static/favicon.ico rename : trunk/trunk/etherpad/src/static/img/about/appjet-logo-large.gif => trunk/etherpad/src/static/img/about/appjet-logo-large.gif rename : trunk/trunk/etherpad/src/static/img/about/appjet-logo-medium.png => trunk/etherpad/src/static/img/about/appjet-logo-medium.png rename : trunk/trunk/etherpad/src/static/img/about/investors/mitchkapor.jpg => trunk/etherpad/src/static/img/about/investors/mitchkapor.jpg rename : trunk/trunk/etherpad/src/static/img/about/investors/pb.jpg => trunk/etherpad/src/static/img/about/investors/pb.jpg rename : trunk/trunk/etherpad/src/static/img/about/investors/pg.jpg => trunk/etherpad/src/static/img/about/investors/pg.jpg rename : trunk/trunk/etherpad/src/static/img/about/investors/sanjeev.jpg => trunk/etherpad/src/static/img/about/investors/sanjeev.jpg rename : trunk/trunk/etherpad/src/static/img/about/investors/seth.jpg => trunk/etherpad/src/static/img/about/investors/seth.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg => trunk/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-david-iphones.jpg => trunk/etherpad/src/static/img/about/people/aaron-david-iphones.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-google-air.jpg => trunk/etherpad/src/static/img/about/people/aaron-google-air.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot2.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot2.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot3.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot3.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/david-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/david-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/david-headshot.jpg => trunk/etherpad/src/static/img/about/people/david-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/davy-headshot.jpg => trunk/etherpad/src/static/img/about/people/davy-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/jd-headshot.jpg => trunk/etherpad/src/static/img/about/people/jd-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/rhonda-headshot.jpg => trunk/etherpad/src/static/img/about/people/rhonda-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/pier38.png => trunk/etherpad/src/static/img/about/pier38.png rename : trunk/trunk/etherpad/src/static/img/about/quote-close.png => trunk/etherpad/src/static/img/about/quote-close.png rename : trunk/trunk/etherpad/src/static/img/about/quote-open.png => trunk/etherpad/src/static/img/about/quote-open.png rename : trunk/trunk/etherpad/src/static/img/about/screencastpreview800x600.jpg => trunk/etherpad/src/static/img/about/screencastpreview800x600.jpg rename : trunk/trunk/etherpad/src/static/img/account/betawarn.jpg => trunk/etherpad/src/static/img/account/betawarn.jpg rename : trunk/trunk/etherpad/src/static/img/acecarets/000000.gif => trunk/etherpad/src/static/img/acecarets/000000.gif rename : trunk/trunk/etherpad/src/static/img/acecarets/666666.gif => trunk/etherpad/src/static/img/acecarets/666666.gif rename : trunk/trunk/etherpad/src/static/img/acecarets/999999.gif => trunk/etherpad/src/static/img/acecarets/999999.gif rename : trunk/trunk/etherpad/src/static/img/acecarets/default.gif => trunk/etherpad/src/static/img/acecarets/default.gif rename : trunk/trunk/etherpad/src/static/img/apr09/backgrad.png => trunk/etherpad/src/static/img/apr09/backgrad.png rename : trunk/trunk/etherpad/src/static/img/apr09/black35.png => trunk/etherpad/src/static/img/apr09/black35.png rename : trunk/trunk/etherpad/src/static/img/apr09/blank.gif => trunk/etherpad/src/static/img/apr09/blank.gif rename : trunk/trunk/etherpad/src/static/img/apr09/modalbar.gif => trunk/etherpad/src/static/img/apr09/modalbar.gif rename : trunk/trunk/etherpad/src/static/img/apr09/newpadicon.gif => trunk/etherpad/src/static/img/apr09/newpadicon.gif rename : trunk/trunk/etherpad/src/static/img/apr09/shadbot.png => trunk/etherpad/src/static/img/apr09/shadbot.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadleft.png => trunk/etherpad/src/static/img/apr09/shadleft.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadleftbot.png => trunk/etherpad/src/static/img/apr09/shadleftbot.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadlefttop.png => trunk/etherpad/src/static/img/apr09/shadlefttop.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadright.png => trunk/etherpad/src/static/img/apr09/shadright.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadrightbot.png => trunk/etherpad/src/static/img/apr09/shadrightbot.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadrighttop.png => trunk/etherpad/src/static/img/apr09/shadrighttop.png rename : trunk/trunk/etherpad/src/static/img/apr09/topbar.gif => trunk/etherpad/src/static/img/apr09/topbar.gif rename : trunk/trunk/etherpad/src/static/img/apr09/topbarlogo.gif => trunk/etherpad/src/static/img/apr09/topbarlogo.gif rename : trunk/trunk/etherpad/src/static/img/apr09/widthfull.gif => trunk/etherpad/src/static/img/apr09/widthfull.gif rename : trunk/trunk/etherpad/src/static/img/apr09/widthfullactive.gif => trunk/etherpad/src/static/img/apr09/widthfullactive.gif rename : trunk/trunk/etherpad/src/static/img/apr09/widthlim.gif => trunk/etherpad/src/static/img/apr09/widthlim.gif rename : trunk/trunk/etherpad/src/static/img/apr09/widthlimactive.gif => trunk/etherpad/src/static/img/apr09/widthlimactive.gif rename : trunk/trunk/etherpad/src/static/img/billing/amex.gif => trunk/etherpad/src/static/img/billing/amex.gif rename : trunk/trunk/etherpad/src/static/img/billing/creditcard.gif => trunk/etherpad/src/static/img/billing/creditcard.gif rename : trunk/trunk/etherpad/src/static/img/billing/csc-help.gif => trunk/etherpad/src/static/img/billing/csc-help.gif rename : trunk/trunk/etherpad/src/static/img/billing/disc.gif => trunk/etherpad/src/static/img/billing/disc.gif rename : trunk/trunk/etherpad/src/static/img/billing/invoice.gif => trunk/etherpad/src/static/img/billing/invoice.gif rename : trunk/trunk/etherpad/src/static/img/billing/mc.gif => trunk/etherpad/src/static/img/billing/mc.gif rename : trunk/trunk/etherpad/src/static/img/billing/paypal.gif => trunk/etherpad/src/static/img/billing/paypal.gif rename : trunk/trunk/etherpad/src/static/img/billing/visa.gif => trunk/etherpad/src/static/img/billing/visa.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif => trunk/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/new-features/importexport.gif => trunk/etherpad/src/static/img/blog/posts/new-features/importexport.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/new-features/richtext.gif => trunk/etherpad/src/static/img/blog/posts/new-features/richtext.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif => trunk/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/pricing-survey-results.png => trunk/etherpad/src/static/img/blog/posts/pricing-survey-results.png rename : trunk/trunk/etherpad/src/static/img/blog/posts/pricing-survey.png => trunk/etherpad/src/static/img/blog/posts/pricing-survey.png rename : trunk/trunk/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif => trunk/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-createpad.png => trunk/etherpad/src/static/img/davy/bg/home-createpad.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-features-bottom.gif => trunk/etherpad/src/static/img/davy/bg/home-features-bottom.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif => trunk/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-features-paid-top.gif => trunk/etherpad/src/static/img/davy/bg/home-features-paid-top.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-features-top.gif => trunk/etherpad/src/static/img/davy/bg/home-features-top.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-nav-selected.png => trunk/etherpad/src/static/img/davy/bg/home-nav-selected.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-screencast.png => trunk/etherpad/src/static/img/davy/bg/home-screencast.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/home2.png => trunk/etherpad/src/static/img/davy/bg/home2.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/product-nav-selected-white.png => trunk/etherpad/src/static/img/davy/bg/product-nav-selected-white.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/product-nav-selected.png => trunk/etherpad/src/static/img/davy/bg/product-nav-selected.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/product.png => trunk/etherpad/src/static/img/davy/bg/product.png rename : trunk/trunk/etherpad/src/static/img/davy/btn/createpad-home.gif => trunk/etherpad/src/static/img/davy/btn/createpad-home.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/createpad-large.gif => trunk/etherpad/src/static/img/davy/btn/createpad-large.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/createpad-small.gif => trunk/etherpad/src/static/img/davy/btn/createpad-small.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/intro-screencast.png => trunk/etherpad/src/static/img/davy/btn/intro-screencast.png rename : trunk/trunk/etherpad/src/static/img/davy/btn/intro-testimonials.png => trunk/etherpad/src/static/img/davy/btn/intro-testimonials.png rename : trunk/trunk/etherpad/src/static/img/davy/btn/learnmore.gif => trunk/etherpad/src/static/img/davy/btn/learnmore.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/signup-home-2.gif => trunk/etherpad/src/static/img/davy/btn/signup-home-2.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/signup-home-3.gif => trunk/etherpad/src/static/img/davy/btn/signup-home-3.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/signup-home-4.gif => trunk/etherpad/src/static/img/davy/btn/signup-home-4.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/signup-home.gif => trunk/etherpad/src/static/img/davy/btn/signup-home.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/uses-more.gif => trunk/etherpad/src/static/img/davy/btn/uses-more.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/32/114.png => trunk/etherpad/src/static/img/davy/gfx/32/114.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/32/15.png => trunk/etherpad/src/static/img/davy/gfx/32/15.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/32/65.png => trunk/etherpad/src/static/img/davy/gfx/32/65.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/32/78.png => trunk/etherpad/src/static/img/davy/gfx/32/78.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/bullet.gif => trunk/etherpad/src/static/img/davy/gfx/bullet.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/home-logo2.gif => trunk/etherpad/src/static/img/davy/gfx/home-logo2.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/home-screencast.png => trunk/etherpad/src/static/img/davy/gfx/home-screencast.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/plane.gif => trunk/etherpad/src/static/img/davy/gfx/plane.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/product-logo.gif => trunk/etherpad/src/static/img/davy/gfx/product-logo.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/screenshot.gif => trunk/etherpad/src/static/img/davy/gfx/screenshot.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-meetings.gif => trunk/etherpad/src/static/img/davy/gfx/use-meetings.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-meetings.png => trunk/etherpad/src/static/img/davy/gfx/use-meetings.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-programming.gif => trunk/etherpad/src/static/img/davy/gfx/use-programming.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-programming.png => trunk/etherpad/src/static/img/davy/gfx/use-programming.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-writing.gif => trunk/etherpad/src/static/img/davy/gfx/use-writing.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-writing.png => trunk/etherpad/src/static/img/davy/gfx/use-writing.png rename : trunk/trunk/etherpad/src/static/img/davy/txt/home-button.gif => trunk/etherpad/src/static/img/davy/txt/home-button.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/code.gif => trunk/etherpad/src/static/img/featuretour/code.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/edits.gif => trunk/etherpad/src/static/img/featuretour/edits.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/editsandusers.gif => trunk/etherpad/src/static/img/featuretour/editsandusers.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/padlock.png => trunk/etherpad/src/static/img/featuretour/padlock.png rename : trunk/trunk/etherpad/src/static/img/featuretour/revisions.gif => trunk/etherpad/src/static/img/featuretour/revisions.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/users.gif => trunk/etherpad/src/static/img/featuretour/users.gif rename : trunk/trunk/etherpad/src/static/img/feb09/framedheaderback.gif => trunk/etherpad/src/static/img/feb09/framedheaderback.gif rename : trunk/trunk/etherpad/src/static/img/feb09/framedheaderlogo.gif => trunk/etherpad/src/static/img/feb09/framedheaderlogo.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_firstp.gif => trunk/etherpad/src/static/img/feb09/home_firstp.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_firstp.png => trunk/etherpad/src/static/img/feb09/home_firstp.png rename : trunk/trunk/etherpad/src/static/img/feb09/home_firstp2.gif => trunk/etherpad/src/static/img/feb09/home_firstp2.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_h1.gif => trunk/etherpad/src/static/img/feb09/home_h1.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_h1.png => trunk/etherpad/src/static/img/feb09/home_h1.png rename : trunk/trunk/etherpad/src/static/img/feb09/home_newpadbutton.gif => trunk/etherpad/src/static/img/feb09/home_newpadbutton.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_newpadbutton.png => trunk/etherpad/src/static/img/feb09/home_newpadbutton.png rename : trunk/trunk/etherpad/src/static/img/feb09/home_newpadbutton2.gif => trunk/etherpad/src/static/img/feb09/home_newpadbutton2.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif => trunk/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif rename : trunk/trunk/etherpad/src/static/img/feb09/hometop_back.gif => trunk/etherpad/src/static/img/feb09/hometop_back.gif rename : trunk/trunk/etherpad/src/static/img/feb09/nav1.gif => trunk/etherpad/src/static/img/feb09/nav1.gif rename : trunk/trunk/etherpad/src/static/img/feb09/nav1_back.gif => trunk/etherpad/src/static/img/feb09/nav1_back.gif rename : trunk/trunk/etherpad/src/static/img/feb09/nav2.gif => trunk/etherpad/src/static/img/feb09/nav2.gif rename : trunk/trunk/etherpad/src/static/img/feb09/screencast.gif => trunk/etherpad/src/static/img/feb09/screencast.gif rename : trunk/trunk/etherpad/src/static/img/home/etherpad-mainheader1.jpg => trunk/etherpad/src/static/img/home/etherpad-mainheader1.jpg rename : trunk/trunk/etherpad/src/static/img/home/headergradient.gif => trunk/etherpad/src/static/img/home/headergradient.gif rename : trunk/trunk/etherpad/src/static/img/home/homeheader1.jpg => trunk/etherpad/src/static/img/home/homeheader1.jpg rename : trunk/trunk/etherpad/src/static/img/home/homeheader2.jpg => trunk/etherpad/src/static/img/home/homeheader2.jpg rename : trunk/trunk/etherpad/src/static/img/home/leftgrad.gif => trunk/etherpad/src/static/img/home/leftgrad.gif rename : trunk/trunk/etherpad/src/static/img/home/pencilpaperback.png => trunk/etherpad/src/static/img/home/pencilpaperback.png rename : trunk/trunk/etherpad/src/static/img/home/screencapture1.gif => trunk/etherpad/src/static/img/home/screencapture1.gif rename : trunk/trunk/etherpad/src/static/img/home/underdevicon.gif => trunk/etherpad/src/static/img/home/underdevicon.gif rename : trunk/trunk/etherpad/src/static/img/icon/downarrow.gif => trunk/etherpad/src/static/img/icon/downarrow.gif rename : trunk/trunk/etherpad/src/static/img/icon/feed.gif => trunk/etherpad/src/static/img/icon/feed.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/backgrad.gif => trunk/etherpad/src/static/img/jun09/pad/backgrad.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/bottomareagfx.gif => trunk/etherpad/src/static/img/jun09/pad/bottomareagfx.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/colorpicker.gif => trunk/etherpad/src/static/img/jun09/pad/colorpicker.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/connectingbar.gif => trunk/etherpad/src/static/img/jun09/pad/connectingbar.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/connectionindicator.gif => trunk/etherpad/src/static/img/jun09/pad/connectionindicator.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docbarstates.png => trunk/etherpad/src/static/img/jun09/pad/docbarstates.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docbarstates2.png => trunk/etherpad/src/static/img/jun09/pad/docbarstates2.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docbarstates3.png => trunk/etherpad/src/static/img/jun09/pad/docbarstates3.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docpaneledge.png => trunk/etherpad/src/static/img/jun09/pad/docpaneledge.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docpaneledge2.png => trunk/etherpad/src/static/img/jun09/pad/docpaneledge2.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle.png => trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png => trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/editbar.gif => trunk/etherpad/src/static/img/jun09/pad/editbar.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/editbar2.gif => trunk/etherpad/src/static/img/jun09/pad/editbar2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/editbar3.gif => trunk/etherpad/src/static/img/jun09/pad/editbar3.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/editbarback.gif => trunk/etherpad/src/static/img/jun09/pad/editbarback.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/feedbackbox2.gif => trunk/etherpad/src/static/img/jun09/pad/feedbackbox2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/fileicons.gif => trunk/etherpad/src/static/img/jun09/pad/fileicons.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/hdraggie.gif => trunk/etherpad/src/static/img/jun09/pad/hdraggie.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/inviteshare.gif => trunk/etherpad/src/static/img/jun09/pad/inviteshare.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/inviteshare2.gif => trunk/etherpad/src/static/img/jun09/pad/inviteshare2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/layoutbuttons.gif => trunk/etherpad/src/static/img/jun09/pad/layoutbuttons.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/overlay.png => trunk/etherpad/src/static/img/jun09/pad/overlay.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/overlay2.png => trunk/etherpad/src/static/img/jun09/pad/overlay2.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop.gif => trunk/etherpad/src/static/img/jun09/pad/padtop.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop2.gif => trunk/etherpad/src/static/img/jun09/pad/padtop2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop3.gif => trunk/etherpad/src/static/img/jun09/pad/padtop3.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop4.gif => trunk/etherpad/src/static/img/jun09/pad/padtop4.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop5.gif => trunk/etherpad/src/static/img/jun09/pad/padtop5.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtopback.gif => trunk/etherpad/src/static/img/jun09/pad/padtopback.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtopback2.gif => trunk/etherpad/src/static/img/jun09/pad/padtopback2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/protop.gif => trunk/etherpad/src/static/img/jun09/pad/protop.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/public.gif => trunk/etherpad/src/static/img/jun09/pad/public.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/savedrevarrows.gif => trunk/etherpad/src/static/img/jun09/pad/savedrevarrows.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif => trunk/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/sharebox2.gif => trunk/etherpad/src/static/img/jun09/pad/sharebox2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/sharebox3.gif => trunk/etherpad/src/static/img/jun09/pad/sharebox3.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/sharebox4.gif => trunk/etherpad/src/static/img/jun09/pad/sharebox4.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/sharedistri.gif => trunk/etherpad/src/static/img/jun09/pad/sharedistri.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/syncdone.gif => trunk/etherpad/src/static/img/jun09/pad/syncdone.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/syncing.gif => trunk/etherpad/src/static/img/jun09/pad/syncing.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/syncing2.gif => trunk/etherpad/src/static/img/jun09/pad/syncing2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/viewbargfx.gif => trunk/etherpad/src/static/img/jun09/pad/viewbargfx.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif rename : trunk/trunk/etherpad/src/static/img/may09/bold.gif => trunk/etherpad/src/static/img/may09/bold.gif rename : trunk/trunk/etherpad/src/static/img/may09/doc.gif => trunk/etherpad/src/static/img/may09/doc.gif rename : trunk/trunk/etherpad/src/static/img/may09/doc.png => trunk/etherpad/src/static/img/may09/doc.png rename : trunk/trunk/etherpad/src/static/img/may09/html.gif => trunk/etherpad/src/static/img/may09/html.gif rename : trunk/trunk/etherpad/src/static/img/may09/html.png => trunk/etherpad/src/static/img/may09/html.png rename : trunk/trunk/etherpad/src/static/img/may09/italic.gif => trunk/etherpad/src/static/img/may09/italic.gif rename : trunk/trunk/etherpad/src/static/img/may09/leftarrow.gif => trunk/etherpad/src/static/img/may09/leftarrow.gif rename : trunk/trunk/etherpad/src/static/img/may09/leftarrow2.gif => trunk/etherpad/src/static/img/may09/leftarrow2.gif rename : trunk/trunk/etherpad/src/static/img/may09/link.gif => trunk/etherpad/src/static/img/may09/link.gif rename : trunk/trunk/etherpad/src/static/img/may09/link.png => trunk/etherpad/src/static/img/may09/link.png rename : trunk/trunk/etherpad/src/static/img/may09/odt.gif => trunk/etherpad/src/static/img/may09/odt.gif rename : trunk/trunk/etherpad/src/static/img/may09/odt.png => trunk/etherpad/src/static/img/may09/odt.png rename : trunk/trunk/etherpad/src/static/img/may09/padlock.gif => trunk/etherpad/src/static/img/may09/padlock.gif rename : trunk/trunk/etherpad/src/static/img/may09/padlockopen.gif => trunk/etherpad/src/static/img/may09/padlockopen.gif rename : trunk/trunk/etherpad/src/static/img/may09/passwordlocked.gif => trunk/etherpad/src/static/img/may09/passwordlocked.gif rename : trunk/trunk/etherpad/src/static/img/may09/passwordlocked_cropped.gif => trunk/etherpad/src/static/img/may09/passwordlocked_cropped.gif rename : trunk/trunk/etherpad/src/static/img/may09/passwordnone.gif => trunk/etherpad/src/static/img/may09/passwordnone.gif rename : trunk/trunk/etherpad/src/static/img/may09/paypal.gif => trunk/etherpad/src/static/img/may09/paypal.gif rename : trunk/trunk/etherpad/src/static/img/may09/pdf.gif => trunk/etherpad/src/static/img/may09/pdf.gif rename : trunk/trunk/etherpad/src/static/img/may09/pdf.png => trunk/etherpad/src/static/img/may09/pdf.png rename : trunk/trunk/etherpad/src/static/img/may09/redo.gif => trunk/etherpad/src/static/img/may09/redo.gif rename : trunk/trunk/etherpad/src/static/img/may09/txt.gif => trunk/etherpad/src/static/img/may09/txt.gif rename : trunk/trunk/etherpad/src/static/img/may09/txt.png => trunk/etherpad/src/static/img/may09/txt.png rename : trunk/trunk/etherpad/src/static/img/may09/underline.gif => trunk/etherpad/src/static/img/may09/underline.gif rename : trunk/trunk/etherpad/src/static/img/may09/undo.gif => trunk/etherpad/src/static/img/may09/undo.gif rename : trunk/trunk/etherpad/src/static/img/miniplane.gif => trunk/etherpad/src/static/img/miniplane.gif rename : trunk/trunk/etherpad/src/static/img/misc/diagnostic-links.gif => trunk/etherpad/src/static/img/misc/diagnostic-links.gif rename : trunk/trunk/etherpad/src/static/img/misc/status-ball.gif => trunk/etherpad/src/static/img/misc/status-ball.gif rename : trunk/trunk/etherpad/src/static/img/misc/traclogo.gif => trunk/etherpad/src/static/img/misc/traclogo.gif rename : trunk/trunk/etherpad/src/static/img/oct/atlonglast.gif => trunk/etherpad/src/static/img/oct/atlonglast.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner1.jpg => trunk/etherpad/src/static/img/oct/banner1.jpg rename : trunk/trunk/etherpad/src/static/img/oct/banner2.jpg => trunk/etherpad/src/static/img/oct/banner2.jpg rename : trunk/trunk/etherpad/src/static/img/oct/banner3.jpg => trunk/etherpad/src/static/img/oct/banner3.jpg rename : trunk/trunk/etherpad/src/static/img/oct/banner4.jpg => trunk/etherpad/src/static/img/oct/banner4.jpg rename : trunk/trunk/etherpad/src/static/img/oct/banner5.gif => trunk/etherpad/src/static/img/oct/banner5.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner6.gif => trunk/etherpad/src/static/img/oct/banner6.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner7.gif => trunk/etherpad/src/static/img/oct/banner7.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner8.gif => trunk/etherpad/src/static/img/oct/banner8.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner9.gif => trunk/etherpad/src/static/img/oct/banner9.gif rename : trunk/trunk/etherpad/src/static/img/oct/bannerback5.gif => trunk/etherpad/src/static/img/oct/bannerback5.gif rename : trunk/trunk/etherpad/src/static/img/oct/bannerback6.gif => trunk/etherpad/src/static/img/oct/bannerback6.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback1.gif => trunk/etherpad/src/static/img/oct/bodyback1.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback2.gif => trunk/etherpad/src/static/img/oct/bodyback2.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback3.gif => trunk/etherpad/src/static/img/oct/bodyback3.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback4.gif => trunk/etherpad/src/static/img/oct/bodyback4.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback5.gif => trunk/etherpad/src/static/img/oct/bodyback5.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodybacktop1.gif => trunk/etherpad/src/static/img/oct/bodybacktop1.gif rename : trunk/trunk/etherpad/src/static/img/oct/computers.gif => trunk/etherpad/src/static/img/oct/computers.gif rename : trunk/trunk/etherpad/src/static/img/oct/computers2.gif => trunk/etherpad/src/static/img/oct/computers2.gif rename : trunk/trunk/etherpad/src/static/img/oct/glossyblue.gif => trunk/etherpad/src/static/img/oct/glossyblue.gif rename : trunk/trunk/etherpad/src/static/img/oct/glossyblue2.gif => trunk/etherpad/src/static/img/oct/glossyblue2.gif rename : trunk/trunk/etherpad/src/static/img/oct/glossyblueh.gif => trunk/etherpad/src/static/img/oct/glossyblueh.gif rename : trunk/trunk/etherpad/src/static/img/oct/insetrect.gif => trunk/etherpad/src/static/img/oct/insetrect.gif rename : trunk/trunk/etherpad/src/static/img/oct/minilogo1-05e.gif => trunk/etherpad/src/static/img/oct/minilogo1-05e.gif rename : trunk/trunk/etherpad/src/static/img/oct/minilogo1-07f.gif => trunk/etherpad/src/static/img/oct/minilogo1-07f.gif rename : trunk/trunk/etherpad/src/static/img/oct/minilogo3.jpg => trunk/etherpad/src/static/img/oct/minilogo3.jpg rename : trunk/trunk/etherpad/src/static/img/oct/minitopback1.gif => trunk/etherpad/src/static/img/oct/minitopback1.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopback2.gif => trunk/etherpad/src/static/img/oct/minitopback2.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar1-05e.gif => trunk/etherpad/src/static/img/oct/minitopbar1-05e.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar2-05e.gif => trunk/etherpad/src/static/img/oct/minitopbar2-05e.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar2-07f.gif => trunk/etherpad/src/static/img/oct/minitopbar2-07f.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar3.jpg => trunk/etherpad/src/static/img/oct/minitopbar3.jpg rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar4.gif => trunk/etherpad/src/static/img/oct/minitopbar4.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitoplogo1.gif => trunk/etherpad/src/static/img/oct/minitoplogo1.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitoplogo2.gif => trunk/etherpad/src/static/img/oct/minitoplogo2.gif rename : trunk/trunk/etherpad/src/static/img/oct/newpadmain.gif => trunk/etherpad/src/static/img/oct/newpadmain.gif rename : trunk/trunk/etherpad/src/static/img/oct/newpadmainback.gif => trunk/etherpad/src/static/img/oct/newpadmainback.gif rename : trunk/trunk/etherpad/src/static/img/oct/newpadmainbackh.gif => trunk/etherpad/src/static/img/oct/newpadmainbackh.gif rename : trunk/trunk/etherpad/src/static/img/oct/pageshot.png => trunk/etherpad/src/static/img/oct/pageshot.png rename : trunk/trunk/etherpad/src/static/img/oct/pageshotmini.png => trunk/etherpad/src/static/img/oct/pageshotmini.png rename : trunk/trunk/etherpad/src/static/img/oct/sidehead-gradhilite.gif => trunk/etherpad/src/static/img/oct/sidehead-gradhilite.gif rename : trunk/trunk/etherpad/src/static/img/oct/tinytriangle.gif => trunk/etherpad/src/static/img/oct/tinytriangle.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav1.gif => trunk/etherpad/src/static/img/oct/topnav1.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav2.gif => trunk/etherpad/src/static/img/oct/topnav2.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav3.gif => trunk/etherpad/src/static/img/oct/topnav3.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav4.gif => trunk/etherpad/src/static/img/oct/topnav4.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav5.gif => trunk/etherpad/src/static/img/oct/topnav5.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav6.gif => trunk/etherpad/src/static/img/oct/topnav6.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnavback1.gif => trunk/etherpad/src/static/img/oct/topnavback1.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnavback2.gif => trunk/etherpad/src/static/img/oct/topnavback2.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnavback3.gif => trunk/etherpad/src/static/img/oct/topnavback3.gif rename : trunk/trunk/etherpad/src/static/img/oct/usecasesnavdown.gif => trunk/etherpad/src/static/img/oct/usecasesnavdown.gif rename : trunk/trunk/etherpad/src/static/img/oct/usecasesnavdownh.gif => trunk/etherpad/src/static/img/oct/usecasesnavdownh.gif rename : trunk/trunk/etherpad/src/static/img/oct/usecasesnavup.gif => trunk/etherpad/src/static/img/oct/usecasesnavup.gif rename : trunk/trunk/etherpad/src/static/img/oct/usecasesnavuph.gif => trunk/etherpad/src/static/img/oct/usecasesnavuph.gif rename : trunk/trunk/etherpad/src/static/img/oct/watchscreencast.gif => trunk/etherpad/src/static/img/oct/watchscreencast.gif rename : trunk/trunk/etherpad/src/static/img/pad/animated-orb-orange-12.gif => trunk/etherpad/src/static/img/pad/animated-orb-orange-12.gif rename : trunk/trunk/etherpad/src/static/img/pad/backgrad.png => trunk/etherpad/src/static/img/pad/backgrad.png rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif => trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif => trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif => trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif => trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif => trunk/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif rename : trunk/trunk/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif => trunk/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif rename : trunk/trunk/etherpad/src/static/img/pad/etherpad-logo-small.gif => trunk/etherpad/src/static/img/pad/etherpad-logo-small.gif rename : trunk/trunk/etherpad/src/static/img/pad/etherpad-logo-small2.gif => trunk/etherpad/src/static/img/pad/etherpad-logo-small2.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow-down.gif => trunk/etherpad/src/static/img/pad/expandy-arrow-down.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow-right.gif => trunk/etherpad/src/static/img/pad/expandy-arrow-right.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif => trunk/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow6-down.gif => trunk/etherpad/src/static/img/pad/expandy-arrow6-down.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif => trunk/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow6-right.gif => trunk/etherpad/src/static/img/pad/expandy-arrow6-right.gif rename : trunk/trunk/etherpad/src/static/img/pad/header-revgrad.gif => trunk/etherpad/src/static/img/pad/header-revgrad.gif rename : trunk/trunk/etherpad/src/static/img/pad/newpad.gif => trunk/etherpad/src/static/img/pad/newpad.gif rename : trunk/trunk/etherpad/src/static/img/pad/orb-greenred-12.gif => trunk/etherpad/src/static/img/pad/orb-greenred-12.gif rename : trunk/trunk/etherpad/src/static/img/pad/padbg1.jpg => trunk/etherpad/src/static/img/pad/padbg1.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padbg2.jpg => trunk/etherpad/src/static/img/pad/padbg2.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padbg3.jpg => trunk/etherpad/src/static/img/pad/padbg3.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padbg4.jpg => trunk/etherpad/src/static/img/pad/padbg4.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padbg5.jpg => trunk/etherpad/src/static/img/pad/padbg5.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padhead1.jpg => trunk/etherpad/src/static/img/pad/padhead1.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padhead2.jpg => trunk/etherpad/src/static/img/pad/padhead2.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padhead3.jpg => trunk/etherpad/src/static/img/pad/padhead3.jpg rename : trunk/trunk/etherpad/src/static/img/pad/pencil-icon-small-blue.gif => trunk/etherpad/src/static/img/pad/pencil-icon-small-blue.gif rename : trunk/trunk/etherpad/src/static/img/pad/sidehead-grad.gif => trunk/etherpad/src/static/img/pad/sidehead-grad.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/button_depressed.png => trunk/etherpad/src/static/img/pad/timeslider/button_depressed.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/button_undepressed.png => trunk/etherpad/src/static/img/pad/timeslider/button_undepressed.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_current_location.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_current_location.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_pause.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_pause.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_play.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_play.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_play_button.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_play_button.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/current_location.gif => trunk/etherpad/src/static/img/pad/timeslider/current_location.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/current_location.png => trunk/etherpad/src/static/img/pad/timeslider/current_location.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/pause.gif => trunk/etherpad/src/static/img/pad/timeslider/pause.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/pause.png => trunk/etherpad/src/static/img/pad/timeslider/pause.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/play.gif => trunk/etherpad/src/static/img/pad/timeslider/play.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/play.png => trunk/etherpad/src/static/img/pad/timeslider/play.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/play_button.png => trunk/etherpad/src/static/img/pad/timeslider/play_button.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/star.gif => trunk/etherpad/src/static/img/pad/timeslider/star.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/star.png => trunk/etherpad/src/static/img/pad/timeslider/star.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/star_selected.png => trunk/etherpad/src/static/img/pad/timeslider/star_selected.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/stepper_buttons.png => trunk/etherpad/src/static/img/pad/timeslider/stepper_buttons.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/timeslider_background.png => trunk/etherpad/src/static/img/pad/timeslider/timeslider_background.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/timeslider_left.png => trunk/etherpad/src/static/img/pad/timeslider/timeslider_left.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png => trunk/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/timeslider_right.png => trunk/etherpad/src/static/img/pad/timeslider/timeslider_right.png rename : trunk/trunk/etherpad/src/static/img/pricing/free.gif => trunk/etherpad/src/static/img/pricing/free.gif rename : trunk/trunk/etherpad/src/static/img/pricing/group.gif => trunk/etherpad/src/static/img/pricing/group.gif rename : trunk/trunk/etherpad/src/static/img/pricing/on-demand.gif => trunk/etherpad/src/static/img/pricing/on-demand.gif rename : trunk/trunk/etherpad/src/static/img/pricing/private-network.gif => trunk/etherpad/src/static/img/pricing/private-network.gif rename : trunk/trunk/etherpad/src/static/img/pricing/support.gif => trunk/etherpad/src/static/img/pricing/support.gif rename : trunk/trunk/etherpad/src/static/img/pro/billing/cards-button.gif => trunk/etherpad/src/static/img/pro/billing/cards-button.gif rename : trunk/trunk/etherpad/src/static/img/pro/box/blue-boxtop.gif => trunk/etherpad/src/static/img/pro/box/blue-boxtop.gif rename : trunk/trunk/etherpad/src/static/img/pro/buttons/bluebutton120.gif => trunk/etherpad/src/static/img/pro/buttons/bluebutton120.gif rename : trunk/trunk/etherpad/src/static/img/pro/header/pro-header-back.gif => trunk/etherpad/src/static/img/pro/header/pro-header-back.gif rename : trunk/trunk/etherpad/src/static/img/pro/header/pro-header-logo.png => trunk/etherpad/src/static/img/pro/header/pro-header-logo.png rename : trunk/trunk/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif => trunk/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif rename : trunk/trunk/etherpad/src/static/img/pro/padlist/gear-drop.gif => trunk/etherpad/src/static/img/pro/padlist/gear-drop.gif rename : trunk/trunk/etherpad/src/static/img/pro/padlist/paper-icon.gif => trunk/etherpad/src/static/img/pro/padlist/paper-icon.gif rename : trunk/trunk/etherpad/src/static/img/pro/padlist/trash-icon.gif => trunk/etherpad/src/static/img/pro/padlist/trash-icon.gif rename : trunk/trunk/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif => trunk/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif rename : trunk/trunk/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif => trunk/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif rename : trunk/trunk/etherpad/src/static/img/tinyplane.gif => trunk/etherpad/src/static/img/tinyplane.gif rename : trunk/trunk/etherpad/src/static/img/wavejet.jpg => trunk/etherpad/src/static/img/wavejet.jpg rename : trunk/trunk/etherpad/src/static/js/ace.js => trunk/etherpad/src/static/js/ace.js rename : trunk/trunk/etherpad/src/static/js/billing.js => trunk/etherpad/src/static/js/billing.js rename : trunk/trunk/etherpad/src/static/js/billing_shared.js => trunk/etherpad/src/static/js/billing_shared.js rename : trunk/trunk/etherpad/src/static/js/broadcast.js => trunk/etherpad/src/static/js/broadcast.js rename : trunk/trunk/etherpad/src/static/js/broadcast_revisions.js => trunk/etherpad/src/static/js/broadcast_revisions.js rename : trunk/trunk/etherpad/src/static/js/broadcast_slider.js => trunk/etherpad/src/static/js/broadcast_slider.js rename : trunk/trunk/etherpad/src/static/js/collab_client.js => trunk/etherpad/src/static/js/collab_client.js rename : trunk/trunk/etherpad/src/static/js/colorutils.js => trunk/etherpad/src/static/js/colorutils.js rename : trunk/trunk/etherpad/src/static/js/confirmation.js => trunk/etherpad/src/static/js/confirmation.js rename : trunk/trunk/etherpad/src/static/js/connection_diagnostics.js => trunk/etherpad/src/static/js/connection_diagnostics.js rename : trunk/trunk/etherpad/src/static/js/cssmanager_client.js => trunk/etherpad/src/static/js/cssmanager_client.js rename : trunk/trunk/etherpad/src/static/js/domline_client.js => trunk/etherpad/src/static/js/domline_client.js rename : trunk/trunk/etherpad/src/static/js/draggable.js => trunk/etherpad/src/static/js/draggable.js rename : trunk/trunk/etherpad/src/static/js/easysync2_client.js => trunk/etherpad/src/static/js/easysync2_client.js rename : trunk/trunk/etherpad/src/static/js/etherpad.js => trunk/etherpad/src/static/js/etherpad.js rename : trunk/trunk/etherpad/src/static/js/jquery-1.2.6.js => trunk/etherpad/src/static/js/jquery-1.2.6.js rename : trunk/trunk/etherpad/src/static/js/jquery-1.3.2.js => trunk/etherpad/src/static/js/jquery-1.3.2.js rename : trunk/trunk/etherpad/src/static/js/json2.js => trunk/etherpad/src/static/js/json2.js rename : trunk/trunk/etherpad/src/static/js/lib/jquery.contextmenu.js => trunk/etherpad/src/static/js/lib/jquery.contextmenu.js rename : trunk/trunk/etherpad/src/static/js/linestylefilter_client.js => trunk/etherpad/src/static/js/linestylefilter_client.js rename : trunk/trunk/etherpad/src/static/js/pad.js.old => trunk/etherpad/src/static/js/pad.js.old rename : trunk/trunk/etherpad/src/static/js/pad2.js => trunk/etherpad/src/static/js/pad2.js rename : trunk/trunk/etherpad/src/static/js/pad_chat.js => trunk/etherpad/src/static/js/pad_chat.js rename : trunk/trunk/etherpad/src/static/js/pad_connectionstatus.js => trunk/etherpad/src/static/js/pad_connectionstatus.js rename : trunk/trunk/etherpad/src/static/js/pad_cookie.js => trunk/etherpad/src/static/js/pad_cookie.js rename : trunk/trunk/etherpad/src/static/js/pad_docbar.js => trunk/etherpad/src/static/js/pad_docbar.js rename : trunk/trunk/etherpad/src/static/js/pad_editbar.js => trunk/etherpad/src/static/js/pad_editbar.js rename : trunk/trunk/etherpad/src/static/js/pad_editor.js => trunk/etherpad/src/static/js/pad_editor.js rename : trunk/trunk/etherpad/src/static/js/pad_impexp.js => trunk/etherpad/src/static/js/pad_impexp.js rename : trunk/trunk/etherpad/src/static/js/pad_modals.js => trunk/etherpad/src/static/js/pad_modals.js rename : trunk/trunk/etherpad/src/static/js/pad_savedrevs.js => trunk/etherpad/src/static/js/pad_savedrevs.js rename : trunk/trunk/etherpad/src/static/js/pad_userlist.js => trunk/etherpad/src/static/js/pad_userlist.js rename : trunk/trunk/etherpad/src/static/js/pad_utils.js => trunk/etherpad/src/static/js/pad_utils.js rename : trunk/trunk/etherpad/src/static/js/pricing.js => trunk/etherpad/src/static/js/pricing.js rename : trunk/trunk/etherpad/src/static/js/pro/guest-knock-client.js => trunk/etherpad/src/static/js/pro/guest-knock-client.js rename : trunk/trunk/etherpad/src/static/js/pro/pro-padlist-client.js => trunk/etherpad/src/static/js/pro/pro-padlist-client.js rename : trunk/trunk/etherpad/src/static/js/pro/signin-client.js => trunk/etherpad/src/static/js/pro/signin-client.js rename : trunk/trunk/etherpad/src/static/js/pulse.jquery.js => trunk/etherpad/src/static/js/pulse.jquery.js rename : trunk/trunk/etherpad/src/static/js/statpage.js => trunk/etherpad/src/static/js/statpage.js rename : trunk/trunk/etherpad/src/static/js/store.js => trunk/etherpad/src/static/js/store.js rename : trunk/trunk/etherpad/src/static/js/swfobject.js => trunk/etherpad/src/static/js/swfobject.js rename : trunk/trunk/etherpad/src/static/js/timeslider.js => trunk/etherpad/src/static/js/timeslider.js rename : trunk/trunk/etherpad/src/static/js/undo-xpopup.js => trunk/etherpad/src/static/js/undo-xpopup.js rename : trunk/trunk/etherpad/src/static/swf/vidplayer.swf => trunk/etherpad/src/static/swf/vidplayer.swf rename : trunk/trunk/etherpad/src/templates/500_body.ejs => trunk/etherpad/src/templates/500_body.ejs rename : trunk/trunk/etherpad/src/templates/beta/signup.ejs => trunk/etherpad/src/templates/beta/signup.ejs rename : trunk/trunk/etherpad/src/templates/email/eepnet_license_info.ejs => trunk/etherpad/src/templates/email/eepnet_license_info.ejs rename : trunk/trunk/etherpad/src/templates/email/eepnet_purchase_receipt.ejs => trunk/etherpad/src/templates/email/eepnet_purchase_receipt.ejs rename : trunk/trunk/etherpad/src/templates/email/padinvite.ejs => trunk/etherpad/src/templates/email/padinvite.ejs rename : trunk/trunk/etherpad/src/templates/email/pro_beta_invite.ejs => trunk/etherpad/src/templates/email/pro_beta_invite.ejs rename : trunk/trunk/etherpad/src/templates/email/pro_payment_failure.ejs => trunk/etherpad/src/templates/email/pro_payment_failure.ejs rename : trunk/trunk/etherpad/src/templates/email/pro_payment_receipt.ejs => trunk/etherpad/src/templates/email/pro_payment_receipt.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedfooter.ejs => trunk/etherpad/src/templates/framed/framedfooter.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedheader-pro.ejs => trunk/etherpad/src/templates/framed/framedheader-pro.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedheader.ejs => trunk/etherpad/src/templates/framed/framedheader.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedpage-pro.ejs => trunk/etherpad/src/templates/framed/framedpage-pro.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedpage.ejs => trunk/etherpad/src/templates/framed/framedpage.ejs rename : trunk/trunk/etherpad/src/templates/html.ejs => trunk/etherpad/src/templates/html.ejs rename : trunk/trunk/etherpad/src/templates/main/home.ejs => trunk/etherpad/src/templates/main/home.ejs rename : trunk/trunk/etherpad/src/templates/main/pro_signup_body.ejs => trunk/etherpad/src/templates/main/pro_signup_body.ejs rename : trunk/trunk/etherpad/src/templates/misc/pad_default.ejs => trunk/etherpad/src/templates/misc/pad_default.ejs rename : trunk/trunk/etherpad/src/templates/notice.ejs => trunk/etherpad/src/templates/notice.ejs rename : trunk/trunk/etherpad/src/templates/pad/create_body.ejs => trunk/etherpad/src/templates/pad/create_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/create_body_rafter.ejs => trunk/etherpad/src/templates/pad/create_body_rafter.ejs rename : trunk/trunk/etherpad/src/templates/pad/exporthtml.ejs => trunk/etherpad/src/templates/pad/exporthtml.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_body.ejs => trunk/etherpad/src/templates/pad/pad_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_body2.ejs => trunk/etherpad/src/templates/pad/pad_body2.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_content.ejs => trunk/etherpad/src/templates/pad/pad_content.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_download_link.ejs => trunk/etherpad/src/templates/pad/pad_download_link.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_iphone_body.ejs => trunk/etherpad/src/templates/pad/pad_iphone_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/padfull_body.ejs => trunk/etherpad/src/templates/pad/padfull_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/padslider_body.ejs => trunk/etherpad/src/templates/pad/padslider_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/padview_body.ejs => trunk/etherpad/src/templates/pad/padview_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/total_users_exceeded.ejs => trunk/etherpad/src/templates/pad/total_users_exceeded.ejs rename : trunk/trunk/etherpad/src/templates/pro-account/recover.ejs => trunk/etherpad/src/templates/pro-account/recover.ejs rename : trunk/trunk/etherpad/src/templates/pro-account/sign-in.ejs => trunk/etherpad/src/templates/pro-account/sign-in.ejs rename : trunk/trunk/etherpad/src/templates/pro-help/billing.ejs => trunk/etherpad/src/templates/pro-help/billing.ejs rename : trunk/trunk/etherpad/src/templates/pro-help/essentials.ejs => trunk/etherpad/src/templates/pro-help/essentials.ejs rename : trunk/trunk/etherpad/src/templates/pro-help/main.ejs => trunk/etherpad/src/templates/pro-help/main.ejs rename : trunk/trunk/etherpad/src/templates/pro-help/pro-help-template.ejs => trunk/etherpad/src/templates/pro-help/pro-help-template.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/account-welcome-email.ejs => trunk/etherpad/src/templates/pro/account/account-welcome-email.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/create-admin-account.ejs => trunk/etherpad/src/templates/pro/account/create-admin-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/forgot-password-email.ejs => trunk/etherpad/src/templates/pro/account/forgot-password-email.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/forgot-password.ejs => trunk/etherpad/src/templates/pro/account/forgot-password.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs => trunk/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/guest-knock.ejs => trunk/etherpad/src/templates/pro/account/guest-knock.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/my-account.ejs => trunk/etherpad/src/templates/pro/account/my-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/signin-guest.ejs => trunk/etherpad/src/templates/pro/account/signin-guest.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/signin.ejs => trunk/etherpad/src/templates/pro/account/signin.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/account-manager.ejs => trunk/etherpad/src/templates/pro/admin/account-manager.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/admin-template.ejs => trunk/etherpad/src/templates/pro/admin/admin-template.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/admin.ejs => trunk/etherpad/src/templates/pro/admin/admin.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/billing-invoices.ejs => trunk/etherpad/src/templates/pro/admin/billing-invoices.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/delete-account.ejs => trunk/etherpad/src/templates/pro/admin/delete-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/manage-account.ejs => trunk/etherpad/src/templates/pro/admin/manage-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/manage-billing.ejs => trunk/etherpad/src/templates/pro/admin/manage-billing.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/new-account.ejs => trunk/etherpad/src/templates/pro/admin/new-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pne-config.ejs => trunk/etherpad/src/templates/pro/admin/pne-config.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pne-dashboard.ejs => trunk/etherpad/src/templates/pro/admin/pne-dashboard.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pne-license-manager.ejs => trunk/etherpad/src/templates/pro/admin/pne-license-manager.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pne-shell.ejs => trunk/etherpad/src/templates/pro/admin/pne-shell.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pro-config.ejs => trunk/etherpad/src/templates/pro/admin/pro-config.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/single-invoice.ejs => trunk/etherpad/src/templates/pro/admin/single-invoice.ejs rename : trunk/trunk/etherpad/src/templates/pro/padlist/pro-padlist.ejs => trunk/etherpad/src/templates/pro/padlist/pro-padlist.ejs rename : trunk/trunk/etherpad/src/templates/pro/pro-payment-required.ejs => trunk/etherpad/src/templates/pro/pro-payment-required.ejs rename : trunk/trunk/etherpad/src/templates/pro/pro_home.ejs => trunk/etherpad/src/templates/pro/pro_home.ejs rename : trunk/trunk/etherpad/src/templates/statistics/stat_page.ejs => trunk/etherpad/src/templates/statistics/stat_page.ejs rename : trunk/trunk/etherpad/src/templates/store/csc-help.ejs => trunk/etherpad/src/templates/store/csc-help.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/cart.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/cart.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/license-info.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/license-info.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/purchase.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/purchase.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/receipt.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/receipt.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/summary.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/summary.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet_download.ejs => trunk/etherpad/src/templates/store/eepnet_download.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs => trunk/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet_eval_signup.ejs => trunk/etherpad/src/templates/store/eepnet_eval_signup.ejs rename : trunk/trunk/infrastructure/.gitignore => trunk/infrastructure/.gitignore rename : trunk/trunk/infrastructure/ace/.gitignore => trunk/infrastructure/ace/.gitignore rename : trunk/trunk/infrastructure/ace/bin/backup.sh => trunk/infrastructure/ace/bin/backup.sh rename : trunk/trunk/infrastructure/ace/bin/jsmin.py => trunk/infrastructure/ace/bin/jsmin.py rename : trunk/trunk/infrastructure/ace/bin/make => trunk/infrastructure/ace/bin/make rename : trunk/trunk/infrastructure/ace/bin/publish.sh => trunk/infrastructure/ace/bin/publish.sh rename : trunk/trunk/infrastructure/ace/bin/serve => trunk/infrastructure/ace/bin/serve rename : trunk/trunk/infrastructure/ace/blog.txt => trunk/infrastructure/ace/blog.txt rename : trunk/trunk/infrastructure/ace/build/.gitignore => trunk/infrastructure/ace/build/.gitignore rename : trunk/trunk/infrastructure/ace/build/index.html => trunk/infrastructure/ace/build/index.html rename : trunk/trunk/infrastructure/ace/build/jquery-1.2.1.js => trunk/infrastructure/ace/build/jquery-1.2.1.js rename : trunk/trunk/infrastructure/ace/build/testcode.js => trunk/infrastructure/ace/build/testcode.js rename : trunk/trunk/infrastructure/ace/easysync-notes.txt => trunk/infrastructure/ace/easysync-notes.txt rename : trunk/trunk/infrastructure/ace/lib/rhino-js-1.7r1.jar => trunk/infrastructure/ace/lib/rhino-js-1.7r1.jar rename : trunk/trunk/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar => trunk/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar rename : trunk/trunk/infrastructure/ace/notes.txt => trunk/infrastructure/ace/notes.txt rename : trunk/trunk/infrastructure/ace/www/ace2_common.js => trunk/infrastructure/ace/www/ace2_common.js rename : trunk/trunk/infrastructure/ace/www/ace2_common_dev.js => trunk/infrastructure/ace/www/ace2_common_dev.js rename : trunk/trunk/infrastructure/ace/www/ace2_inner.js => trunk/infrastructure/ace/www/ace2_inner.js rename : trunk/trunk/infrastructure/ace/www/ace2_outer.js => trunk/infrastructure/ace/www/ace2_outer.js rename : trunk/trunk/infrastructure/ace/www/ace2_wrapper.js => trunk/infrastructure/ace/www/ace2_wrapper.js rename : trunk/trunk/infrastructure/ace/www/bbtree.js => trunk/infrastructure/ace/www/bbtree.js rename : trunk/trunk/infrastructure/ace/www/changesettracker.js => trunk/infrastructure/ace/www/changesettracker.js rename : trunk/trunk/infrastructure/ace/www/colorutils.js => trunk/infrastructure/ace/www/colorutils.js rename : trunk/trunk/infrastructure/ace/www/contentcollector.js => trunk/infrastructure/ace/www/contentcollector.js rename : trunk/trunk/infrastructure/ace/www/cssmanager.js => trunk/infrastructure/ace/www/cssmanager.js rename : trunk/trunk/infrastructure/ace/www/dev.html => trunk/infrastructure/ace/www/dev.html rename : trunk/trunk/infrastructure/ace/www/domline.js => trunk/infrastructure/ace/www/domline.js rename : trunk/trunk/infrastructure/ace/www/easy_sync.js => trunk/infrastructure/ace/www/easy_sync.js rename : trunk/trunk/infrastructure/ace/www/easysync2.js => trunk/infrastructure/ace/www/easysync2.js rename : trunk/trunk/infrastructure/ace/www/easysync2_tests.js => trunk/infrastructure/ace/www/easysync2_tests.js rename : trunk/trunk/infrastructure/ace/www/editor.css => trunk/infrastructure/ace/www/editor.css rename : trunk/trunk/infrastructure/ace/www/firebug/errorIcon.png => trunk/infrastructure/ace/www/firebug/errorIcon.png rename : trunk/trunk/infrastructure/ace/www/firebug/firebug.css => trunk/infrastructure/ace/www/firebug/firebug.css rename : trunk/trunk/infrastructure/ace/www/firebug/firebug.html => trunk/infrastructure/ace/www/firebug/firebug.html rename : trunk/trunk/infrastructure/ace/www/firebug/firebug.js => trunk/infrastructure/ace/www/firebug/firebug.js rename : trunk/trunk/infrastructure/ace/www/firebug/firebugx.js => trunk/infrastructure/ace/www/firebug/firebugx.js rename : trunk/trunk/infrastructure/ace/www/firebug/infoIcon.png => trunk/infrastructure/ace/www/firebug/infoIcon.png rename : trunk/trunk/infrastructure/ace/www/firebug/warningIcon.png => trunk/infrastructure/ace/www/firebug/warningIcon.png rename : trunk/trunk/infrastructure/ace/www/index.html => trunk/infrastructure/ace/www/index.html rename : trunk/trunk/infrastructure/ace/www/inner.css => trunk/infrastructure/ace/www/inner.css rename : trunk/trunk/infrastructure/ace/www/jquery-1.2.1.js => trunk/infrastructure/ace/www/jquery-1.2.1.js rename : trunk/trunk/infrastructure/ace/www/lang_html.js => trunk/infrastructure/ace/www/lang_html.js rename : trunk/trunk/infrastructure/ace/www/lang_js.js => trunk/infrastructure/ace/www/lang_js.js rename : trunk/trunk/infrastructure/ace/www/lexer_support.js => trunk/infrastructure/ace/www/lexer_support.js rename : trunk/trunk/infrastructure/ace/www/linestylefilter.js => trunk/infrastructure/ace/www/linestylefilter.js rename : trunk/trunk/infrastructure/ace/www/magicdom.js => trunk/infrastructure/ace/www/magicdom.js rename : trunk/trunk/infrastructure/ace/www/multilang_lexer.js => trunk/infrastructure/ace/www/multilang_lexer.js rename : trunk/trunk/infrastructure/ace/www/processing.js => trunk/infrastructure/ace/www/processing.js rename : trunk/trunk/infrastructure/ace/www/profiler.js => trunk/infrastructure/ace/www/profiler.js rename : trunk/trunk/infrastructure/ace/www/skiplist.js => trunk/infrastructure/ace/www/skiplist.js rename : trunk/trunk/infrastructure/ace/www/spanlist.js => trunk/infrastructure/ace/www/spanlist.js rename : trunk/trunk/infrastructure/ace/www/syntax-new.css => trunk/infrastructure/ace/www/syntax-new.css rename : trunk/trunk/infrastructure/ace/www/syntax.css => trunk/infrastructure/ace/www/syntax.css rename : trunk/trunk/infrastructure/ace/www/test.html => trunk/infrastructure/ace/www/test.html rename : trunk/trunk/infrastructure/ace/www/testcode.js => trunk/infrastructure/ace/www/testcode.js rename : trunk/trunk/infrastructure/ace/www/toSource.js => trunk/infrastructure/ace/www/toSource.js rename : trunk/trunk/infrastructure/ace/www/undomodule.js => trunk/infrastructure/ace/www/undomodule.js rename : trunk/trunk/infrastructure/ace/www/virtual_lines.js => trunk/infrastructure/ace/www/virtual_lines.js rename : trunk/trunk/infrastructure/bin/classpath.sh => trunk/infrastructure/bin/classpath.sh rename : trunk/trunk/infrastructure/bin/comp.sh => trunk/infrastructure/bin/comp.sh rename : trunk/trunk/infrastructure/bin/compilecache.sh => trunk/infrastructure/bin/compilecache.sh rename : trunk/trunk/infrastructure/bin/jscomp.sh => trunk/infrastructure/bin/jscomp.sh rename : trunk/trunk/infrastructure/bin/makejar.sh => trunk/infrastructure/bin/makejar.sh rename : trunk/trunk/infrastructure/bin/makesars.sh => trunk/infrastructure/bin/makesars.sh rename : trunk/trunk/infrastructure/bin/run.sh => trunk/infrastructure/bin/run.sh rename : trunk/trunk/infrastructure/com.etherpad.openofficeservice/importexport.scala => trunk/infrastructure/com.etherpad.openofficeservice/importexport.scala rename : trunk/trunk/infrastructure/com.etherpad/easysync2support.scala => trunk/infrastructure/com.etherpad/easysync2support.scala rename : trunk/trunk/infrastructure/com.etherpad/licensing.scala => trunk/infrastructure/com.etherpad/licensing.scala rename : trunk/trunk/infrastructure/com.etherpad/main.scala => trunk/infrastructure/com.etherpad/main.scala rename : trunk/trunk/infrastructure/framework-src/modules/atomfeed.js => trunk/infrastructure/framework-src/modules/atomfeed.js rename : trunk/trunk/infrastructure/framework-src/modules/blob.js => trunk/infrastructure/framework-src/modules/blob.js rename : trunk/trunk/infrastructure/framework-src/modules/cache_utils.js => trunk/infrastructure/framework-src/modules/cache_utils.js rename : trunk/trunk/infrastructure/framework-src/modules/comet.js => trunk/infrastructure/framework-src/modules/comet.js rename : trunk/trunk/infrastructure/framework-src/modules/dateutils.js => trunk/infrastructure/framework-src/modules/dateutils.js rename : trunk/trunk/infrastructure/framework-src/modules/dispatch.js => trunk/infrastructure/framework-src/modules/dispatch.js rename : trunk/trunk/infrastructure/framework-src/modules/ejs.js => trunk/infrastructure/framework-src/modules/ejs.js rename : trunk/trunk/infrastructure/framework-src/modules/email.js => trunk/infrastructure/framework-src/modules/email.js rename : trunk/trunk/infrastructure/framework-src/modules/exceptionutils.js => trunk/infrastructure/framework-src/modules/exceptionutils.js rename : trunk/trunk/infrastructure/framework-src/modules/execution.js => trunk/infrastructure/framework-src/modules/execution.js rename : trunk/trunk/infrastructure/framework-src/modules/fastJSON.js => trunk/infrastructure/framework-src/modules/fastJSON.js rename : trunk/trunk/infrastructure/framework-src/modules/faststatic.js => trunk/infrastructure/framework-src/modules/faststatic.js rename : trunk/trunk/infrastructure/framework-src/modules/fileutils.js => trunk/infrastructure/framework-src/modules/fileutils.js rename : trunk/trunk/infrastructure/framework-src/modules/funhtml.js => trunk/infrastructure/framework-src/modules/funhtml.js rename : trunk/trunk/infrastructure/framework-src/modules/global/appjet.js => trunk/infrastructure/framework-src/modules/global/appjet.js rename : trunk/trunk/infrastructure/framework-src/modules/global/request.js => trunk/infrastructure/framework-src/modules/global/request.js rename : trunk/trunk/infrastructure/framework-src/modules/global/response.js => trunk/infrastructure/framework-src/modules/global/response.js rename : trunk/trunk/infrastructure/framework-src/modules/image.js => trunk/infrastructure/framework-src/modules/image.js rename : trunk/trunk/infrastructure/framework-src/modules/jsmin.js => trunk/infrastructure/framework-src/modules/jsmin.js rename : trunk/trunk/infrastructure/framework-src/modules/jsutils.js => trunk/infrastructure/framework-src/modules/jsutils.js rename : trunk/trunk/infrastructure/framework-src/modules/netutils.js => trunk/infrastructure/framework-src/modules/netutils.js rename : trunk/trunk/infrastructure/framework-src/modules/profiler.js => trunk/infrastructure/framework-src/modules/profiler.js rename : trunk/trunk/infrastructure/framework-src/modules/sessions.js => trunk/infrastructure/framework-src/modules/sessions.js rename : trunk/trunk/infrastructure/framework-src/modules/sqlbase/persistent_vars.js => trunk/infrastructure/framework-src/modules/sqlbase/persistent_vars.js rename : trunk/trunk/infrastructure/framework-src/modules/sqlbase/sqlbase.js => trunk/infrastructure/framework-src/modules/sqlbase/sqlbase.js rename : trunk/trunk/infrastructure/framework-src/modules/sqlbase/sqlcommon.js => trunk/infrastructure/framework-src/modules/sqlbase/sqlcommon.js rename : trunk/trunk/infrastructure/framework-src/modules/sqlbase/sqlobj.js => trunk/infrastructure/framework-src/modules/sqlbase/sqlobj.js rename : trunk/trunk/infrastructure/framework-src/modules/stringutils.js => trunk/infrastructure/framework-src/modules/stringutils.js rename : trunk/trunk/infrastructure/framework-src/modules/sync.js => trunk/infrastructure/framework-src/modules/sync.js rename : trunk/trunk/infrastructure/framework-src/modules/timer.js => trunk/infrastructure/framework-src/modules/timer.js rename : trunk/trunk/infrastructure/framework-src/modules/varz.js => trunk/infrastructure/framework-src/modules/varz.js rename : trunk/trunk/infrastructure/framework-src/modules/yuicompressor.js => trunk/infrastructure/framework-src/modules/yuicompressor.js rename : trunk/trunk/infrastructure/framework-src/oncomet.js => trunk/infrastructure/framework-src/oncomet.js rename : trunk/trunk/infrastructure/framework-src/onerror.js => trunk/infrastructure/framework-src/onerror.js rename : trunk/trunk/infrastructure/framework-src/onprint.js => trunk/infrastructure/framework-src/onprint.js rename : trunk/trunk/infrastructure/framework-src/onrequest.js => trunk/infrastructure/framework-src/onrequest.js rename : trunk/trunk/infrastructure/framework-src/onreset.js => trunk/infrastructure/framework-src/onreset.js rename : trunk/trunk/infrastructure/framework-src/onsars.js => trunk/infrastructure/framework-src/onsars.js rename : trunk/trunk/infrastructure/framework-src/onscheduledtask.js => trunk/infrastructure/framework-src/onscheduledtask.js rename : trunk/trunk/infrastructure/framework-src/onshutdown.js => trunk/infrastructure/framework-src/onshutdown.js rename : trunk/trunk/infrastructure/framework-src/onstartup.js => trunk/infrastructure/framework-src/onstartup.js rename : trunk/trunk/infrastructure/framework-src/onsyntaxerror.js => trunk/infrastructure/framework-src/onsyntaxerror.js rename : trunk/trunk/infrastructure/framework-src/postamble.js => trunk/infrastructure/framework-src/postamble.js rename : trunk/trunk/infrastructure/framework-src/preamble.js => trunk/infrastructure/framework-src/preamble.js rename : trunk/trunk/infrastructure/framework-src/syntaxerror.js => trunk/infrastructure/framework-src/syntaxerror.js rename : trunk/trunk/infrastructure/lib/activation.jar => trunk/infrastructure/lib/activation.jar rename : trunk/trunk/infrastructure/lib/c3p0-0.9.1.2.jar => trunk/infrastructure/lib/c3p0-0.9.1.2.jar rename : trunk/trunk/infrastructure/lib/commons-lang-2.4.jar => trunk/infrastructure/lib/commons-lang-2.4.jar rename : trunk/trunk/infrastructure/lib/derby-10.5.1.1.jar => trunk/infrastructure/lib/derby-10.5.1.1.jar rename : trunk/trunk/infrastructure/lib/derbytools.jar => trunk/infrastructure/lib/derbytools.jar rename : trunk/trunk/infrastructure/lib/dnsjava-2.0.6.jar => trunk/infrastructure/lib/dnsjava-2.0.6.jar rename : trunk/trunk/infrastructure/lib/jetty-6.1.20.jar => trunk/infrastructure/lib/jetty-6.1.20.jar rename : trunk/trunk/infrastructure/lib/jetty-sslengine-6.1.20.jar => trunk/infrastructure/lib/jetty-sslengine-6.1.20.jar rename : trunk/trunk/infrastructure/lib/jetty-util-6.1.20.jar => trunk/infrastructure/lib/jetty-util-6.1.20.jar rename : trunk/trunk/infrastructure/lib/json.jar => trunk/infrastructure/lib/json.jar rename : trunk/trunk/infrastructure/lib/mail.jar => trunk/infrastructure/lib/mail.jar rename : trunk/trunk/infrastructure/lib/manifest => trunk/infrastructure/lib/manifest rename : trunk/trunk/infrastructure/lib/rhino-js-1.7r1.jar => trunk/infrastructure/lib/rhino-js-1.7r1.jar rename : trunk/trunk/infrastructure/lib/sanselan-0.94aj.jar => trunk/infrastructure/lib/sanselan-0.94aj.jar rename : trunk/trunk/infrastructure/lib/servlet-api-2.5-20081211.jar => trunk/infrastructure/lib/servlet-api-2.5-20081211.jar rename : trunk/trunk/infrastructure/lib/tagsoup-1.2.jar => trunk/infrastructure/lib/tagsoup-1.2.jar rename : trunk/trunk/infrastructure/lib/yuicompressor-2.4-appjet.jar => trunk/infrastructure/lib/yuicompressor-2.4-appjet.jar rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala => trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala => trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js => trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html => trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/streaming.scala => trunk/infrastructure/net.appjet.ajstdlib/streaming.scala rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/timer.scala => trunk/infrastructure/net.appjet.ajstdlib/timer.scala rename : trunk/trunk/infrastructure/net.appjet.bodylock/bodylock.scala => trunk/infrastructure/net.appjet.bodylock/bodylock.scala rename : trunk/trunk/infrastructure/net.appjet.bodylock/compressor.scala => trunk/infrastructure/net.appjet.bodylock/compressor.scala rename : trunk/trunk/infrastructure/net.appjet.common.cli/cli.scala => trunk/infrastructure/net.appjet.common.cli/cli.scala rename : trunk/trunk/infrastructure/net.appjet.common.sars/sars.scala => trunk/infrastructure/net.appjet.common.sars/sars.scala rename : trunk/trunk/infrastructure/net.appjet.common.sars/sha1.scala => trunk/infrastructure/net.appjet.common.sars/sha1.scala rename : trunk/trunk/infrastructure/net.appjet.common/rhino/rhinospect.scala => trunk/infrastructure/net.appjet.common/rhino/rhinospect.scala rename : trunk/trunk/infrastructure/net.appjet.common/util/BCrypt.java => trunk/infrastructure/net.appjet.common/util/BCrypt.java rename : trunk/trunk/infrastructure/net.appjet.common/util/BetterFile.java => trunk/infrastructure/net.appjet.common/util/BetterFile.java rename : trunk/trunk/infrastructure/net.appjet.common/util/ClassReload.java => trunk/infrastructure/net.appjet.common/util/ClassReload.java rename : trunk/trunk/infrastructure/net.appjet.common/util/ExpiringMapping.java => trunk/infrastructure/net.appjet.common/util/ExpiringMapping.java rename : trunk/trunk/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java => trunk/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java rename : trunk/trunk/infrastructure/net.appjet.common/util/LenientFormatter.java => trunk/infrastructure/net.appjet.common/util/LenientFormatter.java rename : trunk/trunk/infrastructure/net.appjet.common/util/LimitedSizeMapping.java => trunk/infrastructure/net.appjet.common/util/LimitedSizeMapping.java rename : trunk/trunk/infrastructure/net.appjet.oui/ConfigParam.java => trunk/infrastructure/net.appjet.oui/ConfigParam.java rename : trunk/trunk/infrastructure/net.appjet.oui/FastJSON.scala => trunk/infrastructure/net.appjet.oui/FastJSON.scala rename : trunk/trunk/infrastructure/net.appjet.oui/GeneratedConfigParam.java => trunk/infrastructure/net.appjet.oui/GeneratedConfigParam.java rename : trunk/trunk/infrastructure/net.appjet.oui/config.scala => trunk/infrastructure/net.appjet.oui/config.scala rename : trunk/trunk/infrastructure/net.appjet.oui/dynamicvar.scala => trunk/infrastructure/net.appjet.oui/dynamicvar.scala rename : trunk/trunk/infrastructure/net.appjet.oui/encryption.scala => trunk/infrastructure/net.appjet.oui/encryption.scala rename : trunk/trunk/infrastructure/net.appjet.oui/execution.scala => trunk/infrastructure/net.appjet.oui/execution.scala rename : trunk/trunk/infrastructure/net.appjet.oui/files.scala => trunk/infrastructure/net.appjet.oui/files.scala rename : trunk/trunk/infrastructure/net.appjet.oui/logging.scala => trunk/infrastructure/net.appjet.oui/logging.scala rename : trunk/trunk/infrastructure/net.appjet.oui/main.scala => trunk/infrastructure/net.appjet.oui/main.scala rename : trunk/trunk/infrastructure/net.appjet.oui/monitoring.scala => trunk/infrastructure/net.appjet.oui/monitoring.scala rename : trunk/trunk/infrastructure/net.appjet.oui/network.scala => trunk/infrastructure/net.appjet.oui/network.scala rename : trunk/trunk/infrastructure/net.appjet.oui/servermodel.scala => trunk/infrastructure/net.appjet.oui/servermodel.scala rename : trunk/trunk/infrastructure/net.appjet.oui/stats.scala => trunk/infrastructure/net.appjet.oui/stats.scala rename : trunk/trunk/infrastructure/net.appjet.oui/synchronizer.scala => trunk/infrastructure/net.appjet.oui/synchronizer.scala rename : trunk/trunk/infrastructure/net.appjet.oui/util.scala => trunk/infrastructure/net.appjet.oui/util.scala rename : trunk/trunk/infrastructure/rhino1_7R1/apiClasses.properties => trunk/infrastructure/rhino1_7R1/apiClasses.properties rename : trunk/trunk/infrastructure/rhino1_7R1/build-date => trunk/infrastructure/rhino1_7R1/build-date rename : trunk/trunk/infrastructure/rhino1_7R1/build.properties => trunk/infrastructure/rhino1_7R1/build.properties rename : trunk/trunk/infrastructure/rhino1_7R1/build.xml => trunk/infrastructure/rhino1_7R1/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/build.xml => trunk/infrastructure/rhino1_7R1/deprecatedsrc/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Control.java => trunk/infrastructure/rhino1_7R1/examples/Control.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Counter.java => trunk/infrastructure/rhino1_7R1/examples/Counter.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/CounterTest.java => trunk/infrastructure/rhino1_7R1/examples/CounterTest.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/DynamicScopes.java => trunk/infrastructure/rhino1_7R1/examples/DynamicScopes.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js => trunk/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/File.java => trunk/infrastructure/rhino1_7R1/examples/File.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Foo.java => trunk/infrastructure/rhino1_7R1/examples/Foo.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Matrix.java => trunk/infrastructure/rhino1_7R1/examples/Matrix.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/NervousText.html => trunk/infrastructure/rhino1_7R1/examples/NervousText.html rename : trunk/trunk/infrastructure/rhino1_7R1/examples/NervousText.js => trunk/infrastructure/rhino1_7R1/examples/NervousText.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java => trunk/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/RunScript.java => trunk/infrastructure/rhino1_7R1/examples/RunScript.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/RunScript2.java => trunk/infrastructure/rhino1_7R1/examples/RunScript2.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/RunScript3.java => trunk/infrastructure/rhino1_7R1/examples/RunScript3.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/RunScript4.java => trunk/infrastructure/rhino1_7R1/examples/RunScript4.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Shell.java => trunk/infrastructure/rhino1_7R1/examples/Shell.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/SwingApplication.js => trunk/infrastructure/rhino1_7R1/examples/SwingApplication.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/checkParam.js => trunk/infrastructure/rhino1_7R1/examples/checkParam.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/enum.js => trunk/infrastructure/rhino1_7R1/examples/enum.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/jsdoc.js => trunk/infrastructure/rhino1_7R1/examples/jsdoc.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/liveConnect.js => trunk/infrastructure/rhino1_7R1/examples/liveConnect.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/unique.js => trunk/infrastructure/rhino1_7R1/examples/unique.js rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html => trunk/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/constant-values.html => trunk/infrastructure/rhino1_7R1/javadoc/constant-values.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/deprecated-list.html => trunk/infrastructure/rhino1_7R1/javadoc/deprecated-list.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/help-doc.html => trunk/infrastructure/rhino1_7R1/javadoc/help-doc.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/index-all.html => trunk/infrastructure/rhino1_7R1/javadoc/index-all.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/index.html => trunk/infrastructure/rhino1_7R1/javadoc/index.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/overview-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/overview-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/overview-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/overview-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/overview-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/overview-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/package-list => trunk/infrastructure/rhino1_7R1/javadoc/package-list rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif => trunk/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/serialized-form.html => trunk/infrastructure/rhino1_7R1/javadoc/serialized-form.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/stylesheet.css => trunk/infrastructure/rhino1_7R1/javadoc/stylesheet.css rename : trunk/trunk/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar => trunk/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar rename : trunk/trunk/infrastructure/rhino1_7R1/lib/xbean.jar => trunk/infrastructure/rhino1_7R1/lib/xbean.jar rename : trunk/trunk/infrastructure/rhino1_7R1/src/build.xml => trunk/infrastructure/rhino1_7R1/src/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/src/manifest => trunk/infrastructure/rhino1_7R1/src/manifest rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/base.skip => trunk/infrastructure/rhino1_7R1/testsrc/base.skip rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/build.xml => trunk/infrastructure/rhino1_7R1/testsrc/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/opt1.skip => trunk/infrastructure/rhino1_7R1/testsrc/opt1.skip rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/build.xml => trunk/infrastructure/rhino1_7R1/toolsrc/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/build.xml => trunk/infrastructure/rhino1_7R1/xmlimplsrc/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java rename : trunk/trunk/infrastructure/yuicompressor/lib/jargs-1.0.jar => trunk/infrastructure/yuicompressor/lib/jargs-1.0.jar rename : trunk/trunk/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar => trunk/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar rename : trunk/trunk/infrastructure/yuicompressor/make.sh => trunk/infrastructure/yuicompressor/make.sh rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig --- .../mozilla/javascript/regexp/NativeRegExp.java | 2782 ++++++++++++++++++++ 1 file changed, 2782 insertions(+) create mode 100644 trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java (limited to 'trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java') diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java b/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java new file mode 100644 index 0000000..a893841 --- /dev/null +++ b/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java @@ -0,0 +1,2782 @@ +/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Rhino code, released + * May 6, 1998. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1997-1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Norris Boyd + * Igor Bukanov + * Brendan Eich + * Matthias Radestock + * + * Alternatively, the contents of this file may be used under the terms of + * the GNU General Public License Version 2 or later (the "GPL"), in which + * case the provisions of the GPL are applicable instead of those above. If + * you wish to allow use of your version of this file only under the terms of + * the GPL and not to allow others to use your version of this file under the + * MPL, indicate your decision by deleting the provisions above and replacing + * them with the notice and other provisions required by the GPL. If you do + * not delete the provisions above, a recipient may use your version of this + * file under either the MPL or the GPL. + * + * ***** END LICENSE BLOCK ***** */ + +package org.mozilla.javascript.regexp; + +import java.io.Serializable; + +import org.mozilla.javascript.Context; +import org.mozilla.javascript.Function; +import org.mozilla.javascript.IdFunctionObject; +import org.mozilla.javascript.IdScriptableObject; +import org.mozilla.javascript.Kit; +import org.mozilla.javascript.ScriptRuntime; +import org.mozilla.javascript.Scriptable; +import org.mozilla.javascript.ScriptableObject; +import org.mozilla.javascript.Undefined; + +/** + * This class implements the RegExp native object. + * + * Revision History: + * Implementation in C by Brendan Eich + * Initial port to Java by Norris Boyd from jsregexp.c version 1.36 + * Merged up to version 1.38, which included Unicode support. + * Merged bug fixes in version 1.39. + * Merged JSFUN13_BRANCH changes up to 1.32.2.13 + * + * @author Brendan Eich + * @author Norris Boyd + */ + + + +public class NativeRegExp extends IdScriptableObject implements Function +{ + static final long serialVersionUID = 4965263491464903264L; + + private static final Object REGEXP_TAG = new Object(); + + public static final int JSREG_GLOB = 0x1; // 'g' flag: global + public static final int JSREG_FOLD = 0x2; // 'i' flag: fold + public static final int JSREG_MULTILINE = 0x4; // 'm' flag: multiline + + //type of match to perform + public static final int TEST = 0; + public static final int MATCH = 1; + public static final int PREFIX = 2; + + private static final boolean debug = false; + + private static final byte REOP_EMPTY = 0; /* match rest of input against rest of r.e. */ + private static final byte REOP_ALT = 1; /* alternative subexpressions in kid and next */ + private static final byte REOP_BOL = 2; /* beginning of input (or line if multiline) */ + private static final byte REOP_EOL = 3; /* end of input (or line if multiline) */ + private static final byte REOP_WBDRY = 4; /* match "" at word boundary */ + private static final byte REOP_WNONBDRY = 5; /* match "" at word non-boundary */ + private static final byte REOP_QUANT = 6; /* quantified atom: atom{1,2} */ + private static final byte REOP_STAR = 7; /* zero or more occurrences of kid */ + private static final byte REOP_PLUS = 8; /* one or more occurrences of kid */ + private static final byte REOP_OPT = 9; /* optional subexpression in kid */ + private static final byte REOP_LPAREN = 10; /* left paren bytecode: kid is u.num'th sub-regexp */ + private static final byte REOP_RPAREN = 11; /* right paren bytecode */ + private static final byte REOP_DOT = 12; /* stands for any character */ +// private static final byte REOP_CCLASS = 13; /* character class: [a-f] */ + private static final byte REOP_DIGIT = 14; /* match a digit char: [0-9] */ + private static final byte REOP_NONDIGIT = 15; /* match a non-digit char: [^0-9] */ + private static final byte REOP_ALNUM = 16; /* match an alphanumeric char: [0-9a-z_A-Z] */ + private static final byte REOP_NONALNUM = 17; /* match a non-alphanumeric char: [^0-9a-z_A-Z] */ + private static final byte REOP_SPACE = 18; /* match a whitespace char */ + private static final byte REOP_NONSPACE = 19; /* match a non-whitespace char */ + private static final byte REOP_BACKREF = 20; /* back-reference (e.g., \1) to a parenthetical */ + private static final byte REOP_FLAT = 21; /* match a flat string */ + private static final byte REOP_FLAT1 = 22; /* match a single char */ + private static final byte REOP_JUMP = 23; /* for deoptimized closure loops */ +// private static final byte REOP_DOTSTAR = 24; /* optimize .* to use a single opcode */ +// private static final byte REOP_ANCHOR = 25; /* like .* but skips left context to unanchored r.e. */ +// private static final byte REOP_EOLONLY = 26; /* $ not preceded by any pattern */ +// private static final byte REOP_UCFLAT = 27; /* flat Unicode string; len immediate counts chars */ + private static final byte REOP_UCFLAT1 = 28; /* single Unicode char */ +// private static final byte REOP_UCCLASS = 29; /* Unicode character class, vector of chars to match */ +// private static final byte REOP_NUCCLASS = 30; /* negated Unicode character class */ +// private static final byte REOP_BACKREFi = 31; /* case-independent REOP_BACKREF */ + private static final byte REOP_FLATi = 32; /* case-independent REOP_FLAT */ + private static final byte REOP_FLAT1i = 33; /* case-independent REOP_FLAT1 */ +// private static final byte REOP_UCFLATi = 34; /* case-independent REOP_UCFLAT */ + private static final byte REOP_UCFLAT1i = 35; /* case-independent REOP_UCFLAT1 */ +// private static final byte REOP_ANCHOR1 = 36; /* first-char discriminating REOP_ANCHOR */ +// private static final byte REOP_NCCLASS = 37; /* negated 8-bit character class */ +// private static final byte REOP_DOTSTARMIN = 38; /* ungreedy version of REOP_DOTSTAR */ +// private static final byte REOP_LPARENNON = 39; /* non-capturing version of REOP_LPAREN */ +// private static final byte REOP_RPARENNON = 40; /* non-capturing version of REOP_RPAREN */ + private static final byte REOP_ASSERT = 41; /* zero width positive lookahead assertion */ + private static final byte REOP_ASSERT_NOT = 42; /* zero width negative lookahead assertion */ + private static final byte REOP_ASSERTTEST = 43; /* sentinel at end of assertion child */ + private static final byte REOP_ASSERTNOTTEST = 44; /* sentinel at end of !assertion child */ + private static final byte REOP_MINIMALSTAR = 45; /* non-greedy version of * */ + private static final byte REOP_MINIMALPLUS = 46; /* non-greedy version of + */ + private static final byte REOP_MINIMALOPT = 47; /* non-greedy version of ? */ + private static final byte REOP_MINIMALQUANT = 48; /* non-greedy version of {} */ + private static final byte REOP_ENDCHILD = 49; /* sentinel at end of quantifier child */ + private static final byte REOP_CLASS = 50; /* character class with index */ + private static final byte REOP_REPEAT = 51; /* directs execution of greedy quantifier */ + private static final byte REOP_MINIMALREPEAT = 52; /* directs execution of non-greedy quantifier */ + private static final byte REOP_END = 53; + + + + public static void init(Context cx, Scriptable scope, boolean sealed) + { + + NativeRegExp proto = new NativeRegExp(); + proto.re = (RECompiled)compileRE(cx, "", null, false); + proto.activatePrototypeMap(MAX_PROTOTYPE_ID); + proto.setParentScope(scope); + proto.setPrototype(getObjectPrototype(scope)); + + NativeRegExpCtor ctor = new NativeRegExpCtor(); + // Bug #324006: ECMA-262 15.10.6.1 says "The initial value of + // RegExp.prototype.constructor is the builtin RegExp constructor." + proto.put("constructor", proto, ctor); + + ScriptRuntime.setFunctionProtoAndParent(ctor, scope); + + ctor.setImmunePrototypeProperty(proto); + + if (sealed) { + proto.sealObject(); + ctor.sealObject(); + } + + defineProperty(scope, "RegExp", ctor, ScriptableObject.DONTENUM); + } + + NativeRegExp(Scriptable scope, Object regexpCompiled) + { + this.re = (RECompiled)regexpCompiled; + this.lastIndex = 0; + ScriptRuntime.setObjectProtoAndParent(this, scope); + } + + public String getClassName() + { + return "RegExp"; + } + + public Object call(Context cx, Scriptable scope, Scriptable thisObj, + Object[] args) + { + return execSub(cx, scope, args, MATCH); + } + + public Scriptable construct(Context cx, Scriptable scope, Object[] args) + { + return (Scriptable)execSub(cx, scope, args, MATCH); + } + + Scriptable compile(Context cx, Scriptable scope, Object[] args) + { + if (args.length > 0 && args[0] instanceof NativeRegExp) { + if (args.length > 1 && args[1] != Undefined.instance) { + // report error + throw ScriptRuntime.typeError0("msg.bad.regexp.compile"); + } + NativeRegExp thatObj = (NativeRegExp) args[0]; + this.re = thatObj.re; + this.lastIndex = thatObj.lastIndex; + return this; + } + String s = args.length == 0 ? "" : ScriptRuntime.toString(args[0]); + String global = args.length > 1 && args[1] != Undefined.instance + ? ScriptRuntime.toString(args[1]) + : null; + this.re = (RECompiled)compileRE(cx, s, global, false); + this.lastIndex = 0; + return this; + } + + public String toString() + { + StringBuffer buf = new StringBuffer(); + buf.append('/'); + if (re.source.length != 0) { + buf.append(re.source); + } else { + // See bugzilla 226045 + buf.append("(?:)"); + } + buf.append('/'); + if ((re.flags & JSREG_GLOB) != 0) + buf.append('g'); + if ((re.flags & JSREG_FOLD) != 0) + buf.append('i'); + if ((re.flags & JSREG_MULTILINE) != 0) + buf.append('m'); + return buf.toString(); + } + + NativeRegExp() { } + + private static RegExpImpl getImpl(Context cx) + { + return (RegExpImpl) ScriptRuntime.getRegExpProxy(cx); + } + + private Object execSub(Context cx, Scriptable scopeObj, + Object[] args, int matchType) + { + RegExpImpl reImpl = getImpl(cx); + String str; + if (args.length == 0) { + str = reImpl.input; + if (str == null) { + reportError("msg.no.re.input.for", toString()); + } + } else { + str = ScriptRuntime.toString(args[0]); + } + double d = ((re.flags & JSREG_GLOB) != 0) ? lastIndex : 0; + + Object rval; + if (d < 0 || str.length() < d) { + lastIndex = 0; + rval = null; + } + else { + int indexp[] = { (int)d }; + rval = executeRegExp(cx, scopeObj, reImpl, str, indexp, matchType); + if ((re.flags & JSREG_GLOB) != 0) { + lastIndex = (rval == null || rval == Undefined.instance) + ? 0 : indexp[0]; + } + } + return rval; + } + + static Object compileRE(Context cx, String str, String global, boolean flat) + { + RECompiled regexp = new RECompiled(); + regexp.source = str.toCharArray(); + int length = str.length(); + + int flags = 0; + if (global != null) { + for (int i = 0; i < global.length(); i++) { + char c = global.charAt(i); + if (c == 'g') { + flags |= JSREG_GLOB; + } else if (c == 'i') { + flags |= JSREG_FOLD; + } else if (c == 'm') { + flags |= JSREG_MULTILINE; + } else { + reportError("msg.invalid.re.flag", String.valueOf(c)); + } + } + } + regexp.flags = flags; + + CompilerState state = new CompilerState(cx, regexp.source, length, flags); + if (flat && length > 0) { +if (debug) { +System.out.println("flat = \"" + str + "\""); +} + state.result = new RENode(REOP_FLAT); + state.result.chr = state.cpbegin[0]; + state.result.length = length; + state.result.flatIndex = 0; + state.progLength += 5; + } + else + if (!parseDisjunction(state)) + return null; + + regexp.program = new byte[state.progLength + 1]; + if (state.classCount != 0) { + regexp.classList = new RECharSet[state.classCount]; + regexp.classCount = state.classCount; + } + int endPC = emitREBytecode(state, regexp, 0, state.result); + regexp.program[endPC++] = REOP_END; + +if (debug) { +System.out.println("Prog. length = " + endPC); +for (int i = 0; i < endPC; i++) { + System.out.print(regexp.program[i]); + if (i < (endPC - 1)) System.out.print(", "); +} +System.out.println(); +} + regexp.parenCount = state.parenCount; + + // If re starts with literal, init anchorCh accordingly + switch (regexp.program[0]) { + case REOP_UCFLAT1: + case REOP_UCFLAT1i: + regexp.anchorCh = (char)getIndex(regexp.program, 1); + break; + case REOP_FLAT1: + case REOP_FLAT1i: + regexp.anchorCh = (char)(regexp.program[1] & 0xFF); + break; + case REOP_FLAT: + case REOP_FLATi: + int k = getIndex(regexp.program, 1); + regexp.anchorCh = regexp.source[k]; + break; + } + +if (debug) { +if (regexp.anchorCh >= 0) { + System.out.println("Anchor ch = '" + (char)regexp.anchorCh + "'"); +} +} + return regexp; + } + + static boolean isDigit(char c) + { + return '0' <= c && c <= '9'; + } + + private static boolean isWord(char c) + { + return Character.isLetter(c) || isDigit(c) || c == '_'; + } + + private static boolean isLineTerm(char c) + { + return ScriptRuntime.isJSLineTerminator(c); + } + + private static boolean isREWhiteSpace(int c) + { + return (c == '\u0020' || c == '\u0009' + || c == '\n' || c == '\r' + || c == 0x2028 || c == 0x2029 + || c == '\u000C' || c == '\u000B' + || c == '\u00A0' + || Character.getType((char)c) == Character.SPACE_SEPARATOR); + } + + /* + * + * 1. If IgnoreCase is false, return ch. + * 2. Let u be ch converted to upper case as if by calling + * String.prototype.toUpperCase on the one-character string ch. + * 3. If u does not consist of a single character, return ch. + * 4. Let cu be u's character. + * 5. If ch's code point value is greater than or equal to decimal 128 and cu's + * code point value is less than decimal 128, then return ch. + * 6. Return cu. + */ + private static char upcase(char ch) + { + if (ch < 128) { + if ('a' <= ch && ch <= 'z') { + return (char)(ch + ('A' - 'a')); + } + return ch; + } + char cu = Character.toUpperCase(ch); + if ((ch >= 128) && (cu < 128)) return ch; + return cu; + } + + private static char downcase(char ch) + { + if (ch < 128) { + if ('A' <= ch && ch <= 'Z') { + return (char)(ch + ('a' - 'A')); + } + return ch; + } + char cl = Character.toLowerCase(ch); + if ((ch >= 128) && (cl < 128)) return ch; + return cl; + } + +/* + * Validates and converts hex ascii value. + */ + private static int toASCIIHexDigit(int c) + { + if (c < '0') + return -1; + if (c <= '9') { + return c - '0'; + } + c |= 0x20; + if ('a' <= c && c <= 'f') { + return c - 'a' + 10; + } + return -1; + } + +/* + * Top-down regular expression grammar, based closely on Perl4. + * + * regexp: altern A regular expression is one or more + * altern '|' regexp alternatives separated by vertical bar. + */ + private static boolean parseDisjunction(CompilerState state) + { + if (!parseAlternative(state)) + return false; + char[] source = state.cpbegin; + int index = state.cp; + if (index != source.length && source[index] == '|') { + RENode altResult; + ++state.cp; + altResult = new RENode(REOP_ALT); + altResult.kid = state.result; + if (!parseDisjunction(state)) + return false; + altResult.kid2 = state.result; + state.result = altResult; + /* ALT, , ..., JUMP, ... JUMP */ + state.progLength += 9; + } + return true; + } + +/* + * altern: item An alternative is one or more items, + * item altern concatenated together. + */ + private static boolean parseAlternative(CompilerState state) + { + RENode headTerm = null; + RENode tailTerm = null; + char[] source = state.cpbegin; + while (true) { + if (state.cp == state.cpend || source[state.cp] == '|' + || (state.parenNesting != 0 && source[state.cp] == ')')) + { + if (headTerm == null) { + state.result = new RENode(REOP_EMPTY); + } + else + state.result = headTerm; + return true; + } + if (!parseTerm(state)) + return false; + if (headTerm == null) + headTerm = state.result; + else { + if (tailTerm == null) { + headTerm.next = state.result; + tailTerm = state.result; + while (tailTerm.next != null) tailTerm = tailTerm.next; + } + else { + tailTerm.next = state.result; + tailTerm = tailTerm.next; + while (tailTerm.next != null) tailTerm = tailTerm.next; + } + } + } + } + + /* calculate the total size of the bitmap required for a class expression */ + private static boolean + calculateBitmapSize(CompilerState state, RENode target, char[] src, + int index, int end) + { + char rangeStart = 0; + char c; + int n; + int nDigits; + int i; + int max = 0; + boolean inRange = false; + + target.bmsize = 0; + + if (index == end) + return true; + + if (src[index] == '^') + ++index; + + while (index != end) { + int localMax = 0; + nDigits = 2; + switch (src[index]) { + case '\\': + ++index; + c = src[index++]; + switch (c) { + case 'b': + localMax = 0x8; + break; + case 'f': + localMax = 0xC; + break; + case 'n': + localMax = 0xA; + break; + case 'r': + localMax = 0xD; + break; + case 't': + localMax = 0x9; + break; + case 'v': + localMax = 0xB; + break; + case 'c': + if (((index + 1) < end) && Character.isLetter(src[index + 1])) + localMax = (char)(src[index++] & 0x1F); + else + localMax = '\\'; + break; + case 'u': + nDigits += 2; + // fall thru... + case 'x': + n = 0; + for (i = 0; (i < nDigits) && (index < end); i++) { + c = src[index++]; + n = Kit.xDigitToInt(c, n); + if (n < 0) { + // Back off to accepting the original + // '\' as a literal + index -= (i + 1); + n = '\\'; + break; + } + } + localMax = n; + break; + case 'd': + if (inRange) { + reportError("msg.bad.range", ""); + return false; + } + localMax = '9'; + break; + case 'D': + case 's': + case 'S': + case 'w': + case 'W': + if (inRange) { + reportError("msg.bad.range", ""); + return false; + } + target.bmsize = 65535; + return true; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + /* + * This is a non-ECMA extension - decimal escapes (in this + * case, octal!) are supposed to be an error inside class + * ranges, but supported here for backwards compatibility. + * + */ + n = (c - '0'); + c = src[index]; + if ('0' <= c && c <= '7') { + index++; + n = 8 * n + (c - '0'); + c = src[index]; + if ('0' <= c && c <= '7') { + index++; + i = 8 * n + (c - '0'); + if (i <= 0377) + n = i; + else + index--; + } + } + localMax = n; + break; + + default: + localMax = c; + break; + } + break; + default: + localMax = src[index++]; + break; + } + if (inRange) { + if (rangeStart > localMax) { + reportError("msg.bad.range", ""); + return false; + } + inRange = false; + } + else { + if (index < (end - 1)) { + if (src[index] == '-') { + ++index; + inRange = true; + rangeStart = (char)localMax; + continue; + } + } + } + if ((state.flags & JSREG_FOLD) != 0){ + char cu = upcase((char)localMax); + char cd = downcase((char)localMax); + localMax = (cu >= cd) ? cu : cd; + } + if (localMax > max) + max = localMax; + } + target.bmsize = max; + return true; + } + + /* + * item: assertion An item is either an assertion or + * quantatom a quantified atom. + * + * assertion: '^' Assertions match beginning of string + * (or line if the class static property + * RegExp.multiline is true). + * '$' End of string (or line if the class + * static property RegExp.multiline is + * true). + * '\b' Word boundary (between \w and \W). + * '\B' Word non-boundary. + * + * quantatom: atom An unquantified atom. + * quantatom '{' n ',' m '}' + * Atom must occur between n and m times. + * quantatom '{' n ',' '}' Atom must occur at least n times. + * quantatom '{' n '}' Atom must occur exactly n times. + * quantatom '*' Zero or more times (same as {0,}). + * quantatom '+' One or more times (same as {1,}). + * quantatom '?' Zero or one time (same as {0,1}). + * + * any of which can be optionally followed by '?' for ungreedy + * + * atom: '(' regexp ')' A parenthesized regexp (what matched + * can be addressed using a backreference, + * see '\' n below). + * '.' Matches any char except '\n'. + * '[' classlist ']' A character class. + * '[' '^' classlist ']' A negated character class. + * '\f' Form Feed. + * '\n' Newline (Line Feed). + * '\r' Carriage Return. + * '\t' Horizontal Tab. + * '\v' Vertical Tab. + * '\d' A digit (same as [0-9]). + * '\D' A non-digit. + * '\w' A word character, [0-9a-z_A-Z]. + * '\W' A non-word character. + * '\s' A whitespace character, [ \b\f\n\r\t\v]. + * '\S' A non-whitespace character. + * '\' n A backreference to the nth (n decimal + * and positive) parenthesized expression. + * '\' octal An octal escape sequence (octal must be + * two or three digits long, unless it is + * 0 for the null character). + * '\x' hex A hex escape (hex must be two digits). + * '\c' ctrl A control character, ctrl is a letter. + * '\' literalatomchar Any character except one of the above + * that follow '\' in an atom. + * otheratomchar Any character not first among the other + * atom right-hand sides. + */ + + private static void doFlat(CompilerState state, char c) + { + state.result = new RENode(REOP_FLAT); + state.result.chr = c; + state.result.length = 1; + state.result.flatIndex = -1; + state.progLength += 3; + } + + private static int + getDecimalValue(char c, CompilerState state, int maxValue, + String overflowMessageId) + { + boolean overflow = false; + int start = state.cp; + char[] src = state.cpbegin; + int value = c - '0'; + for (; state.cp != state.cpend; ++state.cp) { + c = src[state.cp]; + if (!isDigit(c)) { + break; + } + if (!overflow) { + int digit = c - '0'; + if (value < (maxValue - digit) / 10) { + value = value * 10 + digit; + } else { + overflow = true; + value = maxValue; + } + } + } + if (overflow) { + reportError(overflowMessageId, + String.valueOf(src, start, state.cp - start)); + } + return value; + } + + private static boolean + parseTerm(CompilerState state) + { + char[] src = state.cpbegin; + char c = src[state.cp++]; + int nDigits = 2; + int parenBaseCount = state.parenCount; + int num, tmp; + RENode term; + int termStart; + + switch (c) { + /* assertions and atoms */ + case '^': + state.result = new RENode(REOP_BOL); + state.progLength++; + return true; + case '$': + state.result = new RENode(REOP_EOL); + state.progLength++; + return true; + case '\\': + if (state.cp < state.cpend) { + c = src[state.cp++]; + switch (c) { + /* assertion escapes */ + case 'b' : + state.result = new RENode(REOP_WBDRY); + state.progLength++; + return true; + case 'B': + state.result = new RENode(REOP_WNONBDRY); + state.progLength++; + return true; + /* Decimal escape */ + case '0': +/* + * Under 'strict' ECMA 3, we interpret \0 as NUL and don't accept octal. + * However, (XXX and since Rhino doesn't have a 'strict' mode) we'll just + * behave the old way for compatibility reasons. + * (see http://bugzilla.mozilla.org/show_bug.cgi?id=141078) + * + */ + reportWarning(state.cx, "msg.bad.backref", ""); + /* octal escape */ + num = 0; + while (state.cp < state.cpend) { + c = src[state.cp]; + if ((c >= '0') && (c <= '7')) { + state.cp++; + tmp = 8 * num + (c - '0'); + if (tmp > 0377) + break; + num = tmp; + } + else + break; + } + c = (char)(num); + doFlat(state, c); + break; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + termStart = state.cp - 1; + num = getDecimalValue(c, state, 0xFFFF, + "msg.overlarge.backref"); + if (num > state.parenCount) + reportWarning(state.cx, "msg.bad.backref", ""); + /* + * n > 9 or > count of parentheses, + * then treat as octal instead. + */ + if ((num > 9) && (num > state.parenCount)) { + state.cp = termStart; + num = 0; + while (state.cp < state.cpend) { + c = src[state.cp]; + if ((c >= '0') && (c <= '7')) { + state.cp++; + tmp = 8 * num + (c - '0'); + if (tmp > 0377) + break; + num = tmp; + } + else + break; + } + c = (char)(num); + doFlat(state, c); + break; + } + /* otherwise, it's a back-reference */ + state.result = new RENode(REOP_BACKREF); + state.result.parenIndex = num - 1; + state.progLength += 3; + break; + /* Control escape */ + case 'f': + c = 0xC; + doFlat(state, c); + break; + case 'n': + c = 0xA; + doFlat(state, c); + break; + case 'r': + c = 0xD; + doFlat(state, c); + break; + case 't': + c = 0x9; + doFlat(state, c); + break; + case 'v': + c = 0xB; + doFlat(state, c); + break; + /* Control letter */ + case 'c': + if (((state.cp + 1) < state.cpend) && + Character.isLetter(src[state.cp + 1])) + c = (char)(src[state.cp++] & 0x1F); + else { + /* back off to accepting the original '\' as a literal */ + --state.cp; + c = '\\'; + } + doFlat(state, c); + break; + /* UnicodeEscapeSequence */ + case 'u': + nDigits += 2; + // fall thru... + /* HexEscapeSequence */ + case 'x': + { + int n = 0; + int i; + for (i = 0; (i < nDigits) + && (state.cp < state.cpend); i++) { + c = src[state.cp++]; + n = Kit.xDigitToInt(c, n); + if (n < 0) { + // Back off to accepting the original + // 'u' or 'x' as a literal + state.cp -= (i + 2); + n = src[state.cp++]; + break; + } + } + c = (char)(n); + } + doFlat(state, c); + break; + /* Character class escapes */ + case 'd': + state.result = new RENode(REOP_DIGIT); + state.progLength++; + break; + case 'D': + state.result = new RENode(REOP_NONDIGIT); + state.progLength++; + break; + case 's': + state.result = new RENode(REOP_SPACE); + state.progLength++; + break; + case 'S': + state.result = new RENode(REOP_NONSPACE); + state.progLength++; + break; + case 'w': + state.result = new RENode(REOP_ALNUM); + state.progLength++; + break; + case 'W': + state.result = new RENode(REOP_NONALNUM); + state.progLength++; + break; + /* IdentityEscape */ + default: + state.result = new RENode(REOP_FLAT); + state.result.chr = c; + state.result.length = 1; + state.result.flatIndex = state.cp - 1; + state.progLength += 3; + break; + } + break; + } + else { + /* a trailing '\' is an error */ + reportError("msg.trail.backslash", ""); + return false; + } + case '(': { + RENode result = null; + termStart = state.cp; + if (state.cp + 1 < state.cpend && src[state.cp] == '?' + && ((c = src[state.cp + 1]) == '=' || c == '!' || c == ':')) + { + state.cp += 2; + if (c == '=') { + result = new RENode(REOP_ASSERT); + /* ASSERT, , ... ASSERTTEST */ + state.progLength += 4; + } else if (c == '!') { + result = new RENode(REOP_ASSERT_NOT); + /* ASSERTNOT, , ... ASSERTNOTTEST */ + state.progLength += 4; + } + } else { + result = new RENode(REOP_LPAREN); + /* LPAREN, , ... RPAREN, */ + state.progLength += 6; + result.parenIndex = state.parenCount++; + } + ++state.parenNesting; + if (!parseDisjunction(state)) + return false; + if (state.cp == state.cpend || src[state.cp] != ')') { + reportError("msg.unterm.paren", "in regular expression"/*APPJET*/); + return false; + } + ++state.cp; + --state.parenNesting; + if (result != null) { + result.kid = state.result; + state.result = result; + } + break; + } + case ')': + reportError("msg.re.unmatched.right.paren", ""); + return false; + case '[': + state.result = new RENode(REOP_CLASS); + termStart = state.cp; + state.result.startIndex = termStart; + while (true) { + if (state.cp == state.cpend) { + reportError("msg.unterm.class", ""); + return false; + } + if (src[state.cp] == '\\') + state.cp++; + else { + if (src[state.cp] == ']') { + state.result.kidlen = state.cp - termStart; + break; + } + } + state.cp++; + } + state.result.index = state.classCount++; + /* + * Call calculateBitmapSize now as we want any errors it finds + * to be reported during the parse phase, not at execution. + */ + if (!calculateBitmapSize(state, state.result, src, termStart, state.cp++)) + return false; + state.progLength += 3; /* CLASS, */ + break; + + case '.': + state.result = new RENode(REOP_DOT); + state.progLength++; + break; + case '*': + case '+': + case '?': + reportError("msg.bad.quant", String.valueOf(src[state.cp - 1])); + return false; + default: + state.result = new RENode(REOP_FLAT); + state.result.chr = c; + state.result.length = 1; + state.result.flatIndex = state.cp - 1; + state.progLength += 3; + break; + } + + term = state.result; + if (state.cp == state.cpend) { + return true; + } + boolean hasQ = false; + switch (src[state.cp]) { + case '+': + state.result = new RENode(REOP_QUANT); + state.result.min = 1; + state.result.max = -1; + /* , , , ... */ + state.progLength += 8; + hasQ = true; + break; + case '*': + state.result = new RENode(REOP_QUANT); + state.result.min = 0; + state.result.max = -1; + /* , , , ... */ + state.progLength += 8; + hasQ = true; + break; + case '?': + state.result = new RENode(REOP_QUANT); + state.result.min = 0; + state.result.max = 1; + /* , , , ... */ + state.progLength += 8; + hasQ = true; + break; + case '{': /* balance '}' */ + { + int min = 0; + int max = -1; + int leftCurl = state.cp; + + /* For Perl etc. compatibility, if quntifier does not match + * \{\d+(,\d*)?\} exactly back off from it + * being a quantifier, and chew it up as a literal + * atom next time instead. + */ + + c = src[++state.cp]; + if (isDigit(c)) { + ++state.cp; + min = getDecimalValue(c, state, 0xFFFF, + "msg.overlarge.min"); + c = src[state.cp]; + if (c == ',') { + c = src[++state.cp]; + if (isDigit(c)) { + ++state.cp; + max = getDecimalValue(c, state, 0xFFFF, + "msg.overlarge.max"); + c = src[state.cp]; + if (min > max) { + reportError("msg.max.lt.min", + String.valueOf(src[state.cp])); + return false; + } + } + } else { + max = min; + } + /* balance '{' */ + if (c == '}') { + state.result = new RENode(REOP_QUANT); + state.result.min = min; + state.result.max = max; + // QUANT, , , , + // , ... + state.progLength += 12; + hasQ = true; + } + } + if (!hasQ) { + state.cp = leftCurl; + } + break; + } + } + if (!hasQ) + return true; + + ++state.cp; + state.result.kid = term; + state.result.parenIndex = parenBaseCount; + state.result.parenCount = state.parenCount - parenBaseCount; + if ((state.cp < state.cpend) && (src[state.cp] == '?')) { + ++state.cp; + state.result.greedy = false; + } + else + state.result.greedy = true; + return true; + } + + private static void resolveForwardJump(byte[] array, int from, int pc) + { + if (from > pc) throw Kit.codeBug(); + addIndex(array, from, pc - from); + } + + private static int getOffset(byte[] array, int pc) + { + return getIndex(array, pc); + } + + private static int addIndex(byte[] array, int pc, int index) + { + if (index < 0) throw Kit.codeBug(); + if (index > 0xFFFF) + throw Context.reportRuntimeError("Too complex regexp"); + array[pc] = (byte)(index >> 8); + array[pc + 1] = (byte)(index); + return pc + 2; + } + + private static int getIndex(byte[] array, int pc) + { + return ((array[pc] & 0xFF) << 8) | (array[pc + 1] & 0xFF); + } + + private static final int OFFSET_LEN = 2; + private static final int INDEX_LEN = 2; + + private static int + emitREBytecode(CompilerState state, RECompiled re, int pc, RENode t) + { + RENode nextAlt; + int nextAltFixup, nextTermFixup; + byte[] program = re.program; + + while (t != null) { + program[pc++] = t.op; + switch (t.op) { + case REOP_EMPTY: + --pc; + break; + case REOP_ALT: + nextAlt = t.kid2; + nextAltFixup = pc; /* address of next alternate */ + pc += OFFSET_LEN; + pc = emitREBytecode(state, re, pc, t.kid); + program[pc++] = REOP_JUMP; + nextTermFixup = pc; /* address of following term */ + pc += OFFSET_LEN; + resolveForwardJump(program, nextAltFixup, pc); + pc = emitREBytecode(state, re, pc, nextAlt); + + program[pc++] = REOP_JUMP; + nextAltFixup = pc; + pc += OFFSET_LEN; + + resolveForwardJump(program, nextTermFixup, pc); + resolveForwardJump(program, nextAltFixup, pc); + break; + case REOP_FLAT: + /* + * Consecutize FLAT's if possible. + */ + if (t.flatIndex != -1) { + while ((t.next != null) && (t.next.op == REOP_FLAT) + && ((t.flatIndex + t.length) + == t.next.flatIndex)) { + t.length += t.next.length; + t.next = t.next.next; + } + } + if ((t.flatIndex != -1) && (t.length > 1)) { + if ((state.flags & JSREG_FOLD) != 0) + program[pc - 1] = REOP_FLATi; + else + program[pc - 1] = REOP_FLAT; + pc = addIndex(program, pc, t.flatIndex); + pc = addIndex(program, pc, t.length); + } + else { + if (t.chr < 256) { + if ((state.flags & JSREG_FOLD) != 0) + program[pc - 1] = REOP_FLAT1i; + else + program[pc - 1] = REOP_FLAT1; + program[pc++] = (byte)(t.chr); + } + else { + if ((state.flags & JSREG_FOLD) != 0) + program[pc - 1] = REOP_UCFLAT1i; + else + program[pc - 1] = REOP_UCFLAT1; + pc = addIndex(program, pc, t.chr); + } + } + break; + case REOP_LPAREN: + pc = addIndex(program, pc, t.parenIndex); + pc = emitREBytecode(state, re, pc, t.kid); + program[pc++] = REOP_RPAREN; + pc = addIndex(program, pc, t.parenIndex); + break; + case REOP_BACKREF: + pc = addIndex(program, pc, t.parenIndex); + break; + case REOP_ASSERT: + nextTermFixup = pc; + pc += OFFSET_LEN; + pc = emitREBytecode(state, re, pc, t.kid); + program[pc++] = REOP_ASSERTTEST; + resolveForwardJump(program, nextTermFixup, pc); + break; + case REOP_ASSERT_NOT: + nextTermFixup = pc; + pc += OFFSET_LEN; + pc = emitREBytecode(state, re, pc, t.kid); + program[pc++] = REOP_ASSERTNOTTEST; + resolveForwardJump(program, nextTermFixup, pc); + break; + case REOP_QUANT: + if ((t.min == 0) && (t.max == -1)) + program[pc - 1] = (t.greedy) ? REOP_STAR : REOP_MINIMALSTAR; + else + if ((t.min == 0) && (t.max == 1)) + program[pc - 1] = (t.greedy) ? REOP_OPT : REOP_MINIMALOPT; + else + if ((t.min == 1) && (t.max == -1)) + program[pc - 1] = (t.greedy) ? REOP_PLUS : REOP_MINIMALPLUS; + else { + if (!t.greedy) program[pc - 1] = REOP_MINIMALQUANT; + pc = addIndex(program, pc, t.min); + // max can be -1 which addIndex does not accept + pc = addIndex(program, pc, t.max + 1); + } + pc = addIndex(program, pc, t.parenCount); + pc = addIndex(program, pc, t.parenIndex); + nextTermFixup = pc; + pc += OFFSET_LEN; + pc = emitREBytecode(state, re, pc, t.kid); + program[pc++] = REOP_ENDCHILD; + resolveForwardJump(program, nextTermFixup, pc); + break; + case REOP_CLASS: + pc = addIndex(program, pc, t.index); + re.classList[t.index] = new RECharSet(t.bmsize, t.startIndex, + t.kidlen); + break; + default: + break; + } + t = t.next; + } + return pc; + } + + private static void + pushProgState(REGlobalData gData, int min, int max, + REBackTrackData backTrackLastToSave, + int continuation_pc, int continuation_op) + { + gData.stateStackTop = new REProgState(gData.stateStackTop, min, max, + gData.cp, backTrackLastToSave, + continuation_pc, + continuation_op); + } + + private static REProgState + popProgState(REGlobalData gData) + { + REProgState state = gData.stateStackTop; + gData.stateStackTop = state.previous; + return state; + } + + private static void + pushBackTrackState(REGlobalData gData, byte op, int target) + { + gData.backTrackStackTop = new REBackTrackData(gData, op, target); + } + + /* + * Consecutive literal characters. + */ + private static boolean + flatNMatcher(REGlobalData gData, int matchChars, + int length, char[] chars, int end) + { + if ((gData.cp + length) > end) + return false; + for (int i = 0; i < length; i++) { + if (gData.regexp.source[matchChars + i] != chars[gData.cp + i]) { + return false; + } + } + gData.cp += length; + return true; + } + + private static boolean + flatNIMatcher(REGlobalData gData, int matchChars, + int length, char[] chars, int end) + { + if ((gData.cp + length) > end) + return false; + for (int i = 0; i < length; i++) { + if (upcase(gData.regexp.source[matchChars + i]) + != upcase(chars[gData.cp + i])) + { + return false; + } + } + gData.cp += length; + return true; + } + + /* + 1. Evaluate DecimalEscape to obtain an EscapeValue E. + 2. If E is not a character then go to step 6. + 3. Let ch be E's character. + 4. Let A be a one-element RECharSet containing the character ch. + 5. Call CharacterSetMatcher(A, false) and return its Matcher result. + 6. E must be an integer. Let n be that integer. + 7. If n=0 or n>NCapturingParens then throw a SyntaxError exception. + 8. Return an internal Matcher closure that takes two arguments, a State x + and a Continuation c, and performs the following: + 1. Let cap be x's captures internal array. + 2. Let s be cap[n]. + 3. If s is undefined, then call c(x) and return its result. + 4. Let e be x's endIndex. + 5. Let len be s's length. + 6. Let f be e+len. + 7. If f>InputLength, return failure. + 8. If there exists an integer i between 0 (inclusive) and len (exclusive) + such that Canonicalize(s[i]) is not the same character as + Canonicalize(Input [e+i]), then return failure. + 9. Let y be the State (f, cap). + 10. Call c(y) and return its result. + */ + private static boolean + backrefMatcher(REGlobalData gData, int parenIndex, + char[] chars, int end) + { + int len; + int i; + int parenContent = gData.parens_index(parenIndex); + if (parenContent == -1) + return true; + + len = gData.parens_length(parenIndex); + if ((gData.cp + len) > end) + return false; + + if ((gData.regexp.flags & JSREG_FOLD) != 0) { + for (i = 0; i < len; i++) { + if (upcase(chars[parenContent + i]) != upcase(chars[gData.cp + i])) + return false; + } + } + else { + for (i = 0; i < len; i++) { + if (chars[parenContent + i] != chars[gData.cp + i]) + return false; + } + } + gData.cp += len; + return true; + } + + + /* Add a single character to the RECharSet */ + private static void + addCharacterToCharSet(RECharSet cs, char c) + { + int byteIndex = (c / 8); + if (c > cs.length) + throw new RuntimeException(); + cs.bits[byteIndex] |= 1 << (c & 0x7); + } + + + /* Add a character range, c1 to c2 (inclusive) to the RECharSet */ + private static void + addCharacterRangeToCharSet(RECharSet cs, char c1, char c2) + { + int i; + + int byteIndex1 = (c1 / 8); + int byteIndex2 = (c2 / 8); + + if ((c2 > cs.length) || (c1 > c2)) + throw new RuntimeException(); + + c1 &= 0x7; + c2 &= 0x7; + + if (byteIndex1 == byteIndex2) { + cs.bits[byteIndex1] |= ((0xFF) >> (7 - (c2 - c1))) << c1; + } + else { + cs.bits[byteIndex1] |= 0xFF << c1; + for (i = byteIndex1 + 1; i < byteIndex2; i++) + cs.bits[i] = (byte)0xFF; + cs.bits[byteIndex2] |= (0xFF) >> (7 - c2); + } + } + + /* Compile the source of the class into a RECharSet */ + private static void + processCharSet(REGlobalData gData, RECharSet charSet) + { + synchronized (charSet) { + if (!charSet.converted) { + processCharSetImpl(gData, charSet); + charSet.converted = true; + } + } + } + + + private static void + processCharSetImpl(REGlobalData gData, RECharSet charSet) + { + int src = charSet.startIndex; + int end = src + charSet.strlength; + + char rangeStart = 0, thisCh; + int byteLength; + char c; + int n; + int nDigits; + int i; + boolean inRange = false; + + charSet.sense = true; + byteLength = (charSet.length / 8) + 1; + charSet.bits = new byte[byteLength]; + + if (src == end) + return; + + if (gData.regexp.source[src] == '^') { + charSet.sense = false; + ++src; + } + + while (src != end) { + nDigits = 2; + switch (gData.regexp.source[src]) { + case '\\': + ++src; + c = gData.regexp.source[src++]; + switch (c) { + case 'b': + thisCh = 0x8; + break; + case 'f': + thisCh = 0xC; + break; + case 'n': + thisCh = 0xA; + break; + case 'r': + thisCh = 0xD; + break; + case 't': + thisCh = 0x9; + break; + case 'v': + thisCh = 0xB; + break; + case 'c': + if (((src + 1) < end) && isWord(gData.regexp.source[src + 1])) + thisCh = (char)(gData.regexp.source[src++] & 0x1F); + else { + --src; + thisCh = '\\'; + } + break; + case 'u': + nDigits += 2; + // fall thru + case 'x': + n = 0; + for (i = 0; (i < nDigits) && (src < end); i++) { + c = gData.regexp.source[src++]; + int digit = toASCIIHexDigit(c); + if (digit < 0) { + /* back off to accepting the original '\' + * as a literal + */ + src -= (i + 1); + n = '\\'; + break; + } + n = (n << 4) | digit; + } + thisCh = (char)(n); + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + /* + * This is a non-ECMA extension - decimal escapes (in this + * case, octal!) are supposed to be an error inside class + * ranges, but supported here for backwards compatibility. + * + */ + n = (c - '0'); + c = gData.regexp.source[src]; + if ('0' <= c && c <= '7') { + src++; + n = 8 * n + (c - '0'); + c = gData.regexp.source[src]; + if ('0' <= c && c <= '7') { + src++; + i = 8 * n + (c - '0'); + if (i <= 0377) + n = i; + else + src--; + } + } + thisCh = (char)(n); + break; + + case 'd': + addCharacterRangeToCharSet(charSet, '0', '9'); + continue; /* don't need range processing */ + case 'D': + addCharacterRangeToCharSet(charSet, (char)0, (char)('0' - 1)); + addCharacterRangeToCharSet(charSet, (char)('9' + 1), + (char)(charSet.length)); + continue; + case 's': + for (i = charSet.length; i >= 0; i--) + if (isREWhiteSpace(i)) + addCharacterToCharSet(charSet, (char)(i)); + continue; + case 'S': + for (i = charSet.length; i >= 0; i--) + if (!isREWhiteSpace(i)) + addCharacterToCharSet(charSet, (char)(i)); + continue; + case 'w': + for (i = charSet.length; i >= 0; i--) + if (isWord((char)i)) + addCharacterToCharSet(charSet, (char)(i)); + continue; + case 'W': + for (i = charSet.length; i >= 0; i--) + if (!isWord((char)i)) + addCharacterToCharSet(charSet, (char)(i)); + continue; + default: + thisCh = c; + break; + + } + break; + + default: + thisCh = gData.regexp.source[src++]; + break; + + } + if (inRange) { + if ((gData.regexp.flags & JSREG_FOLD) != 0) { + addCharacterRangeToCharSet(charSet, + upcase(rangeStart), + upcase(thisCh)); + addCharacterRangeToCharSet(charSet, + downcase(rangeStart), + downcase(thisCh)); + } else { + addCharacterRangeToCharSet(charSet, rangeStart, thisCh); + } + inRange = false; + } + else { + if ((gData.regexp.flags & JSREG_FOLD) != 0) { + addCharacterToCharSet(charSet, upcase(thisCh)); + addCharacterToCharSet(charSet, downcase(thisCh)); + } else { + addCharacterToCharSet(charSet, thisCh); + } + if (src < (end - 1)) { + if (gData.regexp.source[src] == '-') { + ++src; + inRange = true; + rangeStart = thisCh; + } + } + } + } + } + + + /* + * Initialize the character set if it this is the first call. + * Test the bit - if the ^ flag was specified, non-inclusion is a success + */ + private static boolean + classMatcher(REGlobalData gData, RECharSet charSet, char ch) + { + if (!charSet.converted) { + processCharSet(gData, charSet); + } + + int byteIndex = ch / 8; + if (charSet.sense) { + if ((charSet.length == 0) || + ( (ch > charSet.length) + || ((charSet.bits[byteIndex] & (1 << (ch & 0x7))) == 0) )) + return false; + } else { + if (! ((charSet.length == 0) || + ( (ch > charSet.length) + || ((charSet.bits[byteIndex] & (1 << (ch & 0x7))) == 0) ))) + return false; + } + return true; + } + + private static boolean + executeREBytecode(REGlobalData gData, char[] chars, int end) + { + int pc = 0; + byte program[] = gData.regexp.program; + int currentContinuation_op; + int currentContinuation_pc; + boolean result = false; + + currentContinuation_pc = 0; + currentContinuation_op = REOP_END; +if (debug) { +System.out.println("Input = \"" + new String(chars) + "\", start at " + gData.cp); +} + int op = program[pc++]; + for (;;) { +if (debug) { +System.out.println("Testing at " + gData.cp + ", op = " + op); +} + switch (op) { + case REOP_EMPTY: + result = true; + break; + case REOP_BOL: + if (gData.cp != 0) { + if (gData.multiline || + ((gData.regexp.flags & JSREG_MULTILINE) != 0)) { + if (!isLineTerm(chars[gData.cp - 1])) { + result = false; + break; + } + } + else { + result = false; + break; + } + } + result = true; + break; + case REOP_EOL: + if (gData.cp != end) { + if (gData.multiline || + ((gData.regexp.flags & JSREG_MULTILINE) != 0)) { + if (!isLineTerm(chars[gData.cp])) { + result = false; + break; + } + } + else { + result = false; + break; + } + } + result = true; + break; + case REOP_WBDRY: + result = ((gData.cp == 0 || !isWord(chars[gData.cp - 1])) + ^ !((gData.cp < end) && isWord(chars[gData.cp]))); + break; + case REOP_WNONBDRY: + result = ((gData.cp == 0 || !isWord(chars[gData.cp - 1])) + ^ ((gData.cp < end) && isWord(chars[gData.cp]))); + break; + case REOP_DOT: + result = (gData.cp != end && !isLineTerm(chars[gData.cp])); + if (result) { + gData.cp++; + } + break; + case REOP_DIGIT: + result = (gData.cp != end && isDigit(chars[gData.cp])); + if (result) { + gData.cp++; + } + break; + case REOP_NONDIGIT: + result = (gData.cp != end && !isDigit(chars[gData.cp])); + if (result) { + gData.cp++; + } + break; + case REOP_SPACE: + result = (gData.cp != end && isREWhiteSpace(chars[gData.cp])); + if (result) { + gData.cp++; + } + break; + case REOP_NONSPACE: + result = (gData.cp != end && !isREWhiteSpace(chars[gData.cp])); + if (result) { + gData.cp++; + } + break; + case REOP_ALNUM: + result = (gData.cp != end && isWord(chars[gData.cp])); + if (result) { + gData.cp++; + } + break; + case REOP_NONALNUM: + result = (gData.cp != end && !isWord(chars[gData.cp])); + if (result) { + gData.cp++; + } + break; + case REOP_FLAT: + { + int offset = getIndex(program, pc); + pc += INDEX_LEN; + int length = getIndex(program, pc); + pc += INDEX_LEN; + result = flatNMatcher(gData, offset, length, chars, end); + } + break; + case REOP_FLATi: + { + int offset = getIndex(program, pc); + pc += INDEX_LEN; + int length = getIndex(program, pc); + pc += INDEX_LEN; + result = flatNIMatcher(gData, offset, length, chars, end); + } + break; + case REOP_FLAT1: + { + char matchCh = (char)(program[pc++] & 0xFF); + result = (gData.cp != end && chars[gData.cp] == matchCh); + if (result) { + gData.cp++; + } + } + break; + case REOP_FLAT1i: + { + char matchCh = (char)(program[pc++] & 0xFF); + result = (gData.cp != end + && upcase(chars[gData.cp]) == upcase(matchCh)); + if (result) { + gData.cp++; + } + } + break; + case REOP_UCFLAT1: + { + char matchCh = (char)getIndex(program, pc); + pc += INDEX_LEN; + result = (gData.cp != end && chars[gData.cp] == matchCh); + if (result) { + gData.cp++; + } + } + break; + case REOP_UCFLAT1i: + { + char matchCh = (char)getIndex(program, pc); + pc += INDEX_LEN; + result = (gData.cp != end + && upcase(chars[gData.cp]) == upcase(matchCh)); + if (result) { + gData.cp++; + } + } + break; + case REOP_ALT: + { + int nextpc; + byte nextop; + pushProgState(gData, 0, 0, null, + currentContinuation_pc, + currentContinuation_op); + nextpc = pc + getOffset(program, pc); + nextop = program[nextpc++]; + pushBackTrackState(gData, nextop, nextpc); + pc += INDEX_LEN; + op = program[pc++]; + } + continue; + + case REOP_JUMP: + { + int offset; + REProgState state = popProgState(gData); + currentContinuation_pc = state.continuation_pc; + currentContinuation_op = state.continuation_op; + offset = getOffset(program, pc); + pc += offset; + op = program[pc++]; + } + continue; + + + case REOP_LPAREN: + { + int parenIndex = getIndex(program, pc); + pc += INDEX_LEN; + gData.set_parens(parenIndex, gData.cp, 0); + op = program[pc++]; + } + continue; + case REOP_RPAREN: + { + int cap_index; + int parenIndex = getIndex(program, pc); + pc += INDEX_LEN; + cap_index = gData.parens_index(parenIndex); + gData.set_parens(parenIndex, cap_index, + gData.cp - cap_index); + if (parenIndex > gData.lastParen) + gData.lastParen = parenIndex; + op = program[pc++]; + } + continue; + case REOP_BACKREF: + { + int parenIndex = getIndex(program, pc); + pc += INDEX_LEN; + result = backrefMatcher(gData, parenIndex, chars, end); + } + break; + + case REOP_CLASS: + { + int index = getIndex(program, pc); + pc += INDEX_LEN; + if (gData.cp != end) { + if (classMatcher(gData, gData.regexp.classList[index], + chars[gData.cp])) + { + gData.cp++; + result = true; + break; + } + } + result = false; + } + break; + + case REOP_ASSERT: + case REOP_ASSERT_NOT: + { + byte testOp; + pushProgState(gData, 0, 0, gData.backTrackStackTop, + currentContinuation_pc, + currentContinuation_op); + if (op == REOP_ASSERT) { + testOp = REOP_ASSERTTEST; + } else { + testOp = REOP_ASSERTNOTTEST; + } + pushBackTrackState(gData, testOp, + pc + getOffset(program, pc)); + pc += INDEX_LEN; + op = program[pc++]; + } + continue; + + case REOP_ASSERTTEST: + case REOP_ASSERTNOTTEST: + { + REProgState state = popProgState(gData); + gData.cp = state.index; + gData.backTrackStackTop = state.backTrack; + currentContinuation_pc = state.continuation_pc; + currentContinuation_op = state.continuation_op; + if (result) { + if (op == REOP_ASSERTTEST) { + result = true; + } else { + result = false; + } + } else { + if (op == REOP_ASSERTTEST) { + // Do nothing + } else { + result = true; + } + } + } + break; + + case REOP_STAR: + case REOP_PLUS: + case REOP_OPT: + case REOP_QUANT: + case REOP_MINIMALSTAR: + case REOP_MINIMALPLUS: + case REOP_MINIMALOPT: + case REOP_MINIMALQUANT: + { + int min, max; + boolean greedy = false; + switch (op) { + case REOP_STAR: + greedy = true; + // fallthrough + case REOP_MINIMALSTAR: + min = 0; + max = -1; + break; + case REOP_PLUS: + greedy = true; + // fallthrough + case REOP_MINIMALPLUS: + min = 1; + max = -1; + break; + case REOP_OPT: + greedy = true; + // fallthrough + case REOP_MINIMALOPT: + min = 0; + max = 1; + break; + case REOP_QUANT: + greedy = true; + // fallthrough + case REOP_MINIMALQUANT: + min = getOffset(program, pc); + pc += INDEX_LEN; + // See comments in emitREBytecode for " - 1" reason + max = getOffset(program, pc) - 1; + pc += INDEX_LEN; + break; + default: + throw Kit.codeBug(); + } + pushProgState(gData, min, max, null, + currentContinuation_pc, + currentContinuation_op); + if (greedy) { + currentContinuation_op = REOP_REPEAT; + currentContinuation_pc = pc; + pushBackTrackState(gData, REOP_REPEAT, pc); + /* Step over , & */ + pc += 3 * INDEX_LEN; + op = program[pc++]; + } else { + if (min != 0) { + currentContinuation_op = REOP_MINIMALREPEAT; + currentContinuation_pc = pc; + /* & */ + pc += 3 * INDEX_LEN; + op = program[pc++]; + } else { + pushBackTrackState(gData, REOP_MINIMALREPEAT, pc); + popProgState(gData); + pc += 2 * INDEX_LEN; // & + pc = pc + getOffset(program, pc); + op = program[pc++]; + } + } + } + continue; + + case REOP_ENDCHILD: + // Use the current continuation. + pc = currentContinuation_pc; + op = currentContinuation_op; + continue; + + case REOP_REPEAT: + { + REProgState state = popProgState(gData); + if (!result) { + // + // There's been a failure, see if we have enough + // children. + // + if (state.min == 0) + result = true; + currentContinuation_pc = state.continuation_pc; + currentContinuation_op = state.continuation_op; + pc += 2 * INDEX_LEN; /* & */ + pc = pc + getOffset(program, pc); + break; + } + else { + if (state.min == 0 && gData.cp == state.index) { + // matched an empty string, that'll get us nowhere + result = false; + currentContinuation_pc = state.continuation_pc; + currentContinuation_op = state.continuation_op; + pc += 2 * INDEX_LEN; + pc = pc + getOffset(program, pc); + break; + } + int new_min = state.min, new_max = state.max; + if (new_min != 0) new_min--; + if (new_max != -1) new_max--; + if (new_max == 0) { + result = true; + currentContinuation_pc = state.continuation_pc; + currentContinuation_op = state.continuation_op; + pc += 2 * INDEX_LEN; + pc = pc + getOffset(program, pc); + break; + } + pushProgState(gData, new_min, new_max, null, + state.continuation_pc, + state.continuation_op); + currentContinuation_op = REOP_REPEAT; + currentContinuation_pc = pc; + pushBackTrackState(gData, REOP_REPEAT, pc); + int parenCount = getIndex(program, pc); + pc += INDEX_LEN; + int parenIndex = getIndex(program, pc); + pc += 2 * INDEX_LEN; + op = program[pc++]; + for (int k = 0; k < parenCount; k++) { + gData.set_parens(parenIndex + k, -1, 0); + } + } + } + continue; + + case REOP_MINIMALREPEAT: + { + REProgState state = popProgState(gData); + if (!result) { + // + // Non-greedy failure - try to consume another child. + // + if (state.max == -1 || state.max > 0) { + pushProgState(gData, state.min, state.max, null, + state.continuation_pc, + state.continuation_op); + currentContinuation_op = REOP_MINIMALREPEAT; + currentContinuation_pc = pc; + int parenCount = getIndex(program, pc); + pc += INDEX_LEN; + int parenIndex = getIndex(program, pc); + pc += 2 * INDEX_LEN; + for (int k = 0; k < parenCount; k++) { + gData.set_parens(parenIndex + k, -1, 0); + } + op = program[pc++]; + continue; + } else { + // Don't need to adjust pc since we're going to pop. + currentContinuation_pc = state.continuation_pc; + currentContinuation_op = state.continuation_op; + break; + } + } else { + if (state.min == 0 && gData.cp == state.index) { + // Matched an empty string, that'll get us nowhere. + result = false; + currentContinuation_pc = state.continuation_pc; + currentContinuation_op = state.continuation_op; + break; + } + int new_min = state.min, new_max = state.max; + if (new_min != 0) new_min--; + if (new_max != -1) new_max--; + pushProgState(gData, new_min, new_max, null, + state.continuation_pc, + state.continuation_op); + if (new_min != 0) { + currentContinuation_op = REOP_MINIMALREPEAT; + currentContinuation_pc = pc; + int parenCount = getIndex(program, pc); + pc += INDEX_LEN; + int parenIndex = getIndex(program, pc); + pc += 2 * INDEX_LEN; + for (int k = 0; k < parenCount; k++) { + gData.set_parens(parenIndex + k, -1, 0); + } + op = program[pc++]; + } else { + currentContinuation_pc = state.continuation_pc; + currentContinuation_op = state.continuation_op; + pushBackTrackState(gData, REOP_MINIMALREPEAT, pc); + popProgState(gData); + pc += 2 * INDEX_LEN; + pc = pc + getOffset(program, pc); + op = program[pc++]; + } + continue; + } + } + + case REOP_END: + return true; + + default: + throw Kit.codeBug(); + + } + /* + * If the match failed and there's a backtrack option, take it. + * Otherwise this is a complete and utter failure. + */ + if (!result) { + REBackTrackData backTrackData = gData.backTrackStackTop; + if (backTrackData != null) { + gData.backTrackStackTop = backTrackData.previous; + + gData.lastParen = backTrackData.lastParen; + + // XXX: If backTrackData will no longer be used, then + // there is no need to clone backTrackData.parens + if (backTrackData.parens != null) { + gData.parens = backTrackData.parens.clone(); + } + + gData.cp = backTrackData.cp; + + gData.stateStackTop = backTrackData.stateStackTop; + + currentContinuation_op + = gData.stateStackTop.continuation_op; + currentContinuation_pc + = gData.stateStackTop.continuation_pc; + pc = backTrackData.continuation_pc; + op = backTrackData.continuation_op; + continue; + } + else + return false; + } + + op = program[pc++]; + } + + } + + private static boolean + matchRegExp(REGlobalData gData, RECompiled re, + char[] chars, int start, int end, boolean multiline) + { + if (re.parenCount != 0) { + gData.parens = new long[re.parenCount]; + } else { + gData.parens = null; + } + + gData.backTrackStackTop = null; + + gData.stateStackTop = null; + + gData.multiline = multiline; + gData.regexp = re; + gData.lastParen = 0; + + int anchorCh = gData.regexp.anchorCh; + // + // have to include the position beyond the last character + // in order to detect end-of-input/line condition + // + for (int i = start; i <= end; ++i) { + // + // If the first node is a literal match, step the index into + // the string until that match is made, or fail if it can't be + // found at all. + // + if (anchorCh >= 0) { + for (;;) { + if (i == end) { + return false; + } + char matchCh = chars[i]; + if (matchCh == anchorCh || + ((gData.regexp.flags & JSREG_FOLD) != 0 + && upcase(matchCh) == upcase((char)anchorCh))) + { + break; + } + ++i; + } + } + gData.cp = i; + for (int j = 0; j < re.parenCount; j++) { + gData.set_parens(j, -1, 0); + } + boolean result = executeREBytecode(gData, chars, end); + + gData.backTrackStackTop = null; + gData.stateStackTop = null; + if (result) { + gData.skipped = i - start; + return true; + } + } + return false; + } + + /* + * indexp is assumed to be an array of length 1 + */ + Object executeRegExp(Context cx, Scriptable scopeObj, RegExpImpl res, + String str, int indexp[], int matchType) + { + REGlobalData gData = new REGlobalData(); + + int start = indexp[0]; + char[] charArray = str.toCharArray(); + int end = charArray.length; + if (start > end) + start = end; + // + // Call the recursive matcher to do the real work. + // + boolean matches = matchRegExp(gData, re, charArray, start, end, + res.multiline); + if (!matches) { + if (matchType != PREFIX) return null; + return Undefined.instance; + } + int index = gData.cp; + int i = index; + indexp[0] = i; + int matchlen = i - (start + gData.skipped); + int ep = index; + index -= matchlen; + Object result; + Scriptable obj; + + if (matchType == TEST) { + /* + * Testing for a match and updating cx.regExpImpl: don't allocate + * an array object, do return true. + */ + result = Boolean.TRUE; + obj = null; + } + else { + /* + * The array returned on match has element 0 bound to the matched + * string, elements 1 through re.parenCount bound to the paren + * matches, an index property telling the length of the left context, + * and an input property referring to the input string. + */ + Scriptable scope = getTopLevelScope(scopeObj); + result = ScriptRuntime.newObject(cx, scope, "Array", null); + obj = (Scriptable) result; + + String matchstr = new String(charArray, index, matchlen); + obj.put(0, obj, matchstr); + } + + if (re.parenCount == 0) { + res.parens = null; + res.lastParen = SubString.emptySubString; + } else { + SubString parsub = null; + int num; + res.parens = new SubString[re.parenCount]; + for (num = 0; num < re.parenCount; num++) { + int cap_index = gData.parens_index(num); + String parstr; + if (cap_index != -1) { + int cap_length = gData.parens_length(num); + parsub = new SubString(charArray, cap_index, cap_length); + res.parens[num] = parsub; + if (matchType == TEST) continue; + parstr = parsub.toString(); + obj.put(num+1, obj, parstr); + } + else { + if (matchType != TEST) + obj.put(num+1, obj, Undefined.instance); + } + } + res.lastParen = parsub; + } + + if (! (matchType == TEST)) { + /* + * Define the index and input properties last for better for/in loop + * order (so they come after the elements). + */ + obj.put("index", obj, new Integer(start + gData.skipped)); + obj.put("input", obj, str); + } + + if (res.lastMatch == null) { + res.lastMatch = new SubString(); + res.leftContext = new SubString(); + res.rightContext = new SubString(); + } + res.lastMatch.charArray = charArray; + res.lastMatch.index = index; + res.lastMatch.length = matchlen; + + res.leftContext.charArray = charArray; + if (cx.getLanguageVersion() == Context.VERSION_1_2) { + /* + * JS1.2 emulated Perl4.0.1.8 (patch level 36) for global regexps used + * in scalar contexts, and unintentionally for the string.match "list" + * psuedo-context. On "hi there bye", the following would result: + * + * Language while(/ /g){print("$`");} s/ /$`/g + * perl4.036 "hi", "there" "hihitherehi therebye" + * perl5 "hi", "hi there" "hihitherehi therebye" + * js1.2 "hi", "there" "hihitheretherebye" + * + * Insofar as JS1.2 always defined $` as "left context from the last + * match" for global regexps, it was more consistent than perl4. + */ + res.leftContext.index = start; + res.leftContext.length = gData.skipped; + } else { + /* + * For JS1.3 and ECMAv2, emulate Perl5 exactly: + * + * js1.3 "hi", "hi there" "hihitherehi therebye" + */ + res.leftContext.index = 0; + res.leftContext.length = start + gData.skipped; + } + + res.rightContext.charArray = charArray; + res.rightContext.index = ep; + res.rightContext.length = end - ep; + + return result; + } + + int getFlags() + { + return re.flags; + } + + private static void reportWarning(Context cx, String messageId, String arg) + { + if (cx.hasFeature(Context.FEATURE_STRICT_MODE)) { + String msg = ScriptRuntime.getMessage1(messageId, arg); + Context.reportWarning(msg); + } + } + + private static void reportError(String messageId, String arg) + { + String msg = ScriptRuntime.getMessage1(messageId, arg); + throw ScriptRuntime.constructError("SyntaxError", msg); + } + +// #string_id_map# + + private static final int + Id_lastIndex = 1, + Id_source = 2, + Id_global = 3, + Id_ignoreCase = 4, + Id_multiline = 5, + + MAX_INSTANCE_ID = 5; + + protected int getMaxInstanceId() + { + return MAX_INSTANCE_ID; + } + + protected int findInstanceIdInfo(String s) + { + int id; +// #generated# Last update: 2007-05-09 08:16:24 EDT + L0: { id = 0; String X = null; int c; + int s_length = s.length(); + if (s_length==6) { + c=s.charAt(0); + if (c=='g') { X="global";id=Id_global; } + else if (c=='s') { X="source";id=Id_source; } + } + else if (s_length==9) { + c=s.charAt(0); + if (c=='l') { X="lastIndex";id=Id_lastIndex; } + else if (c=='m') { X="multiline";id=Id_multiline; } + } + else if (s_length==10) { X="ignoreCase";id=Id_ignoreCase; } + if (X!=null && X!=s && !X.equals(s)) id = 0; + break L0; + } +// #/generated# +// #/string_id_map# + + if (id == 0) return super.findInstanceIdInfo(s); + + int attr; + switch (id) { + case Id_lastIndex: + attr = PERMANENT | DONTENUM; + break; + case Id_source: + case Id_global: + case Id_ignoreCase: + case Id_multiline: + attr = PERMANENT | READONLY | DONTENUM; + break; + default: + throw new IllegalStateException(); + } + return instanceIdInfo(attr, id); + } + + protected String getInstanceIdName(int id) + { + switch (id) { + case Id_lastIndex: return "lastIndex"; + case Id_source: return "source"; + case Id_global: return "global"; + case Id_ignoreCase: return "ignoreCase"; + case Id_multiline: return "multiline"; + } + return super.getInstanceIdName(id); + } + + protected Object getInstanceIdValue(int id) + { + switch (id) { + case Id_lastIndex: + return ScriptRuntime.wrapNumber(lastIndex); + case Id_source: + return new String(re.source); + case Id_global: + return ScriptRuntime.wrapBoolean((re.flags & JSREG_GLOB) != 0); + case Id_ignoreCase: + return ScriptRuntime.wrapBoolean((re.flags & JSREG_FOLD) != 0); + case Id_multiline: + return ScriptRuntime.wrapBoolean((re.flags & JSREG_MULTILINE) != 0); + } + return super.getInstanceIdValue(id); + } + + protected void setInstanceIdValue(int id, Object value) + { + if (id == Id_lastIndex) { + lastIndex = ScriptRuntime.toNumber(value); + return; + } + super.setInstanceIdValue(id, value); + } + + protected void initPrototypeId(int id) + { + String s; + int arity; + switch (id) { + case Id_compile: arity=1; s="compile"; break; + case Id_toString: arity=0; s="toString"; break; + case Id_toSource: arity=0; s="toSource"; break; + case Id_exec: arity=1; s="exec"; break; + case Id_test: arity=1; s="test"; break; + case Id_prefix: arity=1; s="prefix"; break; + default: throw new IllegalArgumentException(String.valueOf(id)); + } + initPrototypeMethod(REGEXP_TAG, id, s, arity); + } + + public Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope, + Scriptable thisObj, Object[] args) + { + if (!f.hasTag(REGEXP_TAG)) { + return super.execIdCall(f, cx, scope, thisObj, args); + } + int id = f.methodId(); + switch (id) { + case Id_compile: + return realThis(thisObj, f).compile(cx, scope, args); + + case Id_toString: + case Id_toSource: + return realThis(thisObj, f).toString(); + + case Id_exec: + return realThis(thisObj, f).execSub(cx, scope, args, MATCH); + + case Id_test: { + Object x = realThis(thisObj, f).execSub(cx, scope, args, TEST); + return Boolean.TRUE.equals(x) ? Boolean.TRUE : Boolean.FALSE; + } + + case Id_prefix: + return realThis(thisObj, f).execSub(cx, scope, args, PREFIX); + } + throw new IllegalArgumentException(String.valueOf(id)); + } + + private static NativeRegExp realThis(Scriptable thisObj, IdFunctionObject f) + { + if (!(thisObj instanceof NativeRegExp)) + throw incompatibleCallError(f); + return (NativeRegExp)thisObj; + } + +// #string_id_map# + protected int findPrototypeId(String s) + { + int id; +// #generated# Last update: 2007-05-09 08:16:24 EDT + L0: { id = 0; String X = null; int c; + L: switch (s.length()) { + case 4: c=s.charAt(0); + if (c=='e') { X="exec";id=Id_exec; } + else if (c=='t') { X="test";id=Id_test; } + break L; + case 6: X="prefix";id=Id_prefix; break L; + case 7: X="compile";id=Id_compile; break L; + case 8: c=s.charAt(3); + if (c=='o') { X="toSource";id=Id_toSource; } + else if (c=='t') { X="toString";id=Id_toString; } + break L; + } + if (X!=null && X!=s && !X.equals(s)) id = 0; + break L0; + } +// #/generated# + return id; + } + + private static final int + Id_compile = 1, + Id_toString = 2, + Id_toSource = 3, + Id_exec = 4, + Id_test = 5, + Id_prefix = 6, + + MAX_PROTOTYPE_ID = 6; + +// #/string_id_map# + + private RECompiled re; + double lastIndex; /* index after last match, for //g iterator */ + +} // class NativeRegExp + +class RECompiled implements Serializable +{ + static final long serialVersionUID = -6144956577595844213L; + + char []source; /* locked source string, sans // */ + int parenCount; /* number of parenthesized submatches */ + int flags; /* flags */ + byte[] program; /* regular expression bytecode */ + int classCount; /* count [...] bitmaps */ + RECharSet[] classList; /* list of [...] bitmaps */ + int anchorCh = -1; /* if >= 0, then re starts with this literal char */ +} + +class RENode { + + RENode(byte op) + { + this.op = op; + } + + byte op; /* r.e. op bytecode */ + RENode next; /* next in concatenation order */ + RENode kid; /* first operand */ + + RENode kid2; /* second operand */ + int num; /* could be a number */ + int parenIndex; /* or a parenthesis index */ + + /* or a range */ + int min; + int max; + int parenCount; + boolean greedy; + + /* or a character class */ + int startIndex; + int kidlen; /* length of string at kid, in chars */ + int bmsize; /* bitmap size, based on max char code */ + int index; /* index into class list */ + + /* or a literal sequence */ + char chr; /* of one character */ + int length; /* or many (via the index) */ + int flatIndex; /* which is -1 if not sourced */ + +} + +class CompilerState { + + CompilerState(Context cx, char[] source, int length, int flags) + { + this.cx = cx; + this.cpbegin = source; + this.cp = 0; + this.cpend = length; + this.flags = flags; + this.parenCount = 0; + this.classCount = 0; + this.progLength = 0; + } + + Context cx; + char cpbegin[]; + int cpend; + int cp; + int flags; + int parenCount; + int parenNesting; + int classCount; /* number of [] encountered */ + int progLength; /* estimated bytecode length */ + RENode result; +} + +class REProgState +{ + REProgState(REProgState previous, int min, int max, int index, + REBackTrackData backTrack, + int continuation_pc, int continuation_op) + { + this.previous = previous; + this.min = min; + this.max = max; + this.index = index; + this.continuation_op = continuation_op; + this.continuation_pc = continuation_pc; + this.backTrack = backTrack; + } + + REProgState previous; // previous state in stack + + int min; /* current quantifier min */ + int max; /* current quantifier max */ + int index; /* progress in text */ + int continuation_op; + int continuation_pc; + REBackTrackData backTrack; // used by ASSERT_ to recover state +} + +class REBackTrackData { + + REBackTrackData(REGlobalData gData, int op, int pc) + { + previous = gData.backTrackStackTop; + continuation_op = op; + continuation_pc = pc; + lastParen = gData.lastParen; + if (gData.parens != null) { + parens = gData.parens.clone(); + } + cp = gData.cp; + stateStackTop = gData.stateStackTop; + } + + REBackTrackData previous; + + int continuation_op; /* where to backtrack to */ + int continuation_pc; + int lastParen; + long[] parens; /* parenthesis captures */ + int cp; /* char buffer index */ + REProgState stateStackTop; /* state of op that backtracked */ +} + +class REGlobalData { + boolean multiline; + RECompiled regexp; /* the RE in execution */ + int lastParen; /* highest paren set so far */ + int skipped; /* chars skipped anchoring this r.e. */ + + int cp; /* char buffer index */ + long[] parens; /* parens captures */ + + REProgState stateStackTop; /* stack of state of current ancestors */ + + REBackTrackData backTrackStackTop; /* last matched-so-far position */ + + + /** + * Get start of parenthesis capture contents, -1 for empty. + */ + int parens_index(int i) + { + return (int)(parens[i]); + } + + /** + * Get length of parenthesis capture contents. + */ + int parens_length(int i) + { + return (int)(parens[i] >>> 32); + } + + void set_parens(int i, int index, int length) + { + parens[i] = (index & 0xffffffffL) | ((long)length << 32); + } + +} + +/* + * This struct holds a bitmap representation of a class from a regexp. + * There's a list of these referenced by the classList field in the NativeRegExp + * struct below. The initial state has startIndex set to the offset in the + * original regexp source of the beginning of the class contents. The first + * use of the class converts the source representation into a bitmap. + * + */ +final class RECharSet implements Serializable +{ + static final long serialVersionUID = 7931787979395898394L; + + RECharSet(int length, int startIndex, int strlength) + { + this.length = length; + this.startIndex = startIndex; + this.strlength = strlength; + } + + int length; + int startIndex; + int strlength; + + volatile transient boolean converted; + volatile transient boolean sense; + volatile transient byte[] bits; +} + + -- cgit v1.2.3-1-g7c22 From 98e2821b38a775737e42a2479a6bc65107210859 Mon Sep 17 00:00:00 2001 From: Elliot Kroo Date: Thu, 11 Mar 2010 15:21:30 -0800 Subject: reorganizing the first level of folders (trunk/branch folders are not the git way :) --- .../mozilla/javascript/regexp/NativeRegExp.java | 2782 -------------------- 1 file changed, 2782 deletions(-) delete mode 100644 trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java (limited to 'trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java') diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java b/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java deleted file mode 100644 index a893841..0000000 --- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java +++ /dev/null @@ -1,2782 +0,0 @@ -/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Rhino code, released - * May 6, 1998. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1997-1999 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Norris Boyd - * Igor Bukanov - * Brendan Eich - * Matthias Radestock - * - * Alternatively, the contents of this file may be used under the terms of - * the GNU General Public License Version 2 or later (the "GPL"), in which - * case the provisions of the GPL are applicable instead of those above. If - * you wish to allow use of your version of this file only under the terms of - * the GPL and not to allow others to use your version of this file under the - * MPL, indicate your decision by deleting the provisions above and replacing - * them with the notice and other provisions required by the GPL. If you do - * not delete the provisions above, a recipient may use your version of this - * file under either the MPL or the GPL. - * - * ***** END LICENSE BLOCK ***** */ - -package org.mozilla.javascript.regexp; - -import java.io.Serializable; - -import org.mozilla.javascript.Context; -import org.mozilla.javascript.Function; -import org.mozilla.javascript.IdFunctionObject; -import org.mozilla.javascript.IdScriptableObject; -import org.mozilla.javascript.Kit; -import org.mozilla.javascript.ScriptRuntime; -import org.mozilla.javascript.Scriptable; -import org.mozilla.javascript.ScriptableObject; -import org.mozilla.javascript.Undefined; - -/** - * This class implements the RegExp native object. - * - * Revision History: - * Implementation in C by Brendan Eich - * Initial port to Java by Norris Boyd from jsregexp.c version 1.36 - * Merged up to version 1.38, which included Unicode support. - * Merged bug fixes in version 1.39. - * Merged JSFUN13_BRANCH changes up to 1.32.2.13 - * - * @author Brendan Eich - * @author Norris Boyd - */ - - - -public class NativeRegExp extends IdScriptableObject implements Function -{ - static final long serialVersionUID = 4965263491464903264L; - - private static final Object REGEXP_TAG = new Object(); - - public static final int JSREG_GLOB = 0x1; // 'g' flag: global - public static final int JSREG_FOLD = 0x2; // 'i' flag: fold - public static final int JSREG_MULTILINE = 0x4; // 'm' flag: multiline - - //type of match to perform - public static final int TEST = 0; - public static final int MATCH = 1; - public static final int PREFIX = 2; - - private static final boolean debug = false; - - private static final byte REOP_EMPTY = 0; /* match rest of input against rest of r.e. */ - private static final byte REOP_ALT = 1; /* alternative subexpressions in kid and next */ - private static final byte REOP_BOL = 2; /* beginning of input (or line if multiline) */ - private static final byte REOP_EOL = 3; /* end of input (or line if multiline) */ - private static final byte REOP_WBDRY = 4; /* match "" at word boundary */ - private static final byte REOP_WNONBDRY = 5; /* match "" at word non-boundary */ - private static final byte REOP_QUANT = 6; /* quantified atom: atom{1,2} */ - private static final byte REOP_STAR = 7; /* zero or more occurrences of kid */ - private static final byte REOP_PLUS = 8; /* one or more occurrences of kid */ - private static final byte REOP_OPT = 9; /* optional subexpression in kid */ - private static final byte REOP_LPAREN = 10; /* left paren bytecode: kid is u.num'th sub-regexp */ - private static final byte REOP_RPAREN = 11; /* right paren bytecode */ - private static final byte REOP_DOT = 12; /* stands for any character */ -// private static final byte REOP_CCLASS = 13; /* character class: [a-f] */ - private static final byte REOP_DIGIT = 14; /* match a digit char: [0-9] */ - private static final byte REOP_NONDIGIT = 15; /* match a non-digit char: [^0-9] */ - private static final byte REOP_ALNUM = 16; /* match an alphanumeric char: [0-9a-z_A-Z] */ - private static final byte REOP_NONALNUM = 17; /* match a non-alphanumeric char: [^0-9a-z_A-Z] */ - private static final byte REOP_SPACE = 18; /* match a whitespace char */ - private static final byte REOP_NONSPACE = 19; /* match a non-whitespace char */ - private static final byte REOP_BACKREF = 20; /* back-reference (e.g., \1) to a parenthetical */ - private static final byte REOP_FLAT = 21; /* match a flat string */ - private static final byte REOP_FLAT1 = 22; /* match a single char */ - private static final byte REOP_JUMP = 23; /* for deoptimized closure loops */ -// private static final byte REOP_DOTSTAR = 24; /* optimize .* to use a single opcode */ -// private static final byte REOP_ANCHOR = 25; /* like .* but skips left context to unanchored r.e. */ -// private static final byte REOP_EOLONLY = 26; /* $ not preceded by any pattern */ -// private static final byte REOP_UCFLAT = 27; /* flat Unicode string; len immediate counts chars */ - private static final byte REOP_UCFLAT1 = 28; /* single Unicode char */ -// private static final byte REOP_UCCLASS = 29; /* Unicode character class, vector of chars to match */ -// private static final byte REOP_NUCCLASS = 30; /* negated Unicode character class */ -// private static final byte REOP_BACKREFi = 31; /* case-independent REOP_BACKREF */ - private static final byte REOP_FLATi = 32; /* case-independent REOP_FLAT */ - private static final byte REOP_FLAT1i = 33; /* case-independent REOP_FLAT1 */ -// private static final byte REOP_UCFLATi = 34; /* case-independent REOP_UCFLAT */ - private static final byte REOP_UCFLAT1i = 35; /* case-independent REOP_UCFLAT1 */ -// private static final byte REOP_ANCHOR1 = 36; /* first-char discriminating REOP_ANCHOR */ -// private static final byte REOP_NCCLASS = 37; /* negated 8-bit character class */ -// private static final byte REOP_DOTSTARMIN = 38; /* ungreedy version of REOP_DOTSTAR */ -// private static final byte REOP_LPARENNON = 39; /* non-capturing version of REOP_LPAREN */ -// private static final byte REOP_RPARENNON = 40; /* non-capturing version of REOP_RPAREN */ - private static final byte REOP_ASSERT = 41; /* zero width positive lookahead assertion */ - private static final byte REOP_ASSERT_NOT = 42; /* zero width negative lookahead assertion */ - private static final byte REOP_ASSERTTEST = 43; /* sentinel at end of assertion child */ - private static final byte REOP_ASSERTNOTTEST = 44; /* sentinel at end of !assertion child */ - private static final byte REOP_MINIMALSTAR = 45; /* non-greedy version of * */ - private static final byte REOP_MINIMALPLUS = 46; /* non-greedy version of + */ - private static final byte REOP_MINIMALOPT = 47; /* non-greedy version of ? */ - private static final byte REOP_MINIMALQUANT = 48; /* non-greedy version of {} */ - private static final byte REOP_ENDCHILD = 49; /* sentinel at end of quantifier child */ - private static final byte REOP_CLASS = 50; /* character class with index */ - private static final byte REOP_REPEAT = 51; /* directs execution of greedy quantifier */ - private static final byte REOP_MINIMALREPEAT = 52; /* directs execution of non-greedy quantifier */ - private static final byte REOP_END = 53; - - - - public static void init(Context cx, Scriptable scope, boolean sealed) - { - - NativeRegExp proto = new NativeRegExp(); - proto.re = (RECompiled)compileRE(cx, "", null, false); - proto.activatePrototypeMap(MAX_PROTOTYPE_ID); - proto.setParentScope(scope); - proto.setPrototype(getObjectPrototype(scope)); - - NativeRegExpCtor ctor = new NativeRegExpCtor(); - // Bug #324006: ECMA-262 15.10.6.1 says "The initial value of - // RegExp.prototype.constructor is the builtin RegExp constructor." - proto.put("constructor", proto, ctor); - - ScriptRuntime.setFunctionProtoAndParent(ctor, scope); - - ctor.setImmunePrototypeProperty(proto); - - if (sealed) { - proto.sealObject(); - ctor.sealObject(); - } - - defineProperty(scope, "RegExp", ctor, ScriptableObject.DONTENUM); - } - - NativeRegExp(Scriptable scope, Object regexpCompiled) - { - this.re = (RECompiled)regexpCompiled; - this.lastIndex = 0; - ScriptRuntime.setObjectProtoAndParent(this, scope); - } - - public String getClassName() - { - return "RegExp"; - } - - public Object call(Context cx, Scriptable scope, Scriptable thisObj, - Object[] args) - { - return execSub(cx, scope, args, MATCH); - } - - public Scriptable construct(Context cx, Scriptable scope, Object[] args) - { - return (Scriptable)execSub(cx, scope, args, MATCH); - } - - Scriptable compile(Context cx, Scriptable scope, Object[] args) - { - if (args.length > 0 && args[0] instanceof NativeRegExp) { - if (args.length > 1 && args[1] != Undefined.instance) { - // report error - throw ScriptRuntime.typeError0("msg.bad.regexp.compile"); - } - NativeRegExp thatObj = (NativeRegExp) args[0]; - this.re = thatObj.re; - this.lastIndex = thatObj.lastIndex; - return this; - } - String s = args.length == 0 ? "" : ScriptRuntime.toString(args[0]); - String global = args.length > 1 && args[1] != Undefined.instance - ? ScriptRuntime.toString(args[1]) - : null; - this.re = (RECompiled)compileRE(cx, s, global, false); - this.lastIndex = 0; - return this; - } - - public String toString() - { - StringBuffer buf = new StringBuffer(); - buf.append('/'); - if (re.source.length != 0) { - buf.append(re.source); - } else { - // See bugzilla 226045 - buf.append("(?:)"); - } - buf.append('/'); - if ((re.flags & JSREG_GLOB) != 0) - buf.append('g'); - if ((re.flags & JSREG_FOLD) != 0) - buf.append('i'); - if ((re.flags & JSREG_MULTILINE) != 0) - buf.append('m'); - return buf.toString(); - } - - NativeRegExp() { } - - private static RegExpImpl getImpl(Context cx) - { - return (RegExpImpl) ScriptRuntime.getRegExpProxy(cx); - } - - private Object execSub(Context cx, Scriptable scopeObj, - Object[] args, int matchType) - { - RegExpImpl reImpl = getImpl(cx); - String str; - if (args.length == 0) { - str = reImpl.input; - if (str == null) { - reportError("msg.no.re.input.for", toString()); - } - } else { - str = ScriptRuntime.toString(args[0]); - } - double d = ((re.flags & JSREG_GLOB) != 0) ? lastIndex : 0; - - Object rval; - if (d < 0 || str.length() < d) { - lastIndex = 0; - rval = null; - } - else { - int indexp[] = { (int)d }; - rval = executeRegExp(cx, scopeObj, reImpl, str, indexp, matchType); - if ((re.flags & JSREG_GLOB) != 0) { - lastIndex = (rval == null || rval == Undefined.instance) - ? 0 : indexp[0]; - } - } - return rval; - } - - static Object compileRE(Context cx, String str, String global, boolean flat) - { - RECompiled regexp = new RECompiled(); - regexp.source = str.toCharArray(); - int length = str.length(); - - int flags = 0; - if (global != null) { - for (int i = 0; i < global.length(); i++) { - char c = global.charAt(i); - if (c == 'g') { - flags |= JSREG_GLOB; - } else if (c == 'i') { - flags |= JSREG_FOLD; - } else if (c == 'm') { - flags |= JSREG_MULTILINE; - } else { - reportError("msg.invalid.re.flag", String.valueOf(c)); - } - } - } - regexp.flags = flags; - - CompilerState state = new CompilerState(cx, regexp.source, length, flags); - if (flat && length > 0) { -if (debug) { -System.out.println("flat = \"" + str + "\""); -} - state.result = new RENode(REOP_FLAT); - state.result.chr = state.cpbegin[0]; - state.result.length = length; - state.result.flatIndex = 0; - state.progLength += 5; - } - else - if (!parseDisjunction(state)) - return null; - - regexp.program = new byte[state.progLength + 1]; - if (state.classCount != 0) { - regexp.classList = new RECharSet[state.classCount]; - regexp.classCount = state.classCount; - } - int endPC = emitREBytecode(state, regexp, 0, state.result); - regexp.program[endPC++] = REOP_END; - -if (debug) { -System.out.println("Prog. length = " + endPC); -for (int i = 0; i < endPC; i++) { - System.out.print(regexp.program[i]); - if (i < (endPC - 1)) System.out.print(", "); -} -System.out.println(); -} - regexp.parenCount = state.parenCount; - - // If re starts with literal, init anchorCh accordingly - switch (regexp.program[0]) { - case REOP_UCFLAT1: - case REOP_UCFLAT1i: - regexp.anchorCh = (char)getIndex(regexp.program, 1); - break; - case REOP_FLAT1: - case REOP_FLAT1i: - regexp.anchorCh = (char)(regexp.program[1] & 0xFF); - break; - case REOP_FLAT: - case REOP_FLATi: - int k = getIndex(regexp.program, 1); - regexp.anchorCh = regexp.source[k]; - break; - } - -if (debug) { -if (regexp.anchorCh >= 0) { - System.out.println("Anchor ch = '" + (char)regexp.anchorCh + "'"); -} -} - return regexp; - } - - static boolean isDigit(char c) - { - return '0' <= c && c <= '9'; - } - - private static boolean isWord(char c) - { - return Character.isLetter(c) || isDigit(c) || c == '_'; - } - - private static boolean isLineTerm(char c) - { - return ScriptRuntime.isJSLineTerminator(c); - } - - private static boolean isREWhiteSpace(int c) - { - return (c == '\u0020' || c == '\u0009' - || c == '\n' || c == '\r' - || c == 0x2028 || c == 0x2029 - || c == '\u000C' || c == '\u000B' - || c == '\u00A0' - || Character.getType((char)c) == Character.SPACE_SEPARATOR); - } - - /* - * - * 1. If IgnoreCase is false, return ch. - * 2. Let u be ch converted to upper case as if by calling - * String.prototype.toUpperCase on the one-character string ch. - * 3. If u does not consist of a single character, return ch. - * 4. Let cu be u's character. - * 5. If ch's code point value is greater than or equal to decimal 128 and cu's - * code point value is less than decimal 128, then return ch. - * 6. Return cu. - */ - private static char upcase(char ch) - { - if (ch < 128) { - if ('a' <= ch && ch <= 'z') { - return (char)(ch + ('A' - 'a')); - } - return ch; - } - char cu = Character.toUpperCase(ch); - if ((ch >= 128) && (cu < 128)) return ch; - return cu; - } - - private static char downcase(char ch) - { - if (ch < 128) { - if ('A' <= ch && ch <= 'Z') { - return (char)(ch + ('a' - 'A')); - } - return ch; - } - char cl = Character.toLowerCase(ch); - if ((ch >= 128) && (cl < 128)) return ch; - return cl; - } - -/* - * Validates and converts hex ascii value. - */ - private static int toASCIIHexDigit(int c) - { - if (c < '0') - return -1; - if (c <= '9') { - return c - '0'; - } - c |= 0x20; - if ('a' <= c && c <= 'f') { - return c - 'a' + 10; - } - return -1; - } - -/* - * Top-down regular expression grammar, based closely on Perl4. - * - * regexp: altern A regular expression is one or more - * altern '|' regexp alternatives separated by vertical bar. - */ - private static boolean parseDisjunction(CompilerState state) - { - if (!parseAlternative(state)) - return false; - char[] source = state.cpbegin; - int index = state.cp; - if (index != source.length && source[index] == '|') { - RENode altResult; - ++state.cp; - altResult = new RENode(REOP_ALT); - altResult.kid = state.result; - if (!parseDisjunction(state)) - return false; - altResult.kid2 = state.result; - state.result = altResult; - /* ALT, , ..., JUMP, ... JUMP */ - state.progLength += 9; - } - return true; - } - -/* - * altern: item An alternative is one or more items, - * item altern concatenated together. - */ - private static boolean parseAlternative(CompilerState state) - { - RENode headTerm = null; - RENode tailTerm = null; - char[] source = state.cpbegin; - while (true) { - if (state.cp == state.cpend || source[state.cp] == '|' - || (state.parenNesting != 0 && source[state.cp] == ')')) - { - if (headTerm == null) { - state.result = new RENode(REOP_EMPTY); - } - else - state.result = headTerm; - return true; - } - if (!parseTerm(state)) - return false; - if (headTerm == null) - headTerm = state.result; - else { - if (tailTerm == null) { - headTerm.next = state.result; - tailTerm = state.result; - while (tailTerm.next != null) tailTerm = tailTerm.next; - } - else { - tailTerm.next = state.result; - tailTerm = tailTerm.next; - while (tailTerm.next != null) tailTerm = tailTerm.next; - } - } - } - } - - /* calculate the total size of the bitmap required for a class expression */ - private static boolean - calculateBitmapSize(CompilerState state, RENode target, char[] src, - int index, int end) - { - char rangeStart = 0; - char c; - int n; - int nDigits; - int i; - int max = 0; - boolean inRange = false; - - target.bmsize = 0; - - if (index == end) - return true; - - if (src[index] == '^') - ++index; - - while (index != end) { - int localMax = 0; - nDigits = 2; - switch (src[index]) { - case '\\': - ++index; - c = src[index++]; - switch (c) { - case 'b': - localMax = 0x8; - break; - case 'f': - localMax = 0xC; - break; - case 'n': - localMax = 0xA; - break; - case 'r': - localMax = 0xD; - break; - case 't': - localMax = 0x9; - break; - case 'v': - localMax = 0xB; - break; - case 'c': - if (((index + 1) < end) && Character.isLetter(src[index + 1])) - localMax = (char)(src[index++] & 0x1F); - else - localMax = '\\'; - break; - case 'u': - nDigits += 2; - // fall thru... - case 'x': - n = 0; - for (i = 0; (i < nDigits) && (index < end); i++) { - c = src[index++]; - n = Kit.xDigitToInt(c, n); - if (n < 0) { - // Back off to accepting the original - // '\' as a literal - index -= (i + 1); - n = '\\'; - break; - } - } - localMax = n; - break; - case 'd': - if (inRange) { - reportError("msg.bad.range", ""); - return false; - } - localMax = '9'; - break; - case 'D': - case 's': - case 'S': - case 'w': - case 'W': - if (inRange) { - reportError("msg.bad.range", ""); - return false; - } - target.bmsize = 65535; - return true; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - /* - * This is a non-ECMA extension - decimal escapes (in this - * case, octal!) are supposed to be an error inside class - * ranges, but supported here for backwards compatibility. - * - */ - n = (c - '0'); - c = src[index]; - if ('0' <= c && c <= '7') { - index++; - n = 8 * n + (c - '0'); - c = src[index]; - if ('0' <= c && c <= '7') { - index++; - i = 8 * n + (c - '0'); - if (i <= 0377) - n = i; - else - index--; - } - } - localMax = n; - break; - - default: - localMax = c; - break; - } - break; - default: - localMax = src[index++]; - break; - } - if (inRange) { - if (rangeStart > localMax) { - reportError("msg.bad.range", ""); - return false; - } - inRange = false; - } - else { - if (index < (end - 1)) { - if (src[index] == '-') { - ++index; - inRange = true; - rangeStart = (char)localMax; - continue; - } - } - } - if ((state.flags & JSREG_FOLD) != 0){ - char cu = upcase((char)localMax); - char cd = downcase((char)localMax); - localMax = (cu >= cd) ? cu : cd; - } - if (localMax > max) - max = localMax; - } - target.bmsize = max; - return true; - } - - /* - * item: assertion An item is either an assertion or - * quantatom a quantified atom. - * - * assertion: '^' Assertions match beginning of string - * (or line if the class static property - * RegExp.multiline is true). - * '$' End of string (or line if the class - * static property RegExp.multiline is - * true). - * '\b' Word boundary (between \w and \W). - * '\B' Word non-boundary. - * - * quantatom: atom An unquantified atom. - * quantatom '{' n ',' m '}' - * Atom must occur between n and m times. - * quantatom '{' n ',' '}' Atom must occur at least n times. - * quantatom '{' n '}' Atom must occur exactly n times. - * quantatom '*' Zero or more times (same as {0,}). - * quantatom '+' One or more times (same as {1,}). - * quantatom '?' Zero or one time (same as {0,1}). - * - * any of which can be optionally followed by '?' for ungreedy - * - * atom: '(' regexp ')' A parenthesized regexp (what matched - * can be addressed using a backreference, - * see '\' n below). - * '.' Matches any char except '\n'. - * '[' classlist ']' A character class. - * '[' '^' classlist ']' A negated character class. - * '\f' Form Feed. - * '\n' Newline (Line Feed). - * '\r' Carriage Return. - * '\t' Horizontal Tab. - * '\v' Vertical Tab. - * '\d' A digit (same as [0-9]). - * '\D' A non-digit. - * '\w' A word character, [0-9a-z_A-Z]. - * '\W' A non-word character. - * '\s' A whitespace character, [ \b\f\n\r\t\v]. - * '\S' A non-whitespace character. - * '\' n A backreference to the nth (n decimal - * and positive) parenthesized expression. - * '\' octal An octal escape sequence (octal must be - * two or three digits long, unless it is - * 0 for the null character). - * '\x' hex A hex escape (hex must be two digits). - * '\c' ctrl A control character, ctrl is a letter. - * '\' literalatomchar Any character except one of the above - * that follow '\' in an atom. - * otheratomchar Any character not first among the other - * atom right-hand sides. - */ - - private static void doFlat(CompilerState state, char c) - { - state.result = new RENode(REOP_FLAT); - state.result.chr = c; - state.result.length = 1; - state.result.flatIndex = -1; - state.progLength += 3; - } - - private static int - getDecimalValue(char c, CompilerState state, int maxValue, - String overflowMessageId) - { - boolean overflow = false; - int start = state.cp; - char[] src = state.cpbegin; - int value = c - '0'; - for (; state.cp != state.cpend; ++state.cp) { - c = src[state.cp]; - if (!isDigit(c)) { - break; - } - if (!overflow) { - int digit = c - '0'; - if (value < (maxValue - digit) / 10) { - value = value * 10 + digit; - } else { - overflow = true; - value = maxValue; - } - } - } - if (overflow) { - reportError(overflowMessageId, - String.valueOf(src, start, state.cp - start)); - } - return value; - } - - private static boolean - parseTerm(CompilerState state) - { - char[] src = state.cpbegin; - char c = src[state.cp++]; - int nDigits = 2; - int parenBaseCount = state.parenCount; - int num, tmp; - RENode term; - int termStart; - - switch (c) { - /* assertions and atoms */ - case '^': - state.result = new RENode(REOP_BOL); - state.progLength++; - return true; - case '$': - state.result = new RENode(REOP_EOL); - state.progLength++; - return true; - case '\\': - if (state.cp < state.cpend) { - c = src[state.cp++]; - switch (c) { - /* assertion escapes */ - case 'b' : - state.result = new RENode(REOP_WBDRY); - state.progLength++; - return true; - case 'B': - state.result = new RENode(REOP_WNONBDRY); - state.progLength++; - return true; - /* Decimal escape */ - case '0': -/* - * Under 'strict' ECMA 3, we interpret \0 as NUL and don't accept octal. - * However, (XXX and since Rhino doesn't have a 'strict' mode) we'll just - * behave the old way for compatibility reasons. - * (see http://bugzilla.mozilla.org/show_bug.cgi?id=141078) - * - */ - reportWarning(state.cx, "msg.bad.backref", ""); - /* octal escape */ - num = 0; - while (state.cp < state.cpend) { - c = src[state.cp]; - if ((c >= '0') && (c <= '7')) { - state.cp++; - tmp = 8 * num + (c - '0'); - if (tmp > 0377) - break; - num = tmp; - } - else - break; - } - c = (char)(num); - doFlat(state, c); - break; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - termStart = state.cp - 1; - num = getDecimalValue(c, state, 0xFFFF, - "msg.overlarge.backref"); - if (num > state.parenCount) - reportWarning(state.cx, "msg.bad.backref", ""); - /* - * n > 9 or > count of parentheses, - * then treat as octal instead. - */ - if ((num > 9) && (num > state.parenCount)) { - state.cp = termStart; - num = 0; - while (state.cp < state.cpend) { - c = src[state.cp]; - if ((c >= '0') && (c <= '7')) { - state.cp++; - tmp = 8 * num + (c - '0'); - if (tmp > 0377) - break; - num = tmp; - } - else - break; - } - c = (char)(num); - doFlat(state, c); - break; - } - /* otherwise, it's a back-reference */ - state.result = new RENode(REOP_BACKREF); - state.result.parenIndex = num - 1; - state.progLength += 3; - break; - /* Control escape */ - case 'f': - c = 0xC; - doFlat(state, c); - break; - case 'n': - c = 0xA; - doFlat(state, c); - break; - case 'r': - c = 0xD; - doFlat(state, c); - break; - case 't': - c = 0x9; - doFlat(state, c); - break; - case 'v': - c = 0xB; - doFlat(state, c); - break; - /* Control letter */ - case 'c': - if (((state.cp + 1) < state.cpend) && - Character.isLetter(src[state.cp + 1])) - c = (char)(src[state.cp++] & 0x1F); - else { - /* back off to accepting the original '\' as a literal */ - --state.cp; - c = '\\'; - } - doFlat(state, c); - break; - /* UnicodeEscapeSequence */ - case 'u': - nDigits += 2; - // fall thru... - /* HexEscapeSequence */ - case 'x': - { - int n = 0; - int i; - for (i = 0; (i < nDigits) - && (state.cp < state.cpend); i++) { - c = src[state.cp++]; - n = Kit.xDigitToInt(c, n); - if (n < 0) { - // Back off to accepting the original - // 'u' or 'x' as a literal - state.cp -= (i + 2); - n = src[state.cp++]; - break; - } - } - c = (char)(n); - } - doFlat(state, c); - break; - /* Character class escapes */ - case 'd': - state.result = new RENode(REOP_DIGIT); - state.progLength++; - break; - case 'D': - state.result = new RENode(REOP_NONDIGIT); - state.progLength++; - break; - case 's': - state.result = new RENode(REOP_SPACE); - state.progLength++; - break; - case 'S': - state.result = new RENode(REOP_NONSPACE); - state.progLength++; - break; - case 'w': - state.result = new RENode(REOP_ALNUM); - state.progLength++; - break; - case 'W': - state.result = new RENode(REOP_NONALNUM); - state.progLength++; - break; - /* IdentityEscape */ - default: - state.result = new RENode(REOP_FLAT); - state.result.chr = c; - state.result.length = 1; - state.result.flatIndex = state.cp - 1; - state.progLength += 3; - break; - } - break; - } - else { - /* a trailing '\' is an error */ - reportError("msg.trail.backslash", ""); - return false; - } - case '(': { - RENode result = null; - termStart = state.cp; - if (state.cp + 1 < state.cpend && src[state.cp] == '?' - && ((c = src[state.cp + 1]) == '=' || c == '!' || c == ':')) - { - state.cp += 2; - if (c == '=') { - result = new RENode(REOP_ASSERT); - /* ASSERT, , ... ASSERTTEST */ - state.progLength += 4; - } else if (c == '!') { - result = new RENode(REOP_ASSERT_NOT); - /* ASSERTNOT, , ... ASSERTNOTTEST */ - state.progLength += 4; - } - } else { - result = new RENode(REOP_LPAREN); - /* LPAREN, , ... RPAREN, */ - state.progLength += 6; - result.parenIndex = state.parenCount++; - } - ++state.parenNesting; - if (!parseDisjunction(state)) - return false; - if (state.cp == state.cpend || src[state.cp] != ')') { - reportError("msg.unterm.paren", "in regular expression"/*APPJET*/); - return false; - } - ++state.cp; - --state.parenNesting; - if (result != null) { - result.kid = state.result; - state.result = result; - } - break; - } - case ')': - reportError("msg.re.unmatched.right.paren", ""); - return false; - case '[': - state.result = new RENode(REOP_CLASS); - termStart = state.cp; - state.result.startIndex = termStart; - while (true) { - if (state.cp == state.cpend) { - reportError("msg.unterm.class", ""); - return false; - } - if (src[state.cp] == '\\') - state.cp++; - else { - if (src[state.cp] == ']') { - state.result.kidlen = state.cp - termStart; - break; - } - } - state.cp++; - } - state.result.index = state.classCount++; - /* - * Call calculateBitmapSize now as we want any errors it finds - * to be reported during the parse phase, not at execution. - */ - if (!calculateBitmapSize(state, state.result, src, termStart, state.cp++)) - return false; - state.progLength += 3; /* CLASS, */ - break; - - case '.': - state.result = new RENode(REOP_DOT); - state.progLength++; - break; - case '*': - case '+': - case '?': - reportError("msg.bad.quant", String.valueOf(src[state.cp - 1])); - return false; - default: - state.result = new RENode(REOP_FLAT); - state.result.chr = c; - state.result.length = 1; - state.result.flatIndex = state.cp - 1; - state.progLength += 3; - break; - } - - term = state.result; - if (state.cp == state.cpend) { - return true; - } - boolean hasQ = false; - switch (src[state.cp]) { - case '+': - state.result = new RENode(REOP_QUANT); - state.result.min = 1; - state.result.max = -1; - /* , , , ... */ - state.progLength += 8; - hasQ = true; - break; - case '*': - state.result = new RENode(REOP_QUANT); - state.result.min = 0; - state.result.max = -1; - /* , , , ... */ - state.progLength += 8; - hasQ = true; - break; - case '?': - state.result = new RENode(REOP_QUANT); - state.result.min = 0; - state.result.max = 1; - /* , , , ... */ - state.progLength += 8; - hasQ = true; - break; - case '{': /* balance '}' */ - { - int min = 0; - int max = -1; - int leftCurl = state.cp; - - /* For Perl etc. compatibility, if quntifier does not match - * \{\d+(,\d*)?\} exactly back off from it - * being a quantifier, and chew it up as a literal - * atom next time instead. - */ - - c = src[++state.cp]; - if (isDigit(c)) { - ++state.cp; - min = getDecimalValue(c, state, 0xFFFF, - "msg.overlarge.min"); - c = src[state.cp]; - if (c == ',') { - c = src[++state.cp]; - if (isDigit(c)) { - ++state.cp; - max = getDecimalValue(c, state, 0xFFFF, - "msg.overlarge.max"); - c = src[state.cp]; - if (min > max) { - reportError("msg.max.lt.min", - String.valueOf(src[state.cp])); - return false; - } - } - } else { - max = min; - } - /* balance '{' */ - if (c == '}') { - state.result = new RENode(REOP_QUANT); - state.result.min = min; - state.result.max = max; - // QUANT, , , , - // , ... - state.progLength += 12; - hasQ = true; - } - } - if (!hasQ) { - state.cp = leftCurl; - } - break; - } - } - if (!hasQ) - return true; - - ++state.cp; - state.result.kid = term; - state.result.parenIndex = parenBaseCount; - state.result.parenCount = state.parenCount - parenBaseCount; - if ((state.cp < state.cpend) && (src[state.cp] == '?')) { - ++state.cp; - state.result.greedy = false; - } - else - state.result.greedy = true; - return true; - } - - private static void resolveForwardJump(byte[] array, int from, int pc) - { - if (from > pc) throw Kit.codeBug(); - addIndex(array, from, pc - from); - } - - private static int getOffset(byte[] array, int pc) - { - return getIndex(array, pc); - } - - private static int addIndex(byte[] array, int pc, int index) - { - if (index < 0) throw Kit.codeBug(); - if (index > 0xFFFF) - throw Context.reportRuntimeError("Too complex regexp"); - array[pc] = (byte)(index >> 8); - array[pc + 1] = (byte)(index); - return pc + 2; - } - - private static int getIndex(byte[] array, int pc) - { - return ((array[pc] & 0xFF) << 8) | (array[pc + 1] & 0xFF); - } - - private static final int OFFSET_LEN = 2; - private static final int INDEX_LEN = 2; - - private static int - emitREBytecode(CompilerState state, RECompiled re, int pc, RENode t) - { - RENode nextAlt; - int nextAltFixup, nextTermFixup; - byte[] program = re.program; - - while (t != null) { - program[pc++] = t.op; - switch (t.op) { - case REOP_EMPTY: - --pc; - break; - case REOP_ALT: - nextAlt = t.kid2; - nextAltFixup = pc; /* address of next alternate */ - pc += OFFSET_LEN; - pc = emitREBytecode(state, re, pc, t.kid); - program[pc++] = REOP_JUMP; - nextTermFixup = pc; /* address of following term */ - pc += OFFSET_LEN; - resolveForwardJump(program, nextAltFixup, pc); - pc = emitREBytecode(state, re, pc, nextAlt); - - program[pc++] = REOP_JUMP; - nextAltFixup = pc; - pc += OFFSET_LEN; - - resolveForwardJump(program, nextTermFixup, pc); - resolveForwardJump(program, nextAltFixup, pc); - break; - case REOP_FLAT: - /* - * Consecutize FLAT's if possible. - */ - if (t.flatIndex != -1) { - while ((t.next != null) && (t.next.op == REOP_FLAT) - && ((t.flatIndex + t.length) - == t.next.flatIndex)) { - t.length += t.next.length; - t.next = t.next.next; - } - } - if ((t.flatIndex != -1) && (t.length > 1)) { - if ((state.flags & JSREG_FOLD) != 0) - program[pc - 1] = REOP_FLATi; - else - program[pc - 1] = REOP_FLAT; - pc = addIndex(program, pc, t.flatIndex); - pc = addIndex(program, pc, t.length); - } - else { - if (t.chr < 256) { - if ((state.flags & JSREG_FOLD) != 0) - program[pc - 1] = REOP_FLAT1i; - else - program[pc - 1] = REOP_FLAT1; - program[pc++] = (byte)(t.chr); - } - else { - if ((state.flags & JSREG_FOLD) != 0) - program[pc - 1] = REOP_UCFLAT1i; - else - program[pc - 1] = REOP_UCFLAT1; - pc = addIndex(program, pc, t.chr); - } - } - break; - case REOP_LPAREN: - pc = addIndex(program, pc, t.parenIndex); - pc = emitREBytecode(state, re, pc, t.kid); - program[pc++] = REOP_RPAREN; - pc = addIndex(program, pc, t.parenIndex); - break; - case REOP_BACKREF: - pc = addIndex(program, pc, t.parenIndex); - break; - case REOP_ASSERT: - nextTermFixup = pc; - pc += OFFSET_LEN; - pc = emitREBytecode(state, re, pc, t.kid); - program[pc++] = REOP_ASSERTTEST; - resolveForwardJump(program, nextTermFixup, pc); - break; - case REOP_ASSERT_NOT: - nextTermFixup = pc; - pc += OFFSET_LEN; - pc = emitREBytecode(state, re, pc, t.kid); - program[pc++] = REOP_ASSERTNOTTEST; - resolveForwardJump(program, nextTermFixup, pc); - break; - case REOP_QUANT: - if ((t.min == 0) && (t.max == -1)) - program[pc - 1] = (t.greedy) ? REOP_STAR : REOP_MINIMALSTAR; - else - if ((t.min == 0) && (t.max == 1)) - program[pc - 1] = (t.greedy) ? REOP_OPT : REOP_MINIMALOPT; - else - if ((t.min == 1) && (t.max == -1)) - program[pc - 1] = (t.greedy) ? REOP_PLUS : REOP_MINIMALPLUS; - else { - if (!t.greedy) program[pc - 1] = REOP_MINIMALQUANT; - pc = addIndex(program, pc, t.min); - // max can be -1 which addIndex does not accept - pc = addIndex(program, pc, t.max + 1); - } - pc = addIndex(program, pc, t.parenCount); - pc = addIndex(program, pc, t.parenIndex); - nextTermFixup = pc; - pc += OFFSET_LEN; - pc = emitREBytecode(state, re, pc, t.kid); - program[pc++] = REOP_ENDCHILD; - resolveForwardJump(program, nextTermFixup, pc); - break; - case REOP_CLASS: - pc = addIndex(program, pc, t.index); - re.classList[t.index] = new RECharSet(t.bmsize, t.startIndex, - t.kidlen); - break; - default: - break; - } - t = t.next; - } - return pc; - } - - private static void - pushProgState(REGlobalData gData, int min, int max, - REBackTrackData backTrackLastToSave, - int continuation_pc, int continuation_op) - { - gData.stateStackTop = new REProgState(gData.stateStackTop, min, max, - gData.cp, backTrackLastToSave, - continuation_pc, - continuation_op); - } - - private static REProgState - popProgState(REGlobalData gData) - { - REProgState state = gData.stateStackTop; - gData.stateStackTop = state.previous; - return state; - } - - private static void - pushBackTrackState(REGlobalData gData, byte op, int target) - { - gData.backTrackStackTop = new REBackTrackData(gData, op, target); - } - - /* - * Consecutive literal characters. - */ - private static boolean - flatNMatcher(REGlobalData gData, int matchChars, - int length, char[] chars, int end) - { - if ((gData.cp + length) > end) - return false; - for (int i = 0; i < length; i++) { - if (gData.regexp.source[matchChars + i] != chars[gData.cp + i]) { - return false; - } - } - gData.cp += length; - return true; - } - - private static boolean - flatNIMatcher(REGlobalData gData, int matchChars, - int length, char[] chars, int end) - { - if ((gData.cp + length) > end) - return false; - for (int i = 0; i < length; i++) { - if (upcase(gData.regexp.source[matchChars + i]) - != upcase(chars[gData.cp + i])) - { - return false; - } - } - gData.cp += length; - return true; - } - - /* - 1. Evaluate DecimalEscape to obtain an EscapeValue E. - 2. If E is not a character then go to step 6. - 3. Let ch be E's character. - 4. Let A be a one-element RECharSet containing the character ch. - 5. Call CharacterSetMatcher(A, false) and return its Matcher result. - 6. E must be an integer. Let n be that integer. - 7. If n=0 or n>NCapturingParens then throw a SyntaxError exception. - 8. Return an internal Matcher closure that takes two arguments, a State x - and a Continuation c, and performs the following: - 1. Let cap be x's captures internal array. - 2. Let s be cap[n]. - 3. If s is undefined, then call c(x) and return its result. - 4. Let e be x's endIndex. - 5. Let len be s's length. - 6. Let f be e+len. - 7. If f>InputLength, return failure. - 8. If there exists an integer i between 0 (inclusive) and len (exclusive) - such that Canonicalize(s[i]) is not the same character as - Canonicalize(Input [e+i]), then return failure. - 9. Let y be the State (f, cap). - 10. Call c(y) and return its result. - */ - private static boolean - backrefMatcher(REGlobalData gData, int parenIndex, - char[] chars, int end) - { - int len; - int i; - int parenContent = gData.parens_index(parenIndex); - if (parenContent == -1) - return true; - - len = gData.parens_length(parenIndex); - if ((gData.cp + len) > end) - return false; - - if ((gData.regexp.flags & JSREG_FOLD) != 0) { - for (i = 0; i < len; i++) { - if (upcase(chars[parenContent + i]) != upcase(chars[gData.cp + i])) - return false; - } - } - else { - for (i = 0; i < len; i++) { - if (chars[parenContent + i] != chars[gData.cp + i]) - return false; - } - } - gData.cp += len; - return true; - } - - - /* Add a single character to the RECharSet */ - private static void - addCharacterToCharSet(RECharSet cs, char c) - { - int byteIndex = (c / 8); - if (c > cs.length) - throw new RuntimeException(); - cs.bits[byteIndex] |= 1 << (c & 0x7); - } - - - /* Add a character range, c1 to c2 (inclusive) to the RECharSet */ - private static void - addCharacterRangeToCharSet(RECharSet cs, char c1, char c2) - { - int i; - - int byteIndex1 = (c1 / 8); - int byteIndex2 = (c2 / 8); - - if ((c2 > cs.length) || (c1 > c2)) - throw new RuntimeException(); - - c1 &= 0x7; - c2 &= 0x7; - - if (byteIndex1 == byteIndex2) { - cs.bits[byteIndex1] |= ((0xFF) >> (7 - (c2 - c1))) << c1; - } - else { - cs.bits[byteIndex1] |= 0xFF << c1; - for (i = byteIndex1 + 1; i < byteIndex2; i++) - cs.bits[i] = (byte)0xFF; - cs.bits[byteIndex2] |= (0xFF) >> (7 - c2); - } - } - - /* Compile the source of the class into a RECharSet */ - private static void - processCharSet(REGlobalData gData, RECharSet charSet) - { - synchronized (charSet) { - if (!charSet.converted) { - processCharSetImpl(gData, charSet); - charSet.converted = true; - } - } - } - - - private static void - processCharSetImpl(REGlobalData gData, RECharSet charSet) - { - int src = charSet.startIndex; - int end = src + charSet.strlength; - - char rangeStart = 0, thisCh; - int byteLength; - char c; - int n; - int nDigits; - int i; - boolean inRange = false; - - charSet.sense = true; - byteLength = (charSet.length / 8) + 1; - charSet.bits = new byte[byteLength]; - - if (src == end) - return; - - if (gData.regexp.source[src] == '^') { - charSet.sense = false; - ++src; - } - - while (src != end) { - nDigits = 2; - switch (gData.regexp.source[src]) { - case '\\': - ++src; - c = gData.regexp.source[src++]; - switch (c) { - case 'b': - thisCh = 0x8; - break; - case 'f': - thisCh = 0xC; - break; - case 'n': - thisCh = 0xA; - break; - case 'r': - thisCh = 0xD; - break; - case 't': - thisCh = 0x9; - break; - case 'v': - thisCh = 0xB; - break; - case 'c': - if (((src + 1) < end) && isWord(gData.regexp.source[src + 1])) - thisCh = (char)(gData.regexp.source[src++] & 0x1F); - else { - --src; - thisCh = '\\'; - } - break; - case 'u': - nDigits += 2; - // fall thru - case 'x': - n = 0; - for (i = 0; (i < nDigits) && (src < end); i++) { - c = gData.regexp.source[src++]; - int digit = toASCIIHexDigit(c); - if (digit < 0) { - /* back off to accepting the original '\' - * as a literal - */ - src -= (i + 1); - n = '\\'; - break; - } - n = (n << 4) | digit; - } - thisCh = (char)(n); - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - /* - * This is a non-ECMA extension - decimal escapes (in this - * case, octal!) are supposed to be an error inside class - * ranges, but supported here for backwards compatibility. - * - */ - n = (c - '0'); - c = gData.regexp.source[src]; - if ('0' <= c && c <= '7') { - src++; - n = 8 * n + (c - '0'); - c = gData.regexp.source[src]; - if ('0' <= c && c <= '7') { - src++; - i = 8 * n + (c - '0'); - if (i <= 0377) - n = i; - else - src--; - } - } - thisCh = (char)(n); - break; - - case 'd': - addCharacterRangeToCharSet(charSet, '0', '9'); - continue; /* don't need range processing */ - case 'D': - addCharacterRangeToCharSet(charSet, (char)0, (char)('0' - 1)); - addCharacterRangeToCharSet(charSet, (char)('9' + 1), - (char)(charSet.length)); - continue; - case 's': - for (i = charSet.length; i >= 0; i--) - if (isREWhiteSpace(i)) - addCharacterToCharSet(charSet, (char)(i)); - continue; - case 'S': - for (i = charSet.length; i >= 0; i--) - if (!isREWhiteSpace(i)) - addCharacterToCharSet(charSet, (char)(i)); - continue; - case 'w': - for (i = charSet.length; i >= 0; i--) - if (isWord((char)i)) - addCharacterToCharSet(charSet, (char)(i)); - continue; - case 'W': - for (i = charSet.length; i >= 0; i--) - if (!isWord((char)i)) - addCharacterToCharSet(charSet, (char)(i)); - continue; - default: - thisCh = c; - break; - - } - break; - - default: - thisCh = gData.regexp.source[src++]; - break; - - } - if (inRange) { - if ((gData.regexp.flags & JSREG_FOLD) != 0) { - addCharacterRangeToCharSet(charSet, - upcase(rangeStart), - upcase(thisCh)); - addCharacterRangeToCharSet(charSet, - downcase(rangeStart), - downcase(thisCh)); - } else { - addCharacterRangeToCharSet(charSet, rangeStart, thisCh); - } - inRange = false; - } - else { - if ((gData.regexp.flags & JSREG_FOLD) != 0) { - addCharacterToCharSet(charSet, upcase(thisCh)); - addCharacterToCharSet(charSet, downcase(thisCh)); - } else { - addCharacterToCharSet(charSet, thisCh); - } - if (src < (end - 1)) { - if (gData.regexp.source[src] == '-') { - ++src; - inRange = true; - rangeStart = thisCh; - } - } - } - } - } - - - /* - * Initialize the character set if it this is the first call. - * Test the bit - if the ^ flag was specified, non-inclusion is a success - */ - private static boolean - classMatcher(REGlobalData gData, RECharSet charSet, char ch) - { - if (!charSet.converted) { - processCharSet(gData, charSet); - } - - int byteIndex = ch / 8; - if (charSet.sense) { - if ((charSet.length == 0) || - ( (ch > charSet.length) - || ((charSet.bits[byteIndex] & (1 << (ch & 0x7))) == 0) )) - return false; - } else { - if (! ((charSet.length == 0) || - ( (ch > charSet.length) - || ((charSet.bits[byteIndex] & (1 << (ch & 0x7))) == 0) ))) - return false; - } - return true; - } - - private static boolean - executeREBytecode(REGlobalData gData, char[] chars, int end) - { - int pc = 0; - byte program[] = gData.regexp.program; - int currentContinuation_op; - int currentContinuation_pc; - boolean result = false; - - currentContinuation_pc = 0; - currentContinuation_op = REOP_END; -if (debug) { -System.out.println("Input = \"" + new String(chars) + "\", start at " + gData.cp); -} - int op = program[pc++]; - for (;;) { -if (debug) { -System.out.println("Testing at " + gData.cp + ", op = " + op); -} - switch (op) { - case REOP_EMPTY: - result = true; - break; - case REOP_BOL: - if (gData.cp != 0) { - if (gData.multiline || - ((gData.regexp.flags & JSREG_MULTILINE) != 0)) { - if (!isLineTerm(chars[gData.cp - 1])) { - result = false; - break; - } - } - else { - result = false; - break; - } - } - result = true; - break; - case REOP_EOL: - if (gData.cp != end) { - if (gData.multiline || - ((gData.regexp.flags & JSREG_MULTILINE) != 0)) { - if (!isLineTerm(chars[gData.cp])) { - result = false; - break; - } - } - else { - result = false; - break; - } - } - result = true; - break; - case REOP_WBDRY: - result = ((gData.cp == 0 || !isWord(chars[gData.cp - 1])) - ^ !((gData.cp < end) && isWord(chars[gData.cp]))); - break; - case REOP_WNONBDRY: - result = ((gData.cp == 0 || !isWord(chars[gData.cp - 1])) - ^ ((gData.cp < end) && isWord(chars[gData.cp]))); - break; - case REOP_DOT: - result = (gData.cp != end && !isLineTerm(chars[gData.cp])); - if (result) { - gData.cp++; - } - break; - case REOP_DIGIT: - result = (gData.cp != end && isDigit(chars[gData.cp])); - if (result) { - gData.cp++; - } - break; - case REOP_NONDIGIT: - result = (gData.cp != end && !isDigit(chars[gData.cp])); - if (result) { - gData.cp++; - } - break; - case REOP_SPACE: - result = (gData.cp != end && isREWhiteSpace(chars[gData.cp])); - if (result) { - gData.cp++; - } - break; - case REOP_NONSPACE: - result = (gData.cp != end && !isREWhiteSpace(chars[gData.cp])); - if (result) { - gData.cp++; - } - break; - case REOP_ALNUM: - result = (gData.cp != end && isWord(chars[gData.cp])); - if (result) { - gData.cp++; - } - break; - case REOP_NONALNUM: - result = (gData.cp != end && !isWord(chars[gData.cp])); - if (result) { - gData.cp++; - } - break; - case REOP_FLAT: - { - int offset = getIndex(program, pc); - pc += INDEX_LEN; - int length = getIndex(program, pc); - pc += INDEX_LEN; - result = flatNMatcher(gData, offset, length, chars, end); - } - break; - case REOP_FLATi: - { - int offset = getIndex(program, pc); - pc += INDEX_LEN; - int length = getIndex(program, pc); - pc += INDEX_LEN; - result = flatNIMatcher(gData, offset, length, chars, end); - } - break; - case REOP_FLAT1: - { - char matchCh = (char)(program[pc++] & 0xFF); - result = (gData.cp != end && chars[gData.cp] == matchCh); - if (result) { - gData.cp++; - } - } - break; - case REOP_FLAT1i: - { - char matchCh = (char)(program[pc++] & 0xFF); - result = (gData.cp != end - && upcase(chars[gData.cp]) == upcase(matchCh)); - if (result) { - gData.cp++; - } - } - break; - case REOP_UCFLAT1: - { - char matchCh = (char)getIndex(program, pc); - pc += INDEX_LEN; - result = (gData.cp != end && chars[gData.cp] == matchCh); - if (result) { - gData.cp++; - } - } - break; - case REOP_UCFLAT1i: - { - char matchCh = (char)getIndex(program, pc); - pc += INDEX_LEN; - result = (gData.cp != end - && upcase(chars[gData.cp]) == upcase(matchCh)); - if (result) { - gData.cp++; - } - } - break; - case REOP_ALT: - { - int nextpc; - byte nextop; - pushProgState(gData, 0, 0, null, - currentContinuation_pc, - currentContinuation_op); - nextpc = pc + getOffset(program, pc); - nextop = program[nextpc++]; - pushBackTrackState(gData, nextop, nextpc); - pc += INDEX_LEN; - op = program[pc++]; - } - continue; - - case REOP_JUMP: - { - int offset; - REProgState state = popProgState(gData); - currentContinuation_pc = state.continuation_pc; - currentContinuation_op = state.continuation_op; - offset = getOffset(program, pc); - pc += offset; - op = program[pc++]; - } - continue; - - - case REOP_LPAREN: - { - int parenIndex = getIndex(program, pc); - pc += INDEX_LEN; - gData.set_parens(parenIndex, gData.cp, 0); - op = program[pc++]; - } - continue; - case REOP_RPAREN: - { - int cap_index; - int parenIndex = getIndex(program, pc); - pc += INDEX_LEN; - cap_index = gData.parens_index(parenIndex); - gData.set_parens(parenIndex, cap_index, - gData.cp - cap_index); - if (parenIndex > gData.lastParen) - gData.lastParen = parenIndex; - op = program[pc++]; - } - continue; - case REOP_BACKREF: - { - int parenIndex = getIndex(program, pc); - pc += INDEX_LEN; - result = backrefMatcher(gData, parenIndex, chars, end); - } - break; - - case REOP_CLASS: - { - int index = getIndex(program, pc); - pc += INDEX_LEN; - if (gData.cp != end) { - if (classMatcher(gData, gData.regexp.classList[index], - chars[gData.cp])) - { - gData.cp++; - result = true; - break; - } - } - result = false; - } - break; - - case REOP_ASSERT: - case REOP_ASSERT_NOT: - { - byte testOp; - pushProgState(gData, 0, 0, gData.backTrackStackTop, - currentContinuation_pc, - currentContinuation_op); - if (op == REOP_ASSERT) { - testOp = REOP_ASSERTTEST; - } else { - testOp = REOP_ASSERTNOTTEST; - } - pushBackTrackState(gData, testOp, - pc + getOffset(program, pc)); - pc += INDEX_LEN; - op = program[pc++]; - } - continue; - - case REOP_ASSERTTEST: - case REOP_ASSERTNOTTEST: - { - REProgState state = popProgState(gData); - gData.cp = state.index; - gData.backTrackStackTop = state.backTrack; - currentContinuation_pc = state.continuation_pc; - currentContinuation_op = state.continuation_op; - if (result) { - if (op == REOP_ASSERTTEST) { - result = true; - } else { - result = false; - } - } else { - if (op == REOP_ASSERTTEST) { - // Do nothing - } else { - result = true; - } - } - } - break; - - case REOP_STAR: - case REOP_PLUS: - case REOP_OPT: - case REOP_QUANT: - case REOP_MINIMALSTAR: - case REOP_MINIMALPLUS: - case REOP_MINIMALOPT: - case REOP_MINIMALQUANT: - { - int min, max; - boolean greedy = false; - switch (op) { - case REOP_STAR: - greedy = true; - // fallthrough - case REOP_MINIMALSTAR: - min = 0; - max = -1; - break; - case REOP_PLUS: - greedy = true; - // fallthrough - case REOP_MINIMALPLUS: - min = 1; - max = -1; - break; - case REOP_OPT: - greedy = true; - // fallthrough - case REOP_MINIMALOPT: - min = 0; - max = 1; - break; - case REOP_QUANT: - greedy = true; - // fallthrough - case REOP_MINIMALQUANT: - min = getOffset(program, pc); - pc += INDEX_LEN; - // See comments in emitREBytecode for " - 1" reason - max = getOffset(program, pc) - 1; - pc += INDEX_LEN; - break; - default: - throw Kit.codeBug(); - } - pushProgState(gData, min, max, null, - currentContinuation_pc, - currentContinuation_op); - if (greedy) { - currentContinuation_op = REOP_REPEAT; - currentContinuation_pc = pc; - pushBackTrackState(gData, REOP_REPEAT, pc); - /* Step over , & */ - pc += 3 * INDEX_LEN; - op = program[pc++]; - } else { - if (min != 0) { - currentContinuation_op = REOP_MINIMALREPEAT; - currentContinuation_pc = pc; - /* & */ - pc += 3 * INDEX_LEN; - op = program[pc++]; - } else { - pushBackTrackState(gData, REOP_MINIMALREPEAT, pc); - popProgState(gData); - pc += 2 * INDEX_LEN; // & - pc = pc + getOffset(program, pc); - op = program[pc++]; - } - } - } - continue; - - case REOP_ENDCHILD: - // Use the current continuation. - pc = currentContinuation_pc; - op = currentContinuation_op; - continue; - - case REOP_REPEAT: - { - REProgState state = popProgState(gData); - if (!result) { - // - // There's been a failure, see if we have enough - // children. - // - if (state.min == 0) - result = true; - currentContinuation_pc = state.continuation_pc; - currentContinuation_op = state.continuation_op; - pc += 2 * INDEX_LEN; /* & */ - pc = pc + getOffset(program, pc); - break; - } - else { - if (state.min == 0 && gData.cp == state.index) { - // matched an empty string, that'll get us nowhere - result = false; - currentContinuation_pc = state.continuation_pc; - currentContinuation_op = state.continuation_op; - pc += 2 * INDEX_LEN; - pc = pc + getOffset(program, pc); - break; - } - int new_min = state.min, new_max = state.max; - if (new_min != 0) new_min--; - if (new_max != -1) new_max--; - if (new_max == 0) { - result = true; - currentContinuation_pc = state.continuation_pc; - currentContinuation_op = state.continuation_op; - pc += 2 * INDEX_LEN; - pc = pc + getOffset(program, pc); - break; - } - pushProgState(gData, new_min, new_max, null, - state.continuation_pc, - state.continuation_op); - currentContinuation_op = REOP_REPEAT; - currentContinuation_pc = pc; - pushBackTrackState(gData, REOP_REPEAT, pc); - int parenCount = getIndex(program, pc); - pc += INDEX_LEN; - int parenIndex = getIndex(program, pc); - pc += 2 * INDEX_LEN; - op = program[pc++]; - for (int k = 0; k < parenCount; k++) { - gData.set_parens(parenIndex + k, -1, 0); - } - } - } - continue; - - case REOP_MINIMALREPEAT: - { - REProgState state = popProgState(gData); - if (!result) { - // - // Non-greedy failure - try to consume another child. - // - if (state.max == -1 || state.max > 0) { - pushProgState(gData, state.min, state.max, null, - state.continuation_pc, - state.continuation_op); - currentContinuation_op = REOP_MINIMALREPEAT; - currentContinuation_pc = pc; - int parenCount = getIndex(program, pc); - pc += INDEX_LEN; - int parenIndex = getIndex(program, pc); - pc += 2 * INDEX_LEN; - for (int k = 0; k < parenCount; k++) { - gData.set_parens(parenIndex + k, -1, 0); - } - op = program[pc++]; - continue; - } else { - // Don't need to adjust pc since we're going to pop. - currentContinuation_pc = state.continuation_pc; - currentContinuation_op = state.continuation_op; - break; - } - } else { - if (state.min == 0 && gData.cp == state.index) { - // Matched an empty string, that'll get us nowhere. - result = false; - currentContinuation_pc = state.continuation_pc; - currentContinuation_op = state.continuation_op; - break; - } - int new_min = state.min, new_max = state.max; - if (new_min != 0) new_min--; - if (new_max != -1) new_max--; - pushProgState(gData, new_min, new_max, null, - state.continuation_pc, - state.continuation_op); - if (new_min != 0) { - currentContinuation_op = REOP_MINIMALREPEAT; - currentContinuation_pc = pc; - int parenCount = getIndex(program, pc); - pc += INDEX_LEN; - int parenIndex = getIndex(program, pc); - pc += 2 * INDEX_LEN; - for (int k = 0; k < parenCount; k++) { - gData.set_parens(parenIndex + k, -1, 0); - } - op = program[pc++]; - } else { - currentContinuation_pc = state.continuation_pc; - currentContinuation_op = state.continuation_op; - pushBackTrackState(gData, REOP_MINIMALREPEAT, pc); - popProgState(gData); - pc += 2 * INDEX_LEN; - pc = pc + getOffset(program, pc); - op = program[pc++]; - } - continue; - } - } - - case REOP_END: - return true; - - default: - throw Kit.codeBug(); - - } - /* - * If the match failed and there's a backtrack option, take it. - * Otherwise this is a complete and utter failure. - */ - if (!result) { - REBackTrackData backTrackData = gData.backTrackStackTop; - if (backTrackData != null) { - gData.backTrackStackTop = backTrackData.previous; - - gData.lastParen = backTrackData.lastParen; - - // XXX: If backTrackData will no longer be used, then - // there is no need to clone backTrackData.parens - if (backTrackData.parens != null) { - gData.parens = backTrackData.parens.clone(); - } - - gData.cp = backTrackData.cp; - - gData.stateStackTop = backTrackData.stateStackTop; - - currentContinuation_op - = gData.stateStackTop.continuation_op; - currentContinuation_pc - = gData.stateStackTop.continuation_pc; - pc = backTrackData.continuation_pc; - op = backTrackData.continuation_op; - continue; - } - else - return false; - } - - op = program[pc++]; - } - - } - - private static boolean - matchRegExp(REGlobalData gData, RECompiled re, - char[] chars, int start, int end, boolean multiline) - { - if (re.parenCount != 0) { - gData.parens = new long[re.parenCount]; - } else { - gData.parens = null; - } - - gData.backTrackStackTop = null; - - gData.stateStackTop = null; - - gData.multiline = multiline; - gData.regexp = re; - gData.lastParen = 0; - - int anchorCh = gData.regexp.anchorCh; - // - // have to include the position beyond the last character - // in order to detect end-of-input/line condition - // - for (int i = start; i <= end; ++i) { - // - // If the first node is a literal match, step the index into - // the string until that match is made, or fail if it can't be - // found at all. - // - if (anchorCh >= 0) { - for (;;) { - if (i == end) { - return false; - } - char matchCh = chars[i]; - if (matchCh == anchorCh || - ((gData.regexp.flags & JSREG_FOLD) != 0 - && upcase(matchCh) == upcase((char)anchorCh))) - { - break; - } - ++i; - } - } - gData.cp = i; - for (int j = 0; j < re.parenCount; j++) { - gData.set_parens(j, -1, 0); - } - boolean result = executeREBytecode(gData, chars, end); - - gData.backTrackStackTop = null; - gData.stateStackTop = null; - if (result) { - gData.skipped = i - start; - return true; - } - } - return false; - } - - /* - * indexp is assumed to be an array of length 1 - */ - Object executeRegExp(Context cx, Scriptable scopeObj, RegExpImpl res, - String str, int indexp[], int matchType) - { - REGlobalData gData = new REGlobalData(); - - int start = indexp[0]; - char[] charArray = str.toCharArray(); - int end = charArray.length; - if (start > end) - start = end; - // - // Call the recursive matcher to do the real work. - // - boolean matches = matchRegExp(gData, re, charArray, start, end, - res.multiline); - if (!matches) { - if (matchType != PREFIX) return null; - return Undefined.instance; - } - int index = gData.cp; - int i = index; - indexp[0] = i; - int matchlen = i - (start + gData.skipped); - int ep = index; - index -= matchlen; - Object result; - Scriptable obj; - - if (matchType == TEST) { - /* - * Testing for a match and updating cx.regExpImpl: don't allocate - * an array object, do return true. - */ - result = Boolean.TRUE; - obj = null; - } - else { - /* - * The array returned on match has element 0 bound to the matched - * string, elements 1 through re.parenCount bound to the paren - * matches, an index property telling the length of the left context, - * and an input property referring to the input string. - */ - Scriptable scope = getTopLevelScope(scopeObj); - result = ScriptRuntime.newObject(cx, scope, "Array", null); - obj = (Scriptable) result; - - String matchstr = new String(charArray, index, matchlen); - obj.put(0, obj, matchstr); - } - - if (re.parenCount == 0) { - res.parens = null; - res.lastParen = SubString.emptySubString; - } else { - SubString parsub = null; - int num; - res.parens = new SubString[re.parenCount]; - for (num = 0; num < re.parenCount; num++) { - int cap_index = gData.parens_index(num); - String parstr; - if (cap_index != -1) { - int cap_length = gData.parens_length(num); - parsub = new SubString(charArray, cap_index, cap_length); - res.parens[num] = parsub; - if (matchType == TEST) continue; - parstr = parsub.toString(); - obj.put(num+1, obj, parstr); - } - else { - if (matchType != TEST) - obj.put(num+1, obj, Undefined.instance); - } - } - res.lastParen = parsub; - } - - if (! (matchType == TEST)) { - /* - * Define the index and input properties last for better for/in loop - * order (so they come after the elements). - */ - obj.put("index", obj, new Integer(start + gData.skipped)); - obj.put("input", obj, str); - } - - if (res.lastMatch == null) { - res.lastMatch = new SubString(); - res.leftContext = new SubString(); - res.rightContext = new SubString(); - } - res.lastMatch.charArray = charArray; - res.lastMatch.index = index; - res.lastMatch.length = matchlen; - - res.leftContext.charArray = charArray; - if (cx.getLanguageVersion() == Context.VERSION_1_2) { - /* - * JS1.2 emulated Perl4.0.1.8 (patch level 36) for global regexps used - * in scalar contexts, and unintentionally for the string.match "list" - * psuedo-context. On "hi there bye", the following would result: - * - * Language while(/ /g){print("$`");} s/ /$`/g - * perl4.036 "hi", "there" "hihitherehi therebye" - * perl5 "hi", "hi there" "hihitherehi therebye" - * js1.2 "hi", "there" "hihitheretherebye" - * - * Insofar as JS1.2 always defined $` as "left context from the last - * match" for global regexps, it was more consistent than perl4. - */ - res.leftContext.index = start; - res.leftContext.length = gData.skipped; - } else { - /* - * For JS1.3 and ECMAv2, emulate Perl5 exactly: - * - * js1.3 "hi", "hi there" "hihitherehi therebye" - */ - res.leftContext.index = 0; - res.leftContext.length = start + gData.skipped; - } - - res.rightContext.charArray = charArray; - res.rightContext.index = ep; - res.rightContext.length = end - ep; - - return result; - } - - int getFlags() - { - return re.flags; - } - - private static void reportWarning(Context cx, String messageId, String arg) - { - if (cx.hasFeature(Context.FEATURE_STRICT_MODE)) { - String msg = ScriptRuntime.getMessage1(messageId, arg); - Context.reportWarning(msg); - } - } - - private static void reportError(String messageId, String arg) - { - String msg = ScriptRuntime.getMessage1(messageId, arg); - throw ScriptRuntime.constructError("SyntaxError", msg); - } - -// #string_id_map# - - private static final int - Id_lastIndex = 1, - Id_source = 2, - Id_global = 3, - Id_ignoreCase = 4, - Id_multiline = 5, - - MAX_INSTANCE_ID = 5; - - protected int getMaxInstanceId() - { - return MAX_INSTANCE_ID; - } - - protected int findInstanceIdInfo(String s) - { - int id; -// #generated# Last update: 2007-05-09 08:16:24 EDT - L0: { id = 0; String X = null; int c; - int s_length = s.length(); - if (s_length==6) { - c=s.charAt(0); - if (c=='g') { X="global";id=Id_global; } - else if (c=='s') { X="source";id=Id_source; } - } - else if (s_length==9) { - c=s.charAt(0); - if (c=='l') { X="lastIndex";id=Id_lastIndex; } - else if (c=='m') { X="multiline";id=Id_multiline; } - } - else if (s_length==10) { X="ignoreCase";id=Id_ignoreCase; } - if (X!=null && X!=s && !X.equals(s)) id = 0; - break L0; - } -// #/generated# -// #/string_id_map# - - if (id == 0) return super.findInstanceIdInfo(s); - - int attr; - switch (id) { - case Id_lastIndex: - attr = PERMANENT | DONTENUM; - break; - case Id_source: - case Id_global: - case Id_ignoreCase: - case Id_multiline: - attr = PERMANENT | READONLY | DONTENUM; - break; - default: - throw new IllegalStateException(); - } - return instanceIdInfo(attr, id); - } - - protected String getInstanceIdName(int id) - { - switch (id) { - case Id_lastIndex: return "lastIndex"; - case Id_source: return "source"; - case Id_global: return "global"; - case Id_ignoreCase: return "ignoreCase"; - case Id_multiline: return "multiline"; - } - return super.getInstanceIdName(id); - } - - protected Object getInstanceIdValue(int id) - { - switch (id) { - case Id_lastIndex: - return ScriptRuntime.wrapNumber(lastIndex); - case Id_source: - return new String(re.source); - case Id_global: - return ScriptRuntime.wrapBoolean((re.flags & JSREG_GLOB) != 0); - case Id_ignoreCase: - return ScriptRuntime.wrapBoolean((re.flags & JSREG_FOLD) != 0); - case Id_multiline: - return ScriptRuntime.wrapBoolean((re.flags & JSREG_MULTILINE) != 0); - } - return super.getInstanceIdValue(id); - } - - protected void setInstanceIdValue(int id, Object value) - { - if (id == Id_lastIndex) { - lastIndex = ScriptRuntime.toNumber(value); - return; - } - super.setInstanceIdValue(id, value); - } - - protected void initPrototypeId(int id) - { - String s; - int arity; - switch (id) { - case Id_compile: arity=1; s="compile"; break; - case Id_toString: arity=0; s="toString"; break; - case Id_toSource: arity=0; s="toSource"; break; - case Id_exec: arity=1; s="exec"; break; - case Id_test: arity=1; s="test"; break; - case Id_prefix: arity=1; s="prefix"; break; - default: throw new IllegalArgumentException(String.valueOf(id)); - } - initPrototypeMethod(REGEXP_TAG, id, s, arity); - } - - public Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope, - Scriptable thisObj, Object[] args) - { - if (!f.hasTag(REGEXP_TAG)) { - return super.execIdCall(f, cx, scope, thisObj, args); - } - int id = f.methodId(); - switch (id) { - case Id_compile: - return realThis(thisObj, f).compile(cx, scope, args); - - case Id_toString: - case Id_toSource: - return realThis(thisObj, f).toString(); - - case Id_exec: - return realThis(thisObj, f).execSub(cx, scope, args, MATCH); - - case Id_test: { - Object x = realThis(thisObj, f).execSub(cx, scope, args, TEST); - return Boolean.TRUE.equals(x) ? Boolean.TRUE : Boolean.FALSE; - } - - case Id_prefix: - return realThis(thisObj, f).execSub(cx, scope, args, PREFIX); - } - throw new IllegalArgumentException(String.valueOf(id)); - } - - private static NativeRegExp realThis(Scriptable thisObj, IdFunctionObject f) - { - if (!(thisObj instanceof NativeRegExp)) - throw incompatibleCallError(f); - return (NativeRegExp)thisObj; - } - -// #string_id_map# - protected int findPrototypeId(String s) - { - int id; -// #generated# Last update: 2007-05-09 08:16:24 EDT - L0: { id = 0; String X = null; int c; - L: switch (s.length()) { - case 4: c=s.charAt(0); - if (c=='e') { X="exec";id=Id_exec; } - else if (c=='t') { X="test";id=Id_test; } - break L; - case 6: X="prefix";id=Id_prefix; break L; - case 7: X="compile";id=Id_compile; break L; - case 8: c=s.charAt(3); - if (c=='o') { X="toSource";id=Id_toSource; } - else if (c=='t') { X="toString";id=Id_toString; } - break L; - } - if (X!=null && X!=s && !X.equals(s)) id = 0; - break L0; - } -// #/generated# - return id; - } - - private static final int - Id_compile = 1, - Id_toString = 2, - Id_toSource = 3, - Id_exec = 4, - Id_test = 5, - Id_prefix = 6, - - MAX_PROTOTYPE_ID = 6; - -// #/string_id_map# - - private RECompiled re; - double lastIndex; /* index after last match, for //g iterator */ - -} // class NativeRegExp - -class RECompiled implements Serializable -{ - static final long serialVersionUID = -6144956577595844213L; - - char []source; /* locked source string, sans // */ - int parenCount; /* number of parenthesized submatches */ - int flags; /* flags */ - byte[] program; /* regular expression bytecode */ - int classCount; /* count [...] bitmaps */ - RECharSet[] classList; /* list of [...] bitmaps */ - int anchorCh = -1; /* if >= 0, then re starts with this literal char */ -} - -class RENode { - - RENode(byte op) - { - this.op = op; - } - - byte op; /* r.e. op bytecode */ - RENode next; /* next in concatenation order */ - RENode kid; /* first operand */ - - RENode kid2; /* second operand */ - int num; /* could be a number */ - int parenIndex; /* or a parenthesis index */ - - /* or a range */ - int min; - int max; - int parenCount; - boolean greedy; - - /* or a character class */ - int startIndex; - int kidlen; /* length of string at kid, in chars */ - int bmsize; /* bitmap size, based on max char code */ - int index; /* index into class list */ - - /* or a literal sequence */ - char chr; /* of one character */ - int length; /* or many (via the index) */ - int flatIndex; /* which is -1 if not sourced */ - -} - -class CompilerState { - - CompilerState(Context cx, char[] source, int length, int flags) - { - this.cx = cx; - this.cpbegin = source; - this.cp = 0; - this.cpend = length; - this.flags = flags; - this.parenCount = 0; - this.classCount = 0; - this.progLength = 0; - } - - Context cx; - char cpbegin[]; - int cpend; - int cp; - int flags; - int parenCount; - int parenNesting; - int classCount; /* number of [] encountered */ - int progLength; /* estimated bytecode length */ - RENode result; -} - -class REProgState -{ - REProgState(REProgState previous, int min, int max, int index, - REBackTrackData backTrack, - int continuation_pc, int continuation_op) - { - this.previous = previous; - this.min = min; - this.max = max; - this.index = index; - this.continuation_op = continuation_op; - this.continuation_pc = continuation_pc; - this.backTrack = backTrack; - } - - REProgState previous; // previous state in stack - - int min; /* current quantifier min */ - int max; /* current quantifier max */ - int index; /* progress in text */ - int continuation_op; - int continuation_pc; - REBackTrackData backTrack; // used by ASSERT_ to recover state -} - -class REBackTrackData { - - REBackTrackData(REGlobalData gData, int op, int pc) - { - previous = gData.backTrackStackTop; - continuation_op = op; - continuation_pc = pc; - lastParen = gData.lastParen; - if (gData.parens != null) { - parens = gData.parens.clone(); - } - cp = gData.cp; - stateStackTop = gData.stateStackTop; - } - - REBackTrackData previous; - - int continuation_op; /* where to backtrack to */ - int continuation_pc; - int lastParen; - long[] parens; /* parenthesis captures */ - int cp; /* char buffer index */ - REProgState stateStackTop; /* state of op that backtracked */ -} - -class REGlobalData { - boolean multiline; - RECompiled regexp; /* the RE in execution */ - int lastParen; /* highest paren set so far */ - int skipped; /* chars skipped anchoring this r.e. */ - - int cp; /* char buffer index */ - long[] parens; /* parens captures */ - - REProgState stateStackTop; /* stack of state of current ancestors */ - - REBackTrackData backTrackStackTop; /* last matched-so-far position */ - - - /** - * Get start of parenthesis capture contents, -1 for empty. - */ - int parens_index(int i) - { - return (int)(parens[i]); - } - - /** - * Get length of parenthesis capture contents. - */ - int parens_length(int i) - { - return (int)(parens[i] >>> 32); - } - - void set_parens(int i, int index, int length) - { - parens[i] = (index & 0xffffffffL) | ((long)length << 32); - } - -} - -/* - * This struct holds a bitmap representation of a class from a regexp. - * There's a list of these referenced by the classList field in the NativeRegExp - * struct below. The initial state has startIndex set to the offset in the - * original regexp source of the beginning of the class contents. The first - * use of the class converts the source representation into a bitmap. - * - */ -final class RECharSet implements Serializable -{ - static final long serialVersionUID = 7931787979395898394L; - - RECharSet(int length, int startIndex, int strlength) - { - this.length = length; - this.startIndex = startIndex; - this.strlength = strlength; - } - - int length; - int startIndex; - int strlength; - - volatile transient boolean converted; - volatile transient boolean sense; - volatile transient byte[] bits; -} - - -- cgit v1.2.3-1-g7c22