Browse Source

removed /core/ from git tree

Bachir Soussi Chiadmi 5 years ago
parent
commit
2fce58b02e
100 changed files with 3 additions and 5751 deletions
  1. 3 1
      .gitignore
  2. 0 68
      composer.json
  3. 0 8
      core/CHANGELOG.txt
  4. 0 68
      core/COPYRIGHT.txt
  5. 0 45
      core/INSTALL.mysql.txt
  6. 0 44
      core/INSTALL.pgsql.txt
  7. 0 42
      core/INSTALL.sqlite.txt
  8. 0 463
      core/INSTALL.txt
  9. 0 339
      core/LICENSE.txt
  10. 0 529
      core/MAINTAINERS.txt
  11. 0 242
      core/UPDATE.txt
  12. 0 1
      core/assets/vendor/.gitignore
  13. 0 0
      core/assets/vendor/backbone/backbone-min.js
  14. 0 0
      core/assets/vendor/backbone/backbone-min.map
  15. 0 1894
      core/assets/vendor/backbone/backbone.js
  16. 0 139
      core/assets/vendor/ckeditor/CHANGES.md
  17. 0 1417
      core/assets/vendor/ckeditor/LICENSE.md
  18. 0 102
      core/assets/vendor/ckeditor/build-config.js
  19. 0 4
      core/assets/vendor/ckeditor/ckeditor.js
  20. 0 4
      core/assets/vendor/ckeditor/lang/af.js
  21. 0 4
      core/assets/vendor/ckeditor/lang/ar.js
  22. 0 4
      core/assets/vendor/ckeditor/lang/az.js
  23. 0 4
      core/assets/vendor/ckeditor/lang/bg.js
  24. 0 4
      core/assets/vendor/ckeditor/lang/bn.js
  25. 0 4
      core/assets/vendor/ckeditor/lang/bs.js
  26. 0 4
      core/assets/vendor/ckeditor/lang/ca.js
  27. 0 4
      core/assets/vendor/ckeditor/lang/cs.js
  28. 0 4
      core/assets/vendor/ckeditor/lang/cy.js
  29. 0 4
      core/assets/vendor/ckeditor/lang/da.js
  30. 0 4
      core/assets/vendor/ckeditor/lang/de-ch.js
  31. 0 4
      core/assets/vendor/ckeditor/lang/de.js
  32. 0 4
      core/assets/vendor/ckeditor/lang/el.js
  33. 0 4
      core/assets/vendor/ckeditor/lang/en-au.js
  34. 0 4
      core/assets/vendor/ckeditor/lang/en-ca.js
  35. 0 4
      core/assets/vendor/ckeditor/lang/en-gb.js
  36. 0 4
      core/assets/vendor/ckeditor/lang/en.js
  37. 0 4
      core/assets/vendor/ckeditor/lang/eo.js
  38. 0 4
      core/assets/vendor/ckeditor/lang/es-mx.js
  39. 0 4
      core/assets/vendor/ckeditor/lang/es.js
  40. 0 4
      core/assets/vendor/ckeditor/lang/et.js
  41. 0 4
      core/assets/vendor/ckeditor/lang/eu.js
  42. 0 4
      core/assets/vendor/ckeditor/lang/fa.js
  43. 0 4
      core/assets/vendor/ckeditor/lang/fi.js
  44. 0 4
      core/assets/vendor/ckeditor/lang/fo.js
  45. 0 4
      core/assets/vendor/ckeditor/lang/fr-ca.js
  46. 0 4
      core/assets/vendor/ckeditor/lang/fr.js
  47. 0 4
      core/assets/vendor/ckeditor/lang/gl.js
  48. 0 4
      core/assets/vendor/ckeditor/lang/gu.js
  49. 0 4
      core/assets/vendor/ckeditor/lang/he.js
  50. 0 4
      core/assets/vendor/ckeditor/lang/hi.js
  51. 0 4
      core/assets/vendor/ckeditor/lang/hr.js
  52. 0 4
      core/assets/vendor/ckeditor/lang/hu.js
  53. 0 4
      core/assets/vendor/ckeditor/lang/id.js
  54. 0 4
      core/assets/vendor/ckeditor/lang/is.js
  55. 0 4
      core/assets/vendor/ckeditor/lang/it.js
  56. 0 4
      core/assets/vendor/ckeditor/lang/ja.js
  57. 0 4
      core/assets/vendor/ckeditor/lang/ka.js
  58. 0 4
      core/assets/vendor/ckeditor/lang/km.js
  59. 0 4
      core/assets/vendor/ckeditor/lang/ko.js
  60. 0 4
      core/assets/vendor/ckeditor/lang/ku.js
  61. 0 4
      core/assets/vendor/ckeditor/lang/lt.js
  62. 0 4
      core/assets/vendor/ckeditor/lang/lv.js
  63. 0 4
      core/assets/vendor/ckeditor/lang/mk.js
  64. 0 4
      core/assets/vendor/ckeditor/lang/mn.js
  65. 0 4
      core/assets/vendor/ckeditor/lang/ms.js
  66. 0 4
      core/assets/vendor/ckeditor/lang/nb.js
  67. 0 4
      core/assets/vendor/ckeditor/lang/nl.js
  68. 0 4
      core/assets/vendor/ckeditor/lang/no.js
  69. 0 4
      core/assets/vendor/ckeditor/lang/oc.js
  70. 0 4
      core/assets/vendor/ckeditor/lang/pl.js
  71. 0 4
      core/assets/vendor/ckeditor/lang/pt-br.js
  72. 0 4
      core/assets/vendor/ckeditor/lang/pt.js
  73. 0 4
      core/assets/vendor/ckeditor/lang/ro.js
  74. 0 4
      core/assets/vendor/ckeditor/lang/ru.js
  75. 0 4
      core/assets/vendor/ckeditor/lang/si.js
  76. 0 4
      core/assets/vendor/ckeditor/lang/sk.js
  77. 0 4
      core/assets/vendor/ckeditor/lang/sl.js
  78. 0 4
      core/assets/vendor/ckeditor/lang/sq.js
  79. 0 4
      core/assets/vendor/ckeditor/lang/sr-latn.js
  80. 0 4
      core/assets/vendor/ckeditor/lang/sr.js
  81. 0 4
      core/assets/vendor/ckeditor/lang/sv.js
  82. 0 4
      core/assets/vendor/ckeditor/lang/th.js
  83. 0 4
      core/assets/vendor/ckeditor/lang/tr.js
  84. 0 4
      core/assets/vendor/ckeditor/lang/tt.js
  85. 0 4
      core/assets/vendor/ckeditor/lang/ug.js
  86. 0 4
      core/assets/vendor/ckeditor/lang/uk.js
  87. 0 4
      core/assets/vendor/ckeditor/lang/vi.js
  88. 0 4
      core/assets/vendor/ckeditor/lang/zh-cn.js
  89. 0 4
      core/assets/vendor/ckeditor/lang/zh.js
  90. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js
  91. 0 25
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt
  92. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/af.js
  93. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js
  94. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/az.js
  95. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js
  96. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js
  97. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js
  98. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js
  99. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/da.js
  100. 0 4
      core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js

+ 3 - 1
.gitignore

@@ -9,11 +9,13 @@
 
 # Ignore core when managing all of a project's dependencies with Composer
 # including Drupal core.
-# core
+/core/
+
 
 # Core's dependencies are managed with Composer.
 /vendor/
 
+
 # Ignore configuration files that may contain sensitive information.
 sites/*/settings*.php
 sites/*/services*.yml

+ 0 - 68
composer.json

@@ -1,68 +0,0 @@
-{
-    "name": "drupal/drupal",
-    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
-    "type": "project",
-    "license": "GPL-2.0-or-later",
-    "require": {
-        "composer/installers": "^1.0.24",
-        "wikimedia/composer-merge-plugin": "^1.4",
-        "drupal/core": "^8.5",
-        "drupal/console": "^1.7",
-        "drush/drush": "^9"
-    },
-    "replace": {
-    },
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "config": {
-        "preferred-install": "dist",
-        "autoloader-suffix": "Drupal8"
-    },
-    "extra": {
-        "_readme": [
-            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
-            "To change the autoloader you can edit ./autoload.php.",
-            "This file specifies the packages.drupal.org repository.",
-            "You can read more about this composer repository at:",
-            "https://www.drupal.org/node/2718229"
-        ],
-        "merge-plugin": {
-            "include": [
-                "core/composer.json"
-            ],
-            "recurse": true,
-            "replace": false,
-            "merge-extra": false
-        },
-        "installer-paths": {
-            "core": ["type:drupal-core"],
-            "modules/contrib/{$name}": ["type:drupal-module"],
-            "profiles/contrib/{$name}": ["type:drupal-profile"],
-            "themes/contrib/{$name}": ["type:drupal-theme"],
-            "drush/contrib/{$name}": ["type:drupal-drush"],
-            "modules/custom/{$name}": ["type:drupal-custom-module"],
-            "themes/custom/{$name}": ["type:drupal-custom-theme"]
-        }
-    },
-    "autoload": {
-        "psr-4": {
-            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
-        }
-    },
-    "scripts": {
-        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
-        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
-        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
-        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
-        "drupal-phpunit-upgrade-check": "Drupal\\Core\\Composer\\Composer::upgradePHPUnit",
-        "drupal-phpunit-upgrade": "@composer update phpunit/phpunit --with-dependencies --no-progress",
-        "phpcs": "phpcs --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --",
-        "phpcbf": "phpcbf --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --"
-    },
-    "repositories": [
-        {
-            "type": "composer",
-            "url": "https://packages.drupal.org/8"
-        }
-    ]
-}

+ 0 - 8
core/CHANGELOG.txt

@@ -1,8 +0,0 @@
-New minor (feature) releases of Drupal 8 are released every six months and
-patch (bugfix) releases are released every month. More information on the
-Drupal 8 release cycle: https://www.drupal.org/core/release-cycle-overview
-
-* For a full list of fixes in the latest release, visit:
- https://www.drupal.org/8/download
-* API change records for Drupal core:
- https://www.drupal.org/list-changes/drupal

+ 0 - 68
core/COPYRIGHT.txt

@@ -1,68 +0,0 @@
-All Drupal code is Copyright 2001 - 2013 by the original authors.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program as the file LICENSE.txt; if not, please see
-http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
-
-Drupal is a registered trademark of Dries Buytaert.
-
-Drupal includes works under other copyright notices and distributed
-according to the terms of the GNU General Public License or a compatible
-license, including:
-
-Javascript
-
-  Farbtastic - Copyright (c) 2010 Matt Farina
-
-  HTML5 Shiv - Copyright (c) 2012  Alexander Farkas, Jonathan Neal, Paul Irish,
-    and John-David Dalton
-
-  jQuery - Copyright (c) 2011 John Resig
-
-  jQuery Bgiframe - Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
-
-  jQuery BBQ - Copyright (c) 2010 "Cowboy" Ben Alman
-
-  jQuery Cookie - Copyright (c) 2010 Klaus Hartl
-
-  jQuery Form - Copyright (c) 2011 Mike Alsup
-
-  jQuery Globalize - Copyright (c) 2012 Software Freedom Conservancy, Inc.
-
-  jQuery Mousewheel - Copyright (c) 2010 Brandon Aaron
-    (http://brandonaaron.net)
-
-  jQuery Metadata - Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer,
-    Paul McLanahan
-
-  jQuery Once - Copyright (c) 2009 Konstantin Käfer
-
-  jQuery UI - Copyright (c) 2012 by the original authors
-    (http://jqueryui.com/about)
-
-  Sizzle.js - Copyright (c) 2011 The Dojo Foundation (http://sizzlejs.com/)
-
-PHP
-
-  ArchiveTar - Copyright (c) 1997 - 2008 Vincent Blavet
-
-  Doctrine Common - Copyright (c) 2006 - 2012 Alexander Mols, Benjamin Eberlei,
-    Fabio B. Silva, Guilherme Blanco, Johannes M. Schmitt, Jonathan Wage,
-    Lukas K. Smith, Marco Pivetta et al.
-
-  Symfony2 - Copyright (c) 2004 - 2012 Fabien Potencier
-    - YUI - Copyright (c) 2010 Yahoo! Inc.
-    - Zend Framework (1.10dev - 2010-01-24) - Copyright (c) 2005-2010 Zend
-      Technologies USA Inc. (http://www.zend.com)
-
-  Twig - Copyright (c) 2009 Twig Team

+ 0 - 45
core/INSTALL.mysql.txt

@@ -1,45 +0,0 @@
-
-CREATE THE MySQL DATABASE
---------------------------
-
-This step is only necessary if you don't already have a database set up (e.g.,
-by your host). In the following examples, 'username' is an example MySQL user
-which has the CREATE and GRANT privileges. Use the appropriate user name for
-your system.
-
-First, you must create a new database for your Drupal site (here, 'databasename'
-is the name of the new database):
-
-  mysqladmin -u username -p create databasename
-
-MySQL will prompt for the 'username' database password and then create the
-initial database files. Next you must log in and set the access database rights:
-
-  mysql -u username -p
-
-Again, you will be asked for the 'username' database password. At the MySQL
-prompt, enter the following command:
-
-  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
-  CREATE TEMPORARY TABLES ON databasename.*
-  TO 'username'@'localhost' IDENTIFIED BY 'password';
-
-where:
-
- 'databasename' is the name of your database
- 'username' is the username of your MySQL account
- 'localhost' is the web server host where Drupal is installed
- 'password' is the password required for that username
-
-Note: Unless the database user/host combination for your Drupal installation
-has all of the privileges listed above (except possibly CREATE TEMPORARY TABLES,
-which is currently only used by Drupal core automated tests and some
-contributed modules), you will not be able to install or run Drupal.
-
-If successful, MySQL will reply with:
-
-  Query OK, 0 rows affected
-
-If the InnoDB storage engine is available, it will be used for all database
-tables. InnoDB provides features over MyISAM such as transaction support,
-row-level locks, and consistent non-locking reads.

+ 0 - 44
core/INSTALL.pgsql.txt

@@ -1,44 +0,0 @@
-
-CREATE THE PostgreSQL DATABASE
-------------------------------
-
-Note that the database must be created with UTF-8 (Unicode) encoding.
-
-1. CREATE DATABASE USER
-
-   This step is only necessary if you don't already have a user set up (e.g., by
-   your host), or want to create a new user for use with Drupal only. The
-   following command creates a new user named 'username' and asks for a password
-   for that user:
-
-     createuser --pwprompt --encrypted --no-createrole --no-createdb username
-
-   If there are no errors, then the command was successful.
-
-2. CREATE DRUPAL DATABASE
-
-   This step is only necessary if you don't already have a database set up
-   (e.g., by your host) or want to create a new database for use with Drupal
-   only. The following command creates a new database named 'databasename',
-   which is owned by the previously created 'username':
-
-     createdb --encoding=UTF8 --owner=username databasename
-
-   If there are no errors, then the command was successful.
-
-3. CREATE SCHEMA OR SCHEMAS (Optional advanced step)
-
-   Drupal will run across different schemas within your database if you so wish.
-   By default, Drupal runs inside the 'public' schema but you can use $db_prefix
-   inside settings.php to define a schema for Drupal to run inside of, or
-   specify tables that are shared inside of a separate schema. Drupal will not
-   create schemas for you. In fact, the user that Drupal runs as should not be
-   allowed to do this. You'll need to execute the SQL below as a superuser,
-   replace 'username' with the username that Drupal uses to connect to
-   PostgreSQL, and replace 'schema_name' with a schema name you wish to use,
-   such as 'shared':
-
-     CREATE SCHEMA schema_name AUTHORIZATION username;
-
-   Do this for as many schemas as you need. See default.settings.php for
-   instructions on how to set which tables use which schemas.

+ 0 - 42
core/INSTALL.sqlite.txt

@@ -1,42 +0,0 @@
-
-SQLITE REQUIREMENTS
--------------------
-
-To use SQLite with your Drupal installation, the following requirements must be
-met: Server has PHP 5.3.10 or later with PDO, and the PDO SQLite driver must be
-enabled.
-
-If you have not pdo_sqlite available depending on your system there are different ways to install it.
-
-Windows
--------
-Read more about it on http://www.php.net/manual/en/pdo.installation.php
-
-Linux
------
-
-  sudo apt-get install php-sqlite3
-
-SQLITE DATABASE CREATION
-------------------------
-
-The Drupal installer will create the SQLite database for you. The only
-requirement is that the installer must have write permissions to the directory
-where the database file resides. This directory (not just the database file) also
-has to remain writeable by the web server going forward for SQLite to continue to
-be able to operate.
-
-On the "Database configuration" form in the "Database file" field, you must
-supply the exact path to where you wish your database file to reside. It is
-strongly suggested that you choose a path that is outside of the webroot, yet
-ensure that the directory is writeable by the web server.
-
-If you must place your database file in your webroot, you could try using the
-following in your "Database file" field:
-
-  sites/default/files/.ht.sqlite
-
-Note: The .ht in the name will tell Apache to prevent the database from being
-downloaded. Please check that the file is, indeed, protected by your webserver.
-If not, please consult the documentation of your webserver on how to protect a
-file from downloading.

+ 0 - 463
core/INSTALL.txt

@@ -1,463 +0,0 @@
-
-CONTENTS OF THIS FILE
----------------------
-
- * Quickstart
- * Requirements and notes
- * Optional server requirements
- * Installation
- * Reinstall
- * Building and customizing your site
- * Multisite configuration
- * Multilingual configuration
-
-QUICKSTART
-----------------------
-
-Prerequisites:
-- PHP 5.5.9 (or greater) (https://php.net).
-
-In the instructions below, replace the version x.y.z with the specific version
-you wish to download. Example: 8.6.0.zip. You can find the latest stable version
-at https://www.drupal.org/project/drupal.
-
-Download and extract the Drupal package:
-- curl -sS https://ftp.drupal.org/files/projects/drupal-x.y.z.zip --output drupal-x.y.z.zip
-- unzip drupal-x.y.z.zip
-- cd /path/to/drupal-x.y.z
-- php core/scripts/drupal quick-start
-
-Wait… installation can take a minute or two. A successful installation will
-result in opening the new site in your browser.
-
-Run the following command for a list of available options that you may need to
-configure quick-start:
-- php core/scripts/drupal quick-start --help
-
-Follow the instructions in the REINSTALL section below to start over.
-
-NOTE: This quick start solution uses PHP's built-in web server and is not
-intended for production use. Read more about how to run Drupal in a production
-environment below.
-
-REQUIREMENTS AND NOTES
-----------------------
-
-Drupal requires:
-
-- A web server with PHP support, for example:
-  - Apache 2.0 (or greater) (http://httpd.apache.org/).
-  - Nginx 1.1 (or greater) (http://nginx.com/).
-- PHP 5.5.9 (or greater) (http://php.net/). For better security support it is
-  recommended to update to at least 5.5.21 or 5.6.5.
-- One of the following databases:
-  - MySQL 5.5.3 (or greater) (http://www.mysql.com/).
-  - MariaDB 5.5.20 (or greater) (https://mariadb.org/). MariaDB is a fully
-    compatible drop-in replacement for MySQL.
-  - Percona Server 5.5.8 (or greater) (http://www.percona.com/). Percona
-    Server is a backwards-compatible replacement for MySQL.
-  - PostgreSQL 9.1.2 (or greater) (http://www.postgresql.org/).
-  - SQLite 3.7.11 (or greater) (http://www.sqlite.org/).
-
-For more detailed information about Drupal requirements, including a list of
-PHP extensions and configurations that are required, see "System requirements"
-(https://www.drupal.org/requirements) in the Drupal.org online documentation.
-
-For detailed information on how to configure a test server environment using a
-variety of operating systems and web servers, see "Local server setup"
-(https://www.drupal.org/node/157602) in the Drupal.org online documentation.
-
-Note that all directories mentioned in this document are always relative to the
-directory of your Drupal installation, and commands are meant to be run from
-this directory (except for the initial commands that create that directory).
-
-OPTIONAL SERVER REQUIREMENTS
-----------------------------
-
-- If you want to use Drupal's "Clean URLs" feature on an Apache web server, you
-  will need the mod_rewrite module and the ability to use local .htaccess
-  files. For Clean URLs support on IIS, see "Clean URLs with IIS"
-  (https://www.drupal.org/node/3854) in the Drupal.org online documentation.
-
-- If you plan to use XML-based services such as RSS aggregation, you will need
-  PHP's XML extension. This extension is enabled by default on most PHP
-  installations.
-
-- To serve gzip compressed CSS and JS files on an Apache web server, you will
-  need the mod_headers module and the ability to use local .htaccess files.
-
-- Some Drupal functionality (e.g., checking whether Drupal and contributed
-  modules need updates, RSS aggregation, etc.) require that the web server be
-  able to go out to the web and download information. If you want to use this
-  functionality, you need to verify that your hosting provider or server
-  configuration allows the web server to initiate outbound connections. Most web
-  hosting setups allow this.
-
-- PHP 5.5.21 provides features for improved security when used with MySQL. While
-  this is not required, it is highly encouraged to use PHP 5.5.21 or 5.6.5 and
-  above.
-
-INSTALLATION
-------------
-
-1. Download and extract Drupal.
-
-   You can obtain the latest Drupal release from https://www.drupal.org -- the
-   files are available in .tar.gz and .zip formats and can be extracted using
-   most compression tools.
-
-   To download and extract the files, on a typical Unix/Linux command line, use
-   the following commands (assuming you want version x.y.z of Drupal in .tar.gz
-   format):
-
-     wget https://www.drupal.org/files/projects/drupal-x.y.z.tar.gz
-     tar -zxvf drupal-x.y.z.tar.gz
-
-   This will create a new directory drupal-x.y.z/ containing all Drupal files
-   and directories. Then, to move the contents of that directory into a
-   directory within your web server's document root or your public HTML
-   directory, continue with this command:
-
-     mv drupal-x.y.z/* drupal-x.y.z/.htaccess drupal-x.y.z/.csslintrc drupal-x.y.z/.editorconfig drupal-x.y.z/.eslintignore drupal-x.y.z/.eslintrc.json drupal-x.y.z/.gitattributes /path/to/your/installation
-
-   You can also download the latest version of Drupal using Git on the command
-   line and set up a repository by following the instructions at
-   https://www.drupal.org/project/drupal/git-instructions for "Setting up
-   repository for the first time".
-
-   Once you have downloaded Drupal successfully, you may install Composer
-   globally using the instructions at
-   https://getcomposer.org/doc/00-intro.md#globally
-
-   With Composer installed, run the following command from the Drupal web root:
-
-     composer install
-
-2. Create the Drupal database.
-
-   Because Drupal stores all site information in a database, the Drupal
-   installer will attempt to create this database for you. If you create the
-   database manually, you must grant Drupal certain database privileges (such as
-   the ability to create tables).  For details, consult INSTALL.mysql.txt,
-   INSTALL.pgsql.txt, or INSTALL.sqlite.txt. You may also need to consult your
-   web hosting provider for instructions specific to your web host.
-
-   Take note of the username, password, database name, and hostname as you
-   create the database. You will enter this information during the install.
-
-3. Run the install script.
-
-   To run the install script, point your browser to the base URL of your
-   website (e.g., http://www.example.com).
-
-   You will be guided through several screens to set up the database, add the
-   site maintenance account (the first user, also known as user/1), and provide
-   basic web site settings.
-
-   During installation, several files and directories need to be created, which
-   the install script will try to do automatically. However, on some hosting
-   environments, manual steps are required, and the install script will tell
-   you that it cannot proceed until you fix certain issues. This is normal and
-   does not indicate a problem with your server.
-
-   The most common steps you may need to perform are:
-
-   a. Missing files directory.
-
-      The install script will attempt to create a public file storage directory
-      in the default location at sites/default/files (the location of the files
-      directory may be changed after Drupal is installed).
-
-      If auto-creation fails, you can create the directory yourself. (If you are
-      creating a multisite installation, substitute the correct sites directory
-      for sites/default; see the Multisite Configuration section of this file,
-      below.) Sample commands from a Unix/Linux command line:
-
-        mkdir sites/default/files
-        chmod a+w sites/default/files
-
-      Alternatively, you can make the install script work by changing
-      permissions on the sites/default directory. The web server can then
-      create the files directory within it for you.
-
-      For example, on a Unix/Linux command line, you can you can grant everyone
-      (including the web server) permission to write to the sites/default
-      directory with this command:
-
-        chmod a+w sites/default
-
-      Then re-run install.php (e.g. by clicking "try again" at the bottom of
-      the Requirements problem page. Once the files directory is created, you
-      will need to grant everyone (including the web server) permission to
-      write to it with this command:
-
-        chmod a+w sites/default/files
-
-      Be sure to set the permissions for the default directory back after the
-      installation is finished! (Leave the files directory writeable.)
-      Sample command:
-
-        chmod go-w sites/default
-
-   b. Missing settings file.
-
-      Drupal will try to automatically create a settings.php configuration file,
-      which is normally in the directory sites/default (to avoid problems when
-      upgrading, Drupal is not packaged with this file). If auto-creation fails,
-      you will need to create this file yourself, using the file
-      sites/default/default.settings.php as a template.
-
-      For example, on a Unix/Linux command line, you can make a copy of the
-      default.settings.php file with the command:
-
-        cp sites/default/default.settings.php sites/default/settings.php
-
-      Next, grant write privileges to the file to everyone (including the web
-      server) with the command:
-
-        chmod a+w sites/default/settings.php
-
-      Be sure to set the permissions back after the installation is finished!
-      Sample command:
-
-        chmod go-w sites/default/settings.php
-
-   c. Write permissions after install.
-
-      The install script will attempt to write-protect the settings.php file and
-      the sites/default directory after saving your configuration. If this
-      fails, you will be notified, and you can do it manually. Sample commands
-      from a Unix/Linux command line:
-
-        chmod go-w sites/default/settings.php
-        chmod go-w sites/default
-
-4. Verify that the site is working.
-
-   When the install script finishes, you will be logged in with the site
-   maintenance account on a "Welcome" page. If the default Drupal theme is not
-   displaying properly and links on the page result in "Page Not Found" errors,
-   you may be experiencing problems with clean URLs. Visit
-   https://www.drupal.org/getting-started/clean-urls to troubleshoot.
-
-5. Change file system storage settings (optional).
-
-   The files directory created in step 3 is the default file system path used to
-   store all uploaded files, as well as some temporary files created by
-   Drupal. After installation, you can modify the file system path to store
-   uploaded files in a different location.
-
-   It is not necessary to modify this path, but you may wish to change it if:
-
-   - Your site runs multiple Drupal installations from a single codebase (modify
-     the file system path of each installation to a different directory so that
-     uploads do not overlap between installations).
-
-   - Your site runs on a number of web servers behind a load balancer or reverse
-     proxy (modify the file system path on each server to point to a shared file
-     repository).
-
-   - You want to restrict access to uploaded files.
-
-   To modify the file system path:
-
-   a. Ensure that the new location for the path exists and is writable by the
-      web server. For example, to create a new directory named uploads and grant
-      write permissions, use the following commands on a Unix/Linux command
-      line:
-
-        mkdir uploads
-        chmod a+w uploads
-
-   b. Open your settings.php in a plain-text editor, and uncomment (remove the #
-      at the start of line) this line:
-
-        # $settings['file_public_path'] = 'sites/default/files';
-
-      Enter the desired path and save the file.
-
-      If you want to use private file storage, you need to uncomment (remove
-      the # at the start of line) the following line in settings.php:
-
-        # $settings['file_private_path'] = '';
-
-      Enter the path for private files and save the file.
-
-   Changing the file system path after files have been uploaded may cause
-   unexpected problems on an existing site. If you modify the file system path
-   on an existing site, remember to copy all files from the original location
-   to the new location.
-
-6. Revoke documentation file permissions (optional).
-
-   Some administrators suggest making the documentation files, especially
-   CHANGELOG.txt, non-readable so that the exact version of Drupal you are
-   running is slightly more difficult to determine. If you wish to implement
-   this optional security measure, from a Unix/Linux command line you can use
-   the following command:
-
-     chmod a-r core/CHANGELOG.txt
-
-   Note that the example only affects CHANGELOG.txt. To completely hide all
-   documentation files from public view, repeat this command for each of the
-   Drupal documentation files in the installation directory, substituting the
-   name of each file for CHANGELOG.txt in the example.
-
-   For more information on setting file permissions, see "Modifying Linux,
-   Unix, and Mac file permissions" (https://www.drupal.org/node/202483) or
-   "Modifying Windows file permissions" (https://www.drupal.org/node/202491) in
-   the Drupal.org online documentation.
-
-7. Set up independent "cron" maintenance jobs.
-
-   Many Drupal modules have tasks that must be run periodically, including the
-   Search module (building and updating the index used for keyword searching),
-   the Aggregator module (retrieving feeds from other sites), and the System
-   module (performing routine maintenance and pruning of database tables). These
-   tasks are known as "cron maintenance tasks", named after the Unix/Linux
-   "cron" utility.
-
-   When you install Drupal, its built-in cron feature is enabled, which
-   automatically runs the cron tasks periodically, triggered by people visiting
-   pages of your site. You can configure the built-in cron feature by navigating
-   to Administration > Configuration > System > Cron.
-
-   It is also possible to run the cron tasks independent of site visits; this is
-   recommended for most sites. To do this, you will need to set up an automated
-   process to visit the page /cron on your site, which executes the cron
-   tasks.
-
-   The URL of the cron page requires a "cron key" to protect against
-   unauthorized access. Your site's cron key is automatically generated during
-   installation and is specific to your site. The full URL of the page, with the
-   cron key, is available in the "Cron maintenance tasks" section of the Status
-   report page at Administration > Reports > Status report.
-
-   As an example for how to set up this automated process, you can use the
-   crontab utility on Unix/Linux systems. The following crontab line uses the
-   wget command to visit the cron page, and runs each hour, on the hour:
-
-   0 * * * * wget -O - -q -t 1 http://example.com/cron/YOURKEY
-
-   Replace the text "http://example.com/cron/YOURKEY" in the example with the
-   full URL displayed under "Cron maintenance tasks" on the "Status report"
-   page.
-
-   More information about cron maintenance tasks is available at
-   https://www.drupal.org/cron, and sample cron shell scripts can be found in
-   the core/scripts/ directory. (Note that these scripts must be customized like
-   the above example, to add your site-specific cron key and domain name.)
-
-REINSTALL
-------------
-
-Drupal can be reinstalled without downloading and extracting the Drupal release.
-
-1. Drop all the tables in your database.
-
-2. Remove everything in sites/default/files.
-
-3. Remove sites/default/settings.php.
-
-4. Follow the Installation Instructions above starting from Step 3 (Run the
-   install script).
-
-BUILDING AND CUSTOMIZING YOUR SITE
-----------------------------------
-
-A new installation of Drupal defaults to a very basic configuration. To extend
-your site, you use "modules" and "themes". A module is a plugin that adds
-functionality to Drupal, while a theme changes the look of your site. The core
-of Drupal provides several optional modules and themes, and you can download
-more at https://www.drupal.org/project/project_module and
-https://www.drupal.org/project/project_theme
-
-Do not mix downloaded or custom modules and themes with Drupal's core modules
-and themes. Drupal's modules and themes are located in the /core/modules and
-/core/themes directories, while the modules and themes you add to Drupal are
-normally placed in the /modules and /themes directories. If you run a multisite
-installation, you can also place modules and themes in the site-specific
-directories -- see the Multisite Configuration section, below.
-
-Never edit Drupal's core modules and themes; instead, use the hooks available in
-the Drupal API. To modify the behavior of Drupal, develop a module as described
-at https://www.drupal.org/developing/modules. To modify the look of Drupal,
-create a subtheme as described at https://www.drupal.org/node/2165673, or a
-completely new theme as described at https://www.drupal.org/docs/8/theming
-
-MULTISITE CONFIGURATION
------------------------
-
-A single Drupal installation can host several Drupal-powered sites, each with
-its own individual configuration.
-
-For this to work you need the file sites/sites.php to exist. Make a copy of
-the example.sites.php file:
-
-  $ cp sites/example.sites.php sites/sites.php
-
-Additional site configurations are created in subdirectories within the 'sites'
-directory. Each subdirectory must have a 'settings.php' file, which specifies
-the configuration settings. The easiest way to create additional sites is to
-copy file 'default.settings.php' from the 'sites/default' directory into the
-new site directory with file name 'settings.php' and modify as appropriate.
-The new directory name is constructed from the site's URL. The configuration
-for www.example.com could be in 'sites/example.com/settings.php' (note that
-'www.' should be omitted if users can access your site at http://example.com/).
-
-  $ cp sites/default/defaults.settings.php sites/example.com/settings.php
-
-Sites do not have to have a different domain. You can also use subdomains and
-subdirectories for Drupal sites. For example, example.com, sub.example.com, and
-sub.example.com/site3 can all be defined as independent Drupal sites. The setup
-for a configuration such as this would look like the following:
-
-  sites/default/settings.php
-  sites/example.com/settings.php
-  sites/sub.example.com/settings.php
-  sites/sub.example.com.site3/settings.php
-
-When searching for a site configuration (for example www.sub.example.com/site3),
-Drupal will search for configuration files in the following order, using the
-first configuration it finds:
-
-  sites/www.sub.example.com.site3/settings.php
-  sites/sub.example.com.site3/settings.php
-  sites/example.com.site3/settings.php
-  sites/www.sub.example.com/settings.php
-  sites/sub.example.com/settings.php
-  sites/example.com/settings.php
-  sites/default/settings.php
-
-If you are installing on a non-standard port, the port number is treated as the
-deepest subdomain. For example: http://www.example.com:8080/ could be loaded
-from sites/8080.www.example.com/. The port number will be removed according to
-the pattern above if no port-specific configuration is found, just like a real
-subdomain.
-
-Each site configuration can have its own site-specific modules and themes in
-addition to those installed in the standard 'modules' and 'themes' directories.
-To use site-specific modules or themes, simply create a 'modules' or 'themes'
-directory within the site configuration directory. For example, if
-sub.example.com has a custom theme and a custom module that should not be
-accessible to other sites, the setup would look like this:
-
-  sites/sub.example.com/
-    settings.php
-    themes/custom_theme
-    modules/custom_module
-
-For more information about multiple virtual hosts or the configuration
-settings, consult https://www.drupal.org/documentation/install/multi-site
-
-For more information on configuring Drupal's file system path in a multisite
-configuration, see step 6 above.
-
-MULTILINGUAL CONFIGURATION
---------------------------
-
-By default, Drupal is installed in one language, and further languages may be
-installed later.
-
-For detailed instructions, visit
-https://www.drupal.org/documentation/multilingual

+ 0 - 339
core/LICENSE.txt

@@ -1,339 +0,0 @@
-        GNU GENERAL PUBLIC LICENSE
-           Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-          Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-        GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-          NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-         END OF TERMS AND CONDITIONS
-
-      How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.

+ 0 - 529
core/MAINTAINERS.txt

@@ -1,529 +0,0 @@
-Drupal core is built and maintained by the Drupal project community. Everyone is
-encouraged to submit issues and changes (patches) to improve Drupal, and to
-contribute in other ways -- see https://www.drupal.org/contribute to find out
-how.
-
-This file lists the active maintainers. For a list of past maintainers, see:
-https://www.drupal.org/core/maintainers/past
-
-
-Core committers
----------------
-
-The Drupal Core committers oversee the development of Drupal as a whole. The
-core committers for Drupal are (in alphabetical order):
-
-BDFL
-- Dries Buytaert 'dries' https://www.drupal.org/u/dries
-
-Product managers
-- Dries Buytaert 'dries' https://www.drupal.org/u/dries
-- Angela Byron 'webchick' https://www.drupal.org/u/webchick
-- Gábor Hojtsy 'Gábor Hojtsy' https://www.drupal.org/u/gábor-hojtsy
-- Roy Scholten 'yoroy' https://www.drupal.org/u/yoroy
-
-Framework managers
-
-  Backend
-  - Alex Bronstein 'effulgentsia' https://www.drupal.org/u/effulgentsia
-  - Nathaniel Catchpole 'catch' https://www.drupal.org/u/catch
-  - Alex Pott 'alexpott' https://www.drupal.org/u/alexpott
-  - Lee Rowlands 'larowlan' https://www.drupal.org/u/larowlan
-  - (provisional) Francesco Placella 'plach' https://www.drupal.org/u/plach
-
-  Frontend
-  - Lauri Eskola 'lauriii' https://www.drupal.org/u/lauriii
-
-Release managers
-- Nathaniel Catchpole 'catch' https://www.drupal.org/u/catch
-- Chris McCafferty 'cilefen' https://www.drupal.org/u/cilefen
-- Jess Myrbo 'xjm' https://www.drupal.org/u/xjm
-
-
-Subsystem maintainers
----------------------
-
-The Drupal Core subsystem maintainers oversee the development of Drupal
-subsystems. See https://www.drupal.org/contribute/core-maintainers for more
-information on their responsibilities, and to find out how to become a subsystem
-maintainer. Current subsystem maintainers for Drupal 8:
-
-Actions
-- ?
-
-Aggregator
-- ?
-
-Ajax
-- Alex Bronstein 'effulgentsia' https://www.drupal.org/u/effulgentsia
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-
-Asset Library API
-- ?
-
-Authentication and Authorization
-- ?
-
-Automated Cron
-- ?
-
-Ban
-- ?
-
-Bartik
-- Emma Maria Karayiannis 'emma.maria' https://www.drupal.org/u/emma.maria
-
-Base system
-- ?
-
-Basic Auth
-- Juampy Novillo Requena 'juampy' https://www.drupal.org/u/juampy
-
-Batch API
-- John Cook 'John Cook' https://www.drupal.org/u/john-cook
-
-BigPipe
-- Wim Leers 'Wim Leers' https://www.drupal.org/u/wim-leers
-- Fabian Franz 'Fabianx' https://www.drupal.org/u/fabianx
-
-Block
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-- Ben Dougherty 'benjy' https://www.drupal.org/u/benjy
-
-Block Content
-- Lee Rowlands 'larowlan' https://www.drupal.org/u/larowlan
-
-Book
-- Peter Wolanin 'pwolanin' https://www.drupal.org/u/pwolanin
-
-Bootstrap
-- ?
-
-Breakpoint
-- Peter Droogmans 'attiks' https://www.drupal.org/u/attiks
-- Marc Drummond 'mdrummond' https://www.drupal.org/u/mdrummond
-
-Cache
-- Nathaniel Catchpole 'catch' https://www.drupal.org/u/catch
-
-CKEditor
-- Henrik Danielsson 'TwoD' https://www.drupal.org/u/TwoD
-- Wim Leers 'Wim Leers' https://www.drupal.org/u/wim-leers
-- Marek 'mlewand' Lewandowski https://www.drupal.org/u/mlewand
-
-Classy
-- David Hernandez 'davidhernandez' https://www.drupal.org/u/davidhernandez
-
-Color
-- ?
-
-Comment
-- Lee Rowlands 'larowlan' https://www.drupal.org/u/larowlan
-- Andrey Postnikov 'andypost' https://www.drupal.org/u/andypost
-
-Configuration API
-- Alex Pott 'alexpott' https://www.drupal.org/u/alexpott
-- Matthew Tift 'mtift' https://www.drupal.org/u/mtift
-
-Configuration Entity API
-- Alex Pott 'alexpott' https://www.drupal.org/u/alexpott
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-
-Configuration UI
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-
-Configuration Translation
-- Gábor Hojtsy 'Gábor Hojtsy' https://www.drupal.org/u/gábor-hojtsy
-- Tobias Zimmermann 'tstoeckler' https://www.drupal.org/u/tstoeckler
-- Vijayachandran Mani 'vijaycs85' https://www.drupal.org/u/vijaycs85
-
-Contact
-- Lee Rowlands 'larowlan' https://www.drupal.org/u/larowlan
-- Jibran Ijaz 'jibran' https://www.drupal.org/u/jibran
-- Andrey Postnikov 'andypost' https://www.drupal.org/u/andypost
-
-Content Moderation
-- Sam Becker 'Sam152' https://www.drupal.org/u/sam152
-- Tim Millwood 'timmillwood' https://www.drupal.org/u/timmillwood
-
-Content Translation
-- Francesco Placella 'plach' https://www.drupal.org/u/plach
-
-Contextual
-- ?
-
-Cron
-- ?
-
-CSS
-- John Albin Wilkins 'JohnAlbin' https://www.drupal.org/u/johnalbin
-
-Database API
-- ?
-
-  MySQL DB driver
-  - David Strauss 'David Strauss' https://www.drupal.org/u/david-strauss
-
-  PostgreSQL DB driver
-  - ?
-
-  Sqlite DB driver
-  - ?
-
-Database Logging
-- Mariano D'Agostino 'dagmar' https://www.drupal.org/u/dagmar
-
-Database Update API
-- ?
-
-DateTime
-- Jonathan Hedstrom 'jhedstrom' https://www.drupal.org/u/jhedstrom
-- Matthew Donadio 'mpdonadio' https://www.drupal.org/u/mpdonadio
-
-DateTime Range
-- Jonathan Hedstrom 'jhedstrom' https://www.drupal.org/u/jhedstrom
-- Matthew Donadio 'mpdonadio' https://www.drupal.org/u/mpdonadio
-
-Dynamic Page Cache
-- Fabian Franz 'Fabianx' https://www.drupal.org/u/fabianx
-- Wim Leers 'Wim Leers' https://www.drupal.org/u/wim-leers
-
-Editor
-- Henrik Danielsson 'TwoD' https://www.drupal.org/u/TwoD
-- Wim Leers 'Wim Leers' https://www.drupal.org/u/wim-leers
-
-Entity API
-- Nathaniel Catchpole 'catch' https://www.drupal.org/u/catch
-- Hristo Chonov 'hchonov' https://www.drupal.org/u/hchonov
-- Sascha Grossenbacher 'Berdir' https://www.drupal.org/u/berdir
-- Francesco Placella 'plach' https://www.drupal.org/u/plach
-- Tobias Zimmermann 'tstoeckler' https://www.drupal.org/u/tstoeckler
-
-Extension API
-- ?
-
-Field API
-- Andrei Mateescu 'amateescu' https://www.drupal.org/u/amateescu
-
-Field UI
-- Yves Chedemois 'yched' https://www.drupal.org/u/yched
-- Andrei Mateescu 'amateescu' https://www.drupal.org/u/amateescu
-
-File
-- ?
-
-Filter
-- ?
-
-Forum
-- Lee Rowlands 'larowlan' https://www.drupal.org/u/larowlan
-
-Form API
-- Alex Bronstein 'effulgentsia' https://www.drupal.org/u/effulgentsia
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-
-History
-- Andrey Postnikov 'andypost' https://www.drupal.org/u/andypost
-
-Hypertext Application Language (HAL)
-- ?
-
-Help
-- ?
-
-Image
-- Claudiu Cristea 'claudiu.cristea' https://www.drupal.org/u/claudiu.cristea
-
-Inline Form Errors
-- Daniël Smidt 'dmsmidt' https://www.drupal.org/u/dmsmidt
-
-Installer
-- ?
-
-Interface Translation (locale)
-- Gábor Hojtsy 'Gábor Hojtsy' https://www.drupal.org/u/gábor-hojtsy
-
-JavaScript
-- Théodore Biadala 'nod_' https://www.drupal.org/u/nod_
-- Matthew Grill 'drpal' https://www.drupal.org/u/drpal
-- Sally Young 'justafish' https://www.drupal.org/u/justafish
-
-Language
-- Francesco Placella 'plach' https://www.drupal.org/u/plach
-- Daniel F. Kudwien 'sun' https://www.drupal.org/u/sun
-
-Link Field
-- Weber Macedo 'Mac_Weber' https://www.drupal.org/u/mac_weber
-
-Lock
-- ?
-
-Mail
-- ?
-
-Markup
-- ?
-
-Media
-- Sean Blommaert 'seanB' https://www.drupal.org/u/seanb
-- Marcos Cano 'marcoscano' https://www.drupal.org/u/marcoscano
-- Christian Fritsch 'chr.fritsch' https://www.drupal.org/u/chr.fritsch
-- Adam Globus-Hoenich 'phenaproxima' https://www.drupal.org/u/phenaproxima
-
-Menu
-- Daniel Wehner 'dawehner' https://www.drupal.org/u/dawehner
-- Peter Wolanin 'pwolanin' https://www.drupal.org/u/pwolanin
-
-Menu Link Content
-- Daniel Wehner 'dawehner' https://www.drupal.org/u/dawehner
-- Peter Wolanin 'pwolanin' https://www.drupal.org/u/pwolanin
-
-Menu UI
-- ?
-
-Migrate
-- Adam Globus-Hoenich 'phenaproxima' https://www.drupal.org/u/phenaproxima
-- Lucas Hedding 'heddn' https://www.drupal.org/u/heddn
-- Markus Sipilä 'masipila' https://www.drupal.org/u/masipila
-- Vicki Spagnolo 'quietone' https://www.drupal.org/u/quietone
-- Maxime Turcotte 'maxocub' https://www.drupal.org/u/maxocub
-
-Node
-- Tim Millwood 'timmillwood' https://www.drupal.org/u/timmillwood
-
-Node Access
-- Ken Rickard 'agentrickard' https://www.drupal.org/u/agentrickard
-- Moshe Weitzman 'moshe weitzman' https://www.drupal.org/u/moshe-weitzman
-- Jess Myrbo 'xjm' https://www.drupal.org/u/xjm
-
-Options
-- ?
-
-Page Cache
-- Lorenz Schori 'znerol' https://www.drupal.org/u/znerol
-- Fabian Franz 'Fabianx' https://www.drupal.org/u/fabianx
-
-Path
-- Nathaniel Catchpole 'catch' https://www.drupal.org/u/catch
-
-Plugin
-- Kris Vanderwater 'EclipseGc' https://www.drupal.org/u/eclipseGc
-- Alex Bronstein 'effulgentsia' https://www.drupal.org/u/effulgentsia
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-
-Queue
-- James Gilliland 'neclimdul' https://www.drupal.org/u/neclimdul
-
-Quick Edit
-- Wim Leers 'Wim Leers' https://www.drupal.org/u/wim-leers
-- Théodore Biadala 'nod_' https://www.drupal.org/u/nod_
-
-RDF
-- Stéphane Corlosquet 'scor' https://www.drupal.org/u/scor
-
-Render API
-- Alex Bronstein 'effulgentsia' https://www.drupal.org/u/effulgentsia
-- Moshe Weitzman 'moshe weitzman' https://www.drupal.org/u/moshe-weitzman
-
-Request Processing
-- ?
-
-REST
-- Wim Leers 'Wim Leers' https://www.drupal.org/u/wim-leers
-
-Responsive Image
-- Peter Droogmans 'attiks' https://www.drupal.org/u/attiks
-- Marc Drummond 'mdrummond' https://www.drupal.org/u/mdrummond
-- Jelle Sebreghts 'Jelle_S' https://www.drupal.org/u/jelle_s
-
-Routing
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-
-Search
-- Peter Wolanin 'pwolanin' https://www.drupal.org/u/pwolanin
-
-Serialization
-- Damian Lee 'damiankloip' https://www.drupal.org/u/damiankloip
-
-Settings Tray
-- Ted Bowman 'tedbow' https://www.drupal.org/u/tedbow
-
-Seven
-- ?
-
-Shortcut
-- Tobias Zimmermann 'tstoeckler' https://www.drupal.org/u/tstoeckler
-- Jibran Ijaz 'jibran' https://www.drupal.org/u/jibran
-
-Stable
-- ?
-
-Stark
-- John Albin Wilkins 'JohnAlbin' https://www.drupal.org/u/johnalbin
-
-Statistics
-- Tim Millwood 'timmillwood' https://www.drupal.org/u/timmillwood
-
-Syslog
-- Mariano D'Agostino 'dagmar' https://www.drupal.org/u/dagmar
-
-System (module)
-- ?
-
-Taxonomy
-- Jess Myrbo 'xjm' https://www.drupal.org/u/xjm
-- Nathaniel Catchpole 'catch' https://www.drupal.org/u/catch
-
-Telephone
-- ?
-
-Testing framework
-- Alex Pott 'alexpott' https://www.drupal.org/u/alexpott
-- Sascha Grossenbacher 'Berdir' https://www.drupal.org/u/berdir
-- Daniel Wehner 'dawehner' https://www.drupal.org/u/dawehner
-
-Text Field
-- ?
-
-Theme API
-- Alex Bronstein 'effulgentsia' https://www.drupal.org/u/effulgentsia
-- Fabian Franz 'Fabianx' https://www.drupal.org/u/fabianx
-- Joël Pittet 'joelpittet' https://www.drupal.org/u/joelpittet
-- Lauri Eskola 'lauriii' https://www.drupal.org/u/lauriii
-
-Token
-- ?
-
-Toolbar
-- Théodore Biadala 'nod_' https://www.drupal.org/u/nod_
-
-Tour
-- Nick Schuch 'nick_schuch' https://www.drupal.org/u/nick_schuch
-
-Tracker
-- ?
-
-Transliteration
-- Andrei Mateescu 'amateescu' https://www.drupal.org/u/amateescu
-
-Typed Data
-- Wolfgang Ziegler 'fago' https://www.drupal.org/u/fago
-
-Update UI
-- ?
-
-User
-- Moshe Weitzman 'moshe weitzman' https://www.drupal.org/u/moshe-weitzman
-
-Views
-- Daniel Wehner 'dawehner' https://www.drupal.org/u/dawehner
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-- Damian Lee 'damiankloip' https://www.drupal.org/u/damiankloip
-- Jess Myrbo 'xjm' https://www.drupal.org/u/xjm
-- Len Swaneveld 'Lendude' https://www.drupal.org/u/lendude
-
-Workflows
-- Sam Becker 'Sam152' https://www.drupal.org/u/sam152
-
-
-Topic maintainers
------------------
-
-Accessibility
-- Mike Gifford 'mgifford' https://www.drupal.org/u/mgifford
-- Andrew Macpherson 'andrewmacpherson' https://www.drupal.org/u/andrewmacpherson
-
-Documentation
-- ?
-
-Performance
-- Nathaniel Catchpole 'catch' https://www.drupal.org/u/catch
-
-Testing
-- ?
-
-Usability
-- Roy Scholten 'yoroy' https://www.drupal.org/u/yoroy
-- Bojhan Somers 'Bojhan' https://www.drupal.org/u/bojhan
-
-Provisional membership: None at this time.
-
-
-Security team
--------------
-
-To report a security issue, see:
-https://www.drupal.org/security-team/report-issue
-
-The Drupal security team provides Security Advisories for vulnerabilities,
-assists developers in resolving security issues, and provides security
-documentation. See https://www.drupal.org/security-team for more information.
-The security team lead is:
-
-- Michael Hess 'mlhess' https://www.drupal.org/u/mlhess
-
-
-Initiative coordinators
------------------------
-
-The Drupal Core Initiative coordinators oversee approved projects that
-re-architect or otherwise improve large areas of Drupal core. See
-https://www.drupal.org/community-initiatives/drupal-core for more information on
-their responsibilities. The initiative coordinators for Drupal 8 are:
-
-API-first Initiative
-- Wim Leers 'Wim Leers' https://www.drupal.org/u/wim-leers
-- Mateu Aguiló Bosch 'e0ipso' https://www.drupal.org/u/e0ipso
-- Gabe Sullice 'gabesullice' https://www.drupal.org/u/gabesullice
-
-Admin UI & JavaScript Modernisation Initiative
-- Angela Byron 'webchick' https://www.drupal.org/u/webchick
-- Cristina Chumillas 'ckrina' https://www.drupal.org/u/ckrina
-- Matthew Grill 'drpal' https://www.drupal.org/u/drpal
-- Sally Young 'justafish' https://www.drupal.org/u/justafish
-
-Layout Initiative
-- Tim Plunkett 'tim.plunkett' https://www.drupal.org/u/tim.plunkett
-- Emilie Nouveau 'DyanneNova' https://www.drupal.org/u/dyannenova
-
-Media Initiative
-- Janez Urevc 'slashrsm' https://www.drupal.org/u/slashrsm
-
-Out-of-the-Box Initiative
-- Mark Conroy 'markconroy' https://www.drupal.org/u/markconroy
-- Gareth Goodwin 'smaz' https://www.drupal.org/u/smaz
-- Keith Jay 'kjay' https://www.drupal.org/u/kjay
-- Elliot Ward 'eli-t' https://www.drupal.org/u/eli-t
-
-PHPUnit Initiative
-- Daniel Wehner 'dawehner' https://www.drupal.org/u/dawehner
-- (provisional) Michiel Nugter 'michielnugter' https://www.drupal.org/u/michielnugter
-- (provisional) Len Swaneveld 'Lendude' https://www.drupal.org/u/lendude
-
-Workflow Initiative
-- Dick Olsson 'dixon_' https://www.drupal.org/u/dixon_
-
-Provisional membership: None at this time.
-
-
-Core mentoring coordinators
----------------------------
-
-The Drupal Core mentors inspire, enable, and encourage new core contributors.
-See https://www.drupal.org/core-mentoring for more information about mentoring.
-
-Mentoring coordinators recruit and coach other mentors. They work on contributor
-tools, documentation, and processes to make it easier for new contributors to
-get involved. They organize communications and logistics, and actively
-participate in mentoring.
-
-- Mauricio Dinarte 'dinarcon' https://www.drupal.org/u/dinarcon
-- Lucas Hedding 'heddn' https://www.drupal.org/u/heddn
-- Tara King 'sparklingrobots' https://www.drupal.org/u/sparklingrobots
-- Rachel Lawson 'rachel_norfolk' https://www.drupal.org/u/rachel_norfolk
-- Valery Lourie 'valthebald' https://www.drupal.org/u/valthebald
-- Elli Ludwigson 'ekl1773' https://www.drupal.org/u/ekl1773
-- Jess Myrbo 'xjm' https://www.drupal.org/u/xjm
-- Matthew Radcliffe 'mradcliffe' https://www.drupal.org/u/mradcliffe
-
-Provisional membership: None at this time.

+ 0 - 242
core/UPDATE.txt

@@ -1,242 +0,0 @@
-INTRODUCTION
-------------
-This document describes how to update your Drupal site between 8.x.x minor and
-patch versions; for example, from 8.1.2 to 8.1.3, or from 8.3.5 to 8.4.0.
-
-To upgrade from a previous major version (for example, Drupal 6 or 7), the
-process involves importing site configuration and content from your old site
-into a new Drupal 8 site. The tools and process are currently experimental,
-rather than being fully supported, so be sure to test in a development
-environment. You will need to use the core Migrate Drupal UI module which
-provides a user interface for the Migrate and Migrate Drupal modules included
-in core. See https://www.drupal.org/upgrade/migrate for details, and
-https://www.drupal.org/node/2167633 for known issues.
-
-First steps and definitions:
-
-  * If you are upgrading to Drupal version x.y.z, then x is known as the major
-    version number, y is known as the minor version number, and z is known as
-    the patch version number. The download file will be named
-    drupal-x.y.z.tar.gz (or drupal-x.y.z.zip). Previous Drupal versions used
-    only x.y (MAJOR.MINOR) to designate their versions.
-
-  * All directories mentioned in this document are relative to the directory of
-    your Drupal installation.
-
-  * Make a full backup of all files, directories, and your database(s) before
-    starting, and save it outside your Drupal installation directory.
-    Instructions may be found at
-    https://www.drupal.org/upgrade/backing-up-the-db
-
-  * It is wise to try an update or upgrade on a test copy of your site before
-    applying it to your live site. Even minor updates can cause your site's
-    behavior to change.
-
-  * Each new release of Drupal has release notes, which explain the changes made
-    since the previous version and any special instructions needed to update or
-    upgrade to the new version. You can find a link to the release notes for the
-    version you are upgrading or updating to on the Drupal project page
-    (https://www.drupal.org/project/drupal).
-
-UPDATE PROBLEMS
-----------------
-If you encounter errors during this process,
-
-  * Note any error messages you see.
-
-  * Restore your site to its previous state, using the file and database backups
-    you created before you started the update process. Do not attempt to do
-    further updates on a site that had update problems.
-
-  * Consult one of the support options listed on https://www.drupal.org/support
-
-More in-depth information on updating and upgrading can be found at
-https://www.drupal.org/upgrade
-
-MINOR AND PATCH VERSION UPDATES
--------------------------------
-To update from one 8.x.x version of Drupal to any later 8.x.x version, after
-following the instructions in the INTRODUCTION section at the top of this file:
-
-1. Log in as a user with the permission "Administer software updates".
-
-2. Go to Administration > Configuration > Development > Maintenance mode.
-   Enable the "Put site into maintenance mode" checkbox and save the
-   configuration.
-
-3. Determine if your project is managed by Composer.
-
-   On a typical Unix/Linux command line, this can be determined by running the
-   following command (replace /PATH/TO/composer with the appropriate location
-   for your system):
-
-     /PATH/TO/composer info drupal/core
-
-   If this is successful, your project is managed by Composer.
-
-   If you don't have Composer installed or access to the command line, you can
-   check the contents of composer.json. If "drupal/core" is present in the
-   "require" section of your composer.json file, then the project is managed by
-   Composer.
-
-   If the project is not managed by Composer, follow the steps under "UPDATING
-   CODE WITHOUT COMPOSER", otherwise go to "UPDATING CODE WITH COMPOSER".
-
-UPDATING CODE WITH COMPOSER
----------------------------
-1. On a typical Unix/Linux command line, run the following command from the root
-   directory (replace /PATH/TO/composer with the appropriate location for your
-   system):
-
-     /PATH/TO/composer update
-
-   Note, if Composer is not installed you will need to install it in order to
-   update Drupal.
-
-   Note, if you want to only update drupal/core the following command will
-   probably work:
-
-     /PATH/TO/composer update drupal/core symfony/* --with-all-dependencies
-
-2. Check the release notes for the updated version of Drupal to find out if
-   there is a change to default.settings.php.
-
-   You can find the release notes for your version at
-   https://www.drupal.org/project/drupal. At bottom of the project page under
-   "Downloads" use the link for your version of Drupal to view the release
-   notes. If your version is not listed, use the 'View all releases' link. From
-   this page you can scroll down or use the filter to find your version and its
-   release notes.
-
-   If there is a change to default.settings.php, follow these steps:
-
-   - Locate your settings.php file in the /sites/* directory. (Typically
-     sites/default.)
-
-   - Make a backup copy of your settings.php file, with a different file name.
-
-   - Make a copy of the new default.settings.php file, and name the copy
-     settings.php (overwriting your previous settings.php file).
-
-   - Copy the custom and site-specific entries from the backup you made into the
-     new settings.php file. You will definitely need the lines giving the
-     database information, and you will also want to copy in any other
-     customizations you have added.
-
-3. Determine if there are any modifications to files such as .htaccess or
-   robots.txt and re-apply them. The Drupal Scaffold composer plugin
-   (https://github.com/drupal-composer/drupal-scaffold) can help you with
-   excluding files you'd like to always preserve when updating Drupal.
-
-4. Go to the "UPLOADING THE CODE" section
-
-UPDATING CODE WITHOUT COMPOSER
-------------------------------
-1. Remove the 'core' and 'vendor' directories. Also remove all of the files
-   in the top-level directory, except any that you added manually.
-
-   If you made modifications to files like .htaccess, composer.json, or
-   robots.txt you will need to re-apply them from your backup, after the new
-   files are in place.
-
-   This should leave you with the modules, profiles, sites, and themes
-   directories. These directories should only contain code that you've used to
-   extend Drupal.
-
-2. Download the latest Drupal 8.x.x release from https://www.drupal.org/download
-   to a directory outside of your web root. Extract the archive and copy the
-   files into your Drupal directory.
-
-   Copy all the files, but do not accidentally overwrite your modules, profiles,
-   sites, or themes directories.
-
-   On a typical Unix/Linux command line, use the following commands to download
-   and extract:
-
-     wget https://www.drupal.org/files/projects/drupal-x.y.z.tar.gz
-     tar -zxvf drupal-x.y.z.tar.gz
-
-   This creates a new directory drupal-x.y.z/ containing all Drupal files and
-   directories. Copy the files into your Drupal installation directory:
-
-     cp -R drupal-x.y.z/* drupal-x.y.z/.htaccess /path/to/your/installation
-
-   If you do not have command line access to your server, download the archive
-   from https://www.drupal.org using your web browser and extract it locally.
-
-3. Check the release notes for the updated version of Drupal to find out if
-   there is a change to default.settings.php.
-
-   You can find the release notes for your updated version at
-   https://www.drupal.org/project/drupal. At bottom of the project page under
-   "Downloads" use the link for your updated version of Drupal to view the
-   release notes. If your updated version is not listed, use the 'View all
-   releases' link. From this page you can scroll down or use the filter to find
-   your updated version and its release notes.
-
-   If there is a change to default.settings.php, follow these steps:
-
-   - Locate your settings.php file in the /sites/* directory. (Typically
-     sites/default.)
-
-   - Make a backup copy of your settings.php file, with a different file name.
-
-   - Make a copy of the new default.settings.php file, and name the copy
-     settings.php (overwriting your previous settings.php file).
-
-   - Copy the custom and site-specific entries from the backup you made into the
-     new settings.php file. You will definitely need the lines giving the
-     database information, and you will also want to copy in any other
-     customizations you have added.
-
-4. Re-apply any modifications to files such as .htaccess or robots.txt.
-
-   If you have added requirements in composer.json, it is recommended that you
-   re-add the requirements using Composer instead of applying the changes by
-   hand. For example, on a typical Unix/Linux command line, to reinstall the
-   Address module and its dependencies run (replace /PATH/TO/composer with the
-   appropriate location for your system):
-
-     /PATH/TO/composer require drupal/address
-
-   If you do not have command line access to your server, you will need to run
-   the Composer commands locally before uploading the file system to your
-   server.
-
-5. Go to the "UPLOADING THE CODE" section
-
-UPLOADING THE CODE
-------------------
-1. If you updated the code in a different environment from where it is running
-   you need to upload the files to your web root including the vendor/
-   directory.
-
-2. Go to the "UPDATING THE DATABASE" section
-
-UPDATING THE DATABASE
----------------------
-1. Run update.php by visiting http://www.example.com/update.php (replace
-   www.example.com with your domain name). This will update the core database
-   tables.
-
-   If you are unable to access update.php do the following:
-
-   - Open settings.php with a text editor.
-
-   - Find the line that says:
-     $settings['update_free_access'] = FALSE;
-
-   - Change it into:
-     $settings['update_free_access'] = TRUE;
-
-   - Once the update is done, $settings['update_free_access'] must be reverted
-     to FALSE.
-
-2. Go to Administration > Reports > Status report. Verify that everything is
-   working as expected.
-
-3. Ensure that $settings['update_free_access'] is FALSE in settings.php.
-
-4. Go to Administration > Configuration > Development > Maintenance mode.
-   Disable the "Put site into maintenance mode" checkbox and save the
-   configuration.

+ 0 - 1
core/assets/vendor/.gitignore

@@ -1 +0,0 @@
-ckeditor/samples

File diff suppressed because it is too large
+ 0 - 0
core/assets/vendor/backbone/backbone-min.js


File diff suppressed because it is too large
+ 0 - 0
core/assets/vendor/backbone/backbone-min.map


+ 0 - 1894
core/assets/vendor/backbone/backbone.js

@@ -1,1894 +0,0 @@
-//     Backbone.js 1.2.3
-
-//     (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
-//     Backbone may be freely distributed under the MIT license.
-//     For all details and documentation:
-//     http://backbonejs.org
-
-(function(factory) {
-
-  // Establish the root object, `window` (`self`) in the browser, or `global` on the server.
-  // We use `self` instead of `window` for `WebWorker` support.
-  var root = (typeof self == 'object' && self.self == self && self) ||
-            (typeof global == 'object' && global.global == global && global);
-
-  // Set up Backbone appropriately for the environment. Start with AMD.
-  if (typeof define === 'function' && define.amd) {
-    define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
-      // Export global even in AMD case in case this script is loaded with
-      // others that may still expect a global Backbone.
-      root.Backbone = factory(root, exports, _, $);
-    });
-
-  // Next for Node.js or CommonJS. jQuery may not be needed as a module.
-  } else if (typeof exports !== 'undefined') {
-    var _ = require('underscore'), $;
-    try { $ = require('jquery'); } catch(e) {}
-    factory(root, exports, _, $);
-
-  // Finally, as a browser global.
-  } else {
-    root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
-  }
-
-}(function(root, Backbone, _, $) {
-
-  // Initial Setup
-  // -------------
-
-  // Save the previous value of the `Backbone` variable, so that it can be
-  // restored later on, if `noConflict` is used.
-  var previousBackbone = root.Backbone;
-
-  // Create a local reference to a common array method we'll want to use later.
-  var slice = Array.prototype.slice;
-
-  // Current version of the library. Keep in sync with `package.json`.
-  Backbone.VERSION = '1.2.3';
-
-  // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns
-  // the `$` variable.
-  Backbone.$ = $;
-
-  // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable
-  // to its previous owner. Returns a reference to this Backbone object.
-  Backbone.noConflict = function() {
-    root.Backbone = previousBackbone;
-    return this;
-  };
-
-  // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option
-  // will fake `"PATCH"`, `"PUT"` and `"DELETE"` requests via the `_method` parameter and
-  // set a `X-Http-Method-Override` header.
-  Backbone.emulateHTTP = false;
-
-  // Turn on `emulateJSON` to support legacy servers that can't deal with direct
-  // `application/json` requests ... this will encode the body as
-  // `application/x-www-form-urlencoded` instead and will send the model in a
-  // form param named `model`.
-  Backbone.emulateJSON = false;
-
-  // Proxy Backbone class methods to Underscore functions, wrapping the model's
-  // `attributes` object or collection's `models` array behind the scenes.
-  //
-  // collection.filter(function(model) { return model.get('age') > 10 });
-  // collection.each(this.addView);
-  //
-  // `Function#apply` can be slow so we use the method's arg count, if we know it.
-  var addMethod = function(length, method, attribute) {
-    switch (length) {
-      case 1: return function() {
-        return _[method](this[attribute]);
-      };
-      case 2: return function(value) {
-        return _[method](this[attribute], value);
-      };
-      case 3: return function(iteratee, context) {
-        return _[method](this[attribute], cb(iteratee, this), context);
-      };
-      case 4: return function(iteratee, defaultVal, context) {
-        return _[method](this[attribute], cb(iteratee, this), defaultVal, context);
-      };
-      default: return function() {
-        var args = slice.call(arguments);
-        args.unshift(this[attribute]);
-        return _[method].apply(_, args);
-      };
-    }
-  };
-  var addUnderscoreMethods = function(Class, methods, attribute) {
-    _.each(methods, function(length, method) {
-      if (_[method]) Class.prototype[method] = addMethod(length, method, attribute);
-    });
-  };
-
-  // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.
-  var cb = function(iteratee, instance) {
-    if (_.isFunction(iteratee)) return iteratee;
-    if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);
-    if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };
-    return iteratee;
-  };
-  var modelMatcher = function(attrs) {
-    var matcher = _.matches(attrs);
-    return function(model) {
-      return matcher(model.attributes);
-    };
-  };
-
-  // Backbone.Events
-  // ---------------
-
-  // A module that can be mixed in to *any object* in order to provide it with
-  // a custom event channel. You may bind a callback to an event with `on` or
-  // remove with `off`; `trigger`-ing an event fires all callbacks in
-  // succession.
-  //
-  //     var object = {};
-  //     _.extend(object, Backbone.Events);
-  //     object.on('expand', function(){ alert('expanded'); });
-  //     object.trigger('expand');
-  //
-  var Events = Backbone.Events = {};
-
-  // Regular expression used to split event strings.
-  var eventSplitter = /\s+/;
-
-  // Iterates over the standard `event, callback` (as well as the fancy multiple
-  // space-separated events `"change blur", callback` and jQuery-style event
-  // maps `{event: callback}`).
-  var eventsApi = function(iteratee, events, name, callback, opts) {
-    var i = 0, names;
-    if (name && typeof name === 'object') {
-      // Handle event maps.
-      if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;
-      for (names = _.keys(name); i < names.length ; i++) {
-        events = eventsApi(iteratee, events, names[i], name[names[i]], opts);
-      }
-    } else if (name && eventSplitter.test(name)) {
-      // Handle space separated event names by delegating them individually.
-      for (names = name.split(eventSplitter); i < names.length; i++) {
-        events = iteratee(events, names[i], callback, opts);
-      }
-    } else {
-      // Finally, standard events.
-      events = iteratee(events, name, callback, opts);
-    }
-    return events;
-  };
-
-  // Bind an event to a `callback` function. Passing `"all"` will bind
-  // the callback to all events fired.
-  Events.on = function(name, callback, context) {
-    return internalOn(this, name, callback, context);
-  };
-
-  // Guard the `listening` argument from the public API.
-  var internalOn = function(obj, name, callback, context, listening) {
-    obj._events = eventsApi(onApi, obj._events || {}, name, callback, {
-        context: context,
-        ctx: obj,
-        listening: listening
-    });
-
-    if (listening) {
-      var listeners = obj._listeners || (obj._listeners = {});
-      listeners[listening.id] = listening;
-    }
-
-    return obj;
-  };
-
-  // Inversion-of-control versions of `on`. Tell *this* object to listen to
-  // an event in another object... keeping track of what it's listening to
-  // for easier unbinding later.
-  Events.listenTo =  function(obj, name, callback) {
-    if (!obj) return this;
-    var id = obj._listenId || (obj._listenId = _.uniqueId('l'));
-    var listeningTo = this._listeningTo || (this._listeningTo = {});
-    var listening = listeningTo[id];
-
-    // This object is not listening to any other events on `obj` yet.
-    // Setup the necessary references to track the listening callbacks.
-    if (!listening) {
-      var thisId = this._listenId || (this._listenId = _.uniqueId('l'));
-      listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};
-    }
-
-    // Bind callbacks on obj, and keep track of them on listening.
-    internalOn(obj, name, callback, this, listening);
-    return this;
-  };
-
-  // The reducing API that adds a callback to the `events` object.
-  var onApi = function(events, name, callback, options) {
-    if (callback) {
-      var handlers = events[name] || (events[name] = []);
-      var context = options.context, ctx = options.ctx, listening = options.listening;
-      if (listening) listening.count++;
-
-      handlers.push({ callback: callback, context: context, ctx: context || ctx, listening: listening });
-    }
-    return events;
-  };
-
-  // Remove one or many callbacks. If `context` is null, removes all
-  // callbacks with that function. If `callback` is null, removes all
-  // callbacks for the event. If `name` is null, removes all bound
-  // callbacks for all events.
-  Events.off =  function(name, callback, context) {
-    if (!this._events) return this;
-    this._events = eventsApi(offApi, this._events, name, callback, {
-        context: context,
-        listeners: this._listeners
-    });
-    return this;
-  };
-
-  // Tell this object to stop listening to either specific events ... or
-  // to every object it's currently listening to.
-  Events.stopListening =  function(obj, name, callback) {
-    var listeningTo = this._listeningTo;
-    if (!listeningTo) return this;
-
-    var ids = obj ? [obj._listenId] : _.keys(listeningTo);
-
-    for (var i = 0; i < ids.length; i++) {
-      var listening = listeningTo[ids[i]];
-
-      // If listening doesn't exist, this object is not currently
-      // listening to obj. Break out early.
-      if (!listening) break;
-
-      listening.obj.off(name, callback, this);
-    }
-    if (_.isEmpty(listeningTo)) this._listeningTo = void 0;
-
-    return this;
-  };
-
-  // The reducing API that removes a callback from the `events` object.
-  var offApi = function(events, name, callback, options) {
-    if (!events) return;
-
-    var i = 0, listening;
-    var context = options.context, listeners = options.listeners;
-
-    // Delete all events listeners and "drop" events.
-    if (!name && !callback && !context) {
-      var ids = _.keys(listeners);
-      for (; i < ids.length; i++) {
-        listening = listeners[ids[i]];
-        delete listeners[listening.id];
-        delete listening.listeningTo[listening.objId];
-      }
-      return;
-    }
-
-    var names = name ? [name] : _.keys(events);
-    for (; i < names.length; i++) {
-      name = names[i];
-      var handlers = events[name];
-
-      // Bail out if there are no events stored.
-      if (!handlers) break;
-
-      // Replace events if there are any remaining.  Otherwise, clean up.
-      var remaining = [];
-      for (var j = 0; j < handlers.length; j++) {
-        var handler = handlers[j];
-        if (
-          callback && callback !== handler.callback &&
-            callback !== handler.callback._callback ||
-              context && context !== handler.context
-        ) {
-          remaining.push(handler);
-        } else {
-          listening = handler.listening;
-          if (listening && --listening.count === 0) {
-            delete listeners[listening.id];
-            delete listening.listeningTo[listening.objId];
-          }
-        }
-      }
-
-      // Update tail event if the list has any events.  Otherwise, clean up.
-      if (remaining.length) {
-        events[name] = remaining;
-      } else {
-        delete events[name];
-      }
-    }
-    if (_.size(events)) return events;
-  };
-
-  // Bind an event to only be triggered a single time. After the first time
-  // the callback is invoked, its listener will be removed. If multiple events
-  // are passed in using the space-separated syntax, the handler will fire
-  // once for each event, not once for a combination of all events.
-  Events.once =  function(name, callback, context) {
-    // Map the event into a `{event: once}` object.
-    var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));
-    return this.on(events, void 0, context);
-  };
-
-  // Inversion-of-control versions of `once`.
-  Events.listenToOnce =  function(obj, name, callback) {
-    // Map the event into a `{event: once}` object.
-    var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));
-    return this.listenTo(obj, events);
-  };
-
-  // Reduces the event callbacks into a map of `{event: onceWrapper}`.
-  // `offer` unbinds the `onceWrapper` after it has been called.
-  var onceMap = function(map, name, callback, offer) {
-    if (callback) {
-      var once = map[name] = _.once(function() {
-        offer(name, once);
-        callback.apply(this, arguments);
-      });
-      once._callback = callback;
-    }
-    return map;
-  };
-
-  // Trigger one or many events, firing all bound callbacks. Callbacks are
-  // passed the same arguments as `trigger` is, apart from the event name
-  // (unless you're listening on `"all"`, which will cause your callback to
-  // receive the true name of the event as the first argument).
-  Events.trigger =  function(name) {
-    if (!this._events) return this;
-
-    var length = Math.max(0, arguments.length - 1);
-    var args = Array(length);
-    for (var i = 0; i < length; i++) args[i] = arguments[i + 1];
-
-    eventsApi(triggerApi, this._events, name, void 0, args);
-    return this;
-  };
-
-  // Handles triggering the appropriate event callbacks.
-  var triggerApi = function(objEvents, name, cb, args) {
-    if (objEvents) {
-      var events = objEvents[name];
-      var allEvents = objEvents.all;
-      if (events && allEvents) allEvents = allEvents.slice();
-      if (events) triggerEvents(events, args);
-      if (allEvents) triggerEvents(allEvents, [name].concat(args));
-    }
-    return objEvents;
-  };
-
-  // A difficult-to-believe, but optimized internal dispatch function for
-  // triggering events. Tries to keep the usual cases speedy (most internal
-  // Backbone events have 3 arguments).
-  var triggerEvents = function(events, args) {
-    var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];
-    switch (args.length) {
-      case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;
-      case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;
-      case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;
-      case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;
-      default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;
-    }
-  };
-
-  // Aliases for backwards compatibility.
-  Events.bind   = Events.on;
-  Events.unbind = Events.off;
-
-  // Allow the `Backbone` object to serve as a global event bus, for folks who
-  // want global "pubsub" in a convenient place.
-  _.extend(Backbone, Events);
-
-  // Backbone.Model
-  // --------------
-
-  // Backbone **Models** are the basic data object in the framework --
-  // frequently representing a row in a table in a database on your server.
-  // A discrete chunk of data and a bunch of useful, related methods for
-  // performing computations and transformations on that data.
-
-  // Create a new model with the specified attributes. A client id (`cid`)
-  // is automatically generated and assigned for you.
-  var Model = Backbone.Model = function(attributes, options) {
-    var attrs = attributes || {};
-    options || (options = {});
-    this.cid = _.uniqueId(this.cidPrefix);
-    this.attributes = {};
-    if (options.collection) this.collection = options.collection;
-    if (options.parse) attrs = this.parse(attrs, options) || {};
-    attrs = _.defaults({}, attrs, _.result(this, 'defaults'));
-    this.set(attrs, options);
-    this.changed = {};
-    this.initialize.apply(this, arguments);
-  };
-
-  // Attach all inheritable methods to the Model prototype.
-  _.extend(Model.prototype, Events, {
-
-    // A hash of attributes whose current and previous value differ.
-    changed: null,
-
-    // The value returned during the last failed validation.
-    validationError: null,
-
-    // The default name for the JSON `id` attribute is `"id"`. MongoDB and
-    // CouchDB users may want to set this to `"_id"`.
-    idAttribute: 'id',
-
-    // The prefix is used to create the client id which is used to identify models locally.
-    // You may want to override this if you're experiencing name clashes with model ids.
-    cidPrefix: 'c',
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // Return a copy of the model's `attributes` object.
-    toJSON: function(options) {
-      return _.clone(this.attributes);
-    },
-
-    // Proxy `Backbone.sync` by default -- but override this if you need
-    // custom syncing semantics for *this* particular model.
-    sync: function() {
-      return Backbone.sync.apply(this, arguments);
-    },
-
-    // Get the value of an attribute.
-    get: function(attr) {
-      return this.attributes[attr];
-    },
-
-    // Get the HTML-escaped value of an attribute.
-    escape: function(attr) {
-      return _.escape(this.get(attr));
-    },
-
-    // Returns `true` if the attribute contains a value that is not null
-    // or undefined.
-    has: function(attr) {
-      return this.get(attr) != null;
-    },
-
-    // Special-cased proxy to underscore's `_.matches` method.
-    matches: function(attrs) {
-      return !!_.iteratee(attrs, this)(this.attributes);
-    },
-
-    // Set a hash of model attributes on the object, firing `"change"`. This is
-    // the core primitive operation of a model, updating the data and notifying
-    // anyone who needs to know about the change in state. The heart of the beast.
-    set: function(key, val, options) {
-      if (key == null) return this;
-
-      // Handle both `"key", value` and `{key: value}` -style arguments.
-      var attrs;
-      if (typeof key === 'object') {
-        attrs = key;
-        options = val;
-      } else {
-        (attrs = {})[key] = val;
-      }
-
-      options || (options = {});
-
-      // Run validation.
-      if (!this._validate(attrs, options)) return false;
-
-      // Extract attributes and options.
-      var unset      = options.unset;
-      var silent     = options.silent;
-      var changes    = [];
-      var changing   = this._changing;
-      this._changing = true;
-
-      if (!changing) {
-        this._previousAttributes = _.clone(this.attributes);
-        this.changed = {};
-      }
-
-      var current = this.attributes;
-      var changed = this.changed;
-      var prev    = this._previousAttributes;
-
-      // For each `set` attribute, update or delete the current value.
-      for (var attr in attrs) {
-        val = attrs[attr];
-        if (!_.isEqual(current[attr], val)) changes.push(attr);
-        if (!_.isEqual(prev[attr], val)) {
-          changed[attr] = val;
-        } else {
-          delete changed[attr];
-        }
-        unset ? delete current[attr] : current[attr] = val;
-      }
-
-      // Update the `id`.
-      this.id = this.get(this.idAttribute);
-
-      // Trigger all relevant attribute changes.
-      if (!silent) {
-        if (changes.length) this._pending = options;
-        for (var i = 0; i < changes.length; i++) {
-          this.trigger('change:' + changes[i], this, current[changes[i]], options);
-        }
-      }
-
-      // You might be wondering why there's a `while` loop here. Changes can
-      // be recursively nested within `"change"` events.
-      if (changing) return this;
-      if (!silent) {
-        while (this._pending) {
-          options = this._pending;
-          this._pending = false;
-          this.trigger('change', this, options);
-        }
-      }
-      this._pending = false;
-      this._changing = false;
-      return this;
-    },
-
-    // Remove an attribute from the model, firing `"change"`. `unset` is a noop
-    // if the attribute doesn't exist.
-    unset: function(attr, options) {
-      return this.set(attr, void 0, _.extend({}, options, {unset: true}));
-    },
-
-    // Clear all attributes on the model, firing `"change"`.
-    clear: function(options) {
-      var attrs = {};
-      for (var key in this.attributes) attrs[key] = void 0;
-      return this.set(attrs, _.extend({}, options, {unset: true}));
-    },
-
-    // Determine if the model has changed since the last `"change"` event.
-    // If you specify an attribute name, determine if that attribute has changed.
-    hasChanged: function(attr) {
-      if (attr == null) return !_.isEmpty(this.changed);
-      return _.has(this.changed, attr);
-    },
-
-    // Return an object containing all the attributes that have changed, or
-    // false if there are no changed attributes. Useful for determining what
-    // parts of a view need to be updated and/or what attributes need to be
-    // persisted to the server. Unset attributes will be set to undefined.
-    // You can also pass an attributes object to diff against the model,
-    // determining if there *would be* a change.
-    changedAttributes: function(diff) {
-      if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;
-      var old = this._changing ? this._previousAttributes : this.attributes;
-      var changed = {};
-      for (var attr in diff) {
-        var val = diff[attr];
-        if (_.isEqual(old[attr], val)) continue;
-        changed[attr] = val;
-      }
-      return _.size(changed) ? changed : false;
-    },
-
-    // Get the previous value of an attribute, recorded at the time the last
-    // `"change"` event was fired.
-    previous: function(attr) {
-      if (attr == null || !this._previousAttributes) return null;
-      return this._previousAttributes[attr];
-    },
-
-    // Get all of the attributes of the model at the time of the previous
-    // `"change"` event.
-    previousAttributes: function() {
-      return _.clone(this._previousAttributes);
-    },
-
-    // Fetch the model from the server, merging the response with the model's
-    // local attributes. Any changed attributes will trigger a "change" event.
-    fetch: function(options) {
-      options = _.extend({parse: true}, options);
-      var model = this;
-      var success = options.success;
-      options.success = function(resp) {
-        var serverAttrs = options.parse ? model.parse(resp, options) : resp;
-        if (!model.set(serverAttrs, options)) return false;
-        if (success) success.call(options.context, model, resp, options);
-        model.trigger('sync', model, resp, options);
-      };
-      wrapError(this, options);
-      return this.sync('read', this, options);
-    },
-
-    // Set a hash of model attributes, and sync the model to the server.
-    // If the server returns an attributes hash that differs, the model's
-    // state will be `set` again.
-    save: function(key, val, options) {
-      // Handle both `"key", value` and `{key: value}` -style arguments.
-      var attrs;
-      if (key == null || typeof key === 'object') {
-        attrs = key;
-        options = val;
-      } else {
-        (attrs = {})[key] = val;
-      }
-
-      options = _.extend({validate: true, parse: true}, options);
-      var wait = options.wait;
-
-      // If we're not waiting and attributes exist, save acts as
-      // `set(attr).save(null, opts)` with validation. Otherwise, check if
-      // the model will be valid when the attributes, if any, are set.
-      if (attrs && !wait) {
-        if (!this.set(attrs, options)) return false;
-      } else {
-        if (!this._validate(attrs, options)) return false;
-      }
-
-      // After a successful server-side save, the client is (optionally)
-      // updated with the server-side state.
-      var model = this;
-      var success = options.success;
-      var attributes = this.attributes;
-      options.success = function(resp) {
-        // Ensure attributes are restored during synchronous saves.
-        model.attributes = attributes;
-        var serverAttrs = options.parse ? model.parse(resp, options) : resp;
-        if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);
-        if (serverAttrs && !model.set(serverAttrs, options)) return false;
-        if (success) success.call(options.context, model, resp, options);
-        model.trigger('sync', model, resp, options);
-      };
-      wrapError(this, options);
-
-      // Set temporary attributes if `{wait: true}` to properly find new ids.
-      if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);
-
-      var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');
-      if (method === 'patch' && !options.attrs) options.attrs = attrs;
-      var xhr = this.sync(method, this, options);
-
-      // Restore attributes.
-      this.attributes = attributes;
-
-      return xhr;
-    },
-
-    // Destroy this model on the server if it was already persisted.
-    // Optimistically removes the model from its collection, if it has one.
-    // If `wait: true` is passed, waits for the server to respond before removal.
-    destroy: function(options) {
-      options = options ? _.clone(options) : {};
-      var model = this;
-      var success = options.success;
-      var wait = options.wait;
-
-      var destroy = function() {
-        model.stopListening();
-        model.trigger('destroy', model, model.collection, options);
-      };
-
-      options.success = function(resp) {
-        if (wait) destroy();
-        if (success) success.call(options.context, model, resp, options);
-        if (!model.isNew()) model.trigger('sync', model, resp, options);
-      };
-
-      var xhr = false;
-      if (this.isNew()) {
-        _.defer(options.success);
-      } else {
-        wrapError(this, options);
-        xhr = this.sync('delete', this, options);
-      }
-      if (!wait) destroy();
-      return xhr;
-    },
-
-    // Default URL for the model's representation on the server -- if you're
-    // using Backbone's restful methods, override this to change the endpoint
-    // that will be called.
-    url: function() {
-      var base =
-        _.result(this, 'urlRoot') ||
-        _.result(this.collection, 'url') ||
-        urlError();
-      if (this.isNew()) return base;
-      var id = this.get(this.idAttribute);
-      return base.replace(/[^\/]$/, '$&/') + encodeURIComponent(id);
-    },
-
-    // **parse** converts a response into the hash of attributes to be `set` on
-    // the model. The default implementation is just to pass the response along.
-    parse: function(resp, options) {
-      return resp;
-    },
-
-    // Create a new model with identical attributes to this one.
-    clone: function() {
-      return new this.constructor(this.attributes);
-    },
-
-    // A model is new if it has never been saved to the server, and lacks an id.
-    isNew: function() {
-      return !this.has(this.idAttribute);
-    },
-
-    // Check if the model is currently in a valid state.
-    isValid: function(options) {
-      return this._validate({}, _.defaults({validate: true}, options));
-    },
-
-    // Run validation against the next complete set of model attributes,
-    // returning `true` if all is well. Otherwise, fire an `"invalid"` event.
-    _validate: function(attrs, options) {
-      if (!options.validate || !this.validate) return true;
-      attrs = _.extend({}, this.attributes, attrs);
-      var error = this.validationError = this.validate(attrs, options) || null;
-      if (!error) return true;
-      this.trigger('invalid', this, error, _.extend(options, {validationError: error}));
-      return false;
-    }
-
-  });
-
-  // Underscore methods that we want to implement on the Model, mapped to the
-  // number of arguments they take.
-  var modelMethods = { keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,
-      omit: 0, chain: 1, isEmpty: 1 };
-
-  // Mix in each Underscore method as a proxy to `Model#attributes`.
-  addUnderscoreMethods(Model, modelMethods, 'attributes');
-
-  // Backbone.Collection
-  // -------------------
-
-  // If models tend to represent a single row of data, a Backbone Collection is
-  // more analogous to a table full of data ... or a small slice or page of that
-  // table, or a collection of rows that belong together for a particular reason
-  // -- all of the messages in this particular folder, all of the documents
-  // belonging to this particular author, and so on. Collections maintain
-  // indexes of their models, both in order, and for lookup by `id`.
-
-  // Create a new **Collection**, perhaps to contain a specific type of `model`.
-  // If a `comparator` is specified, the Collection will maintain
-  // its models in sort order, as they're added and removed.
-  var Collection = Backbone.Collection = function(models, options) {
-    options || (options = {});
-    if (options.model) this.model = options.model;
-    if (options.comparator !== void 0) this.comparator = options.comparator;
-    this._reset();
-    this.initialize.apply(this, arguments);
-    if (models) this.reset(models, _.extend({silent: true}, options));
-  };
-
-  // Default options for `Collection#set`.
-  var setOptions = {add: true, remove: true, merge: true};
-  var addOptions = {add: true, remove: false};
-
-  // Splices `insert` into `array` at index `at`.
-  var splice = function(array, insert, at) {
-    at = Math.min(Math.max(at, 0), array.length);
-    var tail = Array(array.length - at);
-    var length = insert.length;
-    for (var i = 0; i < tail.length; i++) tail[i] = array[i + at];
-    for (i = 0; i < length; i++) array[i + at] = insert[i];
-    for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];
-  };
-
-  // Define the Collection's inheritable methods.
-  _.extend(Collection.prototype, Events, {
-
-    // The default model for a collection is just a **Backbone.Model**.
-    // This should be overridden in most cases.
-    model: Model,
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // The JSON representation of a Collection is an array of the
-    // models' attributes.
-    toJSON: function(options) {
-      return this.map(function(model) { return model.toJSON(options); });
-    },
-
-    // Proxy `Backbone.sync` by default.
-    sync: function() {
-      return Backbone.sync.apply(this, arguments);
-    },
-
-    // Add a model, or list of models to the set. `models` may be Backbone
-    // Models or raw JavaScript objects to be converted to Models, or any
-    // combination of the two.
-    add: function(models, options) {
-      return this.set(models, _.extend({merge: false}, options, addOptions));
-    },
-
-    // Remove a model, or a list of models from the set.
-    remove: function(models, options) {
-      options = _.extend({}, options);
-      var singular = !_.isArray(models);
-      models = singular ? [models] : _.clone(models);
-      var removed = this._removeModels(models, options);
-      if (!options.silent && removed) this.trigger('update', this, options);
-      return singular ? removed[0] : removed;
-    },
-
-    // Update a collection by `set`-ing a new list of models, adding new ones,
-    // removing models that are no longer present, and merging models that
-    // already exist in the collection, as necessary. Similar to **Model#set**,
-    // the core operation for updating the data contained by the collection.
-    set: function(models, options) {
-      if (models == null) return;
-
-      options = _.defaults({}, options, setOptions);
-      if (options.parse && !this._isModel(models)) models = this.parse(models, options);
-
-      var singular = !_.isArray(models);
-      models = singular ? [models] : models.slice();
-
-      var at = options.at;
-      if (at != null) at = +at;
-      if (at < 0) at += this.length + 1;
-
-      var set = [];
-      var toAdd = [];
-      var toRemove = [];
-      var modelMap = {};
-
-      var add = options.add;
-      var merge = options.merge;
-      var remove = options.remove;
-
-      var sort = false;
-      var sortable = this.comparator && (at == null) && options.sort !== false;
-      var sortAttr = _.isString(this.comparator) ? this.comparator : null;
-
-      // Turn bare objects into model references, and prevent invalid models
-      // from being added.
-      var model;
-      for (var i = 0; i < models.length; i++) {
-        model = models[i];
-
-        // If a duplicate is found, prevent it from being added and
-        // optionally merge it into the existing model.
-        var existing = this.get(model);
-        if (existing) {
-          if (merge && model !== existing) {
-            var attrs = this._isModel(model) ? model.attributes : model;
-            if (options.parse) attrs = existing.parse(attrs, options);
-            existing.set(attrs, options);
-            if (sortable && !sort) sort = existing.hasChanged(sortAttr);
-          }
-          if (!modelMap[existing.cid]) {
-            modelMap[existing.cid] = true;
-            set.push(existing);
-          }
-          models[i] = existing;
-
-        // If this is a new, valid model, push it to the `toAdd` list.
-        } else if (add) {
-          model = models[i] = this._prepareModel(model, options);
-          if (model) {
-            toAdd.push(model);
-            this._addReference(model, options);
-            modelMap[model.cid] = true;
-            set.push(model);
-          }
-        }
-      }
-
-      // Remove stale models.
-      if (remove) {
-        for (i = 0; i < this.length; i++) {
-          model = this.models[i];
-          if (!modelMap[model.cid]) toRemove.push(model);
-        }
-        if (toRemove.length) this._removeModels(toRemove, options);
-      }
-
-      // See if sorting is needed, update `length` and splice in new models.
-      var orderChanged = false;
-      var replace = !sortable && add && remove;
-      if (set.length && replace) {
-        orderChanged = this.length != set.length || _.some(this.models, function(model, index) {
-          return model !== set[index];
-        });
-        this.models.length = 0;
-        splice(this.models, set, 0);
-        this.length = this.models.length;
-      } else if (toAdd.length) {
-        if (sortable) sort = true;
-        splice(this.models, toAdd, at == null ? this.length : at);
-        this.length = this.models.length;
-      }
-
-      // Silently sort the collection if appropriate.
-      if (sort) this.sort({silent: true});
-
-      // Unless silenced, it's time to fire all appropriate add/sort events.
-      if (!options.silent) {
-        for (i = 0; i < toAdd.length; i++) {
-          if (at != null) options.index = at + i;
-          model = toAdd[i];
-          model.trigger('add', model, this, options);
-        }
-        if (sort || orderChanged) this.trigger('sort', this, options);
-        if (toAdd.length || toRemove.length) this.trigger('update', this, options);
-      }
-
-      // Return the added (or merged) model (or models).
-      return singular ? models[0] : models;
-    },
-
-    // When you have more items than you want to add or remove individually,
-    // you can reset the entire set with a new list of models, without firing
-    // any granular `add` or `remove` events. Fires `reset` when finished.
-    // Useful for bulk operations and optimizations.
-    reset: function(models, options) {
-      options = options ? _.clone(options) : {};
-      for (var i = 0; i < this.models.length; i++) {
-        this._removeReference(this.models[i], options);
-      }
-      options.previousModels = this.models;
-      this._reset();
-      models = this.add(models, _.extend({silent: true}, options));
-      if (!options.silent) this.trigger('reset', this, options);
-      return models;
-    },
-
-    // Add a model to the end of the collection.
-    push: function(model, options) {
-      return this.add(model, _.extend({at: this.length}, options));
-    },
-
-    // Remove a model from the end of the collection.
-    pop: function(options) {
-      var model = this.at(this.length - 1);
-      return this.remove(model, options);
-    },
-
-    // Add a model to the beginning of the collection.
-    unshift: function(model, options) {
-      return this.add(model, _.extend({at: 0}, options));
-    },
-
-    // Remove a model from the beginning of the collection.
-    shift: function(options) {
-      var model = this.at(0);
-      return this.remove(model, options);
-    },
-
-    // Slice out a sub-array of models from the collection.
-    slice: function() {
-      return slice.apply(this.models, arguments);
-    },
-
-    // Get a model from the set by id.
-    get: function(obj) {
-      if (obj == null) return void 0;
-      var id = this.modelId(this._isModel(obj) ? obj.attributes : obj);
-      return this._byId[obj] || this._byId[id] || this._byId[obj.cid];
-    },
-
-    // Get the model at the given index.
-    at: function(index) {
-      if (index < 0) index += this.length;
-      return this.models[index];
-    },
-
-    // Return models with matching attributes. Useful for simple cases of
-    // `filter`.
-    where: function(attrs, first) {
-      return this[first ? 'find' : 'filter'](attrs);
-    },
-
-    // Return the first model with matching attributes. Useful for simple cases
-    // of `find`.
-    findWhere: function(attrs) {
-      return this.where(attrs, true);
-    },
-
-    // Force the collection to re-sort itself. You don't need to call this under
-    // normal circumstances, as the set will maintain sort order as each item
-    // is added.
-    sort: function(options) {
-      var comparator = this.comparator;
-      if (!comparator) throw new Error('Cannot sort a set without a comparator');
-      options || (options = {});
-
-      var length = comparator.length;
-      if (_.isFunction(comparator)) comparator = _.bind(comparator, this);
-
-      // Run sort based on type of `comparator`.
-      if (length === 1 || _.isString(comparator)) {
-        this.models = this.sortBy(comparator);
-      } else {
-        this.models.sort(comparator);
-      }
-      if (!options.silent) this.trigger('sort', this, options);
-      return this;
-    },
-
-    // Pluck an attribute from each model in the collection.
-    pluck: function(attr) {
-      return _.invoke(this.models, 'get', attr);
-    },
-
-    // Fetch the default set of models for this collection, resetting the
-    // collection when they arrive. If `reset: true` is passed, the response
-    // data will be passed through the `reset` method instead of `set`.
-    fetch: function(options) {
-      options = _.extend({parse: true}, options);
-      var success = options.success;
-      var collection = this;
-      options.success = function(resp) {
-        var method = options.reset ? 'reset' : 'set';
-        collection[method](resp, options);
-        if (success) success.call(options.context, collection, resp, options);
-        collection.trigger('sync', collection, resp, options);
-      };
-      wrapError(this, options);
-      return this.sync('read', this, options);
-    },
-
-    // Create a new instance of a model in this collection. Add the model to the
-    // collection immediately, unless `wait: true` is passed, in which case we
-    // wait for the server to agree.
-    create: function(model, options) {
-      options = options ? _.clone(options) : {};
-      var wait = options.wait;
-      model = this._prepareModel(model, options);
-      if (!model) return false;
-      if (!wait) this.add(model, options);
-      var collection = this;
-      var success = options.success;
-      options.success = function(model, resp, callbackOpts) {
-        if (wait) collection.add(model, callbackOpts);
-        if (success) success.call(callbackOpts.context, model, resp, callbackOpts);
-      };
-      model.save(null, options);
-      return model;
-    },
-
-    // **parse** converts a response into a list of models to be added to the
-    // collection. The default implementation is just to pass it through.
-    parse: function(resp, options) {
-      return resp;
-    },
-
-    // Create a new collection with an identical list of models as this one.
-    clone: function() {
-      return new this.constructor(this.models, {
-        model: this.model,
-        comparator: this.comparator
-      });
-    },
-
-    // Define how to uniquely identify models in the collection.
-    modelId: function (attrs) {
-      return attrs[this.model.prototype.idAttribute || 'id'];
-    },
-
-    // Private method to reset all internal state. Called when the collection
-    // is first initialized or reset.
-    _reset: function() {
-      this.length = 0;
-      this.models = [];
-      this._byId  = {};
-    },
-
-    // Prepare a hash of attributes (or other model) to be added to this
-    // collection.
-    _prepareModel: function(attrs, options) {
-      if (this._isModel(attrs)) {
-        if (!attrs.collection) attrs.collection = this;
-        return attrs;
-      }
-      options = options ? _.clone(options) : {};
-      options.collection = this;
-      var model = new this.model(attrs, options);
-      if (!model.validationError) return model;
-      this.trigger('invalid', this, model.validationError, options);
-      return false;
-    },
-
-    // Internal method called by both remove and set.
-    _removeModels: function(models, options) {
-      var removed = [];
-      for (var i = 0; i < models.length; i++) {
-        var model = this.get(models[i]);
-        if (!model) continue;
-
-        var index = this.indexOf(model);
-        this.models.splice(index, 1);
-        this.length--;
-
-        if (!options.silent) {
-          options.index = index;
-          model.trigger('remove', model, this, options);
-        }
-
-        removed.push(model);
-        this._removeReference(model, options);
-      }
-      return removed.length ? removed : false;
-    },
-
-    // Method for checking whether an object should be considered a model for
-    // the purposes of adding to the collection.
-    _isModel: function (model) {
-      return model instanceof Model;
-    },
-
-    // Internal method to create a model's ties to a collection.
-    _addReference: function(model, options) {
-      this._byId[model.cid] = model;
-      var id = this.modelId(model.attributes);
-      if (id != null) this._byId[id] = model;
-      model.on('all', this._onModelEvent, this);
-    },
-
-    // Internal method to sever a model's ties to a collection.
-    _removeReference: function(model, options) {
-      delete this._byId[model.cid];
-      var id = this.modelId(model.attributes);
-      if (id != null) delete this._byId[id];
-      if (this === model.collection) delete model.collection;
-      model.off('all', this._onModelEvent, this);
-    },
-
-    // Internal method called every time a model in the set fires an event.
-    // Sets need to update their indexes when models change ids. All other
-    // events simply proxy through. "add" and "remove" events that originate
-    // in other collections are ignored.
-    _onModelEvent: function(event, model, collection, options) {
-      if ((event === 'add' || event === 'remove') && collection !== this) return;
-      if (event === 'destroy') this.remove(model, options);
-      if (event === 'change') {
-        var prevId = this.modelId(model.previousAttributes());
-        var id = this.modelId(model.attributes);
-        if (prevId !== id) {
-          if (prevId != null) delete this._byId[prevId];
-          if (id != null) this._byId[id] = model;
-        }
-      }
-      this.trigger.apply(this, arguments);
-    }
-
-  });
-
-  // Underscore methods that we want to implement on the Collection.
-  // 90% of the core usefulness of Backbone Collections is actually implemented
-  // right here:
-  var collectionMethods = { forEach: 3, each: 3, map: 3, collect: 3, reduce: 4,
-      foldl: 4, inject: 4, reduceRight: 4, foldr: 4, find: 3, detect: 3, filter: 3,
-      select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,
-      contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,
-      head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,
-      without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,
-      isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,
-      sortBy: 3, indexBy: 3};
-
-  // Mix in each Underscore method as a proxy to `Collection#models`.
-  addUnderscoreMethods(Collection, collectionMethods, 'models');
-
-  // Backbone.View
-  // -------------
-
-  // Backbone Views are almost more convention than they are actual code. A View
-  // is simply a JavaScript object that represents a logical chunk of UI in the
-  // DOM. This might be a single item, an entire list, a sidebar or panel, or
-  // even the surrounding frame which wraps your whole app. Defining a chunk of
-  // UI as a **View** allows you to define your DOM events declaratively, without
-  // having to worry about render order ... and makes it easy for the view to
-  // react to specific changes in the state of your models.
-
-  // Creating a Backbone.View creates its initial element outside of the DOM,
-  // if an existing element is not provided...
-  var View = Backbone.View = function(options) {
-    this.cid = _.uniqueId('view');
-    _.extend(this, _.pick(options, viewOptions));
-    this._ensureElement();
-    this.initialize.apply(this, arguments);
-  };
-
-  // Cached regex to split keys for `delegate`.
-  var delegateEventSplitter = /^(\S+)\s*(.*)$/;
-
-  // List of view options to be set as properties.
-  var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];
-
-  // Set up all inheritable **Backbone.View** properties and methods.
-  _.extend(View.prototype, Events, {
-
-    // The default `tagName` of a View's element is `"div"`.
-    tagName: 'div',
-
-    // jQuery delegate for element lookup, scoped to DOM elements within the
-    // current view. This should be preferred to global lookups where possible.
-    $: function(selector) {
-      return this.$el.find(selector);
-    },
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // **render** is the core function that your view should override, in order
-    // to populate its element (`this.el`), with the appropriate HTML. The
-    // convention is for **render** to always return `this`.
-    render: function() {
-      return this;
-    },
-
-    // Remove this view by taking the element out of the DOM, and removing any
-    // applicable Backbone.Events listeners.
-    remove: function() {
-      this._removeElement();
-      this.stopListening();
-      return this;
-    },
-
-    // Remove this view's element from the document and all event listeners
-    // attached to it. Exposed for subclasses using an alternative DOM
-    // manipulation API.
-    _removeElement: function() {
-      this.$el.remove();
-    },
-
-    // Change the view's element (`this.el` property) and re-delegate the
-    // view's events on the new element.
-    setElement: function(element) {
-      this.undelegateEvents();
-      this._setElement(element);
-      this.delegateEvents();
-      return this;
-    },
-
-    // Creates the `this.el` and `this.$el` references for this view using the
-    // given `el`. `el` can be a CSS selector or an HTML string, a jQuery
-    // context or an element. Subclasses can override this to utilize an
-    // alternative DOM manipulation API and are only required to set the
-    // `this.el` property.
-    _setElement: function(el) {
-      this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);
-      this.el = this.$el[0];
-    },
-
-    // Set callbacks, where `this.events` is a hash of
-    //
-    // *{"event selector": "callback"}*
-    //
-    //     {
-    //       'mousedown .title':  'edit',
-    //       'click .button':     'save',
-    //       'click .open':       function(e) { ... }
-    //     }
-    //
-    // pairs. Callbacks will be bound to the view, with `this` set properly.
-    // Uses event delegation for efficiency.
-    // Omitting the selector binds the event to `this.el`.
-    delegateEvents: function(events) {
-      events || (events = _.result(this, 'events'));
-      if (!events) return this;
-      this.undelegateEvents();
-      for (var key in events) {
-        var method = events[key];
-        if (!_.isFunction(method)) method = this[method];
-        if (!method) continue;
-        var match = key.match(delegateEventSplitter);
-        this.delegate(match[1], match[2], _.bind(method, this));
-      }
-      return this;
-    },
-
-    // Add a single event listener to the view's element (or a child element
-    // using `selector`). This only works for delegate-able events: not `focus`,
-    // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.
-    delegate: function(eventName, selector, listener) {
-      this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);
-      return this;
-    },
-
-    // Clears all callbacks previously bound to the view by `delegateEvents`.
-    // You usually don't need to use this, but may wish to if you have multiple
-    // Backbone views attached to the same DOM element.
-    undelegateEvents: function() {
-      if (this.$el) this.$el.off('.delegateEvents' + this.cid);
-      return this;
-    },
-
-    // A finer-grained `undelegateEvents` for removing a single delegated event.
-    // `selector` and `listener` are both optional.
-    undelegate: function(eventName, selector, listener) {
-      this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);
-      return this;
-    },
-
-    // Produces a DOM element to be assigned to your view. Exposed for
-    // subclasses using an alternative DOM manipulation API.
-    _createElement: function(tagName) {
-      return document.createElement(tagName);
-    },
-
-    // Ensure that the View has a DOM element to render into.
-    // If `this.el` is a string, pass it through `$()`, take the first
-    // matching element, and re-assign it to `el`. Otherwise, create
-    // an element from the `id`, `className` and `tagName` properties.
-    _ensureElement: function() {
-      if (!this.el) {
-        var attrs = _.extend({}, _.result(this, 'attributes'));
-        if (this.id) attrs.id = _.result(this, 'id');
-        if (this.className) attrs['class'] = _.result(this, 'className');
-        this.setElement(this._createElement(_.result(this, 'tagName')));
-        this._setAttributes(attrs);
-      } else {
-        this.setElement(_.result(this, 'el'));
-      }
-    },
-
-    // Set attributes from a hash on this view's element.  Exposed for
-    // subclasses using an alternative DOM manipulation API.
-    _setAttributes: function(attributes) {
-      this.$el.attr(attributes);
-    }
-
-  });
-
-  // Backbone.sync
-  // -------------
-
-  // Override this function to change the manner in which Backbone persists
-  // models to the server. You will be passed the type of request, and the
-  // model in question. By default, makes a RESTful Ajax request
-  // to the model's `url()`. Some possible customizations could be:
-  //
-  // * Use `setTimeout` to batch rapid-fire updates into a single request.
-  // * Send up the models as XML instead of JSON.
-  // * Persist models via WebSockets instead of Ajax.
-  //
-  // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests
-  // as `POST`, with a `_method` parameter containing the true HTTP method,
-  // as well as all requests with the body as `application/x-www-form-urlencoded`
-  // instead of `application/json` with the model in a param named `model`.
-  // Useful when interfacing with server-side languages like **PHP** that make
-  // it difficult to read the body of `PUT` requests.
-  Backbone.sync = function(method, model, options) {
-    var type = methodMap[method];
-
-    // Default options, unless specified.
-    _.defaults(options || (options = {}), {
-      emulateHTTP: Backbone.emulateHTTP,
-      emulateJSON: Backbone.emulateJSON
-    });
-
-    // Default JSON-request options.
-    var params = {type: type, dataType: 'json'};
-
-    // Ensure that we have a URL.
-    if (!options.url) {
-      params.url = _.result(model, 'url') || urlError();
-    }
-
-    // Ensure that we have the appropriate request data.
-    if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
-      params.contentType = 'application/json';
-      params.data = JSON.stringify(options.attrs || model.toJSON(options));
-    }
-
-    // For older servers, emulate JSON by encoding the request into an HTML-form.
-    if (options.emulateJSON) {
-      params.contentType = 'application/x-www-form-urlencoded';
-      params.data = params.data ? {model: params.data} : {};
-    }
-
-    // For older servers, emulate HTTP by mimicking the HTTP method with `_method`
-    // And an `X-HTTP-Method-Override` header.
-    if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {
-      params.type = 'POST';
-      if (options.emulateJSON) params.data._method = type;
-      var beforeSend = options.beforeSend;
-      options.beforeSend = function(xhr) {
-        xhr.setRequestHeader('X-HTTP-Method-Override', type);
-        if (beforeSend) return beforeSend.apply(this, arguments);
-      };
-    }
-
-    // Don't process data on a non-GET request.
-    if (params.type !== 'GET' && !options.emulateJSON) {
-      params.processData = false;
-    }
-
-    // Pass along `textStatus` and `errorThrown` from jQuery.
-    var error = options.error;
-    options.error = function(xhr, textStatus, errorThrown) {
-      options.textStatus = textStatus;
-      options.errorThrown = errorThrown;
-      if (error) error.call(options.context, xhr, textStatus, errorThrown);
-    };
-
-    // Make the request, allowing the user to override any Ajax options.
-    var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
-    model.trigger('request', model, xhr, options);
-    return xhr;
-  };
-
-  // Map from CRUD to HTTP for our default `Backbone.sync` implementation.
-  var methodMap = {
-    'create': 'POST',
-    'update': 'PUT',
-    'patch':  'PATCH',
-    'delete': 'DELETE',
-    'read':   'GET'
-  };
-
-  // Set the default implementation of `Backbone.ajax` to proxy through to `$`.
-  // Override this if you'd like to use a different library.
-  Backbone.ajax = function() {
-    return Backbone.$.ajax.apply(Backbone.$, arguments);
-  };
-
-  // Backbone.Router
-  // ---------------
-
-  // Routers map faux-URLs to actions, and fire events when routes are
-  // matched. Creating a new one sets its `routes` hash, if not set statically.
-  var Router = Backbone.Router = function(options) {
-    options || (options = {});
-    if (options.routes) this.routes = options.routes;
-    this._bindRoutes();
-    this.initialize.apply(this, arguments);
-  };
-
-  // Cached regular expressions for matching named param parts and splatted
-  // parts of route strings.
-  var optionalParam = /\((.*?)\)/g;
-  var namedParam    = /(\(\?)?:\w+/g;
-  var splatParam    = /\*\w+/g;
-  var escapeRegExp  = /[\-{}\[\]+?.,\\\^$|#\s]/g;
-
-  // Set up all inheritable **Backbone.Router** properties and methods.
-  _.extend(Router.prototype, Events, {
-
-    // Initialize is an empty function by default. Override it with your own
-    // initialization logic.
-    initialize: function(){},
-
-    // Manually bind a single named route to a callback. For example:
-    //
-    //     this.route('search/:query/p:num', 'search', function(query, num) {
-    //       ...
-    //     });
-    //
-    route: function(route, name, callback) {
-      if (!_.isRegExp(route)) route = this._routeToRegExp(route);
-      if (_.isFunction(name)) {
-        callback = name;
-        name = '';
-      }
-      if (!callback) callback = this[name];
-      var router = this;
-      Backbone.history.route(route, function(fragment) {
-        var args = router._extractParameters(route, fragment);
-        if (router.execute(callback, args, name) !== false) {
-          router.trigger.apply(router, ['route:' + name].concat(args));
-          router.trigger('route', name, args);
-          Backbone.history.trigger('route', router, name, args);
-        }
-      });
-      return this;
-    },
-
-    // Execute a route handler with the provided parameters.  This is an
-    // excellent place to do pre-route setup or post-route cleanup.
-    execute: function(callback, args, name) {
-      if (callback) callback.apply(this, args);
-    },
-
-    // Simple proxy to `Backbone.history` to save a fragment into the history.
-    navigate: function(fragment, options) {
-      Backbone.history.navigate(fragment, options);
-      return this;
-    },
-
-    // Bind all defined routes to `Backbone.history`. We have to reverse the
-    // order of the routes here to support behavior where the most general
-    // routes can be defined at the bottom of the route map.
-    _bindRoutes: function() {
-      if (!this.routes) return;
-      this.routes = _.result(this, 'routes');
-      var route, routes = _.keys(this.routes);
-      while ((route = routes.pop()) != null) {
-        this.route(route, this.routes[route]);
-      }
-    },
-
-    // Convert a route string into a regular expression, suitable for matching
-    // against the current location hash.
-    _routeToRegExp: function(route) {
-      route = route.replace(escapeRegExp, '\\$&')
-                   .replace(optionalParam, '(?:$1)?')
-                   .replace(namedParam, function(match, optional) {
-                     return optional ? match : '([^/?]+)';
-                   })
-                   .replace(splatParam, '([^?]*?)');
-      return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$');
-    },
-
-    // Given a route, and a URL fragment that it matches, return the array of
-    // extracted decoded parameters. Empty or unmatched parameters will be
-    // treated as `null` to normalize cross-browser behavior.
-    _extractParameters: function(route, fragment) {
-      var params = route.exec(fragment).slice(1);
-      return _.map(params, function(param, i) {
-        // Don't decode the search params.
-        if (i === params.length - 1) return param || null;
-        return param ? decodeURIComponent(param) : null;
-      });
-    }
-
-  });
-
-  // Backbone.History
-  // ----------------
-
-  // Handles cross-browser history management, based on either
-  // [pushState](http://diveintohtml5.info/history.html) and real URLs, or
-  // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)
-  // and URL fragments. If the browser supports neither (old IE, natch),
-  // falls back to polling.
-  var History = Backbone.History = function() {
-    this.handlers = [];
-    this.checkUrl = _.bind(this.checkUrl, this);
-
-    // Ensure that `History` can be used outside of the browser.
-    if (typeof window !== 'undefined') {
-      this.location = window.location;
-      this.history = window.history;
-    }
-  };
-
-  // Cached regex for stripping a leading hash/slash and trailing space.
-  var routeStripper = /^[#\/]|\s+$/g;
-
-  // Cached regex for stripping leading and trailing slashes.
-  var rootStripper = /^\/+|\/+$/g;
-
-  // Cached regex for stripping urls of hash.
-  var pathStripper = /#.*$/;
-
-  // Has the history handling already been started?
-  History.started = false;
-
-  // Set up all inheritable **Backbone.History** properties and methods.
-  _.extend(History.prototype, Events, {
-
-    // The default interval to poll for hash changes, if necessary, is
-    // twenty times a second.
-    interval: 50,
-
-    // Are we at the app root?
-    atRoot: function() {
-      var path = this.location.pathname.replace(/[^\/]$/, '$&/');
-      return path === this.root && !this.getSearch();
-    },
-
-    // Does the pathname match the root?
-    matchRoot: function() {
-      var path = this.decodeFragment(this.location.pathname);
-      var root = path.slice(0, this.root.length - 1) + '/';
-      return root === this.root;
-    },
-
-    // Unicode characters in `location.pathname` are percent encoded so they're
-    // decoded for comparison. `%25` should not be decoded since it may be part
-    // of an encoded parameter.
-    decodeFragment: function(fragment) {
-      return decodeURI(fragment.replace(/%25/g, '%2525'));
-    },
-
-    // In IE6, the hash fragment and search params are incorrect if the
-    // fragment contains `?`.
-    getSearch: function() {
-      var match = this.location.href.replace(/#.*/, '').match(/\?.+/);
-      return match ? match[0] : '';
-    },
-
-    // Gets the true hash value. Cannot use location.hash directly due to bug
-    // in Firefox where location.hash will always be decoded.
-    getHash: function(window) {
-      var match = (window || this).location.href.match(/#(.*)$/);
-      return match ? match[1] : '';
-    },
-
-    // Get the pathname and search params, without the root.
-    getPath: function() {
-      var path = this.decodeFragment(
-        this.location.pathname + this.getSearch()
-      ).slice(this.root.length - 1);
-      return path.charAt(0) === '/' ? path.slice(1) : path;
-    },
-
-    // Get the cross-browser normalized URL fragment from the path or hash.
-    getFragment: function(fragment) {
-      if (fragment == null) {
-        if (this._usePushState || !this._wantsHashChange) {
-          fragment = this.getPath();
-        } else {
-          fragment = this.getHash();
-        }
-      }
-      return fragment.replace(routeStripper, '');
-    },
-
-    // Start the hash change handling, returning `true` if the current URL matches
-    // an existing route, and `false` otherwise.
-    start: function(options) {
-      if (History.started) throw new Error('Backbone.history has already been started');
-      History.started = true;
-
-      // Figure out the initial configuration. Do we need an iframe?
-      // Is pushState desired ... is it available?
-      this.options          = _.extend({root: '/'}, this.options, options);
-      this.root             = this.options.root;
-      this._wantsHashChange = this.options.hashChange !== false;
-      this._hasHashChange   = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);
-      this._useHashChange   = this._wantsHashChange && this._hasHashChange;
-      this._wantsPushState  = !!this.options.pushState;
-      this._hasPushState    = !!(this.history && this.history.pushState);
-      this._usePushState    = this._wantsPushState && this._hasPushState;
-      this.fragment         = this.getFragment();
-
-      // Normalize root to always include a leading and trailing slash.
-      this.root = ('/' + this.root + '/').replace(rootStripper, '/');
-
-      // Transition from hashChange to pushState or vice versa if both are
-      // requested.
-      if (this._wantsHashChange && this._wantsPushState) {
-
-        // If we've started off with a route from a `pushState`-enabled
-        // browser, but we're currently in a browser that doesn't support it...
-        if (!this._hasPushState && !this.atRoot()) {
-          var root = this.root.slice(0, -1) || '/';
-          this.location.replace(root + '#' + this.getPath());
-          // Return immediately as browser will do redirect to new url
-          return true;
-
-        // Or if we've started out with a hash-based route, but we're currently
-        // in a browser where it could be `pushState`-based instead...
-        } else if (this._hasPushState && this.atRoot()) {
-          this.navigate(this.getHash(), {replace: true});
-        }
-
-      }
-
-      // Proxy an iframe to handle location events if the browser doesn't
-      // support the `hashchange` event, HTML5 history, or the user wants
-      // `hashChange` but not `pushState`.
-      if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {
-        this.iframe = document.createElement('iframe');
-        this.iframe.src = 'javascript:0';
-        this.iframe.style.display = 'none';
-        this.iframe.tabIndex = -1;
-        var body = document.body;
-        // Using `appendChild` will throw on IE < 9 if the document is not ready.
-        var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;
-        iWindow.document.open();
-        iWindow.document.close();
-        iWindow.location.hash = '#' + this.fragment;
-      }
-
-      // Add a cross-platform `addEventListener` shim for older browsers.
-      var addEventListener = window.addEventListener || function (eventName, listener) {
-        return attachEvent('on' + eventName, listener);
-      };
-
-      // Depending on whether we're using pushState or hashes, and whether
-      // 'onhashchange' is supported, determine how we check the URL state.
-      if (this._usePushState) {
-        addEventListener('popstate', this.checkUrl, false);
-      } else if (this._useHashChange && !this.iframe) {
-        addEventListener('hashchange', this.checkUrl, false);
-      } else if (this._wantsHashChange) {
-        this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
-      }
-
-      if (!this.options.silent) return this.loadUrl();
-    },
-
-    // Disable Backbone.history, perhaps temporarily. Not useful in a real app,
-    // but possibly useful for unit testing Routers.
-    stop: function() {
-      // Add a cross-platform `removeEventListener` shim for older browsers.
-      var removeEventListener = window.removeEventListener || function (eventName, listener) {
-        return detachEvent('on' + eventName, listener);
-      };
-
-      // Remove window listeners.
-      if (this._usePushState) {
-        removeEventListener('popstate', this.checkUrl, false);
-      } else if (this._useHashChange && !this.iframe) {
-        removeEventListener('hashchange', this.checkUrl, false);
-      }
-
-      // Clean up the iframe if necessary.
-      if (this.iframe) {
-        document.body.removeChild(this.iframe);
-        this.iframe = null;
-      }
-
-      // Some environments will throw when clearing an undefined interval.
-      if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);
-      History.started = false;
-    },
-
-    // Add a route to be tested when the fragment changes. Routes added later
-    // may override previous routes.
-    route: function(route, callback) {
-      this.handlers.unshift({route: route, callback: callback});
-    },
-
-    // Checks the current URL to see if it has changed, and if it has,
-    // calls `loadUrl`, normalizing across the hidden iframe.
-    checkUrl: function(e) {
-      var current = this.getFragment();
-
-      // If the user pressed the back button, the iframe's hash will have
-      // changed and we should use that for comparison.
-      if (current === this.fragment && this.iframe) {
-        current = this.getHash(this.iframe.contentWindow);
-      }
-
-      if (current === this.fragment) return false;
-      if (this.iframe) this.navigate(current);
-      this.loadUrl();
-    },
-
-    // Attempt to load the current URL fragment. If a route succeeds with a
-    // match, returns `true`. If no defined routes matches the fragment,
-    // returns `false`.
-    loadUrl: function(fragment) {
-      // If the root doesn't match, no routes can match either.
-      if (!this.matchRoot()) return false;
-      fragment = this.fragment = this.getFragment(fragment);
-      return _.some(this.handlers, function(handler) {
-        if (handler.route.test(fragment)) {
-          handler.callback(fragment);
-          return true;
-        }
-      });
-    },
-
-    // Save a fragment into the hash history, or replace the URL state if the
-    // 'replace' option is passed. You are responsible for properly URL-encoding
-    // the fragment in advance.
-    //
-    // The options object can contain `trigger: true` if you wish to have the
-    // route callback be fired (not usually desirable), or `replace: true`, if
-    // you wish to modify the current URL without adding an entry to the history.
-    navigate: function(fragment, options) {
-      if (!History.started) return false;
-      if (!options || options === true) options = {trigger: !!options};
-
-      // Normalize the fragment.
-      fragment = this.getFragment(fragment || '');
-
-      // Don't include a trailing slash on the root.
-      var root = this.root;
-      if (fragment === '' || fragment.charAt(0) === '?') {
-        root = root.slice(0, -1) || '/';
-      }
-      var url = root + fragment;
-
-      // Strip the hash and decode for matching.
-      fragment = this.decodeFragment(fragment.replace(pathStripper, ''));
-
-      if (this.fragment === fragment) return;
-      this.fragment = fragment;
-
-      // If pushState is available, we use it to set the fragment as a real URL.
-      if (this._usePushState) {
-        this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);
-
-      // If hash changes haven't been explicitly disabled, update the hash
-      // fragment to store history.
-      } else if (this._wantsHashChange) {
-        this._updateHash(this.location, fragment, options.replace);
-        if (this.iframe && (fragment !== this.getHash(this.iframe.contentWindow))) {
-          var iWindow = this.iframe.contentWindow;
-
-          // Opening and closing the iframe tricks IE7 and earlier to push a
-          // history entry on hash-tag change.  When replace is true, we don't
-          // want this.
-          if (!options.replace) {
-            iWindow.document.open();
-            iWindow.document.close();
-          }
-
-          this._updateHash(iWindow.location, fragment, options.replace);
-        }
-
-      // If you've told us that you explicitly don't want fallback hashchange-
-      // based history, then `navigate` becomes a page refresh.
-      } else {
-        return this.location.assign(url);
-      }
-      if (options.trigger) return this.loadUrl(fragment);
-    },
-
-    // Update the hash location, either replacing the current entry, or adding
-    // a new one to the browser history.
-    _updateHash: function(location, fragment, replace) {
-      if (replace) {
-        var href = location.href.replace(/(javascript:|#).*$/, '');
-        location.replace(href + '#' + fragment);
-      } else {
-        // Some browsers require that `hash` contains a leading #.
-        location.hash = '#' + fragment;
-      }
-    }
-
-  });
-
-  // Create the default Backbone.history.
-  Backbone.history = new History;
-
-  // Helpers
-  // -------
-
-  // Helper function to correctly set up the prototype chain for subclasses.
-  // Similar to `goog.inherits`, but uses a hash of prototype properties and
-  // class properties to be extended.
-  var extend = function(protoProps, staticProps) {
-    var parent = this;
-    var child;
-
-    // The constructor function for the new subclass is either defined by you
-    // (the "constructor" property in your `extend` definition), or defaulted
-    // by us to simply call the parent constructor.
-    if (protoProps && _.has(protoProps, 'constructor')) {
-      child = protoProps.constructor;
-    } else {
-      child = function(){ return parent.apply(this, arguments); };
-    }
-
-    // Add static properties to the constructor function, if supplied.
-    _.extend(child, parent, staticProps);
-
-    // Set the prototype chain to inherit from `parent`, without calling
-    // `parent` constructor function.
-    var Surrogate = function(){ this.constructor = child; };
-    Surrogate.prototype = parent.prototype;
-    child.prototype = new Surrogate;
-
-    // Add prototype properties (instance properties) to the subclass,
-    // if supplied.
-    if (protoProps) _.extend(child.prototype, protoProps);
-
-    // Set a convenience property in case the parent's prototype is needed
-    // later.
-    child.__super__ = parent.prototype;
-
-    return child;
-  };
-
-  // Set up inheritance for the model, collection, router, view and history.
-  Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;
-
-  // Throw an error when a URL is needed, and none is supplied.
-  var urlError = function() {
-    throw new Error('A "url" property or function must be specified');
-  };
-
-  // Wrap an optional error callback with a fallback error event.
-  var wrapError = function(model, options) {
-    var error = options.error;
-    options.error = function(resp) {
-      if (error) error.call(options.context, model, resp, options);
-      model.trigger('error', model, resp, options);
-    };
-  };
-
-  return Backbone;
-
-}));

File diff suppressed because it is too large
+ 0 - 139
core/assets/vendor/ckeditor/CHANGES.md


File diff suppressed because it is too large
+ 0 - 1417
core/assets/vendor/ckeditor/LICENSE.md


+ 0 - 102
core/assets/vendor/ckeditor/build-config.js

@@ -1,102 +0,0 @@
-/**
- * This is a Drupal-optimized build of CKEditor.
- *
- * You may re-use it at any time at http://ckeditor.com/builder to build
- * CKEditor again. Alternatively, use the "build.sh" script to build it locally.
- * If you do so, be sure to pass it the "-s" flag. So: "sh build.sh -s".
- *
- * If you are developing or debugging CKEditor plugins, you may want to work
- * against an unoptimized (unminified) CKEditor build. To do so, you have two
- * options:
- * 1. Upload build-config.js to http://ckeditor.com/builder and choose the
- *    "Source (Big N'Slow)" option when downloading.
- * 2. Use the "build.sh" script to build it locally, with one additional flag:
- *    "sh build.sh -s --leave-js-unminified".
- * Then, replace this directory (core/assets/vendor/ckeditor) with your build.
- *
- * NOTE:
- *    This file is not used by CKEditor, you may remove it.
- *    Changing this file will not change your CKEditor configuration.
- */
-
-/* exported CKBUILDER_CONFIG */
-
-var CKBUILDER_CONFIG = {
-	skin: 'moono-lisa',
-	ignore: [
-		// CKEditor repository structure: unrelated to the usage of CKEditor itself.
-		'bender.js',
-		'bender.ci.js',
-		'.bender',
-		'bender-err.log',
-		'bender-out.log',
-		'.travis.yml',
-		'dev',
-		'docs',
-		'.DS_Store',
-		'.editorconfig',
-		'.gitignore',
-		'.gitattributes',
-		'gruntfile.js',
-		'.idea',
-		'.jscsrc',
-		'.jshintignore',
-		'.jshintrc',
-		'less',
-		'.mailmap',
-		'node_modules',
-		'package.json',
-		'README.md',
-		'tests',
-		// Parts of CKEditor that we consciously don't ship with Drupal.
-		'adapters',
-		'config.js',
-		'contents.css',
-		'styles.js',
-		'samples',
-		'skins/moono-lisa/readme.md'
-	],
-	plugins: {
-		a11yhelp: 1,
-		about: 1,
-		autogrow: 1,
-		basicstyles: 1,
-		blockquote: 1,
-		clipboard: 1,
-		contextmenu: 1,
-		elementspath: 1,
-		enterkey: 1,
-		entities: 1,
-		filebrowser: 1,
-		floatingspace: 1,
-		format: 1,
-		horizontalrule: 1,
-		htmlwriter: 1,
-		image2: 1,
-		indent: 1,
-		indentlist: 1,
-		justify: 1,
-		language: 1,
-		list: 1,
-		magicline: 1,
-		maximize: 1,
-		pastefromword: 1,
-		pastetext: 1,
-		removeformat: 1,
-		sharedspace: 1,
-		showblocks: 1,
-		showborders: 1,
-		sourcearea: 1,
-		sourcedialog: 1,
-		specialchar: 1,
-		stylescombo: 1,
-		tab: 1,
-		table: 1,
-		tableresize: 1,
-		tabletools: 1,
-		toolbar: 1,
-		undo: 1,
-		widget: 1,
-		wysiwygarea: 1
-	}
-};

File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/ckeditor.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/af.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ar.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/az.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/bg.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/bn.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/bs.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ca.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/cs.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/cy.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/da.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/de-ch.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/de.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/el.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/en-au.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/en-ca.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/en-gb.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/en.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/eo.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/es-mx.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/es.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/et.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/eu.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/fa.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/fi.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/fo.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/fr-ca.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/fr.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/gl.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/gu.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/he.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/hi.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/hr.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/hu.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/id.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/is.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/it.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ja.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ka.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/km.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ko.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ku.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/lt.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/lv.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/mk.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/mn.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ms.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/nb.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/nl.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/no.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/oc.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/pl.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/pt-br.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/pt.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ro.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ru.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/si.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/sk.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/sl.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/sq.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/sr-latn.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/sr.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/sv.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/th.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/tr.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/tt.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/ug.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/uk.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/vi.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/zh-cn.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/lang/zh.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js


+ 0 - 25
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt

@@ -1,25 +0,0 @@
-Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-
-cs.js      Found: 30 Missing: 0
-cy.js      Found: 30 Missing: 0
-da.js      Found: 12 Missing: 18
-de.js      Found: 30 Missing: 0
-el.js      Found: 25 Missing: 5
-eo.js      Found: 30 Missing: 0
-fa.js      Found: 30 Missing: 0
-fi.js      Found: 30 Missing: 0
-fr.js      Found: 30 Missing: 0
-gu.js      Found: 12 Missing: 18
-he.js      Found: 30 Missing: 0
-it.js      Found: 30 Missing: 0
-mk.js      Found: 5 Missing: 25
-nb.js      Found: 30 Missing: 0
-nl.js      Found: 30 Missing: 0
-no.js      Found: 30 Missing: 0
-pt-br.js   Found: 30 Missing: 0
-ro.js      Found: 6 Missing: 24
-tr.js      Found: 30 Missing: 0
-ug.js      Found: 27 Missing: 3
-vi.js      Found: 6 Missing: 24
-zh-cn.js   Found: 30 Missing: 0

File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/af.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/az.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/da.js


File diff suppressed because it is too large
+ 0 - 4
core/assets/vendor/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js


Some files were not shown because too many files changed in this diff