diff options
69 files changed, 12271 insertions, 669 deletions
@@ -43,9 +43,6 @@ data/db/wallabag*.sqlite | |||
43 | docker/logs/ | 43 | docker/logs/ |
44 | docker/data/ | 44 | docker/data/ |
45 | 45 | ||
46 | # To avoid crazy stuff on some PR, we must manually FORCE ADD IT on each new release | ||
47 | composer.lock | ||
48 | |||
49 | # assets stuff | 46 | # assets stuff |
50 | node_modules/ | 47 | node_modules/ |
51 | bin | 48 | bin |
diff --git a/CHANGELOG.md b/CHANGELOG.md index 495bd1d8..e418d3e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md | |||
@@ -1,5 +1,21 @@ | |||
1 | # Changelog | 1 | # Changelog |
2 | 2 | ||
3 | ## [2.3.8](https://github.com/wallabag/wallabag/tree/2.3.8) | ||
4 | [Full Changelog](https://github.com/wallabag/wallabag/compare/2.3.7...2.3.8) | ||
5 | |||
6 | ### Fixes | ||
7 | |||
8 | - Jump to 2.3.8-dev [#3897](https://github.com/wallabag/wallabag/pull/3897) | ||
9 | - material: fix left padding on non-entry pages [#3901](https://github.com/wallabag/wallabag/pull/3901) | ||
10 | - Make dev/install/update script posix compatible [#3860](https://github.com/wallabag/wallabag/pull/3860) | ||
11 | - epub: fix exception when articles have the same title [#3908](https://github.com/wallabag/wallabag/pull/3908) | ||
12 | - Fix PHP warning [#3909](https://github.com/wallabag/wallabag/pull/3909) | ||
13 | - Add ability to match many domains for credentials [#3937](https://github.com/wallabag/wallabag/pull/3937) | ||
14 | - material: add metadata to list view [#3942](https://github.com/wallabag/wallabag/pull/3942) | ||
15 | - Enable no-referrer on img tags, enable strict-origin-when-cross-origin by default [#3943](https://github.com/wallabag/wallabag/pull/3943) | ||
16 | - Remove preview picture from share view page#3922 | ||
17 | - Fix Intl Locale issue [#3964](https://github.com/wallabag/wallabag/pull/3964) | ||
18 | |||
3 | ## [2.3.7](https://github.com/wallabag/wallabag/tree/2.3.7) | 19 | ## [2.3.7](https://github.com/wallabag/wallabag/tree/2.3.7) |
4 | [Full Changelog](https://github.com/wallabag/wallabag/compare/2.3.6...2.3.7) | 20 | [Full Changelog](https://github.com/wallabag/wallabag/compare/2.3.6...2.3.7) |
5 | 21 | ||
diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index 829f8390..881f0771 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md | |||
@@ -22,58 +22,42 @@ During this documentation, we assume the release is `$LAST_WALLABAG_RELEASE` (li | |||
22 | git checkout master | 22 | git checkout master |
23 | git pull origin master | 23 | git pull origin master |
24 | git checkout -b release-$LAST_WALLABAG_RELEASE | 24 | git checkout -b release-$LAST_WALLABAG_RELEASE |
25 | SYMFONY_ENV=prod composer up --no-dev | 25 | composer up |
26 | ``` | ||
27 | |||
28 | - Update `.travis.yml` file and replace the composer line with this one: | ||
29 | |||
30 | ```diff | ||
31 | script: | ||
32 | - - travis_wait bash composer install -o --no-interaction --no-progress --prefer-dist | ||
33 | + - travis_wait bash composer update -o --no-interaction --no-progress --prefer-dist | ||
34 | ``` | 26 | ``` |
35 | 27 | ||
36 | - Then continue with these commands: | 28 | - Then continue with these commands: |
37 | 29 | ||
38 | ``` | 30 | ``` |
39 | git add --force composer.lock .travis.yml | 31 | git add composer.lock |
40 | git commit -m "Release wallabag $LAST_WALLABAG_RELEASE" | 32 | git commit -m "Release wallabag $LAST_WALLABAG_RELEASE" |
41 | git push origin release-$LAST_WALLABAG_RELEASE | 33 | git push origin release-$LAST_WALLABAG_RELEASE |
42 | ``` | 34 | ``` |
43 | 35 | ||
44 | - Create a new pull request with this title `DON'T MERGE Release wallabag $LAST_WALLABAG_RELEASE`. This pull request is used to launch builds on Travis-CI. | 36 | - Create a new pull request with this title `Release wallabag $LAST_WALLABAG_RELEASE`. This pull request is used to launch builds on Travis-CI. |
45 | - Run these command to create the package: | 37 | - Once PR is green, merge it and delete the branch. |
38 | - Run this command to create the package: | ||
46 | 39 | ||
47 | ``` | 40 | ``` |
48 | make release VERSION=$LAST_WALLABAG_RELEASE | 41 | make release VERSION=$LAST_WALLABAG_RELEASE |
49 | ``` | 42 | ``` |
50 | 43 | ||
51 | - [Create the new release on GitHub](https://github.com/wallabag/wallabag/releases/new) by targetting the `release-$LAST_WALLABAG_RELEASE` branch. You have to upload the package (generated previously). | 44 | - [Create the new release on GitHub](https://github.com/wallabag/wallabag/releases/new) by targetting the `master` branch or any appropriate branch (for instance backports). You have to upload the package (generated previously). |
52 | - Close the previously created pull request (**DO NOT MERGE IT**) and delete the `release-$LAST_WALLABAG_RELEASE` branch. | 45 | - Update the URL shortener (used on `wllbg.org` to update links like `https://wllbg.org/latest-v2-package` or `http://wllbg.org/latest-v2`) |
53 | - Update the URL shortener (used on `wllbg.org` to generate links like `https://wllbg.org/latest-v2-package` or `http://wllbg.org/latest-v2`) | ||
54 | - Update Dockerfile https://github.com/wallabag/docker (and create a new tag) | 46 | - Update Dockerfile https://github.com/wallabag/docker (and create a new tag) |
55 | - Update wallabag.org website (downloads, MD5 sum, releases and new blog post) | 47 | - Update wallabag.org website (downloads, MD5 sum, releases and new blog post) |
56 | - Put the next patch version suffixed with `-dev` in `app/config/wallabag.yml` (`wallabag_core.version`) | 48 | - Put the next patch version suffixed with `-dev` in `app/config/wallabag.yml` (`wallabag_core.version`) |
57 | - Drink a :beer:! | 49 | - Drink a :beer:! |
58 | 50 | ||
59 | ### `composer.lock` | ||
60 | A release tag must contain a `composer.lock` file. It sets which dependencies were available at the time a release was done, | ||
61 | making it easier to fix issues after the release. It also speeds up `composer install` on stable versions a LOT, by skipping the | ||
62 | dependencies resolution part. | ||
63 | |||
64 | Since `composer.lock` is ignored by default, either it must be removed from `.gitignore` _in the release branch_, | ||
65 | or it must be added using `git add --force composer.lock`. | ||
66 | |||
67 | ### Target PHP version | 51 | ### Target PHP version |
68 | `composer.lock` is _always_ built for a particular version, by default the one it is generated (with `composer update`). | 52 | `composer.lock` is _always_ built for a particular version, by default the one it is generated (with `composer update`). |
69 | 53 | ||
70 | If the PHP version used to generate the .lock isn't a widely available one (like PHP 7), a more common one should | 54 | If the PHP version used to generate the .lock isn't a widely available one (like PHP 8), a more common one should |
71 | be locally specified in `composer.lock`: | 55 | be locally specified in `composer.lock`: |
72 | 56 | ||
73 | ```json | 57 | ```json |
74 | "config": { | 58 | "config": { |
75 | "platform": { | 59 | "platform": { |
76 | "php": "5.5.9", | 60 | "php": "7.1.3", |
77 | "ext-something": "4.0" | 61 | "ext-something": "4.0" |
78 | } | 62 | } |
79 | } | 63 | } |
diff --git a/app/AppKernel.php b/app/AppKernel.php index 7d19e9ab..fcf929c6 100644 --- a/app/AppKernel.php +++ b/app/AppKernel.php | |||
@@ -34,6 +34,8 @@ class AppKernel extends Kernel | |||
34 | new FOS\JsRoutingBundle\FOSJsRoutingBundle(), | 34 | new FOS\JsRoutingBundle\FOSJsRoutingBundle(), |
35 | new BD\GuzzleSiteAuthenticatorBundle\BDGuzzleSiteAuthenticatorBundle(), | 35 | new BD\GuzzleSiteAuthenticatorBundle\BDGuzzleSiteAuthenticatorBundle(), |
36 | new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(), | 36 | new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(), |
37 | new Http\HttplugBundle\HttplugBundle(), | ||
38 | new Sentry\SentryBundle\SentryBundle(), | ||
37 | 39 | ||
38 | // wallabag bundles | 40 | // wallabag bundles |
39 | new Wallabag\CoreBundle\WallabagCoreBundle(), | 41 | new Wallabag\CoreBundle\WallabagCoreBundle(), |
diff --git a/app/DoctrineMigrations/Version20190510141130.php b/app/DoctrineMigrations/Version20190510141130.php new file mode 100644 index 00000000..524aa452 --- /dev/null +++ b/app/DoctrineMigrations/Version20190510141130.php | |||
@@ -0,0 +1,96 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Application\Migrations; | ||
4 | |||
5 | use Doctrine\DBAL\Migrations\SkipMigrationException; | ||
6 | use Doctrine\DBAL\Schema\Schema; | ||
7 | use Wallabag\CoreBundle\Doctrine\WallabagMigration; | ||
8 | |||
9 | /** | ||
10 | * Enable cascade delete when deleting a user on: | ||
11 | * - oauth2_access_tokens | ||
12 | * - oauth2_clients | ||
13 | * - oauth2_refresh_tokens | ||
14 | * - oauth2_auth_codes. | ||
15 | */ | ||
16 | final class Version20190510141130 extends WallabagMigration | ||
17 | { | ||
18 | public function up(Schema $schema): void | ||
19 | { | ||
20 | switch ($this->connection->getDatabasePlatform()->getName()) { | ||
21 | case 'sqlite': | ||
22 | $this->addSql('DROP INDEX IDX_368A4209A76ED395'); | ||
23 | $this->addSql('DROP INDEX IDX_368A420919EB6921'); | ||
24 | $this->addSql('DROP INDEX UNIQ_368A42095F37A13B'); | ||
25 | $this->addSql('CREATE TEMPORARY TABLE __temp__' . $this->getTable('oauth2_access_tokens', true) . ' AS SELECT id, client_id, user_id, token, expires_at, scope FROM ' . $this->getTable('oauth2_access_tokens', true)); | ||
26 | $this->addSql('DROP TABLE ' . $this->getTable('oauth2_access_tokens', true)); | ||
27 | $this->addSql('CREATE TABLE ' . $this->getTable('oauth2_access_tokens', true) . ' (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, expires_at INTEGER DEFAULT NULL, token VARCHAR(191) NOT NULL, scope VARCHAR(191) NULL, CONSTRAINT FK_368A420919EB6921 FOREIGN KEY (client_id) REFERENCES ' . $this->getTable('oauth2_clients', true) . ' (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE)'); | ||
28 | $this->addSql('INSERT INTO ' . $this->getTable('oauth2_access_tokens', true) . ' (id, client_id, user_id, token, expires_at, scope) SELECT id, client_id, user_id, token, expires_at, scope FROM __temp__' . $this->getTable('oauth2_access_tokens', true)); | ||
29 | $this->addSql('DROP TABLE __temp__' . $this->getTable('oauth2_access_tokens', true)); | ||
30 | $this->addSql('CREATE INDEX IDX_368A4209A76ED395 ON ' . $this->getTable('oauth2_access_tokens', true) . ' (user_id)'); | ||
31 | $this->addSql('CREATE INDEX IDX_368A420919EB6921 ON ' . $this->getTable('oauth2_access_tokens', true) . ' (client_id)'); | ||
32 | |||
33 | $this->addSql('DROP INDEX IDX_635D765EA76ED395'); | ||
34 | $this->addSql('CREATE TEMPORARY TABLE __temp__' . $this->getTable('oauth2_clients', true) . ' AS SELECT id, user_id, random_id, secret, redirect_uris, allowed_grant_types, name FROM ' . $this->getTable('oauth2_clients', true)); | ||
35 | $this->addSql('DROP TABLE ' . $this->getTable('oauth2_clients', true)); | ||
36 | $this->addSql('CREATE TABLE ' . $this->getTable('oauth2_clients', true) . ' (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER DEFAULT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, name CLOB NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL, allowed_grant_types CLOB NOT NULL, CONSTRAINT FK_635D765EA76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); | ||
37 | $this->addSql('INSERT INTO ' . $this->getTable('oauth2_clients', true) . ' (id, user_id, random_id, secret, redirect_uris, allowed_grant_types, name) SELECT id, user_id, random_id, secret, redirect_uris, allowed_grant_types, name FROM __temp__' . $this->getTable('oauth2_clients', true)); | ||
38 | $this->addSql('DROP TABLE __temp__' . $this->getTable('oauth2_clients', true)); | ||
39 | $this->addSql('CREATE INDEX IDX_635D765EA76ED395 ON ' . $this->getTable('oauth2_clients', true) . ' (user_id)'); | ||
40 | |||
41 | $this->addSql('DROP INDEX IDX_20C9FB24A76ED395'); | ||
42 | $this->addSql('DROP INDEX IDX_20C9FB2419EB6921'); | ||
43 | $this->addSql('DROP INDEX UNIQ_20C9FB245F37A13B'); | ||
44 | $this->addSql('CREATE TEMPORARY TABLE __temp__' . $this->getTable('oauth2_refresh_tokens', true) . ' AS SELECT id, client_id, user_id, token, expires_at, scope FROM ' . $this->getTable('oauth2_refresh_tokens', true)); | ||
45 | $this->addSql('DROP TABLE ' . $this->getTable('oauth2_refresh_tokens', true)); | ||
46 | $this->addSql('CREATE TABLE ' . $this->getTable('oauth2_refresh_tokens', true) . ' (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, expires_at INTEGER DEFAULT NULL, token VARCHAR(191) NOT NULL, scope VARCHAR(191) NULL, CONSTRAINT FK_20C9FB2419EB6921 FOREIGN KEY (client_id) REFERENCES ' . $this->getTable('oauth2_clients', true) . ' (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE)'); | ||
47 | $this->addSql('INSERT INTO ' . $this->getTable('oauth2_refresh_tokens', true) . ' (id, client_id, user_id, token, expires_at, scope) SELECT id, client_id, user_id, token, expires_at, scope FROM __temp__' . $this->getTable('oauth2_refresh_tokens', true)); | ||
48 | $this->addSql('DROP TABLE __temp__' . $this->getTable('oauth2_refresh_tokens', true)); | ||
49 | $this->addSql('CREATE INDEX IDX_20C9FB24A76ED395 ON ' . $this->getTable('oauth2_refresh_tokens', true) . ' (user_id)'); | ||
50 | $this->addSql('CREATE INDEX IDX_20C9FB2419EB6921 ON ' . $this->getTable('oauth2_refresh_tokens', true) . ' (client_id)'); | ||
51 | |||
52 | $this->addSql('DROP INDEX IDX_EE52E3FAA76ED395'); | ||
53 | $this->addSql('DROP INDEX IDX_EE52E3FA19EB6921'); | ||
54 | $this->addSql('DROP INDEX UNIQ_EE52E3FA5F37A13B'); | ||
55 | $this->addSql('CREATE TEMPORARY TABLE __temp__' . $this->getTable('oauth2_auth_codes', true) . ' AS SELECT id, client_id, user_id, token, redirect_uri, expires_at, scope FROM ' . $this->getTable('oauth2_auth_codes', true)); | ||
56 | $this->addSql('DROP TABLE ' . $this->getTable('oauth2_auth_codes', true)); | ||
57 | $this->addSql('CREATE TABLE ' . $this->getTable('oauth2_auth_codes', true) . ' (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, redirect_uri CLOB NOT NULL COLLATE BINARY, expires_at INTEGER DEFAULT NULL, token VARCHAR(191) NOT NULL, scope VARCHAR(191) NULL, CONSTRAINT FK_EE52E3FA19EB6921 FOREIGN KEY (client_id) REFERENCES ' . $this->getTable('oauth2_clients', true) . ' (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE)'); | ||
58 | $this->addSql('INSERT INTO ' . $this->getTable('oauth2_auth_codes', true) . ' (id, client_id, user_id, token, redirect_uri, expires_at, scope) SELECT id, client_id, user_id, token, redirect_uri, expires_at, scope FROM __temp__' . $this->getTable('oauth2_auth_codes', true)); | ||
59 | $this->addSql('DROP TABLE __temp__' . $this->getTable('oauth2_auth_codes', true)); | ||
60 | $this->addSql('CREATE INDEX IDX_EE52E3FAA76ED395 ON ' . $this->getTable('oauth2_auth_codes', true) . ' (user_id)'); | ||
61 | $this->addSql('CREATE INDEX IDX_EE52E3FA19EB6921 ON ' . $this->getTable('oauth2_auth_codes', true) . ' (client_id)'); | ||
62 | break; | ||
63 | case 'mysql': | ||
64 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_access_tokens') . ' DROP FOREIGN KEY FK_368A4209A76ED395'); | ||
65 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_access_tokens') . ' ADD CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES `wallabag_user` (id) ON DELETE CASCADE'); | ||
66 | |||
67 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_clients') . ' DROP FOREIGN KEY IDX_user_oauth_client'); | ||
68 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_clients') . ' ADD CONSTRAINT FK_635D765EA76ED395 FOREIGN KEY (user_id) REFERENCES `wallabag_user` (id)'); | ||
69 | |||
70 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_refresh_tokens') . ' DROP FOREIGN KEY FK_20C9FB24A76ED395'); | ||
71 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_refresh_tokens') . ' ADD CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES `wallabag_user` (id) ON DELETE CASCADE'); | ||
72 | |||
73 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_auth_codes') . ' DROP FOREIGN KEY FK_EE52E3FAA76ED395'); | ||
74 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_auth_codes') . ' ADD CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES `wallabag_user` (id) ON DELETE CASCADE'); | ||
75 | break; | ||
76 | case 'postgresql': | ||
77 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_access_tokens') . ' DROP CONSTRAINT FK_368A4209A76ED395'); | ||
78 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_access_tokens') . ' ADD CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||
79 | |||
80 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_clients') . ' DROP CONSTRAINT idx_user_oauth_client'); | ||
81 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_clients') . ' ADD CONSTRAINT FK_635D765EA76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||
82 | |||
83 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_refresh_tokens') . ' DROP CONSTRAINT FK_20C9FB24A76ED395'); | ||
84 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_refresh_tokens') . ' ADD CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||
85 | |||
86 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_auth_codes') . ' DROP CONSTRAINT FK_EE52E3FAA76ED395'); | ||
87 | $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_auth_codes') . ' ADD CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); | ||
88 | break; | ||
89 | } | ||
90 | } | ||
91 | |||
92 | public function down(Schema $schema): void | ||
93 | { | ||
94 | throw new SkipMigrationException('Too complex ...'); | ||
95 | } | ||
96 | } | ||
diff --git a/app/DoctrineMigrations/Version20190601125843.php b/app/DoctrineMigrations/Version20190601125843.php new file mode 100644 index 00000000..0e97606e --- /dev/null +++ b/app/DoctrineMigrations/Version20190601125843.php | |||
@@ -0,0 +1,54 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Application\Migrations; | ||
4 | |||
5 | use Doctrine\DBAL\Schema\Schema; | ||
6 | use Wallabag\CoreBundle\Doctrine\WallabagMigration; | ||
7 | |||
8 | /** | ||
9 | * Added `given_url` & `hashed_given_url` field in entry table. | ||
10 | */ | ||
11 | class Version20190601125843 extends WallabagMigration | ||
12 | { | ||
13 | /** | ||
14 | * @param Schema $schema | ||
15 | */ | ||
16 | public function up(Schema $schema) | ||
17 | { | ||
18 | $entryTable = $schema->getTable($this->getTable('entry')); | ||
19 | |||
20 | if (!$entryTable->hasColumn('given_url')) { | ||
21 | $entryTable->addColumn('given_url', 'text', [ | ||
22 | 'notnull' => false, | ||
23 | ]); | ||
24 | } | ||
25 | |||
26 | if (!$entryTable->hasColumn('hashed_given_url')) { | ||
27 | $entryTable->addColumn('hashed_given_url', 'text', [ | ||
28 | 'length' => 40, | ||
29 | 'notnull' => false, | ||
30 | ]); | ||
31 | } | ||
32 | |||
33 | // 40 = length of sha1 field hashed_given_url | ||
34 | $entryTable->addIndex(['user_id', 'hashed_given_url'], 'hashed_given_url_user_id', [], ['lengths' => [null, 40]]); | ||
35 | } | ||
36 | |||
37 | /** | ||
38 | * @param Schema $schema | ||
39 | */ | ||
40 | public function down(Schema $schema) | ||
41 | { | ||
42 | $entryTable = $schema->getTable($this->getTable('entry')); | ||
43 | |||
44 | if ($entryTable->hasColumn('given_url')) { | ||
45 | $entryTable->dropColumn('given_url'); | ||
46 | } | ||
47 | |||
48 | if ($entryTable->hasColumn('hashed_given_url')) { | ||
49 | $entryTable->dropColumn('hashed_given_url'); | ||
50 | } | ||
51 | |||
52 | $entryTable->dropIndex('hashed_given_url_user_id'); | ||
53 | } | ||
54 | } | ||
diff --git a/app/Resources/static/themes/material/css/cards.scss b/app/Resources/static/themes/material/css/cards.scss index c893b376..9ae1be82 100644 --- a/app/Resources/static/themes/material/css/cards.scss +++ b/app/Resources/static/themes/material/css/cards.scss | |||
@@ -18,6 +18,24 @@ main { | |||
18 | overflow: hidden; | 18 | overflow: hidden; |
19 | } | 19 | } |
20 | 20 | ||
21 | @mixin mixin-reading-time { | ||
22 | .reading-time { | ||
23 | display: inline-flex; | ||
24 | vertical-align: middle; | ||
25 | |||
26 | .card-reading-time, | ||
27 | .card-created-at { | ||
28 | display: inline-flex; | ||
29 | } | ||
30 | |||
31 | span { | ||
32 | margin-right: 5px; | ||
33 | } | ||
34 | |||
35 | @content; | ||
36 | } | ||
37 | } | ||
38 | |||
21 | .card { | 39 | .card { |
22 | .card-content .card-title, | 40 | .card-content .card-title, |
23 | .card-reveal .card-title { | 41 | .card-reveal .card-title { |
@@ -98,19 +116,7 @@ main { | |||
98 | margin-right: 5px !important; | 116 | margin-right: 5px !important; |
99 | } | 117 | } |
100 | 118 | ||
101 | .reading-time { | 119 | @include mixin-reading-time; |
102 | display: inline-flex; | ||
103 | vertical-align: middle; | ||
104 | |||
105 | .card-reading-time, | ||
106 | .card-created-at { | ||
107 | display: inline-flex; | ||
108 | } | ||
109 | |||
110 | span { | ||
111 | margin-right: 5px; | ||
112 | } | ||
113 | } | ||
114 | } | 120 | } |
115 | 121 | ||
116 | .card-image { | 122 | .card-image { |
@@ -235,10 +241,18 @@ a.original:not(.waves-effect) { | |||
235 | } | 241 | } |
236 | 242 | ||
237 | div.metadata { | 243 | div.metadata { |
244 | overflow: hidden; | ||
245 | height: 1.5em; | ||
246 | display: flex; | ||
247 | |||
248 | ul.tags { | ||
249 | margin-left: 4px; | ||
250 | } | ||
251 | |||
238 | .chip { | 252 | .chip { |
239 | background-color: $blueAccentColor; | 253 | background-color: $blueAccentColor; |
240 | padding: 0 7px; | 254 | padding: 0 7px; |
241 | margin: auto 2px; | 255 | margin: auto 1px; |
242 | border-radius: 6px; | 256 | border-radius: 6px; |
243 | line-height: 22px; | 257 | line-height: 22px; |
244 | height: 22px; | 258 | height: 22px; |
@@ -255,6 +269,16 @@ a.original:not(.waves-effect) { | |||
255 | padding-left: 8px; | 269 | padding-left: 8px; |
256 | } | 270 | } |
257 | } | 271 | } |
272 | |||
273 | @include mixin-reading-time { | ||
274 | padding: 0 5px; | ||
275 | flex-wrap: wrap; | ||
276 | margin-left: auto; | ||
277 | |||
278 | i.material-icons { | ||
279 | font-size: 20px; | ||
280 | } | ||
281 | } | ||
258 | } | 282 | } |
259 | 283 | ||
260 | div.card-content { | 284 | div.card-content { |
diff --git a/app/Resources/static/themes/material/css/media_queries.scss b/app/Resources/static/themes/material/css/media_queries.scss index 491eedce..6f9d2a95 100644 --- a/app/Resources/static/themes/material/css/media_queries.scss +++ b/app/Resources/static/themes/material/css/media_queries.scss | |||
@@ -173,6 +173,10 @@ | |||
173 | .row .col { | 173 | .row .col { |
174 | padding: 0; | 174 | padding: 0; |
175 | } | 175 | } |
176 | |||
177 | .card-stacked div.metadata .reading-time { | ||
178 | display: none; | ||
179 | } | ||
176 | } | 180 | } |
177 | 181 | ||
178 | @media screen and (max-width: 310px), | 182 | @media screen and (max-width: 310px), |
diff --git a/app/config/config.yml b/app/config/config.yml index 078f277a..bbcc682f 100644 --- a/app/config/config.yml +++ b/app/config/config.yml | |||
@@ -370,3 +370,25 @@ jms_serializer: | |||
370 | sensio_framework_extra: | 370 | sensio_framework_extra: |
371 | router: | 371 | router: |
372 | annotations: false | 372 | annotations: false |
373 | |||
374 | httplug: | ||
375 | clients: | ||
376 | wallabag_core: | ||
377 | factory: 'wallabag_core.http_client_factory' | ||
378 | config: | ||
379 | defaults: | ||
380 | timeout: 10 | ||
381 | plugins: ['httplug.plugin.logger'] | ||
382 | wallabag_core.entry.download_images: | ||
383 | factory: 'httplug.factory.auto' | ||
384 | plugins: ['httplug.plugin.logger'] | ||
385 | wallabag_import.pocket.client: | ||
386 | factory: 'httplug.factory.auto' | ||
387 | plugins: | ||
388 | - 'httplug.plugin.logger' | ||
389 | - header_defaults: | ||
390 | headers: | ||
391 | 'content-type': 'application/json' | ||
392 | 'X-Accept': 'application/json' | ||
393 | discovery: | ||
394 | client: false | ||
diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml index 44e29aac..59d2e9e2 100644 --- a/app/config/config_prod.yml +++ b/app/config/config_prod.yml | |||
@@ -23,3 +23,6 @@ monolog: | |||
23 | level: debug | 23 | level: debug |
24 | console: | 24 | console: |
25 | type: console | 25 | type: console |
26 | |||
27 | sentry: | ||
28 | dsn: "%sentry_dsn%" | ||
diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist index 13e2584f..9948fa46 100644 --- a/app/config/parameters.yml.dist +++ b/app/config/parameters.yml.dist | |||
@@ -36,7 +36,7 @@ parameters: | |||
36 | locale: en | 36 | locale: en |
37 | 37 | ||
38 | # A secret key that's used to generate certain security-related tokens | 38 | # A secret key that's used to generate certain security-related tokens |
39 | secret: ovmpmAWXRCabNlMgzlzFXDYmCFfzGv | 39 | secret: CHANGE_ME_TO_SOMETHING_SECRET_AND_RANDOM |
40 | 40 | ||
41 | # two factor stuff | 41 | # two factor stuff |
42 | twofactor_auth: true | 42 | twofactor_auth: true |
@@ -63,3 +63,6 @@ parameters: | |||
63 | redis_port: 6379 | 63 | redis_port: 6379 |
64 | redis_path: null | 64 | redis_path: null |
65 | redis_password: null | 65 | redis_password: null |
66 | |||
67 | # sentry logging | ||
68 | sentry_dsn: ~ | ||
diff --git a/app/config/wallabag.yml b/app/config/wallabag.yml index 96dfacf9..ea1cce12 100644 --- a/app/config/wallabag.yml +++ b/app/config/wallabag.yml | |||
@@ -1,5 +1,5 @@ | |||
1 | wallabag_core: | 1 | wallabag_core: |
2 | version: 2.3.8-dev | 2 | version: 2.4.0-dev |
3 | paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb" | 3 | paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb" |
4 | languages: | 4 | languages: |
5 | en: 'English' | 5 | en: 'English' |
diff --git a/composer.json b/composer.json index b1c144c7..44ac3474 100644 --- a/composer.json +++ b/composer.json | |||
@@ -63,11 +63,11 @@ | |||
63 | "nelmio/api-doc-bundle": "^2.13.2", | 63 | "nelmio/api-doc-bundle": "^2.13.2", |
64 | "mgargano/simplehtmldom": "~1.5", | 64 | "mgargano/simplehtmldom": "~1.5", |
65 | "wallabag/tcpdf": "^6.2.26", | 65 | "wallabag/tcpdf": "^6.2.26", |
66 | "simplepie/simplepie": "~1.5", | ||
67 | "willdurand/hateoas-bundle": "~1.3", | 66 | "willdurand/hateoas-bundle": "~1.3", |
68 | "liip/theme-bundle": "^1.4.6", | 67 | "liip/theme-bundle": "^1.4.6", |
69 | "lexik/form-filter-bundle": "^5.0", | 68 | "lexik/form-filter-bundle": "^5.0.4", |
70 | "j0k3r/graby": "^1.0", | 69 | "j0k3r/graby": "^2.0", |
70 | "php-http/guzzle5-adapter": "^2.0", | ||
71 | "friendsofsymfony/user-bundle": "2.0.*", | 71 | "friendsofsymfony/user-bundle": "2.0.*", |
72 | "friendsofsymfony/oauth-server-bundle": "^1.5", | 72 | "friendsofsymfony/oauth-server-bundle": "^1.5", |
73 | "stof/doctrine-extensions-bundle": "^1.2", | 73 | "stof/doctrine-extensions-bundle": "^1.2", |
@@ -89,7 +89,9 @@ | |||
89 | "bdunogier/guzzle-site-authenticator": "^1.0.0", | 89 | "bdunogier/guzzle-site-authenticator": "^1.0.0", |
90 | "defuse/php-encryption": "^2.1", | 90 | "defuse/php-encryption": "^2.1", |
91 | "html2text/html2text": "^4.1", | 91 | "html2text/html2text": "^4.1", |
92 | "pragmarx/recovery": "^0.1.0" | 92 | "pragmarx/recovery": "^0.1.0", |
93 | "php-http/httplug-bundle": "^1.14", | ||
94 | "sentry/sentry-symfony": "^3.0" | ||
93 | }, | 95 | }, |
94 | "require-dev": { | 96 | "require-dev": { |
95 | "doctrine/doctrine-fixtures-bundle": "~3.0", | 97 | "doctrine/doctrine-fixtures-bundle": "~3.0", |
@@ -101,7 +103,9 @@ | |||
101 | "phpstan/phpstan": "^0.11.0", | 103 | "phpstan/phpstan": "^0.11.0", |
102 | "phpstan/phpstan-phpunit": "^0.11.0", | 104 | "phpstan/phpstan-phpunit": "^0.11.0", |
103 | "phpstan/phpstan-symfony": "^0.11.0", | 105 | "phpstan/phpstan-symfony": "^0.11.0", |
104 | "phpstan/phpstan-doctrine": "^0.11.0" | 106 | "phpstan/phpstan-doctrine": "^0.11.0", |
107 | "php-http/mock-client": "^1.0", | ||
108 | "guzzlehttp/psr7": "^1.0" | ||
105 | }, | 109 | }, |
106 | "suggest": { | 110 | "suggest": { |
107 | "ext-imagick": "To keep GIF animation when downloading image is enabled" | 111 | "ext-imagick": "To keep GIF animation when downloading image is enabled" |
diff --git a/composer.lock b/composer.lock new file mode 100644 index 00000000..effd6029 --- /dev/null +++ b/composer.lock | |||
@@ -0,0 +1,10927 @@ | |||
1 | { | ||
2 | "_readme": [ | ||
3 | "This file locks the dependencies of your project to a known state", | ||
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | ||
5 | "This file is @generated automatically" | ||
6 | ], | ||
7 | "content-hash": "7e872d70c69629db503d9b8ed18e0f40", | ||
8 | "packages": [ | ||
9 | { | ||
10 | "name": "bdunogier/guzzle-site-authenticator", | ||
11 | "version": "1.0.0", | ||
12 | "source": { | ||
13 | "type": "git", | ||
14 | "url": "https://github.com/wallabag/guzzle-site-authenticator.git", | ||
15 | "reference": "6649aca6f13c27088ef34e4202b31fc0da01d987" | ||
16 | }, | ||
17 | "dist": { | ||
18 | "type": "zip", | ||
19 | "url": "https://api.github.com/repos/wallabag/guzzle-site-authenticator/zipball/6649aca6f13c27088ef34e4202b31fc0da01d987", | ||
20 | "reference": "6649aca6f13c27088ef34e4202b31fc0da01d987", | ||
21 | "shasum": "" | ||
22 | }, | ||
23 | "require": { | ||
24 | "guzzlehttp/guzzle": "^5.2.0", | ||
25 | "psr/log": "^1.0.0", | ||
26 | "symfony/expression-language": "^3.2" | ||
27 | }, | ||
28 | "require-dev": { | ||
29 | "friendsofphp/php-cs-fixer": "~2.0", | ||
30 | "monolog/monolog": "^1.13", | ||
31 | "php-coveralls/php-coveralls": "~1.0", | ||
32 | "symfony/phpunit-bridge": "^4.2" | ||
33 | }, | ||
34 | "type": "library", | ||
35 | "extra": { | ||
36 | "branch-alias": { | ||
37 | "dev-master": "1.0.x-dev" | ||
38 | } | ||
39 | }, | ||
40 | "autoload": { | ||
41 | "psr-4": { | ||
42 | "BD\\GuzzleSiteAuthenticatorBundle\\": "bundle/", | ||
43 | "BD\\GuzzleSiteAuthenticator\\": "lib/" | ||
44 | } | ||
45 | }, | ||
46 | "notification-url": "https://packagist.org/downloads/", | ||
47 | "license": [ | ||
48 | "MIT" | ||
49 | ], | ||
50 | "authors": [ | ||
51 | { | ||
52 | "name": "Bertrand Dunogier", | ||
53 | "email": "bertrand.dunogier@gmail.com" | ||
54 | } | ||
55 | ], | ||
56 | "description": "A guzzle plugin that adds, if necessary, authentication data to requests. Uses credentials and cookies, with login requests to the sites.", | ||
57 | "time": "2018-12-13T21:06:29+00:00" | ||
58 | }, | ||
59 | { | ||
60 | "name": "behat/transliterator", | ||
61 | "version": "v1.2.0", | ||
62 | "source": { | ||
63 | "type": "git", | ||
64 | "url": "https://github.com/Behat/Transliterator.git", | ||
65 | "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c" | ||
66 | }, | ||
67 | "dist": { | ||
68 | "type": "zip", | ||
69 | "url": "https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", | ||
70 | "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", | ||
71 | "shasum": "" | ||
72 | }, | ||
73 | "require": { | ||
74 | "php": ">=5.3.3" | ||
75 | }, | ||
76 | "require-dev": { | ||
77 | "chuyskywalker/rolling-curl": "^3.1", | ||
78 | "php-yaoi/php-yaoi": "^1.0" | ||
79 | }, | ||
80 | "type": "library", | ||
81 | "extra": { | ||
82 | "branch-alias": { | ||
83 | "dev-master": "1.2-dev" | ||
84 | } | ||
85 | }, | ||
86 | "autoload": { | ||
87 | "psr-0": { | ||
88 | "Behat\\Transliterator": "src/" | ||
89 | } | ||
90 | }, | ||
91 | "notification-url": "https://packagist.org/downloads/", | ||
92 | "license": [ | ||
93 | "Artistic-1.0" | ||
94 | ], | ||
95 | "description": "String transliterator", | ||
96 | "keywords": [ | ||
97 | "i18n", | ||
98 | "slug", | ||
99 | "transliterator" | ||
100 | ], | ||
101 | "time": "2017-04-04T11:38:05+00:00" | ||
102 | }, | ||
103 | { | ||
104 | "name": "clue/stream-filter", | ||
105 | "version": "v1.4.1", | ||
106 | "source": { | ||
107 | "type": "git", | ||
108 | "url": "https://github.com/clue/php-stream-filter.git", | ||
109 | "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71" | ||
110 | }, | ||
111 | "dist": { | ||
112 | "type": "zip", | ||
113 | "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", | ||
114 | "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", | ||
115 | "shasum": "" | ||
116 | }, | ||
117 | "require": { | ||
118 | "php": ">=5.3" | ||
119 | }, | ||
120 | "require-dev": { | ||
121 | "phpunit/phpunit": "^5.0 || ^4.8" | ||
122 | }, | ||
123 | "type": "library", | ||
124 | "autoload": { | ||
125 | "psr-4": { | ||
126 | "Clue\\StreamFilter\\": "src/" | ||
127 | }, | ||
128 | "files": [ | ||
129 | "src/functions_include.php" | ||
130 | ] | ||
131 | }, | ||
132 | "notification-url": "https://packagist.org/downloads/", | ||
133 | "license": [ | ||
134 | "MIT" | ||
135 | ], | ||
136 | "authors": [ | ||
137 | { | ||
138 | "name": "Christian Lück", | ||
139 | "email": "christian@lueck.tv" | ||
140 | } | ||
141 | ], | ||
142 | "description": "A simple and modern approach to stream filtering in PHP", | ||
143 | "homepage": "https://github.com/clue/php-stream-filter", | ||
144 | "keywords": [ | ||
145 | "bucket brigade", | ||
146 | "callback", | ||
147 | "filter", | ||
148 | "php_user_filter", | ||
149 | "stream", | ||
150 | "stream_filter_append", | ||
151 | "stream_filter_register" | ||
152 | ], | ||
153 | "time": "2019-04-09T12:31:48+00:00" | ||
154 | }, | ||
155 | { | ||
156 | "name": "composer/ca-bundle", | ||
157 | "version": "1.1.4", | ||
158 | "source": { | ||
159 | "type": "git", | ||
160 | "url": "https://github.com/composer/ca-bundle.git", | ||
161 | "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d" | ||
162 | }, | ||
163 | "dist": { | ||
164 | "type": "zip", | ||
165 | "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d", | ||
166 | "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d", | ||
167 | "shasum": "" | ||
168 | }, | ||
169 | "require": { | ||
170 | "ext-openssl": "*", | ||
171 | "ext-pcre": "*", | ||
172 | "php": "^5.3.2 || ^7.0" | ||
173 | }, | ||
174 | "require-dev": { | ||
175 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", | ||
176 | "psr/log": "^1.0", | ||
177 | "symfony/process": "^2.5 || ^3.0 || ^4.0" | ||
178 | }, | ||
179 | "type": "library", | ||
180 | "extra": { | ||
181 | "branch-alias": { | ||
182 | "dev-master": "1.x-dev" | ||
183 | } | ||
184 | }, | ||
185 | "autoload": { | ||
186 | "psr-4": { | ||
187 | "Composer\\CaBundle\\": "src" | ||
188 | } | ||
189 | }, | ||
190 | "notification-url": "https://packagist.org/downloads/", | ||
191 | "license": [ | ||
192 | "MIT" | ||
193 | ], | ||
194 | "authors": [ | ||
195 | { | ||
196 | "name": "Jordi Boggiano", | ||
197 | "email": "j.boggiano@seld.be", | ||
198 | "homepage": "http://seld.be" | ||
199 | } | ||
200 | ], | ||
201 | "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", | ||
202 | "keywords": [ | ||
203 | "cabundle", | ||
204 | "cacert", | ||
205 | "certificate", | ||
206 | "ssl", | ||
207 | "tls" | ||
208 | ], | ||
209 | "time": "2019-01-28T09:30:10+00:00" | ||
210 | }, | ||
211 | { | ||
212 | "name": "craue/config-bundle", | ||
213 | "version": "dev-utf8mb4", | ||
214 | "source": { | ||
215 | "type": "git", | ||
216 | "url": "https://github.com/wallabag/CraueConfigBundle.git", | ||
217 | "reference": "46cfd37febc51d62e84e4c64fdb166e7495ca172" | ||
218 | }, | ||
219 | "dist": { | ||
220 | "type": "zip", | ||
221 | "url": "https://api.github.com/repos/wallabag/CraueConfigBundle/zipball/46cfd37febc51d62e84e4c64fdb166e7495ca172", | ||
222 | "reference": "46cfd37febc51d62e84e4c64fdb166e7495ca172", | ||
223 | "shasum": "" | ||
224 | }, | ||
225 | "require": { | ||
226 | "doctrine/doctrine-bundle": "~1.3", | ||
227 | "php": "^5.3.9|~7.0", | ||
228 | "symfony/framework-bundle": "~2.7|~3.0|~4.0" | ||
229 | }, | ||
230 | "require-dev": { | ||
231 | "doctrine/doctrine-cache-bundle": "~1.3", | ||
232 | "doctrine/orm": "^2.3.1", | ||
233 | "phpunit/phpunit": "^4.8.35|~5.7|~6.0", | ||
234 | "symfony/phpunit-bridge": "~3.2|~4.0", | ||
235 | "symfony/symfony": "~2.7|~3.0|~4.0" | ||
236 | }, | ||
237 | "type": "symfony-bundle", | ||
238 | "extra": { | ||
239 | "branch-alias": { | ||
240 | "dev-master": "2.1.x-dev" | ||
241 | } | ||
242 | }, | ||
243 | "autoload": { | ||
244 | "psr-4": { | ||
245 | "Craue\\ConfigBundle\\": "" | ||
246 | }, | ||
247 | "exclude-from-classmap": [ | ||
248 | "/Tests/" | ||
249 | ] | ||
250 | }, | ||
251 | "license": [ | ||
252 | "MIT" | ||
253 | ], | ||
254 | "authors": [ | ||
255 | { | ||
256 | "name": "Christian Raue", | ||
257 | "email": "christian.raue@gmail.com" | ||
258 | }, | ||
259 | { | ||
260 | "name": "Symfony Community", | ||
261 | "homepage": "https://github.com/craue/CraueConfigBundle/contributors" | ||
262 | } | ||
263 | ], | ||
264 | "description": "Database-stored settings made available via a service for your Symfony project.", | ||
265 | "homepage": "https://github.com/craue/CraueConfigBundle", | ||
266 | "keywords": [ | ||
267 | "config", | ||
268 | "symfony2", | ||
269 | "symfony3", | ||
270 | "symfony4" | ||
271 | ], | ||
272 | "support": { | ||
273 | "source": "https://github.com/wallabag/CraueConfigBundle/tree/utf8mb4" | ||
274 | }, | ||
275 | "time": "2018-11-28T19:15:35+00:00" | ||
276 | }, | ||
277 | { | ||
278 | "name": "defuse/php-encryption", | ||
279 | "version": "v2.2.1", | ||
280 | "source": { | ||
281 | "type": "git", | ||
282 | "url": "https://github.com/defuse/php-encryption.git", | ||
283 | "reference": "0f407c43b953d571421e0020ba92082ed5fb7620" | ||
284 | }, | ||
285 | "dist": { | ||
286 | "type": "zip", | ||
287 | "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620", | ||
288 | "reference": "0f407c43b953d571421e0020ba92082ed5fb7620", | ||
289 | "shasum": "" | ||
290 | }, | ||
291 | "require": { | ||
292 | "ext-openssl": "*", | ||
293 | "paragonie/random_compat": ">= 2", | ||
294 | "php": ">=5.4.0" | ||
295 | }, | ||
296 | "require-dev": { | ||
297 | "nikic/php-parser": "^2.0|^3.0|^4.0", | ||
298 | "phpunit/phpunit": "^4|^5" | ||
299 | }, | ||
300 | "bin": [ | ||
301 | "bin/generate-defuse-key" | ||
302 | ], | ||
303 | "type": "library", | ||
304 | "autoload": { | ||
305 | "psr-4": { | ||
306 | "Defuse\\Crypto\\": "src" | ||
307 | } | ||
308 | }, | ||
309 | "notification-url": "https://packagist.org/downloads/", | ||
310 | "license": [ | ||
311 | "MIT" | ||
312 | ], | ||
313 | "authors": [ | ||
314 | { | ||
315 | "name": "Taylor Hornby", | ||
316 | "email": "taylor@defuse.ca", | ||
317 | "homepage": "https://defuse.ca/" | ||
318 | }, | ||
319 | { | ||
320 | "name": "Scott Arciszewski", | ||
321 | "email": "info@paragonie.com", | ||
322 | "homepage": "https://paragonie.com" | ||
323 | } | ||
324 | ], | ||
325 | "description": "Secure PHP Encryption Library", | ||
326 | "keywords": [ | ||
327 | "aes", | ||
328 | "authenticated encryption", | ||
329 | "cipher", | ||
330 | "crypto", | ||
331 | "cryptography", | ||
332 | "encrypt", | ||
333 | "encryption", | ||
334 | "openssl", | ||
335 | "security", | ||
336 | "symmetric key cryptography" | ||
337 | ], | ||
338 | "time": "2018-07-24T23:27:56+00:00" | ||
339 | }, | ||
340 | { | ||
341 | "name": "doctrine/annotations", | ||
342 | "version": "v1.6.1", | ||
343 | "source": { | ||
344 | "type": "git", | ||
345 | "url": "https://github.com/doctrine/annotations.git", | ||
346 | "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24" | ||
347 | }, | ||
348 | "dist": { | ||
349 | "type": "zip", | ||
350 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/53120e0eb10355388d6ccbe462f1fea34ddadb24", | ||
351 | "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24", | ||
352 | "shasum": "" | ||
353 | }, | ||
354 | "require": { | ||
355 | "doctrine/lexer": "1.*", | ||
356 | "php": "^7.1" | ||
357 | }, | ||
358 | "require-dev": { | ||
359 | "doctrine/cache": "1.*", | ||
360 | "phpunit/phpunit": "^6.4" | ||
361 | }, | ||
362 | "type": "library", | ||
363 | "extra": { | ||
364 | "branch-alias": { | ||
365 | "dev-master": "1.6.x-dev" | ||
366 | } | ||
367 | }, | ||
368 | "autoload": { | ||
369 | "psr-4": { | ||
370 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" | ||
371 | } | ||
372 | }, | ||
373 | "notification-url": "https://packagist.org/downloads/", | ||
374 | "license": [ | ||
375 | "MIT" | ||
376 | ], | ||
377 | "authors": [ | ||
378 | { | ||
379 | "name": "Roman Borschel", | ||
380 | "email": "roman@code-factory.org" | ||
381 | }, | ||
382 | { | ||
383 | "name": "Benjamin Eberlei", | ||
384 | "email": "kontakt@beberlei.de" | ||
385 | }, | ||
386 | { | ||
387 | "name": "Guilherme Blanco", | ||
388 | "email": "guilhermeblanco@gmail.com" | ||
389 | }, | ||
390 | { | ||
391 | "name": "Jonathan Wage", | ||
392 | "email": "jonwage@gmail.com" | ||
393 | }, | ||
394 | { | ||
395 | "name": "Johannes Schmitt", | ||
396 | "email": "schmittjoh@gmail.com" | ||
397 | } | ||
398 | ], | ||
399 | "description": "Docblock Annotations Parser", | ||
400 | "homepage": "http://www.doctrine-project.org", | ||
401 | "keywords": [ | ||
402 | "annotations", | ||
403 | "docblock", | ||
404 | "parser" | ||
405 | ], | ||
406 | "time": "2019-03-25T19:12:02+00:00" | ||
407 | }, | ||
408 | { | ||
409 | "name": "doctrine/cache", | ||
410 | "version": "v1.8.0", | ||
411 | "source": { | ||
412 | "type": "git", | ||
413 | "url": "https://github.com/doctrine/cache.git", | ||
414 | "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" | ||
415 | }, | ||
416 | "dist": { | ||
417 | "type": "zip", | ||
418 | "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", | ||
419 | "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", | ||
420 | "shasum": "" | ||
421 | }, | ||
422 | "require": { | ||
423 | "php": "~7.1" | ||
424 | }, | ||
425 | "conflict": { | ||
426 | "doctrine/common": ">2.2,<2.4" | ||
427 | }, | ||
428 | "require-dev": { | ||
429 | "alcaeus/mongo-php-adapter": "^1.1", | ||
430 | "doctrine/coding-standard": "^4.0", | ||
431 | "mongodb/mongodb": "^1.1", | ||
432 | "phpunit/phpunit": "^7.0", | ||
433 | "predis/predis": "~1.0" | ||
434 | }, | ||
435 | "suggest": { | ||
436 | "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" | ||
437 | }, | ||
438 | "type": "library", | ||
439 | "extra": { | ||
440 | "branch-alias": { | ||
441 | "dev-master": "1.8.x-dev" | ||
442 | } | ||
443 | }, | ||
444 | "autoload": { | ||
445 | "psr-4": { | ||
446 | "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" | ||
447 | } | ||
448 | }, | ||
449 | "notification-url": "https://packagist.org/downloads/", | ||
450 | "license": [ | ||
451 | "MIT" | ||
452 | ], | ||
453 | "authors": [ | ||
454 | { | ||
455 | "name": "Roman Borschel", | ||
456 | "email": "roman@code-factory.org" | ||
457 | }, | ||
458 | { | ||
459 | "name": "Benjamin Eberlei", | ||
460 | "email": "kontakt@beberlei.de" | ||
461 | }, | ||
462 | { | ||
463 | "name": "Guilherme Blanco", | ||
464 | "email": "guilhermeblanco@gmail.com" | ||
465 | }, | ||
466 | { | ||
467 | "name": "Jonathan Wage", | ||
468 | "email": "jonwage@gmail.com" | ||
469 | }, | ||
470 | { | ||
471 | "name": "Johannes Schmitt", | ||
472 | "email": "schmittjoh@gmail.com" | ||
473 | } | ||
474 | ], | ||
475 | "description": "Caching library offering an object-oriented API for many cache backends", | ||
476 | "homepage": "https://www.doctrine-project.org", | ||
477 | "keywords": [ | ||
478 | "cache", | ||
479 | "caching" | ||
480 | ], | ||
481 | "time": "2018-08-21T18:01:43+00:00" | ||
482 | }, | ||
483 | { | ||
484 | "name": "doctrine/collections", | ||
485 | "version": "v1.6.1", | ||
486 | "source": { | ||
487 | "type": "git", | ||
488 | "url": "https://github.com/doctrine/collections.git", | ||
489 | "reference": "d2ae4ef05e25197343b6a39bae1d3c427a2f6956" | ||
490 | }, | ||
491 | "dist": { | ||
492 | "type": "zip", | ||
493 | "url": "https://api.github.com/repos/doctrine/collections/zipball/d2ae4ef05e25197343b6a39bae1d3c427a2f6956", | ||
494 | "reference": "d2ae4ef05e25197343b6a39bae1d3c427a2f6956", | ||
495 | "shasum": "" | ||
496 | }, | ||
497 | "require": { | ||
498 | "php": "^7.1.3" | ||
499 | }, | ||
500 | "require-dev": { | ||
501 | "doctrine/coding-standard": "^6.0", | ||
502 | "phpstan/phpstan-shim": "^0.9.2", | ||
503 | "phpunit/phpunit": "^7.0", | ||
504 | "vimeo/psalm": "^3.2.2" | ||
505 | }, | ||
506 | "type": "library", | ||
507 | "extra": { | ||
508 | "branch-alias": { | ||
509 | "dev-master": "1.6.x-dev" | ||
510 | } | ||
511 | }, | ||
512 | "autoload": { | ||
513 | "psr-4": { | ||
514 | "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" | ||
515 | } | ||
516 | }, | ||
517 | "notification-url": "https://packagist.org/downloads/", | ||
518 | "license": [ | ||
519 | "MIT" | ||
520 | ], | ||
521 | "authors": [ | ||
522 | { | ||
523 | "name": "Roman Borschel", | ||
524 | "email": "roman@code-factory.org" | ||
525 | }, | ||
526 | { | ||
527 | "name": "Benjamin Eberlei", | ||
528 | "email": "kontakt@beberlei.de" | ||
529 | }, | ||
530 | { | ||
531 | "name": "Guilherme Blanco", | ||
532 | "email": "guilhermeblanco@gmail.com" | ||
533 | }, | ||
534 | { | ||
535 | "name": "Jonathan Wage", | ||
536 | "email": "jonwage@gmail.com" | ||
537 | }, | ||
538 | { | ||
539 | "name": "Johannes Schmitt", | ||
540 | "email": "schmittjoh@gmail.com" | ||
541 | } | ||
542 | ], | ||
543 | "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", | ||
544 | "homepage": "https://www.doctrine-project.org/projects/collections.html", | ||
545 | "keywords": [ | ||
546 | "array", | ||
547 | "collections", | ||
548 | "iterators", | ||
549 | "php" | ||
550 | ], | ||
551 | "time": "2019-03-25T19:03:48+00:00" | ||
552 | }, | ||
553 | { | ||
554 | "name": "doctrine/common", | ||
555 | "version": "v2.10.0", | ||
556 | "source": { | ||
557 | "type": "git", | ||
558 | "url": "https://github.com/doctrine/common.git", | ||
559 | "reference": "30e33f60f64deec87df728c02b107f82cdafad9d" | ||
560 | }, | ||
561 | "dist": { | ||
562 | "type": "zip", | ||
563 | "url": "https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d", | ||
564 | "reference": "30e33f60f64deec87df728c02b107f82cdafad9d", | ||
565 | "shasum": "" | ||
566 | }, | ||
567 | "require": { | ||
568 | "doctrine/annotations": "^1.0", | ||
569 | "doctrine/cache": "^1.0", | ||
570 | "doctrine/collections": "^1.0", | ||
571 | "doctrine/event-manager": "^1.0", | ||
572 | "doctrine/inflector": "^1.0", | ||
573 | "doctrine/lexer": "^1.0", | ||
574 | "doctrine/persistence": "^1.1", | ||
575 | "doctrine/reflection": "^1.0", | ||
576 | "php": "^7.1" | ||
577 | }, | ||
578 | "require-dev": { | ||
579 | "doctrine/coding-standard": "^1.0", | ||
580 | "phpunit/phpunit": "^6.3", | ||
581 | "squizlabs/php_codesniffer": "^3.0", | ||
582 | "symfony/phpunit-bridge": "^4.0.5" | ||
583 | }, | ||
584 | "type": "library", | ||
585 | "extra": { | ||
586 | "branch-alias": { | ||
587 | "dev-master": "2.10.x-dev" | ||
588 | } | ||
589 | }, | ||
590 | "autoload": { | ||
591 | "psr-4": { | ||
592 | "Doctrine\\Common\\": "lib/Doctrine/Common" | ||
593 | } | ||
594 | }, | ||
595 | "notification-url": "https://packagist.org/downloads/", | ||
596 | "license": [ | ||
597 | "MIT" | ||
598 | ], | ||
599 | "authors": [ | ||
600 | { | ||
601 | "name": "Roman Borschel", | ||
602 | "email": "roman@code-factory.org" | ||
603 | }, | ||
604 | { | ||
605 | "name": "Benjamin Eberlei", | ||
606 | "email": "kontakt@beberlei.de" | ||
607 | }, | ||
608 | { | ||
609 | "name": "Guilherme Blanco", | ||
610 | "email": "guilhermeblanco@gmail.com" | ||
611 | }, | ||
612 | { | ||
613 | "name": "Jonathan Wage", | ||
614 | "email": "jonwage@gmail.com" | ||
615 | }, | ||
616 | { | ||
617 | "name": "Johannes Schmitt", | ||
618 | "email": "schmittjoh@gmail.com" | ||
619 | }, | ||
620 | { | ||
621 | "name": "Marco Pivetta", | ||
622 | "email": "ocramius@gmail.com" | ||
623 | } | ||
624 | ], | ||
625 | "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", | ||
626 | "homepage": "https://www.doctrine-project.org/projects/common.html", | ||
627 | "keywords": [ | ||
628 | "common", | ||
629 | "doctrine", | ||
630 | "php" | ||
631 | ], | ||
632 | "time": "2018-11-21T01:24:55+00:00" | ||
633 | }, | ||
634 | { | ||
635 | "name": "doctrine/dbal", | ||
636 | "version": "v2.9.2", | ||
637 | "source": { | ||
638 | "type": "git", | ||
639 | "url": "https://github.com/doctrine/dbal.git", | ||
640 | "reference": "22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9" | ||
641 | }, | ||
642 | "dist": { | ||
643 | "type": "zip", | ||
644 | "url": "https://api.github.com/repos/doctrine/dbal/zipball/22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9", | ||
645 | "reference": "22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9", | ||
646 | "shasum": "" | ||
647 | }, | ||
648 | "require": { | ||
649 | "doctrine/cache": "^1.0", | ||
650 | "doctrine/event-manager": "^1.0", | ||
651 | "ext-pdo": "*", | ||
652 | "php": "^7.1" | ||
653 | }, | ||
654 | "require-dev": { | ||
655 | "doctrine/coding-standard": "^5.0", | ||
656 | "jetbrains/phpstorm-stubs": "^2018.1.2", | ||
657 | "phpstan/phpstan": "^0.10.1", | ||
658 | "phpunit/phpunit": "^7.4", | ||
659 | "symfony/console": "^2.0.5|^3.0|^4.0", | ||
660 | "symfony/phpunit-bridge": "^3.4.5|^4.0.5" | ||
661 | }, | ||
662 | "suggest": { | ||
663 | "symfony/console": "For helpful console commands such as SQL execution and import of files." | ||
664 | }, | ||
665 | "bin": [ | ||
666 | "bin/doctrine-dbal" | ||
667 | ], | ||
668 | "type": "library", | ||
669 | "extra": { | ||
670 | "branch-alias": { | ||
671 | "dev-master": "2.9.x-dev", | ||
672 | "dev-develop": "3.0.x-dev" | ||
673 | } | ||
674 | }, | ||
675 | "autoload": { | ||
676 | "psr-4": { | ||
677 | "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" | ||
678 | } | ||
679 | }, | ||
680 | "notification-url": "https://packagist.org/downloads/", | ||
681 | "license": [ | ||
682 | "MIT" | ||
683 | ], | ||
684 | "authors": [ | ||
685 | { | ||
686 | "name": "Roman Borschel", | ||
687 | "email": "roman@code-factory.org" | ||
688 | }, | ||
689 | { | ||
690 | "name": "Benjamin Eberlei", | ||
691 | "email": "kontakt@beberlei.de" | ||
692 | }, | ||
693 | { | ||
694 | "name": "Guilherme Blanco", | ||
695 | "email": "guilhermeblanco@gmail.com" | ||
696 | }, | ||
697 | { | ||
698 | "name": "Jonathan Wage", | ||
699 | "email": "jonwage@gmail.com" | ||
700 | } | ||
701 | ], | ||
702 | "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", | ||
703 | "homepage": "https://www.doctrine-project.org/projects/dbal.html", | ||
704 | "keywords": [ | ||
705 | "abstraction", | ||
706 | "database", | ||
707 | "dbal", | ||
708 | "mysql", | ||
709 | "persistence", | ||
710 | "pgsql", | ||
711 | "php", | ||
712 | "queryobject" | ||
713 | ], | ||
714 | "time": "2018-12-31T03:27:51+00:00" | ||
715 | }, | ||
716 | { | ||
717 | "name": "doctrine/doctrine-bundle", | ||
718 | "version": "1.11.2", | ||
719 | "source": { | ||
720 | "type": "git", | ||
721 | "url": "https://github.com/doctrine/DoctrineBundle.git", | ||
722 | "reference": "28101e20776d8fa20a00b54947fbae2db0d09103" | ||
723 | }, | ||
724 | "dist": { | ||
725 | "type": "zip", | ||
726 | "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/28101e20776d8fa20a00b54947fbae2db0d09103", | ||
727 | "reference": "28101e20776d8fa20a00b54947fbae2db0d09103", | ||
728 | "shasum": "" | ||
729 | }, | ||
730 | "require": { | ||
731 | "doctrine/dbal": "^2.5.12", | ||
732 | "doctrine/doctrine-cache-bundle": "~1.2", | ||
733 | "jdorn/sql-formatter": "^1.2.16", | ||
734 | "php": "^7.1", | ||
735 | "symfony/config": "^3.4|^4.1", | ||
736 | "symfony/console": "^3.4|^4.1", | ||
737 | "symfony/dependency-injection": "^3.4|^4.1", | ||
738 | "symfony/doctrine-bridge": "^3.4|^4.1", | ||
739 | "symfony/framework-bundle": "^3.4|^4.1" | ||
740 | }, | ||
741 | "conflict": { | ||
742 | "doctrine/orm": "<2.6", | ||
743 | "twig/twig": "<1.34|>=2.0,<2.4" | ||
744 | }, | ||
745 | "require-dev": { | ||
746 | "doctrine/coding-standard": "^6.0", | ||
747 | "doctrine/orm": "^2.6", | ||
748 | "php-coveralls/php-coveralls": "^2.1", | ||
749 | "phpunit/phpunit": "7.0", | ||
750 | "symfony/cache": "^3.4|^4.1", | ||
751 | "symfony/phpunit-bridge": "^4.2", | ||
752 | "symfony/property-info": "^3.4|^4.1", | ||
753 | "symfony/validator": "^3.4|^4.1", | ||
754 | "symfony/web-profiler-bundle": "^3.4|^4.1", | ||
755 | "symfony/yaml": "^3.4|^4.1", | ||
756 | "twig/twig": "^1.34|^2.4" | ||
757 | }, | ||
758 | "suggest": { | ||
759 | "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", | ||
760 | "symfony/web-profiler-bundle": "To use the data collector." | ||
761 | }, | ||
762 | "type": "symfony-bundle", | ||
763 | "extra": { | ||
764 | "branch-alias": { | ||
765 | "dev-master": "1.11.x-dev" | ||
766 | } | ||
767 | }, | ||
768 | "autoload": { | ||
769 | "psr-4": { | ||
770 | "Doctrine\\Bundle\\DoctrineBundle\\": "" | ||
771 | } | ||
772 | }, | ||
773 | "notification-url": "https://packagist.org/downloads/", | ||
774 | "license": [ | ||
775 | "MIT" | ||
776 | ], | ||
777 | "authors": [ | ||
778 | { | ||
779 | "name": "Symfony Community", | ||
780 | "homepage": "http://symfony.com/contributors" | ||
781 | }, | ||
782 | { | ||
783 | "name": "Benjamin Eberlei", | ||
784 | "email": "kontakt@beberlei.de" | ||
785 | }, | ||
786 | { | ||
787 | "name": "Doctrine Project", | ||
788 | "homepage": "http://www.doctrine-project.org/" | ||
789 | }, | ||
790 | { | ||
791 | "name": "Fabien Potencier", | ||
792 | "email": "fabien@symfony.com" | ||
793 | } | ||
794 | ], | ||
795 | "description": "Symfony DoctrineBundle", | ||
796 | "homepage": "http://www.doctrine-project.org", | ||
797 | "keywords": [ | ||
798 | "database", | ||
799 | "dbal", | ||
800 | "orm", | ||
801 | "persistence" | ||
802 | ], | ||
803 | "time": "2019-06-04T07:35:05+00:00" | ||
804 | }, | ||
805 | { | ||
806 | "name": "doctrine/doctrine-cache-bundle", | ||
807 | "version": "1.3.5", | ||
808 | "source": { | ||
809 | "type": "git", | ||
810 | "url": "https://github.com/doctrine/DoctrineCacheBundle.git", | ||
811 | "reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927" | ||
812 | }, | ||
813 | "dist": { | ||
814 | "type": "zip", | ||
815 | "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927", | ||
816 | "reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927", | ||
817 | "shasum": "" | ||
818 | }, | ||
819 | "require": { | ||
820 | "doctrine/cache": "^1.4.2", | ||
821 | "doctrine/inflector": "~1.0", | ||
822 | "php": ">=5.3.2", | ||
823 | "symfony/doctrine-bridge": "~2.7|~3.3|~4.0" | ||
824 | }, | ||
825 | "require-dev": { | ||
826 | "instaclick/coding-standard": "~1.1", | ||
827 | "instaclick/object-calisthenics-sniffs": "dev-master", | ||
828 | "instaclick/symfony2-coding-standard": "dev-remaster", | ||
829 | "phpunit/phpunit": "~4.8.36|~5.6|~6.5|~7.0", | ||
830 | "predis/predis": "~0.8", | ||
831 | "satooshi/php-coveralls": "^1.0", | ||
832 | "squizlabs/php_codesniffer": "~1.5", | ||
833 | "symfony/console": "~2.7|~3.3|~4.0", | ||
834 | "symfony/finder": "~2.7|~3.3|~4.0", | ||
835 | "symfony/framework-bundle": "~2.7|~3.3|~4.0", | ||
836 | "symfony/phpunit-bridge": "~2.7|~3.3|~4.0", | ||
837 | "symfony/security-acl": "~2.7|~3.3", | ||
838 | "symfony/validator": "~2.7|~3.3|~4.0", | ||
839 | "symfony/yaml": "~2.7|~3.3|~4.0" | ||
840 | }, | ||
841 | "suggest": { | ||
842 | "symfony/security-acl": "For using this bundle to cache ACLs" | ||
843 | }, | ||
844 | "type": "symfony-bundle", | ||
845 | "extra": { | ||
846 | "branch-alias": { | ||
847 | "dev-master": "1.3.x-dev" | ||
848 | } | ||
849 | }, | ||
850 | "autoload": { | ||
851 | "psr-4": { | ||
852 | "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" | ||
853 | }, | ||
854 | "exclude-from-classmap": [ | ||
855 | "/Tests/" | ||
856 | ] | ||
857 | }, | ||
858 | "notification-url": "https://packagist.org/downloads/", | ||
859 | "license": [ | ||
860 | "MIT" | ||
861 | ], | ||
862 | "authors": [ | ||
863 | { | ||
864 | "name": "Symfony Community", | ||
865 | "homepage": "http://symfony.com/contributors" | ||
866 | }, | ||
867 | { | ||
868 | "name": "Benjamin Eberlei", | ||
869 | "email": "kontakt@beberlei.de" | ||
870 | }, | ||
871 | { | ||
872 | "name": "Fabio B. Silva", | ||
873 | "email": "fabio.bat.silva@gmail.com" | ||
874 | }, | ||
875 | { | ||
876 | "name": "Guilherme Blanco", | ||
877 | "email": "guilhermeblanco@hotmail.com" | ||
878 | }, | ||
879 | { | ||
880 | "name": "Doctrine Project", | ||
881 | "homepage": "http://www.doctrine-project.org/" | ||
882 | }, | ||
883 | { | ||
884 | "name": "Fabien Potencier", | ||
885 | "email": "fabien@symfony.com" | ||
886 | } | ||
887 | ], | ||
888 | "description": "Symfony Bundle for Doctrine Cache", | ||
889 | "homepage": "https://www.doctrine-project.org", | ||
890 | "keywords": [ | ||
891 | "cache", | ||
892 | "caching" | ||
893 | ], | ||
894 | "time": "2018-11-09T06:25:35+00:00" | ||
895 | }, | ||
896 | { | ||
897 | "name": "doctrine/doctrine-migrations-bundle", | ||
898 | "version": "v1.3.2", | ||
899 | "source": { | ||
900 | "type": "git", | ||
901 | "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", | ||
902 | "reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce" | ||
903 | }, | ||
904 | "dist": { | ||
905 | "type": "zip", | ||
906 | "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce", | ||
907 | "reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce", | ||
908 | "shasum": "" | ||
909 | }, | ||
910 | "require": { | ||
911 | "doctrine/doctrine-bundle": "~1.0", | ||
912 | "doctrine/migrations": "^1.1", | ||
913 | "php": ">=5.4.0", | ||
914 | "symfony/framework-bundle": "~2.7|~3.3|~4.0" | ||
915 | }, | ||
916 | "require-dev": { | ||
917 | "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^7.4" | ||
918 | }, | ||
919 | "type": "symfony-bundle", | ||
920 | "extra": { | ||
921 | "branch-alias": { | ||
922 | "dev-master": "1.3-dev" | ||
923 | } | ||
924 | }, | ||
925 | "autoload": { | ||
926 | "psr-4": { | ||
927 | "Doctrine\\Bundle\\MigrationsBundle\\": "" | ||
928 | } | ||
929 | }, | ||
930 | "notification-url": "https://packagist.org/downloads/", | ||
931 | "license": [ | ||
932 | "MIT" | ||
933 | ], | ||
934 | "authors": [ | ||
935 | { | ||
936 | "name": "Symfony Community", | ||
937 | "homepage": "http://symfony.com/contributors" | ||
938 | }, | ||
939 | { | ||
940 | "name": "Doctrine Project", | ||
941 | "homepage": "http://www.doctrine-project.org" | ||
942 | }, | ||
943 | { | ||
944 | "name": "Fabien Potencier", | ||
945 | "email": "fabien@symfony.com" | ||
946 | } | ||
947 | ], | ||
948 | "description": "Symfony DoctrineMigrationsBundle", | ||
949 | "homepage": "http://www.doctrine-project.org", | ||
950 | "keywords": [ | ||
951 | "dbal", | ||
952 | "migrations", | ||
953 | "schema" | ||
954 | ], | ||
955 | "time": "2018-12-03T11:55:33+00:00" | ||
956 | }, | ||
957 | { | ||
958 | "name": "doctrine/event-manager", | ||
959 | "version": "v1.0.0", | ||
960 | "source": { | ||
961 | "type": "git", | ||
962 | "url": "https://github.com/doctrine/event-manager.git", | ||
963 | "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" | ||
964 | }, | ||
965 | "dist": { | ||
966 | "type": "zip", | ||
967 | "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", | ||
968 | "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", | ||
969 | "shasum": "" | ||
970 | }, | ||
971 | "require": { | ||
972 | "php": "^7.1" | ||
973 | }, | ||
974 | "conflict": { | ||
975 | "doctrine/common": "<2.9@dev" | ||
976 | }, | ||
977 | "require-dev": { | ||
978 | "doctrine/coding-standard": "^4.0", | ||
979 | "phpunit/phpunit": "^7.0" | ||
980 | }, | ||
981 | "type": "library", | ||
982 | "extra": { | ||
983 | "branch-alias": { | ||
984 | "dev-master": "1.0.x-dev" | ||
985 | } | ||
986 | }, | ||
987 | "autoload": { | ||
988 | "psr-4": { | ||
989 | "Doctrine\\Common\\": "lib/Doctrine/Common" | ||
990 | } | ||
991 | }, | ||
992 | "notification-url": "https://packagist.org/downloads/", | ||
993 | "license": [ | ||
994 | "MIT" | ||
995 | ], | ||
996 | "authors": [ | ||
997 | { | ||
998 | "name": "Roman Borschel", | ||
999 | "email": "roman@code-factory.org" | ||
1000 | }, | ||
1001 | { | ||
1002 | "name": "Benjamin Eberlei", | ||
1003 | "email": "kontakt@beberlei.de" | ||
1004 | }, | ||
1005 | { | ||
1006 | "name": "Guilherme Blanco", | ||
1007 | "email": "guilhermeblanco@gmail.com" | ||
1008 | }, | ||
1009 | { | ||
1010 | "name": "Jonathan Wage", | ||
1011 | "email": "jonwage@gmail.com" | ||
1012 | }, | ||
1013 | { | ||
1014 | "name": "Johannes Schmitt", | ||
1015 | "email": "schmittjoh@gmail.com" | ||
1016 | }, | ||
1017 | { | ||
1018 | "name": "Marco Pivetta", | ||
1019 | "email": "ocramius@gmail.com" | ||
1020 | } | ||
1021 | ], | ||
1022 | "description": "Doctrine Event Manager component", | ||
1023 | "homepage": "https://www.doctrine-project.org/projects/event-manager.html", | ||
1024 | "keywords": [ | ||
1025 | "event", | ||
1026 | "eventdispatcher", | ||
1027 | "eventmanager" | ||
1028 | ], | ||
1029 | "time": "2018-06-11T11:59:03+00:00" | ||
1030 | }, | ||
1031 | { | ||
1032 | "name": "doctrine/inflector", | ||
1033 | "version": "v1.3.0", | ||
1034 | "source": { | ||
1035 | "type": "git", | ||
1036 | "url": "https://github.com/doctrine/inflector.git", | ||
1037 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a" | ||
1038 | }, | ||
1039 | "dist": { | ||
1040 | "type": "zip", | ||
1041 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", | ||
1042 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a", | ||
1043 | "shasum": "" | ||
1044 | }, | ||
1045 | "require": { | ||
1046 | "php": "^7.1" | ||
1047 | }, | ||
1048 | "require-dev": { | ||
1049 | "phpunit/phpunit": "^6.2" | ||
1050 | }, | ||
1051 | "type": "library", | ||
1052 | "extra": { | ||
1053 | "branch-alias": { | ||
1054 | "dev-master": "1.3.x-dev" | ||
1055 | } | ||
1056 | }, | ||
1057 | "autoload": { | ||
1058 | "psr-4": { | ||
1059 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" | ||
1060 | } | ||
1061 | }, | ||
1062 | "notification-url": "https://packagist.org/downloads/", | ||
1063 | "license": [ | ||
1064 | "MIT" | ||
1065 | ], | ||
1066 | "authors": [ | ||
1067 | { | ||
1068 | "name": "Roman Borschel", | ||
1069 | "email": "roman@code-factory.org" | ||
1070 | }, | ||
1071 | { | ||
1072 | "name": "Benjamin Eberlei", | ||
1073 | "email": "kontakt@beberlei.de" | ||
1074 | }, | ||
1075 | { | ||
1076 | "name": "Guilherme Blanco", | ||
1077 | "email": "guilhermeblanco@gmail.com" | ||
1078 | }, | ||
1079 | { | ||
1080 | "name": "Jonathan Wage", | ||
1081 | "email": "jonwage@gmail.com" | ||
1082 | }, | ||
1083 | { | ||
1084 | "name": "Johannes Schmitt", | ||
1085 | "email": "schmittjoh@gmail.com" | ||
1086 | } | ||
1087 | ], | ||
1088 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", | ||
1089 | "homepage": "http://www.doctrine-project.org", | ||
1090 | "keywords": [ | ||
1091 | "inflection", | ||
1092 | "pluralize", | ||
1093 | "singularize", | ||
1094 | "string" | ||
1095 | ], | ||
1096 | "time": "2018-01-09T20:05:19+00:00" | ||
1097 | }, | ||
1098 | { | ||
1099 | "name": "doctrine/instantiator", | ||
1100 | "version": "1.2.0", | ||
1101 | "source": { | ||
1102 | "type": "git", | ||
1103 | "url": "https://github.com/doctrine/instantiator.git", | ||
1104 | "reference": "a2c590166b2133a4633738648b6b064edae0814a" | ||
1105 | }, | ||
1106 | "dist": { | ||
1107 | "type": "zip", | ||
1108 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", | ||
1109 | "reference": "a2c590166b2133a4633738648b6b064edae0814a", | ||
1110 | "shasum": "" | ||
1111 | }, | ||
1112 | "require": { | ||
1113 | "php": "^7.1" | ||
1114 | }, | ||
1115 | "require-dev": { | ||
1116 | "doctrine/coding-standard": "^6.0", | ||
1117 | "ext-pdo": "*", | ||
1118 | "ext-phar": "*", | ||
1119 | "phpbench/phpbench": "^0.13", | ||
1120 | "phpstan/phpstan-phpunit": "^0.11", | ||
1121 | "phpstan/phpstan-shim": "^0.11", | ||
1122 | "phpunit/phpunit": "^7.0" | ||
1123 | }, | ||
1124 | "type": "library", | ||
1125 | "extra": { | ||
1126 | "branch-alias": { | ||
1127 | "dev-master": "1.2.x-dev" | ||
1128 | } | ||
1129 | }, | ||
1130 | "autoload": { | ||
1131 | "psr-4": { | ||
1132 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" | ||
1133 | } | ||
1134 | }, | ||
1135 | "notification-url": "https://packagist.org/downloads/", | ||
1136 | "license": [ | ||
1137 | "MIT" | ||
1138 | ], | ||
1139 | "authors": [ | ||
1140 | { | ||
1141 | "name": "Marco Pivetta", | ||
1142 | "email": "ocramius@gmail.com", | ||
1143 | "homepage": "http://ocramius.github.com/" | ||
1144 | } | ||
1145 | ], | ||
1146 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", | ||
1147 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", | ||
1148 | "keywords": [ | ||
1149 | "constructor", | ||
1150 | "instantiate" | ||
1151 | ], | ||
1152 | "time": "2019-03-17T17:37:11+00:00" | ||
1153 | }, | ||
1154 | { | ||
1155 | "name": "doctrine/lexer", | ||
1156 | "version": "v1.0.1", | ||
1157 | "source": { | ||
1158 | "type": "git", | ||
1159 | "url": "https://github.com/doctrine/lexer.git", | ||
1160 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" | ||
1161 | }, | ||
1162 | "dist": { | ||
1163 | "type": "zip", | ||
1164 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", | ||
1165 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", | ||
1166 | "shasum": "" | ||
1167 | }, | ||
1168 | "require": { | ||
1169 | "php": ">=5.3.2" | ||
1170 | }, | ||
1171 | "type": "library", | ||
1172 | "extra": { | ||
1173 | "branch-alias": { | ||
1174 | "dev-master": "1.0.x-dev" | ||
1175 | } | ||
1176 | }, | ||
1177 | "autoload": { | ||
1178 | "psr-0": { | ||
1179 | "Doctrine\\Common\\Lexer\\": "lib/" | ||
1180 | } | ||
1181 | }, | ||
1182 | "notification-url": "https://packagist.org/downloads/", | ||
1183 | "license": [ | ||
1184 | "MIT" | ||
1185 | ], | ||
1186 | "authors": [ | ||
1187 | { | ||
1188 | "name": "Roman Borschel", | ||
1189 | "email": "roman@code-factory.org" | ||
1190 | }, | ||
1191 | { | ||
1192 | "name": "Guilherme Blanco", | ||
1193 | "email": "guilhermeblanco@gmail.com" | ||
1194 | }, | ||
1195 | { | ||
1196 | "name": "Johannes Schmitt", | ||
1197 | "email": "schmittjoh@gmail.com" | ||
1198 | } | ||
1199 | ], | ||
1200 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", | ||
1201 | "homepage": "http://www.doctrine-project.org", | ||
1202 | "keywords": [ | ||
1203 | "lexer", | ||
1204 | "parser" | ||
1205 | ], | ||
1206 | "time": "2014-09-09T13:34:57+00:00" | ||
1207 | }, | ||
1208 | { | ||
1209 | "name": "doctrine/migrations", | ||
1210 | "version": "v1.8.1", | ||
1211 | "source": { | ||
1212 | "type": "git", | ||
1213 | "url": "https://github.com/doctrine/migrations.git", | ||
1214 | "reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6" | ||
1215 | }, | ||
1216 | "dist": { | ||
1217 | "type": "zip", | ||
1218 | "url": "https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6", | ||
1219 | "reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6", | ||
1220 | "shasum": "" | ||
1221 | }, | ||
1222 | "require": { | ||
1223 | "doctrine/dbal": "~2.6", | ||
1224 | "ocramius/proxy-manager": "^1.0|^2.0", | ||
1225 | "php": "^7.1", | ||
1226 | "symfony/console": "~3.3|^4.0" | ||
1227 | }, | ||
1228 | "require-dev": { | ||
1229 | "doctrine/coding-standard": "^1.0", | ||
1230 | "doctrine/orm": "~2.5", | ||
1231 | "jdorn/sql-formatter": "~1.1", | ||
1232 | "mikey179/vfsstream": "^1.6", | ||
1233 | "phpunit/phpunit": "~7.0", | ||
1234 | "squizlabs/php_codesniffer": "^3.0", | ||
1235 | "symfony/yaml": "~3.3|^4.0" | ||
1236 | }, | ||
1237 | "suggest": { | ||
1238 | "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.", | ||
1239 | "symfony/yaml": "Allows the use of yaml for migration configuration files." | ||
1240 | }, | ||
1241 | "bin": [ | ||
1242 | "bin/doctrine-migrations" | ||
1243 | ], | ||
1244 | "type": "library", | ||
1245 | "extra": { | ||
1246 | "branch-alias": { | ||
1247 | "dev-master": "v1.8.x-dev" | ||
1248 | } | ||
1249 | }, | ||
1250 | "autoload": { | ||
1251 | "psr-4": { | ||
1252 | "Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations", | ||
1253 | "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" | ||
1254 | } | ||
1255 | }, | ||
1256 | "notification-url": "https://packagist.org/downloads/", | ||
1257 | "license": [ | ||
1258 | "MIT" | ||
1259 | ], | ||
1260 | "authors": [ | ||
1261 | { | ||
1262 | "name": "Benjamin Eberlei", | ||
1263 | "email": "kontakt@beberlei.de" | ||
1264 | }, | ||
1265 | { | ||
1266 | "name": "Jonathan Wage", | ||
1267 | "email": "jonwage@gmail.com" | ||
1268 | }, | ||
1269 | { | ||
1270 | "name": "Michael Simonson", | ||
1271 | "email": "contact@mikesimonson.com" | ||
1272 | } | ||
1273 | ], | ||
1274 | "description": "Database Schema migrations using Doctrine DBAL", | ||
1275 | "homepage": "https://www.doctrine-project.org/projects/migrations.html", | ||
1276 | "keywords": [ | ||
1277 | "database", | ||
1278 | "migrations" | ||
1279 | ], | ||
1280 | "time": "2018-06-06T21:00:30+00:00" | ||
1281 | }, | ||
1282 | { | ||
1283 | "name": "doctrine/orm", | ||
1284 | "version": "v2.6.3", | ||
1285 | "source": { | ||
1286 | "type": "git", | ||
1287 | "url": "https://github.com/doctrine/orm.git", | ||
1288 | "reference": "434820973cadf2da2d66e7184be370084cc32ca8" | ||
1289 | }, | ||
1290 | "dist": { | ||
1291 | "type": "zip", | ||
1292 | "url": "https://api.github.com/repos/doctrine/orm/zipball/434820973cadf2da2d66e7184be370084cc32ca8", | ||
1293 | "reference": "434820973cadf2da2d66e7184be370084cc32ca8", | ||
1294 | "shasum": "" | ||
1295 | }, | ||
1296 | "require": { | ||
1297 | "doctrine/annotations": "~1.5", | ||
1298 | "doctrine/cache": "~1.6", | ||
1299 | "doctrine/collections": "^1.4", | ||
1300 | "doctrine/common": "^2.7.1", | ||
1301 | "doctrine/dbal": "^2.6", | ||
1302 | "doctrine/instantiator": "~1.1", | ||
1303 | "ext-pdo": "*", | ||
1304 | "php": "^7.1", | ||
1305 | "symfony/console": "~3.0|~4.0" | ||
1306 | }, | ||
1307 | "require-dev": { | ||
1308 | "doctrine/coding-standard": "^1.0", | ||
1309 | "phpunit/phpunit": "^6.5", | ||
1310 | "squizlabs/php_codesniffer": "^3.2", | ||
1311 | "symfony/yaml": "~3.4|~4.0" | ||
1312 | }, | ||
1313 | "suggest": { | ||
1314 | "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" | ||
1315 | }, | ||
1316 | "bin": [ | ||
1317 | "bin/doctrine" | ||
1318 | ], | ||
1319 | "type": "library", | ||
1320 | "extra": { | ||
1321 | "branch-alias": { | ||
1322 | "dev-master": "2.6.x-dev" | ||
1323 | } | ||
1324 | }, | ||
1325 | "autoload": { | ||
1326 | "psr-4": { | ||
1327 | "Doctrine\\ORM\\": "lib/Doctrine/ORM" | ||
1328 | } | ||
1329 | }, | ||
1330 | "notification-url": "https://packagist.org/downloads/", | ||
1331 | "license": [ | ||
1332 | "MIT" | ||
1333 | ], | ||
1334 | "authors": [ | ||
1335 | { | ||
1336 | "name": "Roman Borschel", | ||
1337 | "email": "roman@code-factory.org" | ||
1338 | }, | ||
1339 | { | ||
1340 | "name": "Benjamin Eberlei", | ||
1341 | "email": "kontakt@beberlei.de" | ||
1342 | }, | ||
1343 | { | ||
1344 | "name": "Guilherme Blanco", | ||
1345 | "email": "guilhermeblanco@gmail.com" | ||
1346 | }, | ||
1347 | { | ||
1348 | "name": "Jonathan Wage", | ||
1349 | "email": "jonwage@gmail.com" | ||
1350 | }, | ||
1351 | { | ||
1352 | "name": "Marco Pivetta", | ||
1353 | "email": "ocramius@gmail.com" | ||
1354 | } | ||
1355 | ], | ||
1356 | "description": "Object-Relational-Mapper for PHP", | ||
1357 | "homepage": "http://www.doctrine-project.org", | ||
1358 | "keywords": [ | ||
1359 | "database", | ||
1360 | "orm" | ||
1361 | ], | ||
1362 | "time": "2018-11-20T23:46:46+00:00" | ||
1363 | }, | ||
1364 | { | ||
1365 | "name": "doctrine/persistence", | ||
1366 | "version": "1.1.1", | ||
1367 | "source": { | ||
1368 | "type": "git", | ||
1369 | "url": "https://github.com/doctrine/persistence.git", | ||
1370 | "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48" | ||
1371 | }, | ||
1372 | "dist": { | ||
1373 | "type": "zip", | ||
1374 | "url": "https://api.github.com/repos/doctrine/persistence/zipball/3da7c9d125591ca83944f477e65ed3d7b4617c48", | ||
1375 | "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48", | ||
1376 | "shasum": "" | ||
1377 | }, | ||
1378 | "require": { | ||
1379 | "doctrine/annotations": "^1.0", | ||
1380 | "doctrine/cache": "^1.0", | ||
1381 | "doctrine/collections": "^1.0", | ||
1382 | "doctrine/event-manager": "^1.0", | ||
1383 | "doctrine/reflection": "^1.0", | ||
1384 | "php": "^7.1" | ||
1385 | }, | ||
1386 | "conflict": { | ||
1387 | "doctrine/common": "<2.10@dev" | ||
1388 | }, | ||
1389 | "require-dev": { | ||
1390 | "doctrine/coding-standard": "^5.0", | ||
1391 | "phpstan/phpstan": "^0.8", | ||
1392 | "phpunit/phpunit": "^7.0" | ||
1393 | }, | ||
1394 | "type": "library", | ||
1395 | "extra": { | ||
1396 | "branch-alias": { | ||
1397 | "dev-master": "1.1.x-dev" | ||
1398 | } | ||
1399 | }, | ||
1400 | "autoload": { | ||
1401 | "psr-4": { | ||
1402 | "Doctrine\\Common\\": "lib/Doctrine/Common" | ||
1403 | } | ||
1404 | }, | ||
1405 | "notification-url": "https://packagist.org/downloads/", | ||
1406 | "license": [ | ||
1407 | "MIT" | ||
1408 | ], | ||
1409 | "authors": [ | ||
1410 | { | ||
1411 | "name": "Roman Borschel", | ||
1412 | "email": "roman@code-factory.org" | ||
1413 | }, | ||
1414 | { | ||
1415 | "name": "Benjamin Eberlei", | ||
1416 | "email": "kontakt@beberlei.de" | ||
1417 | }, | ||
1418 | { | ||
1419 | "name": "Guilherme Blanco", | ||
1420 | "email": "guilhermeblanco@gmail.com" | ||
1421 | }, | ||
1422 | { | ||
1423 | "name": "Jonathan Wage", | ||
1424 | "email": "jonwage@gmail.com" | ||
1425 | }, | ||
1426 | { | ||
1427 | "name": "Johannes Schmitt", | ||
1428 | "email": "schmittjoh@gmail.com" | ||
1429 | }, | ||
1430 | { | ||
1431 | "name": "Marco Pivetta", | ||
1432 | "email": "ocramius@gmail.com" | ||
1433 | } | ||
1434 | ], | ||
1435 | "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", | ||
1436 | "homepage": "https://doctrine-project.org/projects/persistence.html", | ||
1437 | "keywords": [ | ||
1438 | "mapper", | ||
1439 | "object", | ||
1440 | "odm", | ||
1441 | "orm", | ||
1442 | "persistence" | ||
1443 | ], | ||
1444 | "time": "2019-04-23T08:28:24+00:00" | ||
1445 | }, | ||
1446 | { | ||
1447 | "name": "doctrine/reflection", | ||
1448 | "version": "v1.0.0", | ||
1449 | "source": { | ||
1450 | "type": "git", | ||
1451 | "url": "https://github.com/doctrine/reflection.git", | ||
1452 | "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6" | ||
1453 | }, | ||
1454 | "dist": { | ||
1455 | "type": "zip", | ||
1456 | "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6", | ||
1457 | "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6", | ||
1458 | "shasum": "" | ||
1459 | }, | ||
1460 | "require": { | ||
1461 | "doctrine/annotations": "^1.0", | ||
1462 | "ext-tokenizer": "*", | ||
1463 | "php": "^7.1" | ||
1464 | }, | ||
1465 | "require-dev": { | ||
1466 | "doctrine/coding-standard": "^4.0", | ||
1467 | "doctrine/common": "^2.8", | ||
1468 | "phpstan/phpstan": "^0.9.2", | ||
1469 | "phpstan/phpstan-phpunit": "^0.9.4", | ||
1470 | "phpunit/phpunit": "^7.0", | ||
1471 | "squizlabs/php_codesniffer": "^3.0" | ||
1472 | }, | ||
1473 | "type": "library", | ||
1474 | "extra": { | ||
1475 | "branch-alias": { | ||
1476 | "dev-master": "1.0.x-dev" | ||
1477 | } | ||
1478 | }, | ||
1479 | "autoload": { | ||
1480 | "psr-4": { | ||
1481 | "Doctrine\\Common\\": "lib/Doctrine/Common" | ||
1482 | } | ||
1483 | }, | ||
1484 | "notification-url": "https://packagist.org/downloads/", | ||
1485 | "license": [ | ||
1486 | "MIT" | ||
1487 | ], | ||
1488 | "authors": [ | ||
1489 | { | ||
1490 | "name": "Roman Borschel", | ||
1491 | "email": "roman@code-factory.org" | ||
1492 | }, | ||
1493 | { | ||
1494 | "name": "Benjamin Eberlei", | ||
1495 | "email": "kontakt@beberlei.de" | ||
1496 | }, | ||
1497 | { | ||
1498 | "name": "Guilherme Blanco", | ||
1499 | "email": "guilhermeblanco@gmail.com" | ||
1500 | }, | ||
1501 | { | ||
1502 | "name": "Jonathan Wage", | ||
1503 | "email": "jonwage@gmail.com" | ||
1504 | }, | ||
1505 | { | ||
1506 | "name": "Johannes Schmitt", | ||
1507 | "email": "schmittjoh@gmail.com" | ||
1508 | }, | ||
1509 | { | ||
1510 | "name": "Marco Pivetta", | ||
1511 | "email": "ocramius@gmail.com" | ||
1512 | } | ||
1513 | ], | ||
1514 | "description": "Doctrine Reflection component", | ||
1515 | "homepage": "https://www.doctrine-project.org/projects/reflection.html", | ||
1516 | "keywords": [ | ||
1517 | "reflection" | ||
1518 | ], | ||
1519 | "time": "2018-06-14T14:45:07+00:00" | ||
1520 | }, | ||
1521 | { | ||
1522 | "name": "egulias/email-validator", | ||
1523 | "version": "2.1.8", | ||
1524 | "source": { | ||
1525 | "type": "git", | ||
1526 | "url": "https://github.com/egulias/EmailValidator.git", | ||
1527 | "reference": "c26463ff9241f27907112fbcd0c86fa670cfef98" | ||
1528 | }, | ||
1529 | "dist": { | ||
1530 | "type": "zip", | ||
1531 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c26463ff9241f27907112fbcd0c86fa670cfef98", | ||
1532 | "reference": "c26463ff9241f27907112fbcd0c86fa670cfef98", | ||
1533 | "shasum": "" | ||
1534 | }, | ||
1535 | "require": { | ||
1536 | "doctrine/lexer": "^1.0.1", | ||
1537 | "php": ">= 5.5" | ||
1538 | }, | ||
1539 | "require-dev": { | ||
1540 | "dominicsayers/isemail": "dev-master", | ||
1541 | "phpunit/phpunit": "^4.8.35||^5.7||^6.0", | ||
1542 | "satooshi/php-coveralls": "^1.0.1" | ||
1543 | }, | ||
1544 | "suggest": { | ||
1545 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" | ||
1546 | }, | ||
1547 | "type": "library", | ||
1548 | "extra": { | ||
1549 | "branch-alias": { | ||
1550 | "dev-master": "2.0.x-dev" | ||
1551 | } | ||
1552 | }, | ||
1553 | "autoload": { | ||
1554 | "psr-4": { | ||
1555 | "Egulias\\EmailValidator\\": "EmailValidator" | ||
1556 | } | ||
1557 | }, | ||
1558 | "notification-url": "https://packagist.org/downloads/", | ||
1559 | "license": [ | ||
1560 | "MIT" | ||
1561 | ], | ||
1562 | "authors": [ | ||
1563 | { | ||
1564 | "name": "Eduardo Gulias Davis" | ||
1565 | } | ||
1566 | ], | ||
1567 | "description": "A library for validating emails against several RFCs", | ||
1568 | "homepage": "https://github.com/egulias/EmailValidator", | ||
1569 | "keywords": [ | ||
1570 | "email", | ||
1571 | "emailvalidation", | ||
1572 | "emailvalidator", | ||
1573 | "validation", | ||
1574 | "validator" | ||
1575 | ], | ||
1576 | "time": "2019-05-16T22:02:54+00:00" | ||
1577 | }, | ||
1578 | { | ||
1579 | "name": "electrolinux/php-html5lib", | ||
1580 | "version": "0.1.0", | ||
1581 | "source": { | ||
1582 | "type": "git", | ||
1583 | "url": "https://github.com/electrolinux/php-html5lib.git", | ||
1584 | "reference": "9f92154993c7ecb120d9f9c0e558660d32846721" | ||
1585 | }, | ||
1586 | "dist": { | ||
1587 | "type": "zip", | ||
1588 | "url": "https://api.github.com/repos/electrolinux/php-html5lib/zipball/9f92154993c7ecb120d9f9c0e558660d32846721", | ||
1589 | "reference": "9f92154993c7ecb120d9f9c0e558660d32846721", | ||
1590 | "shasum": "" | ||
1591 | }, | ||
1592 | "require": { | ||
1593 | "php": ">=5.3.2" | ||
1594 | }, | ||
1595 | "type": "library", | ||
1596 | "autoload": { | ||
1597 | "psr-0": { | ||
1598 | "HTML5Lib": "src/", | ||
1599 | "HTML5Lib\\Tests": "tests/" | ||
1600 | } | ||
1601 | }, | ||
1602 | "notification-url": "https://packagist.org/downloads/", | ||
1603 | "license": [ | ||
1604 | "MIT" | ||
1605 | ], | ||
1606 | "authors": [ | ||
1607 | { | ||
1608 | "name": "Multiple users", | ||
1609 | "homepage": "https://code.google.com/p/html5lib/", | ||
1610 | "role": "Original developers" | ||
1611 | }, | ||
1612 | { | ||
1613 | "name": "Sébastien Lavoie", | ||
1614 | "homepage": "http://blog.lavoie.sl", | ||
1615 | "role": "Packager" | ||
1616 | }, | ||
1617 | { | ||
1618 | "name": "didier Belot", | ||
1619 | "role": "Packager" | ||
1620 | } | ||
1621 | ], | ||
1622 | "description": "A PHP implementations of a HTML parser based on the WHATWG HTML5 specification.", | ||
1623 | "homepage": "https://github.com/electrolinux/php-html5lib", | ||
1624 | "keywords": [ | ||
1625 | "HTML5", | ||
1626 | "php" | ||
1627 | ], | ||
1628 | "time": "2013-03-18T18:32:30+00:00" | ||
1629 | }, | ||
1630 | { | ||
1631 | "name": "fig/link-util", | ||
1632 | "version": "1.0.0", | ||
1633 | "source": { | ||
1634 | "type": "git", | ||
1635 | "url": "https://github.com/php-fig/link-util.git", | ||
1636 | "reference": "1a07821801a148be4add11ab0603e4af55a72fac" | ||
1637 | }, | ||
1638 | "dist": { | ||
1639 | "type": "zip", | ||
1640 | "url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac", | ||
1641 | "reference": "1a07821801a148be4add11ab0603e4af55a72fac", | ||
1642 | "shasum": "" | ||
1643 | }, | ||
1644 | "require": { | ||
1645 | "php": ">=5.5.0", | ||
1646 | "psr/link": "~1.0@dev" | ||
1647 | }, | ||
1648 | "require-dev": { | ||
1649 | "phpunit/phpunit": "^5.1", | ||
1650 | "squizlabs/php_codesniffer": "^2.3.1" | ||
1651 | }, | ||
1652 | "type": "library", | ||
1653 | "extra": { | ||
1654 | "branch-alias": { | ||
1655 | "dev-master": "1.0.x-dev" | ||
1656 | } | ||
1657 | }, | ||
1658 | "autoload": { | ||
1659 | "psr-4": { | ||
1660 | "Fig\\Link\\": "src/" | ||
1661 | } | ||
1662 | }, | ||
1663 | "notification-url": "https://packagist.org/downloads/", | ||
1664 | "license": [ | ||
1665 | "MIT" | ||
1666 | ], | ||
1667 | "authors": [ | ||
1668 | { | ||
1669 | "name": "PHP-FIG", | ||
1670 | "homepage": "http://www.php-fig.org/" | ||
1671 | } | ||
1672 | ], | ||
1673 | "description": "Common utility implementations for HTTP links", | ||
1674 | "keywords": [ | ||
1675 | "http", | ||
1676 | "http-link", | ||
1677 | "link", | ||
1678 | "psr", | ||
1679 | "psr-13", | ||
1680 | "rest" | ||
1681 | ], | ||
1682 | "time": "2016-10-17T18:31:11+00:00" | ||
1683 | }, | ||
1684 | { | ||
1685 | "name": "fossar/htmlawed", | ||
1686 | "version": "1.2.7", | ||
1687 | "source": { | ||
1688 | "type": "git", | ||
1689 | "url": "https://github.com/fossar/HTMLawed.git", | ||
1690 | "reference": "4f7505e9622a96242923895c3008719b2c2283d3" | ||
1691 | }, | ||
1692 | "dist": { | ||
1693 | "type": "zip", | ||
1694 | "url": "https://api.github.com/repos/fossar/HTMLawed/zipball/4f7505e9622a96242923895c3008719b2c2283d3", | ||
1695 | "reference": "4f7505e9622a96242923895c3008719b2c2283d3", | ||
1696 | "shasum": "" | ||
1697 | }, | ||
1698 | "require": { | ||
1699 | "php": ">4.4.0" | ||
1700 | }, | ||
1701 | "replace": { | ||
1702 | "htmlawed/htmlawed": "*" | ||
1703 | }, | ||
1704 | "type": "library", | ||
1705 | "autoload": { | ||
1706 | "files": [ | ||
1707 | "htmLawed.php" | ||
1708 | ] | ||
1709 | }, | ||
1710 | "notification-url": "https://packagist.org/downloads/", | ||
1711 | "license": [ | ||
1712 | "GPL-2.0+", | ||
1713 | "LGPL-3.0" | ||
1714 | ], | ||
1715 | "authors": [ | ||
1716 | { | ||
1717 | "name": "Santosh Patnaik", | ||
1718 | "homepage": "http://www.bioinformatics.org/people/index.php?user_hash=558b661f92d0ff7b", | ||
1719 | "role": "Developer" | ||
1720 | } | ||
1721 | ], | ||
1722 | "description": "htmLawed - Process text with HTML markup to make it more compliant with HTML standards and administrative policies", | ||
1723 | "homepage": "http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/", | ||
1724 | "keywords": [ | ||
1725 | "HTMLtidy", | ||
1726 | "html", | ||
1727 | "sanitize", | ||
1728 | "strip", | ||
1729 | "tags" | ||
1730 | ], | ||
1731 | "time": "2019-05-09T11:53:40+00:00" | ||
1732 | }, | ||
1733 | { | ||
1734 | "name": "friendsofsymfony/jsrouting-bundle", | ||
1735 | "version": "2.3.0", | ||
1736 | "source": { | ||
1737 | "type": "git", | ||
1738 | "url": "https://github.com/FriendsOfSymfony/FOSJsRoutingBundle.git", | ||
1739 | "reference": "c24d1820da8b6ec55cb2023b456f1d49dd2cbe62" | ||
1740 | }, | ||
1741 | "dist": { | ||
1742 | "type": "zip", | ||
1743 | "url": "https://api.github.com/repos/FriendsOfSymfony/FOSJsRoutingBundle/zipball/c24d1820da8b6ec55cb2023b456f1d49dd2cbe62", | ||
1744 | "reference": "c24d1820da8b6ec55cb2023b456f1d49dd2cbe62", | ||
1745 | "shasum": "" | ||
1746 | }, | ||
1747 | "require": { | ||
1748 | "php": "^5.3.9|^7.0", | ||
1749 | "symfony/console": "~2.7||~3.0|^4.0", | ||
1750 | "symfony/framework-bundle": "~2.7||~3.0|^4.0", | ||
1751 | "symfony/serializer": "~2.7||~3.0|^4.0", | ||
1752 | "willdurand/jsonp-callback-validator": "~1.0" | ||
1753 | }, | ||
1754 | "require-dev": { | ||
1755 | "symfony/expression-language": "~2.7||~3.0|^4.0", | ||
1756 | "symfony/phpunit-bridge": "^3.3|^4.0" | ||
1757 | }, | ||
1758 | "type": "symfony-bundle", | ||
1759 | "extra": { | ||
1760 | "branch-alias": { | ||
1761 | "dev-master": "2.0-dev" | ||
1762 | } | ||
1763 | }, | ||
1764 | "autoload": { | ||
1765 | "psr-4": { | ||
1766 | "FOS\\JsRoutingBundle\\": "" | ||
1767 | }, | ||
1768 | "exclude-from-classmap": [ | ||
1769 | "/Tests/" | ||
1770 | ] | ||
1771 | }, | ||
1772 | "notification-url": "https://packagist.org/downloads/", | ||
1773 | "license": [ | ||
1774 | "MIT" | ||
1775 | ], | ||
1776 | "authors": [ | ||
1777 | { | ||
1778 | "name": "FriendsOfSymfony Community", | ||
1779 | "homepage": "https://github.com/friendsofsymfony/FOSJsRoutingBundle/contributors" | ||
1780 | }, | ||
1781 | { | ||
1782 | "name": "William Durand", | ||
1783 | "email": "will+git@drnd.me" | ||
1784 | } | ||
1785 | ], | ||
1786 | "description": "A pretty nice way to expose your Symfony2 routing to client applications.", | ||
1787 | "homepage": "http://friendsofsymfony.github.com", | ||
1788 | "keywords": [ | ||
1789 | "Js Routing", | ||
1790 | "javascript", | ||
1791 | "routing" | ||
1792 | ], | ||
1793 | "time": "2019-02-03T16:01:06+00:00" | ||
1794 | }, | ||
1795 | { | ||
1796 | "name": "friendsofsymfony/oauth-server-bundle", | ||
1797 | "version": "1.6.2", | ||
1798 | "source": { | ||
1799 | "type": "git", | ||
1800 | "url": "https://github.com/FriendsOfSymfony/FOSOAuthServerBundle.git", | ||
1801 | "reference": "fcaa25cc49474bdb0db7894f880976fe76ffed23" | ||
1802 | }, | ||
1803 | "dist": { | ||
1804 | "type": "zip", | ||
1805 | "url": "https://api.github.com/repos/FriendsOfSymfony/FOSOAuthServerBundle/zipball/fcaa25cc49474bdb0db7894f880976fe76ffed23", | ||
1806 | "reference": "fcaa25cc49474bdb0db7894f880976fe76ffed23", | ||
1807 | "shasum": "" | ||
1808 | }, | ||
1809 | "require": { | ||
1810 | "friendsofsymfony/oauth2-php": "~1.1", | ||
1811 | "paragonie/random_compat": "^1|^2", | ||
1812 | "php": "^5.5|^7.0", | ||
1813 | "symfony/dependency-injection": "^2.8|~3.0|^4.0", | ||
1814 | "symfony/framework-bundle": "~2.8|~3.0|^4.0", | ||
1815 | "symfony/security-bundle": "~2.8|~3.0|^4.0" | ||
1816 | }, | ||
1817 | "require-dev": { | ||
1818 | "doctrine/doctrine-bundle": "~1.0", | ||
1819 | "doctrine/mongodb-odm": "~1.0", | ||
1820 | "doctrine/orm": "~2.2", | ||
1821 | "phing/phing": "~2.4", | ||
1822 | "php-mock/php-mock-phpunit": "^1.1", | ||
1823 | "phpunit/phpunit": "~4.8|~5.0", | ||
1824 | "propel/propel1": "^1.6.5", | ||
1825 | "symfony/class-loader": "~2.8|~3.0|^4.0", | ||
1826 | "symfony/console": "~2.8|~3.0|^4.0", | ||
1827 | "symfony/form": "~2.8|~3.0|^4.0", | ||
1828 | "symfony/phpunit-bridge": "~2.8|~3.0|^4.0", | ||
1829 | "symfony/templating": "~2.8|~3.0|^4.0", | ||
1830 | "symfony/twig-bundle": "~2.8|~3.0|^4.0", | ||
1831 | "symfony/yaml": "~2.8|~3.0|^4.0", | ||
1832 | "willdurand/propel-typehintable-behavior": "^1.0.4" | ||
1833 | }, | ||
1834 | "suggest": { | ||
1835 | "doctrine/doctrine-bundle": "*", | ||
1836 | "doctrine/mongodb-odm-bundle": "*", | ||
1837 | "propel/propel-bundle": "If you want to use Propel with Symfony2, then you will have to install the PropelBundle", | ||
1838 | "symfony/console": "Needed to be able to use commands", | ||
1839 | "symfony/form": "Needed to be able to use the AuthorizeFormType", | ||
1840 | "willdurand/propel-typehintable-behavior": "The Typehintable behavior is useful to add type hints on generated methods, to be compliant with interfaces" | ||
1841 | }, | ||
1842 | "type": "symfony-bundle", | ||
1843 | "extra": { | ||
1844 | "branch-alias": { | ||
1845 | "dev-master": "1.5-dev" | ||
1846 | } | ||
1847 | }, | ||
1848 | "autoload": { | ||
1849 | "psr-4": { | ||
1850 | "FOS\\OAuthServerBundle\\": "" | ||
1851 | }, | ||
1852 | "exclude-from-classmap": [ | ||
1853 | "/Tests/" | ||
1854 | ] | ||
1855 | }, | ||
1856 | "notification-url": "https://packagist.org/downloads/", | ||
1857 | "license": [ | ||
1858 | "MIT" | ||
1859 | ], | ||
1860 | "authors": [ | ||
1861 | { | ||
1862 | "name": "Arnaud Le Blanc", | ||
1863 | "email": "arnaud.lb@gmail.com" | ||
1864 | }, | ||
1865 | { | ||
1866 | "name": "FriendsOfSymfony Community", | ||
1867 | "homepage": "https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/contributors" | ||
1868 | } | ||
1869 | ], | ||
1870 | "description": "Symfony2 OAuth Server Bundle", | ||
1871 | "homepage": "http://friendsofsymfony.github.com", | ||
1872 | "keywords": [ | ||
1873 | "oauth", | ||
1874 | "oauth2", | ||
1875 | "server" | ||
1876 | ], | ||
1877 | "time": "2019-01-23T15:23:04+00:00" | ||
1878 | }, | ||
1879 | { | ||
1880 | "name": "friendsofsymfony/oauth2-php", | ||
1881 | "version": "1.2.3", | ||
1882 | "source": { | ||
1883 | "type": "git", | ||
1884 | "url": "https://github.com/FriendsOfSymfony/oauth2-php.git", | ||
1885 | "reference": "a41fef63f81ef2ef632350a6c7dc66d15baa9240" | ||
1886 | }, | ||
1887 | "dist": { | ||
1888 | "type": "zip", | ||
1889 | "url": "https://api.github.com/repos/FriendsOfSymfony/oauth2-php/zipball/a41fef63f81ef2ef632350a6c7dc66d15baa9240", | ||
1890 | "reference": "a41fef63f81ef2ef632350a6c7dc66d15baa9240", | ||
1891 | "shasum": "" | ||
1892 | }, | ||
1893 | "require": { | ||
1894 | "php": "^5.5.9|>=7.0.8", | ||
1895 | "symfony/http-foundation": "~3.0|~4.0" | ||
1896 | }, | ||
1897 | "require-dev": { | ||
1898 | "phpunit/phpunit": "~4.0" | ||
1899 | }, | ||
1900 | "type": "library", | ||
1901 | "extra": { | ||
1902 | "branch-alias": { | ||
1903 | "dev-master": "1.2.x-dev" | ||
1904 | } | ||
1905 | }, | ||
1906 | "autoload": { | ||
1907 | "psr-4": { | ||
1908 | "OAuth2\\": "lib/" | ||
1909 | } | ||
1910 | }, | ||
1911 | "notification-url": "https://packagist.org/downloads/", | ||
1912 | "license": [ | ||
1913 | "MIT" | ||
1914 | ], | ||
1915 | "authors": [ | ||
1916 | { | ||
1917 | "name": "Arnaud Le Blanc", | ||
1918 | "email": "arnaud.lb@gmail.com" | ||
1919 | }, | ||
1920 | { | ||
1921 | "name": "FriendsOfSymfony Community", | ||
1922 | "homepage": "https://github.com/FriendsOfSymfony/oauth2-php/contributors" | ||
1923 | } | ||
1924 | ], | ||
1925 | "description": "OAuth2 library", | ||
1926 | "homepage": "https://github.com/FriendsOfSymfony/oauth2-php", | ||
1927 | "keywords": [ | ||
1928 | "oauth", | ||
1929 | "oauth2" | ||
1930 | ], | ||
1931 | "time": "2018-01-30T19:58:25+00:00" | ||
1932 | }, | ||
1933 | { | ||
1934 | "name": "friendsofsymfony/rest-bundle", | ||
1935 | "version": "2.5.0", | ||
1936 | "source": { | ||
1937 | "type": "git", | ||
1938 | "url": "https://github.com/FriendsOfSymfony/FOSRestBundle.git", | ||
1939 | "reference": "a5fc73b84bdb2f0fdf58a717b322ceb6997f7bf3" | ||
1940 | }, | ||
1941 | "dist": { | ||
1942 | "type": "zip", | ||
1943 | "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/a5fc73b84bdb2f0fdf58a717b322ceb6997f7bf3", | ||
1944 | "reference": "a5fc73b84bdb2f0fdf58a717b322ceb6997f7bf3", | ||
1945 | "shasum": "" | ||
1946 | }, | ||
1947 | "require": { | ||
1948 | "doctrine/inflector": "^1.0", | ||
1949 | "php": "^5.5.9|~7.0", | ||
1950 | "psr/log": "^1.0", | ||
1951 | "symfony/config": "^3.4|^4.0", | ||
1952 | "symfony/debug": "^3.4|^4.0", | ||
1953 | "symfony/dependency-injection": "^3.4|^4.0", | ||
1954 | "symfony/event-dispatcher": "^3.4|^4.0", | ||
1955 | "symfony/finder": "^3.4|^4.0", | ||
1956 | "symfony/framework-bundle": "^3.4|^4.0", | ||
1957 | "symfony/http-foundation": "^3.4|^4.0", | ||
1958 | "symfony/http-kernel": "^3.4|^4.0", | ||
1959 | "symfony/routing": "^3.4|^4.0", | ||
1960 | "symfony/security-core": "^3.4|^4.0", | ||
1961 | "symfony/templating": "^3.4|^4.0", | ||
1962 | "willdurand/jsonp-callback-validator": "^1.0", | ||
1963 | "willdurand/negotiation": "^2.0" | ||
1964 | }, | ||
1965 | "conflict": { | ||
1966 | "jms/serializer": "<1.13.0", | ||
1967 | "jms/serializer-bundle": "<2.0.0", | ||
1968 | "sensio/framework-extra-bundle": "<3.0.13" | ||
1969 | }, | ||
1970 | "require-dev": { | ||
1971 | "jms/serializer": "^1.13|^2.0", | ||
1972 | "jms/serializer-bundle": "^2.3.1|^3.0", | ||
1973 | "phpoption/phpoption": "^1.1", | ||
1974 | "psr/http-message": "^1.0", | ||
1975 | "sensio/framework-extra-bundle": "^3.0.13|^4.0|^5.0", | ||
1976 | "symfony/asset": "^3.4|^4.0", | ||
1977 | "symfony/browser-kit": "^3.4|^4.0", | ||
1978 | "symfony/css-selector": "^3.4|^4.0", | ||
1979 | "symfony/dependency-injection": "^2.7.20|^3.0|^4.0", | ||
1980 | "symfony/expression-language": "~2.7|^3.0|^4.0", | ||
1981 | "symfony/form": "^3.4|^4.0", | ||
1982 | "symfony/phpunit-bridge": "^4.1.8", | ||
1983 | "symfony/security-bundle": "^3.4|^4.0", | ||
1984 | "symfony/serializer": "^2.7.11|^3.0.4|^4.0", | ||
1985 | "symfony/twig-bundle": "^3.4|^4.0", | ||
1986 | "symfony/validator": "^3.4|^4.0", | ||
1987 | "symfony/web-profiler-bundle": "^3.4|^4.0", | ||
1988 | "symfony/yaml": "^3.4|^4.0" | ||
1989 | }, | ||
1990 | "suggest": { | ||
1991 | "jms/serializer-bundle": "Add support for advanced serialization capabilities, recommended, requires ^2.0|^3.0", | ||
1992 | "sensio/framework-extra-bundle": "Add support for the request body converter and the view response listener, requires ^3.0", | ||
1993 | "symfony/expression-language": "Add support for using the expression language in the routing, requires ^2.7|^3.0", | ||
1994 | "symfony/serializer": "Add support for basic serialization capabilities and xml decoding, requires ^2.7|^3.0", | ||
1995 | "symfony/validator": "Add support for validation capabilities in the ParamFetcher, requires ^2.7|^3.0" | ||
1996 | }, | ||
1997 | "type": "symfony-bundle", | ||
1998 | "extra": { | ||
1999 | "branch-alias": { | ||
2000 | "dev-master": "2.5-dev" | ||
2001 | } | ||
2002 | }, | ||
2003 | "autoload": { | ||
2004 | "psr-4": { | ||
2005 | "FOS\\RestBundle\\": "" | ||
2006 | }, | ||
2007 | "exclude-from-classmap": [ | ||
2008 | "Tests/" | ||
2009 | ] | ||
2010 | }, | ||
2011 | "notification-url": "https://packagist.org/downloads/", | ||
2012 | "license": [ | ||
2013 | "MIT" | ||
2014 | ], | ||
2015 | "authors": [ | ||
2016 | { | ||
2017 | "name": "Lukas Kahwe Smith", | ||
2018 | "email": "smith@pooteeweet.org" | ||
2019 | }, | ||
2020 | { | ||
2021 | "name": "FriendsOfSymfony Community", | ||
2022 | "homepage": "https://github.com/friendsofsymfony/FOSRestBundle/contributors" | ||
2023 | }, | ||
2024 | { | ||
2025 | "name": "Konstantin Kudryashov", | ||
2026 | "email": "ever.zet@gmail.com" | ||
2027 | } | ||
2028 | ], | ||
2029 | "description": "This Bundle provides various tools to rapidly develop RESTful API's with Symfony", | ||
2030 | "homepage": "http://friendsofsymfony.github.com", | ||
2031 | "keywords": [ | ||
2032 | "rest" | ||
2033 | ], | ||
2034 | "time": "2019-01-03T13:05:12+00:00" | ||
2035 | }, | ||
2036 | { | ||
2037 | "name": "friendsofsymfony/user-bundle", | ||
2038 | "version": "v2.0.2", | ||
2039 | "source": { | ||
2040 | "type": "git", | ||
2041 | "url": "https://github.com/FriendsOfSymfony/FOSUserBundle.git", | ||
2042 | "reference": "2fc8a023d7ab482321cf7ec810ed49eab40eb50f" | ||
2043 | }, | ||
2044 | "dist": { | ||
2045 | "type": "zip", | ||
2046 | "url": "https://api.github.com/repos/FriendsOfSymfony/FOSUserBundle/zipball/2fc8a023d7ab482321cf7ec810ed49eab40eb50f", | ||
2047 | "reference": "2fc8a023d7ab482321cf7ec810ed49eab40eb50f", | ||
2048 | "shasum": "" | ||
2049 | }, | ||
2050 | "require": { | ||
2051 | "paragonie/random_compat": "^1 || ^2", | ||
2052 | "php": "^5.5.9 || ^7.0", | ||
2053 | "symfony/form": "^2.7 || ^3.0", | ||
2054 | "symfony/framework-bundle": "^2.7 || ^3.0", | ||
2055 | "symfony/security-bundle": "^2.7 || ^3.0", | ||
2056 | "symfony/templating": "^2.7 || ^3.0", | ||
2057 | "symfony/twig-bundle": "^2.7 || ^3.0", | ||
2058 | "twig/twig": "^1.28 || ^2.0" | ||
2059 | }, | ||
2060 | "conflict": { | ||
2061 | "doctrine/doctrine-bundle": "<1.3", | ||
2062 | "symfony/doctrine-bridge": "<2.7" | ||
2063 | }, | ||
2064 | "require-dev": { | ||
2065 | "doctrine/doctrine-bundle": "^1.3", | ||
2066 | "friendsofphp/php-cs-fixer": "^1.11", | ||
2067 | "phpunit/phpunit": "~4.8|~5.0", | ||
2068 | "swiftmailer/swiftmailer": "^4.3 || ^5.0 || ^6.0", | ||
2069 | "symfony/console": "^2.7 || ^3.0", | ||
2070 | "symfony/phpunit-bridge": "^2.7 || ^3.0", | ||
2071 | "symfony/validator": "^2.7 || ^3.0", | ||
2072 | "symfony/yaml": "^2.7 || ^3.0" | ||
2073 | }, | ||
2074 | "type": "symfony-bundle", | ||
2075 | "extra": { | ||
2076 | "branch-alias": { | ||
2077 | "dev-master": "2.0.x-dev" | ||
2078 | } | ||
2079 | }, | ||
2080 | "autoload": { | ||
2081 | "psr-4": { | ||
2082 | "FOS\\UserBundle\\": "" | ||
2083 | }, | ||
2084 | "exclude-from-classmap": [ | ||
2085 | "/Tests/" | ||
2086 | ] | ||
2087 | }, | ||
2088 | "notification-url": "https://packagist.org/downloads/", | ||
2089 | "license": [ | ||
2090 | "MIT" | ||
2091 | ], | ||
2092 | "authors": [ | ||
2093 | { | ||
2094 | "name": "Christophe Coevoet", | ||
2095 | "email": "stof@notk.org" | ||
2096 | }, | ||
2097 | { | ||
2098 | "name": "FriendsOfSymfony Community", | ||
2099 | "homepage": "https://github.com/friendsofsymfony/FOSUserBundle/contributors" | ||
2100 | }, | ||
2101 | { | ||
2102 | "name": "Thibault Duplessis", | ||
2103 | "email": "thibault.duplessis@gmail.com" | ||
2104 | } | ||
2105 | ], | ||
2106 | "description": "Symfony FOSUserBundle", | ||
2107 | "homepage": "http://friendsofsymfony.github.com", | ||
2108 | "keywords": [ | ||
2109 | "User management" | ||
2110 | ], | ||
2111 | "time": "2017-11-29T17:01:21+00:00" | ||
2112 | }, | ||
2113 | { | ||
2114 | "name": "gedmo/doctrine-extensions", | ||
2115 | "version": "v2.4.37", | ||
2116 | "source": { | ||
2117 | "type": "git", | ||
2118 | "url": "https://github.com/Atlantic18/DoctrineExtensions.git", | ||
2119 | "reference": "5dd471f656e46d815f063bf3f12c667649ec7ffb" | ||
2120 | }, | ||
2121 | "dist": { | ||
2122 | "type": "zip", | ||
2123 | "url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/5dd471f656e46d815f063bf3f12c667649ec7ffb", | ||
2124 | "reference": "5dd471f656e46d815f063bf3f12c667649ec7ffb", | ||
2125 | "shasum": "" | ||
2126 | }, | ||
2127 | "require": { | ||
2128 | "behat/transliterator": "~1.2", | ||
2129 | "doctrine/common": "~2.4", | ||
2130 | "php": ">=5.3.2" | ||
2131 | }, | ||
2132 | "conflict": { | ||
2133 | "doctrine/annotations": "<1.2" | ||
2134 | }, | ||
2135 | "require-dev": { | ||
2136 | "doctrine/common": ">=2.5.0", | ||
2137 | "doctrine/mongodb-odm": ">=1.0.2", | ||
2138 | "doctrine/orm": ">=2.5.0", | ||
2139 | "phpunit/phpunit": "^4.8.35|^5.7|^6.5", | ||
2140 | "symfony/yaml": "~2.6|~3.0|~4.0" | ||
2141 | }, | ||
2142 | "suggest": { | ||
2143 | "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", | ||
2144 | "doctrine/orm": "to use the extensions with the ORM" | ||
2145 | }, | ||
2146 | "type": "library", | ||
2147 | "extra": { | ||
2148 | "branch-alias": { | ||
2149 | "dev-master": "2.4.x-dev" | ||
2150 | } | ||
2151 | }, | ||
2152 | "autoload": { | ||
2153 | "psr-4": { | ||
2154 | "Gedmo\\": "lib/Gedmo" | ||
2155 | } | ||
2156 | }, | ||
2157 | "notification-url": "https://packagist.org/downloads/", | ||
2158 | "license": [ | ||
2159 | "MIT" | ||
2160 | ], | ||
2161 | "authors": [ | ||
2162 | { | ||
2163 | "name": "David Buchmann", | ||
2164 | "email": "david@liip.ch" | ||
2165 | }, | ||
2166 | { | ||
2167 | "name": "Gediminas Morkevicius", | ||
2168 | "email": "gediminas.morkevicius@gmail.com" | ||
2169 | }, | ||
2170 | { | ||
2171 | "name": "Gustavo Falco", | ||
2172 | "email": "comfortablynumb84@gmail.com" | ||
2173 | } | ||
2174 | ], | ||
2175 | "description": "Doctrine2 behavioral extensions", | ||
2176 | "homepage": "http://gediminasm.org/", | ||
2177 | "keywords": [ | ||
2178 | "Blameable", | ||
2179 | "behaviors", | ||
2180 | "doctrine2", | ||
2181 | "extensions", | ||
2182 | "gedmo", | ||
2183 | "loggable", | ||
2184 | "nestedset", | ||
2185 | "sluggable", | ||
2186 | "sortable", | ||
2187 | "timestampable", | ||
2188 | "translatable", | ||
2189 | "tree", | ||
2190 | "uploadable" | ||
2191 | ], | ||
2192 | "time": "2019-03-17T18:16:12+00:00" | ||
2193 | }, | ||
2194 | { | ||
2195 | "name": "grandt/binstring", | ||
2196 | "version": "1.0.0", | ||
2197 | "source": { | ||
2198 | "type": "git", | ||
2199 | "url": "https://github.com/Grandt/PHPBinString.git", | ||
2200 | "reference": "825fe2ac8a68190f651fc2dbc07b6edde18bc431" | ||
2201 | }, | ||
2202 | "dist": { | ||
2203 | "type": "zip", | ||
2204 | "url": "https://api.github.com/repos/Grandt/PHPBinString/zipball/825fe2ac8a68190f651fc2dbc07b6edde18bc431", | ||
2205 | "reference": "825fe2ac8a68190f651fc2dbc07b6edde18bc431", | ||
2206 | "shasum": "" | ||
2207 | }, | ||
2208 | "require": { | ||
2209 | "php": ">=5.0" | ||
2210 | }, | ||
2211 | "type": "library", | ||
2212 | "autoload": { | ||
2213 | "classmap": [ | ||
2214 | "BinString.php", | ||
2215 | "BinStringStatic.php" | ||
2216 | ] | ||
2217 | }, | ||
2218 | "notification-url": "https://packagist.org/downloads/", | ||
2219 | "license": [ | ||
2220 | "LGPL-2.1" | ||
2221 | ], | ||
2222 | "authors": [ | ||
2223 | { | ||
2224 | "name": "A. Grandt", | ||
2225 | "email": "php@grandt.com", | ||
2226 | "role": "Developer" | ||
2227 | } | ||
2228 | ], | ||
2229 | "description": "A class for working around the use of mbstring.func_override", | ||
2230 | "homepage": "https://github.com/Grandt/PHPBinString", | ||
2231 | "keywords": [ | ||
2232 | "binary strings", | ||
2233 | "mbstring" | ||
2234 | ], | ||
2235 | "time": "2015-08-13T06:14:41+00:00" | ||
2236 | }, | ||
2237 | { | ||
2238 | "name": "grandt/phpepub", | ||
2239 | "version": "dev-master", | ||
2240 | "source": { | ||
2241 | "type": "git", | ||
2242 | "url": "https://github.com/Daniel-KM/PHPePub.git", | ||
2243 | "reference": "78546d9a49d59ad9a32b13f3d95cc2f548add1c3" | ||
2244 | }, | ||
2245 | "dist": { | ||
2246 | "type": "zip", | ||
2247 | "url": "https://api.github.com/repos/Daniel-KM/PHPePub/zipball/78546d9a49d59ad9a32b13f3d95cc2f548add1c3", | ||
2248 | "reference": "78546d9a49d59ad9a32b13f3d95cc2f548add1c3", | ||
2249 | "shasum": "" | ||
2250 | }, | ||
2251 | "require": { | ||
2252 | "grandt/phpresizegif": "~1.0.3", | ||
2253 | "grandt/relativepath": "~1.0.1", | ||
2254 | "masterminds/html5": "~2.3", | ||
2255 | "php": ">=5.3.0", | ||
2256 | "phpzip/phpzip": "~2.0.7" | ||
2257 | }, | ||
2258 | "type": "library", | ||
2259 | "autoload": { | ||
2260 | "psr-4": { | ||
2261 | "PHPePub\\": "src/PHPePub" | ||
2262 | }, | ||
2263 | "classmap": [ | ||
2264 | "src/lib.uuid.php" | ||
2265 | ] | ||
2266 | }, | ||
2267 | "license": [ | ||
2268 | "LGPL-2.1" | ||
2269 | ], | ||
2270 | "authors": [ | ||
2271 | { | ||
2272 | "name": "A. Grandt", | ||
2273 | "email": "php@grandt.com", | ||
2274 | "homepage": "http://grandt.com", | ||
2275 | "role": "Developer" | ||
2276 | }, | ||
2277 | { | ||
2278 | "name": "An, Hyeong-woo", | ||
2279 | "email": "mail@mytory.net", | ||
2280 | "homepage": "https://mytory.net", | ||
2281 | "role": "Contributor" | ||
2282 | }, | ||
2283 | { | ||
2284 | "name": "Daniel Berthereau", | ||
2285 | "email": "daniel.composer@berthereau.net", | ||
2286 | "role": "Contributor" | ||
2287 | } | ||
2288 | ], | ||
2289 | "description": "Package to create and stream e-books in the ePub 2.0 and 3.0 formats.", | ||
2290 | "homepage": "https://github.com/Grandt/PHPePub", | ||
2291 | "keywords": [ | ||
2292 | "e-book", | ||
2293 | "epub" | ||
2294 | ], | ||
2295 | "support": { | ||
2296 | "source": "https://github.com/Daniel-KM/PHPePub/tree/master" | ||
2297 | }, | ||
2298 | "time": "2018-10-21T22:00:00+00:00" | ||
2299 | }, | ||
2300 | { | ||
2301 | "name": "grandt/phpresizegif", | ||
2302 | "version": "1.0.3", | ||
2303 | "source": { | ||
2304 | "type": "git", | ||
2305 | "url": "https://github.com/Grandt/PHPResizeGif.git", | ||
2306 | "reference": "775f6810fcda2fd1d8ca881d44a80c8d310ae7fe" | ||
2307 | }, | ||
2308 | "dist": { | ||
2309 | "type": "zip", | ||
2310 | "url": "https://api.github.com/repos/Grandt/PHPResizeGif/zipball/775f6810fcda2fd1d8ca881d44a80c8d310ae7fe", | ||
2311 | "reference": "775f6810fcda2fd1d8ca881d44a80c8d310ae7fe", | ||
2312 | "shasum": "" | ||
2313 | }, | ||
2314 | "require": { | ||
2315 | "grandt/binstring": ">=0.2.0", | ||
2316 | "php": ">=5.3.0" | ||
2317 | }, | ||
2318 | "type": "library", | ||
2319 | "autoload": { | ||
2320 | "psr-4": { | ||
2321 | "grandt\\ResizeGif\\": "src/ResizeGif", | ||
2322 | "grandt\\ResizeGif\\Files\\": "src/ResizeGif/Files", | ||
2323 | "grandt\\ResizeGif\\Structure\\": "src/ResizeGif/Structure", | ||
2324 | "grandt\\ResizeGif\\Debug\\": "src/ResizeGif/Debug" | ||
2325 | } | ||
2326 | }, | ||
2327 | "notification-url": "https://packagist.org/downloads/", | ||
2328 | "license": [ | ||
2329 | "LGPL-2.1" | ||
2330 | ], | ||
2331 | "authors": [ | ||
2332 | { | ||
2333 | "name": "A. Grandt", | ||
2334 | "email": "php@grandt.com", | ||
2335 | "homepage": "http://grandt.com", | ||
2336 | "role": "Developer" | ||
2337 | } | ||
2338 | ], | ||
2339 | "description": "GIF89a compliant Gif resizer, including transparency and optimized gifs with sub sized elements.", | ||
2340 | "homepage": "https://github.com/Grandt/PHPResizeGif", | ||
2341 | "keywords": [ | ||
2342 | "GIF89a", | ||
2343 | "animated gif", | ||
2344 | "gif", | ||
2345 | "resize" | ||
2346 | ], | ||
2347 | "time": "2015-05-10T10:52:24+00:00" | ||
2348 | }, | ||
2349 | { | ||
2350 | "name": "grandt/phpzipmerge", | ||
2351 | "version": "1.0.4", | ||
2352 | "source": { | ||
2353 | "type": "git", | ||
2354 | "url": "https://github.com/Grandt/PHPZipMerge.git", | ||
2355 | "reference": "0b1273d3c2dbfe244904158b1dbd65a663264fb9" | ||
2356 | }, | ||
2357 | "dist": { | ||
2358 | "type": "zip", | ||
2359 | "url": "https://api.github.com/repos/Grandt/PHPZipMerge/zipball/0b1273d3c2dbfe244904158b1dbd65a663264fb9", | ||
2360 | "reference": "0b1273d3c2dbfe244904158b1dbd65a663264fb9", | ||
2361 | "shasum": "" | ||
2362 | }, | ||
2363 | "require": { | ||
2364 | "grandt/binstring": ">=1.0.0", | ||
2365 | "grandt/relativepath": ">=1.0.1", | ||
2366 | "php": ">=5.3.0" | ||
2367 | }, | ||
2368 | "type": "library", | ||
2369 | "autoload": { | ||
2370 | "psr-4": { | ||
2371 | "ZipMerge\\": "src/ZipMerge" | ||
2372 | } | ||
2373 | }, | ||
2374 | "notification-url": "https://packagist.org/downloads/", | ||
2375 | "license": [ | ||
2376 | "LGPL-2.1" | ||
2377 | ], | ||
2378 | "authors": [ | ||
2379 | { | ||
2380 | "name": "A. Grandt", | ||
2381 | "email": "php@grandt.com", | ||
2382 | "homepage": "http://grandt.com", | ||
2383 | "role": "Developer" | ||
2384 | }, | ||
2385 | { | ||
2386 | "name": "Greg Kappatos", | ||
2387 | "homepage": "http://websiteconnect.com.au", | ||
2388 | "role": "Developer" | ||
2389 | } | ||
2390 | ], | ||
2391 | "description": "Merge and stream multiple Zip files on the fly.", | ||
2392 | "homepage": "https://github.com/Grandt/PHPZipMerge", | ||
2393 | "keywords": [ | ||
2394 | "archive", | ||
2395 | "compressed", | ||
2396 | "compression", | ||
2397 | "merge", | ||
2398 | "phpzip", | ||
2399 | "pkzip", | ||
2400 | "stream", | ||
2401 | "zip" | ||
2402 | ], | ||
2403 | "time": "2015-08-18T13:49:33+00:00" | ||
2404 | }, | ||
2405 | { | ||
2406 | "name": "grandt/relativepath", | ||
2407 | "version": "1.0.2", | ||
2408 | "source": { | ||
2409 | "type": "git", | ||
2410 | "url": "https://github.com/Grandt/PHPRelativePath.git", | ||
2411 | "reference": "19541133c24143b6295688472c54dd6ed15a5462" | ||
2412 | }, | ||
2413 | "dist": { | ||
2414 | "type": "zip", | ||
2415 | "url": "https://api.github.com/repos/Grandt/PHPRelativePath/zipball/19541133c24143b6295688472c54dd6ed15a5462", | ||
2416 | "reference": "19541133c24143b6295688472c54dd6ed15a5462", | ||
2417 | "shasum": "" | ||
2418 | }, | ||
2419 | "require": { | ||
2420 | "php": ">=5.0" | ||
2421 | }, | ||
2422 | "type": "library", | ||
2423 | "autoload": { | ||
2424 | "classmap": [ | ||
2425 | "RelativePath.php" | ||
2426 | ] | ||
2427 | }, | ||
2428 | "notification-url": "https://packagist.org/downloads/", | ||
2429 | "license": [ | ||
2430 | "LGPL-2.1" | ||
2431 | ], | ||
2432 | "authors": [ | ||
2433 | { | ||
2434 | "name": "A. Grandt", | ||
2435 | "email": "php@grandt.com", | ||
2436 | "role": "Developer" | ||
2437 | } | ||
2438 | ], | ||
2439 | "description": "A class for cleaning up/collapsing relative paths. Like real_path, but without the need for the path to exist on the filesystem.", | ||
2440 | "homepage": "https://github.com/Grandt/PHPRelativePath", | ||
2441 | "keywords": [ | ||
2442 | "file path" | ||
2443 | ], | ||
2444 | "time": "2015-05-14T08:18:23+00:00" | ||
2445 | }, | ||
2446 | { | ||
2447 | "name": "guzzlehttp/guzzle", | ||
2448 | "version": "5.3.3", | ||
2449 | "source": { | ||
2450 | "type": "git", | ||
2451 | "url": "https://github.com/guzzle/guzzle.git", | ||
2452 | "reference": "93bbdb30d59be6cd9839495306c65f2907370eb9" | ||
2453 | }, | ||
2454 | "dist": { | ||
2455 | "type": "zip", | ||
2456 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/93bbdb30d59be6cd9839495306c65f2907370eb9", | ||
2457 | "reference": "93bbdb30d59be6cd9839495306c65f2907370eb9", | ||
2458 | "shasum": "" | ||
2459 | }, | ||
2460 | "require": { | ||
2461 | "guzzlehttp/ringphp": "^1.1", | ||
2462 | "php": ">=5.4.0", | ||
2463 | "react/promise": "^2.2" | ||
2464 | }, | ||
2465 | "require-dev": { | ||
2466 | "ext-curl": "*", | ||
2467 | "phpunit/phpunit": "^4.0" | ||
2468 | }, | ||
2469 | "type": "library", | ||
2470 | "autoload": { | ||
2471 | "psr-4": { | ||
2472 | "GuzzleHttp\\": "src/" | ||
2473 | } | ||
2474 | }, | ||
2475 | "notification-url": "https://packagist.org/downloads/", | ||
2476 | "license": [ | ||
2477 | "MIT" | ||
2478 | ], | ||
2479 | "authors": [ | ||
2480 | { | ||
2481 | "name": "Michael Dowling", | ||
2482 | "email": "mtdowling@gmail.com", | ||
2483 | "homepage": "https://github.com/mtdowling" | ||
2484 | } | ||
2485 | ], | ||
2486 | "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", | ||
2487 | "homepage": "http://guzzlephp.org/", | ||
2488 | "keywords": [ | ||
2489 | "client", | ||
2490 | "curl", | ||
2491 | "framework", | ||
2492 | "http", | ||
2493 | "http client", | ||
2494 | "rest", | ||
2495 | "web service" | ||
2496 | ], | ||
2497 | "time": "2018-07-31T13:33:10+00:00" | ||
2498 | }, | ||
2499 | { | ||
2500 | "name": "guzzlehttp/psr7", | ||
2501 | "version": "1.5.2", | ||
2502 | "source": { | ||
2503 | "type": "git", | ||
2504 | "url": "https://github.com/guzzle/psr7.git", | ||
2505 | "reference": "9f83dded91781a01c63574e387eaa769be769115" | ||
2506 | }, | ||
2507 | "dist": { | ||
2508 | "type": "zip", | ||
2509 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", | ||
2510 | "reference": "9f83dded91781a01c63574e387eaa769be769115", | ||
2511 | "shasum": "" | ||
2512 | }, | ||
2513 | "require": { | ||
2514 | "php": ">=5.4.0", | ||
2515 | "psr/http-message": "~1.0", | ||
2516 | "ralouphie/getallheaders": "^2.0.5" | ||
2517 | }, | ||
2518 | "provide": { | ||
2519 | "psr/http-message-implementation": "1.0" | ||
2520 | }, | ||
2521 | "require-dev": { | ||
2522 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" | ||
2523 | }, | ||
2524 | "type": "library", | ||
2525 | "extra": { | ||
2526 | "branch-alias": { | ||
2527 | "dev-master": "1.5-dev" | ||
2528 | } | ||
2529 | }, | ||
2530 | "autoload": { | ||
2531 | "psr-4": { | ||
2532 | "GuzzleHttp\\Psr7\\": "src/" | ||
2533 | }, | ||
2534 | "files": [ | ||
2535 | "src/functions_include.php" | ||
2536 | ] | ||
2537 | }, | ||
2538 | "notification-url": "https://packagist.org/downloads/", | ||
2539 | "license": [ | ||
2540 | "MIT" | ||
2541 | ], | ||
2542 | "authors": [ | ||
2543 | { | ||
2544 | "name": "Michael Dowling", | ||
2545 | "email": "mtdowling@gmail.com", | ||
2546 | "homepage": "https://github.com/mtdowling" | ||
2547 | }, | ||
2548 | { | ||
2549 | "name": "Tobias Schultze", | ||
2550 | "homepage": "https://github.com/Tobion" | ||
2551 | } | ||
2552 | ], | ||
2553 | "description": "PSR-7 message implementation that also provides common utility methods", | ||
2554 | "keywords": [ | ||
2555 | "http", | ||
2556 | "message", | ||
2557 | "psr-7", | ||
2558 | "request", | ||
2559 | "response", | ||
2560 | "stream", | ||
2561 | "uri", | ||
2562 | "url" | ||
2563 | ], | ||
2564 | "time": "2018-12-04T20:46:45+00:00" | ||
2565 | }, | ||
2566 | { | ||
2567 | "name": "guzzlehttp/ringphp", | ||
2568 | "version": "1.1.1", | ||
2569 | "source": { | ||
2570 | "type": "git", | ||
2571 | "url": "https://github.com/guzzle/RingPHP.git", | ||
2572 | "reference": "5e2a174052995663dd68e6b5ad838afd47dd615b" | ||
2573 | }, | ||
2574 | "dist": { | ||
2575 | "type": "zip", | ||
2576 | "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/5e2a174052995663dd68e6b5ad838afd47dd615b", | ||
2577 | "reference": "5e2a174052995663dd68e6b5ad838afd47dd615b", | ||
2578 | "shasum": "" | ||
2579 | }, | ||
2580 | "require": { | ||
2581 | "guzzlehttp/streams": "~3.0", | ||
2582 | "php": ">=5.4.0", | ||
2583 | "react/promise": "~2.0" | ||
2584 | }, | ||
2585 | "require-dev": { | ||
2586 | "ext-curl": "*", | ||
2587 | "phpunit/phpunit": "~4.0" | ||
2588 | }, | ||
2589 | "suggest": { | ||
2590 | "ext-curl": "Guzzle will use specific adapters if cURL is present" | ||
2591 | }, | ||
2592 | "type": "library", | ||
2593 | "extra": { | ||
2594 | "branch-alias": { | ||
2595 | "dev-master": "1.1-dev" | ||
2596 | } | ||
2597 | }, | ||
2598 | "autoload": { | ||
2599 | "psr-4": { | ||
2600 | "GuzzleHttp\\Ring\\": "src/" | ||
2601 | } | ||
2602 | }, | ||
2603 | "notification-url": "https://packagist.org/downloads/", | ||
2604 | "license": [ | ||
2605 | "MIT" | ||
2606 | ], | ||
2607 | "authors": [ | ||
2608 | { | ||
2609 | "name": "Michael Dowling", | ||
2610 | "email": "mtdowling@gmail.com", | ||
2611 | "homepage": "https://github.com/mtdowling" | ||
2612 | } | ||
2613 | ], | ||
2614 | "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", | ||
2615 | "time": "2018-07-31T13:22:33+00:00" | ||
2616 | }, | ||
2617 | { | ||
2618 | "name": "guzzlehttp/streams", | ||
2619 | "version": "3.0.0", | ||
2620 | "source": { | ||
2621 | "type": "git", | ||
2622 | "url": "https://github.com/guzzle/streams.git", | ||
2623 | "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5" | ||
2624 | }, | ||
2625 | "dist": { | ||
2626 | "type": "zip", | ||
2627 | "url": "https://api.github.com/repos/guzzle/streams/zipball/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", | ||
2628 | "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", | ||
2629 | "shasum": "" | ||
2630 | }, | ||
2631 | "require": { | ||
2632 | "php": ">=5.4.0" | ||
2633 | }, | ||
2634 | "require-dev": { | ||
2635 | "phpunit/phpunit": "~4.0" | ||
2636 | }, | ||
2637 | "type": "library", | ||
2638 | "extra": { | ||
2639 | "branch-alias": { | ||
2640 | "dev-master": "3.0-dev" | ||
2641 | } | ||
2642 | }, | ||
2643 | "autoload": { | ||
2644 | "psr-4": { | ||
2645 | "GuzzleHttp\\Stream\\": "src/" | ||
2646 | } | ||
2647 | }, | ||
2648 | "notification-url": "https://packagist.org/downloads/", | ||
2649 | "license": [ | ||
2650 | "MIT" | ||
2651 | ], | ||
2652 | "authors": [ | ||
2653 | { | ||
2654 | "name": "Michael Dowling", | ||
2655 | "email": "mtdowling@gmail.com", | ||
2656 | "homepage": "https://github.com/mtdowling" | ||
2657 | } | ||
2658 | ], | ||
2659 | "description": "Provides a simple abstraction over streams of data", | ||
2660 | "homepage": "http://guzzlephp.org/", | ||
2661 | "keywords": [ | ||
2662 | "Guzzle", | ||
2663 | "stream" | ||
2664 | ], | ||
2665 | "time": "2014-10-12T19:18:40+00:00" | ||
2666 | }, | ||
2667 | { | ||
2668 | "name": "hoa/compiler", | ||
2669 | "version": "3.17.08.08", | ||
2670 | "source": { | ||
2671 | "type": "git", | ||
2672 | "url": "https://github.com/hoaproject/Compiler.git", | ||
2673 | "reference": "aa09caf0bf28adae6654ca6ee415ee2f522672de" | ||
2674 | }, | ||
2675 | "dist": { | ||
2676 | "type": "zip", | ||
2677 | "url": "https://api.github.com/repos/hoaproject/Compiler/zipball/aa09caf0bf28adae6654ca6ee415ee2f522672de", | ||
2678 | "reference": "aa09caf0bf28adae6654ca6ee415ee2f522672de", | ||
2679 | "shasum": "" | ||
2680 | }, | ||
2681 | "require": { | ||
2682 | "hoa/consistency": "~1.0", | ||
2683 | "hoa/exception": "~1.0", | ||
2684 | "hoa/file": "~1.0", | ||
2685 | "hoa/iterator": "~2.0", | ||
2686 | "hoa/math": "~1.0", | ||
2687 | "hoa/protocol": "~1.0", | ||
2688 | "hoa/regex": "~1.0", | ||
2689 | "hoa/visitor": "~2.0" | ||
2690 | }, | ||
2691 | "require-dev": { | ||
2692 | "hoa/json": "~2.0", | ||
2693 | "hoa/test": "~2.0" | ||
2694 | }, | ||
2695 | "type": "library", | ||
2696 | "extra": { | ||
2697 | "branch-alias": { | ||
2698 | "dev-master": "3.x-dev" | ||
2699 | } | ||
2700 | }, | ||
2701 | "autoload": { | ||
2702 | "psr-4": { | ||
2703 | "Hoa\\Compiler\\": "." | ||
2704 | } | ||
2705 | }, | ||
2706 | "notification-url": "https://packagist.org/downloads/", | ||
2707 | "license": [ | ||
2708 | "BSD-3-Clause" | ||
2709 | ], | ||
2710 | "authors": [ | ||
2711 | { | ||
2712 | "name": "Ivan Enderlin", | ||
2713 | "email": "ivan.enderlin@hoa-project.net" | ||
2714 | }, | ||
2715 | { | ||
2716 | "name": "Hoa community", | ||
2717 | "homepage": "https://hoa-project.net/" | ||
2718 | } | ||
2719 | ], | ||
2720 | "description": "The Hoa\\Compiler library.", | ||
2721 | "homepage": "https://hoa-project.net/", | ||
2722 | "keywords": [ | ||
2723 | "algebraic", | ||
2724 | "ast", | ||
2725 | "compiler", | ||
2726 | "context-free", | ||
2727 | "coverage", | ||
2728 | "exhaustive", | ||
2729 | "grammar", | ||
2730 | "isotropic", | ||
2731 | "language", | ||
2732 | "lexer", | ||
2733 | "library", | ||
2734 | "ll1", | ||
2735 | "llk", | ||
2736 | "parser", | ||
2737 | "pp", | ||
2738 | "random", | ||
2739 | "regular", | ||
2740 | "rule", | ||
2741 | "sampler", | ||
2742 | "syntax", | ||
2743 | "token", | ||
2744 | "trace", | ||
2745 | "uniform" | ||
2746 | ], | ||
2747 | "time": "2017-08-08T07:44:07+00:00" | ||
2748 | }, | ||
2749 | { | ||
2750 | "name": "hoa/consistency", | ||
2751 | "version": "1.17.05.02", | ||
2752 | "source": { | ||
2753 | "type": "git", | ||
2754 | "url": "https://github.com/hoaproject/Consistency.git", | ||
2755 | "reference": "fd7d0adc82410507f332516faf655b6ed22e4c2f" | ||
2756 | }, | ||
2757 | "dist": { | ||
2758 | "type": "zip", | ||
2759 | "url": "https://api.github.com/repos/hoaproject/Consistency/zipball/fd7d0adc82410507f332516faf655b6ed22e4c2f", | ||
2760 | "reference": "fd7d0adc82410507f332516faf655b6ed22e4c2f", | ||
2761 | "shasum": "" | ||
2762 | }, | ||
2763 | "require": { | ||
2764 | "hoa/exception": "~1.0", | ||
2765 | "php": ">=5.5.0" | ||
2766 | }, | ||
2767 | "require-dev": { | ||
2768 | "hoa/stream": "~1.0", | ||
2769 | "hoa/test": "~2.0" | ||
2770 | }, | ||
2771 | "type": "library", | ||
2772 | "extra": { | ||
2773 | "branch-alias": { | ||
2774 | "dev-master": "1.x-dev" | ||
2775 | } | ||
2776 | }, | ||
2777 | "autoload": { | ||
2778 | "psr-4": { | ||
2779 | "Hoa\\Consistency\\": "." | ||
2780 | }, | ||
2781 | "files": [ | ||
2782 | "Prelude.php" | ||
2783 | ] | ||
2784 | }, | ||
2785 | "notification-url": "https://packagist.org/downloads/", | ||
2786 | "license": [ | ||
2787 | "BSD-3-Clause" | ||
2788 | ], | ||
2789 | "authors": [ | ||
2790 | { | ||
2791 | "name": "Ivan Enderlin", | ||
2792 | "email": "ivan.enderlin@hoa-project.net" | ||
2793 | }, | ||
2794 | { | ||
2795 | "name": "Hoa community", | ||
2796 | "homepage": "https://hoa-project.net/" | ||
2797 | } | ||
2798 | ], | ||
2799 | "description": "The Hoa\\Consistency library.", | ||
2800 | "homepage": "https://hoa-project.net/", | ||
2801 | "keywords": [ | ||
2802 | "autoloader", | ||
2803 | "callable", | ||
2804 | "consistency", | ||
2805 | "entity", | ||
2806 | "flex", | ||
2807 | "keyword", | ||
2808 | "library" | ||
2809 | ], | ||
2810 | "time": "2017-05-02T12:18:12+00:00" | ||
2811 | }, | ||
2812 | { | ||
2813 | "name": "hoa/event", | ||
2814 | "version": "1.17.01.13", | ||
2815 | "source": { | ||
2816 | "type": "git", | ||
2817 | "url": "https://github.com/hoaproject/Event.git", | ||
2818 | "reference": "6c0060dced212ffa3af0e34bb46624f990b29c54" | ||
2819 | }, | ||
2820 | "dist": { | ||
2821 | "type": "zip", | ||
2822 | "url": "https://api.github.com/repos/hoaproject/Event/zipball/6c0060dced212ffa3af0e34bb46624f990b29c54", | ||
2823 | "reference": "6c0060dced212ffa3af0e34bb46624f990b29c54", | ||
2824 | "shasum": "" | ||
2825 | }, | ||
2826 | "require": { | ||
2827 | "hoa/consistency": "~1.0", | ||
2828 | "hoa/exception": "~1.0" | ||
2829 | }, | ||
2830 | "require-dev": { | ||
2831 | "hoa/test": "~2.0" | ||
2832 | }, | ||
2833 | "type": "library", | ||
2834 | "extra": { | ||
2835 | "branch-alias": { | ||
2836 | "dev-master": "1.x-dev" | ||
2837 | } | ||
2838 | }, | ||
2839 | "autoload": { | ||
2840 | "psr-4": { | ||
2841 | "Hoa\\Event\\": "." | ||
2842 | } | ||
2843 | }, | ||
2844 | "notification-url": "https://packagist.org/downloads/", | ||
2845 | "license": [ | ||
2846 | "BSD-3-Clause" | ||
2847 | ], | ||
2848 | "authors": [ | ||
2849 | { | ||
2850 | "name": "Ivan Enderlin", | ||
2851 | "email": "ivan.enderlin@hoa-project.net" | ||
2852 | }, | ||
2853 | { | ||
2854 | "name": "Hoa community", | ||
2855 | "homepage": "https://hoa-project.net/" | ||
2856 | } | ||
2857 | ], | ||
2858 | "description": "The Hoa\\Event library.", | ||
2859 | "homepage": "https://hoa-project.net/", | ||
2860 | "keywords": [ | ||
2861 | "event", | ||
2862 | "library", | ||
2863 | "listener", | ||
2864 | "observer" | ||
2865 | ], | ||
2866 | "time": "2017-01-13T15:30:50+00:00" | ||
2867 | }, | ||
2868 | { | ||
2869 | "name": "hoa/exception", | ||
2870 | "version": "1.17.01.16", | ||
2871 | "source": { | ||
2872 | "type": "git", | ||
2873 | "url": "https://github.com/hoaproject/Exception.git", | ||
2874 | "reference": "091727d46420a3d7468ef0595651488bfc3a458f" | ||
2875 | }, | ||
2876 | "dist": { | ||
2877 | "type": "zip", | ||
2878 | "url": "https://api.github.com/repos/hoaproject/Exception/zipball/091727d46420a3d7468ef0595651488bfc3a458f", | ||
2879 | "reference": "091727d46420a3d7468ef0595651488bfc3a458f", | ||
2880 | "shasum": "" | ||
2881 | }, | ||
2882 | "require": { | ||
2883 | "hoa/consistency": "~1.0", | ||
2884 | "hoa/event": "~1.0" | ||
2885 | }, | ||
2886 | "require-dev": { | ||
2887 | "hoa/test": "~2.0" | ||
2888 | }, | ||
2889 | "type": "library", | ||
2890 | "extra": { | ||
2891 | "branch-alias": { | ||
2892 | "dev-master": "1.x-dev" | ||
2893 | } | ||
2894 | }, | ||
2895 | "autoload": { | ||
2896 | "psr-4": { | ||
2897 | "Hoa\\Exception\\": "." | ||
2898 | } | ||
2899 | }, | ||
2900 | "notification-url": "https://packagist.org/downloads/", | ||
2901 | "license": [ | ||
2902 | "BSD-3-Clause" | ||
2903 | ], | ||
2904 | "authors": [ | ||
2905 | { | ||
2906 | "name": "Ivan Enderlin", | ||
2907 | "email": "ivan.enderlin@hoa-project.net" | ||
2908 | }, | ||
2909 | { | ||
2910 | "name": "Hoa community", | ||
2911 | "homepage": "https://hoa-project.net/" | ||
2912 | } | ||
2913 | ], | ||
2914 | "description": "The Hoa\\Exception library.", | ||
2915 | "homepage": "https://hoa-project.net/", | ||
2916 | "keywords": [ | ||
2917 | "exception", | ||
2918 | "library" | ||
2919 | ], | ||
2920 | "time": "2017-01-16T07:53:27+00:00" | ||
2921 | }, | ||
2922 | { | ||
2923 | "name": "hoa/file", | ||
2924 | "version": "1.17.07.11", | ||
2925 | "source": { | ||
2926 | "type": "git", | ||
2927 | "url": "https://github.com/hoaproject/File.git", | ||
2928 | "reference": "35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca" | ||
2929 | }, | ||
2930 | "dist": { | ||
2931 | "type": "zip", | ||
2932 | "url": "https://api.github.com/repos/hoaproject/File/zipball/35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca", | ||
2933 | "reference": "35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca", | ||
2934 | "shasum": "" | ||
2935 | }, | ||
2936 | "require": { | ||
2937 | "hoa/consistency": "~1.0", | ||
2938 | "hoa/event": "~1.0", | ||
2939 | "hoa/exception": "~1.0", | ||
2940 | "hoa/iterator": "~2.0", | ||
2941 | "hoa/stream": "~1.0" | ||
2942 | }, | ||
2943 | "require-dev": { | ||
2944 | "hoa/test": "~2.0" | ||
2945 | }, | ||
2946 | "type": "library", | ||
2947 | "extra": { | ||
2948 | "branch-alias": { | ||
2949 | "dev-master": "1.x-dev" | ||
2950 | } | ||
2951 | }, | ||
2952 | "autoload": { | ||
2953 | "psr-4": { | ||
2954 | "Hoa\\File\\": "." | ||
2955 | } | ||
2956 | }, | ||
2957 | "notification-url": "https://packagist.org/downloads/", | ||
2958 | "license": [ | ||
2959 | "BSD-3-Clause" | ||
2960 | ], | ||
2961 | "authors": [ | ||
2962 | { | ||
2963 | "name": "Ivan Enderlin", | ||
2964 | "email": "ivan.enderlin@hoa-project.net" | ||
2965 | }, | ||
2966 | { | ||
2967 | "name": "Hoa community", | ||
2968 | "homepage": "https://hoa-project.net/" | ||
2969 | } | ||
2970 | ], | ||
2971 | "description": "The Hoa\\File library.", | ||
2972 | "homepage": "https://hoa-project.net/", | ||
2973 | "keywords": [ | ||
2974 | "Socket", | ||
2975 | "directory", | ||
2976 | "file", | ||
2977 | "finder", | ||
2978 | "library", | ||
2979 | "link", | ||
2980 | "temporary" | ||
2981 | ], | ||
2982 | "time": "2017-07-11T07:42:15+00:00" | ||
2983 | }, | ||
2984 | { | ||
2985 | "name": "hoa/iterator", | ||
2986 | "version": "2.17.01.10", | ||
2987 | "source": { | ||
2988 | "type": "git", | ||
2989 | "url": "https://github.com/hoaproject/Iterator.git", | ||
2990 | "reference": "d1120ba09cb4ccd049c86d10058ab94af245f0cc" | ||
2991 | }, | ||
2992 | "dist": { | ||
2993 | "type": "zip", | ||
2994 | "url": "https://api.github.com/repos/hoaproject/Iterator/zipball/d1120ba09cb4ccd049c86d10058ab94af245f0cc", | ||
2995 | "reference": "d1120ba09cb4ccd049c86d10058ab94af245f0cc", | ||
2996 | "shasum": "" | ||
2997 | }, | ||
2998 | "require": { | ||
2999 | "hoa/consistency": "~1.0", | ||
3000 | "hoa/exception": "~1.0" | ||
3001 | }, | ||
3002 | "require-dev": { | ||
3003 | "hoa/test": "~2.0" | ||
3004 | }, | ||
3005 | "type": "library", | ||
3006 | "extra": { | ||
3007 | "branch-alias": { | ||
3008 | "dev-master": "2.x-dev" | ||
3009 | } | ||
3010 | }, | ||
3011 | "autoload": { | ||
3012 | "psr-4": { | ||
3013 | "Hoa\\Iterator\\": "." | ||
3014 | } | ||
3015 | }, | ||
3016 | "notification-url": "https://packagist.org/downloads/", | ||
3017 | "license": [ | ||
3018 | "BSD-3-Clause" | ||
3019 | ], | ||
3020 | "authors": [ | ||
3021 | { | ||
3022 | "name": "Ivan Enderlin", | ||
3023 | "email": "ivan.enderlin@hoa-project.net" | ||
3024 | }, | ||
3025 | { | ||
3026 | "name": "Hoa community", | ||
3027 | "homepage": "https://hoa-project.net/" | ||
3028 | } | ||
3029 | ], | ||
3030 | "description": "The Hoa\\Iterator library.", | ||
3031 | "homepage": "https://hoa-project.net/", | ||
3032 | "keywords": [ | ||
3033 | "iterator", | ||
3034 | "library" | ||
3035 | ], | ||
3036 | "time": "2017-01-10T10:34:47+00:00" | ||
3037 | }, | ||
3038 | { | ||
3039 | "name": "hoa/math", | ||
3040 | "version": "1.17.05.16", | ||
3041 | "source": { | ||
3042 | "type": "git", | ||
3043 | "url": "https://github.com/hoaproject/Math.git", | ||
3044 | "reference": "7150785d30f5d565704912116a462e9f5bc83a0c" | ||
3045 | }, | ||
3046 | "dist": { | ||
3047 | "type": "zip", | ||
3048 | "url": "https://api.github.com/repos/hoaproject/Math/zipball/7150785d30f5d565704912116a462e9f5bc83a0c", | ||
3049 | "reference": "7150785d30f5d565704912116a462e9f5bc83a0c", | ||
3050 | "shasum": "" | ||
3051 | }, | ||
3052 | "require": { | ||
3053 | "hoa/compiler": "~3.0", | ||
3054 | "hoa/consistency": "~1.0", | ||
3055 | "hoa/exception": "~1.0", | ||
3056 | "hoa/iterator": "~2.0", | ||
3057 | "hoa/protocol": "~1.0", | ||
3058 | "hoa/zformat": "~1.0" | ||
3059 | }, | ||
3060 | "require-dev": { | ||
3061 | "hoa/test": "~2.0" | ||
3062 | }, | ||
3063 | "type": "library", | ||
3064 | "extra": { | ||
3065 | "branch-alias": { | ||
3066 | "dev-master": "1.x-dev" | ||
3067 | } | ||
3068 | }, | ||
3069 | "autoload": { | ||
3070 | "psr-4": { | ||
3071 | "Hoa\\Math\\": "." | ||
3072 | } | ||
3073 | }, | ||
3074 | "notification-url": "https://packagist.org/downloads/", | ||
3075 | "license": [ | ||
3076 | "BSD-3-Clause" | ||
3077 | ], | ||
3078 | "authors": [ | ||
3079 | { | ||
3080 | "name": "Ivan Enderlin", | ||
3081 | "email": "ivan.enderlin@hoa-project.net" | ||
3082 | }, | ||
3083 | { | ||
3084 | "name": "Hoa community", | ||
3085 | "homepage": "https://hoa-project.net/" | ||
3086 | } | ||
3087 | ], | ||
3088 | "description": "The Hoa\\Math library.", | ||
3089 | "homepage": "https://hoa-project.net/", | ||
3090 | "keywords": [ | ||
3091 | "arrangement", | ||
3092 | "combination", | ||
3093 | "combinatorics", | ||
3094 | "counting", | ||
3095 | "library", | ||
3096 | "math", | ||
3097 | "permutation", | ||
3098 | "sampler", | ||
3099 | "set" | ||
3100 | ], | ||
3101 | "time": "2017-05-16T08:02:17+00:00" | ||
3102 | }, | ||
3103 | { | ||
3104 | "name": "hoa/protocol", | ||
3105 | "version": "1.17.01.14", | ||
3106 | "source": { | ||
3107 | "type": "git", | ||
3108 | "url": "https://github.com/hoaproject/Protocol.git", | ||
3109 | "reference": "5c2cf972151c45f373230da170ea015deecf19e2" | ||
3110 | }, | ||
3111 | "dist": { | ||
3112 | "type": "zip", | ||
3113 | "url": "https://api.github.com/repos/hoaproject/Protocol/zipball/5c2cf972151c45f373230da170ea015deecf19e2", | ||
3114 | "reference": "5c2cf972151c45f373230da170ea015deecf19e2", | ||
3115 | "shasum": "" | ||
3116 | }, | ||
3117 | "require": { | ||
3118 | "hoa/consistency": "~1.0", | ||
3119 | "hoa/exception": "~1.0" | ||
3120 | }, | ||
3121 | "require-dev": { | ||
3122 | "hoa/test": "~2.0" | ||
3123 | }, | ||
3124 | "type": "library", | ||
3125 | "extra": { | ||
3126 | "branch-alias": { | ||
3127 | "dev-master": "1.x-dev" | ||
3128 | } | ||
3129 | }, | ||
3130 | "autoload": { | ||
3131 | "psr-4": { | ||
3132 | "Hoa\\Protocol\\": "." | ||
3133 | }, | ||
3134 | "files": [ | ||
3135 | "Wrapper.php" | ||
3136 | ] | ||
3137 | }, | ||
3138 | "notification-url": "https://packagist.org/downloads/", | ||
3139 | "license": [ | ||
3140 | "BSD-3-Clause" | ||
3141 | ], | ||
3142 | "authors": [ | ||
3143 | { | ||
3144 | "name": "Ivan Enderlin", | ||
3145 | "email": "ivan.enderlin@hoa-project.net" | ||
3146 | }, | ||
3147 | { | ||
3148 | "name": "Hoa community", | ||
3149 | "homepage": "https://hoa-project.net/" | ||
3150 | } | ||
3151 | ], | ||
3152 | "description": "The Hoa\\Protocol library.", | ||
3153 | "homepage": "https://hoa-project.net/", | ||
3154 | "keywords": [ | ||
3155 | "library", | ||
3156 | "protocol", | ||
3157 | "resource", | ||
3158 | "stream", | ||
3159 | "wrapper" | ||
3160 | ], | ||
3161 | "time": "2017-01-14T12:26:10+00:00" | ||
3162 | }, | ||
3163 | { | ||
3164 | "name": "hoa/regex", | ||
3165 | "version": "1.17.01.13", | ||
3166 | "source": { | ||
3167 | "type": "git", | ||
3168 | "url": "https://github.com/hoaproject/Regex.git", | ||
3169 | "reference": "7e263a61b6fb45c1d03d8e5ef77668518abd5bec" | ||
3170 | }, | ||
3171 | "dist": { | ||
3172 | "type": "zip", | ||
3173 | "url": "https://api.github.com/repos/hoaproject/Regex/zipball/7e263a61b6fb45c1d03d8e5ef77668518abd5bec", | ||
3174 | "reference": "7e263a61b6fb45c1d03d8e5ef77668518abd5bec", | ||
3175 | "shasum": "" | ||
3176 | }, | ||
3177 | "require": { | ||
3178 | "hoa/consistency": "~1.0", | ||
3179 | "hoa/exception": "~1.0", | ||
3180 | "hoa/math": "~1.0", | ||
3181 | "hoa/protocol": "~1.0", | ||
3182 | "hoa/ustring": "~4.0", | ||
3183 | "hoa/visitor": "~2.0" | ||
3184 | }, | ||
3185 | "type": "library", | ||
3186 | "extra": { | ||
3187 | "branch-alias": { | ||
3188 | "dev-master": "1.x-dev" | ||
3189 | } | ||
3190 | }, | ||
3191 | "autoload": { | ||
3192 | "psr-4": { | ||
3193 | "Hoa\\Regex\\": "." | ||
3194 | } | ||
3195 | }, | ||
3196 | "notification-url": "https://packagist.org/downloads/", | ||
3197 | "license": [ | ||
3198 | "BSD-3-Clause" | ||
3199 | ], | ||
3200 | "authors": [ | ||
3201 | { | ||
3202 | "name": "Ivan Enderlin", | ||
3203 | "email": "ivan.enderlin@hoa-project.net" | ||
3204 | }, | ||
3205 | { | ||
3206 | "name": "Hoa community", | ||
3207 | "homepage": "https://hoa-project.net/" | ||
3208 | } | ||
3209 | ], | ||
3210 | "description": "The Hoa\\Regex library.", | ||
3211 | "homepage": "https://hoa-project.net/", | ||
3212 | "keywords": [ | ||
3213 | "compiler", | ||
3214 | "library", | ||
3215 | "regex" | ||
3216 | ], | ||
3217 | "time": "2017-01-13T16:10:24+00:00" | ||
3218 | }, | ||
3219 | { | ||
3220 | "name": "hoa/ruler", | ||
3221 | "version": "2.17.05.16", | ||
3222 | "source": { | ||
3223 | "type": "git", | ||
3224 | "url": "https://github.com/hoaproject/Ruler.git", | ||
3225 | "reference": "696835daf8336dfd490f032da7af444050e52dfc" | ||
3226 | }, | ||
3227 | "dist": { | ||
3228 | "type": "zip", | ||
3229 | "url": "https://api.github.com/repos/hoaproject/Ruler/zipball/696835daf8336dfd490f032da7af444050e52dfc", | ||
3230 | "reference": "696835daf8336dfd490f032da7af444050e52dfc", | ||
3231 | "shasum": "" | ||
3232 | }, | ||
3233 | "require": { | ||
3234 | "hoa/compiler": "~3.0", | ||
3235 | "hoa/consistency": "~1.0", | ||
3236 | "hoa/exception": "~1.0", | ||
3237 | "hoa/file": "~1.0", | ||
3238 | "hoa/protocol": "~1.0", | ||
3239 | "hoa/visitor": "~2.0" | ||
3240 | }, | ||
3241 | "require-dev": { | ||
3242 | "hoa/test": "~2.0" | ||
3243 | }, | ||
3244 | "type": "library", | ||
3245 | "extra": { | ||
3246 | "branch-alias": { | ||
3247 | "dev-master": "2.x-dev" | ||
3248 | } | ||
3249 | }, | ||
3250 | "autoload": { | ||
3251 | "psr-4": { | ||
3252 | "Hoa\\Ruler\\": "." | ||
3253 | } | ||
3254 | }, | ||
3255 | "notification-url": "https://packagist.org/downloads/", | ||
3256 | "license": [ | ||
3257 | "BSD-3-Clause" | ||
3258 | ], | ||
3259 | "authors": [ | ||
3260 | { | ||
3261 | "name": "Ivan Enderlin", | ||
3262 | "email": "ivan.enderlin@hoa-project.net" | ||
3263 | }, | ||
3264 | { | ||
3265 | "name": "Hoa community", | ||
3266 | "homepage": "https://hoa-project.net/" | ||
3267 | } | ||
3268 | ], | ||
3269 | "description": "The Hoa\\Ruler library.", | ||
3270 | "homepage": "https://hoa-project.net/", | ||
3271 | "keywords": [ | ||
3272 | "library", | ||
3273 | "ruler" | ||
3274 | ], | ||
3275 | "time": "2017-05-16T07:52:21+00:00" | ||
3276 | }, | ||
3277 | { | ||
3278 | "name": "hoa/stream", | ||
3279 | "version": "1.17.02.21", | ||
3280 | "source": { | ||
3281 | "type": "git", | ||
3282 | "url": "https://github.com/hoaproject/Stream.git", | ||
3283 | "reference": "3293cfffca2de10525df51436adf88a559151d82" | ||
3284 | }, | ||
3285 | "dist": { | ||
3286 | "type": "zip", | ||
3287 | "url": "https://api.github.com/repos/hoaproject/Stream/zipball/3293cfffca2de10525df51436adf88a559151d82", | ||
3288 | "reference": "3293cfffca2de10525df51436adf88a559151d82", | ||
3289 | "shasum": "" | ||
3290 | }, | ||
3291 | "require": { | ||
3292 | "hoa/consistency": "~1.0", | ||
3293 | "hoa/event": "~1.0", | ||
3294 | "hoa/exception": "~1.0", | ||
3295 | "hoa/protocol": "~1.0" | ||
3296 | }, | ||
3297 | "require-dev": { | ||
3298 | "hoa/test": "~2.0" | ||
3299 | }, | ||
3300 | "type": "library", | ||
3301 | "extra": { | ||
3302 | "branch-alias": { | ||
3303 | "dev-master": "1.x-dev" | ||
3304 | } | ||
3305 | }, | ||
3306 | "autoload": { | ||
3307 | "psr-4": { | ||
3308 | "Hoa\\Stream\\": "." | ||
3309 | } | ||
3310 | }, | ||
3311 | "notification-url": "https://packagist.org/downloads/", | ||
3312 | "license": [ | ||
3313 | "BSD-3-Clause" | ||
3314 | ], | ||
3315 | "authors": [ | ||
3316 | { | ||
3317 | "name": "Ivan Enderlin", | ||
3318 | "email": "ivan.enderlin@hoa-project.net" | ||
3319 | }, | ||
3320 | { | ||
3321 | "name": "Hoa community", | ||
3322 | "homepage": "https://hoa-project.net/" | ||
3323 | } | ||
3324 | ], | ||
3325 | "description": "The Hoa\\Stream library.", | ||
3326 | "homepage": "https://hoa-project.net/", | ||
3327 | "keywords": [ | ||
3328 | "Context", | ||
3329 | "bucket", | ||
3330 | "composite", | ||
3331 | "filter", | ||
3332 | "in", | ||
3333 | "library", | ||
3334 | "out", | ||
3335 | "protocol", | ||
3336 | "stream", | ||
3337 | "wrapper" | ||
3338 | ], | ||
3339 | "time": "2017-02-21T16:01:06+00:00" | ||
3340 | }, | ||
3341 | { | ||
3342 | "name": "hoa/ustring", | ||
3343 | "version": "4.17.01.16", | ||
3344 | "source": { | ||
3345 | "type": "git", | ||
3346 | "url": "https://github.com/hoaproject/Ustring.git", | ||
3347 | "reference": "e6326e2739178799b1fe3fdd92029f9517fa17a0" | ||
3348 | }, | ||
3349 | "dist": { | ||
3350 | "type": "zip", | ||
3351 | "url": "https://api.github.com/repos/hoaproject/Ustring/zipball/e6326e2739178799b1fe3fdd92029f9517fa17a0", | ||
3352 | "reference": "e6326e2739178799b1fe3fdd92029f9517fa17a0", | ||
3353 | "shasum": "" | ||
3354 | }, | ||
3355 | "require": { | ||
3356 | "hoa/consistency": "~1.0", | ||
3357 | "hoa/exception": "~1.0" | ||
3358 | }, | ||
3359 | "require-dev": { | ||
3360 | "hoa/test": "~2.0" | ||
3361 | }, | ||
3362 | "suggest": { | ||
3363 | "ext-iconv": "ext/iconv must be present (or a third implementation) to use Hoa\\Ustring::transcode().", | ||
3364 | "ext-intl": "To get a better Hoa\\Ustring::toAscii() and Hoa\\Ustring::compareTo()." | ||
3365 | }, | ||
3366 | "type": "library", | ||
3367 | "extra": { | ||
3368 | "branch-alias": { | ||
3369 | "dev-master": "4.x-dev" | ||
3370 | } | ||
3371 | }, | ||
3372 | "autoload": { | ||
3373 | "psr-4": { | ||
3374 | "Hoa\\Ustring\\": "." | ||
3375 | } | ||
3376 | }, | ||
3377 | "notification-url": "https://packagist.org/downloads/", | ||
3378 | "license": [ | ||
3379 | "BSD-3-Clause" | ||
3380 | ], | ||
3381 | "authors": [ | ||
3382 | { | ||
3383 | "name": "Ivan Enderlin", | ||
3384 | "email": "ivan.enderlin@hoa-project.net" | ||
3385 | }, | ||
3386 | { | ||
3387 | "name": "Hoa community", | ||
3388 | "homepage": "https://hoa-project.net/" | ||
3389 | } | ||
3390 | ], | ||
3391 | "description": "The Hoa\\Ustring library.", | ||
3392 | "homepage": "https://hoa-project.net/", | ||
3393 | "keywords": [ | ||
3394 | "library", | ||
3395 | "search", | ||
3396 | "string", | ||
3397 | "unicode" | ||
3398 | ], | ||
3399 | "time": "2017-01-16T07:08:25+00:00" | ||
3400 | }, | ||
3401 | { | ||
3402 | "name": "hoa/visitor", | ||
3403 | "version": "2.17.01.16", | ||
3404 | "source": { | ||
3405 | "type": "git", | ||
3406 | "url": "https://github.com/hoaproject/Visitor.git", | ||
3407 | "reference": "c18fe1cbac98ae449e0d56e87469103ba08f224a" | ||
3408 | }, | ||
3409 | "dist": { | ||
3410 | "type": "zip", | ||
3411 | "url": "https://api.github.com/repos/hoaproject/Visitor/zipball/c18fe1cbac98ae449e0d56e87469103ba08f224a", | ||
3412 | "reference": "c18fe1cbac98ae449e0d56e87469103ba08f224a", | ||
3413 | "shasum": "" | ||
3414 | }, | ||
3415 | "require": { | ||
3416 | "hoa/consistency": "~1.0" | ||
3417 | }, | ||
3418 | "require-dev": { | ||
3419 | "hoa/test": "~2.0" | ||
3420 | }, | ||
3421 | "type": "library", | ||
3422 | "extra": { | ||
3423 | "branch-alias": { | ||
3424 | "dev-master": "2.x-dev" | ||
3425 | } | ||
3426 | }, | ||
3427 | "autoload": { | ||
3428 | "psr-4": { | ||
3429 | "Hoa\\Visitor\\": "." | ||
3430 | } | ||
3431 | }, | ||
3432 | "notification-url": "https://packagist.org/downloads/", | ||
3433 | "license": [ | ||
3434 | "BSD-3-Clause" | ||
3435 | ], | ||
3436 | "authors": [ | ||
3437 | { | ||
3438 | "name": "Ivan Enderlin", | ||
3439 | "email": "ivan.enderlin@hoa-project.net" | ||
3440 | }, | ||
3441 | { | ||
3442 | "name": "Hoa community", | ||
3443 | "homepage": "https://hoa-project.net/" | ||
3444 | } | ||
3445 | ], | ||
3446 | "description": "The Hoa\\Visitor library.", | ||
3447 | "homepage": "https://hoa-project.net/", | ||
3448 | "keywords": [ | ||
3449 | "library", | ||
3450 | "structure", | ||
3451 | "visit", | ||
3452 | "visitor" | ||
3453 | ], | ||
3454 | "time": "2017-01-16T07:02:03+00:00" | ||
3455 | }, | ||
3456 | { | ||
3457 | "name": "hoa/zformat", | ||
3458 | "version": "1.17.01.10", | ||
3459 | "source": { | ||
3460 | "type": "git", | ||
3461 | "url": "https://github.com/hoaproject/Zformat.git", | ||
3462 | "reference": "522c381a2a075d4b9dbb42eb4592dd09520e4ac2" | ||
3463 | }, | ||
3464 | "dist": { | ||
3465 | "type": "zip", | ||
3466 | "url": "https://api.github.com/repos/hoaproject/Zformat/zipball/522c381a2a075d4b9dbb42eb4592dd09520e4ac2", | ||
3467 | "reference": "522c381a2a075d4b9dbb42eb4592dd09520e4ac2", | ||
3468 | "shasum": "" | ||
3469 | }, | ||
3470 | "require": { | ||
3471 | "hoa/consistency": "~1.0", | ||
3472 | "hoa/exception": "~1.0" | ||
3473 | }, | ||
3474 | "type": "library", | ||
3475 | "extra": { | ||
3476 | "branch-alias": { | ||
3477 | "dev-master": "1.x-dev" | ||
3478 | } | ||
3479 | }, | ||
3480 | "autoload": { | ||
3481 | "psr-4": { | ||
3482 | "Hoa\\Zformat\\": "." | ||
3483 | } | ||
3484 | }, | ||
3485 | "notification-url": "https://packagist.org/downloads/", | ||
3486 | "license": [ | ||
3487 | "BSD-3-Clause" | ||
3488 | ], | ||
3489 | "authors": [ | ||
3490 | { | ||
3491 | "name": "Ivan Enderlin", | ||
3492 | "email": "ivan.enderlin@hoa-project.net" | ||
3493 | }, | ||
3494 | { | ||
3495 | "name": "Hoa community", | ||
3496 | "homepage": "https://hoa-project.net/" | ||
3497 | } | ||
3498 | ], | ||
3499 | "description": "The Hoa\\Zformat library.", | ||
3500 | "homepage": "https://hoa-project.net/", | ||
3501 | "keywords": [ | ||
3502 | "library", | ||
3503 | "parameter", | ||
3504 | "zformat" | ||
3505 | ], | ||
3506 | "time": "2017-01-10T10:39:54+00:00" | ||
3507 | }, | ||
3508 | { | ||
3509 | "name": "html2text/html2text", | ||
3510 | "version": "4.2.1", | ||
3511 | "source": { | ||
3512 | "type": "git", | ||
3513 | "url": "https://github.com/mtibben/html2text.git", | ||
3514 | "reference": "f7555eaf271beea4e1098274d3ff37fbb7b21ea7" | ||
3515 | }, | ||
3516 | "dist": { | ||
3517 | "type": "zip", | ||
3518 | "url": "https://api.github.com/repos/mtibben/html2text/zipball/f7555eaf271beea4e1098274d3ff37fbb7b21ea7", | ||
3519 | "reference": "f7555eaf271beea4e1098274d3ff37fbb7b21ea7", | ||
3520 | "shasum": "" | ||
3521 | }, | ||
3522 | "require-dev": { | ||
3523 | "phpunit/phpunit": "~4" | ||
3524 | }, | ||
3525 | "suggest": { | ||
3526 | "ext-mbstring": "For best performance", | ||
3527 | "symfony/polyfill-mbstring": "If you can't install ext-mbstring" | ||
3528 | }, | ||
3529 | "type": "library", | ||
3530 | "autoload": { | ||
3531 | "psr-4": { | ||
3532 | "Html2Text\\": [ | ||
3533 | "src/", | ||
3534 | "test/" | ||
3535 | ] | ||
3536 | } | ||
3537 | }, | ||
3538 | "notification-url": "https://packagist.org/downloads/", | ||
3539 | "license": [ | ||
3540 | "GPL-2.0-or-later" | ||
3541 | ], | ||
3542 | "description": "Converts HTML to formatted plain text", | ||
3543 | "time": "2018-08-13T12:05:08+00:00" | ||
3544 | }, | ||
3545 | { | ||
3546 | "name": "http-interop/http-factory-guzzle", | ||
3547 | "version": "1.0.0", | ||
3548 | "source": { | ||
3549 | "type": "git", | ||
3550 | "url": "https://github.com/http-interop/http-factory-guzzle.git", | ||
3551 | "reference": "34861658efb9899a6618cef03de46e2a52c80fc0" | ||
3552 | }, | ||
3553 | "dist": { | ||
3554 | "type": "zip", | ||
3555 | "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/34861658efb9899a6618cef03de46e2a52c80fc0", | ||
3556 | "reference": "34861658efb9899a6618cef03de46e2a52c80fc0", | ||
3557 | "shasum": "" | ||
3558 | }, | ||
3559 | "require": { | ||
3560 | "guzzlehttp/psr7": "^1.4.2", | ||
3561 | "psr/http-factory": "^1.0" | ||
3562 | }, | ||
3563 | "provide": { | ||
3564 | "psr/http-factory-implementation": "^1.0" | ||
3565 | }, | ||
3566 | "require-dev": { | ||
3567 | "http-interop/http-factory-tests": "^0.5", | ||
3568 | "phpunit/phpunit": "^6.5" | ||
3569 | }, | ||
3570 | "type": "library", | ||
3571 | "autoload": { | ||
3572 | "psr-4": { | ||
3573 | "Http\\Factory\\Guzzle\\": "src/" | ||
3574 | } | ||
3575 | }, | ||
3576 | "notification-url": "https://packagist.org/downloads/", | ||
3577 | "license": [ | ||
3578 | "MIT" | ||
3579 | ], | ||
3580 | "authors": [ | ||
3581 | { | ||
3582 | "name": "PHP-FIG", | ||
3583 | "homepage": "http://www.php-fig.org/" | ||
3584 | } | ||
3585 | ], | ||
3586 | "description": "An HTTP Factory using Guzzle PSR7", | ||
3587 | "keywords": [ | ||
3588 | "factory", | ||
3589 | "http", | ||
3590 | "psr-17", | ||
3591 | "psr-7" | ||
3592 | ], | ||
3593 | "time": "2018-07-31T19:32:56+00:00" | ||
3594 | }, | ||
3595 | { | ||
3596 | "name": "incenteev/composer-parameter-handler", | ||
3597 | "version": "v2.1.3", | ||
3598 | "source": { | ||
3599 | "type": "git", | ||
3600 | "url": "https://github.com/Incenteev/ParameterHandler.git", | ||
3601 | "reference": "933c45a34814f27f2345c11c37d46b3ca7303550" | ||
3602 | }, | ||
3603 | "dist": { | ||
3604 | "type": "zip", | ||
3605 | "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550", | ||
3606 | "reference": "933c45a34814f27f2345c11c37d46b3ca7303550", | ||
3607 | "shasum": "" | ||
3608 | }, | ||
3609 | "require": { | ||
3610 | "php": ">=5.3.3", | ||
3611 | "symfony/yaml": "^2.3 || ^3.0 || ^4.0" | ||
3612 | }, | ||
3613 | "require-dev": { | ||
3614 | "composer/composer": "^1.0@dev", | ||
3615 | "symfony/filesystem": "^2.3 || ^3 || ^4", | ||
3616 | "symfony/phpunit-bridge": "^4.0" | ||
3617 | }, | ||
3618 | "type": "library", | ||
3619 | "extra": { | ||
3620 | "branch-alias": { | ||
3621 | "dev-master": "2.1.x-dev" | ||
3622 | } | ||
3623 | }, | ||
3624 | "autoload": { | ||
3625 | "psr-4": { | ||
3626 | "Incenteev\\ParameterHandler\\": "" | ||
3627 | } | ||
3628 | }, | ||
3629 | "notification-url": "https://packagist.org/downloads/", | ||
3630 | "license": [ | ||
3631 | "MIT" | ||
3632 | ], | ||
3633 | "authors": [ | ||
3634 | { | ||
3635 | "name": "Christophe Coevoet", | ||
3636 | "email": "stof@notk.org" | ||
3637 | } | ||
3638 | ], | ||
3639 | "description": "Composer script handling your ignored parameter file", | ||
3640 | "homepage": "https://github.com/Incenteev/ParameterHandler", | ||
3641 | "keywords": [ | ||
3642 | "parameters management" | ||
3643 | ], | ||
3644 | "time": "2018-02-13T18:05:56+00:00" | ||
3645 | }, | ||
3646 | { | ||
3647 | "name": "j0k3r/graby", | ||
3648 | "version": "2.0.0", | ||
3649 | "source": { | ||
3650 | "type": "git", | ||
3651 | "url": "https://github.com/j0k3r/graby.git", | ||
3652 | "reference": "e09fa58eb1b0a760869c6e3031db1ae175e362e4" | ||
3653 | }, | ||
3654 | "dist": { | ||
3655 | "type": "zip", | ||
3656 | "url": "https://api.github.com/repos/j0k3r/graby/zipball/e09fa58eb1b0a760869c6e3031db1ae175e362e4", | ||
3657 | "reference": "e09fa58eb1b0a760869c6e3031db1ae175e362e4", | ||
3658 | "shasum": "" | ||
3659 | }, | ||
3660 | "require": { | ||
3661 | "ext-curl": "*", | ||
3662 | "ext-tidy": "*", | ||
3663 | "fossar/htmlawed": "^1.2.4", | ||
3664 | "guzzlehttp/psr7": "^1.5", | ||
3665 | "j0k3r/graby-site-config": "^1.0", | ||
3666 | "j0k3r/httplug-ssrf-plugin": "^2.0", | ||
3667 | "j0k3r/php-readability": "^1.1", | ||
3668 | "monolog/monolog": "^1.13.1", | ||
3669 | "php": ">=7.1", | ||
3670 | "php-http/client-common": "^2.0", | ||
3671 | "php-http/discovery": "^1.0", | ||
3672 | "php-http/httplug": "^2.0", | ||
3673 | "php-http/message": "^1.7", | ||
3674 | "psr/http-message": "^1.0", | ||
3675 | "simplepie/simplepie": "^1.3.1", | ||
3676 | "smalot/pdfparser": "~0.11", | ||
3677 | "symfony/options-resolver": "~2.6|~3.0|~4.0", | ||
3678 | "true/punycode": "~2.1", | ||
3679 | "wallabag/tcpdf": "^6.2.26" | ||
3680 | }, | ||
3681 | "require-dev": { | ||
3682 | "friendsofphp/php-cs-fixer": "~2.14", | ||
3683 | "php-coveralls/php-coveralls": "^2.0", | ||
3684 | "php-http/guzzle6-adapter": "^2.0", | ||
3685 | "php-http/mock-client": "^1.2", | ||
3686 | "phpstan/phpstan": "^0.11", | ||
3687 | "phpstan/phpstan-phpunit": "^0.11", | ||
3688 | "symfony/phpunit-bridge": "~2.6|~3.0|~4.0" | ||
3689 | }, | ||
3690 | "type": "library", | ||
3691 | "extra": { | ||
3692 | "branch-alias": { | ||
3693 | "dev-2.0": "2.0-dev" | ||
3694 | } | ||
3695 | }, | ||
3696 | "autoload": { | ||
3697 | "psr-4": { | ||
3698 | "Graby\\": "src/" | ||
3699 | } | ||
3700 | }, | ||
3701 | "notification-url": "https://packagist.org/downloads/", | ||
3702 | "license": [ | ||
3703 | "MIT" | ||
3704 | ], | ||
3705 | "authors": [ | ||
3706 | { | ||
3707 | "name": "Jeremy Benoist", | ||
3708 | "email": "jeremy.benoist@gmail.com", | ||
3709 | "role": "Developer" | ||
3710 | }, | ||
3711 | { | ||
3712 | "name": "FiveFilters.org", | ||
3713 | "email": "fivefilters@fivefilters.org", | ||
3714 | "role": "Developer (original version)" | ||
3715 | } | ||
3716 | ], | ||
3717 | "description": "Graby helps you extract article content from web pages", | ||
3718 | "time": "2019-05-22T12:45:02+00:00" | ||
3719 | }, | ||
3720 | { | ||
3721 | "name": "j0k3r/graby-site-config", | ||
3722 | "version": "1.0.84", | ||
3723 | "source": { | ||
3724 | "type": "git", | ||
3725 | "url": "https://github.com/j0k3r/graby-site-config.git", | ||
3726 | "reference": "37ae71639d3844d022ea402a1f87af7e28d12cac" | ||
3727 | }, | ||
3728 | "dist": { | ||
3729 | "type": "zip", | ||
3730 | "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/37ae71639d3844d022ea402a1f87af7e28d12cac", | ||
3731 | "reference": "37ae71639d3844d022ea402a1f87af7e28d12cac", | ||
3732 | "shasum": "" | ||
3733 | }, | ||
3734 | "require": { | ||
3735 | "symfony/finder": "~2.6|~3.0|~4.0" | ||
3736 | }, | ||
3737 | "require-dev": { | ||
3738 | "liip/rmt": "1.2.*", | ||
3739 | "symfony/phpunit-bridge": "^3.2" | ||
3740 | }, | ||
3741 | "type": "library", | ||
3742 | "autoload": { | ||
3743 | "psr-4": { | ||
3744 | "GrabySiteConfig\\SiteConfig\\": "src/" | ||
3745 | } | ||
3746 | }, | ||
3747 | "notification-url": "https://packagist.org/downloads/", | ||
3748 | "license": [ | ||
3749 | "CC0-1.0" | ||
3750 | ], | ||
3751 | "authors": [ | ||
3752 | { | ||
3753 | "name": "Jeremy Benoist", | ||
3754 | "email": "jeremy.benoist@gmail.com" | ||
3755 | } | ||
3756 | ], | ||
3757 | "description": "Graby site config files", | ||
3758 | "time": "2019-05-23T07:28:03+00:00" | ||
3759 | }, | ||
3760 | { | ||
3761 | "name": "j0k3r/httplug-ssrf-plugin", | ||
3762 | "version": "v2.0.0", | ||
3763 | "source": { | ||
3764 | "type": "git", | ||
3765 | "url": "https://github.com/j0k3r/httplug-ssrf-plugin.git", | ||
3766 | "reference": "ea8599016240d2a49b91e267550ea3eb243ddd74" | ||
3767 | }, | ||
3768 | "dist": { | ||
3769 | "type": "zip", | ||
3770 | "url": "https://api.github.com/repos/j0k3r/httplug-ssrf-plugin/zipball/ea8599016240d2a49b91e267550ea3eb243ddd74", | ||
3771 | "reference": "ea8599016240d2a49b91e267550ea3eb243ddd74", | ||
3772 | "shasum": "" | ||
3773 | }, | ||
3774 | "require": { | ||
3775 | "php": "^7.1", | ||
3776 | "php-http/client-common": "^2.0", | ||
3777 | "php-http/discovery": "^1.5", | ||
3778 | "php-http/message": "^1.7", | ||
3779 | "php-http/message-factory": "^1.0.2" | ||
3780 | }, | ||
3781 | "require-dev": { | ||
3782 | "friendsofphp/php-cs-fixer": "^2.14", | ||
3783 | "guzzlehttp/psr7": "^1.0", | ||
3784 | "php-http/guzzle6-adapter": "^2.0", | ||
3785 | "php-http/mock-client": "^1.0", | ||
3786 | "phpstan/phpstan": "^0.11", | ||
3787 | "phpstan/phpstan-phpunit": "^0.11", | ||
3788 | "symfony/phpunit-bridge": "~3.4.19|~4.0" | ||
3789 | }, | ||
3790 | "type": "library", | ||
3791 | "extra": { | ||
3792 | "branch-alias": { | ||
3793 | "dev-master": "2.0-dev" | ||
3794 | } | ||
3795 | }, | ||
3796 | "autoload": { | ||
3797 | "psr-4": { | ||
3798 | "Graby\\HttpClient\\Plugin\\ServerSideRequestForgeryProtection\\": "src/" | ||
3799 | } | ||
3800 | }, | ||
3801 | "notification-url": "https://packagist.org/downloads/", | ||
3802 | "license": [ | ||
3803 | "MIT" | ||
3804 | ], | ||
3805 | "authors": [ | ||
3806 | { | ||
3807 | "name": "Jeremy Benoist", | ||
3808 | "email": "jeremy.benoist@gmail.com" | ||
3809 | }, | ||
3810 | { | ||
3811 | "name": "aaa2000", | ||
3812 | "email": "adev2000@gmail.com" | ||
3813 | }, | ||
3814 | { | ||
3815 | "name": "Jack W", | ||
3816 | "email": "jack@fin1te.net", | ||
3817 | "role": "Developer (SafeCurl original version)" | ||
3818 | } | ||
3819 | ], | ||
3820 | "description": "Server-Side Request Forgery (SSRF) protection plugin for HTTPlug", | ||
3821 | "homepage": "https://github.com/j0k3r/httplug-ssrf-plugin", | ||
3822 | "keywords": [ | ||
3823 | "http", | ||
3824 | "httplug", | ||
3825 | "plugin", | ||
3826 | "security", | ||
3827 | "ssrf" | ||
3828 | ], | ||
3829 | "time": "2019-02-06T10:58:53+00:00" | ||
3830 | }, | ||
3831 | { | ||
3832 | "name": "j0k3r/php-readability", | ||
3833 | "version": "1.2.3", | ||
3834 | "source": { | ||
3835 | "type": "git", | ||
3836 | "url": "https://github.com/j0k3r/php-readability.git", | ||
3837 | "reference": "f808c1b0a21ae98ae6fd5bd623671c406efd74d0" | ||
3838 | }, | ||
3839 | "dist": { | ||
3840 | "type": "zip", | ||
3841 | "url": "https://api.github.com/repos/j0k3r/php-readability/zipball/f808c1b0a21ae98ae6fd5bd623671c406efd74d0", | ||
3842 | "reference": "f808c1b0a21ae98ae6fd5bd623671c406efd74d0", | ||
3843 | "shasum": "" | ||
3844 | }, | ||
3845 | "require": { | ||
3846 | "electrolinux/php-html5lib": "^0.1.0", | ||
3847 | "ext-mbstring": "*", | ||
3848 | "php": ">=5.6.0", | ||
3849 | "psr/log": "^1.0" | ||
3850 | }, | ||
3851 | "require-dev": { | ||
3852 | "friendsofphp/php-cs-fixer": "^2.14", | ||
3853 | "monolog/monolog": "^1.24", | ||
3854 | "php-coveralls/php-coveralls": "^2.1", | ||
3855 | "symfony/phpunit-bridge": "^4.2.3" | ||
3856 | }, | ||
3857 | "suggest": { | ||
3858 | "ext-tidy": "Used to clean up given HTML and to avoid problems with bad HTML structure." | ||
3859 | }, | ||
3860 | "type": "library", | ||
3861 | "autoload": { | ||
3862 | "psr-4": { | ||
3863 | "Readability\\": "src/" | ||
3864 | } | ||
3865 | }, | ||
3866 | "notification-url": "https://packagist.org/downloads/", | ||
3867 | "license": [ | ||
3868 | "Apache-2.0" | ||
3869 | ], | ||
3870 | "authors": [ | ||
3871 | { | ||
3872 | "name": "Keyvan Minoukadeh", | ||
3873 | "email": "keyvan@keyvan.net", | ||
3874 | "homepage": "http://keyvan.net", | ||
3875 | "role": "Developer (ported original JS code to PHP)" | ||
3876 | }, | ||
3877 | { | ||
3878 | "name": "Arc90", | ||
3879 | "homepage": "http://arc90.com", | ||
3880 | "role": "Developer (original JS version)" | ||
3881 | }, | ||
3882 | { | ||
3883 | "name": "Jeremy Benoist", | ||
3884 | "email": "jeremy.benoist@gmail.com", | ||
3885 | "homepage": "http://www.j0k3r.net", | ||
3886 | "role": "Developer" | ||
3887 | }, | ||
3888 | { | ||
3889 | "name": "DitherSky", | ||
3890 | "homepage": "https://github.com/Dither", | ||
3891 | "role": "Developer (https://github.com/Dither/full-text-rss)" | ||
3892 | } | ||
3893 | ], | ||
3894 | "description": "Automatic article extraction from HTML", | ||
3895 | "keywords": [ | ||
3896 | "article", | ||
3897 | "article extraction", | ||
3898 | "content", | ||
3899 | "content extraction", | ||
3900 | "extraction", | ||
3901 | "html" | ||
3902 | ], | ||
3903 | "time": "2019-05-11T20:07:19+00:00" | ||
3904 | }, | ||
3905 | { | ||
3906 | "name": "javibravo/simpleue", | ||
3907 | "version": "2.1.0", | ||
3908 | "source": { | ||
3909 | "type": "git", | ||
3910 | "url": "https://github.com/javibravo/simpleue.git", | ||
3911 | "reference": "b12ccea0631cd3f6128ab91178fc5363f6e14ff6" | ||
3912 | }, | ||
3913 | "dist": { | ||
3914 | "type": "zip", | ||
3915 | "url": "https://api.github.com/repos/javibravo/simpleue/zipball/b12ccea0631cd3f6128ab91178fc5363f6e14ff6", | ||
3916 | "reference": "b12ccea0631cd3f6128ab91178fc5363f6e14ff6", | ||
3917 | "shasum": "" | ||
3918 | }, | ||
3919 | "require": { | ||
3920 | "php": ">=5.5", | ||
3921 | "psr/log": "~1.0" | ||
3922 | }, | ||
3923 | "require-dev": { | ||
3924 | "aws/aws-sdk-php": "^3.9", | ||
3925 | "pda/pheanstalk": "^3.1", | ||
3926 | "phpunit/phpunit": "4.0.*", | ||
3927 | "predis/predis": "^1.0" | ||
3928 | }, | ||
3929 | "suggest": { | ||
3930 | "aws/aws-sdk-php": "Allow work with AWS Simple Queue Service (SQS) queues", | ||
3931 | "ext-redis": "Allow work with Redis Locker", | ||
3932 | "pda/pheanstalk": "Allow work with Beanstalkd queues", | ||
3933 | "predis/predis": "Allow work with Redis queues" | ||
3934 | }, | ||
3935 | "type": "library", | ||
3936 | "autoload": { | ||
3937 | "psr-4": { | ||
3938 | "Simpleue\\": "src/Simpleue" | ||
3939 | } | ||
3940 | }, | ||
3941 | "notification-url": "https://packagist.org/downloads/", | ||
3942 | "license": [ | ||
3943 | "MIT" | ||
3944 | ], | ||
3945 | "authors": [ | ||
3946 | { | ||
3947 | "name": "Javier Bravo", | ||
3948 | "email": "javibravo85@gmail.com" | ||
3949 | } | ||
3950 | ], | ||
3951 | "description": "Php package to manage queue tasks in a simple way", | ||
3952 | "homepage": "http://github.com/javibravo/simpleue", | ||
3953 | "keywords": [ | ||
3954 | "job", | ||
3955 | "queue", | ||
3956 | "redis", | ||
3957 | "sqs", | ||
3958 | "task" | ||
3959 | ], | ||
3960 | "time": "2017-11-15T13:41:13+00:00" | ||
3961 | }, | ||
3962 | { | ||
3963 | "name": "jdorn/sql-formatter", | ||
3964 | "version": "v1.2.17", | ||
3965 | "source": { | ||
3966 | "type": "git", | ||
3967 | "url": "https://github.com/jdorn/sql-formatter.git", | ||
3968 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" | ||
3969 | }, | ||
3970 | "dist": { | ||
3971 | "type": "zip", | ||
3972 | "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", | ||
3973 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", | ||
3974 | "shasum": "" | ||
3975 | }, | ||
3976 | "require": { | ||
3977 | "php": ">=5.2.4" | ||
3978 | }, | ||
3979 | "require-dev": { | ||
3980 | "phpunit/phpunit": "3.7.*" | ||
3981 | }, | ||
3982 | "type": "library", | ||
3983 | "extra": { | ||
3984 | "branch-alias": { | ||
3985 | "dev-master": "1.3.x-dev" | ||
3986 | } | ||
3987 | }, | ||
3988 | "autoload": { | ||
3989 | "classmap": [ | ||
3990 | "lib" | ||
3991 | ] | ||
3992 | }, | ||
3993 | "notification-url": "https://packagist.org/downloads/", | ||
3994 | "license": [ | ||
3995 | "MIT" | ||
3996 | ], | ||
3997 | "authors": [ | ||
3998 | { | ||
3999 | "name": "Jeremy Dorn", | ||
4000 | "email": "jeremy@jeremydorn.com", | ||
4001 | "homepage": "http://jeremydorn.com/" | ||
4002 | } | ||
4003 | ], | ||
4004 | "description": "a PHP SQL highlighting library", | ||
4005 | "homepage": "https://github.com/jdorn/sql-formatter/", | ||
4006 | "keywords": [ | ||
4007 | "highlight", | ||
4008 | "sql" | ||
4009 | ], | ||
4010 | "time": "2014-01-12T16:20:24+00:00" | ||
4011 | }, | ||
4012 | { | ||
4013 | "name": "jean85/pretty-package-versions", | ||
4014 | "version": "1.2", | ||
4015 | "source": { | ||
4016 | "type": "git", | ||
4017 | "url": "https://github.com/Jean85/pretty-package-versions.git", | ||
4018 | "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" | ||
4019 | }, | ||
4020 | "dist": { | ||
4021 | "type": "zip", | ||
4022 | "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", | ||
4023 | "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", | ||
4024 | "shasum": "" | ||
4025 | }, | ||
4026 | "require": { | ||
4027 | "ocramius/package-versions": "^1.2.0", | ||
4028 | "php": "^7.0" | ||
4029 | }, | ||
4030 | "require-dev": { | ||
4031 | "phpunit/phpunit": "^6.0" | ||
4032 | }, | ||
4033 | "type": "library", | ||
4034 | "extra": { | ||
4035 | "branch-alias": { | ||
4036 | "dev-master": "1.x-dev" | ||
4037 | } | ||
4038 | }, | ||
4039 | "autoload": { | ||
4040 | "psr-4": { | ||
4041 | "Jean85\\": "src/" | ||
4042 | } | ||
4043 | }, | ||
4044 | "notification-url": "https://packagist.org/downloads/", | ||
4045 | "license": [ | ||
4046 | "MIT" | ||
4047 | ], | ||
4048 | "authors": [ | ||
4049 | { | ||
4050 | "name": "Alessandro Lai", | ||
4051 | "email": "alessandro.lai85@gmail.com" | ||
4052 | } | ||
4053 | ], | ||
4054 | "description": "A wrapper for ocramius/package-versions to get pretty versions strings", | ||
4055 | "keywords": [ | ||
4056 | "composer", | ||
4057 | "package", | ||
4058 | "release", | ||
4059 | "versions" | ||
4060 | ], | ||
4061 | "time": "2018-06-13T13:22:40+00:00" | ||
4062 | }, | ||
4063 | { | ||
4064 | "name": "jms/metadata", | ||
4065 | "version": "1.7.0", | ||
4066 | "source": { | ||
4067 | "type": "git", | ||
4068 | "url": "https://github.com/schmittjoh/metadata.git", | ||
4069 | "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8" | ||
4070 | }, | ||
4071 | "dist": { | ||
4072 | "type": "zip", | ||
4073 | "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/e5854ab1aa643623dc64adde718a8eec32b957a8", | ||
4074 | "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8", | ||
4075 | "shasum": "" | ||
4076 | }, | ||
4077 | "require": { | ||
4078 | "php": ">=5.3.0" | ||
4079 | }, | ||
4080 | "require-dev": { | ||
4081 | "doctrine/cache": "~1.0", | ||
4082 | "symfony/cache": "~3.1" | ||
4083 | }, | ||
4084 | "type": "library", | ||
4085 | "extra": { | ||
4086 | "branch-alias": { | ||
4087 | "dev-master": "1.5.x-dev" | ||
4088 | } | ||
4089 | }, | ||
4090 | "autoload": { | ||
4091 | "psr-0": { | ||
4092 | "Metadata\\": "src/" | ||
4093 | } | ||
4094 | }, | ||
4095 | "notification-url": "https://packagist.org/downloads/", | ||
4096 | "license": [ | ||
4097 | "MIT" | ||
4098 | ], | ||
4099 | "authors": [ | ||
4100 | { | ||
4101 | "name": "Asmir Mustafic", | ||
4102 | "email": "goetas@gmail.com" | ||
4103 | }, | ||
4104 | { | ||
4105 | "name": "Johannes M. Schmitt", | ||
4106 | "email": "schmittjoh@gmail.com" | ||
4107 | } | ||
4108 | ], | ||
4109 | "description": "Class/method/property metadata management in PHP", | ||
4110 | "keywords": [ | ||
4111 | "annotations", | ||
4112 | "metadata", | ||
4113 | "xml", | ||
4114 | "yaml" | ||
4115 | ], | ||
4116 | "time": "2018-10-26T12:40:10+00:00" | ||
4117 | }, | ||
4118 | { | ||
4119 | "name": "jms/parser-lib", | ||
4120 | "version": "1.0.0", | ||
4121 | "source": { | ||
4122 | "type": "git", | ||
4123 | "url": "https://github.com/schmittjoh/parser-lib.git", | ||
4124 | "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" | ||
4125 | }, | ||
4126 | "dist": { | ||
4127 | "type": "zip", | ||
4128 | "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", | ||
4129 | "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", | ||
4130 | "shasum": "" | ||
4131 | }, | ||
4132 | "require": { | ||
4133 | "phpoption/phpoption": ">=0.9,<2.0-dev" | ||
4134 | }, | ||
4135 | "type": "library", | ||
4136 | "extra": { | ||
4137 | "branch-alias": { | ||
4138 | "dev-master": "1.0-dev" | ||
4139 | } | ||
4140 | }, | ||
4141 | "autoload": { | ||
4142 | "psr-0": { | ||
4143 | "JMS\\": "src/" | ||
4144 | } | ||
4145 | }, | ||
4146 | "notification-url": "https://packagist.org/downloads/", | ||
4147 | "license": [ | ||
4148 | "Apache2" | ||
4149 | ], | ||
4150 | "description": "A library for easily creating recursive-descent parsers.", | ||
4151 | "time": "2012-11-18T18:08:43+00:00" | ||
4152 | }, | ||
4153 | { | ||
4154 | "name": "jms/serializer", | ||
4155 | "version": "1.14.0", | ||
4156 | "source": { | ||
4157 | "type": "git", | ||
4158 | "url": "https://github.com/schmittjoh/serializer.git", | ||
4159 | "reference": "ee96d57024af9a7716d56fcbe3aa94b3d030f3ca" | ||
4160 | }, | ||
4161 | "dist": { | ||
4162 | "type": "zip", | ||
4163 | "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/ee96d57024af9a7716d56fcbe3aa94b3d030f3ca", | ||
4164 | "reference": "ee96d57024af9a7716d56fcbe3aa94b3d030f3ca", | ||
4165 | "shasum": "" | ||
4166 | }, | ||
4167 | "require": { | ||
4168 | "doctrine/annotations": "^1.0", | ||
4169 | "doctrine/instantiator": "^1.0.3", | ||
4170 | "jms/metadata": "^1.3", | ||
4171 | "jms/parser-lib": "1.*", | ||
4172 | "php": "^5.5|^7.0", | ||
4173 | "phpcollection/phpcollection": "~0.1", | ||
4174 | "phpoption/phpoption": "^1.1" | ||
4175 | }, | ||
4176 | "conflict": { | ||
4177 | "twig/twig": "<1.12" | ||
4178 | }, | ||
4179 | "require-dev": { | ||
4180 | "doctrine/orm": "~2.1", | ||
4181 | "doctrine/phpcr-odm": "^1.3|^2.0", | ||
4182 | "ext-pdo_sqlite": "*", | ||
4183 | "jackalope/jackalope-doctrine-dbal": "^1.1.5", | ||
4184 | "phpunit/phpunit": "^4.8|^5.0", | ||
4185 | "propel/propel1": "~1.7", | ||
4186 | "psr/container": "^1.0", | ||
4187 | "symfony/dependency-injection": "^2.7|^3.3|^4.0", | ||
4188 | "symfony/expression-language": "^2.6|^3.0", | ||
4189 | "symfony/filesystem": "^2.1", | ||
4190 | "symfony/form": "~2.1|^3.0", | ||
4191 | "symfony/translation": "^2.1|^3.0", | ||
4192 | "symfony/validator": "^2.2|^3.0", | ||
4193 | "symfony/yaml": "^2.1|^3.0", | ||
4194 | "twig/twig": "~1.12|~2.0" | ||
4195 | }, | ||
4196 | "suggest": { | ||
4197 | "doctrine/cache": "Required if you like to use cache functionality.", | ||
4198 | "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", | ||
4199 | "symfony/yaml": "Required if you'd like to serialize data to YAML format." | ||
4200 | }, | ||
4201 | "type": "library", | ||
4202 | "extra": { | ||
4203 | "branch-alias": { | ||
4204 | "dev-1.x": "1.14-dev" | ||
4205 | } | ||
4206 | }, | ||
4207 | "autoload": { | ||
4208 | "psr-0": { | ||
4209 | "JMS\\Serializer": "src/" | ||
4210 | } | ||
4211 | }, | ||
4212 | "notification-url": "https://packagist.org/downloads/", | ||
4213 | "license": [ | ||
4214 | "MIT" | ||
4215 | ], | ||
4216 | "authors": [ | ||
4217 | { | ||
4218 | "name": "Asmir Mustafic", | ||
4219 | "email": "goetas@gmail.com" | ||
4220 | }, | ||
4221 | { | ||
4222 | "name": "Johannes M. Schmitt", | ||
4223 | "email": "schmittjoh@gmail.com" | ||
4224 | } | ||
4225 | ], | ||
4226 | "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", | ||
4227 | "homepage": "http://jmsyst.com/libs/serializer", | ||
4228 | "keywords": [ | ||
4229 | "deserialization", | ||
4230 | "jaxb", | ||
4231 | "json", | ||
4232 | "serialization", | ||
4233 | "xml" | ||
4234 | ], | ||
4235 | "time": "2019-04-17T08:12:16+00:00" | ||
4236 | }, | ||
4237 | { | ||
4238 | "name": "jms/serializer-bundle", | ||
4239 | "version": "2.4.4", | ||
4240 | "source": { | ||
4241 | "type": "git", | ||
4242 | "url": "https://github.com/schmittjoh/JMSSerializerBundle.git", | ||
4243 | "reference": "92ee808c64c1c180775a0e57d00e3be0674668fb" | ||
4244 | }, | ||
4245 | "dist": { | ||
4246 | "type": "zip", | ||
4247 | "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/92ee808c64c1c180775a0e57d00e3be0674668fb", | ||
4248 | "reference": "92ee808c64c1c180775a0e57d00e3be0674668fb", | ||
4249 | "shasum": "" | ||
4250 | }, | ||
4251 | "require": { | ||
4252 | "jms/serializer": "^1.10", | ||
4253 | "php": "^5.4|^7.0", | ||
4254 | "phpoption/phpoption": "^1.1.0", | ||
4255 | "symfony/framework-bundle": "~2.3|~3.0|~4.0" | ||
4256 | }, | ||
4257 | "require-dev": { | ||
4258 | "doctrine/orm": "*", | ||
4259 | "phpunit/phpunit": "^4.8.35|^5.4.3|^6.0", | ||
4260 | "symfony/expression-language": "~2.6|~3.0|~4.0", | ||
4261 | "symfony/finder": "^2.3|^3.0|^4.0", | ||
4262 | "symfony/form": "*", | ||
4263 | "symfony/stopwatch": "*", | ||
4264 | "symfony/twig-bundle": "*", | ||
4265 | "symfony/validator": "*", | ||
4266 | "symfony/yaml": "*" | ||
4267 | }, | ||
4268 | "suggest": { | ||
4269 | "jms/di-extra-bundle": "Required to get lazy loading (de)serialization visitors, ~1.3", | ||
4270 | "symfony/finder": "Required for cache warmup, supported versions ^2.3|^3.0|^4.0" | ||
4271 | }, | ||
4272 | "type": "symfony-bundle", | ||
4273 | "extra": { | ||
4274 | "branch-alias": { | ||
4275 | "dev-master": "2.4-dev" | ||
4276 | } | ||
4277 | }, | ||
4278 | "autoload": { | ||
4279 | "psr-4": { | ||
4280 | "JMS\\SerializerBundle\\": "" | ||
4281 | }, | ||
4282 | "exclude-from-classmap": [ | ||
4283 | "/Tests/" | ||
4284 | ] | ||
4285 | }, | ||
4286 | "notification-url": "https://packagist.org/downloads/", | ||
4287 | "license": [ | ||
4288 | "MIT" | ||
4289 | ], | ||
4290 | "authors": [ | ||
4291 | { | ||
4292 | "name": "Asmir Mustafic", | ||
4293 | "email": "goetas@gmail.com" | ||
4294 | }, | ||
4295 | { | ||
4296 | "name": "Johannes M. Schmitt", | ||
4297 | "email": "schmittjoh@gmail.com" | ||
4298 | } | ||
4299 | ], | ||
4300 | "description": "Allows you to easily serialize, and deserialize data of any complexity", | ||
4301 | "homepage": "http://jmsyst.com/bundles/JMSSerializerBundle", | ||
4302 | "keywords": [ | ||
4303 | "deserialization", | ||
4304 | "jaxb", | ||
4305 | "json", | ||
4306 | "serialization", | ||
4307 | "xml" | ||
4308 | ], | ||
4309 | "time": "2019-03-30T10:26:09+00:00" | ||
4310 | }, | ||
4311 | { | ||
4312 | "name": "kphoen/rulerz", | ||
4313 | "version": "0.21.1", | ||
4314 | "source": { | ||
4315 | "type": "git", | ||
4316 | "url": "https://github.com/K-Phoen/rulerz.git", | ||
4317 | "reference": "d28a1bd59b4e66cc9fcdeee965f13f685eb9ce41" | ||
4318 | }, | ||
4319 | "dist": { | ||
4320 | "type": "zip", | ||
4321 | "url": "https://api.github.com/repos/K-Phoen/rulerz/zipball/d28a1bd59b4e66cc9fcdeee965f13f685eb9ce41", | ||
4322 | "reference": "d28a1bd59b4e66cc9fcdeee965f13f685eb9ce41", | ||
4323 | "shasum": "" | ||
4324 | }, | ||
4325 | "require": { | ||
4326 | "hoa/ruler": "~2.0", | ||
4327 | "php": ">=7.1", | ||
4328 | "symfony/property-access": "~3.0|~4.0" | ||
4329 | }, | ||
4330 | "require-dev": { | ||
4331 | "behat/behat": "~3.0", | ||
4332 | "coduo/phpspec-data-provider-extension": "~1.0,!=1.0.2", | ||
4333 | "doctrine/orm": "~2.4", | ||
4334 | "elasticsearch/elasticsearch": "~1.0", | ||
4335 | "illuminate/database": "~5.0", | ||
4336 | "kphoen/rusty": "dev-master", | ||
4337 | "liip/rmt": "^1.2", | ||
4338 | "mikey179/vfsstream": "~1.4", | ||
4339 | "phpspec/phpspec": "~2.0,>=2.4-dev", | ||
4340 | "pomm-project/cli": "~2.0@dev", | ||
4341 | "pomm-project/foundation": "~2.0@dev", | ||
4342 | "pomm-project/model-manager": "~2.0.@dev", | ||
4343 | "ruflin/elastica": "~1.0", | ||
4344 | "solarium/solarium": "~3.0", | ||
4345 | "vlucas/phpdotenv": "~2.1" | ||
4346 | }, | ||
4347 | "suggest": { | ||
4348 | "doctrine/orm": "To execute rules as Doctrine queries", | ||
4349 | "elasticsearch/elasticsearch": "To execute rules as Elasticsearch queries", | ||
4350 | "kphoen/rulerz-spec-builder": "If you want a specification builder", | ||
4351 | "pomm-project/model-manager": "To execute rules as Pomm queries", | ||
4352 | "solarium/solarium": "To execute rules as Solr queries" | ||
4353 | }, | ||
4354 | "type": "library", | ||
4355 | "extra": { | ||
4356 | "branch-alias": { | ||
4357 | "dev-master": "1.0.x-dev" | ||
4358 | } | ||
4359 | }, | ||
4360 | "autoload": { | ||
4361 | "psr-4": { | ||
4362 | "RulerZ\\": "src/" | ||
4363 | } | ||
4364 | }, | ||
4365 | "notification-url": "https://packagist.org/downloads/", | ||
4366 | "license": [ | ||
4367 | "MIT" | ||
4368 | ], | ||
4369 | "authors": [ | ||
4370 | { | ||
4371 | "name": "Kévin Gomez", | ||
4372 | "email": "contact@kevingomez.fr" | ||
4373 | } | ||
4374 | ], | ||
4375 | "description": "Powerful implementation of the Specification pattern", | ||
4376 | "homepage": "https://github.com/K-Phoen/RulerZ", | ||
4377 | "keywords": [ | ||
4378 | "doctrine", | ||
4379 | "specification" | ||
4380 | ], | ||
4381 | "time": "2018-09-18T15:15:42+00:00" | ||
4382 | }, | ||
4383 | { | ||
4384 | "name": "kphoen/rulerz-bridge", | ||
4385 | "version": "1.1.1", | ||
4386 | "source": { | ||
4387 | "type": "git", | ||
4388 | "url": "https://github.com/K-Phoen/rulerz-bridge.git", | ||
4389 | "reference": "fdad5856b669d59b5e4bda47c4e927a0485bf7a0" | ||
4390 | }, | ||
4391 | "dist": { | ||
4392 | "type": "zip", | ||
4393 | "url": "https://api.github.com/repos/K-Phoen/rulerz-bridge/zipball/fdad5856b669d59b5e4bda47c4e927a0485bf7a0", | ||
4394 | "reference": "fdad5856b669d59b5e4bda47c4e927a0485bf7a0", | ||
4395 | "shasum": "" | ||
4396 | }, | ||
4397 | "require": { | ||
4398 | "kphoen/rulerz": "~0.19,>=0.19.3|^1.0", | ||
4399 | "php": ">=7.1", | ||
4400 | "symfony/form": "^3.0|^4.0", | ||
4401 | "symfony/validator": "^3.0|^4.0" | ||
4402 | }, | ||
4403 | "require-dev": { | ||
4404 | "liip/rmt": "^1.2", | ||
4405 | "phpunit/phpunit": "~7.1", | ||
4406 | "symfony/phpunit-bridge": "^3.0|^4.0" | ||
4407 | }, | ||
4408 | "type": "symfony-bridge", | ||
4409 | "autoload": { | ||
4410 | "psr-4": { | ||
4411 | "Symfony\\Bridge\\RulerZ\\": "" | ||
4412 | }, | ||
4413 | "exclude-from-classmap": [ | ||
4414 | "/Tests/" | ||
4415 | ] | ||
4416 | }, | ||
4417 | "notification-url": "https://packagist.org/downloads/", | ||
4418 | "license": [ | ||
4419 | "MIT" | ||
4420 | ], | ||
4421 | "authors": [ | ||
4422 | { | ||
4423 | "name": "Kévin Gomez", | ||
4424 | "email": "contact@kevingomez.fr" | ||
4425 | } | ||
4426 | ], | ||
4427 | "description": "Symfony RulerZ Bridge", | ||
4428 | "homepage": "https://github.com/K-Phoen/rulerz-bridge", | ||
4429 | "keywords": [ | ||
4430 | "Bridge", | ||
4431 | "doctrine", | ||
4432 | "ruler", | ||
4433 | "rulerz", | ||
4434 | "specification", | ||
4435 | "symfony" | ||
4436 | ], | ||
4437 | "time": "2018-10-01T14:17:27+00:00" | ||
4438 | }, | ||
4439 | { | ||
4440 | "name": "kphoen/rulerz-bundle", | ||
4441 | "version": "0.15.0", | ||
4442 | "source": { | ||
4443 | "type": "git", | ||
4444 | "url": "https://github.com/K-Phoen/RulerZBundle.git", | ||
4445 | "reference": "f25f2eddfd311047f0f0ece2684b1f6463cc41ad" | ||
4446 | }, | ||
4447 | "dist": { | ||
4448 | "type": "zip", | ||
4449 | "url": "https://api.github.com/repos/K-Phoen/RulerZBundle/zipball/f25f2eddfd311047f0f0ece2684b1f6463cc41ad", | ||
4450 | "reference": "f25f2eddfd311047f0f0ece2684b1f6463cc41ad", | ||
4451 | "shasum": "" | ||
4452 | }, | ||
4453 | "require": { | ||
4454 | "kphoen/rulerz": "~0.17,>=0.19.3", | ||
4455 | "kphoen/rulerz-bridge": "^1.0", | ||
4456 | "php": ">=7.1", | ||
4457 | "symfony/framework-bundle": "^3.0|^4.0" | ||
4458 | }, | ||
4459 | "require-dev": { | ||
4460 | "liip/rmt": "^1.2", | ||
4461 | "matthiasnoback/symfony-dependency-injection-test": "^3.0", | ||
4462 | "mikey179/vfsstream": "^1.6", | ||
4463 | "phpunit/phpunit": "^7.1", | ||
4464 | "symfony/phpunit-bridge": "^3.0|^4.0" | ||
4465 | }, | ||
4466 | "type": "symfony-bundle", | ||
4467 | "autoload": { | ||
4468 | "psr-4": { | ||
4469 | "KPhoen\\RulerZBundle\\": "" | ||
4470 | }, | ||
4471 | "exclude-from-classmap": [ | ||
4472 | "/Tests/" | ||
4473 | ] | ||
4474 | }, | ||
4475 | "notification-url": "https://packagist.org/downloads/", | ||
4476 | "license": [ | ||
4477 | "MIT" | ||
4478 | ], | ||
4479 | "authors": [ | ||
4480 | { | ||
4481 | "name": "Kévin Gomez", | ||
4482 | "email": "contact@kevingomez.fr" | ||
4483 | } | ||
4484 | ], | ||
4485 | "description": "Symfony2 Bundle for RulerZ", | ||
4486 | "homepage": "https://github.com/K-Phoen/RulerZBundle", | ||
4487 | "keywords": [ | ||
4488 | "doctrine", | ||
4489 | "ruler", | ||
4490 | "rulerz", | ||
4491 | "specification" | ||
4492 | ], | ||
4493 | "time": "2018-09-17T09:02:32+00:00" | ||
4494 | }, | ||
4495 | { | ||
4496 | "name": "lcobucci/jwt", | ||
4497 | "version": "3.3.1", | ||
4498 | "source": { | ||
4499 | "type": "git", | ||
4500 | "url": "https://github.com/lcobucci/jwt.git", | ||
4501 | "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" | ||
4502 | }, | ||
4503 | "dist": { | ||
4504 | "type": "zip", | ||
4505 | "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", | ||
4506 | "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", | ||
4507 | "shasum": "" | ||
4508 | }, | ||
4509 | "require": { | ||
4510 | "ext-mbstring": "*", | ||
4511 | "ext-openssl": "*", | ||
4512 | "php": "^5.6 || ^7.0" | ||
4513 | }, | ||
4514 | "require-dev": { | ||
4515 | "mikey179/vfsstream": "~1.5", | ||
4516 | "phpmd/phpmd": "~2.2", | ||
4517 | "phpunit/php-invoker": "~1.1", | ||
4518 | "phpunit/phpunit": "^5.7 || ^7.3", | ||
4519 | "squizlabs/php_codesniffer": "~2.3" | ||
4520 | }, | ||
4521 | "type": "library", | ||
4522 | "extra": { | ||
4523 | "branch-alias": { | ||
4524 | "dev-master": "3.1-dev" | ||
4525 | } | ||
4526 | }, | ||
4527 | "autoload": { | ||
4528 | "psr-4": { | ||
4529 | "Lcobucci\\JWT\\": "src" | ||
4530 | } | ||
4531 | }, | ||
4532 | "notification-url": "https://packagist.org/downloads/", | ||
4533 | "license": [ | ||
4534 | "BSD-3-Clause" | ||
4535 | ], | ||
4536 | "authors": [ | ||
4537 | { | ||
4538 | "name": "Luís Otávio Cobucci Oblonczyk", | ||
4539 | "email": "lcobucci@gmail.com", | ||
4540 | "role": "Developer" | ||
4541 | } | ||
4542 | ], | ||
4543 | "description": "A simple library to work with JSON Web Token and JSON Web Signature", | ||
4544 | "keywords": [ | ||
4545 | "JWS", | ||
4546 | "jwt" | ||
4547 | ], | ||
4548 | "time": "2019-05-24T18:30:49+00:00" | ||
4549 | }, | ||
4550 | { | ||
4551 | "name": "lexik/form-filter-bundle", | ||
4552 | "version": "v5.0.10", | ||
4553 | "source": { | ||
4554 | "type": "git", | ||
4555 | "url": "https://github.com/lexik/LexikFormFilterBundle.git", | ||
4556 | "reference": "92df0638173979dc906bda7a33a10b98429d2057" | ||
4557 | }, | ||
4558 | "dist": { | ||
4559 | "type": "zip", | ||
4560 | "url": "https://api.github.com/repos/lexik/LexikFormFilterBundle/zipball/92df0638173979dc906bda7a33a10b98429d2057", | ||
4561 | "reference": "92df0638173979dc906bda7a33a10b98429d2057", | ||
4562 | "shasum": "" | ||
4563 | }, | ||
4564 | "require": { | ||
4565 | "doctrine/orm": "^2.4.8", | ||
4566 | "php": ">=5.5.9", | ||
4567 | "symfony/form": "~2.8|~3.0|^4.0", | ||
4568 | "symfony/framework-bundle": "~2.8|~3.0|^4.0" | ||
4569 | }, | ||
4570 | "require-dev": { | ||
4571 | "doctrine/mongodb-odm-bundle": "^3.0", | ||
4572 | "phpunit/phpunit": "~5.0|^7.5" | ||
4573 | }, | ||
4574 | "suggest": { | ||
4575 | "alcaeus/mongo-php-adapter": "Install this package if using the PHP 7 MongoDB Driver" | ||
4576 | }, | ||
4577 | "type": "symfony-bundle", | ||
4578 | "extra": { | ||
4579 | "branch-alias": { | ||
4580 | "dev-master": "5.x.x-dev" | ||
4581 | } | ||
4582 | }, | ||
4583 | "autoload": { | ||
4584 | "psr-4": { | ||
4585 | "Lexik\\Bundle\\FormFilterBundle\\": "" | ||
4586 | } | ||
4587 | }, | ||
4588 | "notification-url": "https://packagist.org/downloads/", | ||
4589 | "license": [ | ||
4590 | "MIT" | ||
4591 | ], | ||
4592 | "authors": [ | ||
4593 | { | ||
4594 | "name": "Dev Lexik", | ||
4595 | "email": "dev@lexik.fr" | ||
4596 | }, | ||
4597 | { | ||
4598 | "name": "Cedric Girard", | ||
4599 | "email": "c.girard@lexik.fr" | ||
4600 | } | ||
4601 | ], | ||
4602 | "description": "This bundle aim to provide classes to build some form filters and then build a doctrine query from this form filter.", | ||
4603 | "homepage": "https://github.com/lexik/LexikFormFilterBundle", | ||
4604 | "keywords": [ | ||
4605 | "bundle", | ||
4606 | "doctrine", | ||
4607 | "filter", | ||
4608 | "form", | ||
4609 | "symfony" | ||
4610 | ], | ||
4611 | "time": "2019-04-17T17:58:44+00:00" | ||
4612 | }, | ||
4613 | { | ||
4614 | "name": "liip/theme-bundle", | ||
4615 | "version": "1.6.1", | ||
4616 | "source": { | ||
4617 | "type": "git", | ||
4618 | "url": "https://github.com/liip/LiipThemeBundle.git", | ||
4619 | "reference": "f40637ce0523a4e0968e203c09a46acfa4b95d4d" | ||
4620 | }, | ||
4621 | "dist": { | ||
4622 | "type": "zip", | ||
4623 | "url": "https://api.github.com/repos/liip/LiipThemeBundle/zipball/f40637ce0523a4e0968e203c09a46acfa4b95d4d", | ||
4624 | "reference": "f40637ce0523a4e0968e203c09a46acfa4b95d4d", | ||
4625 | "shasum": "" | ||
4626 | }, | ||
4627 | "require": { | ||
4628 | "php": "^5.3.9|^7.0", | ||
4629 | "psr/log": "~1.0", | ||
4630 | "symfony/finder": "^2.7|^3.0|^4.0", | ||
4631 | "symfony/framework-bundle": "^2.7|^3.0|^4.0", | ||
4632 | "symfony/templating": "^2.7|^3.0|^4.0", | ||
4633 | "symfony/twig-bundle": "^2.7|^3.0|^4.0", | ||
4634 | "twig/twig": "^1.27|^2.0" | ||
4635 | }, | ||
4636 | "conflict": { | ||
4637 | "sebastian/comparator": "1.2.3" | ||
4638 | }, | ||
4639 | "require-dev": { | ||
4640 | "phpunit/phpunit": "^4.8.35|^6.0", | ||
4641 | "symfony/console": "^2.7|^3.0|^4.0", | ||
4642 | "symfony/expression-language": "^2.7|^3.0|^4.0" | ||
4643 | }, | ||
4644 | "type": "symfony-bundle", | ||
4645 | "extra": { | ||
4646 | "branch-alias": { | ||
4647 | "dev-master": "1.4-dev" | ||
4648 | } | ||
4649 | }, | ||
4650 | "autoload": { | ||
4651 | "psr-4": { | ||
4652 | "Liip\\ThemeBundle\\": "" | ||
4653 | } | ||
4654 | }, | ||
4655 | "notification-url": "https://packagist.org/downloads/", | ||
4656 | "license": [ | ||
4657 | "MIT" | ||
4658 | ], | ||
4659 | "authors": [ | ||
4660 | { | ||
4661 | "name": "Community contributions", | ||
4662 | "homepage": "https://github.com/liip/LiipThemeBundle/contributors" | ||
4663 | }, | ||
4664 | { | ||
4665 | "name": "Liip AG", | ||
4666 | "homepage": "http://www.liip.ch/" | ||
4667 | } | ||
4668 | ], | ||
4669 | "description": "Provides theming support for #Symfony2 Bundles", | ||
4670 | "keywords": [ | ||
4671 | "themes", | ||
4672 | "theming" | ||
4673 | ], | ||
4674 | "time": "2018-10-08T07:20:20+00:00" | ||
4675 | }, | ||
4676 | { | ||
4677 | "name": "masterminds/html5", | ||
4678 | "version": "2.6.0", | ||
4679 | "source": { | ||
4680 | "type": "git", | ||
4681 | "url": "https://github.com/Masterminds/html5-php.git", | ||
4682 | "reference": "c961ca6a0a81dc6b55b6859b3f9ea7f402edf9ad" | ||
4683 | }, | ||
4684 | "dist": { | ||
4685 | "type": "zip", | ||
4686 | "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/c961ca6a0a81dc6b55b6859b3f9ea7f402edf9ad", | ||
4687 | "reference": "c961ca6a0a81dc6b55b6859b3f9ea7f402edf9ad", | ||
4688 | "shasum": "" | ||
4689 | }, | ||
4690 | "require": { | ||
4691 | "ext-ctype": "*", | ||
4692 | "ext-dom": "*", | ||
4693 | "ext-libxml": "*", | ||
4694 | "php": ">=5.3.0" | ||
4695 | }, | ||
4696 | "require-dev": { | ||
4697 | "phpunit/phpunit": "^4.8.35", | ||
4698 | "sami/sami": "~2.0", | ||
4699 | "satooshi/php-coveralls": "1.0.*" | ||
4700 | }, | ||
4701 | "type": "library", | ||
4702 | "extra": { | ||
4703 | "branch-alias": { | ||
4704 | "dev-master": "2.6-dev" | ||
4705 | } | ||
4706 | }, | ||
4707 | "autoload": { | ||
4708 | "psr-4": { | ||
4709 | "Masterminds\\": "src" | ||
4710 | } | ||
4711 | }, | ||
4712 | "notification-url": "https://packagist.org/downloads/", | ||
4713 | "license": [ | ||
4714 | "MIT" | ||
4715 | ], | ||
4716 | "authors": [ | ||
4717 | { | ||
4718 | "name": "Matt Butcher", | ||
4719 | "email": "technosophos@gmail.com" | ||
4720 | }, | ||
4721 | { | ||
4722 | "name": "Asmir Mustafic", | ||
4723 | "email": "goetas@gmail.com" | ||
4724 | }, | ||
4725 | { | ||
4726 | "name": "Matt Farina", | ||
4727 | "email": "matt@mattfarina.com" | ||
4728 | } | ||
4729 | ], | ||
4730 | "description": "An HTML5 parser and serializer.", | ||
4731 | "homepage": "http://masterminds.github.io/html5-php", | ||
4732 | "keywords": [ | ||
4733 | "HTML5", | ||
4734 | "dom", | ||
4735 | "html", | ||
4736 | "parser", | ||
4737 | "querypath", | ||
4738 | "serializer", | ||
4739 | "xml" | ||
4740 | ], | ||
4741 | "time": "2019-03-10T11:41:28+00:00" | ||
4742 | }, | ||
4743 | { | ||
4744 | "name": "mgargano/simplehtmldom", | ||
4745 | "version": "1.5", | ||
4746 | "source": { | ||
4747 | "type": "git", | ||
4748 | "url": "https://github.com/matgargano/simplehtmldom.git", | ||
4749 | "reference": "37fb0d7c1bda45c5a4cf14fdef56c1edf6aa42be" | ||
4750 | }, | ||
4751 | "dist": { | ||
4752 | "type": "zip", | ||
4753 | "url": "https://api.github.com/repos/matgargano/simplehtmldom/zipball/37fb0d7c1bda45c5a4cf14fdef56c1edf6aa42be", | ||
4754 | "reference": "37fb0d7c1bda45c5a4cf14fdef56c1edf6aa42be", | ||
4755 | "shasum": "" | ||
4756 | }, | ||
4757 | "require": { | ||
4758 | "php": ">=5.3.0" | ||
4759 | }, | ||
4760 | "type": "library", | ||
4761 | "autoload": { | ||
4762 | "psr-0": { | ||
4763 | "SimpleHtmlDom": "src/" | ||
4764 | }, | ||
4765 | "files": [ | ||
4766 | "src/simple_html_dom.php" | ||
4767 | ] | ||
4768 | }, | ||
4769 | "notification-url": "https://packagist.org/downloads/", | ||
4770 | "license": [ | ||
4771 | "The MIT License" | ||
4772 | ], | ||
4773 | "authors": [ | ||
4774 | { | ||
4775 | "name": "S.C. Chen", | ||
4776 | "email": "me578022@gmail.com" | ||
4777 | } | ||
4778 | ], | ||
4779 | "description": "Composer package that gives you access to and (unlike all the others at this time) autoloads S.C. Chen's PHP Simple HTML DOM Parser Library", | ||
4780 | "homepage": "http://simplehtmldom.sourceforge.net/", | ||
4781 | "keywords": [ | ||
4782 | "Simple", | ||
4783 | "dom", | ||
4784 | "html" | ||
4785 | ], | ||
4786 | "time": "2014-01-05T18:17:34+00:00" | ||
4787 | }, | ||
4788 | { | ||
4789 | "name": "michelf/php-markdown", | ||
4790 | "version": "1.8.0", | ||
4791 | "source": { | ||
4792 | "type": "git", | ||
4793 | "url": "https://github.com/michelf/php-markdown.git", | ||
4794 | "reference": "01ab082b355bf188d907b9929cd99b2923053495" | ||
4795 | }, | ||
4796 | "dist": { | ||
4797 | "type": "zip", | ||
4798 | "url": "https://api.github.com/repos/michelf/php-markdown/zipball/01ab082b355bf188d907b9929cd99b2923053495", | ||
4799 | "reference": "01ab082b355bf188d907b9929cd99b2923053495", | ||
4800 | "shasum": "" | ||
4801 | }, | ||
4802 | "require": { | ||
4803 | "php": ">=5.3.0" | ||
4804 | }, | ||
4805 | "type": "library", | ||
4806 | "autoload": { | ||
4807 | "psr-4": { | ||
4808 | "Michelf\\": "Michelf/" | ||
4809 | } | ||
4810 | }, | ||
4811 | "notification-url": "https://packagist.org/downloads/", | ||
4812 | "license": [ | ||
4813 | "BSD-3-Clause" | ||
4814 | ], | ||
4815 | "authors": [ | ||
4816 | { | ||
4817 | "name": "Michel Fortin", | ||
4818 | "email": "michel.fortin@michelf.ca", | ||
4819 | "homepage": "https://michelf.ca/", | ||
4820 | "role": "Developer" | ||
4821 | }, | ||
4822 | { | ||
4823 | "name": "John Gruber", | ||
4824 | "homepage": "https://daringfireball.net/" | ||
4825 | } | ||
4826 | ], | ||
4827 | "description": "PHP Markdown", | ||
4828 | "homepage": "https://michelf.ca/projects/php-markdown/", | ||
4829 | "keywords": [ | ||
4830 | "markdown" | ||
4831 | ], | ||
4832 | "time": "2018-01-15T00:49:33+00:00" | ||
4833 | }, | ||
4834 | { | ||
4835 | "name": "mnapoli/piwik-twig-extension", | ||
4836 | "version": "1.0.0", | ||
4837 | "source": { | ||
4838 | "type": "git", | ||
4839 | "url": "https://github.com/mnapoli/PiwikTwigExtension.git", | ||
4840 | "reference": "5171ab7221830a9d377add03dd60dbe6bd7b331f" | ||
4841 | }, | ||
4842 | "dist": { | ||
4843 | "type": "zip", | ||
4844 | "url": "https://api.github.com/repos/mnapoli/PiwikTwigExtension/zipball/5171ab7221830a9d377add03dd60dbe6bd7b331f", | ||
4845 | "reference": "5171ab7221830a9d377add03dd60dbe6bd7b331f", | ||
4846 | "shasum": "" | ||
4847 | }, | ||
4848 | "require": { | ||
4849 | "php": ">=5.4", | ||
4850 | "twig/twig": "~1.10" | ||
4851 | }, | ||
4852 | "require-dev": { | ||
4853 | "phpunit/phpunit": "~4.0" | ||
4854 | }, | ||
4855 | "type": "library", | ||
4856 | "autoload": { | ||
4857 | "psr-4": { | ||
4858 | "PiwikTwigExtension\\": "src/" | ||
4859 | } | ||
4860 | }, | ||
4861 | "notification-url": "https://packagist.org/downloads/", | ||
4862 | "license": [ | ||
4863 | "MIT" | ||
4864 | ], | ||
4865 | "time": "2014-09-16T06:51:19+00:00" | ||
4866 | }, | ||
4867 | { | ||
4868 | "name": "monolog/monolog", | ||
4869 | "version": "1.24.0", | ||
4870 | "source": { | ||
4871 | "type": "git", | ||
4872 | "url": "https://github.com/Seldaek/monolog.git", | ||
4873 | "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" | ||
4874 | }, | ||
4875 | "dist": { | ||
4876 | "type": "zip", | ||
4877 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", | ||
4878 | "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", | ||
4879 | "shasum": "" | ||
4880 | }, | ||
4881 | "require": { | ||
4882 | "php": ">=5.3.0", | ||
4883 | "psr/log": "~1.0" | ||
4884 | }, | ||
4885 | "provide": { | ||
4886 | "psr/log-implementation": "1.0.0" | ||
4887 | }, | ||
4888 | "require-dev": { | ||
4889 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", | ||
4890 | "doctrine/couchdb": "~1.0@dev", | ||
4891 | "graylog2/gelf-php": "~1.0", | ||
4892 | "jakub-onderka/php-parallel-lint": "0.9", | ||
4893 | "php-amqplib/php-amqplib": "~2.4", | ||
4894 | "php-console/php-console": "^3.1.3", | ||
4895 | "phpunit/phpunit": "~4.5", | ||
4896 | "phpunit/phpunit-mock-objects": "2.3.0", | ||
4897 | "ruflin/elastica": ">=0.90 <3.0", | ||
4898 | "sentry/sentry": "^0.13", | ||
4899 | "swiftmailer/swiftmailer": "^5.3|^6.0" | ||
4900 | }, | ||
4901 | "suggest": { | ||
4902 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", | ||
4903 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", | ||
4904 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", | ||
4905 | "ext-mongo": "Allow sending log messages to a MongoDB server", | ||
4906 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", | ||
4907 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", | ||
4908 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", | ||
4909 | "php-console/php-console": "Allow sending log messages to Google Chrome", | ||
4910 | "rollbar/rollbar": "Allow sending log messages to Rollbar", | ||
4911 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", | ||
4912 | "sentry/sentry": "Allow sending log messages to a Sentry server" | ||
4913 | }, | ||
4914 | "type": "library", | ||
4915 | "extra": { | ||
4916 | "branch-alias": { | ||
4917 | "dev-master": "2.0.x-dev" | ||
4918 | } | ||
4919 | }, | ||
4920 | "autoload": { | ||
4921 | "psr-4": { | ||
4922 | "Monolog\\": "src/Monolog" | ||
4923 | } | ||
4924 | }, | ||
4925 | "notification-url": "https://packagist.org/downloads/", | ||
4926 | "license": [ | ||
4927 | "MIT" | ||
4928 | ], | ||
4929 | "authors": [ | ||
4930 | { | ||
4931 | "name": "Jordi Boggiano", | ||
4932 | "email": "j.boggiano@seld.be", | ||
4933 | "homepage": "http://seld.be" | ||
4934 | } | ||
4935 | ], | ||
4936 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", | ||
4937 | "homepage": "http://github.com/Seldaek/monolog", | ||
4938 | "keywords": [ | ||
4939 | "log", | ||
4940 | "logging", | ||
4941 | "psr-3" | ||
4942 | ], | ||
4943 | "time": "2018-11-05T09:00:11+00:00" | ||
4944 | }, | ||
4945 | { | ||
4946 | "name": "nelmio/api-doc-bundle", | ||
4947 | "version": "2.13.4", | ||
4948 | "target-dir": "Nelmio/ApiDocBundle", | ||
4949 | "source": { | ||
4950 | "type": "git", | ||
4951 | "url": "https://github.com/nelmio/NelmioApiDocBundle.git", | ||
4952 | "reference": "28802f2c44dbbf29aa7f5dc80a10f44d3558f580" | ||
4953 | }, | ||
4954 | "dist": { | ||
4955 | "type": "zip", | ||
4956 | "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/28802f2c44dbbf29aa7f5dc80a10f44d3558f580", | ||
4957 | "reference": "28802f2c44dbbf29aa7f5dc80a10f44d3558f580", | ||
4958 | "shasum": "" | ||
4959 | }, | ||
4960 | "require": { | ||
4961 | "michelf/php-markdown": "~1.4", | ||
4962 | "php": ">=5.4", | ||
4963 | "symfony/console": "~2.3|~3.0|~4.0", | ||
4964 | "symfony/framework-bundle": "~2.3|~3.0|~4.0", | ||
4965 | "symfony/twig-bundle": "~2.3|~3.0|~4.0" | ||
4966 | }, | ||
4967 | "conflict": { | ||
4968 | "jms/serializer": "<0.12", | ||
4969 | "jms/serializer-bundle": "<0.11", | ||
4970 | "symfony/symfony": "~2.7.8", | ||
4971 | "twig/twig": "<1.12" | ||
4972 | }, | ||
4973 | "require-dev": { | ||
4974 | "doctrine/doctrine-bundle": "~1.5", | ||
4975 | "doctrine/orm": "~2.3", | ||
4976 | "dunglas/api-bundle": "~1.0", | ||
4977 | "friendsofsymfony/rest-bundle": "~1.0|~2.0", | ||
4978 | "jms/serializer-bundle": ">=0.11", | ||
4979 | "sensio/framework-extra-bundle": "~3.0", | ||
4980 | "symfony/browser-kit": "~2.3|~3.0|~4.0", | ||
4981 | "symfony/css-selector": "~2.3|~3.0|~4.0", | ||
4982 | "symfony/finder": "~2.3|~3.0|~4.0", | ||
4983 | "symfony/form": "~2.3|~3.0|~4.0", | ||
4984 | "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", | ||
4985 | "symfony/serializer": "~2.7|~3.0|~4.0", | ||
4986 | "symfony/validator": "~2.3|~3.0|~4.0", | ||
4987 | "symfony/yaml": "~2.3|~3.0|~4.0" | ||
4988 | }, | ||
4989 | "suggest": { | ||
4990 | "dunglas/api-bundle": "For making use of resources definitions of DunglasApiBundle.", | ||
4991 | "friendsofsymfony/rest-bundle": "For making use of REST information in the doc.", | ||
4992 | "jms/serializer": "For making use of serializer information in the doc.", | ||
4993 | "symfony/form": "For using form definitions as input.", | ||
4994 | "symfony/validator": "For making use of validator information in the doc." | ||
4995 | }, | ||
4996 | "type": "symfony-bundle", | ||
4997 | "extra": { | ||
4998 | "branch-alias": { | ||
4999 | "dev-2.x": "2.13-dev" | ||
5000 | } | ||
5001 | }, | ||
5002 | "autoload": { | ||
5003 | "psr-0": { | ||
5004 | "Nelmio\\ApiDocBundle": "" | ||
5005 | } | ||
5006 | }, | ||
5007 | "notification-url": "https://packagist.org/downloads/", | ||
5008 | "license": [ | ||
5009 | "MIT" | ||
5010 | ], | ||
5011 | "authors": [ | ||
5012 | { | ||
5013 | "name": "Nelmio", | ||
5014 | "homepage": "http://nelm.io" | ||
5015 | }, | ||
5016 | { | ||
5017 | "name": "Symfony Community", | ||
5018 | "homepage": "https://github.com/nelmio/NelmioApiDocBundle/contributors" | ||
5019 | } | ||
5020 | ], | ||
5021 | "description": "Generates documentation for your REST API from annotations", | ||
5022 | "keywords": [ | ||
5023 | "api", | ||
5024 | "doc", | ||
5025 | "documentation", | ||
5026 | "rest" | ||
5027 | ], | ||
5028 | "time": "2019-06-01T13:34:59+00:00" | ||
5029 | }, | ||
5030 | { | ||
5031 | "name": "nelmio/cors-bundle", | ||
5032 | "version": "1.5.5", | ||
5033 | "source": { | ||
5034 | "type": "git", | ||
5035 | "url": "https://github.com/nelmio/NelmioCorsBundle.git", | ||
5036 | "reference": "adabee944e6fe52ee566caf1770a29355b1e8d83" | ||
5037 | }, | ||
5038 | "dist": { | ||
5039 | "type": "zip", | ||
5040 | "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/adabee944e6fe52ee566caf1770a29355b1e8d83", | ||
5041 | "reference": "adabee944e6fe52ee566caf1770a29355b1e8d83", | ||
5042 | "shasum": "" | ||
5043 | }, | ||
5044 | "require": { | ||
5045 | "symfony/framework-bundle": "^2.7 || ^3.0 || ^4.0" | ||
5046 | }, | ||
5047 | "require-dev": { | ||
5048 | "matthiasnoback/symfony-dependency-injection-test": "^1.0 || ^2.0", | ||
5049 | "mockery/mockery": "^0.9 || ^1.0", | ||
5050 | "symfony/phpunit-bridge": "^2.7 || ^3.0 || ^4.0" | ||
5051 | }, | ||
5052 | "type": "symfony-bundle", | ||
5053 | "extra": { | ||
5054 | "branch-alias": { | ||
5055 | "dev-master": "1.5.x-dev" | ||
5056 | } | ||
5057 | }, | ||
5058 | "autoload": { | ||
5059 | "psr-4": { | ||
5060 | "Nelmio\\CorsBundle\\": "" | ||
5061 | }, | ||
5062 | "exclude-from-classmap": [ | ||
5063 | "/Tests/" | ||
5064 | ] | ||
5065 | }, | ||
5066 | "notification-url": "https://packagist.org/downloads/", | ||
5067 | "license": [ | ||
5068 | "MIT" | ||
5069 | ], | ||
5070 | "authors": [ | ||
5071 | { | ||
5072 | "name": "Nelmio", | ||
5073 | "homepage": "http://nelm.io" | ||
5074 | }, | ||
5075 | { | ||
5076 | "name": "Symfony Community", | ||
5077 | "homepage": "https://github.com/nelmio/NelmioCorsBundle/contributors" | ||
5078 | } | ||
5079 | ], | ||
5080 | "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Symfony2 application", | ||
5081 | "keywords": [ | ||
5082 | "api", | ||
5083 | "cors", | ||
5084 | "crossdomain" | ||
5085 | ], | ||
5086 | "time": "2019-02-27T13:13:15+00:00" | ||
5087 | }, | ||
5088 | { | ||
5089 | "name": "ocramius/package-versions", | ||
5090 | "version": "1.4.0", | ||
5091 | "source": { | ||
5092 | "type": "git", | ||
5093 | "url": "https://github.com/Ocramius/PackageVersions.git", | ||
5094 | "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb" | ||
5095 | }, | ||
5096 | "dist": { | ||
5097 | "type": "zip", | ||
5098 | "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", | ||
5099 | "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", | ||
5100 | "shasum": "" | ||
5101 | }, | ||
5102 | "require": { | ||
5103 | "composer-plugin-api": "^1.0.0", | ||
5104 | "php": "^7.1.0" | ||
5105 | }, | ||
5106 | "require-dev": { | ||
5107 | "composer/composer": "^1.6.3", | ||
5108 | "doctrine/coding-standard": "^5.0.1", | ||
5109 | "ext-zip": "*", | ||
5110 | "infection/infection": "^0.7.1", | ||
5111 | "phpunit/phpunit": "^7.0.0" | ||
5112 | }, | ||
5113 | "type": "composer-plugin", | ||
5114 | "extra": { | ||
5115 | "class": "PackageVersions\\Installer", | ||
5116 | "branch-alias": { | ||
5117 | "dev-master": "2.0.x-dev" | ||
5118 | } | ||
5119 | }, | ||
5120 | "autoload": { | ||
5121 | "psr-4": { | ||
5122 | "PackageVersions\\": "src/PackageVersions" | ||
5123 | } | ||
5124 | }, | ||
5125 | "notification-url": "https://packagist.org/downloads/", | ||
5126 | "license": [ | ||
5127 | "MIT" | ||
5128 | ], | ||
5129 | "authors": [ | ||
5130 | { | ||
5131 | "name": "Marco Pivetta", | ||
5132 | "email": "ocramius@gmail.com" | ||
5133 | } | ||
5134 | ], | ||
5135 | "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", | ||
5136 | "time": "2019-02-21T12:16:21+00:00" | ||
5137 | }, | ||
5138 | { | ||
5139 | "name": "ocramius/proxy-manager", | ||
5140 | "version": "2.1.1", | ||
5141 | "source": { | ||
5142 | "type": "git", | ||
5143 | "url": "https://github.com/Ocramius/ProxyManager.git", | ||
5144 | "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7" | ||
5145 | }, | ||
5146 | "dist": { | ||
5147 | "type": "zip", | ||
5148 | "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/e18ac876b2e4819c76349de8f78ccc8ef1554cd7", | ||
5149 | "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7", | ||
5150 | "shasum": "" | ||
5151 | }, | ||
5152 | "require": { | ||
5153 | "ocramius/package-versions": "^1.1.1", | ||
5154 | "php": "^7.1.0", | ||
5155 | "zendframework/zend-code": "^3.1.0" | ||
5156 | }, | ||
5157 | "require-dev": { | ||
5158 | "couscous/couscous": "^1.5.2", | ||
5159 | "ext-phar": "*", | ||
5160 | "humbug/humbug": "dev-master@DEV", | ||
5161 | "nikic/php-parser": "^3.0.4", | ||
5162 | "phpbench/phpbench": "^0.12.2", | ||
5163 | "phpstan/phpstan": "^0.6.4", | ||
5164 | "phpunit/phpunit": "^5.6.4", | ||
5165 | "phpunit/phpunit-mock-objects": "^3.4.1", | ||
5166 | "squizlabs/php_codesniffer": "^2.7.0" | ||
5167 | }, | ||
5168 | "suggest": { | ||
5169 | "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", | ||
5170 | "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", | ||
5171 | "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", | ||
5172 | "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" | ||
5173 | }, | ||
5174 | "type": "library", | ||
5175 | "extra": { | ||
5176 | "branch-alias": { | ||
5177 | "dev-master": "3.0.x-dev" | ||
5178 | } | ||
5179 | }, | ||
5180 | "autoload": { | ||
5181 | "psr-0": { | ||
5182 | "ProxyManager\\": "src" | ||
5183 | } | ||
5184 | }, | ||
5185 | "notification-url": "https://packagist.org/downloads/", | ||
5186 | "license": [ | ||
5187 | "MIT" | ||
5188 | ], | ||
5189 | "authors": [ | ||
5190 | { | ||
5191 | "name": "Marco Pivetta", | ||
5192 | "email": "ocramius@gmail.com", | ||
5193 | "homepage": "http://ocramius.github.io/" | ||
5194 | } | ||
5195 | ], | ||
5196 | "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", | ||
5197 | "homepage": "https://github.com/Ocramius/ProxyManager", | ||
5198 | "keywords": [ | ||
5199 | "aop", | ||
5200 | "lazy loading", | ||
5201 | "proxy", | ||
5202 | "proxy pattern", | ||
5203 | "service proxies" | ||
5204 | ], | ||
5205 | "time": "2017-05-04T11:12:50+00:00" | ||
5206 | }, | ||
5207 | { | ||
5208 | "name": "pagerfanta/pagerfanta", | ||
5209 | "version": "v2.1.2", | ||
5210 | "source": { | ||
5211 | "type": "git", | ||
5212 | "url": "https://github.com/whiteoctober/Pagerfanta.git", | ||
5213 | "reference": "45a85ad426316ae37f2d007022e5b4c95bc3aef4" | ||
5214 | }, | ||
5215 | "dist": { | ||
5216 | "type": "zip", | ||
5217 | "url": "https://api.github.com/repos/whiteoctober/Pagerfanta/zipball/45a85ad426316ae37f2d007022e5b4c95bc3aef4", | ||
5218 | "reference": "45a85ad426316ae37f2d007022e5b4c95bc3aef4", | ||
5219 | "shasum": "" | ||
5220 | }, | ||
5221 | "require": { | ||
5222 | "php": "^7.0" | ||
5223 | }, | ||
5224 | "require-dev": { | ||
5225 | "doctrine/orm": "~2.3", | ||
5226 | "doctrine/phpcr-odm": "1.*", | ||
5227 | "jackalope/jackalope-doctrine-dbal": "1.*", | ||
5228 | "jmikola/geojson": "~1.0", | ||
5229 | "mandango/mandango": "~1.0@dev", | ||
5230 | "mandango/mondator": "~1.0@dev", | ||
5231 | "phpunit/phpunit": "^6.5", | ||
5232 | "propel/propel": "~2.0@dev", | ||
5233 | "propel/propel1": "~1.6", | ||
5234 | "ruflin/elastica": "~1.3", | ||
5235 | "solarium/solarium": "~3.1" | ||
5236 | }, | ||
5237 | "suggest": { | ||
5238 | "doctrine/mongodb-odm": "To use the DoctrineODMMongoDBAdapter.", | ||
5239 | "doctrine/orm": "To use the DoctrineORMAdapter.", | ||
5240 | "doctrine/phpcr-odm": "To use the DoctrineODMPhpcrAdapter. >= 1.1.0", | ||
5241 | "mandango/mandango": "To use the MandangoAdapter.", | ||
5242 | "propel/propel": "To use the Propel2Adapter", | ||
5243 | "propel/propel1": "To use the PropelAdapter", | ||
5244 | "solarium/solarium": "To use the SolariumAdapter." | ||
5245 | }, | ||
5246 | "type": "library", | ||
5247 | "extra": { | ||
5248 | "branch-alias": { | ||
5249 | "dev-master": "1.0.x-dev" | ||
5250 | } | ||
5251 | }, | ||
5252 | "autoload": { | ||
5253 | "psr-4": { | ||
5254 | "Pagerfanta\\": "src/Pagerfanta/" | ||
5255 | } | ||
5256 | }, | ||
5257 | "notification-url": "https://packagist.org/downloads/", | ||
5258 | "license": [ | ||
5259 | "MIT" | ||
5260 | ], | ||
5261 | "authors": [ | ||
5262 | { | ||
5263 | "name": "Pablo Díez", | ||
5264 | "email": "pablodip@gmail.com" | ||
5265 | } | ||
5266 | ], | ||
5267 | "description": "Pagination for PHP", | ||
5268 | "keywords": [ | ||
5269 | "page", | ||
5270 | "pagination", | ||
5271 | "paginator", | ||
5272 | "paging" | ||
5273 | ], | ||
5274 | "time": "2019-04-02T08:50:39+00:00" | ||
5275 | }, | ||
5276 | { | ||
5277 | "name": "paragonie/random_compat", | ||
5278 | "version": "v2.0.18", | ||
5279 | "source": { | ||
5280 | "type": "git", | ||
5281 | "url": "https://github.com/paragonie/random_compat.git", | ||
5282 | "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db" | ||
5283 | }, | ||
5284 | "dist": { | ||
5285 | "type": "zip", | ||
5286 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db", | ||
5287 | "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db", | ||
5288 | "shasum": "" | ||
5289 | }, | ||
5290 | "require": { | ||
5291 | "php": ">=5.2.0" | ||
5292 | }, | ||
5293 | "require-dev": { | ||
5294 | "phpunit/phpunit": "4.*|5.*" | ||
5295 | }, | ||
5296 | "suggest": { | ||
5297 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." | ||
5298 | }, | ||
5299 | "type": "library", | ||
5300 | "autoload": { | ||
5301 | "files": [ | ||
5302 | "lib/random.php" | ||
5303 | ] | ||
5304 | }, | ||
5305 | "notification-url": "https://packagist.org/downloads/", | ||
5306 | "license": [ | ||
5307 | "MIT" | ||
5308 | ], | ||
5309 | "authors": [ | ||
5310 | { | ||
5311 | "name": "Paragon Initiative Enterprises", | ||
5312 | "email": "security@paragonie.com", | ||
5313 | "homepage": "https://paragonie.com" | ||
5314 | } | ||
5315 | ], | ||
5316 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", | ||
5317 | "keywords": [ | ||
5318 | "csprng", | ||
5319 | "polyfill", | ||
5320 | "pseudorandom", | ||
5321 | "random" | ||
5322 | ], | ||
5323 | "time": "2019-01-03T20:59:08+00:00" | ||
5324 | }, | ||
5325 | { | ||
5326 | "name": "php-amqplib/php-amqplib", | ||
5327 | "version": "v2.9.2", | ||
5328 | "source": { | ||
5329 | "type": "git", | ||
5330 | "url": "https://github.com/php-amqplib/php-amqplib.git", | ||
5331 | "reference": "76faddcd668dabb8d4f7c00e86b8a9decd781a59" | ||
5332 | }, | ||
5333 | "dist": { | ||
5334 | "type": "zip", | ||
5335 | "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/76faddcd668dabb8d4f7c00e86b8a9decd781a59", | ||
5336 | "reference": "76faddcd668dabb8d4f7c00e86b8a9decd781a59", | ||
5337 | "shasum": "" | ||
5338 | }, | ||
5339 | "require": { | ||
5340 | "ext-bcmath": "*", | ||
5341 | "ext-sockets": "*", | ||
5342 | "php": ">=5.4.0" | ||
5343 | }, | ||
5344 | "replace": { | ||
5345 | "videlalvaro/php-amqplib": "self.version" | ||
5346 | }, | ||
5347 | "require-dev": { | ||
5348 | "ext-curl": "*", | ||
5349 | "nategood/httpful": "^0.2.20", | ||
5350 | "phpdocumentor/phpdocumentor": "^2.9", | ||
5351 | "phpunit/phpunit": "^4.8", | ||
5352 | "squizlabs/php_codesniffer": "^2.5" | ||
5353 | }, | ||
5354 | "type": "library", | ||
5355 | "extra": { | ||
5356 | "branch-alias": { | ||
5357 | "dev-master": "2.8-dev" | ||
5358 | } | ||
5359 | }, | ||
5360 | "autoload": { | ||
5361 | "psr-4": { | ||
5362 | "PhpAmqpLib\\": "PhpAmqpLib/" | ||
5363 | } | ||
5364 | }, | ||
5365 | "notification-url": "https://packagist.org/downloads/", | ||
5366 | "license": [ | ||
5367 | "LGPL-2.1-or-later" | ||
5368 | ], | ||
5369 | "authors": [ | ||
5370 | { | ||
5371 | "name": "Alvaro Videla", | ||
5372 | "role": "Original Maintainer" | ||
5373 | }, | ||
5374 | { | ||
5375 | "name": "John Kelly", | ||
5376 | "email": "johnmkelly86@gmail.com", | ||
5377 | "role": "Maintainer" | ||
5378 | }, | ||
5379 | { | ||
5380 | "name": "Raúl Araya", | ||
5381 | "email": "nubeiro@gmail.com", | ||
5382 | "role": "Maintainer" | ||
5383 | }, | ||
5384 | { | ||
5385 | "name": "Luke Bakken", | ||
5386 | "email": "luke@bakken.io", | ||
5387 | "role": "Maintainer" | ||
5388 | } | ||
5389 | ], | ||
5390 | "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", | ||
5391 | "homepage": "https://github.com/php-amqplib/php-amqplib/", | ||
5392 | "keywords": [ | ||
5393 | "message", | ||
5394 | "queue", | ||
5395 | "rabbitmq" | ||
5396 | ], | ||
5397 | "time": "2019-04-24T15:36:21+00:00" | ||
5398 | }, | ||
5399 | { | ||
5400 | "name": "php-amqplib/rabbitmq-bundle", | ||
5401 | "version": "v1.14.4", | ||
5402 | "source": { | ||
5403 | "type": "git", | ||
5404 | "url": "https://github.com/php-amqplib/RabbitMqBundle.git", | ||
5405 | "reference": "cf67adaa4e306d8e9cb6855a72d79263b425ded8" | ||
5406 | }, | ||
5407 | "dist": { | ||
5408 | "type": "zip", | ||
5409 | "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/cf67adaa4e306d8e9cb6855a72d79263b425ded8", | ||
5410 | "reference": "cf67adaa4e306d8e9cb6855a72d79263b425ded8", | ||
5411 | "shasum": "" | ||
5412 | }, | ||
5413 | "require": { | ||
5414 | "php": "^5.3.9|^7.0", | ||
5415 | "php-amqplib/php-amqplib": "^2.6", | ||
5416 | "psr/log": "^1.0", | ||
5417 | "symfony/config": "^2.7|^3.0|^4.0", | ||
5418 | "symfony/console": "^2.7|^3.0|^4.0", | ||
5419 | "symfony/dependency-injection": "^2.7|^3.0|^4.0", | ||
5420 | "symfony/event-dispatcher": "^2.7|^3.0|^4.0", | ||
5421 | "symfony/yaml": "^2.7|^3.0|^4.0" | ||
5422 | }, | ||
5423 | "replace": { | ||
5424 | "oldsound/rabbitmq-bundle": "self.version" | ||
5425 | }, | ||
5426 | "require-dev": { | ||
5427 | "phpunit/phpunit": "^4.8.35|^5.4.3", | ||
5428 | "symfony/debug": "^2.7|^3.0|^4.0", | ||
5429 | "symfony/serializer": "^2.7|^3.0|^4.0" | ||
5430 | }, | ||
5431 | "suggest": { | ||
5432 | "symfony/framework-bundle": "To use this lib as a full Symfony Bundle and to use the profiler data collector" | ||
5433 | }, | ||
5434 | "type": "symfony-bundle", | ||
5435 | "extra": { | ||
5436 | "branch-alias": { | ||
5437 | "dev-master": "1.10.x-dev" | ||
5438 | } | ||
5439 | }, | ||
5440 | "autoload": { | ||
5441 | "psr-4": { | ||
5442 | "OldSound\\RabbitMqBundle\\": "" | ||
5443 | }, | ||
5444 | "exclude-from-classmap": [ | ||
5445 | "/Tests/" | ||
5446 | ] | ||
5447 | }, | ||
5448 | "notification-url": "https://packagist.org/downloads/", | ||
5449 | "license": [ | ||
5450 | "MIT" | ||
5451 | ], | ||
5452 | "authors": [ | ||
5453 | { | ||
5454 | "name": "Alvaro Videla" | ||
5455 | } | ||
5456 | ], | ||
5457 | "description": "Integrates php-amqplib with Symfony & RabbitMq. Formerly oldsound/rabbitmq-bundle.", | ||
5458 | "keywords": [ | ||
5459 | "AMQP", | ||
5460 | "Symfony2", | ||
5461 | "message", | ||
5462 | "queue", | ||
5463 | "rabbitmq", | ||
5464 | "symfony", | ||
5465 | "symfony3", | ||
5466 | "symfony4" | ||
5467 | ], | ||
5468 | "time": "2018-05-02T13:12:32+00:00" | ||
5469 | }, | ||
5470 | { | ||
5471 | "name": "php-http/client-common", | ||
5472 | "version": "2.0.0", | ||
5473 | "source": { | ||
5474 | "type": "git", | ||
5475 | "url": "https://github.com/php-http/client-common.git", | ||
5476 | "reference": "2b8aa3c4910afc21146a9c8f96adb266e869517a" | ||
5477 | }, | ||
5478 | "dist": { | ||
5479 | "type": "zip", | ||
5480 | "url": "https://api.github.com/repos/php-http/client-common/zipball/2b8aa3c4910afc21146a9c8f96adb266e869517a", | ||
5481 | "reference": "2b8aa3c4910afc21146a9c8f96adb266e869517a", | ||
5482 | "shasum": "" | ||
5483 | }, | ||
5484 | "require": { | ||
5485 | "php": "^7.1", | ||
5486 | "php-http/httplug": "^2.0", | ||
5487 | "php-http/message": "^1.6", | ||
5488 | "php-http/message-factory": "^1.0", | ||
5489 | "symfony/options-resolver": " ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1" | ||
5490 | }, | ||
5491 | "require-dev": { | ||
5492 | "doctrine/instantiator": "^1.1", | ||
5493 | "guzzlehttp/psr7": "^1.4", | ||
5494 | "phpspec/phpspec": "^5.1", | ||
5495 | "phpspec/prophecy": "^1.8", | ||
5496 | "sebastian/comparator": "^3.0" | ||
5497 | }, | ||
5498 | "suggest": { | ||
5499 | "ext-json": "To detect JSON responses with the ContentTypePlugin", | ||
5500 | "ext-libxml": "To detect XML responses with the ContentTypePlugin", | ||
5501 | "php-http/cache-plugin": "PSR-6 Cache plugin", | ||
5502 | "php-http/logger-plugin": "PSR-3 Logger plugin", | ||
5503 | "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" | ||
5504 | }, | ||
5505 | "type": "library", | ||
5506 | "extra": { | ||
5507 | "branch-alias": { | ||
5508 | "dev-master": "2.0.x-dev" | ||
5509 | } | ||
5510 | }, | ||
5511 | "autoload": { | ||
5512 | "psr-4": { | ||
5513 | "Http\\Client\\Common\\": "src/" | ||
5514 | } | ||
5515 | }, | ||
5516 | "notification-url": "https://packagist.org/downloads/", | ||
5517 | "license": [ | ||
5518 | "MIT" | ||
5519 | ], | ||
5520 | "authors": [ | ||
5521 | { | ||
5522 | "name": "Márk Sági-Kazár", | ||
5523 | "email": "mark.sagikazar@gmail.com" | ||
5524 | } | ||
5525 | ], | ||
5526 | "description": "Common HTTP Client implementations and tools for HTTPlug", | ||
5527 | "homepage": "http://httplug.io", | ||
5528 | "keywords": [ | ||
5529 | "client", | ||
5530 | "common", | ||
5531 | "http", | ||
5532 | "httplug" | ||
5533 | ], | ||
5534 | "time": "2019-02-03T16:49:09+00:00" | ||
5535 | }, | ||
5536 | { | ||
5537 | "name": "php-http/curl-client", | ||
5538 | "version": "2.0.0", | ||
5539 | "source": { | ||
5540 | "type": "git", | ||
5541 | "url": "https://github.com/php-http/curl-client.git", | ||
5542 | "reference": "e7a2a5ebcce1ff7d75eaf02b7c85634a6fac00da" | ||
5543 | }, | ||
5544 | "dist": { | ||
5545 | "type": "zip", | ||
5546 | "url": "https://api.github.com/repos/php-http/curl-client/zipball/e7a2a5ebcce1ff7d75eaf02b7c85634a6fac00da", | ||
5547 | "reference": "e7a2a5ebcce1ff7d75eaf02b7c85634a6fac00da", | ||
5548 | "shasum": "" | ||
5549 | }, | ||
5550 | "require": { | ||
5551 | "ext-curl": "*", | ||
5552 | "php": "^7.1", | ||
5553 | "php-http/discovery": "^1.6", | ||
5554 | "php-http/httplug": "^2.0", | ||
5555 | "php-http/message": "^1.2", | ||
5556 | "psr/http-client": "^1.0", | ||
5557 | "psr/http-factory": "^1.0", | ||
5558 | "symfony/options-resolver": "^3.4 || ^4.0" | ||
5559 | }, | ||
5560 | "provide": { | ||
5561 | "php-http/async-client-implementation": "1.0", | ||
5562 | "php-http/client-implementation": "1.0" | ||
5563 | }, | ||
5564 | "require-dev": { | ||
5565 | "guzzlehttp/psr7": "^1.0", | ||
5566 | "php-http/client-integration-tests": "^2.0", | ||
5567 | "phpunit/phpunit": "^7.5", | ||
5568 | "zendframework/zend-diactoros": "^2.0" | ||
5569 | }, | ||
5570 | "type": "library", | ||
5571 | "extra": { | ||
5572 | "branch-alias": { | ||
5573 | "dev-master": "2.x-dev" | ||
5574 | } | ||
5575 | }, | ||
5576 | "autoload": { | ||
5577 | "psr-4": { | ||
5578 | "Http\\Client\\Curl\\": "src/" | ||
5579 | } | ||
5580 | }, | ||
5581 | "notification-url": "https://packagist.org/downloads/", | ||
5582 | "license": [ | ||
5583 | "MIT" | ||
5584 | ], | ||
5585 | "authors": [ | ||
5586 | { | ||
5587 | "name": "Михаил Красильников", | ||
5588 | "email": "m.krasilnikov@yandex.ru" | ||
5589 | } | ||
5590 | ], | ||
5591 | "description": "PSR-18 and HTTPlug Async client with cURL", | ||
5592 | "homepage": "http://php-http.org", | ||
5593 | "keywords": [ | ||
5594 | "curl", | ||
5595 | "http", | ||
5596 | "psr-18" | ||
5597 | ], | ||
5598 | "time": "2019-03-05T19:59:23+00:00" | ||
5599 | }, | ||
5600 | { | ||
5601 | "name": "php-http/discovery", | ||
5602 | "version": "1.6.1", | ||
5603 | "source": { | ||
5604 | "type": "git", | ||
5605 | "url": "https://github.com/php-http/discovery.git", | ||
5606 | "reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651" | ||
5607 | }, | ||
5608 | "dist": { | ||
5609 | "type": "zip", | ||
5610 | "url": "https://api.github.com/repos/php-http/discovery/zipball/684855f2c2e9d0a61868b8f8d6bd0295c8a4b651", | ||
5611 | "reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651", | ||
5612 | "shasum": "" | ||
5613 | }, | ||
5614 | "require": { | ||
5615 | "php": "^5.5 || ^7.0" | ||
5616 | }, | ||
5617 | "conflict": { | ||
5618 | "nyholm/psr7": "<1.0" | ||
5619 | }, | ||
5620 | "require-dev": { | ||
5621 | "php-http/httplug": "^1.0 || ^2.0", | ||
5622 | "php-http/message-factory": "^1.0", | ||
5623 | "phpspec/phpspec": "^2.4", | ||
5624 | "puli/composer-plugin": "1.0.0-beta10" | ||
5625 | }, | ||
5626 | "suggest": { | ||
5627 | "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", | ||
5628 | "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." | ||
5629 | }, | ||
5630 | "type": "library", | ||
5631 | "extra": { | ||
5632 | "branch-alias": { | ||
5633 | "dev-master": "1.5-dev" | ||
5634 | } | ||
5635 | }, | ||
5636 | "autoload": { | ||
5637 | "psr-4": { | ||
5638 | "Http\\Discovery\\": "src/" | ||
5639 | } | ||
5640 | }, | ||
5641 | "notification-url": "https://packagist.org/downloads/", | ||
5642 | "license": [ | ||
5643 | "MIT" | ||
5644 | ], | ||
5645 | "authors": [ | ||
5646 | { | ||
5647 | "name": "Márk Sági-Kazár", | ||
5648 | "email": "mark.sagikazar@gmail.com" | ||
5649 | } | ||
5650 | ], | ||
5651 | "description": "Finds installed HTTPlug implementations and PSR-7 message factories", | ||
5652 | "homepage": "http://php-http.org", | ||
5653 | "keywords": [ | ||
5654 | "adapter", | ||
5655 | "client", | ||
5656 | "discovery", | ||
5657 | "factory", | ||
5658 | "http", | ||
5659 | "message", | ||
5660 | "psr7" | ||
5661 | ], | ||
5662 | "time": "2019-02-23T07:42:53+00:00" | ||
5663 | }, | ||
5664 | { | ||
5665 | "name": "php-http/guzzle5-adapter", | ||
5666 | "version": "2.0.0", | ||
5667 | "source": { | ||
5668 | "type": "git", | ||
5669 | "url": "https://github.com/php-http/guzzle5-adapter.git", | ||
5670 | "reference": "cce48360b1f8a3467bd94e853e6107aa4532008e" | ||
5671 | }, | ||
5672 | "dist": { | ||
5673 | "type": "zip", | ||
5674 | "url": "https://api.github.com/repos/php-http/guzzle5-adapter/zipball/cce48360b1f8a3467bd94e853e6107aa4532008e", | ||
5675 | "reference": "cce48360b1f8a3467bd94e853e6107aa4532008e", | ||
5676 | "shasum": "" | ||
5677 | }, | ||
5678 | "require": { | ||
5679 | "guzzlehttp/guzzle": "^5.1", | ||
5680 | "php": "^7.0", | ||
5681 | "php-http/discovery": "^1.0", | ||
5682 | "php-http/httplug": "^2.0" | ||
5683 | }, | ||
5684 | "provide": { | ||
5685 | "php-http/client-implementation": "1.0", | ||
5686 | "psr/http-client-implementation": "1.0" | ||
5687 | }, | ||
5688 | "require-dev": { | ||
5689 | "ext-curl": "*", | ||
5690 | "guzzlehttp/ringphp": "^1.1", | ||
5691 | "php-http/client-integration-tests": "^2.0", | ||
5692 | "phpunit/phpunit": "^6.0 || ^7.0" | ||
5693 | }, | ||
5694 | "type": "library", | ||
5695 | "extra": { | ||
5696 | "branch-alias": { | ||
5697 | "dev-master": "2.0-dev" | ||
5698 | } | ||
5699 | }, | ||
5700 | "autoload": { | ||
5701 | "psr-4": { | ||
5702 | "Http\\Adapter\\Guzzle5\\": "src/" | ||
5703 | } | ||
5704 | }, | ||
5705 | "notification-url": "https://packagist.org/downloads/", | ||
5706 | "license": [ | ||
5707 | "MIT" | ||
5708 | ], | ||
5709 | "authors": [ | ||
5710 | { | ||
5711 | "name": "Eric GELOEN", | ||
5712 | "email": "geloen.eric@gmail.com" | ||
5713 | }, | ||
5714 | { | ||
5715 | "name": "Márk Sági-Kazár", | ||
5716 | "email": "mark.sagikazar@gmail.com" | ||
5717 | } | ||
5718 | ], | ||
5719 | "description": "Guzzle 5 HTTP Adapter", | ||
5720 | "homepage": "http://httplug.io", | ||
5721 | "keywords": [ | ||
5722 | "Guzzle", | ||
5723 | "http" | ||
5724 | ], | ||
5725 | "time": "2019-02-05T12:28:45+00:00" | ||
5726 | }, | ||
5727 | { | ||
5728 | "name": "php-http/httplug", | ||
5729 | "version": "v2.0.0", | ||
5730 | "source": { | ||
5731 | "type": "git", | ||
5732 | "url": "https://github.com/php-http/httplug.git", | ||
5733 | "reference": "b3842537338c949f2469557ef4ad4bdc47b58603" | ||
5734 | }, | ||
5735 | "dist": { | ||
5736 | "type": "zip", | ||
5737 | "url": "https://api.github.com/repos/php-http/httplug/zipball/b3842537338c949f2469557ef4ad4bdc47b58603", | ||
5738 | "reference": "b3842537338c949f2469557ef4ad4bdc47b58603", | ||
5739 | "shasum": "" | ||
5740 | }, | ||
5741 | "require": { | ||
5742 | "php": "^7.0", | ||
5743 | "php-http/promise": "^1.0", | ||
5744 | "psr/http-client": "^1.0", | ||
5745 | "psr/http-message": "^1.0" | ||
5746 | }, | ||
5747 | "require-dev": { | ||
5748 | "henrikbjorn/phpspec-code-coverage": "^1.0", | ||
5749 | "phpspec/phpspec": "^2.4" | ||
5750 | }, | ||
5751 | "type": "library", | ||
5752 | "extra": { | ||
5753 | "branch-alias": { | ||
5754 | "dev-master": "2.0.x-dev" | ||
5755 | } | ||
5756 | }, | ||
5757 | "autoload": { | ||
5758 | "psr-4": { | ||
5759 | "Http\\Client\\": "src/" | ||
5760 | } | ||
5761 | }, | ||
5762 | "notification-url": "https://packagist.org/downloads/", | ||
5763 | "license": [ | ||
5764 | "MIT" | ||
5765 | ], | ||
5766 | "authors": [ | ||
5767 | { | ||
5768 | "name": "Eric GELOEN", | ||
5769 | "email": "geloen.eric@gmail.com" | ||
5770 | }, | ||
5771 | { | ||
5772 | "name": "Márk Sági-Kazár", | ||
5773 | "email": "mark.sagikazar@gmail.com" | ||
5774 | } | ||
5775 | ], | ||
5776 | "description": "HTTPlug, the HTTP client abstraction for PHP", | ||
5777 | "homepage": "http://httplug.io", | ||
5778 | "keywords": [ | ||
5779 | "client", | ||
5780 | "http" | ||
5781 | ], | ||
5782 | "time": "2018-10-31T09:14:44+00:00" | ||
5783 | }, | ||
5784 | { | ||
5785 | "name": "php-http/httplug-bundle", | ||
5786 | "version": "1.15.2", | ||
5787 | "source": { | ||
5788 | "type": "git", | ||
5789 | "url": "https://github.com/php-http/HttplugBundle.git", | ||
5790 | "reference": "35d281804a90f0359aa9da5b5b1f55c18aeafaf8" | ||
5791 | }, | ||
5792 | "dist": { | ||
5793 | "type": "zip", | ||
5794 | "url": "https://api.github.com/repos/php-http/HttplugBundle/zipball/35d281804a90f0359aa9da5b5b1f55c18aeafaf8", | ||
5795 | "reference": "35d281804a90f0359aa9da5b5b1f55c18aeafaf8", | ||
5796 | "shasum": "" | ||
5797 | }, | ||
5798 | "require": { | ||
5799 | "php": "^5.5 || ^7.0", | ||
5800 | "php-http/client-common": "^1.9 || ^2.0", | ||
5801 | "php-http/client-implementation": "^1.0", | ||
5802 | "php-http/discovery": "^1.0", | ||
5803 | "php-http/httplug": "^1.0 || ^2.0", | ||
5804 | "php-http/logger-plugin": "^1.1", | ||
5805 | "php-http/message": "^1.4", | ||
5806 | "php-http/message-factory": "^1.0.2", | ||
5807 | "php-http/stopwatch-plugin": "^1.2", | ||
5808 | "psr/http-message": "^1.0", | ||
5809 | "symfony/config": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5810 | "symfony/dependency-injection": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5811 | "symfony/event-dispatcher": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5812 | "symfony/http-kernel": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5813 | "symfony/options-resolver": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1" | ||
5814 | }, | ||
5815 | "conflict": { | ||
5816 | "php-http/guzzle6-adapter": "<1.1" | ||
5817 | }, | ||
5818 | "require-dev": { | ||
5819 | "guzzlehttp/psr7": "^1.0", | ||
5820 | "matthiasnoback/symfony-dependency-injection-test": "^1.1 || ^2.3", | ||
5821 | "nyholm/nsa": "^1.1", | ||
5822 | "php-http/cache-plugin": "^1.6", | ||
5823 | "php-http/guzzle6-adapter": "^1.1.1 || ^2.0.1", | ||
5824 | "php-http/mock-client": "^1.2", | ||
5825 | "php-http/promise": "^1.0", | ||
5826 | "polishsymfonycommunity/symfony-mocker-container": "^1.0", | ||
5827 | "symfony/browser-kit": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5828 | "symfony/cache": "^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5829 | "symfony/dom-crawler": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5830 | "symfony/framework-bundle": "^2.8.1 || ^3.0.1 || ^4.0", | ||
5831 | "symfony/http-foundation": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5832 | "symfony/phpunit-bridge": "^3.4 || ^4.2", | ||
5833 | "symfony/stopwatch": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5834 | "symfony/twig-bundle": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5835 | "symfony/web-profiler-bundle": "^2.8.49 || ^3.0.9 || ^3.1.10 || ^3.2.14 || ^3.3.18 || ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1", | ||
5836 | "twig/twig": "^1.36 || ^2.6" | ||
5837 | }, | ||
5838 | "suggest": { | ||
5839 | "php-http/cache-plugin": "To configure clients that cache responses", | ||
5840 | "php-http/mock-client": "Add this to your require-dev section to mock HTTP responses easily", | ||
5841 | "twig/twig": "Add this to your require-dev section when using the WebProfilerBundle" | ||
5842 | }, | ||
5843 | "type": "symfony-bundle", | ||
5844 | "extra": { | ||
5845 | "branch-alias": { | ||
5846 | "dev-master": "1.x-dev" | ||
5847 | } | ||
5848 | }, | ||
5849 | "autoload": { | ||
5850 | "psr-4": { | ||
5851 | "Http\\HttplugBundle\\": "src/" | ||
5852 | }, | ||
5853 | "exclude-from-classmap": [ | ||
5854 | "/Tests/Resources/MyPsr18TestClient.php" | ||
5855 | ] | ||
5856 | }, | ||
5857 | "notification-url": "https://packagist.org/downloads/", | ||
5858 | "license": [ | ||
5859 | "MIT" | ||
5860 | ], | ||
5861 | "authors": [ | ||
5862 | { | ||
5863 | "name": "David Buchmann", | ||
5864 | "email": "mail@davidbu.ch" | ||
5865 | }, | ||
5866 | { | ||
5867 | "name": "Tobias Nyholm", | ||
5868 | "email": "tobias.nyholm@gmail.com" | ||
5869 | } | ||
5870 | ], | ||
5871 | "description": "Symfony integration for HTTPlug", | ||
5872 | "homepage": "http://httplug.io", | ||
5873 | "keywords": [ | ||
5874 | "adapter", | ||
5875 | "bundle", | ||
5876 | "discovery", | ||
5877 | "factory", | ||
5878 | "http", | ||
5879 | "httplug", | ||
5880 | "message", | ||
5881 | "php-http" | ||
5882 | ], | ||
5883 | "time": "2019-04-18T14:01:25+00:00" | ||
5884 | }, | ||
5885 | { | ||
5886 | "name": "php-http/logger-plugin", | ||
5887 | "version": "1.1.0", | ||
5888 | "source": { | ||
5889 | "type": "git", | ||
5890 | "url": "https://github.com/php-http/logger-plugin.git", | ||
5891 | "reference": "c1c6e90717ce350319b7b8bc489f1db35bb523fd" | ||
5892 | }, | ||
5893 | "dist": { | ||
5894 | "type": "zip", | ||
5895 | "url": "https://api.github.com/repos/php-http/logger-plugin/zipball/c1c6e90717ce350319b7b8bc489f1db35bb523fd", | ||
5896 | "reference": "c1c6e90717ce350319b7b8bc489f1db35bb523fd", | ||
5897 | "shasum": "" | ||
5898 | }, | ||
5899 | "require": { | ||
5900 | "php": "^5.4 || ^7.0", | ||
5901 | "php-http/client-common": "^1.9 || ^2.0", | ||
5902 | "php-http/message": "^1.0", | ||
5903 | "psr/log": "^1.0" | ||
5904 | }, | ||
5905 | "require-dev": { | ||
5906 | "henrikbjorn/phpspec-code-coverage": "^1.0", | ||
5907 | "phpspec/phpspec": "^2.5" | ||
5908 | }, | ||
5909 | "type": "library", | ||
5910 | "extra": { | ||
5911 | "branch-alias": { | ||
5912 | "dev-master": "1.1-dev" | ||
5913 | } | ||
5914 | }, | ||
5915 | "autoload": { | ||
5916 | "psr-4": { | ||
5917 | "Http\\Client\\Common\\Plugin\\": "src/" | ||
5918 | } | ||
5919 | }, | ||
5920 | "notification-url": "https://packagist.org/downloads/", | ||
5921 | "license": [ | ||
5922 | "MIT" | ||
5923 | ], | ||
5924 | "authors": [ | ||
5925 | { | ||
5926 | "name": "Márk Sági-Kazár", | ||
5927 | "email": "mark.sagikazar@gmail.com" | ||
5928 | } | ||
5929 | ], | ||
5930 | "description": "PSR-3 Logger plugin for HTTPlug", | ||
5931 | "homepage": "http://httplug.io", | ||
5932 | "keywords": [ | ||
5933 | "http", | ||
5934 | "httplug", | ||
5935 | "logger", | ||
5936 | "plugin" | ||
5937 | ], | ||
5938 | "time": "2019-01-30T11:48:21+00:00" | ||
5939 | }, | ||
5940 | { | ||
5941 | "name": "php-http/message", | ||
5942 | "version": "1.7.2", | ||
5943 | "source": { | ||
5944 | "type": "git", | ||
5945 | "url": "https://github.com/php-http/message.git", | ||
5946 | "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1" | ||
5947 | }, | ||
5948 | "dist": { | ||
5949 | "type": "zip", | ||
5950 | "url": "https://api.github.com/repos/php-http/message/zipball/b159ffe570dffd335e22ef0b91a946eacb182fa1", | ||
5951 | "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1", | ||
5952 | "shasum": "" | ||
5953 | }, | ||
5954 | "require": { | ||
5955 | "clue/stream-filter": "^1.4", | ||
5956 | "php": "^5.4 || ^7.0", | ||
5957 | "php-http/message-factory": "^1.0.2", | ||
5958 | "psr/http-message": "^1.0" | ||
5959 | }, | ||
5960 | "provide": { | ||
5961 | "php-http/message-factory-implementation": "1.0" | ||
5962 | }, | ||
5963 | "require-dev": { | ||
5964 | "akeneo/phpspec-skip-example-extension": "^1.0", | ||
5965 | "coduo/phpspec-data-provider-extension": "^1.0", | ||
5966 | "ext-zlib": "*", | ||
5967 | "guzzlehttp/psr7": "^1.0", | ||
5968 | "henrikbjorn/phpspec-code-coverage": "^1.0", | ||
5969 | "phpspec/phpspec": "^2.4", | ||
5970 | "slim/slim": "^3.0", | ||
5971 | "zendframework/zend-diactoros": "^1.0" | ||
5972 | }, | ||
5973 | "suggest": { | ||
5974 | "ext-zlib": "Used with compressor/decompressor streams", | ||
5975 | "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", | ||
5976 | "slim/slim": "Used with Slim Framework PSR-7 implementation", | ||
5977 | "zendframework/zend-diactoros": "Used with Diactoros Factories" | ||
5978 | }, | ||
5979 | "type": "library", | ||
5980 | "extra": { | ||
5981 | "branch-alias": { | ||
5982 | "dev-master": "1.6-dev" | ||
5983 | } | ||
5984 | }, | ||
5985 | "autoload": { | ||
5986 | "psr-4": { | ||
5987 | "Http\\Message\\": "src/" | ||
5988 | }, | ||
5989 | "files": [ | ||
5990 | "src/filters.php" | ||
5991 | ] | ||
5992 | }, | ||
5993 | "notification-url": "https://packagist.org/downloads/", | ||
5994 | "license": [ | ||
5995 | "MIT" | ||
5996 | ], | ||
5997 | "authors": [ | ||
5998 | { | ||
5999 | "name": "Márk Sági-Kazár", | ||
6000 | "email": "mark.sagikazar@gmail.com" | ||
6001 | } | ||
6002 | ], | ||
6003 | "description": "HTTP Message related tools", | ||
6004 | "homepage": "http://php-http.org", | ||
6005 | "keywords": [ | ||
6006 | "http", | ||
6007 | "message", | ||
6008 | "psr-7" | ||
6009 | ], | ||
6010 | "time": "2018-11-01T09:32:41+00:00" | ||
6011 | }, | ||
6012 | { | ||
6013 | "name": "php-http/message-factory", | ||
6014 | "version": "v1.0.2", | ||
6015 | "source": { | ||
6016 | "type": "git", | ||
6017 | "url": "https://github.com/php-http/message-factory.git", | ||
6018 | "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" | ||
6019 | }, | ||
6020 | "dist": { | ||
6021 | "type": "zip", | ||
6022 | "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", | ||
6023 | "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", | ||
6024 | "shasum": "" | ||
6025 | }, | ||
6026 | "require": { | ||
6027 | "php": ">=5.4", | ||
6028 | "psr/http-message": "^1.0" | ||
6029 | }, | ||
6030 | "type": "library", | ||
6031 | "extra": { | ||
6032 | "branch-alias": { | ||
6033 | "dev-master": "1.0-dev" | ||
6034 | } | ||
6035 | }, | ||
6036 | "autoload": { | ||
6037 | "psr-4": { | ||
6038 | "Http\\Message\\": "src/" | ||
6039 | } | ||
6040 | }, | ||
6041 | "notification-url": "https://packagist.org/downloads/", | ||
6042 | "license": [ | ||
6043 | "MIT" | ||
6044 | ], | ||
6045 | "authors": [ | ||
6046 | { | ||
6047 | "name": "Márk Sági-Kazár", | ||
6048 | "email": "mark.sagikazar@gmail.com" | ||
6049 | } | ||
6050 | ], | ||
6051 | "description": "Factory interfaces for PSR-7 HTTP Message", | ||
6052 | "homepage": "http://php-http.org", | ||
6053 | "keywords": [ | ||
6054 | "factory", | ||
6055 | "http", | ||
6056 | "message", | ||
6057 | "stream", | ||
6058 | "uri" | ||
6059 | ], | ||
6060 | "time": "2015-12-19T14:08:53+00:00" | ||
6061 | }, | ||
6062 | { | ||
6063 | "name": "php-http/promise", | ||
6064 | "version": "v1.0.0", | ||
6065 | "source": { | ||
6066 | "type": "git", | ||
6067 | "url": "https://github.com/php-http/promise.git", | ||
6068 | "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" | ||
6069 | }, | ||
6070 | "dist": { | ||
6071 | "type": "zip", | ||
6072 | "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", | ||
6073 | "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", | ||
6074 | "shasum": "" | ||
6075 | }, | ||
6076 | "require-dev": { | ||
6077 | "henrikbjorn/phpspec-code-coverage": "^1.0", | ||
6078 | "phpspec/phpspec": "^2.4" | ||
6079 | }, | ||
6080 | "type": "library", | ||
6081 | "extra": { | ||
6082 | "branch-alias": { | ||
6083 | "dev-master": "1.1-dev" | ||
6084 | } | ||
6085 | }, | ||
6086 | "autoload": { | ||
6087 | "psr-4": { | ||
6088 | "Http\\Promise\\": "src/" | ||
6089 | } | ||
6090 | }, | ||
6091 | "notification-url": "https://packagist.org/downloads/", | ||
6092 | "license": [ | ||
6093 | "MIT" | ||
6094 | ], | ||
6095 | "authors": [ | ||
6096 | { | ||
6097 | "name": "Márk Sági-Kazár", | ||
6098 | "email": "mark.sagikazar@gmail.com" | ||
6099 | }, | ||
6100 | { | ||
6101 | "name": "Joel Wurtz", | ||
6102 | "email": "joel.wurtz@gmail.com" | ||
6103 | } | ||
6104 | ], | ||
6105 | "description": "Promise used for asynchronous HTTP requests", | ||
6106 | "homepage": "http://httplug.io", | ||
6107 | "keywords": [ | ||
6108 | "promise" | ||
6109 | ], | ||
6110 | "time": "2016-01-26T13:27:02+00:00" | ||
6111 | }, | ||
6112 | { | ||
6113 | "name": "php-http/stopwatch-plugin", | ||
6114 | "version": "1.2.0", | ||
6115 | "source": { | ||
6116 | "type": "git", | ||
6117 | "url": "https://github.com/php-http/stopwatch-plugin.git", | ||
6118 | "reference": "520419dd18755a1e7b29077e677fbeb16b6629e7" | ||
6119 | }, | ||
6120 | "dist": { | ||
6121 | "type": "zip", | ||
6122 | "url": "https://api.github.com/repos/php-http/stopwatch-plugin/zipball/520419dd18755a1e7b29077e677fbeb16b6629e7", | ||
6123 | "reference": "520419dd18755a1e7b29077e677fbeb16b6629e7", | ||
6124 | "shasum": "" | ||
6125 | }, | ||
6126 | "require": { | ||
6127 | "php": "^5.4 || ^7.0", | ||
6128 | "php-http/client-common": "^1.9 || ^2.0", | ||
6129 | "symfony/stopwatch": "^2.7 || ^3.0 || ^4.0" | ||
6130 | }, | ||
6131 | "require-dev": { | ||
6132 | "phpspec/phpspec": "^2.5 || ^3.0 || ^4.0" | ||
6133 | }, | ||
6134 | "type": "library", | ||
6135 | "extra": { | ||
6136 | "branch-alias": { | ||
6137 | "dev-master": "1.2-dev" | ||
6138 | } | ||
6139 | }, | ||
6140 | "autoload": { | ||
6141 | "psr-4": { | ||
6142 | "Http\\Client\\Common\\Plugin\\": "src/" | ||
6143 | } | ||
6144 | }, | ||
6145 | "notification-url": "https://packagist.org/downloads/", | ||
6146 | "license": [ | ||
6147 | "MIT" | ||
6148 | ], | ||
6149 | "authors": [ | ||
6150 | { | ||
6151 | "name": "Márk Sági-Kazár", | ||
6152 | "email": "mark.sagikazar@gmail.com" | ||
6153 | } | ||
6154 | ], | ||
6155 | "description": "Symfony Stopwatch plugin for HTTPlug", | ||
6156 | "homepage": "http://httplug.io", | ||
6157 | "keywords": [ | ||
6158 | "http", | ||
6159 | "httplug", | ||
6160 | "plugin", | ||
6161 | "stopwatch" | ||
6162 | ], | ||
6163 | "time": "2019-01-30T12:01:37+00:00" | ||
6164 | }, | ||
6165 | { | ||
6166 | "name": "phpcollection/phpcollection", | ||
6167 | "version": "0.5.0", | ||
6168 | "source": { | ||
6169 | "type": "git", | ||
6170 | "url": "https://github.com/schmittjoh/php-collection.git", | ||
6171 | "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" | ||
6172 | }, | ||
6173 | "dist": { | ||
6174 | "type": "zip", | ||
6175 | "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", | ||
6176 | "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", | ||
6177 | "shasum": "" | ||
6178 | }, | ||
6179 | "require": { | ||
6180 | "phpoption/phpoption": "1.*" | ||
6181 | }, | ||
6182 | "type": "library", | ||
6183 | "extra": { | ||
6184 | "branch-alias": { | ||
6185 | "dev-master": "0.4-dev" | ||
6186 | } | ||
6187 | }, | ||
6188 | "autoload": { | ||
6189 | "psr-0": { | ||
6190 | "PhpCollection": "src/" | ||
6191 | } | ||
6192 | }, | ||
6193 | "notification-url": "https://packagist.org/downloads/", | ||
6194 | "license": [ | ||
6195 | "Apache2" | ||
6196 | ], | ||
6197 | "authors": [ | ||
6198 | { | ||
6199 | "name": "Johannes M. Schmitt", | ||
6200 | "email": "schmittjoh@gmail.com" | ||
6201 | } | ||
6202 | ], | ||
6203 | "description": "General-Purpose Collection Library for PHP", | ||
6204 | "keywords": [ | ||
6205 | "collection", | ||
6206 | "list", | ||
6207 | "map", | ||
6208 | "sequence", | ||
6209 | "set" | ||
6210 | ], | ||
6211 | "time": "2015-05-17T12:39:23+00:00" | ||
6212 | }, | ||
6213 | { | ||
6214 | "name": "phpoption/phpoption", | ||
6215 | "version": "1.5.0", | ||
6216 | "source": { | ||
6217 | "type": "git", | ||
6218 | "url": "https://github.com/schmittjoh/php-option.git", | ||
6219 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" | ||
6220 | }, | ||
6221 | "dist": { | ||
6222 | "type": "zip", | ||
6223 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", | ||
6224 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", | ||
6225 | "shasum": "" | ||
6226 | }, | ||
6227 | "require": { | ||
6228 | "php": ">=5.3.0" | ||
6229 | }, | ||
6230 | "require-dev": { | ||
6231 | "phpunit/phpunit": "4.7.*" | ||
6232 | }, | ||
6233 | "type": "library", | ||
6234 | "extra": { | ||
6235 | "branch-alias": { | ||
6236 | "dev-master": "1.3-dev" | ||
6237 | } | ||
6238 | }, | ||
6239 | "autoload": { | ||
6240 | "psr-0": { | ||
6241 | "PhpOption\\": "src/" | ||
6242 | } | ||
6243 | }, | ||
6244 | "notification-url": "https://packagist.org/downloads/", | ||
6245 | "license": [ | ||
6246 | "Apache2" | ||
6247 | ], | ||
6248 | "authors": [ | ||
6249 | { | ||
6250 | "name": "Johannes M. Schmitt", | ||
6251 | "email": "schmittjoh@gmail.com" | ||
6252 | } | ||
6253 | ], | ||
6254 | "description": "Option Type for PHP", | ||
6255 | "keywords": [ | ||
6256 | "language", | ||
6257 | "option", | ||
6258 | "php", | ||
6259 | "type" | ||
6260 | ], | ||
6261 | "time": "2015-07-25T16:39:46+00:00" | ||
6262 | }, | ||
6263 | { | ||
6264 | "name": "phpzip/phpzip", | ||
6265 | "version": "2.0.8", | ||
6266 | "source": { | ||
6267 | "type": "git", | ||
6268 | "url": "https://github.com/Grandt/PHPZip.git", | ||
6269 | "reference": "936f93d656f68e29c231a39e19fd59a636fe7e47" | ||
6270 | }, | ||
6271 | "dist": { | ||
6272 | "type": "zip", | ||
6273 | "url": "https://api.github.com/repos/Grandt/PHPZip/zipball/936f93d656f68e29c231a39e19fd59a636fe7e47", | ||
6274 | "reference": "936f93d656f68e29c231a39e19fd59a636fe7e47", | ||
6275 | "shasum": "" | ||
6276 | }, | ||
6277 | "require": { | ||
6278 | "grandt/binstring": ">=1.0.0", | ||
6279 | "grandt/phpzipmerge": ">=1.0.4", | ||
6280 | "grandt/relativepath": ">=1.0.2", | ||
6281 | "php": ">=5.3.0" | ||
6282 | }, | ||
6283 | "type": "library", | ||
6284 | "autoload": { | ||
6285 | "psr-4": { | ||
6286 | "PHPZip\\Zip\\": "src/Zip" | ||
6287 | } | ||
6288 | }, | ||
6289 | "notification-url": "https://packagist.org/downloads/", | ||
6290 | "license": [ | ||
6291 | "LGPL-2.1" | ||
6292 | ], | ||
6293 | "authors": [ | ||
6294 | { | ||
6295 | "name": "Adam Schmalhofer", | ||
6296 | "email": "Adam.Schmalhofer@gmx.de", | ||
6297 | "role": "Developer" | ||
6298 | }, | ||
6299 | { | ||
6300 | "name": "A. Grandt", | ||
6301 | "email": "php@grandt.com", | ||
6302 | "homepage": "http://grandt.com", | ||
6303 | "role": "Developer" | ||
6304 | }, | ||
6305 | { | ||
6306 | "name": "Greg Kappatos", | ||
6307 | "homepage": "http://websiteconnect.com.au", | ||
6308 | "role": "Developer" | ||
6309 | } | ||
6310 | ], | ||
6311 | "description": "Package to create and stream archives of compressed files in ZIP format with PHP 5.3+", | ||
6312 | "homepage": "https://github.com/Grandt/PHPZip", | ||
6313 | "keywords": [ | ||
6314 | "archive", | ||
6315 | "compressed", | ||
6316 | "compression", | ||
6317 | "phpzip", | ||
6318 | "pkzip", | ||
6319 | "stream", | ||
6320 | "zip" | ||
6321 | ], | ||
6322 | "time": "2015-11-16T16:30:51+00:00" | ||
6323 | }, | ||
6324 | { | ||
6325 | "name": "pragmarx/random", | ||
6326 | "version": "v0.2.2", | ||
6327 | "source": { | ||
6328 | "type": "git", | ||
6329 | "url": "https://github.com/antonioribeiro/random.git", | ||
6330 | "reference": "daf08a189c5d2d40d1a827db46364d3a741a51b7" | ||
6331 | }, | ||
6332 | "dist": { | ||
6333 | "type": "zip", | ||
6334 | "url": "https://api.github.com/repos/antonioribeiro/random/zipball/daf08a189c5d2d40d1a827db46364d3a741a51b7", | ||
6335 | "reference": "daf08a189c5d2d40d1a827db46364d3a741a51b7", | ||
6336 | "shasum": "" | ||
6337 | }, | ||
6338 | "require": { | ||
6339 | "php": ">=7.0" | ||
6340 | }, | ||
6341 | "require-dev": { | ||
6342 | "fzaninotto/faker": "~1.7", | ||
6343 | "phpunit/phpunit": "~6.4", | ||
6344 | "pragmarx/trivia": "~0.1", | ||
6345 | "squizlabs/php_codesniffer": "^2.3" | ||
6346 | }, | ||
6347 | "suggest": { | ||
6348 | "fzaninotto/faker": "Allows you to get dozens of randomized types", | ||
6349 | "pragmarx/trivia": "For the trivia database" | ||
6350 | }, | ||
6351 | "type": "library", | ||
6352 | "extra": { | ||
6353 | "branch-alias": { | ||
6354 | "dev-master": "1.0-dev" | ||
6355 | } | ||
6356 | }, | ||
6357 | "autoload": { | ||
6358 | "psr-4": { | ||
6359 | "PragmaRX\\Random\\": "src" | ||
6360 | } | ||
6361 | }, | ||
6362 | "notification-url": "https://packagist.org/downloads/", | ||
6363 | "license": [ | ||
6364 | "MIT" | ||
6365 | ], | ||
6366 | "authors": [ | ||
6367 | { | ||
6368 | "name": "Antonio Carlos Ribeiro", | ||
6369 | "email": "acr@antoniocarlosribeiro.com", | ||
6370 | "homepage": "https://antoniocarlosribeiro.com", | ||
6371 | "role": "Developer" | ||
6372 | } | ||
6373 | ], | ||
6374 | "description": "Create random chars, numbers, strings", | ||
6375 | "homepage": "https://github.com/antonioribeiro/random", | ||
6376 | "keywords": [ | ||
6377 | "Randomize", | ||
6378 | "faker", | ||
6379 | "pragmarx", | ||
6380 | "random", | ||
6381 | "random number", | ||
6382 | "random pattern", | ||
6383 | "random string" | ||
6384 | ], | ||
6385 | "time": "2017-11-21T05:26:22+00:00" | ||
6386 | }, | ||
6387 | { | ||
6388 | "name": "pragmarx/recovery", | ||
6389 | "version": "v0.1.0", | ||
6390 | "source": { | ||
6391 | "type": "git", | ||
6392 | "url": "https://github.com/antonioribeiro/recovery.git", | ||
6393 | "reference": "e16573a1ae5345cc3b100eec6d0296a1a15a90fe" | ||
6394 | }, | ||
6395 | "dist": { | ||
6396 | "type": "zip", | ||
6397 | "url": "https://api.github.com/repos/antonioribeiro/recovery/zipball/e16573a1ae5345cc3b100eec6d0296a1a15a90fe", | ||
6398 | "reference": "e16573a1ae5345cc3b100eec6d0296a1a15a90fe", | ||
6399 | "shasum": "" | ||
6400 | }, | ||
6401 | "require": { | ||
6402 | "php": "~7.0", | ||
6403 | "pragmarx/random": "~0.1" | ||
6404 | }, | ||
6405 | "require-dev": { | ||
6406 | "phpunit/phpunit": ">=5.4.3", | ||
6407 | "squizlabs/php_codesniffer": "^2.3", | ||
6408 | "tightenco/collect": "^5" | ||
6409 | }, | ||
6410 | "suggest": { | ||
6411 | "tightenco/collect": "Allows to generate recovery codes as collections" | ||
6412 | }, | ||
6413 | "type": "library", | ||
6414 | "extra": { | ||
6415 | "branch-alias": { | ||
6416 | "dev-master": "1.0-dev" | ||
6417 | } | ||
6418 | }, | ||
6419 | "autoload": { | ||
6420 | "psr-4": { | ||
6421 | "PragmaRX\\Recovery\\": "src" | ||
6422 | } | ||
6423 | }, | ||
6424 | "notification-url": "https://packagist.org/downloads/", | ||
6425 | "license": [ | ||
6426 | "MIT" | ||
6427 | ], | ||
6428 | "authors": [ | ||
6429 | { | ||
6430 | "name": "Antonio Carlos Ribeiro", | ||
6431 | "email": "acr@antoniocarlosribeiro.com", | ||
6432 | "homepage": "https://antoniocarlosribeiro.com", | ||
6433 | "role": "Developer" | ||
6434 | } | ||
6435 | ], | ||
6436 | "description": "Create recovery codes for two factor auth", | ||
6437 | "homepage": "https://github.com/antonioribeiro/recovery", | ||
6438 | "keywords": [ | ||
6439 | "2fa", | ||
6440 | "account recovery", | ||
6441 | "auth", | ||
6442 | "backup codes", | ||
6443 | "google2fa", | ||
6444 | "pragmarx", | ||
6445 | "recovery", | ||
6446 | "recovery codes", | ||
6447 | "two factor auth" | ||
6448 | ], | ||
6449 | "time": "2017-09-19T16:58:00+00:00" | ||
6450 | }, | ||
6451 | { | ||
6452 | "name": "predis/predis", | ||
6453 | "version": "v1.1.x-dev", | ||
6454 | "source": { | ||
6455 | "type": "git", | ||
6456 | "url": "https://github.com/nrk/predis.git", | ||
6457 | "reference": "111d100ee389d624036b46b35ed0c9ac59c71313" | ||
6458 | }, | ||
6459 | "dist": { | ||
6460 | "type": "zip", | ||
6461 | "url": "https://api.github.com/repos/nrk/predis/zipball/111d100ee389d624036b46b35ed0c9ac59c71313", | ||
6462 | "reference": "111d100ee389d624036b46b35ed0c9ac59c71313", | ||
6463 | "shasum": "" | ||
6464 | }, | ||
6465 | "require": { | ||
6466 | "php": ">=5.3.9" | ||
6467 | }, | ||
6468 | "require-dev": { | ||
6469 | "phpunit/phpunit": "~4.8" | ||
6470 | }, | ||
6471 | "suggest": { | ||
6472 | "ext-curl": "Allows access to Webdis when paired with phpiredis", | ||
6473 | "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" | ||
6474 | }, | ||
6475 | "type": "library", | ||
6476 | "autoload": { | ||
6477 | "psr-4": { | ||
6478 | "Predis\\": "src/" | ||
6479 | } | ||
6480 | }, | ||
6481 | "notification-url": "https://packagist.org/downloads/", | ||
6482 | "license": [ | ||
6483 | "MIT" | ||
6484 | ], | ||
6485 | "authors": [ | ||
6486 | { | ||
6487 | "name": "Daniele Alessandri", | ||
6488 | "email": "suppakilla@gmail.com", | ||
6489 | "homepage": "http://clorophilla.net" | ||
6490 | } | ||
6491 | ], | ||
6492 | "description": "Flexible and feature-complete Redis client for PHP and HHVM", | ||
6493 | "homepage": "http://github.com/nrk/predis", | ||
6494 | "keywords": [ | ||
6495 | "nosql", | ||
6496 | "predis", | ||
6497 | "redis" | ||
6498 | ], | ||
6499 | "time": "2017-07-12T14:39:17+00:00" | ||
6500 | }, | ||
6501 | { | ||
6502 | "name": "psr/cache", | ||
6503 | "version": "1.0.1", | ||
6504 | "source": { | ||
6505 | "type": "git", | ||
6506 | "url": "https://github.com/php-fig/cache.git", | ||
6507 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" | ||
6508 | }, | ||
6509 | "dist": { | ||
6510 | "type": "zip", | ||
6511 | "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", | ||
6512 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", | ||
6513 | "shasum": "" | ||
6514 | }, | ||
6515 | "require": { | ||
6516 | "php": ">=5.3.0" | ||
6517 | }, | ||
6518 | "type": "library", | ||
6519 | "extra": { | ||
6520 | "branch-alias": { | ||
6521 | "dev-master": "1.0.x-dev" | ||
6522 | } | ||
6523 | }, | ||
6524 | "autoload": { | ||
6525 | "psr-4": { | ||
6526 | "Psr\\Cache\\": "src/" | ||
6527 | } | ||
6528 | }, | ||
6529 | "notification-url": "https://packagist.org/downloads/", | ||
6530 | "license": [ | ||
6531 | "MIT" | ||
6532 | ], | ||
6533 | "authors": [ | ||
6534 | { | ||
6535 | "name": "PHP-FIG", | ||
6536 | "homepage": "http://www.php-fig.org/" | ||
6537 | } | ||
6538 | ], | ||
6539 | "description": "Common interface for caching libraries", | ||
6540 | "keywords": [ | ||
6541 | "cache", | ||
6542 | "psr", | ||
6543 | "psr-6" | ||
6544 | ], | ||
6545 | "time": "2016-08-06T20:24:11+00:00" | ||
6546 | }, | ||
6547 | { | ||
6548 | "name": "psr/container", | ||
6549 | "version": "1.0.0", | ||
6550 | "source": { | ||
6551 | "type": "git", | ||
6552 | "url": "https://github.com/php-fig/container.git", | ||
6553 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" | ||
6554 | }, | ||
6555 | "dist": { | ||
6556 | "type": "zip", | ||
6557 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", | ||
6558 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", | ||
6559 | "shasum": "" | ||
6560 | }, | ||
6561 | "require": { | ||
6562 | "php": ">=5.3.0" | ||
6563 | }, | ||
6564 | "type": "library", | ||
6565 | "extra": { | ||
6566 | "branch-alias": { | ||
6567 | "dev-master": "1.0.x-dev" | ||
6568 | } | ||
6569 | }, | ||
6570 | "autoload": { | ||
6571 | "psr-4": { | ||
6572 | "Psr\\Container\\": "src/" | ||
6573 | } | ||
6574 | }, | ||
6575 | "notification-url": "https://packagist.org/downloads/", | ||
6576 | "license": [ | ||
6577 | "MIT" | ||
6578 | ], | ||
6579 | "authors": [ | ||
6580 | { | ||
6581 | "name": "PHP-FIG", | ||
6582 | "homepage": "http://www.php-fig.org/" | ||
6583 | } | ||
6584 | ], | ||
6585 | "description": "Common Container Interface (PHP FIG PSR-11)", | ||
6586 | "homepage": "https://github.com/php-fig/container", | ||
6587 | "keywords": [ | ||
6588 | "PSR-11", | ||
6589 | "container", | ||
6590 | "container-interface", | ||
6591 | "container-interop", | ||
6592 | "psr" | ||
6593 | ], | ||
6594 | "time": "2017-02-14T16:28:37+00:00" | ||
6595 | }, | ||
6596 | { | ||
6597 | "name": "psr/http-client", | ||
6598 | "version": "1.0.0", | ||
6599 | "source": { | ||
6600 | "type": "git", | ||
6601 | "url": "https://github.com/php-fig/http-client.git", | ||
6602 | "reference": "496a823ef742b632934724bf769560c2a5c7c44e" | ||
6603 | }, | ||
6604 | "dist": { | ||
6605 | "type": "zip", | ||
6606 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/496a823ef742b632934724bf769560c2a5c7c44e", | ||
6607 | "reference": "496a823ef742b632934724bf769560c2a5c7c44e", | ||
6608 | "shasum": "" | ||
6609 | }, | ||
6610 | "require": { | ||
6611 | "php": "^7.0", | ||
6612 | "psr/http-message": "^1.0" | ||
6613 | }, | ||
6614 | "type": "library", | ||
6615 | "extra": { | ||
6616 | "branch-alias": { | ||
6617 | "dev-master": "1.0.x-dev" | ||
6618 | } | ||
6619 | }, | ||
6620 | "autoload": { | ||
6621 | "psr-4": { | ||
6622 | "Psr\\Http\\Client\\": "src/" | ||
6623 | } | ||
6624 | }, | ||
6625 | "notification-url": "https://packagist.org/downloads/", | ||
6626 | "license": [ | ||
6627 | "MIT" | ||
6628 | ], | ||
6629 | "authors": [ | ||
6630 | { | ||
6631 | "name": "PHP-FIG", | ||
6632 | "homepage": "http://www.php-fig.org/" | ||
6633 | } | ||
6634 | ], | ||
6635 | "description": "Common interface for HTTP clients", | ||
6636 | "homepage": "https://github.com/php-fig/http-client", | ||
6637 | "keywords": [ | ||
6638 | "http", | ||
6639 | "http-client", | ||
6640 | "psr", | ||
6641 | "psr-18" | ||
6642 | ], | ||
6643 | "time": "2018-10-30T23:29:13+00:00" | ||
6644 | }, | ||
6645 | { | ||
6646 | "name": "psr/http-factory", | ||
6647 | "version": "1.0.1", | ||
6648 | "source": { | ||
6649 | "type": "git", | ||
6650 | "url": "https://github.com/php-fig/http-factory.git", | ||
6651 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" | ||
6652 | }, | ||
6653 | "dist": { | ||
6654 | "type": "zip", | ||
6655 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", | ||
6656 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", | ||
6657 | "shasum": "" | ||
6658 | }, | ||
6659 | "require": { | ||
6660 | "php": ">=7.0.0", | ||
6661 | "psr/http-message": "^1.0" | ||
6662 | }, | ||
6663 | "type": "library", | ||
6664 | "extra": { | ||
6665 | "branch-alias": { | ||
6666 | "dev-master": "1.0.x-dev" | ||
6667 | } | ||
6668 | }, | ||
6669 | "autoload": { | ||
6670 | "psr-4": { | ||
6671 | "Psr\\Http\\Message\\": "src/" | ||
6672 | } | ||
6673 | }, | ||
6674 | "notification-url": "https://packagist.org/downloads/", | ||
6675 | "license": [ | ||
6676 | "MIT" | ||
6677 | ], | ||
6678 | "authors": [ | ||
6679 | { | ||
6680 | "name": "PHP-FIG", | ||
6681 | "homepage": "http://www.php-fig.org/" | ||
6682 | } | ||
6683 | ], | ||
6684 | "description": "Common interfaces for PSR-7 HTTP message factories", | ||
6685 | "keywords": [ | ||
6686 | "factory", | ||
6687 | "http", | ||
6688 | "message", | ||
6689 | "psr", | ||
6690 | "psr-17", | ||
6691 | "psr-7", | ||
6692 | "request", | ||
6693 | "response" | ||
6694 | ], | ||
6695 | "time": "2019-04-30T12:38:16+00:00" | ||
6696 | }, | ||
6697 | { | ||
6698 | "name": "psr/http-message", | ||
6699 | "version": "1.0.1", | ||
6700 | "source": { | ||
6701 | "type": "git", | ||
6702 | "url": "https://github.com/php-fig/http-message.git", | ||
6703 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" | ||
6704 | }, | ||
6705 | "dist": { | ||
6706 | "type": "zip", | ||
6707 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
6708 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
6709 | "shasum": "" | ||
6710 | }, | ||
6711 | "require": { | ||
6712 | "php": ">=5.3.0" | ||
6713 | }, | ||
6714 | "type": "library", | ||
6715 | "extra": { | ||
6716 | "branch-alias": { | ||
6717 | "dev-master": "1.0.x-dev" | ||
6718 | } | ||
6719 | }, | ||
6720 | "autoload": { | ||
6721 | "psr-4": { | ||
6722 | "Psr\\Http\\Message\\": "src/" | ||
6723 | } | ||
6724 | }, | ||
6725 | "notification-url": "https://packagist.org/downloads/", | ||
6726 | "license": [ | ||
6727 | "MIT" | ||
6728 | ], | ||
6729 | "authors": [ | ||
6730 | { | ||
6731 | "name": "PHP-FIG", | ||
6732 | "homepage": "http://www.php-fig.org/" | ||
6733 | } | ||
6734 | ], | ||
6735 | "description": "Common interface for HTTP messages", | ||
6736 | "homepage": "https://github.com/php-fig/http-message", | ||
6737 | "keywords": [ | ||
6738 | "http", | ||
6739 | "http-message", | ||
6740 | "psr", | ||
6741 | "psr-7", | ||
6742 | "request", | ||
6743 | "response" | ||
6744 | ], | ||
6745 | "time": "2016-08-06T14:39:51+00:00" | ||
6746 | }, | ||
6747 | { | ||
6748 | "name": "psr/link", | ||
6749 | "version": "1.0.0", | ||
6750 | "source": { | ||
6751 | "type": "git", | ||
6752 | "url": "https://github.com/php-fig/link.git", | ||
6753 | "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" | ||
6754 | }, | ||
6755 | "dist": { | ||
6756 | "type": "zip", | ||
6757 | "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", | ||
6758 | "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", | ||
6759 | "shasum": "" | ||
6760 | }, | ||
6761 | "require": { | ||
6762 | "php": ">=5.3.0" | ||
6763 | }, | ||
6764 | "type": "library", | ||
6765 | "extra": { | ||
6766 | "branch-alias": { | ||
6767 | "dev-master": "1.0.x-dev" | ||
6768 | } | ||
6769 | }, | ||
6770 | "autoload": { | ||
6771 | "psr-4": { | ||
6772 | "Psr\\Link\\": "src/" | ||
6773 | } | ||
6774 | }, | ||
6775 | "notification-url": "https://packagist.org/downloads/", | ||
6776 | "license": [ | ||
6777 | "MIT" | ||
6778 | ], | ||
6779 | "authors": [ | ||
6780 | { | ||
6781 | "name": "PHP-FIG", | ||
6782 | "homepage": "http://www.php-fig.org/" | ||
6783 | } | ||
6784 | ], | ||
6785 | "description": "Common interfaces for HTTP links", | ||
6786 | "keywords": [ | ||
6787 | "http", | ||
6788 | "http-link", | ||
6789 | "link", | ||
6790 | "psr", | ||
6791 | "psr-13", | ||
6792 | "rest" | ||
6793 | ], | ||
6794 | "time": "2016-10-28T16:06:13+00:00" | ||
6795 | }, | ||
6796 | { | ||
6797 | "name": "psr/log", | ||
6798 | "version": "1.1.0", | ||
6799 | "source": { | ||
6800 | "type": "git", | ||
6801 | "url": "https://github.com/php-fig/log.git", | ||
6802 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" | ||
6803 | }, | ||
6804 | "dist": { | ||
6805 | "type": "zip", | ||
6806 | "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", | ||
6807 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", | ||
6808 | "shasum": "" | ||
6809 | }, | ||
6810 | "require": { | ||
6811 | "php": ">=5.3.0" | ||
6812 | }, | ||
6813 | "type": "library", | ||
6814 | "extra": { | ||
6815 | "branch-alias": { | ||
6816 | "dev-master": "1.0.x-dev" | ||
6817 | } | ||
6818 | }, | ||
6819 | "autoload": { | ||
6820 | "psr-4": { | ||
6821 | "Psr\\Log\\": "Psr/Log/" | ||
6822 | } | ||
6823 | }, | ||
6824 | "notification-url": "https://packagist.org/downloads/", | ||
6825 | "license": [ | ||
6826 | "MIT" | ||
6827 | ], | ||
6828 | "authors": [ | ||
6829 | { | ||
6830 | "name": "PHP-FIG", | ||
6831 | "homepage": "http://www.php-fig.org/" | ||
6832 | } | ||
6833 | ], | ||
6834 | "description": "Common interface for logging libraries", | ||
6835 | "homepage": "https://github.com/php-fig/log", | ||
6836 | "keywords": [ | ||
6837 | "log", | ||
6838 | "psr", | ||
6839 | "psr-3" | ||
6840 | ], | ||
6841 | "time": "2018-11-20T15:27:04+00:00" | ||
6842 | }, | ||
6843 | { | ||
6844 | "name": "psr/simple-cache", | ||
6845 | "version": "1.0.1", | ||
6846 | "source": { | ||
6847 | "type": "git", | ||
6848 | "url": "https://github.com/php-fig/simple-cache.git", | ||
6849 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" | ||
6850 | }, | ||
6851 | "dist": { | ||
6852 | "type": "zip", | ||
6853 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", | ||
6854 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", | ||
6855 | "shasum": "" | ||
6856 | }, | ||
6857 | "require": { | ||
6858 | "php": ">=5.3.0" | ||
6859 | }, | ||
6860 | "type": "library", | ||
6861 | "extra": { | ||
6862 | "branch-alias": { | ||
6863 | "dev-master": "1.0.x-dev" | ||
6864 | } | ||
6865 | }, | ||
6866 | "autoload": { | ||
6867 | "psr-4": { | ||
6868 | "Psr\\SimpleCache\\": "src/" | ||
6869 | } | ||
6870 | }, | ||
6871 | "notification-url": "https://packagist.org/downloads/", | ||
6872 | "license": [ | ||
6873 | "MIT" | ||
6874 | ], | ||
6875 | "authors": [ | ||
6876 | { | ||
6877 | "name": "PHP-FIG", | ||
6878 | "homepage": "http://www.php-fig.org/" | ||
6879 | } | ||
6880 | ], | ||
6881 | "description": "Common interfaces for simple caching", | ||
6882 | "keywords": [ | ||
6883 | "cache", | ||
6884 | "caching", | ||
6885 | "psr", | ||
6886 | "psr-16", | ||
6887 | "simple-cache" | ||
6888 | ], | ||
6889 | "time": "2017-10-23T01:57:42+00:00" | ||
6890 | }, | ||
6891 | { | ||
6892 | "name": "ralouphie/getallheaders", | ||
6893 | "version": "2.0.5", | ||
6894 | "source": { | ||
6895 | "type": "git", | ||
6896 | "url": "https://github.com/ralouphie/getallheaders.git", | ||
6897 | "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" | ||
6898 | }, | ||
6899 | "dist": { | ||
6900 | "type": "zip", | ||
6901 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", | ||
6902 | "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", | ||
6903 | "shasum": "" | ||
6904 | }, | ||
6905 | "require": { | ||
6906 | "php": ">=5.3" | ||
6907 | }, | ||
6908 | "require-dev": { | ||
6909 | "phpunit/phpunit": "~3.7.0", | ||
6910 | "satooshi/php-coveralls": ">=1.0" | ||
6911 | }, | ||
6912 | "type": "library", | ||
6913 | "autoload": { | ||
6914 | "files": [ | ||
6915 | "src/getallheaders.php" | ||
6916 | ] | ||
6917 | }, | ||
6918 | "notification-url": "https://packagist.org/downloads/", | ||
6919 | "license": [ | ||
6920 | "MIT" | ||
6921 | ], | ||
6922 | "authors": [ | ||
6923 | { | ||
6924 | "name": "Ralph Khattar", | ||
6925 | "email": "ralph.khattar@gmail.com" | ||
6926 | } | ||
6927 | ], | ||
6928 | "description": "A polyfill for getallheaders.", | ||
6929 | "time": "2016-02-11T07:05:27+00:00" | ||
6930 | }, | ||
6931 | { | ||
6932 | "name": "ramsey/uuid", | ||
6933 | "version": "3.8.0", | ||
6934 | "source": { | ||
6935 | "type": "git", | ||
6936 | "url": "https://github.com/ramsey/uuid.git", | ||
6937 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" | ||
6938 | }, | ||
6939 | "dist": { | ||
6940 | "type": "zip", | ||
6941 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", | ||
6942 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", | ||
6943 | "shasum": "" | ||
6944 | }, | ||
6945 | "require": { | ||
6946 | "paragonie/random_compat": "^1.0|^2.0|9.99.99", | ||
6947 | "php": "^5.4 || ^7.0", | ||
6948 | "symfony/polyfill-ctype": "^1.8" | ||
6949 | }, | ||
6950 | "replace": { | ||
6951 | "rhumsaa/uuid": "self.version" | ||
6952 | }, | ||
6953 | "require-dev": { | ||
6954 | "codeception/aspect-mock": "^1.0 | ~2.0.0", | ||
6955 | "doctrine/annotations": "~1.2.0", | ||
6956 | "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", | ||
6957 | "ircmaxell/random-lib": "^1.1", | ||
6958 | "jakub-onderka/php-parallel-lint": "^0.9.0", | ||
6959 | "mockery/mockery": "^0.9.9", | ||
6960 | "moontoast/math": "^1.1", | ||
6961 | "php-mock/php-mock-phpunit": "^0.3|^1.1", | ||
6962 | "phpunit/phpunit": "^4.7|^5.0|^6.5", | ||
6963 | "squizlabs/php_codesniffer": "^2.3" | ||
6964 | }, | ||
6965 | "suggest": { | ||
6966 | "ext-ctype": "Provides support for PHP Ctype functions", | ||
6967 | "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", | ||
6968 | "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", | ||
6969 | "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", | ||
6970 | "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", | ||
6971 | "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", | ||
6972 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." | ||
6973 | }, | ||
6974 | "type": "library", | ||
6975 | "extra": { | ||
6976 | "branch-alias": { | ||
6977 | "dev-master": "3.x-dev" | ||
6978 | } | ||
6979 | }, | ||
6980 | "autoload": { | ||
6981 | "psr-4": { | ||
6982 | "Ramsey\\Uuid\\": "src/" | ||
6983 | } | ||
6984 | }, | ||
6985 | "notification-url": "https://packagist.org/downloads/", | ||
6986 | "license": [ | ||
6987 | "MIT" | ||
6988 | ], | ||
6989 | "authors": [ | ||
6990 | { | ||
6991 | "name": "Marijn Huizendveld", | ||
6992 | "email": "marijn.huizendveld@gmail.com" | ||
6993 | }, | ||
6994 | { | ||
6995 | "name": "Thibaud Fabre", | ||
6996 | "email": "thibaud@aztech.io" | ||
6997 | }, | ||
6998 | { | ||
6999 | "name": "Ben Ramsey", | ||
7000 | "email": "ben@benramsey.com", | ||
7001 | "homepage": "https://benramsey.com" | ||
7002 | } | ||
7003 | ], | ||
7004 | "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", | ||
7005 | "homepage": "https://github.com/ramsey/uuid", | ||
7006 | "keywords": [ | ||
7007 | "guid", | ||
7008 | "identifier", | ||
7009 | "uuid" | ||
7010 | ], | ||
7011 | "time": "2018-07-19T23:38:55+00:00" | ||
7012 | }, | ||
7013 | { | ||
7014 | "name": "react/promise", | ||
7015 | "version": "v2.7.1", | ||
7016 | "source": { | ||
7017 | "type": "git", | ||
7018 | "url": "https://github.com/reactphp/promise.git", | ||
7019 | "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d" | ||
7020 | }, | ||
7021 | "dist": { | ||
7022 | "type": "zip", | ||
7023 | "url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d", | ||
7024 | "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d", | ||
7025 | "shasum": "" | ||
7026 | }, | ||
7027 | "require": { | ||
7028 | "php": ">=5.4.0" | ||
7029 | }, | ||
7030 | "require-dev": { | ||
7031 | "phpunit/phpunit": "~4.8" | ||
7032 | }, | ||
7033 | "type": "library", | ||
7034 | "autoload": { | ||
7035 | "psr-4": { | ||
7036 | "React\\Promise\\": "src/" | ||
7037 | }, | ||
7038 | "files": [ | ||
7039 | "src/functions_include.php" | ||
7040 | ] | ||
7041 | }, | ||
7042 | "notification-url": "https://packagist.org/downloads/", | ||
7043 | "license": [ | ||
7044 | "MIT" | ||
7045 | ], | ||
7046 | "authors": [ | ||
7047 | { | ||
7048 | "name": "Jan Sorgalla", | ||
7049 | "email": "jsorgalla@gmail.com" | ||
7050 | } | ||
7051 | ], | ||
7052 | "description": "A lightweight implementation of CommonJS Promises/A for PHP", | ||
7053 | "keywords": [ | ||
7054 | "promise", | ||
7055 | "promises" | ||
7056 | ], | ||
7057 | "time": "2019-01-07T21:25:54+00:00" | ||
7058 | }, | ||
7059 | { | ||
7060 | "name": "scheb/two-factor-bundle", | ||
7061 | "version": "v3.19.0", | ||
7062 | "source": { | ||
7063 | "type": "git", | ||
7064 | "url": "https://github.com/scheb/two-factor-bundle.git", | ||
7065 | "reference": "4bc6023401a4c7e50dbd9c66f55cc8df9f77e69c" | ||
7066 | }, | ||
7067 | "dist": { | ||
7068 | "type": "zip", | ||
7069 | "url": "https://api.github.com/repos/scheb/two-factor-bundle/zipball/4bc6023401a4c7e50dbd9c66f55cc8df9f77e69c", | ||
7070 | "reference": "4bc6023401a4c7e50dbd9c66f55cc8df9f77e69c", | ||
7071 | "shasum": "" | ||
7072 | }, | ||
7073 | "require": { | ||
7074 | "lcobucci/jwt": "^3.2", | ||
7075 | "php": "^7.1.3", | ||
7076 | "sonata-project/google-authenticator": "^2.2", | ||
7077 | "symfony/config": "^3.4|^4.0", | ||
7078 | "symfony/dependency-injection": "^3.4|^4.0", | ||
7079 | "symfony/event-dispatcher": "^3.4|^4.0", | ||
7080 | "symfony/framework-bundle": "^3.4|^4.0", | ||
7081 | "symfony/http-foundation": "^3.4|^4.0", | ||
7082 | "symfony/http-kernel": "^3.4|^4.0", | ||
7083 | "symfony/property-access": "^3.4|^4.0", | ||
7084 | "symfony/security-bundle": "^3.4|^4.0", | ||
7085 | "symfony/twig-bundle": "^3.4|^4.0" | ||
7086 | }, | ||
7087 | "require-dev": { | ||
7088 | "doctrine/lexer": "^1.0.1", | ||
7089 | "doctrine/orm": "^2.6", | ||
7090 | "phpunit/phpunit": "^7.0|^8.0", | ||
7091 | "swiftmailer/swiftmailer": "^6.0", | ||
7092 | "symfony/yaml": "^3.4|^4.0" | ||
7093 | }, | ||
7094 | "type": "symfony-bundle", | ||
7095 | "autoload": { | ||
7096 | "psr-4": { | ||
7097 | "Scheb\\TwoFactorBundle\\": "" | ||
7098 | } | ||
7099 | }, | ||
7100 | "notification-url": "https://packagist.org/downloads/", | ||
7101 | "license": [ | ||
7102 | "MIT" | ||
7103 | ], | ||
7104 | "authors": [ | ||
7105 | { | ||
7106 | "name": "Christian Scheb", | ||
7107 | "email": "me@christianscheb.de" | ||
7108 | } | ||
7109 | ], | ||
7110 | "description": "Provides two-factor authentication for Symfony applications", | ||
7111 | "homepage": "https://github.com/scheb/two-factor-bundle", | ||
7112 | "keywords": [ | ||
7113 | "Authentication", | ||
7114 | "security", | ||
7115 | "symfony", | ||
7116 | "two-factor", | ||
7117 | "two-step" | ||
7118 | ], | ||
7119 | "time": "2019-05-03T12:46:19+00:00" | ||
7120 | }, | ||
7121 | { | ||
7122 | "name": "sensio/distribution-bundle", | ||
7123 | "version": "v5.0.24", | ||
7124 | "source": { | ||
7125 | "type": "git", | ||
7126 | "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", | ||
7127 | "reference": "59eac70f15f97ee945924948a6f5e2f6f86b7a4b" | ||
7128 | }, | ||
7129 | "dist": { | ||
7130 | "type": "zip", | ||
7131 | "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/59eac70f15f97ee945924948a6f5e2f6f86b7a4b", | ||
7132 | "reference": "59eac70f15f97ee945924948a6f5e2f6f86b7a4b", | ||
7133 | "shasum": "" | ||
7134 | }, | ||
7135 | "require": { | ||
7136 | "php": ">=5.3.9", | ||
7137 | "sensiolabs/security-checker": "~5.0", | ||
7138 | "symfony/class-loader": "~2.3|~3.0", | ||
7139 | "symfony/config": "~2.3|~3.0", | ||
7140 | "symfony/dependency-injection": "~2.3|~3.0", | ||
7141 | "symfony/filesystem": "~2.3|~3.0", | ||
7142 | "symfony/http-kernel": "~2.3|~3.0", | ||
7143 | "symfony/process": "~2.3|~3.0" | ||
7144 | }, | ||
7145 | "type": "symfony-bundle", | ||
7146 | "extra": { | ||
7147 | "branch-alias": { | ||
7148 | "dev-master": "5.0.x-dev" | ||
7149 | } | ||
7150 | }, | ||
7151 | "autoload": { | ||
7152 | "psr-4": { | ||
7153 | "Sensio\\Bundle\\DistributionBundle\\": "" | ||
7154 | } | ||
7155 | }, | ||
7156 | "notification-url": "https://packagist.org/downloads/", | ||
7157 | "license": [ | ||
7158 | "MIT" | ||
7159 | ], | ||
7160 | "authors": [ | ||
7161 | { | ||
7162 | "name": "Fabien Potencier", | ||
7163 | "email": "fabien@symfony.com" | ||
7164 | } | ||
7165 | ], | ||
7166 | "description": "Base bundle for Symfony Distributions", | ||
7167 | "keywords": [ | ||
7168 | "configuration", | ||
7169 | "distribution" | ||
7170 | ], | ||
7171 | "time": "2018-12-14T17:36:15+00:00" | ||
7172 | }, | ||
7173 | { | ||
7174 | "name": "sensio/framework-extra-bundle", | ||
7175 | "version": "v5.3.1", | ||
7176 | "source": { | ||
7177 | "type": "git", | ||
7178 | "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", | ||
7179 | "reference": "5f75c4658b03301cba17baa15a840b57b72b4262" | ||
7180 | }, | ||
7181 | "dist": { | ||
7182 | "type": "zip", | ||
7183 | "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/5f75c4658b03301cba17baa15a840b57b72b4262", | ||
7184 | "reference": "5f75c4658b03301cba17baa15a840b57b72b4262", | ||
7185 | "shasum": "" | ||
7186 | }, | ||
7187 | "require": { | ||
7188 | "doctrine/annotations": "^1.0", | ||
7189 | "doctrine/persistence": "^1.0", | ||
7190 | "php": ">=7.1.3", | ||
7191 | "symfony/config": "^3.4|^4.2", | ||
7192 | "symfony/dependency-injection": "^3.4|^4.2", | ||
7193 | "symfony/framework-bundle": "^3.4|^4.2", | ||
7194 | "symfony/http-kernel": "^3.4|^4.2" | ||
7195 | }, | ||
7196 | "require-dev": { | ||
7197 | "doctrine/doctrine-bundle": "^1.6", | ||
7198 | "doctrine/orm": "^2.5", | ||
7199 | "nyholm/psr7": "^1.1", | ||
7200 | "symfony/browser-kit": "^3.4|^4.2", | ||
7201 | "symfony/dom-crawler": "^3.4|^4.2", | ||
7202 | "symfony/expression-language": "^3.4|^4.2", | ||
7203 | "symfony/finder": "^3.4|^4.2", | ||
7204 | "symfony/monolog-bridge": "^3.0|^4.0", | ||
7205 | "symfony/monolog-bundle": "^3.2", | ||
7206 | "symfony/phpunit-bridge": "^3.4.19|^4.1.8", | ||
7207 | "symfony/psr-http-message-bridge": "^1.1", | ||
7208 | "symfony/security-bundle": "^3.4|^4.2", | ||
7209 | "symfony/twig-bundle": "^3.4|^4.2", | ||
7210 | "symfony/yaml": "^3.4|^4.2", | ||
7211 | "twig/twig": "~1.12|~2.0" | ||
7212 | }, | ||
7213 | "suggest": { | ||
7214 | "symfony/expression-language": "", | ||
7215 | "symfony/psr-http-message-bridge": "To use the PSR-7 converters", | ||
7216 | "symfony/security-bundle": "" | ||
7217 | }, | ||
7218 | "type": "symfony-bundle", | ||
7219 | "extra": { | ||
7220 | "branch-alias": { | ||
7221 | "dev-master": "5.3.x-dev" | ||
7222 | } | ||
7223 | }, | ||
7224 | "autoload": { | ||
7225 | "psr-4": { | ||
7226 | "Sensio\\Bundle\\FrameworkExtraBundle\\": "" | ||
7227 | } | ||
7228 | }, | ||
7229 | "notification-url": "https://packagist.org/downloads/", | ||
7230 | "license": [ | ||
7231 | "MIT" | ||
7232 | ], | ||
7233 | "authors": [ | ||
7234 | { | ||
7235 | "name": "Fabien Potencier", | ||
7236 | "email": "fabien@symfony.com" | ||
7237 | } | ||
7238 | ], | ||
7239 | "description": "This bundle provides a way to configure your controllers with annotations", | ||
7240 | "keywords": [ | ||
7241 | "annotations", | ||
7242 | "controllers" | ||
7243 | ], | ||
7244 | "time": "2019-04-10T06:00:20+00:00" | ||
7245 | }, | ||
7246 | { | ||
7247 | "name": "sensiolabs/security-checker", | ||
7248 | "version": "v5.0.3", | ||
7249 | "source": { | ||
7250 | "type": "git", | ||
7251 | "url": "https://github.com/sensiolabs/security-checker.git", | ||
7252 | "reference": "46be3f58adac13084497961e10eed9a7fb4d44d1" | ||
7253 | }, | ||
7254 | "dist": { | ||
7255 | "type": "zip", | ||
7256 | "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/46be3f58adac13084497961e10eed9a7fb4d44d1", | ||
7257 | "reference": "46be3f58adac13084497961e10eed9a7fb4d44d1", | ||
7258 | "shasum": "" | ||
7259 | }, | ||
7260 | "require": { | ||
7261 | "composer/ca-bundle": "^1.0", | ||
7262 | "php": ">=5.5.9", | ||
7263 | "symfony/console": "~2.7|~3.0|~4.0" | ||
7264 | }, | ||
7265 | "bin": [ | ||
7266 | "security-checker" | ||
7267 | ], | ||
7268 | "type": "library", | ||
7269 | "extra": { | ||
7270 | "branch-alias": { | ||
7271 | "dev-master": "5.0-dev" | ||
7272 | } | ||
7273 | }, | ||
7274 | "autoload": { | ||
7275 | "psr-4": { | ||
7276 | "SensioLabs\\Security\\": "SensioLabs/Security" | ||
7277 | } | ||
7278 | }, | ||
7279 | "notification-url": "https://packagist.org/downloads/", | ||
7280 | "license": [ | ||
7281 | "MIT" | ||
7282 | ], | ||
7283 | "authors": [ | ||
7284 | { | ||
7285 | "name": "Fabien Potencier", | ||
7286 | "email": "fabien.potencier@gmail.com" | ||
7287 | } | ||
7288 | ], | ||
7289 | "description": "A security checker for your composer.lock", | ||
7290 | "time": "2018-12-19T17:14:59+00:00" | ||
7291 | }, | ||
7292 | { | ||
7293 | "name": "sentry/sdk", | ||
7294 | "version": "2.0.3", | ||
7295 | "source": { | ||
7296 | "type": "git", | ||
7297 | "url": "https://github.com/getsentry/sentry-php-sdk.git", | ||
7298 | "reference": "91c36aec83e4c1c5801b64ef4927b78a5aa8ce7f" | ||
7299 | }, | ||
7300 | "dist": { | ||
7301 | "type": "zip", | ||
7302 | "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/91c36aec83e4c1c5801b64ef4927b78a5aa8ce7f", | ||
7303 | "reference": "91c36aec83e4c1c5801b64ef4927b78a5aa8ce7f", | ||
7304 | "shasum": "" | ||
7305 | }, | ||
7306 | "require": { | ||
7307 | "http-interop/http-factory-guzzle": "^1.0", | ||
7308 | "php-http/curl-client": "^1.0|^2.0", | ||
7309 | "sentry/sentry": "^2.0.1" | ||
7310 | }, | ||
7311 | "type": "metapackage", | ||
7312 | "notification-url": "https://packagist.org/downloads/", | ||
7313 | "license": [ | ||
7314 | "MIT" | ||
7315 | ], | ||
7316 | "authors": [ | ||
7317 | { | ||
7318 | "name": "Sentry", | ||
7319 | "email": "accounts@sentry.io" | ||
7320 | } | ||
7321 | ], | ||
7322 | "description": "This is a metapackage shipping sentry/sentry with a recommended http client.", | ||
7323 | "time": "2019-04-08T07:21:45+00:00" | ||
7324 | }, | ||
7325 | { | ||
7326 | "name": "sentry/sentry", | ||
7327 | "version": "2.1.0", | ||
7328 | "source": { | ||
7329 | "type": "git", | ||
7330 | "url": "https://github.com/getsentry/sentry-php.git", | ||
7331 | "reference": "1f1704806820c16dcefcbf2e80b920024fda2234" | ||
7332 | }, | ||
7333 | "dist": { | ||
7334 | "type": "zip", | ||
7335 | "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/1f1704806820c16dcefcbf2e80b920024fda2234", | ||
7336 | "reference": "1f1704806820c16dcefcbf2e80b920024fda2234", | ||
7337 | "shasum": "" | ||
7338 | }, | ||
7339 | "require": { | ||
7340 | "ext-json": "*", | ||
7341 | "ext-mbstring": "*", | ||
7342 | "jean85/pretty-package-versions": "^1.2", | ||
7343 | "php": "^7.1", | ||
7344 | "php-http/async-client-implementation": "^1.0", | ||
7345 | "php-http/client-common": "^1.5|^2.0", | ||
7346 | "php-http/discovery": "^1.6.1", | ||
7347 | "php-http/httplug": "^1.1|^2.0", | ||
7348 | "php-http/message": "^1.5", | ||
7349 | "psr/http-message-implementation": "^1.0", | ||
7350 | "ramsey/uuid": "^3.3", | ||
7351 | "symfony/options-resolver": "^2.7|^3.0|^4.0", | ||
7352 | "zendframework/zend-diactoros": "^1.4|^2.0" | ||
7353 | }, | ||
7354 | "conflict": { | ||
7355 | "php-http/client-common": "1.8.0", | ||
7356 | "raven/raven": "*" | ||
7357 | }, | ||
7358 | "require-dev": { | ||
7359 | "friendsofphp/php-cs-fixer": "^2.13", | ||
7360 | "monolog/monolog": "^1.3|^2.0", | ||
7361 | "php-http/mock-client": "^1.0", | ||
7362 | "phpstan/phpstan": "^0.10.3", | ||
7363 | "phpstan/phpstan-phpunit": "^0.10", | ||
7364 | "phpunit/phpunit": "^7.0", | ||
7365 | "symfony/phpunit-bridge": "^4.1.6" | ||
7366 | }, | ||
7367 | "type": "library", | ||
7368 | "extra": { | ||
7369 | "branch-alias": { | ||
7370 | "dev-master": "2.0.x-dev" | ||
7371 | } | ||
7372 | }, | ||
7373 | "autoload": { | ||
7374 | "files": [ | ||
7375 | "src/Sdk.php" | ||
7376 | ], | ||
7377 | "psr-4": { | ||
7378 | "Sentry\\": "src/" | ||
7379 | } | ||
7380 | }, | ||
7381 | "notification-url": "https://packagist.org/downloads/", | ||
7382 | "license": [ | ||
7383 | "BSD-3-Clause" | ||
7384 | ], | ||
7385 | "authors": [ | ||
7386 | { | ||
7387 | "name": "Sentry", | ||
7388 | "email": "accounts@sentry.io" | ||
7389 | } | ||
7390 | ], | ||
7391 | "description": "A PHP SDK for Sentry (http://sentry.io)", | ||
7392 | "homepage": "http://sentry.io", | ||
7393 | "keywords": [ | ||
7394 | "crash-reporting", | ||
7395 | "crash-reports", | ||
7396 | "error-handler", | ||
7397 | "error-monitoring", | ||
7398 | "log", | ||
7399 | "logging", | ||
7400 | "sentry" | ||
7401 | ], | ||
7402 | "time": "2019-05-22T07:44:47+00:00" | ||
7403 | }, | ||
7404 | { | ||
7405 | "name": "sentry/sentry-symfony", | ||
7406 | "version": "3.0.0", | ||
7407 | "source": { | ||
7408 | "type": "git", | ||
7409 | "url": "https://github.com/getsentry/sentry-symfony.git", | ||
7410 | "reference": "3fd045a5ce9279db5687a560bc9ebabd6b0468a7" | ||
7411 | }, | ||
7412 | "dist": { | ||
7413 | "type": "zip", | ||
7414 | "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/3fd045a5ce9279db5687a560bc9ebabd6b0468a7", | ||
7415 | "reference": "3fd045a5ce9279db5687a560bc9ebabd6b0468a7", | ||
7416 | "shasum": "" | ||
7417 | }, | ||
7418 | "require": { | ||
7419 | "jean85/pretty-package-versions": "^1.0", | ||
7420 | "php": "^7.1", | ||
7421 | "sentry/sdk": "^2.0", | ||
7422 | "symfony/config": "^3.0||^4.0", | ||
7423 | "symfony/console": "^3.0||^4.0", | ||
7424 | "symfony/dependency-injection": "^3.0||^4.0", | ||
7425 | "symfony/event-dispatcher": "^3.0||^4.0", | ||
7426 | "symfony/http-kernel": "^3.0||^4.0", | ||
7427 | "symfony/security-core": "^3.0||^4.0" | ||
7428 | }, | ||
7429 | "require-dev": { | ||
7430 | "friendsofphp/php-cs-fixer": "^2.8", | ||
7431 | "jangregor/phpstan-prophecy": "^0.3.0", | ||
7432 | "php-http/mock-client": "^1.0", | ||
7433 | "phpstan/phpstan": "^0.11", | ||
7434 | "phpstan/phpstan-phpunit": "^0.11", | ||
7435 | "phpunit/phpunit": "^7.5", | ||
7436 | "scrutinizer/ocular": "^1.4", | ||
7437 | "symfony/expression-language": "^3.0||^4.0" | ||
7438 | }, | ||
7439 | "type": "symfony-bundle", | ||
7440 | "extra": { | ||
7441 | "branch-alias": { | ||
7442 | "master": "3.x-dev", | ||
7443 | "releases/2.x": "2.x-dev", | ||
7444 | "releases/1.x": "1.x-dev" | ||
7445 | } | ||
7446 | }, | ||
7447 | "autoload": { | ||
7448 | "psr-4": { | ||
7449 | "Sentry\\SentryBundle\\": "src/" | ||
7450 | } | ||
7451 | }, | ||
7452 | "notification-url": "https://packagist.org/downloads/", | ||
7453 | "license": [ | ||
7454 | "Apache-2.0" | ||
7455 | ], | ||
7456 | "authors": [ | ||
7457 | { | ||
7458 | "name": "David Cramer", | ||
7459 | "email": "dcramer@gmail.com" | ||
7460 | }, | ||
7461 | { | ||
7462 | "name": "Alessandro Lai", | ||
7463 | "email": "alessandro.lai85@gmail.com" | ||
7464 | } | ||
7465 | ], | ||
7466 | "description": "Symfony integration for Sentry (http://getsentry.com)", | ||
7467 | "homepage": "http://getsentry.com", | ||
7468 | "keywords": [ | ||
7469 | "errors", | ||
7470 | "logging", | ||
7471 | "sentry", | ||
7472 | "symfony" | ||
7473 | ], | ||
7474 | "time": "2019-05-10T11:37:47+00:00" | ||
7475 | }, | ||
7476 | { | ||
7477 | "name": "simplepie/simplepie", | ||
7478 | "version": "1.5.2", | ||
7479 | "source": { | ||
7480 | "type": "git", | ||
7481 | "url": "https://github.com/simplepie/simplepie.git", | ||
7482 | "reference": "0e8fe72132dad765d25db4cabc69a91139af1263" | ||
7483 | }, | ||
7484 | "dist": { | ||
7485 | "type": "zip", | ||
7486 | "url": "https://api.github.com/repos/simplepie/simplepie/zipball/0e8fe72132dad765d25db4cabc69a91139af1263", | ||
7487 | "reference": "0e8fe72132dad765d25db4cabc69a91139af1263", | ||
7488 | "shasum": "" | ||
7489 | }, | ||
7490 | "require": { | ||
7491 | "ext-pcre": "*", | ||
7492 | "ext-xml": "*", | ||
7493 | "ext-xmlreader": "*", | ||
7494 | "php": ">=5.6.0" | ||
7495 | }, | ||
7496 | "require-dev": { | ||
7497 | "phpunit/phpunit": "~5.4.3 || ~6.5" | ||
7498 | }, | ||
7499 | "suggest": { | ||
7500 | "ext-curl": "", | ||
7501 | "ext-iconv": "", | ||
7502 | "ext-intl": "", | ||
7503 | "ext-mbstring": "", | ||
7504 | "mf2/mf2": "Microformat module that allows for parsing HTML for microformats" | ||
7505 | }, | ||
7506 | "type": "library", | ||
7507 | "autoload": { | ||
7508 | "psr-0": { | ||
7509 | "SimplePie": "library" | ||
7510 | } | ||
7511 | }, | ||
7512 | "notification-url": "https://packagist.org/downloads/", | ||
7513 | "license": [ | ||
7514 | "BSD-3-Clause" | ||
7515 | ], | ||
7516 | "authors": [ | ||
7517 | { | ||
7518 | "name": "Ryan Parman", | ||
7519 | "homepage": "http://ryanparman.com/", | ||
7520 | "role": "Creator, alumnus developer" | ||
7521 | }, | ||
7522 | { | ||
7523 | "name": "Geoffrey Sneddon", | ||
7524 | "homepage": "http://gsnedders.com/", | ||
7525 | "role": "Alumnus developer" | ||
7526 | }, | ||
7527 | { | ||
7528 | "name": "Ryan McCue", | ||
7529 | "email": "me@ryanmccue.info", | ||
7530 | "homepage": "http://ryanmccue.info/", | ||
7531 | "role": "Developer" | ||
7532 | } | ||
7533 | ], | ||
7534 | "description": "A simple Atom/RSS parsing library for PHP", | ||
7535 | "homepage": "http://simplepie.org/", | ||
7536 | "keywords": [ | ||
7537 | "atom", | ||
7538 | "feeds", | ||
7539 | "rss" | ||
7540 | ], | ||
7541 | "time": "2018-08-02T05:43:58+00:00" | ||
7542 | }, | ||
7543 | { | ||
7544 | "name": "smalot/pdfparser", | ||
7545 | "version": "v0.14.0", | ||
7546 | "source": { | ||
7547 | "type": "git", | ||
7548 | "url": "https://github.com/smalot/pdfparser.git", | ||
7549 | "reference": "ec72a99028ba5e21a0acad92047b85e128cbf81f" | ||
7550 | }, | ||
7551 | "dist": { | ||
7552 | "type": "zip", | ||
7553 | "url": "https://api.github.com/repos/smalot/pdfparser/zipball/ec72a99028ba5e21a0acad92047b85e128cbf81f", | ||
7554 | "reference": "ec72a99028ba5e21a0acad92047b85e128cbf81f", | ||
7555 | "shasum": "" | ||
7556 | }, | ||
7557 | "require": { | ||
7558 | "ext-mbstring": "*", | ||
7559 | "ext-zlib": "*", | ||
7560 | "php": ">=5.3.0", | ||
7561 | "tecnickcom/tcpdf": "~6.0" | ||
7562 | }, | ||
7563 | "require-dev": { | ||
7564 | "atoum/atoum": "^2.8 | ^3.0" | ||
7565 | }, | ||
7566 | "type": "library", | ||
7567 | "autoload": { | ||
7568 | "psr-0": { | ||
7569 | "Smalot\\PdfParser\\": "src/" | ||
7570 | } | ||
7571 | }, | ||
7572 | "notification-url": "https://packagist.org/downloads/", | ||
7573 | "license": [ | ||
7574 | "LGPL-3.0" | ||
7575 | ], | ||
7576 | "authors": [ | ||
7577 | { | ||
7578 | "name": "Sebastien MALOT", | ||
7579 | "email": "sebastien@malot.fr" | ||
7580 | } | ||
7581 | ], | ||
7582 | "description": "Pdf parser library. Can read and extract information from pdf file.", | ||
7583 | "homepage": "http://www.pdfparser.org", | ||
7584 | "keywords": [ | ||
7585 | "extract", | ||
7586 | "parse", | ||
7587 | "parser", | ||
7588 | "pdf", | ||
7589 | "text" | ||
7590 | ], | ||
7591 | "time": "2019-01-23T09:14:37+00:00" | ||
7592 | }, | ||
7593 | { | ||
7594 | "name": "sonata-project/google-authenticator", | ||
7595 | "version": "2.2.0", | ||
7596 | "source": { | ||
7597 | "type": "git", | ||
7598 | "url": "https://github.com/sonata-project/GoogleAuthenticator.git", | ||
7599 | "reference": "feda53899b26af24e3db2fe7a3e5f053ca483762" | ||
7600 | }, | ||
7601 | "dist": { | ||
7602 | "type": "zip", | ||
7603 | "url": "https://api.github.com/repos/sonata-project/GoogleAuthenticator/zipball/feda53899b26af24e3db2fe7a3e5f053ca483762", | ||
7604 | "reference": "feda53899b26af24e3db2fe7a3e5f053ca483762", | ||
7605 | "shasum": "" | ||
7606 | }, | ||
7607 | "require": { | ||
7608 | "php": "^7.1" | ||
7609 | }, | ||
7610 | "require-dev": { | ||
7611 | "symfony/phpunit-bridge": "^4.0" | ||
7612 | }, | ||
7613 | "type": "library", | ||
7614 | "extra": { | ||
7615 | "branch-alias": { | ||
7616 | "dev-master": "2.x-dev" | ||
7617 | } | ||
7618 | }, | ||
7619 | "autoload": { | ||
7620 | "psr-4": { | ||
7621 | "Google\\Authenticator\\": "src/", | ||
7622 | "Sonata\\GoogleAuthenticator\\": "src/" | ||
7623 | } | ||
7624 | }, | ||
7625 | "notification-url": "https://packagist.org/downloads/", | ||
7626 | "license": [ | ||
7627 | "MIT" | ||
7628 | ], | ||
7629 | "authors": [ | ||
7630 | { | ||
7631 | "name": "Christian Stocker", | ||
7632 | "email": "me@chregu.tv" | ||
7633 | }, | ||
7634 | { | ||
7635 | "name": "Andre DeMarre", | ||
7636 | "homepage": "http://www.devnetwork.net/viewtopic.php?f=50&t=94989" | ||
7637 | }, | ||
7638 | { | ||
7639 | "name": "Thomas Rabaix", | ||
7640 | "email": "thomas.rabaix@gmail.com" | ||
7641 | } | ||
7642 | ], | ||
7643 | "description": "Library to integrate Google Authenticator into a PHP project", | ||
7644 | "homepage": "https://github.com/sonata-project/GoogleAuthenticator", | ||
7645 | "keywords": [ | ||
7646 | "google authenticator" | ||
7647 | ], | ||
7648 | "time": "2018-07-18T22:08:02+00:00" | ||
7649 | }, | ||
7650 | { | ||
7651 | "name": "stof/doctrine-extensions-bundle", | ||
7652 | "version": "v1.3.0", | ||
7653 | "source": { | ||
7654 | "type": "git", | ||
7655 | "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", | ||
7656 | "reference": "46db71ec7ffee9122eca3cdddd4ef8d84bae269c" | ||
7657 | }, | ||
7658 | "dist": { | ||
7659 | "type": "zip", | ||
7660 | "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/46db71ec7ffee9122eca3cdddd4ef8d84bae269c", | ||
7661 | "reference": "46db71ec7ffee9122eca3cdddd4ef8d84bae269c", | ||
7662 | "shasum": "" | ||
7663 | }, | ||
7664 | "require": { | ||
7665 | "gedmo/doctrine-extensions": "^2.3.4", | ||
7666 | "php": ">=5.3.2", | ||
7667 | "symfony/framework-bundle": "~2.7|~3.2|~4.0" | ||
7668 | }, | ||
7669 | "require-dev": { | ||
7670 | "symfony/phpunit-bridge": "^4.0", | ||
7671 | "symfony/security-bundle": "^2.7 || ^3.2 || ^4.0" | ||
7672 | }, | ||
7673 | "suggest": { | ||
7674 | "doctrine/doctrine-bundle": "to use the ORM extensions", | ||
7675 | "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions" | ||
7676 | }, | ||
7677 | "type": "symfony-bundle", | ||
7678 | "extra": { | ||
7679 | "branch-alias": { | ||
7680 | "dev-master": "1.3.x-dev" | ||
7681 | } | ||
7682 | }, | ||
7683 | "autoload": { | ||
7684 | "psr-4": { | ||
7685 | "Stof\\DoctrineExtensionsBundle\\": "" | ||
7686 | } | ||
7687 | }, | ||
7688 | "notification-url": "https://packagist.org/downloads/", | ||
7689 | "license": [ | ||
7690 | "MIT" | ||
7691 | ], | ||
7692 | "authors": [ | ||
7693 | { | ||
7694 | "name": "Christophe Coevoet", | ||
7695 | "email": "stof@notk.org" | ||
7696 | } | ||
7697 | ], | ||
7698 | "description": "Integration of the gedmo/doctrine-extensions with Symfony2", | ||
7699 | "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", | ||
7700 | "keywords": [ | ||
7701 | "behaviors", | ||
7702 | "doctrine2", | ||
7703 | "extensions", | ||
7704 | "gedmo", | ||
7705 | "loggable", | ||
7706 | "nestedset", | ||
7707 | "sluggable", | ||
7708 | "sortable", | ||
7709 | "timestampable", | ||
7710 | "translatable", | ||
7711 | "tree" | ||
7712 | ], | ||
7713 | "time": "2017-12-24T16:06:50+00:00" | ||
7714 | }, | ||
7715 | { | ||
7716 | "name": "swiftmailer/swiftmailer", | ||
7717 | "version": "v6.2.1", | ||
7718 | "source": { | ||
7719 | "type": "git", | ||
7720 | "url": "https://github.com/swiftmailer/swiftmailer.git", | ||
7721 | "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a" | ||
7722 | }, | ||
7723 | "dist": { | ||
7724 | "type": "zip", | ||
7725 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", | ||
7726 | "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", | ||
7727 | "shasum": "" | ||
7728 | }, | ||
7729 | "require": { | ||
7730 | "egulias/email-validator": "~2.0", | ||
7731 | "php": ">=7.0.0", | ||
7732 | "symfony/polyfill-iconv": "^1.0", | ||
7733 | "symfony/polyfill-intl-idn": "^1.10", | ||
7734 | "symfony/polyfill-mbstring": "^1.0" | ||
7735 | }, | ||
7736 | "require-dev": { | ||
7737 | "mockery/mockery": "~0.9.1", | ||
7738 | "symfony/phpunit-bridge": "^3.4.19|^4.1.8" | ||
7739 | }, | ||
7740 | "suggest": { | ||
7741 | "ext-intl": "Needed to support internationalized email addresses", | ||
7742 | "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" | ||
7743 | }, | ||
7744 | "type": "library", | ||
7745 | "extra": { | ||
7746 | "branch-alias": { | ||
7747 | "dev-master": "6.2-dev" | ||
7748 | } | ||
7749 | }, | ||
7750 | "autoload": { | ||
7751 | "files": [ | ||
7752 | "lib/swift_required.php" | ||
7753 | ] | ||
7754 | }, | ||
7755 | "notification-url": "https://packagist.org/downloads/", | ||
7756 | "license": [ | ||
7757 | "MIT" | ||
7758 | ], | ||
7759 | "authors": [ | ||
7760 | { | ||
7761 | "name": "Chris Corbyn" | ||
7762 | }, | ||
7763 | { | ||
7764 | "name": "Fabien Potencier", | ||
7765 | "email": "fabien@symfony.com" | ||
7766 | } | ||
7767 | ], | ||
7768 | "description": "Swiftmailer, free feature-rich PHP mailer", | ||
7769 | "homepage": "https://swiftmailer.symfony.com", | ||
7770 | "keywords": [ | ||
7771 | "email", | ||
7772 | "mail", | ||
7773 | "mailer" | ||
7774 | ], | ||
7775 | "time": "2019-04-21T09:21:45+00:00" | ||
7776 | }, | ||
7777 | { | ||
7778 | "name": "symfony/monolog-bundle", | ||
7779 | "version": "v3.3.1", | ||
7780 | "source": { | ||
7781 | "type": "git", | ||
7782 | "url": "https://github.com/symfony/monolog-bundle.git", | ||
7783 | "reference": "572e143afc03419a75ab002c80a2fd99299195ff" | ||
7784 | }, | ||
7785 | "dist": { | ||
7786 | "type": "zip", | ||
7787 | "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/572e143afc03419a75ab002c80a2fd99299195ff", | ||
7788 | "reference": "572e143afc03419a75ab002c80a2fd99299195ff", | ||
7789 | "shasum": "" | ||
7790 | }, | ||
7791 | "require": { | ||
7792 | "monolog/monolog": "~1.22", | ||
7793 | "php": ">=5.6", | ||
7794 | "symfony/config": "~2.7|~3.3|~4.0", | ||
7795 | "symfony/dependency-injection": "~2.7|~3.4.10|^4.0.10", | ||
7796 | "symfony/http-kernel": "~2.7|~3.3|~4.0", | ||
7797 | "symfony/monolog-bridge": "~2.7|~3.3|~4.0" | ||
7798 | }, | ||
7799 | "require-dev": { | ||
7800 | "symfony/console": "~2.7|~3.3|~4.0", | ||
7801 | "symfony/phpunit-bridge": "^3.3|^4.0", | ||
7802 | "symfony/yaml": "~2.7|~3.3|~4.0" | ||
7803 | }, | ||
7804 | "type": "symfony-bundle", | ||
7805 | "extra": { | ||
7806 | "branch-alias": { | ||
7807 | "dev-master": "3.x-dev" | ||
7808 | } | ||
7809 | }, | ||
7810 | "autoload": { | ||
7811 | "psr-4": { | ||
7812 | "Symfony\\Bundle\\MonologBundle\\": "" | ||
7813 | }, | ||
7814 | "exclude-from-classmap": [ | ||
7815 | "/Tests/" | ||
7816 | ] | ||
7817 | }, | ||
7818 | "notification-url": "https://packagist.org/downloads/", | ||
7819 | "license": [ | ||
7820 | "MIT" | ||
7821 | ], | ||
7822 | "authors": [ | ||
7823 | { | ||
7824 | "name": "Symfony Community", | ||
7825 | "homepage": "http://symfony.com/contributors" | ||
7826 | }, | ||
7827 | { | ||
7828 | "name": "Fabien Potencier", | ||
7829 | "email": "fabien@symfony.com" | ||
7830 | } | ||
7831 | ], | ||
7832 | "description": "Symfony MonologBundle", | ||
7833 | "homepage": "http://symfony.com", | ||
7834 | "keywords": [ | ||
7835 | "log", | ||
7836 | "logging" | ||
7837 | ], | ||
7838 | "time": "2018-11-04T09:58:13+00:00" | ||
7839 | }, | ||
7840 | { | ||
7841 | "name": "symfony/polyfill-apcu", | ||
7842 | "version": "v1.11.0", | ||
7843 | "source": { | ||
7844 | "type": "git", | ||
7845 | "url": "https://github.com/symfony/polyfill-apcu.git", | ||
7846 | "reference": "a502face1da6a53289480166f24de2c3c68e5c3c" | ||
7847 | }, | ||
7848 | "dist": { | ||
7849 | "type": "zip", | ||
7850 | "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a502face1da6a53289480166f24de2c3c68e5c3c", | ||
7851 | "reference": "a502face1da6a53289480166f24de2c3c68e5c3c", | ||
7852 | "shasum": "" | ||
7853 | }, | ||
7854 | "require": { | ||
7855 | "php": ">=5.3.3" | ||
7856 | }, | ||
7857 | "type": "library", | ||
7858 | "extra": { | ||
7859 | "branch-alias": { | ||
7860 | "dev-master": "1.11-dev" | ||
7861 | } | ||
7862 | }, | ||
7863 | "autoload": { | ||
7864 | "psr-4": { | ||
7865 | "Symfony\\Polyfill\\Apcu\\": "" | ||
7866 | }, | ||
7867 | "files": [ | ||
7868 | "bootstrap.php" | ||
7869 | ] | ||
7870 | }, | ||
7871 | "notification-url": "https://packagist.org/downloads/", | ||
7872 | "license": [ | ||
7873 | "MIT" | ||
7874 | ], | ||
7875 | "authors": [ | ||
7876 | { | ||
7877 | "name": "Nicolas Grekas", | ||
7878 | "email": "p@tchwork.com" | ||
7879 | }, | ||
7880 | { | ||
7881 | "name": "Symfony Community", | ||
7882 | "homepage": "https://symfony.com/contributors" | ||
7883 | } | ||
7884 | ], | ||
7885 | "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", | ||
7886 | "homepage": "https://symfony.com", | ||
7887 | "keywords": [ | ||
7888 | "apcu", | ||
7889 | "compatibility", | ||
7890 | "polyfill", | ||
7891 | "portable", | ||
7892 | "shim" | ||
7893 | ], | ||
7894 | "time": "2019-02-06T07:57:58+00:00" | ||
7895 | }, | ||
7896 | { | ||
7897 | "name": "symfony/polyfill-ctype", | ||
7898 | "version": "v1.11.0", | ||
7899 | "source": { | ||
7900 | "type": "git", | ||
7901 | "url": "https://github.com/symfony/polyfill-ctype.git", | ||
7902 | "reference": "82ebae02209c21113908c229e9883c419720738a" | ||
7903 | }, | ||
7904 | "dist": { | ||
7905 | "type": "zip", | ||
7906 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", | ||
7907 | "reference": "82ebae02209c21113908c229e9883c419720738a", | ||
7908 | "shasum": "" | ||
7909 | }, | ||
7910 | "require": { | ||
7911 | "php": ">=5.3.3" | ||
7912 | }, | ||
7913 | "suggest": { | ||
7914 | "ext-ctype": "For best performance" | ||
7915 | }, | ||
7916 | "type": "library", | ||
7917 | "extra": { | ||
7918 | "branch-alias": { | ||
7919 | "dev-master": "1.11-dev" | ||
7920 | } | ||
7921 | }, | ||
7922 | "autoload": { | ||
7923 | "psr-4": { | ||
7924 | "Symfony\\Polyfill\\Ctype\\": "" | ||
7925 | }, | ||
7926 | "files": [ | ||
7927 | "bootstrap.php" | ||
7928 | ] | ||
7929 | }, | ||
7930 | "notification-url": "https://packagist.org/downloads/", | ||
7931 | "license": [ | ||
7932 | "MIT" | ||
7933 | ], | ||
7934 | "authors": [ | ||
7935 | { | ||
7936 | "name": "Symfony Community", | ||
7937 | "homepage": "https://symfony.com/contributors" | ||
7938 | }, | ||
7939 | { | ||
7940 | "name": "Gert de Pagter", | ||
7941 | "email": "backendtea@gmail.com" | ||
7942 | } | ||
7943 | ], | ||
7944 | "description": "Symfony polyfill for ctype functions", | ||
7945 | "homepage": "https://symfony.com", | ||
7946 | "keywords": [ | ||
7947 | "compatibility", | ||
7948 | "ctype", | ||
7949 | "polyfill", | ||
7950 | "portable" | ||
7951 | ], | ||
7952 | "time": "2019-02-06T07:57:58+00:00" | ||
7953 | }, | ||
7954 | { | ||
7955 | "name": "symfony/polyfill-iconv", | ||
7956 | "version": "v1.11.0", | ||
7957 | "source": { | ||
7958 | "type": "git", | ||
7959 | "url": "https://github.com/symfony/polyfill-iconv.git", | ||
7960 | "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7" | ||
7961 | }, | ||
7962 | "dist": { | ||
7963 | "type": "zip", | ||
7964 | "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", | ||
7965 | "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", | ||
7966 | "shasum": "" | ||
7967 | }, | ||
7968 | "require": { | ||
7969 | "php": ">=5.3.3" | ||
7970 | }, | ||
7971 | "suggest": { | ||
7972 | "ext-iconv": "For best performance" | ||
7973 | }, | ||
7974 | "type": "library", | ||
7975 | "extra": { | ||
7976 | "branch-alias": { | ||
7977 | "dev-master": "1.11-dev" | ||
7978 | } | ||
7979 | }, | ||
7980 | "autoload": { | ||
7981 | "psr-4": { | ||
7982 | "Symfony\\Polyfill\\Iconv\\": "" | ||
7983 | }, | ||
7984 | "files": [ | ||
7985 | "bootstrap.php" | ||
7986 | ] | ||
7987 | }, | ||
7988 | "notification-url": "https://packagist.org/downloads/", | ||
7989 | "license": [ | ||
7990 | "MIT" | ||
7991 | ], | ||
7992 | "authors": [ | ||
7993 | { | ||
7994 | "name": "Nicolas Grekas", | ||
7995 | "email": "p@tchwork.com" | ||
7996 | }, | ||
7997 | { | ||
7998 | "name": "Symfony Community", | ||
7999 | "homepage": "https://symfony.com/contributors" | ||
8000 | } | ||
8001 | ], | ||
8002 | "description": "Symfony polyfill for the Iconv extension", | ||
8003 | "homepage": "https://symfony.com", | ||
8004 | "keywords": [ | ||
8005 | "compatibility", | ||
8006 | "iconv", | ||
8007 | "polyfill", | ||
8008 | "portable", | ||
8009 | "shim" | ||
8010 | ], | ||
8011 | "time": "2019-02-06T07:57:58+00:00" | ||
8012 | }, | ||
8013 | { | ||
8014 | "name": "symfony/polyfill-intl-icu", | ||
8015 | "version": "v1.11.0", | ||
8016 | "source": { | ||
8017 | "type": "git", | ||
8018 | "url": "https://github.com/symfony/polyfill-intl-icu.git", | ||
8019 | "reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057" | ||
8020 | }, | ||
8021 | "dist": { | ||
8022 | "type": "zip", | ||
8023 | "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/999878a3a09d73cae157b0cf89bb6fb2cc073057", | ||
8024 | "reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057", | ||
8025 | "shasum": "" | ||
8026 | }, | ||
8027 | "require": { | ||
8028 | "php": ">=5.3.3", | ||
8029 | "symfony/intl": "~2.3|~3.0|~4.0" | ||
8030 | }, | ||
8031 | "suggest": { | ||
8032 | "ext-intl": "For best performance" | ||
8033 | }, | ||
8034 | "type": "library", | ||
8035 | "extra": { | ||
8036 | "branch-alias": { | ||
8037 | "dev-master": "1.9-dev" | ||
8038 | } | ||
8039 | }, | ||
8040 | "autoload": { | ||
8041 | "files": [ | ||
8042 | "bootstrap.php" | ||
8043 | ] | ||
8044 | }, | ||
8045 | "notification-url": "https://packagist.org/downloads/", | ||
8046 | "license": [ | ||
8047 | "MIT" | ||
8048 | ], | ||
8049 | "authors": [ | ||
8050 | { | ||
8051 | "name": "Nicolas Grekas", | ||
8052 | "email": "p@tchwork.com" | ||
8053 | }, | ||
8054 | { | ||
8055 | "name": "Symfony Community", | ||
8056 | "homepage": "https://symfony.com/contributors" | ||
8057 | } | ||
8058 | ], | ||
8059 | "description": "Symfony polyfill for intl's ICU-related data and classes", | ||
8060 | "homepage": "https://symfony.com", | ||
8061 | "keywords": [ | ||
8062 | "compatibility", | ||
8063 | "icu", | ||
8064 | "intl", | ||
8065 | "polyfill", | ||
8066 | "portable", | ||
8067 | "shim" | ||
8068 | ], | ||
8069 | "time": "2019-01-07T19:39:47+00:00" | ||
8070 | }, | ||
8071 | { | ||
8072 | "name": "symfony/polyfill-intl-idn", | ||
8073 | "version": "v1.11.0", | ||
8074 | "source": { | ||
8075 | "type": "git", | ||
8076 | "url": "https://github.com/symfony/polyfill-intl-idn.git", | ||
8077 | "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af" | ||
8078 | }, | ||
8079 | "dist": { | ||
8080 | "type": "zip", | ||
8081 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c766e95bec706cdd89903b1eda8afab7d7a6b7af", | ||
8082 | "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af", | ||
8083 | "shasum": "" | ||
8084 | }, | ||
8085 | "require": { | ||
8086 | "php": ">=5.3.3", | ||
8087 | "symfony/polyfill-mbstring": "^1.3", | ||
8088 | "symfony/polyfill-php72": "^1.9" | ||
8089 | }, | ||
8090 | "suggest": { | ||
8091 | "ext-intl": "For best performance" | ||
8092 | }, | ||
8093 | "type": "library", | ||
8094 | "extra": { | ||
8095 | "branch-alias": { | ||
8096 | "dev-master": "1.9-dev" | ||
8097 | } | ||
8098 | }, | ||
8099 | "autoload": { | ||
8100 | "psr-4": { | ||
8101 | "Symfony\\Polyfill\\Intl\\Idn\\": "" | ||
8102 | }, | ||
8103 | "files": [ | ||
8104 | "bootstrap.php" | ||
8105 | ] | ||
8106 | }, | ||
8107 | "notification-url": "https://packagist.org/downloads/", | ||
8108 | "license": [ | ||
8109 | "MIT" | ||
8110 | ], | ||
8111 | "authors": [ | ||
8112 | { | ||
8113 | "name": "Symfony Community", | ||
8114 | "homepage": "https://symfony.com/contributors" | ||
8115 | }, | ||
8116 | { | ||
8117 | "name": "Laurent Bassin", | ||
8118 | "email": "laurent@bassin.info" | ||
8119 | } | ||
8120 | ], | ||
8121 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", | ||
8122 | "homepage": "https://symfony.com", | ||
8123 | "keywords": [ | ||
8124 | "compatibility", | ||
8125 | "idn", | ||
8126 | "intl", | ||
8127 | "polyfill", | ||
8128 | "portable", | ||
8129 | "shim" | ||
8130 | ], | ||
8131 | "time": "2019-03-04T13:44:35+00:00" | ||
8132 | }, | ||
8133 | { | ||
8134 | "name": "symfony/polyfill-mbstring", | ||
8135 | "version": "v1.11.0", | ||
8136 | "source": { | ||
8137 | "type": "git", | ||
8138 | "url": "https://github.com/symfony/polyfill-mbstring.git", | ||
8139 | "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" | ||
8140 | }, | ||
8141 | "dist": { | ||
8142 | "type": "zip", | ||
8143 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", | ||
8144 | "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", | ||
8145 | "shasum": "" | ||
8146 | }, | ||
8147 | "require": { | ||
8148 | "php": ">=5.3.3" | ||
8149 | }, | ||
8150 | "suggest": { | ||
8151 | "ext-mbstring": "For best performance" | ||
8152 | }, | ||
8153 | "type": "library", | ||
8154 | "extra": { | ||
8155 | "branch-alias": { | ||
8156 | "dev-master": "1.11-dev" | ||
8157 | } | ||
8158 | }, | ||
8159 | "autoload": { | ||
8160 | "psr-4": { | ||
8161 | "Symfony\\Polyfill\\Mbstring\\": "" | ||
8162 | }, | ||
8163 | "files": [ | ||
8164 | "bootstrap.php" | ||
8165 | ] | ||
8166 | }, | ||
8167 | "notification-url": "https://packagist.org/downloads/", | ||
8168 | "license": [ | ||
8169 | "MIT" | ||
8170 | ], | ||
8171 | "authors": [ | ||
8172 | { | ||
8173 | "name": "Nicolas Grekas", | ||
8174 | "email": "p@tchwork.com" | ||
8175 | }, | ||
8176 | { | ||
8177 | "name": "Symfony Community", | ||
8178 | "homepage": "https://symfony.com/contributors" | ||
8179 | } | ||
8180 | ], | ||
8181 | "description": "Symfony polyfill for the Mbstring extension", | ||
8182 | "homepage": "https://symfony.com", | ||
8183 | "keywords": [ | ||
8184 | "compatibility", | ||
8185 | "mbstring", | ||
8186 | "polyfill", | ||
8187 | "portable", | ||
8188 | "shim" | ||
8189 | ], | ||
8190 | "time": "2019-02-06T07:57:58+00:00" | ||
8191 | }, | ||
8192 | { | ||
8193 | "name": "symfony/polyfill-php56", | ||
8194 | "version": "v1.11.0", | ||
8195 | "source": { | ||
8196 | "type": "git", | ||
8197 | "url": "https://github.com/symfony/polyfill-php56.git", | ||
8198 | "reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42" | ||
8199 | }, | ||
8200 | "dist": { | ||
8201 | "type": "zip", | ||
8202 | "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/f4dddbc5c3471e1b700a147a20ae17cdb72dbe42", | ||
8203 | "reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42", | ||
8204 | "shasum": "" | ||
8205 | }, | ||
8206 | "require": { | ||
8207 | "php": ">=5.3.3", | ||
8208 | "symfony/polyfill-util": "~1.0" | ||
8209 | }, | ||
8210 | "type": "library", | ||
8211 | "extra": { | ||
8212 | "branch-alias": { | ||
8213 | "dev-master": "1.11-dev" | ||
8214 | } | ||
8215 | }, | ||
8216 | "autoload": { | ||
8217 | "psr-4": { | ||
8218 | "Symfony\\Polyfill\\Php56\\": "" | ||
8219 | }, | ||
8220 | "files": [ | ||
8221 | "bootstrap.php" | ||
8222 | ] | ||
8223 | }, | ||
8224 | "notification-url": "https://packagist.org/downloads/", | ||
8225 | "license": [ | ||
8226 | "MIT" | ||
8227 | ], | ||
8228 | "authors": [ | ||
8229 | { | ||
8230 | "name": "Nicolas Grekas", | ||
8231 | "email": "p@tchwork.com" | ||
8232 | }, | ||
8233 | { | ||
8234 | "name": "Symfony Community", | ||
8235 | "homepage": "https://symfony.com/contributors" | ||
8236 | } | ||
8237 | ], | ||
8238 | "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", | ||
8239 | "homepage": "https://symfony.com", | ||
8240 | "keywords": [ | ||
8241 | "compatibility", | ||
8242 | "polyfill", | ||
8243 | "portable", | ||
8244 | "shim" | ||
8245 | ], | ||
8246 | "time": "2019-02-06T07:57:58+00:00" | ||
8247 | }, | ||
8248 | { | ||
8249 | "name": "symfony/polyfill-php70", | ||
8250 | "version": "v1.11.0", | ||
8251 | "source": { | ||
8252 | "type": "git", | ||
8253 | "url": "https://github.com/symfony/polyfill-php70.git", | ||
8254 | "reference": "bc4858fb611bda58719124ca079baff854149c89" | ||
8255 | }, | ||
8256 | "dist": { | ||
8257 | "type": "zip", | ||
8258 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89", | ||
8259 | "reference": "bc4858fb611bda58719124ca079baff854149c89", | ||
8260 | "shasum": "" | ||
8261 | }, | ||
8262 | "require": { | ||
8263 | "paragonie/random_compat": "~1.0|~2.0|~9.99", | ||
8264 | "php": ">=5.3.3" | ||
8265 | }, | ||
8266 | "type": "library", | ||
8267 | "extra": { | ||
8268 | "branch-alias": { | ||
8269 | "dev-master": "1.11-dev" | ||
8270 | } | ||
8271 | }, | ||
8272 | "autoload": { | ||
8273 | "psr-4": { | ||
8274 | "Symfony\\Polyfill\\Php70\\": "" | ||
8275 | }, | ||
8276 | "files": [ | ||
8277 | "bootstrap.php" | ||
8278 | ], | ||
8279 | "classmap": [ | ||
8280 | "Resources/stubs" | ||
8281 | ] | ||
8282 | }, | ||
8283 | "notification-url": "https://packagist.org/downloads/", | ||
8284 | "license": [ | ||
8285 | "MIT" | ||
8286 | ], | ||
8287 | "authors": [ | ||
8288 | { | ||
8289 | "name": "Nicolas Grekas", | ||
8290 | "email": "p@tchwork.com" | ||
8291 | }, | ||
8292 | { | ||
8293 | "name": "Symfony Community", | ||
8294 | "homepage": "https://symfony.com/contributors" | ||
8295 | } | ||
8296 | ], | ||
8297 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", | ||
8298 | "homepage": "https://symfony.com", | ||
8299 | "keywords": [ | ||
8300 | "compatibility", | ||
8301 | "polyfill", | ||
8302 | "portable", | ||
8303 | "shim" | ||
8304 | ], | ||
8305 | "time": "2019-02-06T07:57:58+00:00" | ||
8306 | }, | ||
8307 | { | ||
8308 | "name": "symfony/polyfill-php72", | ||
8309 | "version": "v1.11.0", | ||
8310 | "source": { | ||
8311 | "type": "git", | ||
8312 | "url": "https://github.com/symfony/polyfill-php72.git", | ||
8313 | "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" | ||
8314 | }, | ||
8315 | "dist": { | ||
8316 | "type": "zip", | ||
8317 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", | ||
8318 | "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", | ||
8319 | "shasum": "" | ||
8320 | }, | ||
8321 | "require": { | ||
8322 | "php": ">=5.3.3" | ||
8323 | }, | ||
8324 | "type": "library", | ||
8325 | "extra": { | ||
8326 | "branch-alias": { | ||
8327 | "dev-master": "1.11-dev" | ||
8328 | } | ||
8329 | }, | ||
8330 | "autoload": { | ||
8331 | "psr-4": { | ||
8332 | "Symfony\\Polyfill\\Php72\\": "" | ||
8333 | }, | ||
8334 | "files": [ | ||
8335 | "bootstrap.php" | ||
8336 | ] | ||
8337 | }, | ||
8338 | "notification-url": "https://packagist.org/downloads/", | ||
8339 | "license": [ | ||
8340 | "MIT" | ||
8341 | ], | ||
8342 | "authors": [ | ||
8343 | { | ||
8344 | "name": "Nicolas Grekas", | ||
8345 | "email": "p@tchwork.com" | ||
8346 | }, | ||
8347 | { | ||
8348 | "name": "Symfony Community", | ||
8349 | "homepage": "https://symfony.com/contributors" | ||
8350 | } | ||
8351 | ], | ||
8352 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", | ||
8353 | "homepage": "https://symfony.com", | ||
8354 | "keywords": [ | ||
8355 | "compatibility", | ||
8356 | "polyfill", | ||
8357 | "portable", | ||
8358 | "shim" | ||
8359 | ], | ||
8360 | "time": "2019-02-06T07:57:58+00:00" | ||
8361 | }, | ||
8362 | { | ||
8363 | "name": "symfony/polyfill-util", | ||
8364 | "version": "v1.11.0", | ||
8365 | "source": { | ||
8366 | "type": "git", | ||
8367 | "url": "https://github.com/symfony/polyfill-util.git", | ||
8368 | "reference": "b46c6cae28a3106735323f00a0c38eccf2328897" | ||
8369 | }, | ||
8370 | "dist": { | ||
8371 | "type": "zip", | ||
8372 | "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/b46c6cae28a3106735323f00a0c38eccf2328897", | ||
8373 | "reference": "b46c6cae28a3106735323f00a0c38eccf2328897", | ||
8374 | "shasum": "" | ||
8375 | }, | ||
8376 | "require": { | ||
8377 | "php": ">=5.3.3" | ||
8378 | }, | ||
8379 | "type": "library", | ||
8380 | "extra": { | ||
8381 | "branch-alias": { | ||
8382 | "dev-master": "1.11-dev" | ||
8383 | } | ||
8384 | }, | ||
8385 | "autoload": { | ||
8386 | "psr-4": { | ||
8387 | "Symfony\\Polyfill\\Util\\": "" | ||
8388 | } | ||
8389 | }, | ||
8390 | "notification-url": "https://packagist.org/downloads/", | ||
8391 | "license": [ | ||
8392 | "MIT" | ||
8393 | ], | ||
8394 | "authors": [ | ||
8395 | { | ||
8396 | "name": "Nicolas Grekas", | ||
8397 | "email": "p@tchwork.com" | ||
8398 | }, | ||
8399 | { | ||
8400 | "name": "Symfony Community", | ||
8401 | "homepage": "https://symfony.com/contributors" | ||
8402 | } | ||
8403 | ], | ||
8404 | "description": "Symfony utilities for portability of PHP codes", | ||
8405 | "homepage": "https://symfony.com", | ||
8406 | "keywords": [ | ||
8407 | "compat", | ||
8408 | "compatibility", | ||
8409 | "polyfill", | ||
8410 | "shim" | ||
8411 | ], | ||
8412 | "time": "2019-02-08T14:16:39+00:00" | ||
8413 | }, | ||
8414 | { | ||
8415 | "name": "symfony/swiftmailer-bundle", | ||
8416 | "version": "v3.2.6", | ||
8417 | "source": { | ||
8418 | "type": "git", | ||
8419 | "url": "https://github.com/symfony/swiftmailer-bundle.git", | ||
8420 | "reference": "7a83160b50a2479d37eb74ba71577380b9afe4f5" | ||
8421 | }, | ||
8422 | "dist": { | ||
8423 | "type": "zip", | ||
8424 | "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/7a83160b50a2479d37eb74ba71577380b9afe4f5", | ||
8425 | "reference": "7a83160b50a2479d37eb74ba71577380b9afe4f5", | ||
8426 | "shasum": "" | ||
8427 | }, | ||
8428 | "require": { | ||
8429 | "php": ">=7.0.0", | ||
8430 | "swiftmailer/swiftmailer": "^6.1.3", | ||
8431 | "symfony/config": "~2.8|~3.3|~4.0", | ||
8432 | "symfony/dependency-injection": "~2.7|~3.3|~4.0", | ||
8433 | "symfony/http-kernel": "~2.7|~3.3|~4.0" | ||
8434 | }, | ||
8435 | "require-dev": { | ||
8436 | "symfony/console": "~2.7|~3.3|~4.0", | ||
8437 | "symfony/framework-bundle": "~2.7|~3.3|~4.0", | ||
8438 | "symfony/phpunit-bridge": "~3.3|~4.0", | ||
8439 | "symfony/yaml": "~2.7|~3.3|~4.0" | ||
8440 | }, | ||
8441 | "suggest": { | ||
8442 | "psr/log": "Allows logging" | ||
8443 | }, | ||
8444 | "type": "symfony-bundle", | ||
8445 | "extra": { | ||
8446 | "branch-alias": { | ||
8447 | "dev-master": "3.2-dev" | ||
8448 | } | ||
8449 | }, | ||
8450 | "autoload": { | ||
8451 | "psr-4": { | ||
8452 | "Symfony\\Bundle\\SwiftmailerBundle\\": "" | ||
8453 | }, | ||
8454 | "exclude-from-classmap": [ | ||
8455 | "/Tests/" | ||
8456 | ] | ||
8457 | }, | ||
8458 | "notification-url": "https://packagist.org/downloads/", | ||
8459 | "license": [ | ||
8460 | "MIT" | ||
8461 | ], | ||
8462 | "authors": [ | ||
8463 | { | ||
8464 | "name": "Symfony Community", | ||
8465 | "homepage": "http://symfony.com/contributors" | ||
8466 | }, | ||
8467 | { | ||
8468 | "name": "Fabien Potencier", | ||
8469 | "email": "fabien@symfony.com" | ||
8470 | } | ||
8471 | ], | ||
8472 | "description": "Symfony SwiftmailerBundle", | ||
8473 | "homepage": "http://symfony.com", | ||
8474 | "time": "2019-04-18T15:52:54+00:00" | ||
8475 | }, | ||
8476 | { | ||
8477 | "name": "symfony/symfony", | ||
8478 | "version": "v3.4.28", | ||
8479 | "source": { | ||
8480 | "type": "git", | ||
8481 | "url": "https://github.com/symfony/symfony.git", | ||
8482 | "reference": "5e05ffeb1c2e538127e5a33b419edb8b2904b99e" | ||
8483 | }, | ||
8484 | "dist": { | ||
8485 | "type": "zip", | ||
8486 | "url": "https://api.github.com/repos/symfony/symfony/zipball/5e05ffeb1c2e538127e5a33b419edb8b2904b99e", | ||
8487 | "reference": "5e05ffeb1c2e538127e5a33b419edb8b2904b99e", | ||
8488 | "shasum": "" | ||
8489 | }, | ||
8490 | "require": { | ||
8491 | "doctrine/common": "~2.4", | ||
8492 | "ext-xml": "*", | ||
8493 | "fig/link-util": "^1.0", | ||
8494 | "php": "^5.5.9|>=7.0.8", | ||
8495 | "psr/cache": "~1.0", | ||
8496 | "psr/container": "^1.0", | ||
8497 | "psr/link": "^1.0", | ||
8498 | "psr/log": "~1.0", | ||
8499 | "psr/simple-cache": "^1.0", | ||
8500 | "symfony/polyfill-apcu": "~1.1", | ||
8501 | "symfony/polyfill-ctype": "~1.8", | ||
8502 | "symfony/polyfill-intl-icu": "~1.0", | ||
8503 | "symfony/polyfill-mbstring": "~1.0", | ||
8504 | "symfony/polyfill-php56": "~1.0", | ||
8505 | "symfony/polyfill-php70": "~1.6", | ||
8506 | "twig/twig": "^1.40|^2.9" | ||
8507 | }, | ||
8508 | "conflict": { | ||
8509 | "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", | ||
8510 | "phpdocumentor/type-resolver": "<0.3.0", | ||
8511 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" | ||
8512 | }, | ||
8513 | "provide": { | ||
8514 | "psr/cache-implementation": "1.0", | ||
8515 | "psr/container-implementation": "1.0", | ||
8516 | "psr/log-implementation": "1.0", | ||
8517 | "psr/simple-cache-implementation": "1.0" | ||
8518 | }, | ||
8519 | "replace": { | ||
8520 | "symfony/asset": "self.version", | ||
8521 | "symfony/browser-kit": "self.version", | ||
8522 | "symfony/cache": "self.version", | ||
8523 | "symfony/class-loader": "self.version", | ||
8524 | "symfony/config": "self.version", | ||
8525 | "symfony/console": "self.version", | ||
8526 | "symfony/css-selector": "self.version", | ||
8527 | "symfony/debug": "self.version", | ||
8528 | "symfony/debug-bundle": "self.version", | ||
8529 | "symfony/dependency-injection": "self.version", | ||
8530 | "symfony/doctrine-bridge": "self.version", | ||
8531 | "symfony/dom-crawler": "self.version", | ||
8532 | "symfony/dotenv": "self.version", | ||
8533 | "symfony/event-dispatcher": "self.version", | ||
8534 | "symfony/expression-language": "self.version", | ||
8535 | "symfony/filesystem": "self.version", | ||
8536 | "symfony/finder": "self.version", | ||
8537 | "symfony/form": "self.version", | ||
8538 | "symfony/framework-bundle": "self.version", | ||
8539 | "symfony/http-foundation": "self.version", | ||
8540 | "symfony/http-kernel": "self.version", | ||
8541 | "symfony/inflector": "self.version", | ||
8542 | "symfony/intl": "self.version", | ||
8543 | "symfony/ldap": "self.version", | ||
8544 | "symfony/lock": "self.version", | ||
8545 | "symfony/monolog-bridge": "self.version", | ||
8546 | "symfony/options-resolver": "self.version", | ||
8547 | "symfony/process": "self.version", | ||
8548 | "symfony/property-access": "self.version", | ||
8549 | "symfony/property-info": "self.version", | ||
8550 | "symfony/proxy-manager-bridge": "self.version", | ||
8551 | "symfony/routing": "self.version", | ||
8552 | "symfony/security": "self.version", | ||
8553 | "symfony/security-bundle": "self.version", | ||
8554 | "symfony/security-core": "self.version", | ||
8555 | "symfony/security-csrf": "self.version", | ||
8556 | "symfony/security-guard": "self.version", | ||
8557 | "symfony/security-http": "self.version", | ||
8558 | "symfony/serializer": "self.version", | ||
8559 | "symfony/stopwatch": "self.version", | ||
8560 | "symfony/templating": "self.version", | ||
8561 | "symfony/translation": "self.version", | ||
8562 | "symfony/twig-bridge": "self.version", | ||
8563 | "symfony/twig-bundle": "self.version", | ||
8564 | "symfony/validator": "self.version", | ||
8565 | "symfony/var-dumper": "self.version", | ||
8566 | "symfony/web-link": "self.version", | ||
8567 | "symfony/web-profiler-bundle": "self.version", | ||
8568 | "symfony/web-server-bundle": "self.version", | ||
8569 | "symfony/workflow": "self.version", | ||
8570 | "symfony/yaml": "self.version" | ||
8571 | }, | ||
8572 | "require-dev": { | ||
8573 | "cache/integration-tests": "dev-master", | ||
8574 | "doctrine/annotations": "~1.0", | ||
8575 | "doctrine/cache": "~1.6", | ||
8576 | "doctrine/data-fixtures": "1.0.*", | ||
8577 | "doctrine/dbal": "~2.4", | ||
8578 | "doctrine/doctrine-bundle": "~1.4", | ||
8579 | "doctrine/orm": "~2.4,>=2.4.5", | ||
8580 | "egulias/email-validator": "~1.2,>=1.2.8|~2.0", | ||
8581 | "monolog/monolog": "~1.11", | ||
8582 | "ocramius/proxy-manager": "~0.4|~1.0|~2.0", | ||
8583 | "phpdocumentor/reflection-docblock": "^3.0|^4.0", | ||
8584 | "predis/predis": "~1.0", | ||
8585 | "symfony/phpunit-bridge": "~3.4|~4.0", | ||
8586 | "symfony/security-acl": "~2.8|~3.0" | ||
8587 | }, | ||
8588 | "type": "library", | ||
8589 | "extra": { | ||
8590 | "branch-alias": { | ||
8591 | "dev-master": "3.4-dev" | ||
8592 | } | ||
8593 | }, | ||
8594 | "autoload": { | ||
8595 | "psr-4": { | ||
8596 | "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", | ||
8597 | "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", | ||
8598 | "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", | ||
8599 | "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", | ||
8600 | "Symfony\\Bundle\\": "src/Symfony/Bundle/", | ||
8601 | "Symfony\\Component\\": "src/Symfony/Component/" | ||
8602 | }, | ||
8603 | "classmap": [ | ||
8604 | "src/Symfony/Component/Intl/Resources/stubs" | ||
8605 | ], | ||
8606 | "exclude-from-classmap": [ | ||
8607 | "**/Tests/" | ||
8608 | ] | ||
8609 | }, | ||
8610 | "notification-url": "https://packagist.org/downloads/", | ||
8611 | "license": [ | ||
8612 | "MIT" | ||
8613 | ], | ||
8614 | "authors": [ | ||
8615 | { | ||
8616 | "name": "Fabien Potencier", | ||
8617 | "email": "fabien@symfony.com" | ||
8618 | }, | ||
8619 | { | ||
8620 | "name": "Symfony Community", | ||
8621 | "homepage": "https://symfony.com/contributors" | ||
8622 | } | ||
8623 | ], | ||
8624 | "description": "The Symfony PHP framework", | ||
8625 | "homepage": "https://symfony.com", | ||
8626 | "keywords": [ | ||
8627 | "framework" | ||
8628 | ], | ||
8629 | "time": "2019-05-28T09:24:58+00:00" | ||
8630 | }, | ||
8631 | { | ||
8632 | "name": "true/punycode", | ||
8633 | "version": "v2.1.1", | ||
8634 | "source": { | ||
8635 | "type": "git", | ||
8636 | "url": "https://github.com/true/php-punycode.git", | ||
8637 | "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" | ||
8638 | }, | ||
8639 | "dist": { | ||
8640 | "type": "zip", | ||
8641 | "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", | ||
8642 | "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", | ||
8643 | "shasum": "" | ||
8644 | }, | ||
8645 | "require": { | ||
8646 | "php": ">=5.3.0", | ||
8647 | "symfony/polyfill-mbstring": "^1.3" | ||
8648 | }, | ||
8649 | "require-dev": { | ||
8650 | "phpunit/phpunit": "~4.7", | ||
8651 | "squizlabs/php_codesniffer": "~2.0" | ||
8652 | }, | ||
8653 | "type": "library", | ||
8654 | "autoload": { | ||
8655 | "psr-4": { | ||
8656 | "TrueBV\\": "src/" | ||
8657 | } | ||
8658 | }, | ||
8659 | "notification-url": "https://packagist.org/downloads/", | ||
8660 | "license": [ | ||
8661 | "MIT" | ||
8662 | ], | ||
8663 | "authors": [ | ||
8664 | { | ||
8665 | "name": "Renan Gonçalves", | ||
8666 | "email": "renan.saddam@gmail.com" | ||
8667 | } | ||
8668 | ], | ||
8669 | "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", | ||
8670 | "homepage": "https://github.com/true/php-punycode", | ||
8671 | "keywords": [ | ||
8672 | "idna", | ||
8673 | "punycode" | ||
8674 | ], | ||
8675 | "time": "2016-11-16T10:37:54+00:00" | ||
8676 | }, | ||
8677 | { | ||
8678 | "name": "twig/extensions", | ||
8679 | "version": "v1.5.4", | ||
8680 | "source": { | ||
8681 | "type": "git", | ||
8682 | "url": "https://github.com/twigphp/Twig-extensions.git", | ||
8683 | "reference": "57873c8b0c1be51caa47df2cdb824490beb16202" | ||
8684 | }, | ||
8685 | "dist": { | ||
8686 | "type": "zip", | ||
8687 | "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202", | ||
8688 | "reference": "57873c8b0c1be51caa47df2cdb824490beb16202", | ||
8689 | "shasum": "" | ||
8690 | }, | ||
8691 | "require": { | ||
8692 | "twig/twig": "^1.27|^2.0" | ||
8693 | }, | ||
8694 | "require-dev": { | ||
8695 | "symfony/phpunit-bridge": "^3.4", | ||
8696 | "symfony/translation": "^2.7|^3.4" | ||
8697 | }, | ||
8698 | "suggest": { | ||
8699 | "symfony/translation": "Allow the time_diff output to be translated" | ||
8700 | }, | ||
8701 | "type": "library", | ||
8702 | "extra": { | ||
8703 | "branch-alias": { | ||
8704 | "dev-master": "1.5-dev" | ||
8705 | } | ||
8706 | }, | ||
8707 | "autoload": { | ||
8708 | "psr-0": { | ||
8709 | "Twig_Extensions_": "lib/" | ||
8710 | }, | ||
8711 | "psr-4": { | ||
8712 | "Twig\\Extensions\\": "src/" | ||
8713 | } | ||
8714 | }, | ||
8715 | "notification-url": "https://packagist.org/downloads/", | ||
8716 | "license": [ | ||
8717 | "MIT" | ||
8718 | ], | ||
8719 | "authors": [ | ||
8720 | { | ||
8721 | "name": "Fabien Potencier", | ||
8722 | "email": "fabien@symfony.com" | ||
8723 | } | ||
8724 | ], | ||
8725 | "description": "Common additional features for Twig that do not directly belong in core", | ||
8726 | "keywords": [ | ||
8727 | "i18n", | ||
8728 | "text" | ||
8729 | ], | ||
8730 | "time": "2018-12-05T18:34:18+00:00" | ||
8731 | }, | ||
8732 | { | ||
8733 | "name": "twig/twig", | ||
8734 | "version": "v1.42.1", | ||
8735 | "source": { | ||
8736 | "type": "git", | ||
8737 | "url": "https://github.com/twigphp/Twig.git", | ||
8738 | "reference": "671347603760a88b1e7288aaa9378f33687d7edf" | ||
8739 | }, | ||
8740 | "dist": { | ||
8741 | "type": "zip", | ||
8742 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/671347603760a88b1e7288aaa9378f33687d7edf", | ||
8743 | "reference": "671347603760a88b1e7288aaa9378f33687d7edf", | ||
8744 | "shasum": "" | ||
8745 | }, | ||
8746 | "require": { | ||
8747 | "php": ">=5.4.0", | ||
8748 | "symfony/polyfill-ctype": "^1.8" | ||
8749 | }, | ||
8750 | "require-dev": { | ||
8751 | "psr/container": "^1.0", | ||
8752 | "symfony/debug": "^2.7", | ||
8753 | "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0" | ||
8754 | }, | ||
8755 | "type": "library", | ||
8756 | "extra": { | ||
8757 | "branch-alias": { | ||
8758 | "dev-master": "1.42-dev" | ||
8759 | } | ||
8760 | }, | ||
8761 | "autoload": { | ||
8762 | "psr-0": { | ||
8763 | "Twig_": "lib/" | ||
8764 | }, | ||
8765 | "psr-4": { | ||
8766 | "Twig\\": "src/" | ||
8767 | } | ||
8768 | }, | ||
8769 | "notification-url": "https://packagist.org/downloads/", | ||
8770 | "license": [ | ||
8771 | "BSD-3-Clause" | ||
8772 | ], | ||
8773 | "authors": [ | ||
8774 | { | ||
8775 | "name": "Fabien Potencier", | ||
8776 | "email": "fabien@symfony.com", | ||
8777 | "homepage": "http://fabien.potencier.org", | ||
8778 | "role": "Lead Developer" | ||
8779 | }, | ||
8780 | { | ||
8781 | "name": "Armin Ronacher", | ||
8782 | "email": "armin.ronacher@active-4.com", | ||
8783 | "role": "Project Founder" | ||
8784 | }, | ||
8785 | { | ||
8786 | "name": "Twig Team", | ||
8787 | "homepage": "https://twig.symfony.com/contributors", | ||
8788 | "role": "Contributors" | ||
8789 | } | ||
8790 | ], | ||
8791 | "description": "Twig, the flexible, fast, and secure template language for PHP", | ||
8792 | "homepage": "https://twig.symfony.com", | ||
8793 | "keywords": [ | ||
8794 | "templating" | ||
8795 | ], | ||
8796 | "time": "2019-06-04T11:31:08+00:00" | ||
8797 | }, | ||
8798 | { | ||
8799 | "name": "wallabag/php-mobi", | ||
8800 | "version": "1.0.1", | ||
8801 | "source": { | ||
8802 | "type": "git", | ||
8803 | "url": "https://github.com/wallabag/php-mobi.git", | ||
8804 | "reference": "1cd7d022fe6be838535d6bba917d19cc48dcf487" | ||
8805 | }, | ||
8806 | "dist": { | ||
8807 | "type": "zip", | ||
8808 | "url": "https://api.github.com/repos/wallabag/php-mobi/zipball/1cd7d022fe6be838535d6bba917d19cc48dcf487", | ||
8809 | "reference": "1cd7d022fe6be838535d6bba917d19cc48dcf487", | ||
8810 | "shasum": "" | ||
8811 | }, | ||
8812 | "require": { | ||
8813 | "php": ">=5.3.0" | ||
8814 | }, | ||
8815 | "replace": { | ||
8816 | "wallabag/phpmobi": "*" | ||
8817 | }, | ||
8818 | "type": "library", | ||
8819 | "autoload": { | ||
8820 | "files": [ | ||
8821 | "MOBIClass/MOBI.php" | ||
8822 | ] | ||
8823 | }, | ||
8824 | "notification-url": "https://packagist.org/downloads/", | ||
8825 | "license": [ | ||
8826 | "Apache-2.0" | ||
8827 | ], | ||
8828 | "authors": [ | ||
8829 | { | ||
8830 | "name": "Nicolas Lœuillet", | ||
8831 | "email": "nicolas@loeuillet.org", | ||
8832 | "homepage": "http://www.cdetc.fr" | ||
8833 | }, | ||
8834 | { | ||
8835 | "name": "Sander Kromwijk", | ||
8836 | "email": "s.kromwijk@gmail.co", | ||
8837 | "role": "Original developer" | ||
8838 | } | ||
8839 | ], | ||
8840 | "description": "A Mobipocket file (.mobi) creator in PHP.", | ||
8841 | "homepage": "https://github.com/wallabag/phpMobi", | ||
8842 | "time": "2015-10-16T08:42:42+00:00" | ||
8843 | }, | ||
8844 | { | ||
8845 | "name": "wallabag/tcpdf", | ||
8846 | "version": "6.2.26", | ||
8847 | "source": { | ||
8848 | "type": "git", | ||
8849 | "url": "https://github.com/wallabag/TCPDF.git", | ||
8850 | "reference": "bf590f0604bcef1ae6fa3145649cf997f3564477" | ||
8851 | }, | ||
8852 | "dist": { | ||
8853 | "type": "zip", | ||
8854 | "url": "https://api.github.com/repos/wallabag/TCPDF/zipball/bf590f0604bcef1ae6fa3145649cf997f3564477", | ||
8855 | "reference": "bf590f0604bcef1ae6fa3145649cf997f3564477", | ||
8856 | "shasum": "" | ||
8857 | }, | ||
8858 | "require": { | ||
8859 | "php": ">=5.3.0" | ||
8860 | }, | ||
8861 | "replace": { | ||
8862 | "tecnickcom/tcpdf": "6.2.*" | ||
8863 | }, | ||
8864 | "type": "library", | ||
8865 | "autoload": { | ||
8866 | "classmap": [ | ||
8867 | "fonts", | ||
8868 | "config", | ||
8869 | "include", | ||
8870 | "tcpdf.php", | ||
8871 | "tcpdf_parser.php", | ||
8872 | "tcpdf_import.php", | ||
8873 | "tcpdf_barcodes_1d.php", | ||
8874 | "tcpdf_barcodes_2d.php", | ||
8875 | "include/tcpdf_colors.php", | ||
8876 | "include/tcpdf_filters.php", | ||
8877 | "include/tcpdf_font_data.php", | ||
8878 | "include/tcpdf_fonts.php", | ||
8879 | "include/tcpdf_images.php", | ||
8880 | "include/tcpdf_static.php", | ||
8881 | "include/barcodes/datamatrix.php", | ||
8882 | "include/barcodes/pdf417.php", | ||
8883 | "include/barcodes/qrcode.php" | ||
8884 | ] | ||
8885 | }, | ||
8886 | "notification-url": "https://packagist.org/downloads/", | ||
8887 | "license": [ | ||
8888 | "LGPL-3.0" | ||
8889 | ], | ||
8890 | "authors": [ | ||
8891 | { | ||
8892 | "name": "Nicola Asuni", | ||
8893 | "email": "info@tecnick.com", | ||
8894 | "homepage": "http://nicolaasuni.tecnick.com", | ||
8895 | "role": "Main developer" | ||
8896 | }, | ||
8897 | { | ||
8898 | "name": "wallabag/core", | ||
8899 | "homepage": "https://www.wallabag.org", | ||
8900 | "role": "Developers" | ||
8901 | } | ||
8902 | ], | ||
8903 | "description": "Keeping a working 6.2.x TCPDF version.", | ||
8904 | "homepage": "https://www.wallabag.org/", | ||
8905 | "keywords": [ | ||
8906 | "PDFD32000-2008", | ||
8907 | "TCPDF", | ||
8908 | "barcodes", | ||
8909 | "datamatrix", | ||
8910 | "pdf", | ||
8911 | "pdf417", | ||
8912 | "qrcode" | ||
8913 | ], | ||
8914 | "time": "2018-10-25T06:56:14+00:00" | ||
8915 | }, | ||
8916 | { | ||
8917 | "name": "white-october/pagerfanta-bundle", | ||
8918 | "version": "v1.2.4", | ||
8919 | "source": { | ||
8920 | "type": "git", | ||
8921 | "url": "https://github.com/whiteoctober/WhiteOctoberPagerfantaBundle.git", | ||
8922 | "reference": "19bf14bf8c72e4205c9ca97028436701fe3991a6" | ||
8923 | }, | ||
8924 | "dist": { | ||
8925 | "type": "zip", | ||
8926 | "url": "https://api.github.com/repos/whiteoctober/WhiteOctoberPagerfantaBundle/zipball/19bf14bf8c72e4205c9ca97028436701fe3991a6", | ||
8927 | "reference": "19bf14bf8c72e4205c9ca97028436701fe3991a6", | ||
8928 | "shasum": "" | ||
8929 | }, | ||
8930 | "require": { | ||
8931 | "pagerfanta/pagerfanta": "^1.1.0|^2.0.0", | ||
8932 | "php": ">=5.3", | ||
8933 | "symfony/framework-bundle": "~2.3|~3.0|~4.0", | ||
8934 | "symfony/property-access": "~2.3|~3.0|~4.0", | ||
8935 | "symfony/translation": "~2.3|~3.0|~4.0", | ||
8936 | "symfony/twig-bundle": "~2.3|~3.0|~4.0" | ||
8937 | }, | ||
8938 | "require-dev": { | ||
8939 | "phpunit/phpunit": "~3.7|~4.0|^5.0", | ||
8940 | "symfony/symfony": "~2.3|~3.0|~4.0" | ||
8941 | }, | ||
8942 | "type": "symfony-bundle", | ||
8943 | "extra": { | ||
8944 | "branch-alias": { | ||
8945 | "dev-master": "1.0.x-dev" | ||
8946 | } | ||
8947 | }, | ||
8948 | "autoload": { | ||
8949 | "psr-4": { | ||
8950 | "WhiteOctober\\PagerfantaBundle\\": "" | ||
8951 | }, | ||
8952 | "exclude-from-classmap": [ | ||
8953 | "Tests/", | ||
8954 | "TestsProject/" | ||
8955 | ] | ||
8956 | }, | ||
8957 | "notification-url": "https://packagist.org/downloads/", | ||
8958 | "license": [ | ||
8959 | "MIT" | ||
8960 | ], | ||
8961 | "authors": [ | ||
8962 | { | ||
8963 | "name": "Pablo Díez", | ||
8964 | "email": "pablodip@gmail.com" | ||
8965 | } | ||
8966 | ], | ||
8967 | "description": "Bundle to use Pagerfanta with Symfony2", | ||
8968 | "keywords": [ | ||
8969 | "page", | ||
8970 | "paging" | ||
8971 | ], | ||
8972 | "time": "2019-02-14T08:42:52+00:00" | ||
8973 | }, | ||
8974 | { | ||
8975 | "name": "willdurand/hateoas", | ||
8976 | "version": "2.12.0", | ||
8977 | "source": { | ||
8978 | "type": "git", | ||
8979 | "url": "https://github.com/willdurand/Hateoas.git", | ||
8980 | "reference": "71b1af62b398dc9a870ac0b16c84bdc23a76a5c5" | ||
8981 | }, | ||
8982 | "dist": { | ||
8983 | "type": "zip", | ||
8984 | "url": "https://api.github.com/repos/willdurand/Hateoas/zipball/71b1af62b398dc9a870ac0b16c84bdc23a76a5c5", | ||
8985 | "reference": "71b1af62b398dc9a870ac0b16c84bdc23a76a5c5", | ||
8986 | "shasum": "" | ||
8987 | }, | ||
8988 | "require": { | ||
8989 | "doctrine/annotations": "~1.0", | ||
8990 | "doctrine/common": "~2.0", | ||
8991 | "jms/metadata": "~1.1", | ||
8992 | "jms/serializer": "^1.7", | ||
8993 | "php": "^5.5|^7.0", | ||
8994 | "phpoption/phpoption": ">=1.1.0,<2.0-dev", | ||
8995 | "symfony/expression-language": "~2.4 || ~3.0 || ~4.0" | ||
8996 | }, | ||
8997 | "require-dev": { | ||
8998 | "pagerfanta/pagerfanta": "~1.0", | ||
8999 | "phpunit/phpunit": "~5", | ||
9000 | "symfony/dependency-injection": "~2.4 || ~3.0 || ~4.0", | ||
9001 | "symfony/routing": "~2.4 || ~3.0 || ~4.0", | ||
9002 | "symfony/yaml": "~2.4 || ~3.0 || ~4.0", | ||
9003 | "twig/twig": "~1.12" | ||
9004 | }, | ||
9005 | "suggest": { | ||
9006 | "symfony/routing": "To use the SymfonyRouteFactory.", | ||
9007 | "symfony/yaml": "To use yaml based configuration.", | ||
9008 | "twig/twig": "To use the Twig extensions." | ||
9009 | }, | ||
9010 | "type": "library", | ||
9011 | "extra": { | ||
9012 | "branch-alias": { | ||
9013 | "dev-master": "2.12-dev" | ||
9014 | } | ||
9015 | }, | ||
9016 | "autoload": { | ||
9017 | "psr-0": { | ||
9018 | "Hateoas": "src/" | ||
9019 | } | ||
9020 | }, | ||
9021 | "notification-url": "https://packagist.org/downloads/", | ||
9022 | "license": [ | ||
9023 | "MIT" | ||
9024 | ], | ||
9025 | "authors": [ | ||
9026 | { | ||
9027 | "name": "Adrien Brault", | ||
9028 | "email": "adrien.brault@gmail.com" | ||
9029 | }, | ||
9030 | { | ||
9031 | "name": "William Durand", | ||
9032 | "email": "william.durand1@gmail.com" | ||
9033 | } | ||
9034 | ], | ||
9035 | "description": "A PHP library to support implementing representations for HATEOAS REST web services", | ||
9036 | "time": "2018-02-23T17:05:31+00:00" | ||
9037 | }, | ||
9038 | { | ||
9039 | "name": "willdurand/hateoas-bundle", | ||
9040 | "version": "1.4.0", | ||
9041 | "source": { | ||
9042 | "type": "git", | ||
9043 | "url": "https://github.com/willdurand/BazingaHateoasBundle.git", | ||
9044 | "reference": "d1f915fd4f8a7cd43a88a0ce97ffb28abe3a94fa" | ||
9045 | }, | ||
9046 | "dist": { | ||
9047 | "type": "zip", | ||
9048 | "url": "https://api.github.com/repos/willdurand/BazingaHateoasBundle/zipball/d1f915fd4f8a7cd43a88a0ce97ffb28abe3a94fa", | ||
9049 | "reference": "d1f915fd4f8a7cd43a88a0ce97ffb28abe3a94fa", | ||
9050 | "shasum": "" | ||
9051 | }, | ||
9052 | "require": { | ||
9053 | "jms/serializer-bundle": "~1.0 || ^2.0", | ||
9054 | "php": ">5.4 |^7.0", | ||
9055 | "symfony/framework-bundle": "~2.3 || ~3.0 || ~4.0", | ||
9056 | "willdurand/hateoas": "^2.10.0" | ||
9057 | }, | ||
9058 | "require-dev": { | ||
9059 | "phpunit/phpunit": "~4.5 || ~5.0", | ||
9060 | "symfony/expression-language": "~2.4 || ~3.0 || ~4.0", | ||
9061 | "symfony/stopwatch": "~2.4 || ~3.0 || ~4.0", | ||
9062 | "twig/twig": "~1.12" | ||
9063 | }, | ||
9064 | "type": "symfony-bundle", | ||
9065 | "extra": { | ||
9066 | "branch-alias": { | ||
9067 | "dev-master": "1.4-dev" | ||
9068 | } | ||
9069 | }, | ||
9070 | "autoload": { | ||
9071 | "psr-4": { | ||
9072 | "Bazinga\\Bundle\\HateoasBundle\\": "" | ||
9073 | } | ||
9074 | }, | ||
9075 | "notification-url": "https://packagist.org/downloads/", | ||
9076 | "license": [ | ||
9077 | "MIT" | ||
9078 | ], | ||
9079 | "authors": [ | ||
9080 | { | ||
9081 | "name": "William Durand", | ||
9082 | "email": "william.durand1@gmail.com" | ||
9083 | } | ||
9084 | ], | ||
9085 | "description": "Integration of Hateoas into Symfony2.", | ||
9086 | "keywords": [ | ||
9087 | "HATEOAS", | ||
9088 | "rest" | ||
9089 | ], | ||
9090 | "time": "2018-01-27T13:03:07+00:00" | ||
9091 | }, | ||
9092 | { | ||
9093 | "name": "willdurand/jsonp-callback-validator", | ||
9094 | "version": "v1.1.0", | ||
9095 | "source": { | ||
9096 | "type": "git", | ||
9097 | "url": "https://github.com/willdurand/JsonpCallbackValidator.git", | ||
9098 | "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909" | ||
9099 | }, | ||
9100 | "dist": { | ||
9101 | "type": "zip", | ||
9102 | "url": "https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909", | ||
9103 | "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909", | ||
9104 | "shasum": "" | ||
9105 | }, | ||
9106 | "require": { | ||
9107 | "php": ">=5.3.0" | ||
9108 | }, | ||
9109 | "require-dev": { | ||
9110 | "phpunit/phpunit": "~3.7" | ||
9111 | }, | ||
9112 | "type": "library", | ||
9113 | "autoload": { | ||
9114 | "psr-0": { | ||
9115 | "JsonpCallbackValidator": "src/" | ||
9116 | } | ||
9117 | }, | ||
9118 | "notification-url": "https://packagist.org/downloads/", | ||
9119 | "license": [ | ||
9120 | "MIT" | ||
9121 | ], | ||
9122 | "authors": [ | ||
9123 | { | ||
9124 | "name": "William Durand", | ||
9125 | "email": "william.durand1@gmail.com", | ||
9126 | "homepage": "http://www.willdurand.fr" | ||
9127 | } | ||
9128 | ], | ||
9129 | "description": "JSONP callback validator.", | ||
9130 | "time": "2014-01-20T22:35:06+00:00" | ||
9131 | }, | ||
9132 | { | ||
9133 | "name": "willdurand/negotiation", | ||
9134 | "version": "v2.3.1", | ||
9135 | "source": { | ||
9136 | "type": "git", | ||
9137 | "url": "https://github.com/willdurand/Negotiation.git", | ||
9138 | "reference": "03436ededa67c6e83b9b12defac15384cb399dc9" | ||
9139 | }, | ||
9140 | "dist": { | ||
9141 | "type": "zip", | ||
9142 | "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/03436ededa67c6e83b9b12defac15384cb399dc9", | ||
9143 | "reference": "03436ededa67c6e83b9b12defac15384cb399dc9", | ||
9144 | "shasum": "" | ||
9145 | }, | ||
9146 | "require": { | ||
9147 | "php": ">=5.4.0" | ||
9148 | }, | ||
9149 | "require-dev": { | ||
9150 | "phpunit/phpunit": "~4.5" | ||
9151 | }, | ||
9152 | "type": "library", | ||
9153 | "extra": { | ||
9154 | "branch-alias": { | ||
9155 | "dev-master": "2.3-dev" | ||
9156 | } | ||
9157 | }, | ||
9158 | "autoload": { | ||
9159 | "psr-4": { | ||
9160 | "Negotiation\\": "src/Negotiation" | ||
9161 | } | ||
9162 | }, | ||
9163 | "notification-url": "https://packagist.org/downloads/", | ||
9164 | "license": [ | ||
9165 | "MIT" | ||
9166 | ], | ||
9167 | "authors": [ | ||
9168 | { | ||
9169 | "name": "William Durand", | ||
9170 | "email": "will+git@drnd.me" | ||
9171 | } | ||
9172 | ], | ||
9173 | "description": "Content Negotiation tools for PHP provided as a standalone library.", | ||
9174 | "homepage": "http://williamdurand.fr/Negotiation/", | ||
9175 | "keywords": [ | ||
9176 | "accept", | ||
9177 | "content", | ||
9178 | "format", | ||
9179 | "header", | ||
9180 | "negotiation" | ||
9181 | ], | ||
9182 | "time": "2017-05-14T17:21:12+00:00" | ||
9183 | }, | ||
9184 | { | ||
9185 | "name": "zendframework/zend-code", | ||
9186 | "version": "3.3.1", | ||
9187 | "source": { | ||
9188 | "type": "git", | ||
9189 | "url": "https://github.com/zendframework/zend-code.git", | ||
9190 | "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb" | ||
9191 | }, | ||
9192 | "dist": { | ||
9193 | "type": "zip", | ||
9194 | "url": "https://api.github.com/repos/zendframework/zend-code/zipball/c21db169075c6ec4b342149f446e7b7b724f95eb", | ||
9195 | "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb", | ||
9196 | "shasum": "" | ||
9197 | }, | ||
9198 | "require": { | ||
9199 | "php": "^7.1", | ||
9200 | "zendframework/zend-eventmanager": "^2.6 || ^3.0" | ||
9201 | }, | ||
9202 | "require-dev": { | ||
9203 | "doctrine/annotations": "~1.0", | ||
9204 | "ext-phar": "*", | ||
9205 | "phpunit/phpunit": "^6.2.3", | ||
9206 | "zendframework/zend-coding-standard": "^1.0.0", | ||
9207 | "zendframework/zend-stdlib": "^2.7 || ^3.0" | ||
9208 | }, | ||
9209 | "suggest": { | ||
9210 | "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", | ||
9211 | "zendframework/zend-stdlib": "Zend\\Stdlib component" | ||
9212 | }, | ||
9213 | "type": "library", | ||
9214 | "extra": { | ||
9215 | "branch-alias": { | ||
9216 | "dev-master": "3.3.x-dev", | ||
9217 | "dev-develop": "3.4.x-dev" | ||
9218 | } | ||
9219 | }, | ||
9220 | "autoload": { | ||
9221 | "psr-4": { | ||
9222 | "Zend\\Code\\": "src/" | ||
9223 | } | ||
9224 | }, | ||
9225 | "notification-url": "https://packagist.org/downloads/", | ||
9226 | "license": [ | ||
9227 | "BSD-3-Clause" | ||
9228 | ], | ||
9229 | "description": "provides facilities to generate arbitrary code using an object oriented interface", | ||
9230 | "homepage": "https://github.com/zendframework/zend-code", | ||
9231 | "keywords": [ | ||
9232 | "code", | ||
9233 | "zf2" | ||
9234 | ], | ||
9235 | "time": "2018-08-13T20:36:59+00:00" | ||
9236 | }, | ||
9237 | { | ||
9238 | "name": "zendframework/zend-diactoros", | ||
9239 | "version": "2.1.2", | ||
9240 | "source": { | ||
9241 | "type": "git", | ||
9242 | "url": "https://github.com/zendframework/zend-diactoros.git", | ||
9243 | "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1" | ||
9244 | }, | ||
9245 | "dist": { | ||
9246 | "type": "zip", | ||
9247 | "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/37bf68b428850ee26ed7c3be6c26236dd95a95f1", | ||
9248 | "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1", | ||
9249 | "shasum": "" | ||
9250 | }, | ||
9251 | "require": { | ||
9252 | "php": "^7.1", | ||
9253 | "psr/http-factory": "^1.0", | ||
9254 | "psr/http-message": "^1.0" | ||
9255 | }, | ||
9256 | "provide": { | ||
9257 | "psr/http-factory-implementation": "1.0", | ||
9258 | "psr/http-message-implementation": "1.0" | ||
9259 | }, | ||
9260 | "require-dev": { | ||
9261 | "ext-dom": "*", | ||
9262 | "ext-libxml": "*", | ||
9263 | "http-interop/http-factory-tests": "^0.5.0", | ||
9264 | "php-http/psr7-integration-tests": "dev-master", | ||
9265 | "phpunit/phpunit": "^7.0.2", | ||
9266 | "zendframework/zend-coding-standard": "~1.0.0" | ||
9267 | }, | ||
9268 | "type": "library", | ||
9269 | "extra": { | ||
9270 | "branch-alias": { | ||
9271 | "dev-master": "2.1.x-dev", | ||
9272 | "dev-develop": "2.2.x-dev", | ||
9273 | "dev-release-1.8": "1.8.x-dev" | ||
9274 | } | ||
9275 | }, | ||
9276 | "autoload": { | ||
9277 | "files": [ | ||
9278 | "src/functions/create_uploaded_file.php", | ||
9279 | "src/functions/marshal_headers_from_sapi.php", | ||
9280 | "src/functions/marshal_method_from_sapi.php", | ||
9281 | "src/functions/marshal_protocol_version_from_sapi.php", | ||
9282 | "src/functions/marshal_uri_from_sapi.php", | ||
9283 | "src/functions/normalize_server.php", | ||
9284 | "src/functions/normalize_uploaded_files.php", | ||
9285 | "src/functions/parse_cookie_header.php" | ||
9286 | ], | ||
9287 | "psr-4": { | ||
9288 | "Zend\\Diactoros\\": "src/" | ||
9289 | } | ||
9290 | }, | ||
9291 | "notification-url": "https://packagist.org/downloads/", | ||
9292 | "license": [ | ||
9293 | "BSD-3-Clause" | ||
9294 | ], | ||
9295 | "description": "PSR HTTP Message implementations", | ||
9296 | "keywords": [ | ||
9297 | "http", | ||
9298 | "psr", | ||
9299 | "psr-7" | ||
9300 | ], | ||
9301 | "time": "2019-04-29T21:11:00+00:00" | ||
9302 | }, | ||
9303 | { | ||
9304 | "name": "zendframework/zend-eventmanager", | ||
9305 | "version": "3.2.1", | ||
9306 | "source": { | ||
9307 | "type": "git", | ||
9308 | "url": "https://github.com/zendframework/zend-eventmanager.git", | ||
9309 | "reference": "a5e2583a211f73604691586b8406ff7296a946dd" | ||
9310 | }, | ||
9311 | "dist": { | ||
9312 | "type": "zip", | ||
9313 | "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", | ||
9314 | "reference": "a5e2583a211f73604691586b8406ff7296a946dd", | ||
9315 | "shasum": "" | ||
9316 | }, | ||
9317 | "require": { | ||
9318 | "php": "^5.6 || ^7.0" | ||
9319 | }, | ||
9320 | "require-dev": { | ||
9321 | "athletic/athletic": "^0.1", | ||
9322 | "container-interop/container-interop": "^1.1.0", | ||
9323 | "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", | ||
9324 | "zendframework/zend-coding-standard": "~1.0.0", | ||
9325 | "zendframework/zend-stdlib": "^2.7.3 || ^3.0" | ||
9326 | }, | ||
9327 | "suggest": { | ||
9328 | "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", | ||
9329 | "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" | ||
9330 | }, | ||
9331 | "type": "library", | ||
9332 | "extra": { | ||
9333 | "branch-alias": { | ||
9334 | "dev-master": "3.2-dev", | ||
9335 | "dev-develop": "3.3-dev" | ||
9336 | } | ||
9337 | }, | ||
9338 | "autoload": { | ||
9339 | "psr-4": { | ||
9340 | "Zend\\EventManager\\": "src/" | ||
9341 | } | ||
9342 | }, | ||
9343 | "notification-url": "https://packagist.org/downloads/", | ||
9344 | "license": [ | ||
9345 | "BSD-3-Clause" | ||
9346 | ], | ||
9347 | "description": "Trigger and listen to events within a PHP application", | ||
9348 | "homepage": "https://github.com/zendframework/zend-eventmanager", | ||
9349 | "keywords": [ | ||
9350 | "event", | ||
9351 | "eventmanager", | ||
9352 | "events", | ||
9353 | "zf2" | ||
9354 | ], | ||
9355 | "time": "2018-04-25T15:33:34+00:00" | ||
9356 | } | ||
9357 | ], | ||
9358 | "packages-dev": [ | ||
9359 | { | ||
9360 | "name": "composer/semver", | ||
9361 | "version": "1.5.0", | ||
9362 | "source": { | ||
9363 | "type": "git", | ||
9364 | "url": "https://github.com/composer/semver.git", | ||
9365 | "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" | ||
9366 | }, | ||
9367 | "dist": { | ||
9368 | "type": "zip", | ||
9369 | "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", | ||
9370 | "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", | ||
9371 | "shasum": "" | ||
9372 | }, | ||
9373 | "require": { | ||
9374 | "php": "^5.3.2 || ^7.0" | ||
9375 | }, | ||
9376 | "require-dev": { | ||
9377 | "phpunit/phpunit": "^4.5 || ^5.0.5", | ||
9378 | "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" | ||
9379 | }, | ||
9380 | "type": "library", | ||
9381 | "extra": { | ||
9382 | "branch-alias": { | ||
9383 | "dev-master": "1.x-dev" | ||
9384 | } | ||
9385 | }, | ||
9386 | "autoload": { | ||
9387 | "psr-4": { | ||
9388 | "Composer\\Semver\\": "src" | ||
9389 | } | ||
9390 | }, | ||
9391 | "notification-url": "https://packagist.org/downloads/", | ||
9392 | "license": [ | ||
9393 | "MIT" | ||
9394 | ], | ||
9395 | "authors": [ | ||
9396 | { | ||
9397 | "name": "Nils Adermann", | ||
9398 | "email": "naderman@naderman.de", | ||
9399 | "homepage": "http://www.naderman.de" | ||
9400 | }, | ||
9401 | { | ||
9402 | "name": "Jordi Boggiano", | ||
9403 | "email": "j.boggiano@seld.be", | ||
9404 | "homepage": "http://seld.be" | ||
9405 | }, | ||
9406 | { | ||
9407 | "name": "Rob Bast", | ||
9408 | "email": "rob.bast@gmail.com", | ||
9409 | "homepage": "http://robbast.nl" | ||
9410 | } | ||
9411 | ], | ||
9412 | "description": "Semver library that offers utilities, version constraint parsing and validation.", | ||
9413 | "keywords": [ | ||
9414 | "semantic", | ||
9415 | "semver", | ||
9416 | "validation", | ||
9417 | "versioning" | ||
9418 | ], | ||
9419 | "time": "2019-03-19T17:25:45+00:00" | ||
9420 | }, | ||
9421 | { | ||
9422 | "name": "composer/xdebug-handler", | ||
9423 | "version": "1.3.3", | ||
9424 | "source": { | ||
9425 | "type": "git", | ||
9426 | "url": "https://github.com/composer/xdebug-handler.git", | ||
9427 | "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" | ||
9428 | }, | ||
9429 | "dist": { | ||
9430 | "type": "zip", | ||
9431 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", | ||
9432 | "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", | ||
9433 | "shasum": "" | ||
9434 | }, | ||
9435 | "require": { | ||
9436 | "php": "^5.3.2 || ^7.0", | ||
9437 | "psr/log": "^1.0" | ||
9438 | }, | ||
9439 | "require-dev": { | ||
9440 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" | ||
9441 | }, | ||
9442 | "type": "library", | ||
9443 | "autoload": { | ||
9444 | "psr-4": { | ||
9445 | "Composer\\XdebugHandler\\": "src" | ||
9446 | } | ||
9447 | }, | ||
9448 | "notification-url": "https://packagist.org/downloads/", | ||
9449 | "license": [ | ||
9450 | "MIT" | ||
9451 | ], | ||
9452 | "authors": [ | ||
9453 | { | ||
9454 | "name": "John Stevenson", | ||
9455 | "email": "john-stevenson@blueyonder.co.uk" | ||
9456 | } | ||
9457 | ], | ||
9458 | "description": "Restarts a process without xdebug.", | ||
9459 | "keywords": [ | ||
9460 | "Xdebug", | ||
9461 | "performance" | ||
9462 | ], | ||
9463 | "time": "2019-05-27T17:52:04+00:00" | ||
9464 | }, | ||
9465 | { | ||
9466 | "name": "dama/doctrine-test-bundle", | ||
9467 | "version": "v5.0.3", | ||
9468 | "source": { | ||
9469 | "type": "git", | ||
9470 | "url": "https://github.com/dmaicher/doctrine-test-bundle.git", | ||
9471 | "reference": "29882b0d1a815f4819126ef714931bb24a31cbaa" | ||
9472 | }, | ||
9473 | "dist": { | ||
9474 | "type": "zip", | ||
9475 | "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/29882b0d1a815f4819126ef714931bb24a31cbaa", | ||
9476 | "reference": "29882b0d1a815f4819126ef714931bb24a31cbaa", | ||
9477 | "shasum": "" | ||
9478 | }, | ||
9479 | "require": { | ||
9480 | "doctrine/dbal": "~2.5", | ||
9481 | "doctrine/doctrine-bundle": "~1.4", | ||
9482 | "php": "^7.1", | ||
9483 | "symfony/framework-bundle": "~2.7|~3.0|~4.0" | ||
9484 | }, | ||
9485 | "require-dev": { | ||
9486 | "phpunit/phpunit": "~6.0|~7.0|~8.0", | ||
9487 | "symfony/phpunit-bridge": "~2.8|~3.0|~4.0", | ||
9488 | "symfony/yaml": "~2.8|~3.0|~4.0" | ||
9489 | }, | ||
9490 | "type": "symfony-bundle", | ||
9491 | "extra": { | ||
9492 | "branch-alias": { | ||
9493 | "dev-master": "5.1.x-dev" | ||
9494 | } | ||
9495 | }, | ||
9496 | "autoload": { | ||
9497 | "psr-4": { | ||
9498 | "DAMA\\DoctrineTestBundle\\": "src/DAMA/DoctrineTestBundle" | ||
9499 | } | ||
9500 | }, | ||
9501 | "notification-url": "https://packagist.org/downloads/", | ||
9502 | "license": [ | ||
9503 | "MIT" | ||
9504 | ], | ||
9505 | "authors": [ | ||
9506 | { | ||
9507 | "name": "David Maicher", | ||
9508 | "email": "mail@dmaicher.de" | ||
9509 | } | ||
9510 | ], | ||
9511 | "description": "Symfony bundle to isolate doctrine database tests and improve test performance", | ||
9512 | "keywords": [ | ||
9513 | "Symfony 3", | ||
9514 | "Symfony 4", | ||
9515 | "doctrine", | ||
9516 | "isolation", | ||
9517 | "performance", | ||
9518 | "symfony", | ||
9519 | "symfony 2", | ||
9520 | "tests" | ||
9521 | ], | ||
9522 | "time": "2019-03-22T10:34:17+00:00" | ||
9523 | }, | ||
9524 | { | ||
9525 | "name": "doctrine/data-fixtures", | ||
9526 | "version": "v1.3.1", | ||
9527 | "source": { | ||
9528 | "type": "git", | ||
9529 | "url": "https://github.com/doctrine/data-fixtures.git", | ||
9530 | "reference": "3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a" | ||
9531 | }, | ||
9532 | "dist": { | ||
9533 | "type": "zip", | ||
9534 | "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a", | ||
9535 | "reference": "3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a", | ||
9536 | "shasum": "" | ||
9537 | }, | ||
9538 | "require": { | ||
9539 | "doctrine/common": "~2.2", | ||
9540 | "php": "^7.1" | ||
9541 | }, | ||
9542 | "conflict": { | ||
9543 | "doctrine/phpcr-odm": "<1.3.0" | ||
9544 | }, | ||
9545 | "require-dev": { | ||
9546 | "doctrine/dbal": "^2.5.4", | ||
9547 | "doctrine/orm": "^2.5.4", | ||
9548 | "phpunit/phpunit": "^7.0" | ||
9549 | }, | ||
9550 | "suggest": { | ||
9551 | "alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7", | ||
9552 | "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", | ||
9553 | "doctrine/orm": "For loading ORM fixtures", | ||
9554 | "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" | ||
9555 | }, | ||
9556 | "type": "library", | ||
9557 | "extra": { | ||
9558 | "branch-alias": { | ||
9559 | "dev-master": "1.3.x-dev" | ||
9560 | } | ||
9561 | }, | ||
9562 | "autoload": { | ||
9563 | "psr-4": { | ||
9564 | "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" | ||
9565 | } | ||
9566 | }, | ||
9567 | "notification-url": "https://packagist.org/downloads/", | ||
9568 | "license": [ | ||
9569 | "MIT" | ||
9570 | ], | ||
9571 | "authors": [ | ||
9572 | { | ||
9573 | "name": "Jonathan Wage", | ||
9574 | "email": "jonwage@gmail.com" | ||
9575 | } | ||
9576 | ], | ||
9577 | "description": "Data Fixtures for all Doctrine Object Managers", | ||
9578 | "homepage": "http://www.doctrine-project.org", | ||
9579 | "keywords": [ | ||
9580 | "database" | ||
9581 | ], | ||
9582 | "time": "2018-03-20T09:06:36+00:00" | ||
9583 | }, | ||
9584 | { | ||
9585 | "name": "doctrine/doctrine-fixtures-bundle", | ||
9586 | "version": "3.1.0", | ||
9587 | "source": { | ||
9588 | "type": "git", | ||
9589 | "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", | ||
9590 | "reference": "f016565b251c2dfa32a8d6da44d1650dc9ec1498" | ||
9591 | }, | ||
9592 | "dist": { | ||
9593 | "type": "zip", | ||
9594 | "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/f016565b251c2dfa32a8d6da44d1650dc9ec1498", | ||
9595 | "reference": "f016565b251c2dfa32a8d6da44d1650dc9ec1498", | ||
9596 | "shasum": "" | ||
9597 | }, | ||
9598 | "require": { | ||
9599 | "doctrine/data-fixtures": "^1.3", | ||
9600 | "doctrine/doctrine-bundle": "^1.6", | ||
9601 | "php": "^7.1", | ||
9602 | "symfony/doctrine-bridge": "~3.4|^4.1", | ||
9603 | "symfony/framework-bundle": "^3.4|^4.1" | ||
9604 | }, | ||
9605 | "require-dev": { | ||
9606 | "doctrine/coding-standard": "^5.0", | ||
9607 | "phpunit/phpunit": "^7.4", | ||
9608 | "symfony/phpunit-bridge": "^4.1" | ||
9609 | }, | ||
9610 | "type": "symfony-bundle", | ||
9611 | "extra": { | ||
9612 | "branch-alias": { | ||
9613 | "dev-master": "3.1.x-dev" | ||
9614 | } | ||
9615 | }, | ||
9616 | "autoload": { | ||
9617 | "psr-4": { | ||
9618 | "Doctrine\\Bundle\\FixturesBundle\\": "" | ||
9619 | } | ||
9620 | }, | ||
9621 | "notification-url": "https://packagist.org/downloads/", | ||
9622 | "license": [ | ||
9623 | "MIT" | ||
9624 | ], | ||
9625 | "authors": [ | ||
9626 | { | ||
9627 | "name": "Symfony Community", | ||
9628 | "homepage": "http://symfony.com/contributors" | ||
9629 | }, | ||
9630 | { | ||
9631 | "name": "Doctrine Project", | ||
9632 | "homepage": "http://www.doctrine-project.org" | ||
9633 | }, | ||
9634 | { | ||
9635 | "name": "Fabien Potencier", | ||
9636 | "email": "fabien@symfony.com" | ||
9637 | } | ||
9638 | ], | ||
9639 | "description": "Symfony DoctrineFixturesBundle", | ||
9640 | "homepage": "http://www.doctrine-project.org", | ||
9641 | "keywords": [ | ||
9642 | "Fixture", | ||
9643 | "persistence" | ||
9644 | ], | ||
9645 | "time": "2018-12-21T10:10:51+00:00" | ||
9646 | }, | ||
9647 | { | ||
9648 | "name": "friendsofphp/php-cs-fixer", | ||
9649 | "version": "v2.15.1", | ||
9650 | "source": { | ||
9651 | "type": "git", | ||
9652 | "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", | ||
9653 | "reference": "20064511ab796593a3990669eff5f5b535001f7c" | ||
9654 | }, | ||
9655 | "dist": { | ||
9656 | "type": "zip", | ||
9657 | "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/20064511ab796593a3990669eff5f5b535001f7c", | ||
9658 | "reference": "20064511ab796593a3990669eff5f5b535001f7c", | ||
9659 | "shasum": "" | ||
9660 | }, | ||
9661 | "require": { | ||
9662 | "composer/semver": "^1.4", | ||
9663 | "composer/xdebug-handler": "^1.2", | ||
9664 | "doctrine/annotations": "^1.2", | ||
9665 | "ext-json": "*", | ||
9666 | "ext-tokenizer": "*", | ||
9667 | "php": "^5.6 || ^7.0", | ||
9668 | "php-cs-fixer/diff": "^1.3", | ||
9669 | "symfony/console": "^3.4.17 || ^4.1.6", | ||
9670 | "symfony/event-dispatcher": "^3.0 || ^4.0", | ||
9671 | "symfony/filesystem": "^3.0 || ^4.0", | ||
9672 | "symfony/finder": "^3.0 || ^4.0", | ||
9673 | "symfony/options-resolver": "^3.0 || ^4.0", | ||
9674 | "symfony/polyfill-php70": "^1.0", | ||
9675 | "symfony/polyfill-php72": "^1.4", | ||
9676 | "symfony/process": "^3.0 || ^4.0", | ||
9677 | "symfony/stopwatch": "^3.0 || ^4.0" | ||
9678 | }, | ||
9679 | "require-dev": { | ||
9680 | "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", | ||
9681 | "justinrainbow/json-schema": "^5.0", | ||
9682 | "keradus/cli-executor": "^1.2", | ||
9683 | "mikey179/vfsstream": "^1.6", | ||
9684 | "php-coveralls/php-coveralls": "^2.1", | ||
9685 | "php-cs-fixer/accessible-object": "^1.0", | ||
9686 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1", | ||
9687 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1", | ||
9688 | "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", | ||
9689 | "phpunitgoodpractices/traits": "^1.8", | ||
9690 | "symfony/phpunit-bridge": "^4.3" | ||
9691 | }, | ||
9692 | "suggest": { | ||
9693 | "ext-mbstring": "For handling non-UTF8 characters in cache signature.", | ||
9694 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", | ||
9695 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", | ||
9696 | "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." | ||
9697 | }, | ||
9698 | "bin": [ | ||
9699 | "php-cs-fixer" | ||
9700 | ], | ||
9701 | "type": "application", | ||
9702 | "autoload": { | ||
9703 | "psr-4": { | ||
9704 | "PhpCsFixer\\": "src/" | ||
9705 | }, | ||
9706 | "classmap": [ | ||
9707 | "tests/Test/AbstractFixerTestCase.php", | ||
9708 | "tests/Test/AbstractIntegrationCaseFactory.php", | ||
9709 | "tests/Test/AbstractIntegrationTestCase.php", | ||
9710 | "tests/Test/Assert/AssertTokensTrait.php", | ||
9711 | "tests/Test/IntegrationCase.php", | ||
9712 | "tests/Test/IntegrationCaseFactory.php", | ||
9713 | "tests/Test/IntegrationCaseFactoryInterface.php", | ||
9714 | "tests/Test/InternalIntegrationCaseFactory.php", | ||
9715 | "tests/TestCase.php" | ||
9716 | ] | ||
9717 | }, | ||
9718 | "notification-url": "https://packagist.org/downloads/", | ||
9719 | "license": [ | ||
9720 | "MIT" | ||
9721 | ], | ||
9722 | "authors": [ | ||
9723 | { | ||
9724 | "name": "Dariusz Rumiński", | ||
9725 | "email": "dariusz.ruminski@gmail.com" | ||
9726 | }, | ||
9727 | { | ||
9728 | "name": "Fabien Potencier", | ||
9729 | "email": "fabien@symfony.com" | ||
9730 | } | ||
9731 | ], | ||
9732 | "description": "A tool to automatically fix PHP code style", | ||
9733 | "time": "2019-06-01T10:32:12+00:00" | ||
9734 | }, | ||
9735 | { | ||
9736 | "name": "m6web/redis-mock", | ||
9737 | "version": "v4.3.0", | ||
9738 | "source": { | ||
9739 | "type": "git", | ||
9740 | "url": "https://github.com/M6Web/RedisMock.git", | ||
9741 | "reference": "6d9351a4cde39c5f2e5589caea729b8bd2b12808" | ||
9742 | }, | ||
9743 | "dist": { | ||
9744 | "type": "zip", | ||
9745 | "url": "https://api.github.com/repos/M6Web/RedisMock/zipball/6d9351a4cde39c5f2e5589caea729b8bd2b12808", | ||
9746 | "reference": "6d9351a4cde39c5f2e5589caea729b8bd2b12808", | ||
9747 | "shasum": "" | ||
9748 | }, | ||
9749 | "require": { | ||
9750 | "php": ">=7.1.0" | ||
9751 | }, | ||
9752 | "require-dev": { | ||
9753 | "atoum/atoum": "master-dev", | ||
9754 | "predis/predis": "~1.1" | ||
9755 | }, | ||
9756 | "type": "library", | ||
9757 | "autoload": { | ||
9758 | "psr-0": { | ||
9759 | "M6Web\\Component\\RedisMock": "src/" | ||
9760 | } | ||
9761 | }, | ||
9762 | "notification-url": "https://packagist.org/downloads/", | ||
9763 | "license": [ | ||
9764 | "MIT" | ||
9765 | ], | ||
9766 | "authors": [ | ||
9767 | { | ||
9768 | "name": "M6Web", | ||
9769 | "email": "opensource@m6web.fr", | ||
9770 | "homepage": "http://tech.m6web.fr/" | ||
9771 | } | ||
9772 | ], | ||
9773 | "description": "Library providing a PHP mock for Redis", | ||
9774 | "keywords": [ | ||
9775 | "mock", | ||
9776 | "redis" | ||
9777 | ], | ||
9778 | "time": "2019-05-22T08:35:44+00:00" | ||
9779 | }, | ||
9780 | { | ||
9781 | "name": "nette/bootstrap", | ||
9782 | "version": "v3.0.0", | ||
9783 | "source": { | ||
9784 | "type": "git", | ||
9785 | "url": "https://github.com/nette/bootstrap.git", | ||
9786 | "reference": "e1075af05c211915e03e0c86542f3ba5433df4a3" | ||
9787 | }, | ||
9788 | "dist": { | ||
9789 | "type": "zip", | ||
9790 | "url": "https://api.github.com/repos/nette/bootstrap/zipball/e1075af05c211915e03e0c86542f3ba5433df4a3", | ||
9791 | "reference": "e1075af05c211915e03e0c86542f3ba5433df4a3", | ||
9792 | "shasum": "" | ||
9793 | }, | ||
9794 | "require": { | ||
9795 | "nette/di": "^3.0", | ||
9796 | "nette/utils": "^3.0", | ||
9797 | "php": ">=7.1" | ||
9798 | }, | ||
9799 | "require-dev": { | ||
9800 | "latte/latte": "^2.2", | ||
9801 | "nette/application": "^3.0", | ||
9802 | "nette/caching": "^3.0", | ||
9803 | "nette/database": "^3.0", | ||
9804 | "nette/forms": "^3.0", | ||
9805 | "nette/http": "^3.0", | ||
9806 | "nette/mail": "^3.0", | ||
9807 | "nette/robot-loader": "^3.0", | ||
9808 | "nette/safe-stream": "^2.2", | ||
9809 | "nette/security": "^3.0", | ||
9810 | "nette/tester": "^2.0", | ||
9811 | "tracy/tracy": "^2.6" | ||
9812 | }, | ||
9813 | "suggest": { | ||
9814 | "nette/robot-loader": "to use Configurator::createRobotLoader()", | ||
9815 | "tracy/tracy": "to use Configurator::enableTracy()" | ||
9816 | }, | ||
9817 | "type": "library", | ||
9818 | "extra": { | ||
9819 | "branch-alias": { | ||
9820 | "dev-master": "3.0-dev" | ||
9821 | } | ||
9822 | }, | ||
9823 | "autoload": { | ||
9824 | "classmap": [ | ||
9825 | "src/" | ||
9826 | ] | ||
9827 | }, | ||
9828 | "notification-url": "https://packagist.org/downloads/", | ||
9829 | "license": [ | ||
9830 | "BSD-3-Clause", | ||
9831 | "GPL-2.0", | ||
9832 | "GPL-3.0" | ||
9833 | ], | ||
9834 | "authors": [ | ||
9835 | { | ||
9836 | "name": "David Grudl", | ||
9837 | "homepage": "https://davidgrudl.com" | ||
9838 | }, | ||
9839 | { | ||
9840 | "name": "Nette Community", | ||
9841 | "homepage": "https://nette.org/contributors" | ||
9842 | } | ||
9843 | ], | ||
9844 | "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", | ||
9845 | "homepage": "https://nette.org", | ||
9846 | "keywords": [ | ||
9847 | "bootstrapping", | ||
9848 | "configurator", | ||
9849 | "nette" | ||
9850 | ], | ||
9851 | "time": "2019-03-26T12:59:07+00:00" | ||
9852 | }, | ||
9853 | { | ||
9854 | "name": "nette/di", | ||
9855 | "version": "v3.0.0", | ||
9856 | "source": { | ||
9857 | "type": "git", | ||
9858 | "url": "https://github.com/nette/di.git", | ||
9859 | "reference": "19d83539245aaacb59470828919182411061841f" | ||
9860 | }, | ||
9861 | "dist": { | ||
9862 | "type": "zip", | ||
9863 | "url": "https://api.github.com/repos/nette/di/zipball/19d83539245aaacb59470828919182411061841f", | ||
9864 | "reference": "19d83539245aaacb59470828919182411061841f", | ||
9865 | "shasum": "" | ||
9866 | }, | ||
9867 | "require": { | ||
9868 | "ext-tokenizer": "*", | ||
9869 | "nette/neon": "^3.0", | ||
9870 | "nette/php-generator": "^3.2.2", | ||
9871 | "nette/robot-loader": "^3.2", | ||
9872 | "nette/schema": "^1.0", | ||
9873 | "nette/utils": "^3.0", | ||
9874 | "php": ">=7.1" | ||
9875 | }, | ||
9876 | "conflict": { | ||
9877 | "nette/bootstrap": "<3.0" | ||
9878 | }, | ||
9879 | "require-dev": { | ||
9880 | "nette/tester": "^2.2", | ||
9881 | "tracy/tracy": "^2.3" | ||
9882 | }, | ||
9883 | "type": "library", | ||
9884 | "extra": { | ||
9885 | "branch-alias": { | ||
9886 | "dev-master": "3.0-dev" | ||
9887 | } | ||
9888 | }, | ||
9889 | "autoload": { | ||
9890 | "classmap": [ | ||
9891 | "src/" | ||
9892 | ], | ||
9893 | "files": [ | ||
9894 | "src/compatibility.php" | ||
9895 | ] | ||
9896 | }, | ||
9897 | "notification-url": "https://packagist.org/downloads/", | ||
9898 | "license": [ | ||
9899 | "BSD-3-Clause", | ||
9900 | "GPL-2.0", | ||
9901 | "GPL-3.0" | ||
9902 | ], | ||
9903 | "authors": [ | ||
9904 | { | ||
9905 | "name": "David Grudl", | ||
9906 | "homepage": "https://davidgrudl.com" | ||
9907 | }, | ||
9908 | { | ||
9909 | "name": "Nette Community", | ||
9910 | "homepage": "https://nette.org/contributors" | ||
9911 | } | ||
9912 | ], | ||
9913 | "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", | ||
9914 | "homepage": "https://nette.org", | ||
9915 | "keywords": [ | ||
9916 | "compiled", | ||
9917 | "di", | ||
9918 | "dic", | ||
9919 | "factory", | ||
9920 | "ioc", | ||
9921 | "nette", | ||
9922 | "static" | ||
9923 | ], | ||
9924 | "time": "2019-04-03T19:35:46+00:00" | ||
9925 | }, | ||
9926 | { | ||
9927 | "name": "nette/finder", | ||
9928 | "version": "v2.5.0", | ||
9929 | "source": { | ||
9930 | "type": "git", | ||
9931 | "url": "https://github.com/nette/finder.git", | ||
9932 | "reference": "6be1b83ea68ac558aff189d640abe242e0306fe2" | ||
9933 | }, | ||
9934 | "dist": { | ||
9935 | "type": "zip", | ||
9936 | "url": "https://api.github.com/repos/nette/finder/zipball/6be1b83ea68ac558aff189d640abe242e0306fe2", | ||
9937 | "reference": "6be1b83ea68ac558aff189d640abe242e0306fe2", | ||
9938 | "shasum": "" | ||
9939 | }, | ||
9940 | "require": { | ||
9941 | "nette/utils": "^2.4 || ~3.0.0", | ||
9942 | "php": ">=7.1" | ||
9943 | }, | ||
9944 | "conflict": { | ||
9945 | "nette/nette": "<2.2" | ||
9946 | }, | ||
9947 | "require-dev": { | ||
9948 | "nette/tester": "^2.0", | ||
9949 | "tracy/tracy": "^2.3" | ||
9950 | }, | ||
9951 | "type": "library", | ||
9952 | "extra": { | ||
9953 | "branch-alias": { | ||
9954 | "dev-master": "2.5-dev" | ||
9955 | } | ||
9956 | }, | ||
9957 | "autoload": { | ||
9958 | "classmap": [ | ||
9959 | "src/" | ||
9960 | ] | ||
9961 | }, | ||
9962 | "notification-url": "https://packagist.org/downloads/", | ||
9963 | "license": [ | ||
9964 | "BSD-3-Clause", | ||
9965 | "GPL-2.0", | ||
9966 | "GPL-3.0" | ||
9967 | ], | ||
9968 | "authors": [ | ||
9969 | { | ||
9970 | "name": "David Grudl", | ||
9971 | "homepage": "https://davidgrudl.com" | ||
9972 | }, | ||
9973 | { | ||
9974 | "name": "Nette Community", | ||
9975 | "homepage": "https://nette.org/contributors" | ||
9976 | } | ||
9977 | ], | ||
9978 | "description": "? Nette Finder: find files and directories with an intuitive API.", | ||
9979 | "homepage": "https://nette.org", | ||
9980 | "keywords": [ | ||
9981 | "filesystem", | ||
9982 | "glob", | ||
9983 | "iterator", | ||
9984 | "nette" | ||
9985 | ], | ||
9986 | "time": "2019-02-28T18:13:25+00:00" | ||
9987 | }, | ||
9988 | { | ||
9989 | "name": "nette/neon", | ||
9990 | "version": "v3.0.0", | ||
9991 | "source": { | ||
9992 | "type": "git", | ||
9993 | "url": "https://github.com/nette/neon.git", | ||
9994 | "reference": "cbff32059cbdd8720deccf9e9eace6ee516f02eb" | ||
9995 | }, | ||
9996 | "dist": { | ||
9997 | "type": "zip", | ||
9998 | "url": "https://api.github.com/repos/nette/neon/zipball/cbff32059cbdd8720deccf9e9eace6ee516f02eb", | ||
9999 | "reference": "cbff32059cbdd8720deccf9e9eace6ee516f02eb", | ||
10000 | "shasum": "" | ||
10001 | }, | ||
10002 | "require": { | ||
10003 | "ext-iconv": "*", | ||
10004 | "ext-json": "*", | ||
10005 | "php": ">=7.0" | ||
10006 | }, | ||
10007 | "require-dev": { | ||
10008 | "nette/tester": "^2.0", | ||
10009 | "tracy/tracy": "^2.3" | ||
10010 | }, | ||
10011 | "type": "library", | ||
10012 | "extra": { | ||
10013 | "branch-alias": { | ||
10014 | "dev-master": "3.0-dev" | ||
10015 | } | ||
10016 | }, | ||
10017 | "autoload": { | ||
10018 | "classmap": [ | ||
10019 | "src/" | ||
10020 | ] | ||
10021 | }, | ||
10022 | "notification-url": "https://packagist.org/downloads/", | ||
10023 | "license": [ | ||
10024 | "BSD-3-Clause", | ||
10025 | "GPL-2.0", | ||
10026 | "GPL-3.0" | ||
10027 | ], | ||
10028 | "authors": [ | ||
10029 | { | ||
10030 | "name": "David Grudl", | ||
10031 | "homepage": "https://davidgrudl.com" | ||
10032 | }, | ||
10033 | { | ||
10034 | "name": "Nette Community", | ||
10035 | "homepage": "https://nette.org/contributors" | ||
10036 | } | ||
10037 | ], | ||
10038 | "description": "? Nette NEON: encodes and decodes NEON file format.", | ||
10039 | "homepage": "http://ne-on.org", | ||
10040 | "keywords": [ | ||
10041 | "export", | ||
10042 | "import", | ||
10043 | "neon", | ||
10044 | "nette", | ||
10045 | "yaml" | ||
10046 | ], | ||
10047 | "time": "2019-02-05T21:30:40+00:00" | ||
10048 | }, | ||
10049 | { | ||
10050 | "name": "nette/php-generator", | ||
10051 | "version": "v3.2.2", | ||
10052 | "source": { | ||
10053 | "type": "git", | ||
10054 | "url": "https://github.com/nette/php-generator.git", | ||
10055 | "reference": "acff8b136fad84b860a626d133e791f95781f9f5" | ||
10056 | }, | ||
10057 | "dist": { | ||
10058 | "type": "zip", | ||
10059 | "url": "https://api.github.com/repos/nette/php-generator/zipball/acff8b136fad84b860a626d133e791f95781f9f5", | ||
10060 | "reference": "acff8b136fad84b860a626d133e791f95781f9f5", | ||
10061 | "shasum": "" | ||
10062 | }, | ||
10063 | "require": { | ||
10064 | "nette/utils": "^2.4.2 || ~3.0.0", | ||
10065 | "php": ">=7.1" | ||
10066 | }, | ||
10067 | "require-dev": { | ||
10068 | "nette/tester": "^2.0", | ||
10069 | "tracy/tracy": "^2.3" | ||
10070 | }, | ||
10071 | "type": "library", | ||
10072 | "extra": { | ||
10073 | "branch-alias": { | ||
10074 | "dev-master": "3.2-dev" | ||
10075 | } | ||
10076 | }, | ||
10077 | "autoload": { | ||
10078 | "classmap": [ | ||
10079 | "src/" | ||
10080 | ] | ||
10081 | }, | ||
10082 | "notification-url": "https://packagist.org/downloads/", | ||
10083 | "license": [ | ||
10084 | "BSD-3-Clause", | ||
10085 | "GPL-2.0", | ||
10086 | "GPL-3.0" | ||
10087 | ], | ||
10088 | "authors": [ | ||
10089 | { | ||
10090 | "name": "David Grudl", | ||
10091 | "homepage": "https://davidgrudl.com" | ||
10092 | }, | ||
10093 | { | ||
10094 | "name": "Nette Community", | ||
10095 | "homepage": "https://nette.org/contributors" | ||
10096 | } | ||
10097 | ], | ||
10098 | "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.3 features.", | ||
10099 | "homepage": "https://nette.org", | ||
10100 | "keywords": [ | ||
10101 | "code", | ||
10102 | "nette", | ||
10103 | "php", | ||
10104 | "scaffolding" | ||
10105 | ], | ||
10106 | "time": "2019-03-15T03:41:13+00:00" | ||
10107 | }, | ||
10108 | { | ||
10109 | "name": "nette/robot-loader", | ||
10110 | "version": "v3.2.0", | ||
10111 | "source": { | ||
10112 | "type": "git", | ||
10113 | "url": "https://github.com/nette/robot-loader.git", | ||
10114 | "reference": "0712a0e39ae7956d6a94c0ab6ad41aa842544b5c" | ||
10115 | }, | ||
10116 | "dist": { | ||
10117 | "type": "zip", | ||
10118 | "url": "https://api.github.com/repos/nette/robot-loader/zipball/0712a0e39ae7956d6a94c0ab6ad41aa842544b5c", | ||
10119 | "reference": "0712a0e39ae7956d6a94c0ab6ad41aa842544b5c", | ||
10120 | "shasum": "" | ||
10121 | }, | ||
10122 | "require": { | ||
10123 | "ext-tokenizer": "*", | ||
10124 | "nette/finder": "^2.5", | ||
10125 | "nette/utils": "^3.0", | ||
10126 | "php": ">=7.1" | ||
10127 | }, | ||
10128 | "require-dev": { | ||
10129 | "nette/tester": "^2.0", | ||
10130 | "tracy/tracy": "^2.3" | ||
10131 | }, | ||
10132 | "type": "library", | ||
10133 | "extra": { | ||
10134 | "branch-alias": { | ||
10135 | "dev-master": "3.2-dev" | ||
10136 | } | ||
10137 | }, | ||
10138 | "autoload": { | ||
10139 | "classmap": [ | ||
10140 | "src/" | ||
10141 | ] | ||
10142 | }, | ||
10143 | "notification-url": "https://packagist.org/downloads/", | ||
10144 | "license": [ | ||
10145 | "BSD-3-Clause", | ||
10146 | "GPL-2.0", | ||
10147 | "GPL-3.0" | ||
10148 | ], | ||
10149 | "authors": [ | ||
10150 | { | ||
10151 | "name": "David Grudl", | ||
10152 | "homepage": "https://davidgrudl.com" | ||
10153 | }, | ||
10154 | { | ||
10155 | "name": "Nette Community", | ||
10156 | "homepage": "https://nette.org/contributors" | ||
10157 | } | ||
10158 | ], | ||
10159 | "description": "? Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", | ||
10160 | "homepage": "https://nette.org", | ||
10161 | "keywords": [ | ||
10162 | "autoload", | ||
10163 | "class", | ||
10164 | "interface", | ||
10165 | "nette", | ||
10166 | "trait" | ||
10167 | ], | ||
10168 | "time": "2019-03-08T21:57:24+00:00" | ||
10169 | }, | ||
10170 | { | ||
10171 | "name": "nette/schema", | ||
10172 | "version": "v1.0.0", | ||
10173 | "source": { | ||
10174 | "type": "git", | ||
10175 | "url": "https://github.com/nette/schema.git", | ||
10176 | "reference": "6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d" | ||
10177 | }, | ||
10178 | "dist": { | ||
10179 | "type": "zip", | ||
10180 | "url": "https://api.github.com/repos/nette/schema/zipball/6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d", | ||
10181 | "reference": "6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d", | ||
10182 | "shasum": "" | ||
10183 | }, | ||
10184 | "require": { | ||
10185 | "nette/utils": "^3.0.1", | ||
10186 | "php": ">=7.1" | ||
10187 | }, | ||
10188 | "require-dev": { | ||
10189 | "nette/tester": "^2.2", | ||
10190 | "tracy/tracy": "^2.3" | ||
10191 | }, | ||
10192 | "type": "library", | ||
10193 | "extra": { | ||
10194 | "branch-alias": { | ||
10195 | "dev-master": "1.0-dev" | ||
10196 | } | ||
10197 | }, | ||
10198 | "autoload": { | ||
10199 | "classmap": [ | ||
10200 | "src/" | ||
10201 | ] | ||
10202 | }, | ||
10203 | "notification-url": "https://packagist.org/downloads/", | ||
10204 | "license": [ | ||
10205 | "BSD-3-Clause", | ||
10206 | "GPL-2.0", | ||
10207 | "GPL-3.0" | ||
10208 | ], | ||
10209 | "authors": [ | ||
10210 | { | ||
10211 | "name": "David Grudl", | ||
10212 | "homepage": "https://davidgrudl.com" | ||
10213 | }, | ||
10214 | { | ||
10215 | "name": "Nette Community", | ||
10216 | "homepage": "https://nette.org/contributors" | ||
10217 | } | ||
10218 | ], | ||
10219 | "description": "📐 Nette Schema: validating data structures against a given Schema.", | ||
10220 | "homepage": "https://nette.org", | ||
10221 | "keywords": [ | ||
10222 | "config", | ||
10223 | "nette" | ||
10224 | ], | ||
10225 | "time": "2019-04-03T15:53:25+00:00" | ||
10226 | }, | ||
10227 | { | ||
10228 | "name": "nette/utils", | ||
10229 | "version": "v3.0.1", | ||
10230 | "source": { | ||
10231 | "type": "git", | ||
10232 | "url": "https://github.com/nette/utils.git", | ||
10233 | "reference": "bd961f49b211997202bda1d0fbc410905be370d4" | ||
10234 | }, | ||
10235 | "dist": { | ||
10236 | "type": "zip", | ||
10237 | "url": "https://api.github.com/repos/nette/utils/zipball/bd961f49b211997202bda1d0fbc410905be370d4", | ||
10238 | "reference": "bd961f49b211997202bda1d0fbc410905be370d4", | ||
10239 | "shasum": "" | ||
10240 | }, | ||
10241 | "require": { | ||
10242 | "php": ">=7.1" | ||
10243 | }, | ||
10244 | "require-dev": { | ||
10245 | "nette/tester": "~2.0", | ||
10246 | "tracy/tracy": "^2.3" | ||
10247 | }, | ||
10248 | "suggest": { | ||
10249 | "ext-gd": "to use Image", | ||
10250 | "ext-iconv": "to use Strings::webalize() and toAscii()", | ||
10251 | "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", | ||
10252 | "ext-json": "to use Nette\\Utils\\Json", | ||
10253 | "ext-mbstring": "to use Strings::lower() etc...", | ||
10254 | "ext-xml": "to use Strings::length() etc. when mbstring is not available" | ||
10255 | }, | ||
10256 | "type": "library", | ||
10257 | "extra": { | ||
10258 | "branch-alias": { | ||
10259 | "dev-master": "3.0-dev" | ||
10260 | } | ||
10261 | }, | ||
10262 | "autoload": { | ||
10263 | "classmap": [ | ||
10264 | "src/" | ||
10265 | ] | ||
10266 | }, | ||
10267 | "notification-url": "https://packagist.org/downloads/", | ||
10268 | "license": [ | ||
10269 | "BSD-3-Clause", | ||
10270 | "GPL-2.0", | ||
10271 | "GPL-3.0" | ||
10272 | ], | ||
10273 | "authors": [ | ||
10274 | { | ||
10275 | "name": "David Grudl", | ||
10276 | "homepage": "https://davidgrudl.com" | ||
10277 | }, | ||
10278 | { | ||
10279 | "name": "Nette Community", | ||
10280 | "homepage": "https://nette.org/contributors" | ||
10281 | } | ||
10282 | ], | ||
10283 | "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", | ||
10284 | "homepage": "https://nette.org", | ||
10285 | "keywords": [ | ||
10286 | "array", | ||
10287 | "core", | ||
10288 | "datetime", | ||
10289 | "images", | ||
10290 | "json", | ||
10291 | "nette", | ||
10292 | "paginator", | ||
10293 | "password", | ||
10294 | "slugify", | ||
10295 | "string", | ||
10296 | "unicode", | ||
10297 | "utf-8", | ||
10298 | "utility", | ||
10299 | "validation" | ||
10300 | ], | ||
10301 | "time": "2019-03-22T01:00:30+00:00" | ||
10302 | }, | ||
10303 | { | ||
10304 | "name": "nikic/php-parser", | ||
10305 | "version": "v4.2.2", | ||
10306 | "source": { | ||
10307 | "type": "git", | ||
10308 | "url": "https://github.com/nikic/PHP-Parser.git", | ||
10309 | "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420" | ||
10310 | }, | ||
10311 | "dist": { | ||
10312 | "type": "zip", | ||
10313 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420", | ||
10314 | "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420", | ||
10315 | "shasum": "" | ||
10316 | }, | ||
10317 | "require": { | ||
10318 | "ext-tokenizer": "*", | ||
10319 | "php": ">=7.0" | ||
10320 | }, | ||
10321 | "require-dev": { | ||
10322 | "phpunit/phpunit": "^6.5 || ^7.0" | ||
10323 | }, | ||
10324 | "bin": [ | ||
10325 | "bin/php-parse" | ||
10326 | ], | ||
10327 | "type": "library", | ||
10328 | "extra": { | ||
10329 | "branch-alias": { | ||
10330 | "dev-master": "4.2-dev" | ||
10331 | } | ||
10332 | }, | ||
10333 | "autoload": { | ||
10334 | "psr-4": { | ||
10335 | "PhpParser\\": "lib/PhpParser" | ||
10336 | } | ||
10337 | }, | ||
10338 | "notification-url": "https://packagist.org/downloads/", | ||
10339 | "license": [ | ||
10340 | "BSD-3-Clause" | ||
10341 | ], | ||
10342 | "authors": [ | ||
10343 | { | ||
10344 | "name": "Nikita Popov" | ||
10345 | } | ||
10346 | ], | ||
10347 | "description": "A PHP parser written in PHP", | ||
10348 | "keywords": [ | ||
10349 | "parser", | ||
10350 | "php" | ||
10351 | ], | ||
10352 | "time": "2019-05-25T20:07:01+00:00" | ||
10353 | }, | ||
10354 | { | ||
10355 | "name": "php-cs-fixer/diff", | ||
10356 | "version": "v1.3.0", | ||
10357 | "source": { | ||
10358 | "type": "git", | ||
10359 | "url": "https://github.com/PHP-CS-Fixer/diff.git", | ||
10360 | "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756" | ||
10361 | }, | ||
10362 | "dist": { | ||
10363 | "type": "zip", | ||
10364 | "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756", | ||
10365 | "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756", | ||
10366 | "shasum": "" | ||
10367 | }, | ||
10368 | "require": { | ||
10369 | "php": "^5.6 || ^7.0" | ||
10370 | }, | ||
10371 | "require-dev": { | ||
10372 | "phpunit/phpunit": "^5.7.23 || ^6.4.3", | ||
10373 | "symfony/process": "^3.3" | ||
10374 | }, | ||
10375 | "type": "library", | ||
10376 | "autoload": { | ||
10377 | "classmap": [ | ||
10378 | "src/" | ||
10379 | ] | ||
10380 | }, | ||
10381 | "notification-url": "https://packagist.org/downloads/", | ||
10382 | "license": [ | ||
10383 | "BSD-3-Clause" | ||
10384 | ], | ||
10385 | "authors": [ | ||
10386 | { | ||
10387 | "name": "Kore Nordmann", | ||
10388 | "email": "mail@kore-nordmann.de" | ||
10389 | }, | ||
10390 | { | ||
10391 | "name": "Sebastian Bergmann", | ||
10392 | "email": "sebastian@phpunit.de" | ||
10393 | }, | ||
10394 | { | ||
10395 | "name": "SpacePossum" | ||
10396 | } | ||
10397 | ], | ||
10398 | "description": "sebastian/diff v2 backport support for PHP5.6", | ||
10399 | "homepage": "https://github.com/PHP-CS-Fixer", | ||
10400 | "keywords": [ | ||
10401 | "diff" | ||
10402 | ], | ||
10403 | "time": "2018-02-15T16:58:55+00:00" | ||
10404 | }, | ||
10405 | { | ||
10406 | "name": "php-http/mock-client", | ||
10407 | "version": "1.3.0", | ||
10408 | "source": { | ||
10409 | "type": "git", | ||
10410 | "url": "https://github.com/php-http/mock-client.git", | ||
10411 | "reference": "d364c4a2847229dd37237d0083887889d3bd8564" | ||
10412 | }, | ||
10413 | "dist": { | ||
10414 | "type": "zip", | ||
10415 | "url": "https://api.github.com/repos/php-http/mock-client/zipball/d364c4a2847229dd37237d0083887889d3bd8564", | ||
10416 | "reference": "d364c4a2847229dd37237d0083887889d3bd8564", | ||
10417 | "shasum": "" | ||
10418 | }, | ||
10419 | "require": { | ||
10420 | "php": "^5.5 || ^7.0", | ||
10421 | "php-http/client-common": "^1.9 || ^2.0", | ||
10422 | "php-http/discovery": "^1.0", | ||
10423 | "php-http/httplug": "^1.0 || ^2.0", | ||
10424 | "php-http/message-factory": "^1.0" | ||
10425 | }, | ||
10426 | "provide": { | ||
10427 | "php-http/async-client-implementation": "1.0", | ||
10428 | "php-http/client-implementation": "1.0" | ||
10429 | }, | ||
10430 | "require-dev": { | ||
10431 | "henrikbjorn/phpspec-code-coverage": "^1.0", | ||
10432 | "phpspec/phpspec": "^2.4" | ||
10433 | }, | ||
10434 | "type": "library", | ||
10435 | "extra": { | ||
10436 | "branch-alias": { | ||
10437 | "dev-master": "1.3-dev" | ||
10438 | } | ||
10439 | }, | ||
10440 | "autoload": { | ||
10441 | "psr-4": { | ||
10442 | "Http\\Mock\\": "src/" | ||
10443 | } | ||
10444 | }, | ||
10445 | "notification-url": "https://packagist.org/downloads/", | ||
10446 | "license": [ | ||
10447 | "MIT" | ||
10448 | ], | ||
10449 | "authors": [ | ||
10450 | { | ||
10451 | "name": "David de Boer", | ||
10452 | "email": "david@ddeboer.nl" | ||
10453 | } | ||
10454 | ], | ||
10455 | "description": "Mock HTTP client", | ||
10456 | "homepage": "http://httplug.io", | ||
10457 | "keywords": [ | ||
10458 | "client", | ||
10459 | "http", | ||
10460 | "mock", | ||
10461 | "psr7" | ||
10462 | ], | ||
10463 | "time": "2019-02-21T08:51:08+00:00" | ||
10464 | }, | ||
10465 | { | ||
10466 | "name": "phpstan/phpdoc-parser", | ||
10467 | "version": "0.3.4", | ||
10468 | "source": { | ||
10469 | "type": "git", | ||
10470 | "url": "https://github.com/phpstan/phpdoc-parser.git", | ||
10471 | "reference": "ab518a5fc8f1d90f58bd2c5552ba915e2c477b66" | ||
10472 | }, | ||
10473 | "dist": { | ||
10474 | "type": "zip", | ||
10475 | "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ab518a5fc8f1d90f58bd2c5552ba915e2c477b66", | ||
10476 | "reference": "ab518a5fc8f1d90f58bd2c5552ba915e2c477b66", | ||
10477 | "shasum": "" | ||
10478 | }, | ||
10479 | "require": { | ||
10480 | "php": "~7.1" | ||
10481 | }, | ||
10482 | "require-dev": { | ||
10483 | "consistence/coding-standard": "^3.5", | ||
10484 | "jakub-onderka/php-parallel-lint": "^0.9.2", | ||
10485 | "phing/phing": "^2.16.0", | ||
10486 | "phpstan/phpstan": "^0.10", | ||
10487 | "phpunit/phpunit": "^6.3", | ||
10488 | "slevomat/coding-standard": "^4.7.2", | ||
10489 | "squizlabs/php_codesniffer": "^3.3.2", | ||
10490 | "symfony/process": "^3.4 || ^4.0" | ||
10491 | }, | ||
10492 | "type": "library", | ||
10493 | "extra": { | ||
10494 | "branch-alias": { | ||
10495 | "dev-master": "0.3-dev" | ||
10496 | } | ||
10497 | }, | ||
10498 | "autoload": { | ||
10499 | "psr-4": { | ||
10500 | "PHPStan\\PhpDocParser\\": [ | ||
10501 | "src/" | ||
10502 | ] | ||
10503 | } | ||
10504 | }, | ||
10505 | "notification-url": "https://packagist.org/downloads/", | ||
10506 | "license": [ | ||
10507 | "MIT" | ||
10508 | ], | ||
10509 | "description": "PHPDoc parser with support for nullable, intersection and generic types", | ||
10510 | "time": "2019-05-28T11:40:00+00:00" | ||
10511 | }, | ||
10512 | { | ||
10513 | "name": "phpstan/phpstan", | ||
10514 | "version": "0.11.8", | ||
10515 | "source": { | ||
10516 | "type": "git", | ||
10517 | "url": "https://github.com/phpstan/phpstan.git", | ||
10518 | "reference": "fcf0081bf3a254ddacffa03e78be87842d0c09c9" | ||
10519 | }, | ||
10520 | "dist": { | ||
10521 | "type": "zip", | ||
10522 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/fcf0081bf3a254ddacffa03e78be87842d0c09c9", | ||
10523 | "reference": "fcf0081bf3a254ddacffa03e78be87842d0c09c9", | ||
10524 | "shasum": "" | ||
10525 | }, | ||
10526 | "require": { | ||
10527 | "composer/xdebug-handler": "^1.3.0", | ||
10528 | "jean85/pretty-package-versions": "^1.0.3", | ||
10529 | "nette/bootstrap": "^2.4 || ^3.0", | ||
10530 | "nette/di": "^2.4.7 || ^3.0", | ||
10531 | "nette/robot-loader": "^3.0.1", | ||
10532 | "nette/schema": "^1.0", | ||
10533 | "nette/utils": "^2.4.5 || ^3.0", | ||
10534 | "nikic/php-parser": "^4.0.2", | ||
10535 | "php": "~7.1", | ||
10536 | "phpstan/phpdoc-parser": "^0.3.4", | ||
10537 | "symfony/console": "~3.2 || ~4.0", | ||
10538 | "symfony/finder": "~3.2 || ~4.0" | ||
10539 | }, | ||
10540 | "conflict": { | ||
10541 | "symfony/console": "3.4.16 || 4.1.5" | ||
10542 | }, | ||
10543 | "require-dev": { | ||
10544 | "brianium/paratest": "^2.0", | ||
10545 | "consistence/coding-standard": "^3.5", | ||
10546 | "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", | ||
10547 | "ext-intl": "*", | ||
10548 | "ext-mysqli": "*", | ||
10549 | "ext-soap": "*", | ||
10550 | "ext-zip": "*", | ||
10551 | "jakub-onderka/php-parallel-lint": "^1.0", | ||
10552 | "localheinz/composer-normalize": "^1.1.0", | ||
10553 | "phing/phing": "^2.16.0", | ||
10554 | "phpstan/phpstan-deprecation-rules": "^0.11", | ||
10555 | "phpstan/phpstan-php-parser": "^0.11", | ||
10556 | "phpstan/phpstan-phpunit": "^0.11", | ||
10557 | "phpstan/phpstan-strict-rules": "^0.11", | ||
10558 | "phpunit/phpunit": "^7.0", | ||
10559 | "slevomat/coding-standard": "^4.7.2", | ||
10560 | "squizlabs/php_codesniffer": "^3.3.2" | ||
10561 | }, | ||
10562 | "bin": [ | ||
10563 | "bin/phpstan" | ||
10564 | ], | ||
10565 | "type": "library", | ||
10566 | "extra": { | ||
10567 | "branch-alias": { | ||
10568 | "dev-master": "0.11-dev" | ||
10569 | } | ||
10570 | }, | ||
10571 | "autoload": { | ||
10572 | "psr-4": { | ||
10573 | "PHPStan\\": [ | ||
10574 | "src/", | ||
10575 | "build/PHPStan" | ||
10576 | ] | ||
10577 | } | ||
10578 | }, | ||
10579 | "notification-url": "https://packagist.org/downloads/", | ||
10580 | "license": [ | ||
10581 | "MIT" | ||
10582 | ], | ||
10583 | "description": "PHPStan - PHP Static Analysis Tool", | ||
10584 | "time": "2019-05-28T19:58:33+00:00" | ||
10585 | }, | ||
10586 | { | ||
10587 | "name": "phpstan/phpstan-doctrine", | ||
10588 | "version": "0.11.5", | ||
10589 | "source": { | ||
10590 | "type": "git", | ||
10591 | "url": "https://github.com/phpstan/phpstan-doctrine.git", | ||
10592 | "reference": "3c68697365f0b71e357d773d91a6c77f3f9e143a" | ||
10593 | }, | ||
10594 | "dist": { | ||
10595 | "type": "zip", | ||
10596 | "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/3c68697365f0b71e357d773d91a6c77f3f9e143a", | ||
10597 | "reference": "3c68697365f0b71e357d773d91a6c77f3f9e143a", | ||
10598 | "shasum": "" | ||
10599 | }, | ||
10600 | "require": { | ||
10601 | "nikic/php-parser": "^4.0", | ||
10602 | "php": "~7.1", | ||
10603 | "phpstan/phpdoc-parser": "^0.3", | ||
10604 | "phpstan/phpstan": "^0.11.7" | ||
10605 | }, | ||
10606 | "conflict": { | ||
10607 | "doctrine/collections": "<1.0", | ||
10608 | "doctrine/common": "<2.7", | ||
10609 | "doctrine/mongodb-odm": "<1.2", | ||
10610 | "doctrine/orm": "<2.5" | ||
10611 | }, | ||
10612 | "require-dev": { | ||
10613 | "consistence/coding-standard": "^3.8", | ||
10614 | "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", | ||
10615 | "doctrine/collections": "^1.0", | ||
10616 | "doctrine/common": "^2.7", | ||
10617 | "doctrine/mongodb-odm": "^1.2", | ||
10618 | "doctrine/orm": "^2.5", | ||
10619 | "jakub-onderka/php-parallel-lint": "^1.0", | ||
10620 | "phing/phing": "^2.16.0", | ||
10621 | "phpstan/phpstan-phpunit": "^0.11", | ||
10622 | "phpstan/phpstan-strict-rules": "^0.11", | ||
10623 | "phpunit/phpunit": "^7.0", | ||
10624 | "slevomat/coding-standard": "^5.0.4" | ||
10625 | }, | ||
10626 | "type": "phpstan-extension", | ||
10627 | "extra": { | ||
10628 | "branch-alias": { | ||
10629 | "dev-master": "0.11-dev" | ||
10630 | }, | ||
10631 | "phpstan": { | ||
10632 | "includes": [ | ||
10633 | "extension.neon", | ||
10634 | "rules.neon" | ||
10635 | ] | ||
10636 | } | ||
10637 | }, | ||
10638 | "autoload": { | ||
10639 | "psr-4": { | ||
10640 | "PHPStan\\": "src/" | ||
10641 | } | ||
10642 | }, | ||
10643 | "notification-url": "https://packagist.org/downloads/", | ||
10644 | "license": [ | ||
10645 | "MIT" | ||
10646 | ], | ||
10647 | "description": "Doctrine extensions for PHPStan", | ||
10648 | "time": "2019-05-29T06:01:20+00:00" | ||
10649 | }, | ||
10650 | { | ||
10651 | "name": "phpstan/phpstan-phpunit", | ||
10652 | "version": "0.11.2", | ||
10653 | "source": { | ||
10654 | "type": "git", | ||
10655 | "url": "https://github.com/phpstan/phpstan-phpunit.git", | ||
10656 | "reference": "fbf2ad56c3b13189d29655e226c9b1da47c2fad9" | ||
10657 | }, | ||
10658 | "dist": { | ||
10659 | "type": "zip", | ||
10660 | "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/fbf2ad56c3b13189d29655e226c9b1da47c2fad9", | ||
10661 | "reference": "fbf2ad56c3b13189d29655e226c9b1da47c2fad9", | ||
10662 | "shasum": "" | ||
10663 | }, | ||
10664 | "require": { | ||
10665 | "nikic/php-parser": "^4.0", | ||
10666 | "php": "~7.1", | ||
10667 | "phpstan/phpdoc-parser": "^0.3", | ||
10668 | "phpstan/phpstan": "^0.11.4" | ||
10669 | }, | ||
10670 | "conflict": { | ||
10671 | "phpunit/phpunit": "<7.0" | ||
10672 | }, | ||
10673 | "require-dev": { | ||
10674 | "consistence/coding-standard": "^3.0.1", | ||
10675 | "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", | ||
10676 | "jakub-onderka/php-parallel-lint": "^1.0", | ||
10677 | "phing/phing": "^2.16.0", | ||
10678 | "phpstan/phpstan-strict-rules": "^0.11", | ||
10679 | "phpunit/phpunit": "^7.0", | ||
10680 | "satooshi/php-coveralls": "^1.0", | ||
10681 | "slevomat/coding-standard": "^4.5.2" | ||
10682 | }, | ||
10683 | "type": "phpstan-extension", | ||
10684 | "extra": { | ||
10685 | "branch-alias": { | ||
10686 | "dev-master": "0.11-dev" | ||
10687 | }, | ||
10688 | "phpstan": { | ||
10689 | "includes": [ | ||
10690 | "extension.neon", | ||
10691 | "rules.neon" | ||
10692 | ] | ||
10693 | } | ||
10694 | }, | ||
10695 | "autoload": { | ||
10696 | "psr-4": { | ||
10697 | "PHPStan\\": "src/" | ||
10698 | } | ||
10699 | }, | ||
10700 | "notification-url": "https://packagist.org/downloads/", | ||
10701 | "license": [ | ||
10702 | "MIT" | ||
10703 | ], | ||
10704 | "description": "PHPUnit extensions and rules for PHPStan", | ||
10705 | "time": "2019-05-17T17:50:16+00:00" | ||
10706 | }, | ||
10707 | { | ||
10708 | "name": "phpstan/phpstan-symfony", | ||
10709 | "version": "0.11.6", | ||
10710 | "source": { | ||
10711 | "type": "git", | ||
10712 | "url": "https://github.com/phpstan/phpstan-symfony.git", | ||
10713 | "reference": "c7be3054c21fd472a52b1c38eb129c3f93776084" | ||
10714 | }, | ||
10715 | "dist": { | ||
10716 | "type": "zip", | ||
10717 | "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/c7be3054c21fd472a52b1c38eb129c3f93776084", | ||
10718 | "reference": "c7be3054c21fd472a52b1c38eb129c3f93776084", | ||
10719 | "shasum": "" | ||
10720 | }, | ||
10721 | "require": { | ||
10722 | "ext-simplexml": "*", | ||
10723 | "nikic/php-parser": "^4.0", | ||
10724 | "php": "^7.1", | ||
10725 | "phpstan/phpstan": "^0.11.7" | ||
10726 | }, | ||
10727 | "conflict": { | ||
10728 | "symfony/framework-bundle": "<3.0" | ||
10729 | }, | ||
10730 | "require-dev": { | ||
10731 | "consistence/coding-standard": "^3.0.1", | ||
10732 | "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", | ||
10733 | "jakub-onderka/php-parallel-lint": "^1.0", | ||
10734 | "nette/di": "^3.0-stable", | ||
10735 | "phing/phing": "^2.16.0", | ||
10736 | "phpstan/phpstan-phpunit": "^0.11", | ||
10737 | "phpstan/phpstan-strict-rules": "^0.11", | ||
10738 | "phpunit/phpunit": "^7.0", | ||
10739 | "slevomat/coding-standard": "^4.5.2", | ||
10740 | "squizlabs/php_codesniffer": "^3.3.2", | ||
10741 | "symfony/console": "^3.0 || ^4.0", | ||
10742 | "symfony/framework-bundle": "^3.0 || ^4.0", | ||
10743 | "symfony/messenger": "^4.2", | ||
10744 | "symfony/serializer": "^3.0 || ^4.0" | ||
10745 | }, | ||
10746 | "type": "phpstan-extension", | ||
10747 | "extra": { | ||
10748 | "branch-alias": { | ||
10749 | "dev-master": "0.11-dev" | ||
10750 | }, | ||
10751 | "phpstan": { | ||
10752 | "includes": [ | ||
10753 | "extension.neon" | ||
10754 | ] | ||
10755 | } | ||
10756 | }, | ||
10757 | "autoload": { | ||
10758 | "psr-4": { | ||
10759 | "PHPStan\\": "src/" | ||
10760 | } | ||
10761 | }, | ||
10762 | "notification-url": "https://packagist.org/downloads/", | ||
10763 | "license": [ | ||
10764 | "MIT" | ||
10765 | ], | ||
10766 | "authors": [ | ||
10767 | { | ||
10768 | "name": "Lukáš Unger", | ||
10769 | "email": "looky.msc@gmail.com", | ||
10770 | "homepage": "https://lookyman.net" | ||
10771 | } | ||
10772 | ], | ||
10773 | "description": "Symfony Framework extensions and rules for PHPStan", | ||
10774 | "time": "2019-05-19T17:40:25+00:00" | ||
10775 | }, | ||
10776 | { | ||
10777 | "name": "sensio/generator-bundle", | ||
10778 | "version": "v3.1.7", | ||
10779 | "source": { | ||
10780 | "type": "git", | ||
10781 | "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", | ||
10782 | "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65" | ||
10783 | }, | ||
10784 | "dist": { | ||
10785 | "type": "zip", | ||
10786 | "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65", | ||
10787 | "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65", | ||
10788 | "shasum": "" | ||
10789 | }, | ||
10790 | "require": { | ||
10791 | "symfony/console": "~2.7|~3.0", | ||
10792 | "symfony/framework-bundle": "~2.7|~3.0", | ||
10793 | "symfony/process": "~2.7|~3.0", | ||
10794 | "symfony/yaml": "~2.7|~3.0", | ||
10795 | "twig/twig": "^1.28.2|^2.0" | ||
10796 | }, | ||
10797 | "require-dev": { | ||
10798 | "doctrine/orm": "~2.4", | ||
10799 | "symfony/doctrine-bridge": "~2.7|~3.0", | ||
10800 | "symfony/filesystem": "~2.7|~3.0", | ||
10801 | "symfony/phpunit-bridge": "^3.3" | ||
10802 | }, | ||
10803 | "type": "symfony-bundle", | ||
10804 | "extra": { | ||
10805 | "branch-alias": { | ||
10806 | "dev-master": "3.1.x-dev" | ||
10807 | } | ||
10808 | }, | ||
10809 | "autoload": { | ||
10810 | "psr-4": { | ||
10811 | "Sensio\\Bundle\\GeneratorBundle\\": "" | ||
10812 | }, | ||
10813 | "exclude-from-classmap": [ | ||
10814 | "/Tests/" | ||
10815 | ] | ||
10816 | }, | ||
10817 | "notification-url": "https://packagist.org/downloads/", | ||
10818 | "license": [ | ||
10819 | "MIT" | ||
10820 | ], | ||
10821 | "authors": [ | ||
10822 | { | ||
10823 | "name": "Fabien Potencier", | ||
10824 | "email": "fabien@symfony.com" | ||
10825 | } | ||
10826 | ], | ||
10827 | "description": "This bundle generates code for you", | ||
10828 | "time": "2017-12-07T15:36:41+00:00" | ||
10829 | }, | ||
10830 | { | ||
10831 | "name": "symfony/phpunit-bridge", | ||
10832 | "version": "v4.3.0", | ||
10833 | "source": { | ||
10834 | "type": "git", | ||
10835 | "url": "https://github.com/symfony/phpunit-bridge.git", | ||
10836 | "reference": "7bfc1b57d1ac9513703391498aa8da4764388bc6" | ||
10837 | }, | ||
10838 | "dist": { | ||
10839 | "type": "zip", | ||
10840 | "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/7bfc1b57d1ac9513703391498aa8da4764388bc6", | ||
10841 | "reference": "7bfc1b57d1ac9513703391498aa8da4764388bc6", | ||
10842 | "shasum": "" | ||
10843 | }, | ||
10844 | "require": { | ||
10845 | "php": ">=5.5.9" | ||
10846 | }, | ||
10847 | "conflict": { | ||
10848 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" | ||
10849 | }, | ||
10850 | "suggest": { | ||
10851 | "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" | ||
10852 | }, | ||
10853 | "bin": [ | ||
10854 | "bin/simple-phpunit" | ||
10855 | ], | ||
10856 | "type": "symfony-bridge", | ||
10857 | "extra": { | ||
10858 | "branch-alias": { | ||
10859 | "dev-master": "4.3-dev" | ||
10860 | }, | ||
10861 | "thanks": { | ||
10862 | "name": "phpunit/phpunit", | ||
10863 | "url": "https://github.com/sebastianbergmann/phpunit" | ||
10864 | } | ||
10865 | }, | ||
10866 | "autoload": { | ||
10867 | "files": [ | ||
10868 | "bootstrap.php" | ||
10869 | ], | ||
10870 | "psr-4": { | ||
10871 | "Symfony\\Bridge\\PhpUnit\\": "" | ||
10872 | }, | ||
10873 | "exclude-from-classmap": [ | ||
10874 | "/Tests/" | ||
10875 | ] | ||
10876 | }, | ||
10877 | "notification-url": "https://packagist.org/downloads/", | ||
10878 | "license": [ | ||
10879 | "MIT" | ||
10880 | ], | ||
10881 | "authors": [ | ||
10882 | { | ||
10883 | "name": "Nicolas Grekas", | ||
10884 | "email": "p@tchwork.com" | ||
10885 | }, | ||
10886 | { | ||
10887 | "name": "Symfony Community", | ||
10888 | "homepage": "https://symfony.com/contributors" | ||
10889 | } | ||
10890 | ], | ||
10891 | "description": "Symfony PHPUnit Bridge", | ||
10892 | "homepage": "https://symfony.com", | ||
10893 | "time": "2019-05-08T13:47:25+00:00" | ||
10894 | } | ||
10895 | ], | ||
10896 | "aliases": [], | ||
10897 | "minimum-stability": "dev", | ||
10898 | "stability-flags": { | ||
10899 | "grandt/phpepub": 20, | ||
10900 | "craue/config-bundle": 20, | ||
10901 | "predis/predis": 20 | ||
10902 | }, | ||
10903 | "prefer-stable": true, | ||
10904 | "prefer-lowest": false, | ||
10905 | "platform": { | ||
10906 | "php": ">=7.1.3", | ||
10907 | "ext-pcre": "*", | ||
10908 | "ext-dom": "*", | ||
10909 | "ext-curl": "*", | ||
10910 | "ext-gd": "*", | ||
10911 | "ext-session": "*", | ||
10912 | "ext-ctype": "*", | ||
10913 | "ext-hash": "*", | ||
10914 | "ext-simplexml": "*", | ||
10915 | "ext-json": "*", | ||
10916 | "ext-mbstring": "*", | ||
10917 | "ext-xml": "*", | ||
10918 | "ext-iconv": "*", | ||
10919 | "ext-tokenizer": "*", | ||
10920 | "ext-pdo": "*", | ||
10921 | "ext-tidy": "*" | ||
10922 | }, | ||
10923 | "platform-dev": [], | ||
10924 | "platform-overrides": { | ||
10925 | "php": "7.1.3" | ||
10926 | } | ||
10927 | } | ||
diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index d0266ec7..b632cb8a 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile | |||
@@ -1,4 +1,4 @@ | |||
1 | FROM php:fpm | 1 | FROM php:7.2-fpm |
2 | 2 | ||
3 | # Default timezone. To change it, use the argument in the docker-compose.yml file | 3 | # Default timezone. To change it, use the argument in the docker-compose.yml file |
4 | ARG timezone='Europe/Paris' | 4 | ARG timezone='Europe/Paris' |
diff --git a/scripts/release.sh b/scripts/release.sh index ee08a688..e697e220 100755 --- a/scripts/release.sh +++ b/scripts/release.sh | |||
@@ -9,8 +9,8 @@ ENV=$4 | |||
9 | 9 | ||
10 | rm -rf $TMP_FOLDER/$RELEASE_FOLDER | 10 | rm -rf $TMP_FOLDER/$RELEASE_FOLDER |
11 | mkdir $TMP_FOLDER/$RELEASE_FOLDER | 11 | mkdir $TMP_FOLDER/$RELEASE_FOLDER |
12 | git clone git@github.com:wallabag/wallabag.git -b release-$VERSION $TMP_FOLDER/$RELEASE_FOLDER/$VERSION | 12 | git clone git@github.com:wallabag/wallabag.git $TMP_FOLDER/$RELEASE_FOLDER/$VERSION |
13 | cd $TMP_FOLDER/$RELEASE_FOLDER/$VERSION && SYMFONY_ENV=$ENV COMPOSER_MEMORY_LIMIT=-1 composer up -n --no-dev | 13 | cd $TMP_FOLDER/$RELEASE_FOLDER/$VERSION && SYMFONY_ENV=$ENV COMPOSER_MEMORY_LIMIT=-1 composer install -n --no-dev |
14 | cd $TMP_FOLDER/$RELEASE_FOLDER/$VERSION && php bin/console wallabag:install --env=$ENV -n | 14 | cd $TMP_FOLDER/$RELEASE_FOLDER/$VERSION && php bin/console wallabag:install --env=$ENV -n |
15 | cd $TMP_FOLDER/$RELEASE_FOLDER/$VERSION && php bin/console assets:install --env=$ENV --symlink --relative | 15 | cd $TMP_FOLDER/$RELEASE_FOLDER/$VERSION && php bin/console assets:install --env=$ENV --symlink --relative |
16 | cd $TMP_FOLDER/$RELEASE_FOLDER && tar czf wallabag-$VERSION.tar.gz --exclude="var/cache/*" --exclude="var/logs/*" --exclude="var/sessions/*" --exclude=".git" $VERSION | 16 | cd $TMP_FOLDER/$RELEASE_FOLDER && tar czf wallabag-$VERSION.tar.gz --exclude="var/cache/*" --exclude="var/logs/*" --exclude="var/sessions/*" --exclude=".git" $VERSION |
diff --git a/src/Wallabag/ApiBundle/Controller/EntryRestController.php b/src/Wallabag/ApiBundle/Controller/EntryRestController.php index 06520af9..9f933adb 100644 --- a/src/Wallabag/ApiBundle/Controller/EntryRestController.php +++ b/src/Wallabag/ApiBundle/Controller/EntryRestController.php | |||
@@ -14,6 +14,7 @@ use Wallabag\CoreBundle\Entity\Entry; | |||
14 | use Wallabag\CoreBundle\Entity\Tag; | 14 | use Wallabag\CoreBundle\Entity\Tag; |
15 | use Wallabag\CoreBundle\Event\EntryDeletedEvent; | 15 | use Wallabag\CoreBundle\Event\EntryDeletedEvent; |
16 | use Wallabag\CoreBundle\Event\EntrySavedEvent; | 16 | use Wallabag\CoreBundle\Event\EntrySavedEvent; |
17 | use Wallabag\CoreBundle\Helper\UrlHasher; | ||
17 | 18 | ||
18 | class EntryRestController extends WallabagRestController | 19 | class EntryRestController extends WallabagRestController |
19 | { | 20 | { |
@@ -43,50 +44,45 @@ class EntryRestController extends WallabagRestController | |||
43 | 44 | ||
44 | $returnId = (null === $request->query->get('return_id')) ? false : (bool) $request->query->get('return_id'); | 45 | $returnId = (null === $request->query->get('return_id')) ? false : (bool) $request->query->get('return_id'); |
45 | 46 | ||
46 | $urls = $request->query->get('urls', []); | ||
47 | $hashedUrls = $request->query->get('hashed_urls', []); | 47 | $hashedUrls = $request->query->get('hashed_urls', []); |
48 | $hashedUrl = $request->query->get('hashed_url', ''); | ||
49 | if (!empty($hashedUrl)) { | ||
50 | $hashedUrls[] = $hashedUrl; | ||
51 | } | ||
48 | 52 | ||
49 | // handle multiple urls first | 53 | $urls = $request->query->get('urls', []); |
50 | if (!empty($hashedUrls)) { | 54 | $url = $request->query->get('url', ''); |
51 | $results = []; | 55 | if (!empty($url)) { |
52 | foreach ($hashedUrls as $hashedUrl) { | 56 | $urls[] = $url; |
53 | $res = $repo->findByHashedUrlAndUserId($hashedUrl, $this->getUser()->getId()); | 57 | } |
54 | |||
55 | $results[$hashedUrl] = $this->returnExistInformation($res, $returnId); | ||
56 | } | ||
57 | 58 | ||
58 | return $this->sendResponse($results); | 59 | $urlHashMap = []; |
60 | foreach ($urls as $urlToHash) { | ||
61 | $urlHash = UrlHasher::hashUrl($urlToHash); | ||
62 | $hashedUrls[] = $urlHash; | ||
63 | $urlHashMap[$urlHash] = $urlToHash; | ||
59 | } | 64 | } |
60 | 65 | ||
61 | // @deprecated, to be remove in 3.0 | 66 | if (empty($hashedUrls)) { |
62 | if (!empty($urls)) { | 67 | throw $this->createAccessDeniedException('URL is empty?, logged user id: ' . $this->getUser()->getId()); |
63 | $results = []; | 68 | } |
64 | foreach ($urls as $url) { | ||
65 | $res = $repo->findByUrlAndUserId($url, $this->getUser()->getId()); | ||
66 | 69 | ||
67 | $results[$url] = $this->returnExistInformation($res, $returnId); | 70 | $results = []; |
68 | } | 71 | foreach ($hashedUrls as $hashedUrlToSearch) { |
72 | $res = $repo->findByHashedUrlAndUserId($hashedUrlToSearch, $this->getUser()->getId()); | ||
69 | 73 | ||
70 | return $this->sendResponse($results); | 74 | $results[$hashedUrlToSearch] = $this->returnExistInformation($res, $returnId); |
71 | } | 75 | } |
72 | 76 | ||
73 | // let's see if it is a simple url? | 77 | $results = $this->replaceUrlHashes($results, $urlHashMap); |
74 | $url = $request->query->get('url', ''); | ||
75 | $hashedUrl = $request->query->get('hashed_url', ''); | ||
76 | 78 | ||
77 | if (empty($url) && empty($hashedUrl)) { | 79 | if (!empty($url) || !empty($hashedUrl)) { |
78 | throw $this->createAccessDeniedException('URL is empty?, logged user id: ' . $this->getUser()->getId()); | 80 | $hu = array_keys($results)[0]; |
79 | } | ||
80 | 81 | ||
81 | $method = 'findByUrlAndUserId'; | 82 | return $this->sendResponse(['exists' => $results[$hu]]); |
82 | if (!empty($hashedUrl)) { | ||
83 | $method = 'findByHashedUrlAndUserId'; | ||
84 | $url = $hashedUrl; | ||
85 | } | 83 | } |
86 | 84 | ||
87 | $res = $repo->$method($url, $this->getUser()->getId()); | 85 | return $this->sendResponse($results); |
88 | |||
89 | return $this->sendResponse(['exists' => $this->returnExistInformation($res, $returnId)]); | ||
90 | } | 86 | } |
91 | 87 | ||
92 | /** | 88 | /** |
@@ -103,6 +99,7 @@ class EntryRestController extends WallabagRestController | |||
103 | * {"name"="tags", "dataType"="string", "required"=false, "format"="api,rest", "description"="a list of tags url encoded. Will returns entries that matches ALL tags."}, | 99 | * {"name"="tags", "dataType"="string", "required"=false, "format"="api,rest", "description"="a list of tags url encoded. Will returns entries that matches ALL tags."}, |
104 | * {"name"="since", "dataType"="integer", "required"=false, "format"="default '0'", "description"="The timestamp since when you want entries updated."}, | 100 | * {"name"="since", "dataType"="integer", "required"=false, "format"="default '0'", "description"="The timestamp since when you want entries updated."}, |
105 | * {"name"="public", "dataType"="integer", "required"=false, "format"="1 or 0, all entries by default", "description"="filter by entries with a public link"}, | 101 | * {"name"="public", "dataType"="integer", "required"=false, "format"="1 or 0, all entries by default", "description"="filter by entries with a public link"}, |
102 | * {"name"="detail", "dataType"="string", "required"=false, "format"="metadata or full, metadata by default", "description"="include content field if 'full'. 'full' by default for backward compatibility."}, | ||
106 | * } | 103 | * } |
107 | * ) | 104 | * ) |
108 | * | 105 | * |
@@ -121,6 +118,7 @@ class EntryRestController extends WallabagRestController | |||
121 | $perPage = (int) $request->query->get('perPage', 30); | 118 | $perPage = (int) $request->query->get('perPage', 30); |
122 | $tags = \is_array($request->query->get('tags')) ? '' : (string) $request->query->get('tags', ''); | 119 | $tags = \is_array($request->query->get('tags')) ? '' : (string) $request->query->get('tags', ''); |
123 | $since = $request->query->get('since', 0); | 120 | $since = $request->query->get('since', 0); |
121 | $detail = strtolower($request->query->get('detail', 'full')); | ||
124 | 122 | ||
125 | try { | 123 | try { |
126 | /** @var \Pagerfanta\Pagerfanta $pager */ | 124 | /** @var \Pagerfanta\Pagerfanta $pager */ |
@@ -132,7 +130,8 @@ class EntryRestController extends WallabagRestController | |||
132 | $sort, | 130 | $sort, |
133 | $order, | 131 | $order, |
134 | $since, | 132 | $since, |
135 | $tags | 133 | $tags, |
134 | $detail | ||
136 | ); | 135 | ); |
137 | } catch (\Exception $e) { | 136 | } catch (\Exception $e) { |
138 | throw new BadRequestHttpException($e->getMessage()); | 137 | throw new BadRequestHttpException($e->getMessage()); |
@@ -156,6 +155,7 @@ class EntryRestController extends WallabagRestController | |||
156 | 'perPage' => $perPage, | 155 | 'perPage' => $perPage, |
157 | 'tags' => $tags, | 156 | 'tags' => $tags, |
158 | 'since' => $since, | 157 | 'since' => $since, |
158 | 'detail' => $detail, | ||
159 | ], | 159 | ], |
160 | true | 160 | true |
161 | ) | 161 | ) |
@@ -365,9 +365,7 @@ class EntryRestController extends WallabagRestController | |||
365 | 'language' => !empty($data['language']) ? $data['language'] : $entry->getLanguage(), | 365 | 'language' => !empty($data['language']) ? $data['language'] : $entry->getLanguage(), |
366 | 'date' => !empty($data['publishedAt']) ? $data['publishedAt'] : $entry->getPublishedAt(), | 366 | 'date' => !empty($data['publishedAt']) ? $data['publishedAt'] : $entry->getPublishedAt(), |
367 | // faking the open graph preview picture | 367 | // faking the open graph preview picture |
368 | 'open_graph' => [ | 368 | 'image' => !empty($data['picture']) ? $data['picture'] : $entry->getPreviewPicture(), |
369 | 'og_image' => !empty($data['picture']) ? $data['picture'] : $entry->getPreviewPicture(), | ||
370 | ], | ||
371 | 'authors' => \is_string($data['authors']) ? explode(',', $data['authors']) : $entry->getPublishedBy(), | 369 | 'authors' => \is_string($data['authors']) ? explode(',', $data['authors']) : $entry->getPublishedBy(), |
372 | ] | 370 | ] |
373 | ); | 371 | ); |
@@ -566,7 +564,7 @@ class EntryRestController extends WallabagRestController | |||
566 | } | 564 | } |
567 | 565 | ||
568 | // if refreshing entry failed, don't save it | 566 | // if refreshing entry failed, don't save it |
569 | if ($this->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) { | 567 | if ($this->container->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) { |
570 | return new JsonResponse([], 304); | 568 | return new JsonResponse([], 304); |
571 | } | 569 | } |
572 | 570 | ||
@@ -803,6 +801,24 @@ class EntryRestController extends WallabagRestController | |||
803 | } | 801 | } |
804 | 802 | ||
805 | /** | 803 | /** |
804 | * Replace the hashedUrl keys in $results with the unhashed URL from the | ||
805 | * request, as recorded in $urlHashMap. | ||
806 | */ | ||
807 | private function replaceUrlHashes(array $results, array $urlHashMap) | ||
808 | { | ||
809 | $newResults = []; | ||
810 | foreach ($results as $hash => $res) { | ||
811 | if (isset($urlHashMap[$hash])) { | ||
812 | $newResults[$urlHashMap[$hash]] = $res; | ||
813 | } else { | ||
814 | $newResults[$hash] = $res; | ||
815 | } | ||
816 | } | ||
817 | |||
818 | return $newResults; | ||
819 | } | ||
820 | |||
821 | /** | ||
806 | * Retrieve value from the request. | 822 | * Retrieve value from the request. |
807 | * Used for POST & PATCH on a an entry. | 823 | * Used for POST & PATCH on a an entry. |
808 | * | 824 | * |
@@ -830,8 +846,8 @@ class EntryRestController extends WallabagRestController | |||
830 | /** | 846 | /** |
831 | * Return information about the entry if it exist and depending on the id or not. | 847 | * Return information about the entry if it exist and depending on the id or not. |
832 | * | 848 | * |
833 | * @param Entry|null $entry | 849 | * @param Entry|bool|null $entry |
834 | * @param bool $returnId | 850 | * @param bool $returnId |
835 | * | 851 | * |
836 | * @return bool|int | 852 | * @return bool|int |
837 | */ | 853 | */ |
diff --git a/src/Wallabag/ApiBundle/Controller/UserRestController.php b/src/Wallabag/ApiBundle/Controller/UserRestController.php index 3a4dafcd..1b10a076 100644 --- a/src/Wallabag/ApiBundle/Controller/UserRestController.php +++ b/src/Wallabag/ApiBundle/Controller/UserRestController.php | |||
@@ -45,7 +45,7 @@ class UserRestController extends WallabagRestController | |||
45 | */ | 45 | */ |
46 | public function putUserAction(Request $request) | 46 | public function putUserAction(Request $request) |
47 | { | 47 | { |
48 | if (!$this->getParameter('fosuser_registration') || !$this->get('craue_config')->get('api_user_registration')) { | 48 | if (!$this->container->getParameter('fosuser_registration') || !$this->get('craue_config')->get('api_user_registration')) { |
49 | $json = $this->get('jms_serializer')->serialize(['error' => "Server doesn't allow registrations"], 'json'); | 49 | $json = $this->get('jms_serializer')->serialize(['error' => "Server doesn't allow registrations"], 'json'); |
50 | 50 | ||
51 | return (new JsonResponse()) | 51 | return (new JsonResponse()) |
diff --git a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php index f18b0910..44fd9683 100644 --- a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php | |||
@@ -2,13 +2,13 @@ | |||
2 | 2 | ||
3 | namespace Wallabag\ApiBundle\Controller; | 3 | namespace Wallabag\ApiBundle\Controller; |
4 | 4 | ||
5 | use FOS\RestBundle\Controller\FOSRestController; | 5 | use FOS\RestBundle\Controller\AbstractFOSRestController; |
6 | use JMS\Serializer\SerializationContext; | 6 | use JMS\Serializer\SerializationContext; |
7 | use Nelmio\ApiDocBundle\Annotation\ApiDoc; | 7 | use Nelmio\ApiDocBundle\Annotation\ApiDoc; |
8 | use Symfony\Component\HttpFoundation\JsonResponse; | 8 | use Symfony\Component\HttpFoundation\JsonResponse; |
9 | use Symfony\Component\Security\Core\Exception\AccessDeniedException; | 9 | use Symfony\Component\Security\Core\Exception\AccessDeniedException; |
10 | 10 | ||
11 | class WallabagRestController extends FOSRestController | 11 | class WallabagRestController extends AbstractFOSRestController |
12 | { | 12 | { |
13 | /** | 13 | /** |
14 | * Retrieve version number. | 14 | * Retrieve version number. |
diff --git a/src/Wallabag/ApiBundle/Entity/AccessToken.php b/src/Wallabag/ApiBundle/Entity/AccessToken.php index 5e4099dd..98e0af3e 100644 --- a/src/Wallabag/ApiBundle/Entity/AccessToken.php +++ b/src/Wallabag/ApiBundle/Entity/AccessToken.php | |||
@@ -42,6 +42,7 @@ class AccessToken extends BaseAccessToken | |||
42 | 42 | ||
43 | /** | 43 | /** |
44 | * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User") | 44 | * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User") |
45 | * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE") | ||
45 | */ | 46 | */ |
46 | protected $user; | 47 | protected $user; |
47 | } | 48 | } |
diff --git a/src/Wallabag/ApiBundle/Entity/AuthCode.php b/src/Wallabag/ApiBundle/Entity/AuthCode.php index 5fa205ac..7c9c8539 100644 --- a/src/Wallabag/ApiBundle/Entity/AuthCode.php +++ b/src/Wallabag/ApiBundle/Entity/AuthCode.php | |||
@@ -42,6 +42,7 @@ class AuthCode extends BaseAuthCode | |||
42 | 42 | ||
43 | /** | 43 | /** |
44 | * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User") | 44 | * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User") |
45 | * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE") | ||
45 | */ | 46 | */ |
46 | protected $user; | 47 | protected $user; |
47 | } | 48 | } |
diff --git a/src/Wallabag/ApiBundle/Entity/RefreshToken.php b/src/Wallabag/ApiBundle/Entity/RefreshToken.php index dd8e9c63..55a507e1 100644 --- a/src/Wallabag/ApiBundle/Entity/RefreshToken.php +++ b/src/Wallabag/ApiBundle/Entity/RefreshToken.php | |||
@@ -42,6 +42,7 @@ class RefreshToken extends BaseRefreshToken | |||
42 | 42 | ||
43 | /** | 43 | /** |
44 | * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User") | 44 | * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User") |
45 | * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE") | ||
45 | */ | 46 | */ |
46 | protected $user; | 47 | protected $user; |
47 | } | 48 | } |
diff --git a/src/Wallabag/CoreBundle/Command/GenerateUrlHashesCommand.php b/src/Wallabag/CoreBundle/Command/GenerateUrlHashesCommand.php index 45bd8c5f..8f2bff11 100644 --- a/src/Wallabag/CoreBundle/Command/GenerateUrlHashesCommand.php +++ b/src/Wallabag/CoreBundle/Command/GenerateUrlHashesCommand.php | |||
@@ -7,6 +7,7 @@ use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; | |||
7 | use Symfony\Component\Console\Input\InputArgument; | 7 | use Symfony\Component\Console\Input\InputArgument; |
8 | use Symfony\Component\Console\Input\InputInterface; | 8 | use Symfony\Component\Console\Input\InputInterface; |
9 | use Symfony\Component\Console\Output\OutputInterface; | 9 | use Symfony\Component\Console\Output\OutputInterface; |
10 | use Wallabag\CoreBundle\Helper\UrlHasher; | ||
10 | use Wallabag\UserBundle\Entity\User; | 11 | use Wallabag\UserBundle\Entity\User; |
11 | 12 | ||
12 | class GenerateUrlHashesCommand extends ContainerAwareCommand | 13 | class GenerateUrlHashesCommand extends ContainerAwareCommand |
@@ -65,7 +66,7 @@ class GenerateUrlHashesCommand extends ContainerAwareCommand | |||
65 | 66 | ||
66 | $i = 1; | 67 | $i = 1; |
67 | foreach ($entries as $entry) { | 68 | foreach ($entries as $entry) { |
68 | $entry->setHashedUrl(hash('sha1', $entry->getUrl())); | 69 | $entry->setHashedUrl(UrlHasher::hashUrl($entry->getUrl())); |
69 | $em->persist($entry); | 70 | $em->persist($entry); |
70 | 71 | ||
71 | if (0 === ($i % 20)) { | 72 | if (0 === ($i % 20)) { |
@@ -84,7 +85,7 @@ class GenerateUrlHashesCommand extends ContainerAwareCommand | |||
84 | * | 85 | * |
85 | * @param string $username | 86 | * @param string $username |
86 | * | 87 | * |
87 | * @return \Wallabag\UserBundle\Entity\User | 88 | * @return User |
88 | */ | 89 | */ |
89 | private function getUser($username) | 90 | private function getUser($username) |
90 | { | 91 | { |
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php index 3b281d48..cea41303 100644 --- a/src/Wallabag/CoreBundle/Controller/ConfigController.php +++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php | |||
@@ -300,6 +300,34 @@ class ConfigController extends Controller | |||
300 | } | 300 | } |
301 | 301 | ||
302 | /** | 302 | /** |
303 | * @param Request $request | ||
304 | * | ||
305 | * @Route("/revoke-token", name="revoke_token") | ||
306 | * | ||
307 | * @return RedirectResponse|JsonResponse | ||
308 | */ | ||
309 | public function revokeTokenAction(Request $request) | ||
310 | { | ||
311 | $config = $this->getConfig(); | ||
312 | $config->setFeedToken(null); | ||
313 | |||
314 | $em = $this->getDoctrine()->getManager(); | ||
315 | $em->persist($config); | ||
316 | $em->flush(); | ||
317 | |||
318 | if ($request->isXmlHttpRequest()) { | ||
319 | return new JsonResponse(); | ||
320 | } | ||
321 | |||
322 | $this->addFlash( | ||
323 | 'notice', | ||
324 | 'flashes.config.notice.feed_token_revoked' | ||
325 | ); | ||
326 | |||
327 | return $this->redirect($this->generateUrl('config') . '#set2'); | ||
328 | } | ||
329 | |||
330 | /** | ||
303 | * Deletes a tagging rule and redirect to the config homepage. | 331 | * Deletes a tagging rule and redirect to the config homepage. |
304 | * | 332 | * |
305 | * @param TaggingRule $rule | 333 | * @param TaggingRule $rule |
diff --git a/src/Wallabag/CoreBundle/DataFixtures/SiteCredentialFixtures.php b/src/Wallabag/CoreBundle/DataFixtures/SiteCredentialFixtures.php index c73173e8..9a7d116f 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/SiteCredentialFixtures.php +++ b/src/Wallabag/CoreBundle/DataFixtures/SiteCredentialFixtures.php | |||
@@ -5,20 +5,39 @@ namespace Wallabag\CoreBundle\DataFixtures; | |||
5 | use Doctrine\Bundle\FixturesBundle\Fixture; | 5 | use Doctrine\Bundle\FixturesBundle\Fixture; |
6 | use Doctrine\Common\DataFixtures\DependentFixtureInterface; | 6 | use Doctrine\Common\DataFixtures\DependentFixtureInterface; |
7 | use Doctrine\Common\Persistence\ObjectManager; | 7 | use Doctrine\Common\Persistence\ObjectManager; |
8 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||
9 | use Symfony\Component\DependencyInjection\ContainerInterface; | ||
8 | use Wallabag\CoreBundle\Entity\SiteCredential; | 10 | use Wallabag\CoreBundle\Entity\SiteCredential; |
9 | use Wallabag\UserBundle\DataFixtures\UserFixtures; | 11 | use Wallabag\UserBundle\DataFixtures\UserFixtures; |
10 | 12 | ||
11 | class SiteCredentialFixtures extends Fixture implements DependentFixtureInterface | 13 | class SiteCredentialFixtures extends Fixture implements DependentFixtureInterface, ContainerAwareInterface |
12 | { | 14 | { |
13 | /** | 15 | /** |
16 | * @var ContainerInterface | ||
17 | */ | ||
18 | private $container; | ||
19 | |||
20 | public function setContainer(ContainerInterface $container = null) | ||
21 | { | ||
22 | $this->container = $container; | ||
23 | } | ||
24 | |||
25 | /** | ||
14 | * {@inheritdoc} | 26 | * {@inheritdoc} |
15 | */ | 27 | */ |
16 | public function load(ObjectManager $manager) | 28 | public function load(ObjectManager $manager) |
17 | { | 29 | { |
18 | $credential = new SiteCredential($this->getReference('admin-user')); | 30 | $credential = new SiteCredential($this->getReference('admin-user')); |
19 | $credential->setHost('example.com'); | 31 | $credential->setHost('.super.com'); |
20 | $credential->setUsername('foo'); | 32 | $credential->setUsername($this->container->get('wallabag_core.helper.crypto_proxy')->crypt('.super')); |
21 | $credential->setPassword('bar'); | 33 | $credential->setPassword($this->container->get('wallabag_core.helper.crypto_proxy')->crypt('bar')); |
34 | |||
35 | $manager->persist($credential); | ||
36 | |||
37 | $credential = new SiteCredential($this->getReference('admin-user')); | ||
38 | $credential->setHost('paywall.example.com'); | ||
39 | $credential->setUsername($this->container->get('wallabag_core.helper.crypto_proxy')->crypt('paywall.example')); | ||
40 | $credential->setPassword($this->container->get('wallabag_core.helper.crypto_proxy')->crypt('bar')); | ||
22 | 41 | ||
23 | $manager->persist($credential); | 42 | $manager->persist($credential); |
24 | 43 | ||
diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index c3fb87d2..4d5e6fc9 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php | |||
@@ -13,6 +13,7 @@ use JMS\Serializer\Annotation\XmlRoot; | |||
13 | use Symfony\Component\Validator\Constraints as Assert; | 13 | use Symfony\Component\Validator\Constraints as Assert; |
14 | use Wallabag\AnnotationBundle\Entity\Annotation; | 14 | use Wallabag\AnnotationBundle\Entity\Annotation; |
15 | use Wallabag\CoreBundle\Helper\EntityTimestampsTrait; | 15 | use Wallabag\CoreBundle\Helper\EntityTimestampsTrait; |
16 | use Wallabag\CoreBundle\Helper\UrlHasher; | ||
16 | use Wallabag\UserBundle\Entity\User; | 17 | use Wallabag\UserBundle\Entity\User; |
17 | 18 | ||
18 | /** | 19 | /** |
@@ -26,7 +27,8 @@ use Wallabag\UserBundle\Entity\User; | |||
26 | * indexes={ | 27 | * indexes={ |
27 | * @ORM\Index(name="created_at", columns={"created_at"}), | 28 | * @ORM\Index(name="created_at", columns={"created_at"}), |
28 | * @ORM\Index(name="uid", columns={"uid"}), | 29 | * @ORM\Index(name="uid", columns={"uid"}), |
29 | * @ORM\Index(name="hashed_url_user_id", columns={"user_id", "hashed_url"}, options={"lengths"={null, 40}}) | 30 | * @ORM\Index(name="hashed_url_user_id", columns={"user_id", "hashed_url"}, options={"lengths"={null, 40}}), |
31 | * @ORM\Index(name="hashed_given_url_user_id", columns={"user_id", "hashed_given_url"}, options={"lengths"={null, 40}}) | ||
30 | * } | 32 | * } |
31 | * ) | 33 | * ) |
32 | * @ORM\HasLifecycleCallbacks() | 34 | * @ORM\HasLifecycleCallbacks() |
@@ -67,6 +69,8 @@ class Entry | |||
67 | private $title; | 69 | private $title; |
68 | 70 | ||
69 | /** | 71 | /** |
72 | * Define the url fetched by wallabag (the final url after potential redirections). | ||
73 | * | ||
70 | * @var string | 74 | * @var string |
71 | * | 75 | * |
72 | * @Assert\NotBlank() | 76 | * @Assert\NotBlank() |
@@ -84,6 +88,35 @@ class Entry | |||
84 | private $hashedUrl; | 88 | private $hashedUrl; |
85 | 89 | ||
86 | /** | 90 | /** |
91 | * From where user retrieved/found the url (an other article, a twitter, or the given_url if non are provided). | ||
92 | * | ||
93 | * @var string | ||
94 | * | ||
95 | * @ORM\Column(name="origin_url", type="text", nullable=true) | ||
96 | * | ||
97 | * @Groups({"entries_for_user", "export_all"}) | ||
98 | */ | ||
99 | private $originUrl; | ||
100 | |||
101 | /** | ||
102 | * Define the url entered by the user (without redirections). | ||
103 | * | ||
104 | * @var string | ||
105 | * | ||
106 | * @ORM\Column(name="given_url", type="text", nullable=true) | ||
107 | * | ||
108 | * @Groups({"entries_for_user", "export_all"}) | ||
109 | */ | ||
110 | private $givenUrl; | ||
111 | |||
112 | /** | ||
113 | * @var string | ||
114 | * | ||
115 | * @ORM\Column(name="hashed_given_url", type="string", length=40, nullable=true) | ||
116 | */ | ||
117 | private $hashedGivenUrl; | ||
118 | |||
119 | /** | ||
87 | * @var bool | 120 | * @var bool |
88 | * | 121 | * |
89 | * @Exclude | 122 | * @Exclude |
@@ -262,15 +295,6 @@ class Entry | |||
262 | */ | 295 | */ |
263 | private $tags; | 296 | private $tags; |
264 | 297 | ||
265 | /** | ||
266 | * @var string | ||
267 | * | ||
268 | * @ORM\Column(name="origin_url", type="text", nullable=true) | ||
269 | * | ||
270 | * @Groups({"entries_for_user", "export_all"}) | ||
271 | */ | ||
272 | private $originUrl; | ||
273 | |||
274 | /* | 298 | /* |
275 | * @param User $user | 299 | * @param User $user |
276 | */ | 300 | */ |
@@ -324,7 +348,7 @@ class Entry | |||
324 | public function setUrl($url) | 348 | public function setUrl($url) |
325 | { | 349 | { |
326 | $this->url = $url; | 350 | $this->url = $url; |
327 | $this->hashedUrl = hash('sha1', $url); | 351 | $this->hashedUrl = UrlHasher::hashUrl($url); |
328 | 352 | ||
329 | return $this; | 353 | return $this; |
330 | } | 354 | } |
@@ -770,7 +794,7 @@ class Entry | |||
770 | } | 794 | } |
771 | 795 | ||
772 | /** | 796 | /** |
773 | * @return string | 797 | * @return string|null |
774 | */ | 798 | */ |
775 | public function getUid() | 799 | public function getUid() |
776 | { | 800 | { |
@@ -922,6 +946,31 @@ class Entry | |||
922 | } | 946 | } |
923 | 947 | ||
924 | /** | 948 | /** |
949 | * Set given url. | ||
950 | * | ||
951 | * @param string $givenUrl | ||
952 | * | ||
953 | * @return Entry | ||
954 | */ | ||
955 | public function setGivenUrl($givenUrl) | ||
956 | { | ||
957 | $this->givenUrl = $givenUrl; | ||
958 | $this->hashedGivenUrl = UrlHasher::hashUrl($givenUrl); | ||
959 | |||
960 | return $this; | ||
961 | } | ||
962 | |||
963 | /** | ||
964 | * Get given url. | ||
965 | * | ||
966 | * @return string | ||
967 | */ | ||
968 | public function getGivenUrl() | ||
969 | { | ||
970 | return $this->givenUrl; | ||
971 | } | ||
972 | |||
973 | /** | ||
925 | * @return string | 974 | * @return string |
926 | */ | 975 | */ |
927 | public function getHashedUrl() | 976 | public function getHashedUrl() |
diff --git a/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php b/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php index 90e00c62..c7502bac 100644 --- a/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php +++ b/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php | |||
@@ -62,11 +62,24 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder | |||
62 | $host = substr($host, 4); | 62 | $host = substr($host, 4); |
63 | } | 63 | } |
64 | 64 | ||
65 | $credentials = null; | 65 | if (!$this->currentUser) { |
66 | if ($this->currentUser) { | 66 | $this->logger->debug('Auth: no current user defined.'); |
67 | $credentials = $this->credentialRepository->findOneByHostAndUser($host, $this->currentUser->getId()); | 67 | |
68 | return false; | ||
69 | } | ||
70 | |||
71 | $hosts = [$host]; | ||
72 | // will try to see for a host without the first subdomain (fr.example.org & .example.org) | ||
73 | $split = explode('.', $host); | ||
74 | |||
75 | if (\count($split) > 1) { | ||
76 | // remove first subdomain | ||
77 | array_shift($split); | ||
78 | $hosts[] = '.' . implode('.', $split); | ||
68 | } | 79 | } |
69 | 80 | ||
81 | $credentials = $this->credentialRepository->findOneByHostsAndUser($hosts, $this->currentUser->getId()); | ||
82 | |||
70 | if (null === $credentials) { | 83 | if (null === $credentials) { |
71 | $this->logger->debug('Auth: no credentials available for host.', ['host' => $host]); | 84 | $this->logger->debug('Auth: no credentials available for host.', ['host' => $host]); |
72 | 85 | ||
diff --git a/src/Wallabag/CoreBundle/Helper/ContentProxy.php b/src/Wallabag/CoreBundle/Helper/ContentProxy.php index 31953f12..5901df8b 100644 --- a/src/Wallabag/CoreBundle/Helper/ContentProxy.php +++ b/src/Wallabag/CoreBundle/Helper/ContentProxy.php | |||
@@ -12,8 +12,8 @@ use Wallabag\CoreBundle\Entity\Entry; | |||
12 | use Wallabag\CoreBundle\Tools\Utils; | 12 | use Wallabag\CoreBundle\Tools\Utils; |
13 | 13 | ||
14 | /** | 14 | /** |
15 | * This kind of proxy class take care of getting the content from an url | 15 | * This kind of proxy class takes care of getting the content from an url |
16 | * and update the entry with what it found. | 16 | * and updates the entry with what it found. |
17 | */ | 17 | */ |
18 | class ContentProxy | 18 | class ContentProxy |
19 | { | 19 | { |
@@ -47,13 +47,18 @@ class ContentProxy | |||
47 | */ | 47 | */ |
48 | public function updateEntry(Entry $entry, $url, array $content = [], $disableContentUpdate = false) | 48 | public function updateEntry(Entry $entry, $url, array $content = [], $disableContentUpdate = false) |
49 | { | 49 | { |
50 | $this->graby->toggleImgNoReferrer(true); | ||
50 | if (!empty($content['html'])) { | 51 | if (!empty($content['html'])) { |
51 | $content['html'] = $this->graby->cleanupHtml($content['html'], $url); | 52 | $content['html'] = $this->graby->cleanupHtml($content['html'], $url); |
52 | } | 53 | } |
53 | 54 | ||
54 | if ((empty($content) || false === $this->validateContent($content)) && false === $disableContentUpdate) { | 55 | if ((empty($content) || false === $this->validateContent($content)) && false === $disableContentUpdate) { |
55 | $fetchedContent = $this->graby->fetchContent($url); | 56 | $fetchedContent = $this->graby->fetchContent($url); |
56 | $fetchedContent['title'] = $this->sanitizeContentTitle($fetchedContent['title'], $fetchedContent['content_type']); | 57 | |
58 | $fetchedContent['title'] = $this->sanitizeContentTitle( | ||
59 | $fetchedContent['title'], | ||
60 | isset($fetchedContent['headers']['content-type']) ? $fetchedContent['headers']['content-type'] : '' | ||
61 | ); | ||
57 | 62 | ||
58 | // when content is imported, we have information in $content | 63 | // when content is imported, we have information in $content |
59 | // in case fetching content goes bad, we'll keep the imported information instead of overriding them | 64 | // in case fetching content goes bad, we'll keep the imported information instead of overriding them |
@@ -73,6 +78,8 @@ class ContentProxy | |||
73 | $entry->setUrl($url); | 78 | $entry->setUrl($url); |
74 | } | 79 | } |
75 | 80 | ||
81 | $entry->setGivenUrl($url); | ||
82 | |||
76 | $this->stockEntry($entry, $content); | 83 | $this->stockEntry($entry, $content); |
77 | } | 84 | } |
78 | 85 | ||
@@ -187,8 +194,8 @@ class ContentProxy | |||
187 | /** | 194 | /** |
188 | * Try to sanitize the title of the fetched content from wrong character encodings and invalid UTF-8 character. | 195 | * Try to sanitize the title of the fetched content from wrong character encodings and invalid UTF-8 character. |
189 | * | 196 | * |
190 | * @param $title | 197 | * @param string $title |
191 | * @param $contentType | 198 | * @param string $contentType |
192 | * | 199 | * |
193 | * @return string | 200 | * @return string |
194 | */ | 201 | */ |
@@ -252,16 +259,14 @@ class ContentProxy | |||
252 | 259 | ||
253 | if (!empty($content['title'])) { | 260 | if (!empty($content['title'])) { |
254 | $entry->setTitle($content['title']); | 261 | $entry->setTitle($content['title']); |
255 | } elseif (!empty($content['open_graph']['og_title'])) { | ||
256 | $entry->setTitle($content['open_graph']['og_title']); | ||
257 | } | 262 | } |
258 | 263 | ||
259 | if (empty($content['html'])) { | 264 | if (empty($content['html'])) { |
260 | $content['html'] = $this->fetchingErrorMessage; | 265 | $content['html'] = $this->fetchingErrorMessage; |
261 | 266 | ||
262 | if (!empty($content['open_graph']['og_description'])) { | 267 | if (!empty($content['description'])) { |
263 | $content['html'] .= '<p><i>But we found a short description: </i></p>'; | 268 | $content['html'] .= '<p><i>But we found a short description: </i></p>'; |
264 | $content['html'] .= $content['open_graph']['og_description']; | 269 | $content['html'] .= $content['description']; |
265 | } | 270 | } |
266 | } | 271 | } |
267 | 272 | ||
@@ -276,8 +281,8 @@ class ContentProxy | |||
276 | $entry->setPublishedBy($content['authors']); | 281 | $entry->setPublishedBy($content['authors']); |
277 | } | 282 | } |
278 | 283 | ||
279 | if (!empty($content['all_headers']) && $this->storeArticleHeaders) { | 284 | if (!empty($content['headers'])) { |
280 | $entry->setHeaders($content['all_headers']); | 285 | $entry->setHeaders($content['headers']); |
281 | } | 286 | } |
282 | 287 | ||
283 | if (!empty($content['date'])) { | 288 | if (!empty($content['date'])) { |
@@ -288,17 +293,30 @@ class ContentProxy | |||
288 | $this->updateLanguage($entry, $content['language']); | 293 | $this->updateLanguage($entry, $content['language']); |
289 | } | 294 | } |
290 | 295 | ||
291 | if (!empty($content['open_graph']['og_image'])) { | 296 | $previewPictureUrl = ''; |
292 | $this->updatePreviewPicture($entry, $content['open_graph']['og_image']); | 297 | if (!empty($content['image'])) { |
298 | $previewPictureUrl = $content['image']; | ||
293 | } | 299 | } |
294 | 300 | ||
295 | // if content is an image, define it as a preview too | 301 | // if content is an image, define it as a preview too |
296 | if (!empty($content['content_type']) && \in_array($this->mimeGuesser->guess($content['content_type']), ['jpeg', 'jpg', 'gif', 'png'], true)) { | 302 | if (!empty($content['headers']['content-type']) && \in_array($this->mimeGuesser->guess($content['headers']['content-type']), ['jpeg', 'jpg', 'gif', 'png'], true)) { |
297 | $this->updatePreviewPicture($entry, $content['url']); | 303 | $previewPictureUrl = $content['url']; |
304 | } elseif (empty($previewPictureUrl)) { | ||
305 | $this->logger->debug('Extracting images from content to provide a default preview picture'); | ||
306 | $imagesUrls = DownloadImages::extractImagesUrlsFromHtml($content['html']); | ||
307 | $this->logger->debug(\count($imagesUrls) . ' pictures found'); | ||
308 | |||
309 | if (!empty($imagesUrls)) { | ||
310 | $previewPictureUrl = $imagesUrls[0]; | ||
311 | } | ||
312 | } | ||
313 | |||
314 | if (!empty($content['headers']['content-type'])) { | ||
315 | $entry->setMimetype($content['headers']['content-type']); | ||
298 | } | 316 | } |
299 | 317 | ||
300 | if (!empty($content['content_type'])) { | 318 | if (!empty($previewPictureUrl)) { |
301 | $entry->setMimetype($content['content_type']); | 319 | $this->updatePreviewPicture($entry, $previewPictureUrl); |
302 | } | 320 | } |
303 | 321 | ||
304 | try { | 322 | try { |
diff --git a/src/Wallabag/CoreBundle/Helper/DownloadImages.php b/src/Wallabag/CoreBundle/Helper/DownloadImages.php index 9a7e9828..1d361d6d 100644 --- a/src/Wallabag/CoreBundle/Helper/DownloadImages.php +++ b/src/Wallabag/CoreBundle/Helper/DownloadImages.php | |||
@@ -2,8 +2,15 @@ | |||
2 | 2 | ||
3 | namespace Wallabag\CoreBundle\Helper; | 3 | namespace Wallabag\CoreBundle\Helper; |
4 | 4 | ||
5 | use GuzzleHttp\Client; | 5 | use GuzzleHttp\Psr7\Uri; |
6 | use GuzzleHttp\Message\Response; | 6 | use GuzzleHttp\Psr7\UriResolver; |
7 | use Http\Client\Common\HttpMethodsClient; | ||
8 | use Http\Client\Common\Plugin\ErrorPlugin; | ||
9 | use Http\Client\Common\PluginClient; | ||
10 | use Http\Client\HttpClient; | ||
11 | use Http\Discovery\MessageFactoryDiscovery; | ||
12 | use Http\Message\MessageFactory; | ||
13 | use Psr\Http\Message\ResponseInterface; | ||
7 | use Psr\Log\LoggerInterface; | 14 | use Psr\Log\LoggerInterface; |
8 | use Symfony\Component\DomCrawler\Crawler; | 15 | use Symfony\Component\DomCrawler\Crawler; |
9 | use Symfony\Component\Finder\Finder; | 16 | use Symfony\Component\Finder\Finder; |
@@ -19,9 +26,9 @@ class DownloadImages | |||
19 | private $mimeGuesser; | 26 | private $mimeGuesser; |
20 | private $wallabagUrl; | 27 | private $wallabagUrl; |
21 | 28 | ||
22 | public function __construct(Client $client, $baseFolder, $wallabagUrl, LoggerInterface $logger) | 29 | public function __construct(HttpClient $client, $baseFolder, $wallabagUrl, LoggerInterface $logger, MessageFactory $messageFactory = null) |
23 | { | 30 | { |
24 | $this->client = $client; | 31 | $this->client = new HttpMethodsClient(new PluginClient($client, [new ErrorPlugin()]), $messageFactory ?: MessageFactoryDiscovery::find()); |
25 | $this->baseFolder = $baseFolder; | 32 | $this->baseFolder = $baseFolder; |
26 | $this->wallabagUrl = rtrim($wallabagUrl, '/'); | 33 | $this->wallabagUrl = rtrim($wallabagUrl, '/'); |
27 | $this->logger = $logger; | 34 | $this->logger = $logger; |
@@ -31,6 +38,23 @@ class DownloadImages | |||
31 | } | 38 | } |
32 | 39 | ||
33 | /** | 40 | /** |
41 | * Process the html and extract images URLs from it. | ||
42 | * | ||
43 | * @param string $html | ||
44 | * | ||
45 | * @return string[] | ||
46 | */ | ||
47 | public static function extractImagesUrlsFromHtml($html) | ||
48 | { | ||
49 | $crawler = new Crawler($html); | ||
50 | $imagesCrawler = $crawler->filterXpath('//img'); | ||
51 | $imagesUrls = $imagesCrawler->extract(['src']); | ||
52 | $imagesSrcsetUrls = self::getSrcsetUrls($imagesCrawler); | ||
53 | |||
54 | return array_unique(array_merge($imagesUrls, $imagesSrcsetUrls)); | ||
55 | } | ||
56 | |||
57 | /** | ||
34 | * Process the html and extract image from it, save them to local and return the updated html. | 58 | * Process the html and extract image from it, save them to local and return the updated html. |
35 | * | 59 | * |
36 | * @param int $entryId ID of the entry | 60 | * @param int $entryId ID of the entry |
@@ -41,13 +65,7 @@ class DownloadImages | |||
41 | */ | 65 | */ |
42 | public function processHtml($entryId, $html, $url) | 66 | public function processHtml($entryId, $html, $url) |
43 | { | 67 | { |
44 | $crawler = new Crawler($html); | 68 | $imagesUrls = self::extractImagesUrlsFromHtml($html); |
45 | $imagesCrawler = $crawler | ||
46 | ->filterXpath('//img'); | ||
47 | $imagesUrls = $imagesCrawler | ||
48 | ->extract(['src']); | ||
49 | $imagesSrcsetUrls = $this->getSrcsetUrls($imagesCrawler); | ||
50 | $imagesUrls = array_unique(array_merge($imagesUrls, $imagesSrcsetUrls)); | ||
51 | 69 | ||
52 | $relativePath = $this->getRelativePath($entryId); | 70 | $relativePath = $this->getRelativePath($entryId); |
53 | 71 | ||
@@ -122,7 +140,7 @@ class DownloadImages | |||
122 | $localPath = $folderPath . '/' . $hashImage . '.' . $ext; | 140 | $localPath = $folderPath . '/' . $hashImage . '.' . $ext; |
123 | 141 | ||
124 | try { | 142 | try { |
125 | $im = imagecreatefromstring($res->getBody()); | 143 | $im = imagecreatefromstring((string) $res->getBody()); |
126 | } catch (\Exception $e) { | 144 | } catch (\Exception $e) { |
127 | $im = false; | 145 | $im = false; |
128 | } | 146 | } |
@@ -199,25 +217,28 @@ class DownloadImages | |||
199 | * | 217 | * |
200 | * @return array An array of urls | 218 | * @return array An array of urls |
201 | */ | 219 | */ |
202 | private function getSrcsetUrls(Crawler $imagesCrawler) | 220 | private static function getSrcsetUrls(Crawler $imagesCrawler) |
203 | { | 221 | { |
204 | $urls = []; | 222 | $urls = []; |
205 | $iterator = $imagesCrawler | 223 | $iterator = $imagesCrawler->getIterator(); |
206 | ->getIterator(); | 224 | |
207 | while ($iterator->valid()) { | 225 | while ($iterator->valid()) { |
208 | $srcsetAttribute = $iterator->current()->getAttribute('srcset'); | 226 | $srcsetAttribute = $iterator->current()->getAttribute('srcset'); |
227 | |||
209 | if ('' !== $srcsetAttribute) { | 228 | if ('' !== $srcsetAttribute) { |
210 | // Couldn't start with " OR ' OR a white space | 229 | // Couldn't start with " OR ' OR a white space |
211 | // Could be one or more white space | 230 | // Could be one or more white space |
212 | // Must be one or more digits followed by w OR x | 231 | // Must be one or more digits followed by w OR x |
213 | $pattern = "/(?:[^\"'\s]+\s*(?:\d+[wx])+)/"; | 232 | $pattern = "/(?:[^\"'\s]+\s*(?:\d+[wx])+)/"; |
214 | preg_match_all($pattern, $srcsetAttribute, $matches); | 233 | preg_match_all($pattern, $srcsetAttribute, $matches); |
234 | |||
215 | $srcset = \call_user_func_array('array_merge', $matches); | 235 | $srcset = \call_user_func_array('array_merge', $matches); |
216 | $srcsetUrls = array_map(function ($src) { | 236 | $srcsetUrls = array_map(function ($src) { |
217 | return trim(explode(' ', $src, 2)[0]); | 237 | return trim(explode(' ', $src, 2)[0]); |
218 | }, $srcset); | 238 | }, $srcset); |
219 | $urls = array_merge($srcsetUrls, $urls); | 239 | $urls = array_merge($srcsetUrls, $urls); |
220 | } | 240 | } |
241 | |||
221 | $iterator->next(); | 242 | $iterator->next(); |
222 | } | 243 | } |
223 | 244 | ||
@@ -274,33 +295,29 @@ class DownloadImages | |||
274 | return $url; | 295 | return $url; |
275 | } | 296 | } |
276 | 297 | ||
277 | $base = new \SimplePie_IRI($base); | 298 | $base = new Uri($base); |
278 | 299 | ||
279 | // remove '//' in URL path (causes URLs not to resolve properly) | 300 | // in case the url has no scheme & host |
280 | if (isset($base->ipath)) { | 301 | if ('' === $base->getAuthority() || '' === $base->getScheme()) { |
281 | $base->ipath = preg_replace('!//+!', '/', $base->ipath); | 302 | $this->logger->error('DownloadImages: Can not make an absolute link', ['base' => $base, 'url' => $url]); |
282 | } | ||
283 | 303 | ||
284 | if ($absolute = \SimplePie_IRI::absolutize($base, $url)) { | 304 | return false; |
285 | return $absolute->get_uri(); | ||
286 | } | 305 | } |
287 | 306 | ||
288 | $this->logger->error('DownloadImages: Can not make an absolute link', ['base' => $base, 'url' => $url]); | 307 | return (string) UriResolver::resolve($base, new Uri($url)); |
289 | |||
290 | return false; | ||
291 | } | 308 | } |
292 | 309 | ||
293 | /** | 310 | /** |
294 | * Retrieve and validate the extension from the response of the url of the image. | 311 | * Retrieve and validate the extension from the response of the url of the image. |
295 | * | 312 | * |
296 | * @param Response $res Guzzle Response | 313 | * @param ResponseInterface $res Http Response |
297 | * @param string $imagePath Path from the src image from the content (used for log only) | 314 | * @param string $imagePath Path from the src image from the content (used for log only) |
298 | * | 315 | * |
299 | * @return string|false Extension name or false if validation failed | 316 | * @return string|false Extension name or false if validation failed |
300 | */ | 317 | */ |
301 | private function getExtensionFromResponse(Response $res, $imagePath) | 318 | private function getExtensionFromResponse(ResponseInterface $res, $imagePath) |
302 | { | 319 | { |
303 | $ext = $this->mimeGuesser->guess($res->getHeader('content-type')); | 320 | $ext = $this->mimeGuesser->guess(current($res->getHeader('content-type'))); |
304 | $this->logger->debug('DownloadImages: Checking extension', ['ext' => $ext, 'header' => $res->getHeader('content-type')]); | 321 | $this->logger->debug('DownloadImages: Checking extension', ['ext' => $ext, 'header' => $res->getHeader('content-type')]); |
305 | 322 | ||
306 | // ok header doesn't have the extension, try a different way | 323 | // ok header doesn't have the extension, try a different way |
diff --git a/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php b/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php index 4602a684..b8e95381 100644 --- a/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php +++ b/src/Wallabag/CoreBundle/Helper/HttpClientFactory.php | |||
@@ -2,16 +2,18 @@ | |||
2 | 2 | ||
3 | namespace Wallabag\CoreBundle\Helper; | 3 | namespace Wallabag\CoreBundle\Helper; |
4 | 4 | ||
5 | use Graby\Ring\Client\SafeCurlHandler; | 5 | use GuzzleHttp\Client as GuzzleClient; |
6 | use GuzzleHttp\Client; | ||
7 | use GuzzleHttp\Cookie\CookieJar; | 6 | use GuzzleHttp\Cookie\CookieJar; |
8 | use GuzzleHttp\Event\SubscriberInterface; | 7 | use GuzzleHttp\Event\SubscriberInterface; |
8 | use Http\Adapter\Guzzle5\Client as GuzzleAdapter; | ||
9 | use Http\Client\HttpClient; | ||
10 | use Http\HttplugBundle\ClientFactory\ClientFactory; | ||
9 | use Psr\Log\LoggerInterface; | 11 | use Psr\Log\LoggerInterface; |
10 | 12 | ||
11 | /** | 13 | /** |
12 | * Builds and configures the Guzzle HTTP client. | 14 | * Builds and configures the HTTP client. |
13 | */ | 15 | */ |
14 | class HttpClientFactory | 16 | class HttpClientFactory implements ClientFactory |
15 | { | 17 | { |
16 | /** @var [\GuzzleHttp\Event\SubscriberInterface] */ | 18 | /** @var [\GuzzleHttp\Event\SubscriberInterface] */ |
17 | private $subscribers = []; | 19 | private $subscribers = []; |
@@ -37,35 +39,42 @@ class HttpClientFactory | |||
37 | } | 39 | } |
38 | 40 | ||
39 | /** | 41 | /** |
40 | * @return \GuzzleHttp\Client|null | 42 | * Adds a subscriber to the HTTP client. |
43 | * | ||
44 | * @param SubscriberInterface $subscriber | ||
45 | */ | ||
46 | public function addSubscriber(SubscriberInterface $subscriber) | ||
47 | { | ||
48 | $this->subscribers[] = $subscriber; | ||
49 | } | ||
50 | |||
51 | /** | ||
52 | * Input an array of configuration to be able to create a HttpClient. | ||
53 | * | ||
54 | * @param array $config | ||
55 | * | ||
56 | * @return HttpClient | ||
41 | */ | 57 | */ |
42 | public function buildHttpClient() | 58 | public function createClient(array $config = []) |
43 | { | 59 | { |
44 | $this->logger->log('debug', 'Restricted access config enabled?', ['enabled' => (int) $this->restrictedAccess]); | 60 | $this->logger->log('debug', 'Restricted access config enabled?', ['enabled' => (int) $this->restrictedAccess]); |
45 | 61 | ||
46 | if (0 === (int) $this->restrictedAccess) { | 62 | if (0 === (int) $this->restrictedAccess) { |
47 | return; | 63 | return new GuzzleAdapter(new GuzzleClient($config)); |
48 | } | 64 | } |
49 | 65 | ||
50 | // we clear the cookie to avoid websites who use cookies for analytics | 66 | // we clear the cookie to avoid websites who use cookies for analytics |
51 | $this->cookieJar->clear(); | 67 | $this->cookieJar->clear(); |
52 | // need to set the (shared) cookie jar | 68 | if (!isset($config['defaults']['cookies'])) { |
53 | $client = new Client(['handler' => new SafeCurlHandler(), 'defaults' => ['cookies' => $this->cookieJar]]); | 69 | // need to set the (shared) cookie jar |
70 | $config['defaults']['cookies'] = $this->cookieJar; | ||
71 | } | ||
54 | 72 | ||
73 | $guzzle = new GuzzleClient($config); | ||
55 | foreach ($this->subscribers as $subscriber) { | 74 | foreach ($this->subscribers as $subscriber) { |
56 | $client->getEmitter()->attach($subscriber); | 75 | $guzzle->getEmitter()->attach($subscriber); |
57 | } | 76 | } |
58 | 77 | ||
59 | return $client; | 78 | return new GuzzleAdapter($guzzle); |
60 | } | ||
61 | |||
62 | /** | ||
63 | * Adds a subscriber to the HTTP client. | ||
64 | * | ||
65 | * @param SubscriberInterface $subscriber | ||
66 | */ | ||
67 | public function addSubscriber(SubscriberInterface $subscriber) | ||
68 | { | ||
69 | $this->subscribers[] = $subscriber; | ||
70 | } | 79 | } |
71 | } | 80 | } |
diff --git a/src/Wallabag/CoreBundle/Helper/UrlHasher.php b/src/Wallabag/CoreBundle/Helper/UrlHasher.php new file mode 100644 index 00000000..d123eaba --- /dev/null +++ b/src/Wallabag/CoreBundle/Helper/UrlHasher.php | |||
@@ -0,0 +1,23 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\CoreBundle\Helper; | ||
4 | |||
5 | /** | ||
6 | * Hash URLs for privacy and performance. | ||
7 | */ | ||
8 | class UrlHasher | ||
9 | { | ||
10 | /** | ||
11 | * Hash the given url using the given algorithm. | ||
12 | * Hashed url are faster to be retrieved in the database than the real url. | ||
13 | * | ||
14 | * @param string $url | ||
15 | * @param string $algorithm | ||
16 | * | ||
17 | * @return string | ||
18 | */ | ||
19 | public static function hashUrl(string $url, $algorithm = 'sha1') | ||
20 | { | ||
21 | return hash($algorithm, urldecode($url)); | ||
22 | } | ||
23 | } | ||
diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index f5089729..16c44885 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php | |||
@@ -9,6 +9,7 @@ use Pagerfanta\Adapter\DoctrineORMAdapter; | |||
9 | use Pagerfanta\Pagerfanta; | 9 | use Pagerfanta\Pagerfanta; |
10 | use Wallabag\CoreBundle\Entity\Entry; | 10 | use Wallabag\CoreBundle\Entity\Entry; |
11 | use Wallabag\CoreBundle\Entity\Tag; | 11 | use Wallabag\CoreBundle\Entity\Tag; |
12 | use Wallabag\CoreBundle\Helper\UrlHasher; | ||
12 | 13 | ||
13 | class EntryRepository extends EntityRepository | 14 | class EntryRepository extends EntityRepository |
14 | { | 15 | { |
@@ -139,15 +140,30 @@ class EntryRepository extends EntityRepository | |||
139 | * @param string $order | 140 | * @param string $order |
140 | * @param int $since | 141 | * @param int $since |
141 | * @param string $tags | 142 | * @param string $tags |
143 | * @param string $detail 'metadata' or 'full'. Include content field if 'full' | ||
144 | * | ||
145 | * @todo Breaking change: replace default detail=full by detail=metadata in a future version | ||
142 | * | 146 | * |
143 | * @return Pagerfanta | 147 | * @return Pagerfanta |
144 | */ | 148 | */ |
145 | public function findEntries($userId, $isArchived = null, $isStarred = null, $isPublic = null, $sort = 'created', $order = 'asc', $since = 0, $tags = '') | 149 | public function findEntries($userId, $isArchived = null, $isStarred = null, $isPublic = null, $sort = 'created', $order = 'asc', $since = 0, $tags = '', $detail = 'full') |
146 | { | 150 | { |
151 | if (!\in_array(strtolower($detail), ['full', 'metadata'], true)) { | ||
152 | throw new \Exception('Detail "' . $detail . '" parameter is wrong, allowed: full or metadata'); | ||
153 | } | ||
154 | |||
147 | $qb = $this->createQueryBuilder('e') | 155 | $qb = $this->createQueryBuilder('e') |
148 | ->leftJoin('e.tags', 't') | 156 | ->leftJoin('e.tags', 't') |
149 | ->where('e.user = :userId')->setParameter('userId', $userId); | 157 | ->where('e.user = :userId')->setParameter('userId', $userId); |
150 | 158 | ||
159 | if ('metadata' === $detail) { | ||
160 | $fieldNames = $this->getClassMetadata()->getFieldNames(); | ||
161 | $fields = array_filter($fieldNames, function ($k) { | ||
162 | return 'content' !== $k; | ||
163 | }); | ||
164 | $qb->select(sprintf('partial e.{%s}', implode(',', $fields))); | ||
165 | } | ||
166 | |||
151 | if (null !== $isArchived) { | 167 | if (null !== $isArchived) { |
152 | $qb->andWhere('e.isArchived = :isArchived')->setParameter('isArchived', (bool) $isArchived); | 168 | $qb->andWhere('e.isArchived = :isArchived')->setParameter('isArchived', (bool) $isArchived); |
153 | } | 169 | } |
@@ -329,21 +345,14 @@ class EntryRepository extends EntityRepository | |||
329 | * @param string $url | 345 | * @param string $url |
330 | * @param int $userId | 346 | * @param int $userId |
331 | * | 347 | * |
332 | * @return Entry|bool | 348 | * @return Entry|false |
333 | */ | 349 | */ |
334 | public function findByUrlAndUserId($url, $userId) | 350 | public function findByUrlAndUserId($url, $userId) |
335 | { | 351 | { |
336 | $res = $this->createQueryBuilder('e') | 352 | return $this->findByHashedUrlAndUserId( |
337 | ->where('e.url = :url')->setParameter('url', urldecode($url)) | 353 | UrlHasher::hashUrl($url), |
338 | ->andWhere('e.user = :user_id')->setParameter('user_id', $userId) | 354 | $userId |
339 | ->getQuery() | 355 | ); |
340 | ->getResult(); | ||
341 | |||
342 | if (\count($res)) { | ||
343 | return current($res); | ||
344 | } | ||
345 | |||
346 | return false; | ||
347 | } | 356 | } |
348 | 357 | ||
349 | /** | 358 | /** |
@@ -353,10 +362,11 @@ class EntryRepository extends EntityRepository | |||
353 | * @param string $hashedUrl Url hashed using sha1 | 362 | * @param string $hashedUrl Url hashed using sha1 |
354 | * @param int $userId | 363 | * @param int $userId |
355 | * | 364 | * |
356 | * @return Entry|bool | 365 | * @return Entry|false |
357 | */ | 366 | */ |
358 | public function findByHashedUrlAndUserId($hashedUrl, $userId) | 367 | public function findByHashedUrlAndUserId($hashedUrl, $userId) |
359 | { | 368 | { |
369 | // try first using hashed_url (to use the database index) | ||
360 | $res = $this->createQueryBuilder('e') | 370 | $res = $this->createQueryBuilder('e') |
361 | ->where('e.hashedUrl = :hashed_url')->setParameter('hashed_url', $hashedUrl) | 371 | ->where('e.hashedUrl = :hashed_url')->setParameter('hashed_url', $hashedUrl) |
362 | ->andWhere('e.user = :user_id')->setParameter('user_id', $userId) | 372 | ->andWhere('e.user = :user_id')->setParameter('user_id', $userId) |
@@ -367,6 +377,17 @@ class EntryRepository extends EntityRepository | |||
367 | return current($res); | 377 | return current($res); |
368 | } | 378 | } |
369 | 379 | ||
380 | // then try using hashed_given_url (to use the database index) | ||
381 | $res = $this->createQueryBuilder('e') | ||
382 | ->where('e.hashedGivenUrl = :hashed_given_url')->setParameter('hashed_given_url', $hashedUrl) | ||
383 | ->andWhere('e.user = :user_id')->setParameter('user_id', $userId) | ||
384 | ->getQuery() | ||
385 | ->getResult(); | ||
386 | |||
387 | if (\count($res)) { | ||
388 | return current($res); | ||
389 | } | ||
390 | |||
370 | return false; | 391 | return false; |
371 | } | 392 | } |
372 | 393 | ||
diff --git a/src/Wallabag/CoreBundle/Repository/SiteCredentialRepository.php b/src/Wallabag/CoreBundle/Repository/SiteCredentialRepository.php index b2e212a4..aeadd770 100644 --- a/src/Wallabag/CoreBundle/Repository/SiteCredentialRepository.php +++ b/src/Wallabag/CoreBundle/Repository/SiteCredentialRepository.php | |||
@@ -19,16 +19,16 @@ class SiteCredentialRepository extends \Doctrine\ORM\EntityRepository | |||
19 | /** | 19 | /** |
20 | * Retrieve one username/password for the given host and userId. | 20 | * Retrieve one username/password for the given host and userId. |
21 | * | 21 | * |
22 | * @param string $host | 22 | * @param array $hosts An array of host to look for |
23 | * @param int $userId | 23 | * @param int $userId |
24 | * | 24 | * |
25 | * @return array|null | 25 | * @return array|null |
26 | */ | 26 | */ |
27 | public function findOneByHostAndUser($host, $userId) | 27 | public function findOneByHostsAndUser($hosts, $userId) |
28 | { | 28 | { |
29 | $res = $this->createQueryBuilder('s') | 29 | $res = $this->createQueryBuilder('s') |
30 | ->select('s.username', 's.password') | 30 | ->select('s.username', 's.password') |
31 | ->where('s.host = :hostname')->setParameter('hostname', $host) | 31 | ->where('s.host IN (:hosts)')->setParameter('hosts', $hosts) |
32 | ->andWhere('s.user = :userId')->setParameter('userId', $userId) | 32 | ->andWhere('s.user = :userId')->setParameter('userId', $userId) |
33 | ->setMaxResults(1) | 33 | ->setMaxResults(1) |
34 | ->getQuery() | 34 | ->getQuery() |
diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml index 280d779d..31986951 100644 --- a/src/Wallabag/CoreBundle/Resources/config/services.yml +++ b/src/Wallabag/CoreBundle/Resources/config/services.yml | |||
@@ -42,7 +42,7 @@ services: | |||
42 | - | 42 | - |
43 | error_message: '%wallabag_core.fetching_error_message%' | 43 | error_message: '%wallabag_core.fetching_error_message%' |
44 | error_message_title: '%wallabag_core.fetching_error_message_title%' | 44 | error_message_title: '%wallabag_core.fetching_error_message_title%' |
45 | - "@wallabag_core.guzzle.http_client" | 45 | - "@wallabag_core.http_client" |
46 | - "@wallabag_core.graby.config_builder" | 46 | - "@wallabag_core.graby.config_builder" |
47 | calls: | 47 | calls: |
48 | - [ setLogger, [ "@logger" ] ] | 48 | - [ setLogger, [ "@logger" ] ] |
@@ -55,9 +55,8 @@ services: | |||
55 | - {} | 55 | - {} |
56 | - "@logger" | 56 | - "@logger" |
57 | 57 | ||
58 | wallabag_core.guzzle.http_client: | 58 | wallabag_core.http_client: |
59 | class: GuzzleHttp\ClientInterface | 59 | alias: 'httplug.client.wallabag_core' |
60 | factory: ["@wallabag_core.guzzle.http_client_factory", buildHttpClient] | ||
61 | 60 | ||
62 | wallabag_core.guzzle_authenticator.config_builder: | 61 | wallabag_core.guzzle_authenticator.config_builder: |
63 | class: Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder | 62 | class: Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder |
@@ -73,7 +72,7 @@ services: | |||
73 | bd_guzzle_site_authenticator.site_config_builder: | 72 | bd_guzzle_site_authenticator.site_config_builder: |
74 | alias: wallabag_core.guzzle_authenticator.config_builder | 73 | alias: wallabag_core.guzzle_authenticator.config_builder |
75 | 74 | ||
76 | wallabag_core.guzzle.http_client_factory: | 75 | wallabag_core.http_client_factory: |
77 | class: Wallabag\CoreBundle\Helper\HttpClientFactory | 76 | class: Wallabag\CoreBundle\Helper\HttpClientFactory |
78 | arguments: | 77 | arguments: |
79 | - "@wallabag_core.guzzle.cookie_jar" | 78 | - "@wallabag_core.guzzle.cookie_jar" |
@@ -212,7 +211,7 @@ services: | |||
212 | - "@logger" | 211 | - "@logger" |
213 | 212 | ||
214 | wallabag_core.entry.download_images.client: | 213 | wallabag_core.entry.download_images.client: |
215 | class: GuzzleHttp\Client | 214 | alias: 'httplug.client.wallabag_core.entry.download_images' |
216 | 215 | ||
217 | wallabag_core.helper.crypto_proxy: | 216 | wallabag_core.helper.crypto_proxy: |
218 | class: Wallabag\CoreBundle\Helper\CryptoProxy | 217 | class: Wallabag\CoreBundle\Helper\CryptoProxy |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml index 61ef3b8f..c6a91cd1 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Tilbage til de ulæste artikler' | 33 | back_to_unread: 'Tilbage til de ulæste artikler' |
34 | # users_management: 'Users management' | 34 | # users_management: 'Users management' |
35 | # site_credentials: 'Site credentials' | 35 | # site_credentials: 'Site credentials' |
36 | # quickstart: "Quickstart" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Tilføj ny artikel' | 38 | add_new_entry: 'Tilføj ny artikel' |
38 | search: 'Søg' | 39 | search: 'Søg' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Intet token' | 92 | no_token: 'Intet token' |
92 | token_create: 'Opret token' | 93 | token_create: 'Opret token' |
93 | token_reset: 'Nulstil token' | 94 | token_reset: 'Nulstil token' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'RSS-Links' | 96 | feed_links: 'RSS-Links' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Ulæst' | 98 | unread: 'Ulæst' |
@@ -572,7 +574,7 @@ site_credential: | |||
572 | # create_new_one: Create a new credential | 574 | # create_new_one: Create a new credential |
573 | # form: | 575 | # form: |
574 | # username_label: 'Username' | 576 | # username_label: 'Username' |
575 | # host_label: 'Host' | 577 | # host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
576 | # password_label: 'Password' | 578 | # password_label: 'Password' |
577 | # save: Save | 579 | # save: Save |
578 | # delete: Delete | 580 | # delete: Delete |
@@ -593,6 +595,7 @@ flashes: | |||
593 | # tagging_rules_updated: 'Tagging rules updated' | 595 | # tagging_rules_updated: 'Tagging rules updated' |
594 | # tagging_rules_deleted: 'Tagging rule deleted' | 596 | # tagging_rules_deleted: 'Tagging rule deleted' |
595 | # feed_token_updated: 'RSS token updated' | 597 | # feed_token_updated: 'RSS token updated' |
598 | # feed_token_revoked: 'RSS token revoked' | ||
596 | # annotations_reset: Annotations reset | 599 | # annotations_reset: Annotations reset |
597 | # tags_reset: Tags reset | 600 | # tags_reset: Tags reset |
598 | # entries_reset: Entries reset | 601 | # entries_reset: Entries reset |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml index 991e00f1..4b785306 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Zurück zu ungelesenen Artikeln' | 33 | back_to_unread: 'Zurück zu ungelesenen Artikeln' |
34 | users_management: 'Benutzerverwaltung' | 34 | users_management: 'Benutzerverwaltung' |
35 | site_credentials: 'Zugangsdaten' | 35 | site_credentials: 'Zugangsdaten' |
36 | quickstart: "Schnelleinstieg" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Neuen Artikel hinzufügen' | 38 | add_new_entry: 'Neuen Artikel hinzufügen' |
38 | search: 'Suche' | 39 | search: 'Suche' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Kein Token' | 92 | no_token: 'Kein Token' |
92 | token_create: 'Token erstellen' | 93 | token_create: 'Token erstellen' |
93 | token_reset: 'Token zurücksetzen' | 94 | token_reset: 'Token zurücksetzen' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'RSS-Links' | 96 | feed_links: 'RSS-Links' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Ungelesene' | 98 | unread: 'Ungelesene' |
@@ -563,7 +565,7 @@ site_credential: | |||
563 | create_new_one: 'Einen neuen Seitenzugang anlegen' | 565 | create_new_one: 'Einen neuen Seitenzugang anlegen' |
564 | form: | 566 | form: |
565 | username_label: 'Benutzername' | 567 | username_label: 'Benutzername' |
566 | host_label: 'Host' | 568 | host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
567 | password_label: 'Passwort' | 569 | password_label: 'Passwort' |
568 | save: 'Speichern' | 570 | save: 'Speichern' |
569 | delete: 'Löschen' | 571 | delete: 'Löschen' |
@@ -584,6 +586,7 @@ flashes: | |||
584 | tagging_rules_updated: 'Tagging-Regeln aktualisiert' | 586 | tagging_rules_updated: 'Tagging-Regeln aktualisiert' |
585 | tagging_rules_deleted: 'Tagging-Regel gelöscht' | 587 | tagging_rules_deleted: 'Tagging-Regel gelöscht' |
586 | feed_token_updated: 'RSS-Token aktualisiert' | 588 | feed_token_updated: 'RSS-Token aktualisiert' |
589 | # feed_token_revoked: 'RSS token revoked' | ||
587 | annotations_reset: Anmerkungen zurücksetzen | 590 | annotations_reset: Anmerkungen zurücksetzen |
588 | tags_reset: Tags zurücksetzen | 591 | tags_reset: Tags zurücksetzen |
589 | entries_reset: Einträge zurücksetzen | 592 | entries_reset: Einträge zurücksetzen |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml index 5b875652..1f8c47aa 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Back to unread articles' | 33 | back_to_unread: 'Back to unread articles' |
34 | users_management: 'Users management' | 34 | users_management: 'Users management' |
35 | site_credentials: 'Site credentials' | 35 | site_credentials: 'Site credentials' |
36 | quickstart: "Quickstart" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Add a new entry' | 38 | add_new_entry: 'Add a new entry' |
38 | search: 'Search' | 39 | search: 'Search' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'No token' | 92 | no_token: 'No token' |
92 | token_create: 'Create your token' | 93 | token_create: 'Create your token' |
93 | token_reset: 'Regenerate your token' | 94 | token_reset: 'Regenerate your token' |
95 | token_revoke: 'Revoke the token' | ||
94 | feed_links: 'Feed links' | 96 | feed_links: 'Feed links' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Unread' | 98 | unread: 'Unread' |
@@ -572,7 +574,7 @@ site_credential: | |||
572 | create_new_one: Create a new credential | 574 | create_new_one: Create a new credential |
573 | form: | 575 | form: |
574 | username_label: 'Username' | 576 | username_label: 'Username' |
575 | host_label: 'Host' | 577 | host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
576 | password_label: 'Password' | 578 | password_label: 'Password' |
577 | save: Save | 579 | save: Save |
578 | delete: Delete | 580 | delete: Delete |
@@ -593,6 +595,7 @@ flashes: | |||
593 | tagging_rules_updated: 'Tagging rules updated' | 595 | tagging_rules_updated: 'Tagging rules updated' |
594 | tagging_rules_deleted: 'Tagging rule deleted' | 596 | tagging_rules_deleted: 'Tagging rule deleted' |
595 | feed_token_updated: 'Feed token updated' | 597 | feed_token_updated: 'Feed token updated' |
598 | feed_token_revoked: 'RSS token revoked' | ||
596 | annotations_reset: Annotations reset | 599 | annotations_reset: Annotations reset |
597 | tags_reset: Tags reset | 600 | tags_reset: Tags reset |
598 | entries_reset: Entries reset | 601 | entries_reset: Entries reset |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml index 562b4191..06fa1e48 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Volver a los artículos sin leer' | 33 | back_to_unread: 'Volver a los artículos sin leer' |
34 | users_management: 'Configuración de usuarios' | 34 | users_management: 'Configuración de usuarios' |
35 | # site_credentials: 'Site credentials' | 35 | # site_credentials: 'Site credentials' |
36 | quickstart: "Inicio rápido" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Añadir un nuevo artículo' | 38 | add_new_entry: 'Añadir un nuevo artículo' |
38 | search: 'Buscar' | 39 | search: 'Buscar' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Sin token' | 92 | no_token: 'Sin token' |
92 | token_create: 'Crear token' | 93 | token_create: 'Crear token' |
93 | token_reset: 'Reiniciar token' | 94 | token_reset: 'Reiniciar token' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'URLs de feeds RSS' | 96 | feed_links: 'URLs de feeds RSS' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'sin leer' | 98 | unread: 'sin leer' |
@@ -572,7 +574,7 @@ site_credential: | |||
572 | # create_new_one: Create a new credential | 574 | # create_new_one: Create a new credential |
573 | # form: | 575 | # form: |
574 | # username_label: 'Username' | 576 | # username_label: 'Username' |
575 | # host_label: 'Host' | 577 | # host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
576 | # password_label: 'Password' | 578 | # password_label: 'Password' |
577 | # save: Save | 579 | # save: Save |
578 | # delete: Delete | 580 | # delete: Delete |
@@ -593,6 +595,7 @@ flashes: | |||
593 | tagging_rules_updated: 'Regla de etiquetado actualizada' | 595 | tagging_rules_updated: 'Regla de etiquetado actualizada' |
594 | tagging_rules_deleted: 'Regla de etiquetado eliminada' | 596 | tagging_rules_deleted: 'Regla de etiquetado eliminada' |
595 | feed_token_updated: 'Token RSS actualizado' | 597 | feed_token_updated: 'Token RSS actualizado' |
598 | # feed_token_revoked: 'RSS token revoked' | ||
596 | annotations_reset: Anotaciones reiniciadas | 599 | annotations_reset: Anotaciones reiniciadas |
597 | tags_reset: Etiquetas reiniciadas | 600 | tags_reset: Etiquetas reiniciadas |
598 | entries_reset: Artículos reiniciados | 601 | entries_reset: Artículos reiniciados |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml index f360e0d6..5c1eaccc 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'بازگشت به خواندهنشدهها' | 33 | back_to_unread: 'بازگشت به خواندهنشدهها' |
34 | # users_management: 'Users management' | 34 | # users_management: 'Users management' |
35 | # site_credentials: 'Site credentials' | 35 | # site_credentials: 'Site credentials' |
36 | quickstart: "Quickstart" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'افزودن مقالهٔ تازه' | 38 | add_new_entry: 'افزودن مقالهٔ تازه' |
38 | search: 'جستجو' | 39 | search: 'جستجو' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'بدون کد' | 92 | no_token: 'بدون کد' |
92 | token_create: 'کد خود را بسازید' | 93 | token_create: 'کد خود را بسازید' |
93 | token_reset: 'بازنشانی کد' | 94 | token_reset: 'بازنشانی کد' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'پیوند آر-اس-اس' | 96 | feed_links: 'پیوند آر-اس-اس' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'خواندهنشده' | 98 | unread: 'خواندهنشده' |
@@ -572,7 +574,7 @@ site_credential: | |||
572 | # create_new_one: Create a new credential | 574 | # create_new_one: Create a new credential |
573 | # form: | 575 | # form: |
574 | # username_label: 'Username' | 576 | # username_label: 'Username' |
575 | # host_label: 'Host' | 577 | # host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
576 | # password_label: 'Password' | 578 | # password_label: 'Password' |
577 | # save: Save | 579 | # save: Save |
578 | # delete: Delete | 580 | # delete: Delete |
@@ -593,6 +595,7 @@ flashes: | |||
593 | tagging_rules_updated: 'برچسبگذاری خودکار بهروز شد' | 595 | tagging_rules_updated: 'برچسبگذاری خودکار بهروز شد' |
594 | tagging_rules_deleted: 'قانون برچسبگذاری پاک شد' | 596 | tagging_rules_deleted: 'قانون برچسبگذاری پاک شد' |
595 | feed_token_updated: 'کد آر-اس-اس بهروز شد' | 597 | feed_token_updated: 'کد آر-اس-اس بهروز شد' |
598 | # feed_token_revoked: 'RSS token revoked' | ||
596 | # annotations_reset: Annotations reset | 599 | # annotations_reset: Annotations reset |
597 | # tags_reset: Tags reset | 600 | # tags_reset: Tags reset |
598 | # entries_reset: Entries reset | 601 | # entries_reset: Entries reset |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index 79f15154..09c1cc8f 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: "Retour aux articles non lus" | 33 | back_to_unread: "Retour aux articles non lus" |
34 | users_management: "Gestion des utilisateurs" | 34 | users_management: "Gestion des utilisateurs" |
35 | site_credentials: 'Accès aux sites' | 35 | site_credentials: 'Accès aux sites' |
36 | quickstart: "Pour bien débuter" | ||
36 | top: | 37 | top: |
37 | add_new_entry: "Sauvegarder un nouvel article" | 38 | add_new_entry: "Sauvegarder un nouvel article" |
38 | search: "Rechercher" | 39 | search: "Rechercher" |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: "Aucun jeton généré" | 92 | no_token: "Aucun jeton généré" |
92 | token_create: "Créez votre jeton" | 93 | token_create: "Créez votre jeton" |
93 | token_reset: "Réinitialisez votre jeton" | 94 | token_reset: "Réinitialisez votre jeton" |
95 | token_revoke: 'Supprimer le jeton' | ||
94 | feed_links: "Adresses de vos flux" | 96 | feed_links: "Adresses de vos flux" |
95 | feed_link: | 97 | feed_link: |
96 | unread: "Non lus" | 98 | unread: "Non lus" |
@@ -573,7 +575,7 @@ site_credential: | |||
573 | create_new_one: Créer un nouvel accès à un site | 575 | create_new_one: Créer un nouvel accès à un site |
574 | form: | 576 | form: |
575 | username_label: 'Identifiant' | 577 | username_label: 'Identifiant' |
576 | host_label: 'Domaine' | 578 | host_label: 'Domaine (subdomain.example.org, .example.org, etc.)' |
577 | password_label: 'Mot de passe' | 579 | password_label: 'Mot de passe' |
578 | save: "Sauvegarder" | 580 | save: "Sauvegarder" |
579 | delete: "Supprimer" | 581 | delete: "Supprimer" |
@@ -594,6 +596,7 @@ flashes: | |||
594 | tagging_rules_updated: "Règles mises à jour" | 596 | tagging_rules_updated: "Règles mises à jour" |
595 | tagging_rules_deleted: "Règle supprimée" | 597 | tagging_rules_deleted: "Règle supprimée" |
596 | feed_token_updated: "Jeton des flux mis à jour" | 598 | feed_token_updated: "Jeton des flux mis à jour" |
599 | feed_token_revoked: 'Jeton des flux supprimé' | ||
597 | annotations_reset: "Annotations supprimées" | 600 | annotations_reset: "Annotations supprimées" |
598 | tags_reset: "Tags supprimés" | 601 | tags_reset: "Tags supprimés" |
599 | entries_reset: "Articles supprimés" | 602 | entries_reset: "Articles supprimés" |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml index daef359f..92f2415b 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Torna ai contenuti non letti' | 33 | back_to_unread: 'Torna ai contenuti non letti' |
34 | users_management: 'Gestione utenti' | 34 | users_management: 'Gestione utenti' |
35 | site_credentials: 'Credenziali sito' | 35 | site_credentials: 'Credenziali sito' |
36 | quickstart: "Introduzione" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Aggiungi un nuovo contenuto' | 38 | add_new_entry: 'Aggiungi un nuovo contenuto' |
38 | search: 'Cerca' | 39 | search: 'Cerca' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Nessun token' | 92 | no_token: 'Nessun token' |
92 | token_create: 'Crea il tuo token' | 93 | token_create: 'Crea il tuo token' |
93 | token_reset: 'Rigenera il tuo token' | 94 | token_reset: 'Rigenera il tuo token' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'Collegamenti RSS' | 96 | feed_links: 'Collegamenti RSS' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Non letti' | 98 | unread: 'Non letti' |
@@ -571,7 +573,7 @@ site_credential: | |||
571 | # create_new_one: Create a new credential | 573 | # create_new_one: Create a new credential |
572 | # form: | 574 | # form: |
573 | # username_label: 'Username' | 575 | # username_label: 'Username' |
574 | # host_label: 'Host' | 576 | # host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
575 | # password_label: 'Password' | 577 | # password_label: 'Password' |
576 | # save: Save | 578 | # save: Save |
577 | # delete: Delete | 579 | # delete: Delete |
@@ -592,6 +594,7 @@ flashes: | |||
592 | tagging_rules_updated: 'Regole di etichettatura aggiornate' | 594 | tagging_rules_updated: 'Regole di etichettatura aggiornate' |
593 | tagging_rules_deleted: 'Regola di etichettatura eliminate' | 595 | tagging_rules_deleted: 'Regola di etichettatura eliminate' |
594 | feed_token_updated: 'RSS token aggiornato' | 596 | feed_token_updated: 'RSS token aggiornato' |
597 | # feed_token_revoked: 'RSS token revoked' | ||
595 | annotations_reset: Reset annotazioni | 598 | annotations_reset: Reset annotazioni |
596 | tags_reset: Reset etichette | 599 | tags_reset: Reset etichette |
597 | entries_reset: Reset articoli | 600 | entries_reset: Reset articoli |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml index 980ddeb4..4439cbcd 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Tornar als articles pas legits' | 33 | back_to_unread: 'Tornar als articles pas legits' |
34 | users_management: 'Gestion dels utilizaires' | 34 | users_management: 'Gestion dels utilizaires' |
35 | site_credentials: 'Identificants del site' | 35 | site_credentials: 'Identificants del site' |
36 | quickstart: "Per ben començar" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Enregistrar un novèl article' | 38 | add_new_entry: 'Enregistrar un novèl article' |
38 | search: 'Cercar' | 39 | search: 'Cercar' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Pas cap de geton generat' | 92 | no_token: 'Pas cap de geton generat' |
92 | token_create: 'Creatz vòstre geton' | 93 | token_create: 'Creatz vòstre geton' |
93 | token_reset: 'Reïnicializatz vòstre geton' | 94 | token_reset: 'Reïnicializatz vòstre geton' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'URLs de vòstres fluxes RSS' | 96 | feed_links: 'URLs de vòstres fluxes RSS' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Pas legits' | 98 | unread: 'Pas legits' |
@@ -571,7 +573,7 @@ site_credential: | |||
571 | create_new_one: Crear un novèl identificant | 573 | create_new_one: Crear un novèl identificant |
572 | form: | 574 | form: |
573 | username_label: "Nom d'utilizaire" | 575 | username_label: "Nom d'utilizaire" |
574 | host_label: 'Òste' | 576 | host_label: 'Òste (subdomain.example.org, .example.org, etc.)' |
575 | password_label: 'Senhal' | 577 | password_label: 'Senhal' |
576 | save: 'Enregistrar' | 578 | save: 'Enregistrar' |
577 | delete: 'Suprimir' | 579 | delete: 'Suprimir' |
@@ -592,6 +594,7 @@ flashes: | |||
592 | tagging_rules_updated: 'Règlas misa a jorn' | 594 | tagging_rules_updated: 'Règlas misa a jorn' |
593 | tagging_rules_deleted: 'Règla suprimida' | 595 | tagging_rules_deleted: 'Règla suprimida' |
594 | feed_token_updated: 'Geton RSS mes a jorn' | 596 | feed_token_updated: 'Geton RSS mes a jorn' |
597 | # feed_token_revoked: 'RSS token revoked' | ||
595 | annotations_reset: Anotacions levadas | 598 | annotations_reset: Anotacions levadas |
596 | tags_reset: Etiquetas levadas | 599 | tags_reset: Etiquetas levadas |
597 | entries_reset: Articles levats | 600 | entries_reset: Articles levats |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml index 3813ac37..8311770f 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Powrót do nieprzeczytanych artykułów' | 33 | back_to_unread: 'Powrót do nieprzeczytanych artykułów' |
34 | users_management: 'Zarządzanie użytkownikami' | 34 | users_management: 'Zarządzanie użytkownikami' |
35 | site_credentials: 'Poświadczenia strony' | 35 | site_credentials: 'Poświadczenia strony' |
36 | quickstart: "Szybki start" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Dodaj nowy wpis' | 38 | add_new_entry: 'Dodaj nowy wpis' |
38 | search: 'Szukaj' | 39 | search: 'Szukaj' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Brak tokena' | 92 | no_token: 'Brak tokena' |
92 | token_create: 'Stwórz tokena' | 93 | token_create: 'Stwórz tokena' |
93 | token_reset: 'Zresetuj swojego tokena' | 94 | token_reset: 'Zresetuj swojego tokena' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'RSS links' | 96 | feed_links: 'RSS links' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Nieprzeczytane' | 98 | unread: 'Nieprzeczytane' |
@@ -571,7 +573,7 @@ site_credential: | |||
571 | create_new_one: Stwórz nowe poświadczenie | 573 | create_new_one: Stwórz nowe poświadczenie |
572 | form: | 574 | form: |
573 | username_label: 'Nazwa użytkownika' | 575 | username_label: 'Nazwa użytkownika' |
574 | host_label: 'Host' | 576 | host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
575 | password_label: 'Hasło' | 577 | password_label: 'Hasło' |
576 | save: Zapisz | 578 | save: Zapisz |
577 | delete: Usuń | 579 | delete: Usuń |
@@ -592,6 +594,7 @@ flashes: | |||
592 | tagging_rules_updated: 'Reguły tagowania zaktualizowane' | 594 | tagging_rules_updated: 'Reguły tagowania zaktualizowane' |
593 | tagging_rules_deleted: 'Reguła tagowania usunięta' | 595 | tagging_rules_deleted: 'Reguła tagowania usunięta' |
594 | feed_token_updated: 'Token kanału RSS zaktualizowany' | 596 | feed_token_updated: 'Token kanału RSS zaktualizowany' |
597 | # feed_token_revoked: 'RSS token revoked' | ||
595 | annotations_reset: Zresetuj adnotacje | 598 | annotations_reset: Zresetuj adnotacje |
596 | tags_reset: Zresetuj tagi | 599 | tags_reset: Zresetuj tagi |
597 | entries_reset: Zresetuj wpisy | 600 | entries_reset: Zresetuj wpisy |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml index 96943c05..c83bf6c1 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Voltar para os artigos não lidos' | 33 | back_to_unread: 'Voltar para os artigos não lidos' |
34 | users_management: 'Gestão de Usuários' | 34 | users_management: 'Gestão de Usuários' |
35 | # site_credentials: 'Site credentials' | 35 | # site_credentials: 'Site credentials' |
36 | quickstart: "Começo Rápido" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Adicionar uma nova entrada' | 38 | add_new_entry: 'Adicionar uma nova entrada' |
38 | search: 'Pesquisa' | 39 | search: 'Pesquisa' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Nenhum Token' | 92 | no_token: 'Nenhum Token' |
92 | token_create: 'Criar seu token' | 93 | token_create: 'Criar seu token' |
93 | token_reset: 'Gerar novamente seu token' | 94 | token_reset: 'Gerar novamente seu token' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'Links RSS' | 96 | feed_links: 'Links RSS' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Não lido' | 98 | unread: 'Não lido' |
@@ -571,7 +573,7 @@ site_credential: | |||
571 | # create_new_one: Create a new credential | 573 | # create_new_one: Create a new credential |
572 | form: | 574 | form: |
573 | # username_label: 'Username' | 575 | # username_label: 'Username' |
574 | # host_label: 'Host' | 576 | # host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
575 | # password_label: 'Password' | 577 | # password_label: 'Password' |
576 | save: 'Salvar' | 578 | save: 'Salvar' |
577 | delete: 'Apagar' | 579 | delete: 'Apagar' |
@@ -592,6 +594,7 @@ flashes: | |||
592 | tagging_rules_updated: 'Regras de tags atualizadas' | 594 | tagging_rules_updated: 'Regras de tags atualizadas' |
593 | tagging_rules_deleted: 'Regra de tag apagada' | 595 | tagging_rules_deleted: 'Regra de tag apagada' |
594 | feed_token_updated: 'Token RSS atualizado' | 596 | feed_token_updated: 'Token RSS atualizado' |
597 | # feed_token_revoked: 'RSS token revoked' | ||
595 | # annotations_reset: Annotations reset | 598 | # annotations_reset: Annotations reset |
596 | # tags_reset: Tags reset | 599 | # tags_reset: Tags reset |
597 | # entries_reset: Entries reset | 600 | # entries_reset: Entries reset |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml index 0ce11e74..c8bf8083 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Înapoi la articolele necitite' | 33 | back_to_unread: 'Înapoi la articolele necitite' |
34 | # users_management: 'Users management' | 34 | # users_management: 'Users management' |
35 | # site_credentials: 'Site credentials' | 35 | # site_credentials: 'Site credentials' |
36 | # quickstart: "Quickstart" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Introdu un nou articol' | 38 | add_new_entry: 'Introdu un nou articol' |
38 | search: 'Căutare' | 39 | search: 'Căutare' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Fără token' | 92 | no_token: 'Fără token' |
92 | token_create: 'Crează-ți token' | 93 | token_create: 'Crează-ți token' |
93 | token_reset: 'Resetează-ți token-ul' | 94 | token_reset: 'Resetează-ți token-ul' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'Link-uri RSS' | 96 | feed_links: 'Link-uri RSS' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Unread' | 98 | unread: 'Unread' |
@@ -571,7 +573,7 @@ site_credential: | |||
571 | # create_new_one: Create a new credential | 573 | # create_new_one: Create a new credential |
572 | # form: | 574 | # form: |
573 | # username_label: 'Username' | 575 | # username_label: 'Username' |
574 | # host_label: 'Host' | 576 | # host_label: 'Host (subdomain.example.org, .example.org, etc.)' |
575 | # password_label: 'Password' | 577 | # password_label: 'Password' |
576 | # save: Save | 578 | # save: Save |
577 | # delete: Delete | 579 | # delete: Delete |
@@ -592,6 +594,7 @@ flashes: | |||
592 | # tagging_rules_updated: 'Tagging rules updated' | 594 | # tagging_rules_updated: 'Tagging rules updated' |
593 | # tagging_rules_deleted: 'Tagging rule deleted' | 595 | # tagging_rules_deleted: 'Tagging rule deleted' |
594 | # feed_token_updated: 'RSS token updated' | 596 | # feed_token_updated: 'RSS token updated' |
597 | # feed_token_revoked: 'RSS token revoked' | ||
595 | # annotations_reset: Annotations reset | 598 | # annotations_reset: Annotations reset |
596 | # tags_reset: Tags reset | 599 | # tags_reset: Tags reset |
597 | # entries_reset: Entries reset | 600 | # entries_reset: Entries reset |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml index 2ee2d83a..5d0e70c9 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml | |||
@@ -32,6 +32,8 @@ menu: | |||
32 | save_link: 'Сохранить ссылку' | 32 | save_link: 'Сохранить ссылку' |
33 | back_to_unread: 'Назад к непрочитанным записям' | 33 | back_to_unread: 'Назад к непрочитанным записям' |
34 | users_management: 'Управление пользователями' | 34 | users_management: 'Управление пользователями' |
35 | site_credentials: 'Site credentials' | ||
36 | quickstart: "Быстрый старт" | ||
35 | top: | 37 | top: |
36 | add_new_entry: 'Добавить новую запись' | 38 | add_new_entry: 'Добавить новую запись' |
37 | search: 'Поиск' | 39 | search: 'Поиск' |
@@ -89,6 +91,7 @@ config: | |||
89 | no_token: 'Ключ не задан' | 91 | no_token: 'Ключ не задан' |
90 | token_create: 'Создать ключ' | 92 | token_create: 'Создать ключ' |
91 | token_reset: 'Пересоздать ключ' | 93 | token_reset: 'Пересоздать ключ' |
94 | # token_revoke: 'Revoke the token' | ||
92 | feed_links: 'ссылка на RSS' | 95 | feed_links: 'ссылка на RSS' |
93 | feed_link: | 96 | feed_link: |
94 | unread: 'непрочитанные' | 97 | unread: 'непрочитанные' |
@@ -558,6 +561,7 @@ flashes: | |||
558 | tagging_rules_updated: 'Правила тегировния обновлены' | 561 | tagging_rules_updated: 'Правила тегировния обновлены' |
559 | tagging_rules_deleted: 'Правила тегировния удалены' | 562 | tagging_rules_deleted: 'Правила тегировния удалены' |
560 | feed_token_updated: 'RSS ключ обновлен' | 563 | feed_token_updated: 'RSS ключ обновлен' |
564 | # feed_token_revoked: 'RSS token revoked' | ||
561 | annotations_reset: "Аннотации сброшены" | 565 | annotations_reset: "Аннотации сброшены" |
562 | tags_reset: "Теги сброшены" | 566 | tags_reset: "Теги сброшены" |
563 | entries_reset: "Записи сброшены" | 567 | entries_reset: "Записи сброшены" |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml index e04eee68..66426d53 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'กลับไปยังรายการที่ไม่ได้อ่าน' | 33 | back_to_unread: 'กลับไปยังรายการที่ไม่ได้อ่าน' |
34 | users_management: 'การจัดการผู้ใช้' | 34 | users_management: 'การจัดการผู้ใช้' |
35 | site_credentials: 'การรับรองไซต์' | 35 | site_credentials: 'การรับรองไซต์' |
36 | quickstart: "เริ่มแบบด่วน" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'เพิ่มรายการใหม่' | 38 | add_new_entry: 'เพิ่มรายการใหม่' |
38 | search: 'ค้นหา' | 39 | search: 'ค้นหา' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'ไม่มีเครื่องหมาย' | 92 | no_token: 'ไม่มีเครื่องหมาย' |
92 | token_create: 'สร้างเครื่องหมาย' | 93 | token_create: 'สร้างเครื่องหมาย' |
93 | token_reset: 'ทำเครื่องหมาย' | 94 | token_reset: 'ทำเครื่องหมาย' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'ลิงค์ RSS' | 96 | feed_links: 'ลิงค์ RSS' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'ยังไมได้่อ่าน' | 98 | unread: 'ยังไมได้่อ่าน' |
@@ -569,7 +571,7 @@ site_credential: | |||
569 | create_new_one: สร้างข้อมูลส่วนตัวใหม่ | 571 | create_new_one: สร้างข้อมูลส่วนตัวใหม่ |
570 | form: | 572 | form: |
571 | username_label: 'ชื่อผู้ใช้' | 573 | username_label: 'ชื่อผู้ใช้' |
572 | host_label: 'โฮส' | 574 | host_label: 'โฮส (subdomain.example.org, .example.org, etc.)' |
573 | password_label: 'รหัสผ่าน' | 575 | password_label: 'รหัสผ่าน' |
574 | save: บันทึก | 576 | save: บันทึก |
575 | delete: ลบ | 577 | delete: ลบ |
@@ -590,6 +592,7 @@ flashes: | |||
590 | tagging_rules_updated: 'อัปเดตการแท็กข้อบังคับ' | 592 | tagging_rules_updated: 'อัปเดตการแท็กข้อบังคับ' |
591 | tagging_rules_deleted: 'การลบข้อบังคับของแท็ก' | 593 | tagging_rules_deleted: 'การลบข้อบังคับของแท็ก' |
592 | feed_token_updated: 'อัปเดตเครื่องหมาย RSS ' | 594 | feed_token_updated: 'อัปเดตเครื่องหมาย RSS ' |
595 | # feed_token_revoked: 'RSS token revoked' | ||
593 | annotations_reset: รีเซ็ตหมายเหตุ | 596 | annotations_reset: รีเซ็ตหมายเหตุ |
594 | tags_reset: รีเซ็ตแท็ก | 597 | tags_reset: รีเซ็ตแท็ก |
595 | entries_reset: รีเซ็ตรายการ | 598 | entries_reset: รีเซ็ตรายการ |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml index 2f86f25d..50bd38e3 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml | |||
@@ -33,6 +33,7 @@ menu: | |||
33 | back_to_unread: 'Okunmayan makalelere geri dön' | 33 | back_to_unread: 'Okunmayan makalelere geri dön' |
34 | # users_management: 'Users management' | 34 | # users_management: 'Users management' |
35 | # site_credentials: 'Site credentials' | 35 | # site_credentials: 'Site credentials' |
36 | quickstart: "Hızlı başlangıç" | ||
36 | top: | 37 | top: |
37 | add_new_entry: 'Yeni bir makale ekle' | 38 | add_new_entry: 'Yeni bir makale ekle' |
38 | search: 'Ara' | 39 | search: 'Ara' |
@@ -91,6 +92,7 @@ config: | |||
91 | no_token: 'Belirteç (token) yok' | 92 | no_token: 'Belirteç (token) yok' |
92 | token_create: 'Yeni belirteç (token) oluştur' | 93 | token_create: 'Yeni belirteç (token) oluştur' |
93 | token_reset: 'Belirteci (token) sıfırla' | 94 | token_reset: 'Belirteci (token) sıfırla' |
95 | # token_revoke: 'Revoke the token' | ||
94 | feed_links: 'RSS akış bağlantıları' | 96 | feed_links: 'RSS akış bağlantıları' |
95 | feed_link: | 97 | feed_link: |
96 | unread: 'Okunmayan' | 98 | unread: 'Okunmayan' |
diff --git a/src/Wallabag/CoreBundle/Resources/views/base.html.twig b/src/Wallabag/CoreBundle/Resources/views/base.html.twig index aa388bcb..c0eecd57 100644 --- a/src/Wallabag/CoreBundle/Resources/views/base.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/base.html.twig | |||
@@ -8,6 +8,7 @@ | |||
8 | {% block head %} | 8 | {% block head %} |
9 | <meta name="viewport" content="initial-scale=1.0"> | 9 | <meta name="viewport" content="initial-scale=1.0"> |
10 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | 10 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
11 | <meta name="referrer" content="strict-origin-when-cross-origin"> | ||
11 | <!--[if IE]> | 12 | <!--[if IE]> |
12 | <meta http-equiv="X-UA-Compatible" content="IE=10"> | 13 | <meta http-equiv="X-UA-Compatible" content="IE=10"> |
13 | <![endif]--> | 14 | <![endif]--> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig index 4ef6ab3c..a1caf242 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig | |||
@@ -111,14 +111,14 @@ | |||
111 | {% else %} | 111 | {% else %} |
112 | <em>{{ 'config.form_feed.no_token'|trans }}</em> | 112 | <em>{{ 'config.form_feed.no_token'|trans }}</em> |
113 | {% endif %} | 113 | {% endif %} |
114 | – | 114 | |
115 | <a href="{{ path('generate_token') }}"> | 115 | {% if feed.token %} |
116 | {% if feed.token %} | 116 | – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_reset'|trans }}</a> |
117 | {{ 'config.form_feed.token_reset'|trans }} | 117 | – <a href="{{ path('revoke_token') }}">{{ 'config.form_feed.token_revoke'|trans }}</a> |
118 | {% else %} | 118 | {% else %} |
119 | {{ 'config.form_feed.token_create'|trans }} | 119 | – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_create'|trans }}</a> |
120 | {% endif %} | 120 | {% endif %} |
121 | </a> | 121 | |
122 | </div> | 122 | </div> |
123 | </fieldset> | 123 | </fieldset> |
124 | 124 | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig index 35a54daf..6b1e2bd7 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig | |||
@@ -50,6 +50,7 @@ | |||
50 | <li class="menu howto"><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li> | 50 | <li class="menu howto"><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li> |
51 | <li class="menu developer"><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li> | 51 | <li class="menu developer"><a href="{{ path('developer') }}">{{ 'menu.left.developer'|trans }}</a></li> |
52 | <li class="menu about"><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li> | 52 | <li class="menu about"><a href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a></li> |
53 | <li class="menu quickstart"><a href="{{ path('quickstart') }}">{{ 'menu.left.quickstart'|trans }}</a></li> | ||
53 | <li class="menu logout"><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li> | 54 | <li class="menu logout"><a class="icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a></li> |
54 | </ul> | 55 | </ul> |
55 | {% endblock %} | 56 | {% endblock %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig index e1c7aad9..4294a60d 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig | |||
@@ -29,9 +29,6 @@ | |||
29 | <h1>{{ entry.title|e|raw }}</h1> | 29 | <h1>{{ entry.title|e|raw }}</h1> |
30 | <a href="{{ entry.url|e }}" target="_blank" rel="noopener" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e|raw }}" class="tool">{{ entry.domainName|removeWww }}</a> | 30 | <a href="{{ entry.url|e }}" target="_blank" rel="noopener" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e|raw }}" class="tool">{{ entry.domainName|removeWww }}</a> |
31 | <p class="shared-by">{{ "entry.public.shared_by_wallabag"|trans({'%wallabag_instance%': url('homepage'), '%username%': entry.user.username})|raw }}.</p> | 31 | <p class="shared-by">{{ "entry.public.shared_by_wallabag"|trans({'%wallabag_instance%': url('homepage'), '%username%': entry.user.username})|raw }}.</p> |
32 | {% if entry.previewPicture is not null %} | ||
33 | <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|striptags|e('html_attr') }}" /> | ||
34 | {% endif %} | ||
35 | </header> | 32 | </header> |
36 | <article class="block"> | 33 | <article class="block"> |
37 | {{ entry.content | raw }} | 34 | {{ entry.content | raw }} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig index 818fc4e7..a48c9e28 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig | |||
@@ -140,12 +140,13 @@ | |||
140 | {% else %} | 140 | {% else %} |
141 | <em>{{ 'config.form_feed.no_token'|trans }}</em> | 141 | <em>{{ 'config.form_feed.no_token'|trans }}</em> |
142 | {% endif %} | 142 | {% endif %} |
143 | – <a href="{{ path('generate_token') }}"> | 143 | |
144 | {% if feed.token %} | 144 | {% if feed.token %} |
145 | {{ 'config.form_feed.token_reset'|trans }} | 145 | – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_reset'|trans }}</a> |
146 | – <a href="{{ path('revoke_token') }}">{{ 'config.form_feed.token_revoke'|trans }}</a> | ||
146 | {% else %} | 147 | {% else %} |
147 | {{ 'config.form_feed.token_create'|trans }} | 148 | – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_create'|trans }}</a> |
148 | {% endif %}</a> | 149 | {% endif %} |
149 | </div> | 150 | </div> |
150 | </div> | 151 | </div> |
151 | </div> | 152 | </div> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/Card/_content.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/Card/_content.html.twig index 1f3cd1a7..1102a0bd 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/Card/_content.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/Card/_content.html.twig | |||
@@ -8,8 +8,11 @@ | |||
8 | 8 | ||
9 | <div class="{{ subClass|default('original grey-text') }}"> | 9 | <div class="{{ subClass|default('original grey-text') }}"> |
10 | <a href="{{ entry.url|e }}" target="_blank" title="{{ entry.domainName|removeWww }}" class="tool grey-text">{{ entry.domainName|removeWww }}</a> | 10 | <a href="{{ entry.url|e }}" target="_blank" title="{{ entry.domainName|removeWww }}" class="tool grey-text">{{ entry.domainName|removeWww }}</a> |
11 | {% if withTags is defined %} | 11 | {% if withMetadata is defined %} |
12 | {% include "@WallabagCore/themes/material/Entry/_tags.html.twig" with {'tags': entry.tags | slice(0, 3), 'entryId': entry.id, 'listClass': ' hide-on-med-and-down'} only %} | 12 | {% include "@WallabagCore/themes/material/Entry/_tags.html.twig" with {'tags': entry.tags | slice(0, 3), 'entryId': entry.id, 'listClass': ' hide-on-med-and-down'} only %} |
13 | <div class="reading-time grey-text"> | ||
14 | <div class="card-reading-time">{% include "@WallabagCore/themes/material/Entry/_reading_time.html.twig" with {'entry': entry} only %}</div> | ||
15 | </div> | ||
13 | {% endif %} | 16 | {% endif %} |
14 | </div> | 17 | </div> |
15 | </div> | 18 | </div> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig index 1c00f2fa..6a095035 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig | |||
@@ -5,7 +5,7 @@ | |||
5 | <span class="preview{{ previewClassModifier }}" style="background-image: url({{ entry.previewPicture | default(asset('wallassets/themes/_global/img/logo-square.svg')) }})"></span> | 5 | <span class="preview{{ previewClassModifier }}" style="background-image: url({{ entry.previewPicture | default(asset('wallassets/themes/_global/img/logo-square.svg')) }})"></span> |
6 | </a> | 6 | </a> |
7 | </div> | 7 | </div> |
8 | {% include "@WallabagCore/themes/material/Entry/Card/_content.html.twig" with {'entry': entry, 'withTags': true, 'subClass': 'metadata'} only %} | 8 | {% include "@WallabagCore/themes/material/Entry/Card/_content.html.twig" with {'entry': entry, 'withMetadata': true, 'subClass': 'metadata'} only %} |
9 | <ul class="tools-list hide-on-small-only"> | 9 | <ul class="tools-list hide-on-small-only"> |
10 | <li> | 10 | <li> |
11 | <a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text" href="{{ path('archive_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isArchived == 0 %}done{% else %}unarchive{% endif %}</i></a> | 11 | <a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text" href="{{ path('archive_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isArchived == 0 %}done{% else %}unarchive{% endif %}</i></a> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig index b9c45567..c51d07fc 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig | |||
@@ -91,6 +91,9 @@ | |||
91 | <li class="bold {% if currentRoute == 'howto' %}active{% endif %}"> | 91 | <li class="bold {% if currentRoute == 'howto' %}active{% endif %}"> |
92 | <a class="waves-effect" href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a> | 92 | <a class="waves-effect" href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a> |
93 | </li> | 93 | </li> |
94 | <li class="bold {% if currentRoute == 'quickstart' %}active{% endif %}"> | ||
95 | <a class="waves-effect" href="{{ path('quickstart') }}">{{ 'menu.left.quickstart'|trans }}</a> | ||
96 | </li> | ||
94 | <li class="bold"> | 97 | <li class="bold"> |
95 | <a class="waves-effect icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a> | 98 | <a class="waves-effect icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a> |
96 | </li> | 99 | </li> |
diff --git a/src/Wallabag/ImportBundle/Import/InstapaperImport.php b/src/Wallabag/ImportBundle/Import/InstapaperImport.php index 439c978c..f7bee9ef 100644 --- a/src/Wallabag/ImportBundle/Import/InstapaperImport.php +++ b/src/Wallabag/ImportBundle/Import/InstapaperImport.php | |||
@@ -93,6 +93,10 @@ class InstapaperImport extends AbstractImport | |||
93 | return false; | 93 | return false; |
94 | } | 94 | } |
95 | 95 | ||
96 | // most recent articles are first, which means we should create them at the end so they will show up first | ||
97 | // as Instapaper doesn't export the creation date of the article | ||
98 | $entries = array_reverse($entries); | ||
99 | |||
96 | if ($this->producer) { | 100 | if ($this->producer) { |
97 | $this->parseEntriesForProducer($entries); | 101 | $this->parseEntriesForProducer($entries); |
98 | 102 | ||
diff --git a/src/Wallabag/ImportBundle/Import/PocketImport.php b/src/Wallabag/ImportBundle/Import/PocketImport.php index a39d8156..746120af 100644 --- a/src/Wallabag/ImportBundle/Import/PocketImport.php +++ b/src/Wallabag/ImportBundle/Import/PocketImport.php | |||
@@ -2,13 +2,22 @@ | |||
2 | 2 | ||
3 | namespace Wallabag\ImportBundle\Import; | 3 | namespace Wallabag\ImportBundle\Import; |
4 | 4 | ||
5 | use GuzzleHttp\Client; | 5 | use Http\Client\Common\HttpMethodsClient; |
6 | use GuzzleHttp\Exception\RequestException; | 6 | use Http\Client\Common\Plugin\ErrorPlugin; |
7 | use Http\Client\Common\PluginClient; | ||
8 | use Http\Client\Exception\RequestException; | ||
9 | use Http\Client\HttpClient; | ||
10 | use Http\Discovery\MessageFactoryDiscovery; | ||
11 | use Http\Message\MessageFactory; | ||
12 | use Psr\Http\Message\ResponseInterface; | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | 13 | use Wallabag\CoreBundle\Entity\Entry; |
8 | 14 | ||
9 | class PocketImport extends AbstractImport | 15 | class PocketImport extends AbstractImport |
10 | { | 16 | { |
11 | const NB_ELEMENTS = 5000; | 17 | const NB_ELEMENTS = 5000; |
18 | /** | ||
19 | * @var HttpMethodsClient | ||
20 | */ | ||
12 | private $client; | 21 | private $client; |
13 | private $accessToken; | 22 | private $accessToken; |
14 | 23 | ||
@@ -55,24 +64,18 @@ class PocketImport extends AbstractImport | |||
55 | */ | 64 | */ |
56 | public function getRequestToken($redirectUri) | 65 | public function getRequestToken($redirectUri) |
57 | { | 66 | { |
58 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/oauth/request', | ||
59 | [ | ||
60 | 'body' => json_encode([ | ||
61 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), | ||
62 | 'redirect_uri' => $redirectUri, | ||
63 | ]), | ||
64 | ] | ||
65 | ); | ||
66 | |||
67 | try { | 67 | try { |
68 | $response = $this->client->send($request); | 68 | $response = $this->client->post('https://getpocket.com/v3/oauth/request', [], json_encode([ |
69 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), | ||
70 | 'redirect_uri' => $redirectUri, | ||
71 | ])); | ||
69 | } catch (RequestException $e) { | 72 | } catch (RequestException $e) { |
70 | $this->logger->error(sprintf('PocketImport: Failed to request token: %s', $e->getMessage()), ['exception' => $e]); | 73 | $this->logger->error(sprintf('PocketImport: Failed to request token: %s', $e->getMessage()), ['exception' => $e]); |
71 | 74 | ||
72 | return false; | 75 | return false; |
73 | } | 76 | } |
74 | 77 | ||
75 | return $response->json()['code']; | 78 | return $this->jsonDecode($response)['code']; |
76 | } | 79 | } |
77 | 80 | ||
78 | /** | 81 | /** |
@@ -85,24 +88,18 @@ class PocketImport extends AbstractImport | |||
85 | */ | 88 | */ |
86 | public function authorize($code) | 89 | public function authorize($code) |
87 | { | 90 | { |
88 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/oauth/authorize', | ||
89 | [ | ||
90 | 'body' => json_encode([ | ||
91 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), | ||
92 | 'code' => $code, | ||
93 | ]), | ||
94 | ] | ||
95 | ); | ||
96 | |||
97 | try { | 91 | try { |
98 | $response = $this->client->send($request); | 92 | $response = $this->client->post('https://getpocket.com/v3/oauth/authorize', [], json_encode([ |
93 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), | ||
94 | 'code' => $code, | ||
95 | ])); | ||
99 | } catch (RequestException $e) { | 96 | } catch (RequestException $e) { |
100 | $this->logger->error(sprintf('PocketImport: Failed to authorize client: %s', $e->getMessage()), ['exception' => $e]); | 97 | $this->logger->error(sprintf('PocketImport: Failed to authorize client: %s', $e->getMessage()), ['exception' => $e]); |
101 | 98 | ||
102 | return false; | 99 | return false; |
103 | } | 100 | } |
104 | 101 | ||
105 | $this->accessToken = $response->json()['access_token']; | 102 | $this->accessToken = $this->jsonDecode($response)['access_token']; |
106 | 103 | ||
107 | return true; | 104 | return true; |
108 | } | 105 | } |
@@ -114,29 +111,23 @@ class PocketImport extends AbstractImport | |||
114 | { | 111 | { |
115 | static $run = 0; | 112 | static $run = 0; |
116 | 113 | ||
117 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/get', | ||
118 | [ | ||
119 | 'body' => json_encode([ | ||
120 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), | ||
121 | 'access_token' => $this->accessToken, | ||
122 | 'detailType' => 'complete', | ||
123 | 'state' => 'all', | ||
124 | 'sort' => 'newest', | ||
125 | 'count' => self::NB_ELEMENTS, | ||
126 | 'offset' => $offset, | ||
127 | ]), | ||
128 | ] | ||
129 | ); | ||
130 | |||
131 | try { | 114 | try { |
132 | $response = $this->client->send($request); | 115 | $response = $this->client->post('https://getpocket.com/v3/get', [], json_encode([ |
116 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), | ||
117 | 'access_token' => $this->accessToken, | ||
118 | 'detailType' => 'complete', | ||
119 | 'state' => 'all', | ||
120 | 'sort' => 'newest', | ||
121 | 'count' => self::NB_ELEMENTS, | ||
122 | 'offset' => $offset, | ||
123 | ])); | ||
133 | } catch (RequestException $e) { | 124 | } catch (RequestException $e) { |
134 | $this->logger->error(sprintf('PocketImport: Failed to import: %s', $e->getMessage()), ['exception' => $e]); | 125 | $this->logger->error(sprintf('PocketImport: Failed to import: %s', $e->getMessage()), ['exception' => $e]); |
135 | 126 | ||
136 | return false; | 127 | return false; |
137 | } | 128 | } |
138 | 129 | ||
139 | $entries = $response->json(); | 130 | $entries = $this->jsonDecode($response); |
140 | 131 | ||
141 | if ($this->producer) { | 132 | if ($this->producer) { |
142 | $this->parseEntriesForProducer($entries['list']); | 133 | $this->parseEntriesForProducer($entries['list']); |
@@ -159,13 +150,14 @@ class PocketImport extends AbstractImport | |||
159 | } | 150 | } |
160 | 151 | ||
161 | /** | 152 | /** |
162 | * Set the Guzzle client. | 153 | * Set the Http client. |
163 | * | 154 | * |
164 | * @param Client $client | 155 | * @param HttpClient $client |
156 | * @param MessageFactory|null $messageFactory | ||
165 | */ | 157 | */ |
166 | public function setClient(Client $client) | 158 | public function setClient(HttpClient $client, MessageFactory $messageFactory = null) |
167 | { | 159 | { |
168 | $this->client = $client; | 160 | $this->client = new HttpMethodsClient(new PluginClient($client, [new ErrorPlugin()]), $messageFactory ?: MessageFactoryDiscovery::find()); |
169 | } | 161 | } |
170 | 162 | ||
171 | /** | 163 | /** |
@@ -252,4 +244,15 @@ class PocketImport extends AbstractImport | |||
252 | 244 | ||
253 | return $importedEntry; | 245 | return $importedEntry; |
254 | } | 246 | } |
247 | |||
248 | protected function jsonDecode(ResponseInterface $response) | ||
249 | { | ||
250 | $data = json_decode((string) $response->getBody(), true); | ||
251 | |||
252 | if (JSON_ERROR_NONE !== json_last_error()) { | ||
253 | throw new \InvalidArgumentException('Unable to parse JSON data: ' . json_last_error_msg()); | ||
254 | } | ||
255 | |||
256 | return $data; | ||
257 | } | ||
255 | } | 258 | } |
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php index 3e085ecf..2ba26003 100644 --- a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php +++ b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php | |||
@@ -35,7 +35,9 @@ class WallabagV2Import extends WallabagImport | |||
35 | { | 35 | { |
36 | return [ | 36 | return [ |
37 | 'html' => $entry['content'], | 37 | 'html' => $entry['content'], |
38 | 'content_type' => $entry['mimetype'], | 38 | 'headers' => [ |
39 | 'content-type' => $entry['mimetype'], | ||
40 | ], | ||
39 | 'is_archived' => (bool) ($entry['is_archived'] || $this->markAsRead), | 41 | 'is_archived' => (bool) ($entry['is_archived'] || $this->markAsRead), |
40 | 'is_starred' => (bool) $entry['is_starred'], | 42 | 'is_starred' => (bool) $entry['is_starred'], |
41 | ] + $entry; | 43 | ] + $entry; |
diff --git a/src/Wallabag/ImportBundle/Resources/config/services.yml b/src/Wallabag/ImportBundle/Resources/config/services.yml index 2dd7dff8..973c0d03 100644 --- a/src/Wallabag/ImportBundle/Resources/config/services.yml +++ b/src/Wallabag/ImportBundle/Resources/config/services.yml | |||
@@ -7,13 +7,7 @@ services: | |||
7 | class: Wallabag\ImportBundle\Import\ImportChain | 7 | class: Wallabag\ImportBundle\Import\ImportChain |
8 | 8 | ||
9 | wallabag_import.pocket.client: | 9 | wallabag_import.pocket.client: |
10 | class: GuzzleHttp\Client | 10 | alias: 'httplug.client.wallabag_import.pocket.client' |
11 | arguments: | ||
12 | - | ||
13 | defaults: | ||
14 | headers: | ||
15 | content-type: "application/json" | ||
16 | X-Accept: "application/json" | ||
17 | 11 | ||
18 | wallabag_import.pocket.import: | 12 | wallabag_import.pocket.import: |
19 | class: Wallabag\ImportBundle\Import\PocketImport | 13 | class: Wallabag\ImportBundle\Import\PocketImport |
diff --git a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php index 8cc12ed3..8b7898ee 100644 --- a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php +++ b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php | |||
@@ -133,6 +133,27 @@ class EntryRestControllerTest extends WallabagApiTestCase | |||
133 | $this->assertSame(1, $content['page']); | 133 | $this->assertSame(1, $content['page']); |
134 | $this->assertGreaterThanOrEqual(1, $content['pages']); | 134 | $this->assertGreaterThanOrEqual(1, $content['pages']); |
135 | 135 | ||
136 | $this->assertNotNull($content['_embedded']['items'][0]['content']); | ||
137 | |||
138 | $this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type')); | ||
139 | } | ||
140 | |||
141 | public function testGetEntriesDetailMetadata() | ||
142 | { | ||
143 | $this->client->request('GET', '/api/entries?detail=metadata'); | ||
144 | |||
145 | $this->assertSame(200, $this->client->getResponse()->getStatusCode()); | ||
146 | |||
147 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
148 | |||
149 | $this->assertGreaterThanOrEqual(1, \count($content)); | ||
150 | $this->assertNotEmpty($content['_embedded']['items']); | ||
151 | $this->assertGreaterThanOrEqual(1, $content['total']); | ||
152 | $this->assertSame(1, $content['page']); | ||
153 | $this->assertGreaterThanOrEqual(1, $content['pages']); | ||
154 | |||
155 | $this->assertNull($content['_embedded']['items'][0]['content']); | ||
156 | |||
136 | $this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type')); | 157 | $this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type')); |
137 | } | 158 | } |
138 | 159 | ||
diff --git a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php index d8478ce3..b9e0bed2 100644 --- a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php | |||
@@ -330,7 +330,7 @@ class ConfigControllerTest extends WallabagCoreTestCase | |||
330 | $crawler = $client->followRedirect(); | 330 | $crawler = $client->followRedirect(); |
331 | 331 | ||
332 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | 332 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); |
333 | $this->assertNotContains('config.form_feed.no_token', $body[0]); | 333 | $this->assertContains('config.form_feed.token_reset', $body[0]); |
334 | } | 334 | } |
335 | 335 | ||
336 | public function testGenerateTokenAjax() | 336 | public function testGenerateTokenAjax() |
@@ -351,6 +351,22 @@ class ConfigControllerTest extends WallabagCoreTestCase | |||
351 | $this->assertArrayHasKey('token', $content); | 351 | $this->assertArrayHasKey('token', $content); |
352 | } | 352 | } |
353 | 353 | ||
354 | public function testRevokeTokenAjax() | ||
355 | { | ||
356 | $this->logInAs('admin'); | ||
357 | $client = $this->getClient(); | ||
358 | |||
359 | $client->request( | ||
360 | 'GET', | ||
361 | '/revoke-token', | ||
362 | [], | ||
363 | [], | ||
364 | ['HTTP_X-Requested-With' => 'XMLHttpRequest'] | ||
365 | ); | ||
366 | |||
367 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | ||
368 | } | ||
369 | |||
354 | public function testFeedUpdate() | 370 | public function testFeedUpdate() |
355 | { | 371 | { |
356 | $this->logInAs('admin'); | 372 | $this->logInAs('admin'); |
diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index caa8929d..e9c12c49 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php | |||
@@ -166,7 +166,6 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
166 | $this->assertSame($this->url, $content->getUrl()); | 166 | $this->assertSame($this->url, $content->getUrl()); |
167 | $this->assertContains('Google', $content->getTitle()); | 167 | $this->assertContains('Google', $content->getTitle()); |
168 | $this->assertSame('fr', $content->getLanguage()); | 168 | $this->assertSame('fr', $content->getLanguage()); |
169 | $this->assertSame('2015-03-28 11:43:19', $content->getPublishedAt()->format('Y-m-d H:i:s')); | ||
170 | $this->assertArrayHasKey('x-frame-options', $content->getHeaders()); | 169 | $this->assertArrayHasKey('x-frame-options', $content->getHeaders()); |
171 | $client->getContainer()->get('craue_config')->set('store_article_headers', 0); | 170 | $client->getContainer()->get('craue_config')->set('store_article_headers', 0); |
172 | } | 171 | } |
@@ -236,7 +235,45 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
236 | $this->logInAs('admin'); | 235 | $this->logInAs('admin'); |
237 | $client = $this->getClient(); | 236 | $client = $this->getClient(); |
238 | 237 | ||
239 | $url = 'http://www.aritylabs.com/post/106091708292/des-contr%C3%B4leurs-optionnels-gr%C3%A2ce-%C3%A0-constmissing'; | 238 | $url = 'https://www.aritylabs.com/post/106091708292/des-contr%C3%B4leurs-optionnels-gr%C3%A2ce-%C3%A0-constmissing'; |
239 | |||
240 | $crawler = $client->request('GET', '/new'); | ||
241 | |||
242 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | ||
243 | |||
244 | $form = $crawler->filter('form[name=entry]')->form(); | ||
245 | |||
246 | $data = [ | ||
247 | 'entry[url]' => $url, | ||
248 | ]; | ||
249 | |||
250 | $client->submit($form, $data); | ||
251 | |||
252 | $crawler = $client->request('GET', '/new'); | ||
253 | |||
254 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | ||
255 | |||
256 | $form = $crawler->filter('form[name=entry]')->form(); | ||
257 | |||
258 | $data = [ | ||
259 | 'entry[url]' => $url, | ||
260 | ]; | ||
261 | |||
262 | $client->submit($form, $data); | ||
263 | |||
264 | $this->assertSame(302, $client->getResponse()->getStatusCode()); | ||
265 | $this->assertContains('/view/', $client->getResponse()->getTargetUrl()); | ||
266 | } | ||
267 | |||
268 | /** | ||
269 | * This test will require an internet connection. | ||
270 | */ | ||
271 | public function testPostNewOkUrlExistWithRedirection() | ||
272 | { | ||
273 | $this->logInAs('admin'); | ||
274 | $client = $this->getClient(); | ||
275 | |||
276 | $url = 'https://wllbg.org/test-redirect/c51c'; | ||
240 | 277 | ||
241 | $crawler = $client->request('GET', '/new'); | 278 | $crawler = $client->request('GET', '/new'); |
242 | 279 | ||
diff --git a/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php b/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php index 277d8012..9e0a9136 100644 --- a/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php +++ b/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php | |||
@@ -5,26 +5,24 @@ namespace Tests\Wallabag\CoreBundle\GuzzleSiteAuthenticator; | |||
5 | use Graby\SiteConfig\SiteConfig as GrabySiteConfig; | 5 | use Graby\SiteConfig\SiteConfig as GrabySiteConfig; |
6 | use Monolog\Handler\TestHandler; | 6 | use Monolog\Handler\TestHandler; |
7 | use Monolog\Logger; | 7 | use Monolog\Logger; |
8 | use PHPUnit\Framework\TestCase; | ||
9 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; | 8 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; |
10 | use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; | 9 | use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; |
10 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | ||
11 | use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder; | 11 | use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder; |
12 | 12 | ||
13 | class GrabySiteConfigBuilderTest extends TestCase | 13 | class GrabySiteConfigBuilderTest extends WallabagCoreTestCase |
14 | { | 14 | { |
15 | /** @var \Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder */ | 15 | private $builder; |
16 | protected $builder; | ||
17 | 16 | ||
18 | public function testBuildConfigExists() | 17 | public function testBuildConfigExists() |
19 | { | 18 | { |
20 | /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */ | ||
21 | $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder') | 19 | $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder') |
22 | ->disableOriginalConstructor() | 20 | ->disableOriginalConstructor() |
23 | ->getMock(); | 21 | ->getMock(); |
24 | 22 | ||
25 | $grabySiteConfig = new GrabySiteConfig(); | 23 | $grabySiteConfig = new GrabySiteConfig(); |
26 | $grabySiteConfig->requires_login = true; | 24 | $grabySiteConfig->requires_login = true; |
27 | $grabySiteConfig->login_uri = 'http://www.example.com/login'; | 25 | $grabySiteConfig->login_uri = 'http://api.example.com/login'; |
28 | $grabySiteConfig->login_username_field = 'login'; | 26 | $grabySiteConfig->login_username_field = 'login'; |
29 | $grabySiteConfig->login_password_field = 'password'; | 27 | $grabySiteConfig->login_password_field = 'password'; |
30 | $grabySiteConfig->login_extra_fields = ['field=value']; | 28 | $grabySiteConfig->login_extra_fields = ['field=value']; |
@@ -32,7 +30,7 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
32 | 30 | ||
33 | $grabyConfigBuilderMock | 31 | $grabyConfigBuilderMock |
34 | ->method('buildForHost') | 32 | ->method('buildForHost') |
35 | ->with('example.com') | 33 | ->with('api.example.com') |
36 | ->willReturn($grabySiteConfig); | 34 | ->willReturn($grabySiteConfig); |
37 | 35 | ||
38 | $logger = new Logger('foo'); | 36 | $logger = new Logger('foo'); |
@@ -43,8 +41,8 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
43 | ->disableOriginalConstructor() | 41 | ->disableOriginalConstructor() |
44 | ->getMock(); | 42 | ->getMock(); |
45 | $siteCrentialRepo->expects($this->once()) | 43 | $siteCrentialRepo->expects($this->once()) |
46 | ->method('findOneByHostAndUser') | 44 | ->method('findOneByHostsAndUser') |
47 | ->with('example.com', 1) | 45 | ->with(['api.example.com', '.example.com'], 1) |
48 | ->willReturn(['username' => 'foo', 'password' => 'bar']); | 46 | ->willReturn(['username' => 'foo', 'password' => 'bar']); |
49 | 47 | ||
50 | $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') | 48 | $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') |
@@ -59,18 +57,18 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
59 | $tokenStorage = new TokenStorage(); | 57 | $tokenStorage = new TokenStorage(); |
60 | $tokenStorage->setToken($token); | 58 | $tokenStorage->setToken($token); |
61 | 59 | ||
62 | $this->builder = new GrabySiteConfigBuilder( | 60 | $builder = new GrabySiteConfigBuilder( |
63 | $grabyConfigBuilderMock, | 61 | $grabyConfigBuilderMock, |
64 | $tokenStorage, | 62 | $tokenStorage, |
65 | $siteCrentialRepo, | 63 | $siteCrentialRepo, |
66 | $logger | 64 | $logger |
67 | ); | 65 | ); |
68 | 66 | ||
69 | $config = $this->builder->buildForHost('www.example.com'); | 67 | $config = $builder->buildForHost('api.example.com'); |
70 | 68 | ||
71 | $this->assertSame('example.com', $config->getHost()); | 69 | $this->assertSame('api.example.com', $config->getHost()); |
72 | $this->assertTrue($config->requiresLogin()); | 70 | $this->assertTrue($config->requiresLogin()); |
73 | $this->assertSame('http://www.example.com/login', $config->getLoginUri()); | 71 | $this->assertSame('http://api.example.com/login', $config->getLoginUri()); |
74 | $this->assertSame('login', $config->getUsernameField()); | 72 | $this->assertSame('login', $config->getUsernameField()); |
75 | $this->assertSame('password', $config->getPasswordField()); | 73 | $this->assertSame('password', $config->getPasswordField()); |
76 | $this->assertSame(['field' => 'value'], $config->getExtraFields()); | 74 | $this->assertSame(['field' => 'value'], $config->getExtraFields()); |
@@ -85,7 +83,6 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
85 | 83 | ||
86 | public function testBuildConfigDoesntExist() | 84 | public function testBuildConfigDoesntExist() |
87 | { | 85 | { |
88 | /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */ | ||
89 | $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder') | 86 | $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder') |
90 | ->disableOriginalConstructor() | 87 | ->disableOriginalConstructor() |
91 | ->getMock(); | 88 | ->getMock(); |
@@ -103,8 +100,8 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
103 | ->disableOriginalConstructor() | 100 | ->disableOriginalConstructor() |
104 | ->getMock(); | 101 | ->getMock(); |
105 | $siteCrentialRepo->expects($this->once()) | 102 | $siteCrentialRepo->expects($this->once()) |
106 | ->method('findOneByHostAndUser') | 103 | ->method('findOneByHostsAndUser') |
107 | ->with('unknown.com', 1) | 104 | ->with(['unknown.com', '.com'], 1) |
108 | ->willReturn(null); | 105 | ->willReturn(null); |
109 | 106 | ||
110 | $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') | 107 | $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') |
@@ -119,14 +116,14 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
119 | $tokenStorage = new TokenStorage(); | 116 | $tokenStorage = new TokenStorage(); |
120 | $tokenStorage->setToken($token); | 117 | $tokenStorage->setToken($token); |
121 | 118 | ||
122 | $this->builder = new GrabySiteConfigBuilder( | 119 | $builder = new GrabySiteConfigBuilder( |
123 | $grabyConfigBuilderMock, | 120 | $grabyConfigBuilderMock, |
124 | $tokenStorage, | 121 | $tokenStorage, |
125 | $siteCrentialRepo, | 122 | $siteCrentialRepo, |
126 | $logger | 123 | $logger |
127 | ); | 124 | ); |
128 | 125 | ||
129 | $config = $this->builder->buildForHost('unknown.com'); | 126 | $config = $builder->buildForHost('unknown.com'); |
130 | 127 | ||
131 | $this->assertFalse($config); | 128 | $this->assertFalse($config); |
132 | 129 | ||
@@ -137,7 +134,6 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
137 | 134 | ||
138 | public function testBuildConfigWithBadExtraFields() | 135 | public function testBuildConfigWithBadExtraFields() |
139 | { | 136 | { |
140 | /* @var \Graby\SiteConfig\ConfigBuilder|\PHPUnit_Framework_MockObject_MockObject */ | ||
141 | $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder') | 137 | $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder') |
142 | ->disableOriginalConstructor() | 138 | ->disableOriginalConstructor() |
143 | ->getMock(); | 139 | ->getMock(); |
@@ -163,8 +159,8 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
163 | ->disableOriginalConstructor() | 159 | ->disableOriginalConstructor() |
164 | ->getMock(); | 160 | ->getMock(); |
165 | $siteCrentialRepo->expects($this->once()) | 161 | $siteCrentialRepo->expects($this->once()) |
166 | ->method('findOneByHostAndUser') | 162 | ->method('findOneByHostsAndUser') |
167 | ->with('example.com', 1) | 163 | ->with(['example.com', '.com'], 1) |
168 | ->willReturn(['username' => 'foo', 'password' => 'bar']); | 164 | ->willReturn(['username' => 'foo', 'password' => 'bar']); |
169 | 165 | ||
170 | $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') | 166 | $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') |
@@ -202,4 +198,121 @@ class GrabySiteConfigBuilderTest extends TestCase | |||
202 | 198 | ||
203 | $this->assertCount(1, $records, 'One log was recorded'); | 199 | $this->assertCount(1, $records, 'One log was recorded'); |
204 | } | 200 | } |
201 | |||
202 | public function testBuildConfigUserNotDefined() | ||
203 | { | ||
204 | $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder') | ||
205 | ->disableOriginalConstructor() | ||
206 | ->getMock(); | ||
207 | |||
208 | $grabyConfigBuilderMock | ||
209 | ->method('buildForHost') | ||
210 | ->with('unknown.com') | ||
211 | ->willReturn(new GrabySiteConfig()); | ||
212 | |||
213 | $logger = new Logger('foo'); | ||
214 | $handler = new TestHandler(); | ||
215 | $logger->pushHandler($handler); | ||
216 | |||
217 | $siteCrentialRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\SiteCredentialRepository') | ||
218 | ->disableOriginalConstructor() | ||
219 | ->getMock(); | ||
220 | |||
221 | $tokenStorage = new TokenStorage(); | ||
222 | |||
223 | $builder = new GrabySiteConfigBuilder( | ||
224 | $grabyConfigBuilderMock, | ||
225 | $tokenStorage, | ||
226 | $siteCrentialRepo, | ||
227 | $logger | ||
228 | ); | ||
229 | |||
230 | $config = $builder->buildForHost('unknown.com'); | ||
231 | |||
232 | $this->assertFalse($config); | ||
233 | } | ||
234 | |||
235 | public function dataProviderCredentials() | ||
236 | { | ||
237 | return [ | ||
238 | [ | ||
239 | 'host' => 'example.com', | ||
240 | ], | ||
241 | [ | ||
242 | 'host' => 'other.example.com', | ||
243 | ], | ||
244 | [ | ||
245 | 'host' => 'paywall.example.com', | ||
246 | 'expectedUsername' => 'paywall.example', | ||
247 | 'expectedPassword' => 'bar', | ||
248 | ], | ||
249 | [ | ||
250 | 'host' => 'api.super.com', | ||
251 | 'expectedUsername' => '.super', | ||
252 | 'expectedPassword' => 'bar', | ||
253 | ], | ||
254 | [ | ||
255 | 'host' => '.super.com', | ||
256 | 'expectedUsername' => '.super', | ||
257 | 'expectedPassword' => 'bar', | ||
258 | ], | ||
259 | ]; | ||
260 | } | ||
261 | |||
262 | /** | ||
263 | * @dataProvider dataProviderCredentials | ||
264 | */ | ||
265 | public function testBuildConfigWithDbAccess($host, $expectedUsername = null, $expectedPassword = null) | ||
266 | { | ||
267 | $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder') | ||
268 | ->disableOriginalConstructor() | ||
269 | ->getMock(); | ||
270 | |||
271 | $grabySiteConfig = new GrabySiteConfig(); | ||
272 | $grabySiteConfig->requires_login = true; | ||
273 | $grabySiteConfig->login_uri = 'http://api.example.com/login'; | ||
274 | $grabySiteConfig->login_username_field = 'login'; | ||
275 | $grabySiteConfig->login_password_field = 'password'; | ||
276 | $grabySiteConfig->login_extra_fields = ['field=value']; | ||
277 | $grabySiteConfig->not_logged_in_xpath = '//div[@class="need-login"]'; | ||
278 | |||
279 | $grabyConfigBuilderMock | ||
280 | ->method('buildForHost') | ||
281 | ->with($host) | ||
282 | ->willReturn($grabySiteConfig); | ||
283 | |||
284 | $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') | ||
285 | ->disableOriginalConstructor() | ||
286 | ->getMock(); | ||
287 | $user->expects($this->once()) | ||
288 | ->method('getId') | ||
289 | ->willReturn(1); | ||
290 | |||
291 | $token = new UsernamePasswordToken($user, 'pass', 'provider'); | ||
292 | |||
293 | $tokenStorage = new TokenStorage(); | ||
294 | $tokenStorage->setToken($token); | ||
295 | |||
296 | $logger = new Logger('foo'); | ||
297 | $handler = new TestHandler(); | ||
298 | $logger->pushHandler($handler); | ||
299 | |||
300 | $builder = new GrabySiteConfigBuilder( | ||
301 | $grabyConfigBuilderMock, | ||
302 | $tokenStorage, | ||
303 | $this->getClient()->getContainer()->get('wallabag_core.site_credential_repository'), | ||
304 | $logger | ||
305 | ); | ||
306 | |||
307 | $config = $builder->buildForHost($host); | ||
308 | |||
309 | if (null === $expectedUsername && null === $expectedPassword) { | ||
310 | $this->assertFalse($config); | ||
311 | |||
312 | return; | ||
313 | } | ||
314 | |||
315 | $this->assertSame($expectedUsername, $config->getUsername()); | ||
316 | $this->assertSame($expectedPassword, $config->getPassword()); | ||
317 | } | ||
205 | } | 318 | } |
diff --git a/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php b/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php index 508adb1b..9ce72c79 100644 --- a/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php +++ b/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php | |||
@@ -36,7 +36,9 @@ class ContentProxyTest extends TestCase | |||
36 | 'html' => false, | 36 | 'html' => false, |
37 | 'title' => '', | 37 | 'title' => '', |
38 | 'url' => '', | 38 | 'url' => '', |
39 | 'content_type' => '', | 39 | 'headers' => [ |
40 | 'content-type' => '', | ||
41 | ], | ||
40 | 'language' => '', | 42 | 'language' => '', |
41 | ]); | 43 | ]); |
42 | 44 | ||
@@ -71,7 +73,9 @@ class ContentProxyTest extends TestCase | |||
71 | 'html' => false, | 73 | 'html' => false, |
72 | 'title' => '', | 74 | 'title' => '', |
73 | 'url' => '', | 75 | 'url' => '', |
74 | 'content_type' => '', | 76 | 'headers' => [ |
77 | 'content-type' => '', | ||
78 | ], | ||
75 | 'language' => '', | 79 | 'language' => '', |
76 | ]); | 80 | ]); |
77 | 81 | ||
@@ -104,15 +108,14 @@ class ContentProxyTest extends TestCase | |||
104 | ->method('fetchContent') | 108 | ->method('fetchContent') |
105 | ->willReturn([ | 109 | ->willReturn([ |
106 | 'html' => false, | 110 | 'html' => false, |
107 | 'title' => '', | 111 | 'title' => 'my title', |
108 | 'url' => '', | 112 | 'url' => '', |
109 | 'content_type' => '', | 113 | 'headers' => [ |
114 | 'content-type' => '', | ||
115 | ], | ||
110 | 'language' => '', | 116 | 'language' => '', |
111 | 'status' => '', | 117 | 'status' => '', |
112 | 'open_graph' => [ | 118 | 'description' => 'desc', |
113 | 'og_title' => 'my title', | ||
114 | 'og_description' => 'desc', | ||
115 | ], | ||
116 | ]); | 119 | ]); |
117 | 120 | ||
118 | $proxy = new ContentProxy($graby, $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage); | 121 | $proxy = new ContentProxy($graby, $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage); |
@@ -147,13 +150,12 @@ class ContentProxyTest extends TestCase | |||
147 | 'html' => str_repeat('this is my content', 325), | 150 | 'html' => str_repeat('this is my content', 325), |
148 | 'title' => 'this is my title', | 151 | 'title' => 'this is my title', |
149 | 'url' => 'http://1.1.1.1', | 152 | 'url' => 'http://1.1.1.1', |
150 | 'content_type' => 'text/html', | ||
151 | 'language' => 'fr', | 153 | 'language' => 'fr', |
152 | 'status' => '200', | 154 | 'status' => '200', |
153 | 'open_graph' => [ | 155 | 'description' => 'OG desc', |
154 | 'og_title' => 'my OG title', | 156 | 'image' => 'http://3.3.3.3/cover.jpg', |
155 | 'og_description' => 'OG desc', | 157 | 'headers' => [ |
156 | 'og_image' => 'http://3.3.3.3/cover.jpg', | 158 | 'content-type' => 'text/html', |
157 | ], | 159 | ], |
158 | ]); | 160 | ]); |
159 | 161 | ||
@@ -189,13 +191,12 @@ class ContentProxyTest extends TestCase | |||
189 | 'html' => str_repeat('this is my content', 325), | 191 | 'html' => str_repeat('this is my content', 325), |
190 | 'title' => 'this is my title', | 192 | 'title' => 'this is my title', |
191 | 'url' => 'http://1.1.1.1', | 193 | 'url' => 'http://1.1.1.1', |
192 | 'content_type' => 'text/html', | ||
193 | 'language' => 'fr', | 194 | 'language' => 'fr', |
194 | 'status' => '200', | 195 | 'status' => '200', |
195 | 'open_graph' => [ | 196 | 'description' => 'OG desc', |
196 | 'og_title' => 'my OG title', | 197 | 'image' => null, |
197 | 'og_description' => 'OG desc', | 198 | 'headers' => [ |
198 | 'og_image' => null, | 199 | 'content-type' => 'text/html', |
199 | ], | 200 | ], |
200 | ]); | 201 | ]); |
201 | 202 | ||
@@ -214,6 +215,86 @@ class ContentProxyTest extends TestCase | |||
214 | $this->assertSame('1.1.1.1', $entry->getDomainName()); | 215 | $this->assertSame('1.1.1.1', $entry->getDomainName()); |
215 | } | 216 | } |
216 | 217 | ||
218 | public function testWithContentAndContentImage() | ||
219 | { | ||
220 | $tagger = $this->getTaggerMock(); | ||
221 | $tagger->expects($this->once()) | ||
222 | ->method('tag'); | ||
223 | |||
224 | $graby = $this->getMockBuilder('Graby\Graby') | ||
225 | ->setMethods(['fetchContent']) | ||
226 | ->disableOriginalConstructor() | ||
227 | ->getMock(); | ||
228 | |||
229 | $graby->expects($this->any()) | ||
230 | ->method('fetchContent') | ||
231 | ->willReturn([ | ||
232 | 'html' => "<h1>Test</h1><p><img src='http://3.3.3.3/cover.jpg'/></p>", | ||
233 | 'title' => 'this is my title', | ||
234 | 'url' => 'http://1.1.1.1', | ||
235 | 'headers' => [ | ||
236 | 'content-type' => 'text/html', | ||
237 | ], | ||
238 | 'language' => 'fr', | ||
239 | 'status' => '200', | ||
240 | 'image' => null, | ||
241 | ]); | ||
242 | |||
243 | $proxy = new ContentProxy($graby, $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage); | ||
244 | $entry = new Entry(new User()); | ||
245 | $proxy->updateEntry($entry, 'http://0.0.0.0'); | ||
246 | |||
247 | $this->assertSame('http://1.1.1.1', $entry->getUrl()); | ||
248 | $this->assertSame('this is my title', $entry->getTitle()); | ||
249 | $this->assertSame("<h1>Test</h1><p><img src='http://3.3.3.3/cover.jpg'/></p>", $entry->getContent()); | ||
250 | $this->assertSame('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture()); | ||
251 | $this->assertSame('text/html', $entry->getMimetype()); | ||
252 | $this->assertSame('fr', $entry->getLanguage()); | ||
253 | $this->assertSame('200', $entry->getHttpStatus()); | ||
254 | $this->assertSame(0.0, $entry->getReadingTime()); | ||
255 | $this->assertSame('1.1.1.1', $entry->getDomainName()); | ||
256 | } | ||
257 | |||
258 | public function testWithContentImageAndOgImage() | ||
259 | { | ||
260 | $tagger = $this->getTaggerMock(); | ||
261 | $tagger->expects($this->once()) | ||
262 | ->method('tag'); | ||
263 | |||
264 | $graby = $this->getMockBuilder('Graby\Graby') | ||
265 | ->setMethods(['fetchContent']) | ||
266 | ->disableOriginalConstructor() | ||
267 | ->getMock(); | ||
268 | |||
269 | $graby->expects($this->any()) | ||
270 | ->method('fetchContent') | ||
271 | ->willReturn([ | ||
272 | 'html' => "<h1>Test</h1><p><img src='http://3.3.3.3/nevermind.jpg'/></p>", | ||
273 | 'title' => 'this is my title', | ||
274 | 'url' => 'http://1.1.1.1', | ||
275 | 'headers' => [ | ||
276 | 'content-type' => 'text/html', | ||
277 | ], | ||
278 | 'language' => 'fr', | ||
279 | 'status' => '200', | ||
280 | 'image' => 'http://3.3.3.3/cover.jpg', | ||
281 | ]); | ||
282 | |||
283 | $proxy = new ContentProxy($graby, $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage); | ||
284 | $entry = new Entry(new User()); | ||
285 | $proxy->updateEntry($entry, 'http://0.0.0.0'); | ||
286 | |||
287 | $this->assertSame('http://1.1.1.1', $entry->getUrl()); | ||
288 | $this->assertSame('this is my title', $entry->getTitle()); | ||
289 | $this->assertSame("<h1>Test</h1><p><img src='http://3.3.3.3/nevermind.jpg'/></p>", $entry->getContent()); | ||
290 | $this->assertSame('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture()); | ||
291 | $this->assertSame('text/html', $entry->getMimetype()); | ||
292 | $this->assertSame('fr', $entry->getLanguage()); | ||
293 | $this->assertSame('200', $entry->getHttpStatus()); | ||
294 | $this->assertSame(0.0, $entry->getReadingTime()); | ||
295 | $this->assertSame('1.1.1.1', $entry->getDomainName()); | ||
296 | } | ||
297 | |||
217 | public function testWithContentAndBadLanguage() | 298 | public function testWithContentAndBadLanguage() |
218 | { | 299 | { |
219 | $tagger = $this->getTaggerMock(); | 300 | $tagger = $this->getTaggerMock(); |
@@ -236,9 +317,11 @@ class ContentProxyTest extends TestCase | |||
236 | 'html' => str_repeat('this is my content', 325), | 317 | 'html' => str_repeat('this is my content', 325), |
237 | 'title' => 'this is my title', | 318 | 'title' => 'this is my title', |
238 | 'url' => 'http://1.1.1.1', | 319 | 'url' => 'http://1.1.1.1', |
239 | 'content_type' => 'text/html', | ||
240 | 'language' => 'dontexist', | 320 | 'language' => 'dontexist', |
241 | 'status' => '200', | 321 | 'status' => '200', |
322 | 'headers' => [ | ||
323 | 'content-type' => 'text/html', | ||
324 | ], | ||
242 | ]); | 325 | ]); |
243 | 326 | ||
244 | $proxy = new ContentProxy($graby, $tagger, $validator, $this->getLogger(), $this->fetchingErrorMessage); | 327 | $proxy = new ContentProxy($graby, $tagger, $validator, $this->getLogger(), $this->fetchingErrorMessage); |
@@ -280,14 +363,13 @@ class ContentProxyTest extends TestCase | |||
280 | 'html' => str_repeat('this is my content', 325), | 363 | 'html' => str_repeat('this is my content', 325), |
281 | 'title' => 'this is my title', | 364 | 'title' => 'this is my title', |
282 | 'url' => 'http://1.1.1.1', | 365 | 'url' => 'http://1.1.1.1', |
283 | 'content_type' => 'text/html', | 366 | 'headers' => [ |
367 | 'content-type' => 'text/html', | ||
368 | ], | ||
284 | 'language' => 'fr', | 369 | 'language' => 'fr', |
285 | 'status' => '200', | 370 | 'status' => '200', |
286 | 'open_graph' => [ | 371 | 'description' => 'OG desc', |
287 | 'og_title' => 'my OG title', | 372 | 'image' => 'https://', |
288 | 'og_description' => 'OG desc', | ||
289 | 'og_image' => 'https://', | ||
290 | ], | ||
291 | ]); | 373 | ]); |
292 | 374 | ||
293 | $proxy = new ContentProxy($graby, $tagger, $validator, $this->getLogger(), $this->fetchingErrorMessage); | 375 | $proxy = new ContentProxy($graby, $tagger, $validator, $this->getLogger(), $this->fetchingErrorMessage); |
@@ -320,12 +402,12 @@ class ContentProxyTest extends TestCase | |||
320 | 'html' => str_repeat('this is my content', 325), | 402 | 'html' => str_repeat('this is my content', 325), |
321 | 'title' => 'this is my title', | 403 | 'title' => 'this is my title', |
322 | 'url' => 'http://1.1.1.1', | 404 | 'url' => 'http://1.1.1.1', |
323 | 'content_type' => 'text/html', | ||
324 | 'language' => 'fr', | 405 | 'language' => 'fr', |
325 | 'date' => '1395635872', | 406 | 'date' => '1395635872', |
326 | 'authors' => ['Jeremy', 'Nico', 'Thomas'], | 407 | 'authors' => ['Jeremy', 'Nico', 'Thomas'], |
327 | 'all_headers' => [ | 408 | 'headers' => [ |
328 | 'Cache-Control' => 'no-cache', | 409 | 'cache-control' => 'no-cache', |
410 | 'content-type' => 'text/html', | ||
329 | ], | 411 | ], |
330 | ] | 412 | ] |
331 | ); | 413 | ); |
@@ -363,9 +445,11 @@ class ContentProxyTest extends TestCase | |||
363 | 'html' => str_repeat('this is my content', 325), | 445 | 'html' => str_repeat('this is my content', 325), |
364 | 'title' => 'this is my title', | 446 | 'title' => 'this is my title', |
365 | 'url' => 'http://1.1.1.1', | 447 | 'url' => 'http://1.1.1.1', |
366 | 'content_type' => 'text/html', | ||
367 | 'language' => 'fr', | 448 | 'language' => 'fr', |
368 | 'date' => '2016-09-08T11:55:58+0200', | 449 | 'date' => '2016-09-08T11:55:58+0200', |
450 | 'headers' => [ | ||
451 | 'content-type' => 'text/html', | ||
452 | ], | ||
369 | ] | 453 | ] |
370 | ); | 454 | ); |
371 | 455 | ||
@@ -398,9 +482,11 @@ class ContentProxyTest extends TestCase | |||
398 | 'html' => str_repeat('this is my content', 325), | 482 | 'html' => str_repeat('this is my content', 325), |
399 | 'title' => 'this is my title', | 483 | 'title' => 'this is my title', |
400 | 'url' => 'http://1.1.1.1', | 484 | 'url' => 'http://1.1.1.1', |
401 | 'content_type' => 'text/html', | ||
402 | 'language' => 'fr', | 485 | 'language' => 'fr', |
403 | 'date' => '01 02 2012', | 486 | 'date' => '01 02 2012', |
487 | 'headers' => [ | ||
488 | 'content-type' => 'text/html', | ||
489 | ], | ||
404 | ] | 490 | ] |
405 | ); | 491 | ); |
406 | 492 | ||
@@ -415,7 +501,7 @@ class ContentProxyTest extends TestCase | |||
415 | 501 | ||
416 | $records = $handler->getRecords(); | 502 | $records = $handler->getRecords(); |
417 | 503 | ||
418 | $this->assertCount(1, $records); | 504 | $this->assertCount(3, $records); |
419 | $this->assertContains('Error while defining date', $records[0]['message']); | 505 | $this->assertContains('Error while defining date', $records[0]['message']); |
420 | } | 506 | } |
421 | 507 | ||
@@ -435,8 +521,10 @@ class ContentProxyTest extends TestCase | |||
435 | 'html' => str_repeat('this is my content', 325), | 521 | 'html' => str_repeat('this is my content', 325), |
436 | 'title' => 'this is my title', | 522 | 'title' => 'this is my title', |
437 | 'url' => 'http://1.1.1.1', | 523 | 'url' => 'http://1.1.1.1', |
438 | 'content_type' => 'text/html', | ||
439 | 'language' => 'fr', | 524 | 'language' => 'fr', |
525 | 'headers' => [ | ||
526 | 'content-type' => 'text/html', | ||
527 | ], | ||
440 | ] | 528 | ] |
441 | ); | 529 | ); |
442 | 530 | ||
@@ -475,13 +563,13 @@ class ContentProxyTest extends TestCase | |||
475 | 'html' => $html, | 563 | 'html' => $html, |
476 | 'title' => 'this is my title', | 564 | 'title' => 'this is my title', |
477 | 'url' => 'http://1.1.1.1', | 565 | 'url' => 'http://1.1.1.1', |
478 | 'content_type' => 'text/html', | ||
479 | 'language' => 'fr', | 566 | 'language' => 'fr', |
480 | 'status' => '200', | 567 | 'status' => '200', |
481 | 'open_graph' => [ | 568 | //'og_title' => 'my OG title', |
482 | 'og_title' => 'my OG title', | 569 | 'description' => 'OG desc', |
483 | 'og_description' => 'OG desc', | 570 | 'image' => 'http://3.3.3.3/cover.jpg', |
484 | 'og_image' => 'http://3.3.3.3/cover.jpg', | 571 | 'headers' => [ |
572 | 'content-type' => 'text/html', | ||
485 | ], | 573 | ], |
486 | ] | 574 | ] |
487 | ); | 575 | ); |
@@ -513,9 +601,10 @@ class ContentProxyTest extends TestCase | |||
513 | 'html' => '<p><img src="http://1.1.1.1/image.jpg" /></p>', | 601 | 'html' => '<p><img src="http://1.1.1.1/image.jpg" /></p>', |
514 | 'title' => 'this is my title', | 602 | 'title' => 'this is my title', |
515 | 'url' => 'http://1.1.1.1/image.jpg', | 603 | 'url' => 'http://1.1.1.1/image.jpg', |
516 | 'content_type' => 'image/jpeg', | ||
517 | 'status' => '200', | 604 | 'status' => '200', |
518 | 'open_graph' => [], | 605 | 'headers' => [ |
606 | 'content-type' => 'image/jpeg', | ||
607 | ], | ||
519 | ]); | 608 | ]); |
520 | 609 | ||
521 | $proxy = new ContentProxy($graby, $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage); | 610 | $proxy = new ContentProxy($graby, $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage); |
@@ -553,7 +642,9 @@ class ContentProxyTest extends TestCase | |||
553 | 'html' => false, | 642 | 'html' => false, |
554 | 'title' => $actualTitle, | 643 | 'title' => $actualTitle, |
555 | 'url' => '', | 644 | 'url' => '', |
556 | 'content_type' => 'text/html', | 645 | 'headers' => [ |
646 | 'content-type' => 'text/html', | ||
647 | ], | ||
557 | 'language' => '', | 648 | 'language' => '', |
558 | ]); | 649 | ]); |
559 | 650 | ||
@@ -588,7 +679,9 @@ class ContentProxyTest extends TestCase | |||
588 | 'html' => false, | 679 | 'html' => false, |
589 | 'title' => $actualTitle, | 680 | 'title' => $actualTitle, |
590 | 'url' => '', | 681 | 'url' => '', |
591 | 'content_type' => 'text/html', | 682 | 'headers' => [ |
683 | 'content-type' => 'text/html', | ||
684 | ], | ||
592 | 'language' => '', | 685 | 'language' => '', |
593 | ]); | 686 | ]); |
594 | 687 | ||
@@ -622,7 +715,9 @@ class ContentProxyTest extends TestCase | |||
622 | 'html' => false, | 715 | 'html' => false, |
623 | 'title' => $actualTitle, | 716 | 'title' => $actualTitle, |
624 | 'url' => '', | 717 | 'url' => '', |
625 | 'content_type' => 'application/pdf', | 718 | 'headers' => [ |
719 | 'content-type' => 'application/pdf', | ||
720 | ], | ||
626 | 'language' => '', | 721 | 'language' => '', |
627 | ]); | 722 | ]); |
628 | 723 | ||
@@ -656,7 +751,9 @@ class ContentProxyTest extends TestCase | |||
656 | 'html' => false, | 751 | 'html' => false, |
657 | 'title' => $actualTitle, | 752 | 'title' => $actualTitle, |
658 | 'url' => '', | 753 | 'url' => '', |
659 | 'content_type' => 'application/pdf', | 754 | 'headers' => [ |
755 | 'content-type' => 'application/pdf', | ||
756 | ], | ||
660 | 'language' => '', | 757 | 'language' => '', |
661 | ]); | 758 | ]); |
662 | 759 | ||
@@ -690,7 +787,9 @@ class ContentProxyTest extends TestCase | |||
690 | 'html' => false, | 787 | 'html' => false, |
691 | 'title' => $actualTitle, | 788 | 'title' => $actualTitle, |
692 | 'url' => '', | 789 | 'url' => '', |
693 | 'content_type' => 'application/pdf', | 790 | 'headers' => [ |
791 | 'content-type' => 'application/pdf', | ||
792 | ], | ||
694 | 'language' => '', | 793 | 'language' => '', |
695 | ]); | 794 | ]); |
696 | 795 | ||
@@ -725,7 +824,9 @@ class ContentProxyTest extends TestCase | |||
725 | 'html' => false, | 824 | 'html' => false, |
726 | 'title' => $actualTitle, | 825 | 'title' => $actualTitle, |
727 | 'url' => '', | 826 | 'url' => '', |
728 | 'content_type' => 'application/pdf', | 827 | 'headers' => [ |
828 | 'content-type' => 'application/pdf', | ||
829 | ], | ||
729 | 'language' => '', | 830 | 'language' => '', |
730 | ]); | 831 | ]); |
731 | 832 | ||
@@ -855,7 +956,9 @@ class ContentProxyTest extends TestCase | |||
855 | 'html' => false, | 956 | 'html' => false, |
856 | 'title' => '', | 957 | 'title' => '', |
857 | 'url' => $content_url, | 958 | 'url' => $content_url, |
858 | 'content_type' => '', | 959 | 'headers' => [ |
960 | 'content-type' => '', | ||
961 | ], | ||
859 | 'language' => '', | 962 | 'language' => '', |
860 | ], | 963 | ], |
861 | true | 964 | true |
@@ -886,7 +989,9 @@ class ContentProxyTest extends TestCase | |||
886 | } | 989 | } |
887 | 990 | ||
888 | /** | 991 | /** |
889 | * https://stackoverflow.com/a/18506801. | 992 | * Convert hex to string. |
993 | * | ||
994 | * @see https://stackoverflow.com/a/18506801 | ||
890 | * | 995 | * |
891 | * @param $hex | 996 | * @param $hex |
892 | * | 997 | * |
diff --git a/tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php b/tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php index cda5f843..3c720425 100644 --- a/tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php +++ b/tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php | |||
@@ -2,10 +2,8 @@ | |||
2 | 2 | ||
3 | namespace Tests\Wallabag\CoreBundle\Helper; | 3 | namespace Tests\Wallabag\CoreBundle\Helper; |
4 | 4 | ||
5 | use GuzzleHttp\Client; | 5 | use GuzzleHttp\Psr7\Response; |
6 | use GuzzleHttp\Message\Response; | 6 | use Http\Mock\Client as HttpMockClient; |
7 | use GuzzleHttp\Stream\Stream; | ||
8 | use GuzzleHttp\Subscriber\Mock; | ||
9 | use Monolog\Handler\TestHandler; | 7 | use Monolog\Handler\TestHandler; |
10 | use Monolog\Logger; | 8 | use Monolog\Logger; |
11 | use PHPUnit\Framework\TestCase; | 9 | use PHPUnit\Framework\TestCase; |
@@ -32,18 +30,14 @@ class DownloadImagesTest extends TestCase | |||
32 | */ | 30 | */ |
33 | public function testProcessHtml($html, $url) | 31 | public function testProcessHtml($html, $url) |
34 | { | 32 | { |
35 | $client = new Client(); | 33 | $httpMockClient = new HttpMockClient(); |
36 | 34 | ||
37 | $mock = new Mock([ | 35 | $httpMockClient->addResponse(new Response(200, ['content-type' => 'image/png'], file_get_contents(__DIR__ . '/../fixtures/unnamed.png'))); |
38 | new Response(200, ['content-type' => 'image/png'], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/unnamed.png'))), | ||
39 | ]); | ||
40 | |||
41 | $client->getEmitter()->attach($mock); | ||
42 | 36 | ||
43 | $logHandler = new TestHandler(); | 37 | $logHandler = new TestHandler(); |
44 | $logger = new Logger('test', [$logHandler]); | 38 | $logger = new Logger('test', [$logHandler]); |
45 | 39 | ||
46 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 40 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
47 | 41 | ||
48 | $res = $download->processHtml(123, $html, $url); | 42 | $res = $download->processHtml(123, $html, $url); |
49 | 43 | ||
@@ -53,18 +47,13 @@ class DownloadImagesTest extends TestCase | |||
53 | 47 | ||
54 | public function testProcessHtmlWithBadImage() | 48 | public function testProcessHtmlWithBadImage() |
55 | { | 49 | { |
56 | $client = new Client(); | 50 | $httpMockClient = new HttpMockClient(); |
57 | 51 | $httpMockClient->addResponse(new Response(200, ['content-type' => 'application/json'], '')); | |
58 | $mock = new Mock([ | ||
59 | new Response(200, ['content-type' => 'application/json'], Stream::factory('')), | ||
60 | ]); | ||
61 | |||
62 | $client->getEmitter()->attach($mock); | ||
63 | 52 | ||
64 | $logHandler = new TestHandler(); | 53 | $logHandler = new TestHandler(); |
65 | $logger = new Logger('test', [$logHandler]); | 54 | $logger = new Logger('test', [$logHandler]); |
66 | 55 | ||
67 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 56 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
68 | $res = $download->processHtml(123, '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>', 'http://imgur.com/gallery/WxtWY'); | 57 | $res = $download->processHtml(123, '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>', 'http://imgur.com/gallery/WxtWY'); |
69 | 58 | ||
70 | $this->assertContains('http://i.imgur.com/T9qgcHc.jpg', $res, 'Image were not replace because of content-type'); | 59 | $this->assertContains('http://i.imgur.com/T9qgcHc.jpg', $res, 'Image were not replace because of content-type'); |
@@ -85,18 +74,13 @@ class DownloadImagesTest extends TestCase | |||
85 | */ | 74 | */ |
86 | public function testProcessSingleImage($header, $extension) | 75 | public function testProcessSingleImage($header, $extension) |
87 | { | 76 | { |
88 | $client = new Client(); | 77 | $httpMockClient = new HttpMockClient(); |
89 | 78 | $httpMockClient->addResponse(new Response(200, ['content-type' => $header], file_get_contents(__DIR__ . '/../fixtures/unnamed.png'))); | |
90 | $mock = new Mock([ | ||
91 | new Response(200, ['content-type' => $header], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/unnamed.png'))), | ||
92 | ]); | ||
93 | |||
94 | $client->getEmitter()->attach($mock); | ||
95 | 79 | ||
96 | $logHandler = new TestHandler(); | 80 | $logHandler = new TestHandler(); |
97 | $logger = new Logger('test', [$logHandler]); | 81 | $logger = new Logger('test', [$logHandler]); |
98 | 82 | ||
99 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 83 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
100 | $res = $download->processSingleImage(123, 'T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); | 84 | $res = $download->processSingleImage(123, 'T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); |
101 | 85 | ||
102 | $this->assertContains('/assets/images/9/b/9b0ead26/ebe60399.' . $extension, $res); | 86 | $this->assertContains('/assets/images/9/b/9b0ead26/ebe60399.' . $extension, $res); |
@@ -104,18 +88,13 @@ class DownloadImagesTest extends TestCase | |||
104 | 88 | ||
105 | public function testProcessSingleImageWithBadUrl() | 89 | public function testProcessSingleImageWithBadUrl() |
106 | { | 90 | { |
107 | $client = new Client(); | 91 | $httpMockClient = new HttpMockClient(); |
108 | 92 | $httpMockClient->addResponse(new Response(404, [])); | |
109 | $mock = new Mock([ | ||
110 | new Response(404, []), | ||
111 | ]); | ||
112 | |||
113 | $client->getEmitter()->attach($mock); | ||
114 | 93 | ||
115 | $logHandler = new TestHandler(); | 94 | $logHandler = new TestHandler(); |
116 | $logger = new Logger('test', [$logHandler]); | 95 | $logger = new Logger('test', [$logHandler]); |
117 | 96 | ||
118 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 97 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
119 | $res = $download->processSingleImage(123, 'T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); | 98 | $res = $download->processSingleImage(123, 'T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); |
120 | 99 | ||
121 | $this->assertFalse($res, 'Image can not be found, so it will not be replaced'); | 100 | $this->assertFalse($res, 'Image can not be found, so it will not be replaced'); |
@@ -123,18 +102,13 @@ class DownloadImagesTest extends TestCase | |||
123 | 102 | ||
124 | public function testProcessSingleImageWithBadImage() | 103 | public function testProcessSingleImageWithBadImage() |
125 | { | 104 | { |
126 | $client = new Client(); | 105 | $httpMockClient = new HttpMockClient(); |
127 | 106 | $httpMockClient->addResponse(new Response(200, ['content-type' => 'image/png'], '')); | |
128 | $mock = new Mock([ | ||
129 | new Response(200, ['content-type' => 'image/png'], Stream::factory('')), | ||
130 | ]); | ||
131 | |||
132 | $client->getEmitter()->attach($mock); | ||
133 | 107 | ||
134 | $logHandler = new TestHandler(); | 108 | $logHandler = new TestHandler(); |
135 | $logger = new Logger('test', [$logHandler]); | 109 | $logger = new Logger('test', [$logHandler]); |
136 | 110 | ||
137 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 111 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
138 | $res = $download->processSingleImage(123, 'http://i.imgur.com/T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); | 112 | $res = $download->processSingleImage(123, 'http://i.imgur.com/T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); |
139 | 113 | ||
140 | $this->assertFalse($res, 'Image can not be loaded, so it will not be replaced'); | 114 | $this->assertFalse($res, 'Image can not be loaded, so it will not be replaced'); |
@@ -142,18 +116,13 @@ class DownloadImagesTest extends TestCase | |||
142 | 116 | ||
143 | public function testProcessSingleImageFailAbsolute() | 117 | public function testProcessSingleImageFailAbsolute() |
144 | { | 118 | { |
145 | $client = new Client(); | 119 | $httpMockClient = new HttpMockClient(); |
146 | 120 | $httpMockClient->addResponse(new Response(200, ['content-type' => 'image/png'], file_get_contents(__DIR__ . '/../fixtures/unnamed.png'))); | |
147 | $mock = new Mock([ | ||
148 | new Response(200, ['content-type' => 'image/png'], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/unnamed.png'))), | ||
149 | ]); | ||
150 | |||
151 | $client->getEmitter()->attach($mock); | ||
152 | 121 | ||
153 | $logHandler = new TestHandler(); | 122 | $logHandler = new TestHandler(); |
154 | $logger = new Logger('test', [$logHandler]); | 123 | $logger = new Logger('test', [$logHandler]); |
155 | 124 | ||
156 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 125 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
157 | $res = $download->processSingleImage(123, '/i.imgur.com/T9qgcHc.jpg', 'imgur.com/gallery/WxtWY'); | 126 | $res = $download->processSingleImage(123, '/i.imgur.com/T9qgcHc.jpg', 'imgur.com/gallery/WxtWY'); |
158 | 127 | ||
159 | $this->assertFalse($res, 'Absolute image can not be determined, so it will not be replaced'); | 128 | $this->assertFalse($res, 'Absolute image can not be determined, so it will not be replaced'); |
@@ -161,18 +130,13 @@ class DownloadImagesTest extends TestCase | |||
161 | 130 | ||
162 | public function testProcessRealImage() | 131 | public function testProcessRealImage() |
163 | { | 132 | { |
164 | $client = new Client(); | 133 | $httpMockClient = new HttpMockClient(); |
165 | 134 | $httpMockClient->addResponse(new Response(200, ['content-type' => null], file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))); | |
166 | $mock = new Mock([ | ||
167 | new Response(200, ['content-type' => null], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))), | ||
168 | ]); | ||
169 | |||
170 | $client->getEmitter()->attach($mock); | ||
171 | 135 | ||
172 | $logHandler = new TestHandler(); | 136 | $logHandler = new TestHandler(); |
173 | $logger = new Logger('test', [$logHandler]); | 137 | $logger = new Logger('test', [$logHandler]); |
174 | 138 | ||
175 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 139 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
176 | 140 | ||
177 | $res = $download->processSingleImage( | 141 | $res = $download->processSingleImage( |
178 | 123, | 142 | 123, |
@@ -186,20 +150,15 @@ class DownloadImagesTest extends TestCase | |||
186 | 150 | ||
187 | public function testProcessImageWithSrcset() | 151 | public function testProcessImageWithSrcset() |
188 | { | 152 | { |
189 | $client = new Client(); | 153 | $httpMockClient = new HttpMockClient(); |
190 | 154 | $httpMockClient->addResponse(new Response(200, ['content-type' => null], file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))); | |
191 | $mock = new Mock([ | 155 | $httpMockClient->addResponse(new Response(200, ['content-type' => null], file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))); |
192 | new Response(200, ['content-type' => 'image/jpeg'], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))), | 156 | $httpMockClient->addResponse(new Response(200, ['content-type' => null], file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))); |
193 | new Response(200, ['content-type' => 'image/jpeg'], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))), | ||
194 | new Response(200, ['content-type' => 'image/jpeg'], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))), | ||
195 | ]); | ||
196 | |||
197 | $client->getEmitter()->attach($mock); | ||
198 | 157 | ||
199 | $logHandler = new TestHandler(); | 158 | $logHandler = new TestHandler(); |
200 | $logger = new Logger('test', [$logHandler]); | 159 | $logger = new Logger('test', [$logHandler]); |
201 | 160 | ||
202 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 161 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
203 | $res = $download->processHtml(123, '<p><img class="alignnone wp-image-1153" src="http://piketty.blog.lemonde.fr/files/2017/10/F1FR-530x375.jpg" alt="" width="628" height="444" srcset="http://piketty.blog.lemonde.fr/files/2017/10/F1FR-530x375.jpg 530w, http://piketty.blog.lemonde.fr/files/2017/10/F1FR-768x543.jpg 768w, http://piketty.blog.lemonde.fr/files/2017/10/F1FR-900x636.jpg 900w" sizes="(max-width: 628px) 100vw, 628px" /></p>', 'http://piketty.blog.lemonde.fr/2017/10/12/budget-2018-la-jeunesse-sacrifiee/'); | 162 | $res = $download->processHtml(123, '<p><img class="alignnone wp-image-1153" src="http://piketty.blog.lemonde.fr/files/2017/10/F1FR-530x375.jpg" alt="" width="628" height="444" srcset="http://piketty.blog.lemonde.fr/files/2017/10/F1FR-530x375.jpg 530w, http://piketty.blog.lemonde.fr/files/2017/10/F1FR-768x543.jpg 768w, http://piketty.blog.lemonde.fr/files/2017/10/F1FR-900x636.jpg 900w" sizes="(max-width: 628px) 100vw, 628px" /></p>', 'http://piketty.blog.lemonde.fr/2017/10/12/budget-2018-la-jeunesse-sacrifiee/'); |
204 | 163 | ||
205 | $this->assertNotContains('http://piketty.blog.lemonde.fr/', $res, 'Image srcset attribute were not replaced'); | 164 | $this->assertNotContains('http://piketty.blog.lemonde.fr/', $res, 'Image srcset attribute were not replaced'); |
@@ -207,20 +166,15 @@ class DownloadImagesTest extends TestCase | |||
207 | 166 | ||
208 | public function testProcessImageWithTrickySrcset() | 167 | public function testProcessImageWithTrickySrcset() |
209 | { | 168 | { |
210 | $client = new Client(); | 169 | $httpMockClient = new HttpMockClient(); |
211 | 170 | $httpMockClient->addResponse(new Response(200, ['content-type' => null], file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))); | |
212 | $mock = new Mock([ | 171 | $httpMockClient->addResponse(new Response(200, ['content-type' => null], file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))); |
213 | new Response(200, ['content-type' => 'image/jpeg'], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))), | 172 | $httpMockClient->addResponse(new Response(200, ['content-type' => null], file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))); |
214 | new Response(200, ['content-type' => 'image/jpeg'], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))), | ||
215 | new Response(200, ['content-type' => 'image/jpeg'], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))), | ||
216 | ]); | ||
217 | |||
218 | $client->getEmitter()->attach($mock); | ||
219 | 173 | ||
220 | $logHandler = new TestHandler(); | 174 | $logHandler = new TestHandler(); |
221 | $logger = new Logger('test', [$logHandler]); | 175 | $logger = new Logger('test', [$logHandler]); |
222 | 176 | ||
223 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 177 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
224 | $res = $download->processHtml(123, '<figure id="post-257260" class="align-none media-257260"><img src="https://cdn.css-tricks.com/wp-content/uploads/2017/08/the-critical-request.png" srcset="https://res.cloudinary.com/css-tricks/image/upload/c_scale,w_1000,f_auto,q_auto/v1501594717/the-critical-request_bqdfaa.png 1000w, https://res.cloudinary.com/css-tricks/image/upload/c_scale,w_200,f_auto,q_auto/v1501594717/the-critical-request_bqdfaa.png 200w" sizes="(min-width: 1850px) calc( (100vw - 555px) / 3 ) | 178 | $res = $download->processHtml(123, '<figure id="post-257260" class="align-none media-257260"><img src="https://cdn.css-tricks.com/wp-content/uploads/2017/08/the-critical-request.png" srcset="https://res.cloudinary.com/css-tricks/image/upload/c_scale,w_1000,f_auto,q_auto/v1501594717/the-critical-request_bqdfaa.png 1000w, https://res.cloudinary.com/css-tricks/image/upload/c_scale,w_200,f_auto,q_auto/v1501594717/the-critical-request_bqdfaa.png 200w" sizes="(min-width: 1850px) calc( (100vw - 555px) / 3 ) |
225 | (min-width: 1251px) calc( (100vw - 530px) / 2 ) | 179 | (min-width: 1251px) calc( (100vw - 530px) / 2 ) |
226 | (min-width: 1086px) calc(100vw - 480px) | 180 | (min-width: 1086px) calc(100vw - 480px) |
@@ -232,18 +186,13 @@ class DownloadImagesTest extends TestCase | |||
232 | 186 | ||
233 | public function testProcessImageWithNullPath() | 187 | public function testProcessImageWithNullPath() |
234 | { | 188 | { |
235 | $client = new Client(); | 189 | $httpMockClient = new HttpMockClient(); |
236 | 190 | $httpMockClient->addResponse(new Response(200, ['content-type' => null], file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))); | |
237 | $mock = new Mock([ | ||
238 | new Response(200, ['content-type' => null], Stream::factory(file_get_contents(__DIR__ . '/../fixtures/image-no-content-type.jpg'))), | ||
239 | ]); | ||
240 | |||
241 | $client->getEmitter()->attach($mock); | ||
242 | 191 | ||
243 | $logHandler = new TestHandler(); | 192 | $logHandler = new TestHandler(); |
244 | $logger = new Logger('test', [$logHandler]); | 193 | $logger = new Logger('test', [$logHandler]); |
245 | 194 | ||
246 | $download = new DownloadImages($client, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); | 195 | $download = new DownloadImages($httpMockClient, sys_get_temp_dir() . '/wallabag_test', 'http://wallabag.io/', $logger); |
247 | 196 | ||
248 | $res = $download->processSingleImage( | 197 | $res = $download->processSingleImage( |
249 | 123, | 198 | 123, |
diff --git a/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php b/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php index 1f57939d..2a8e7c89 100644 --- a/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php | |||
@@ -121,7 +121,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase | |||
121 | 121 | ||
122 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); | 122 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); |
123 | $this->assertEmpty($content->getMimetype(), 'Mimetype for http://www.framablog.org is empty'); | 123 | $this->assertEmpty($content->getMimetype(), 'Mimetype for http://www.framablog.org is empty'); |
124 | $this->assertEmpty($content->getPreviewPicture(), 'Preview picture for http://www.framablog.org is empty'); | 124 | $this->assertSame($content->getPreviewPicture(), 'http://www.framablog.org/public/_img/framablog/wallaby_baby.jpg'); |
125 | $this->assertEmpty($content->getLanguage(), 'Language for http://www.framablog.org is empty'); | 125 | $this->assertEmpty($content->getLanguage(), 'Language for http://www.framablog.org is empty'); |
126 | 126 | ||
127 | $tags = $content->getTags(); | 127 | $tags = $content->getTags(); |
diff --git a/tests/Wallabag/ImportBundle/Import/PocketImportTest.php b/tests/Wallabag/ImportBundle/Import/PocketImportTest.php index 8083f1a8..40e1626b 100644 --- a/tests/Wallabag/ImportBundle/Import/PocketImportTest.php +++ b/tests/Wallabag/ImportBundle/Import/PocketImportTest.php | |||
@@ -2,10 +2,8 @@ | |||
2 | 2 | ||
3 | namespace Tests\Wallabag\ImportBundle\Import; | 3 | namespace Tests\Wallabag\ImportBundle\Import; |
4 | 4 | ||
5 | use GuzzleHttp\Client; | 5 | use GuzzleHttp\Psr7\Response; |
6 | use GuzzleHttp\Message\Response; | 6 | use Http\Mock\Client as HttpMockClient; |
7 | use GuzzleHttp\Stream\Stream; | ||
8 | use GuzzleHttp\Subscriber\Mock; | ||
9 | use M6Web\Component\RedisMock\RedisMockFactory; | 7 | use M6Web\Component\RedisMock\RedisMockFactory; |
10 | use Monolog\Handler\TestHandler; | 8 | use Monolog\Handler\TestHandler; |
11 | use Monolog\Logger; | 9 | use Monolog\Logger; |
@@ -38,16 +36,11 @@ class PocketImportTest extends TestCase | |||
38 | 36 | ||
39 | public function testOAuthRequest() | 37 | public function testOAuthRequest() |
40 | { | 38 | { |
41 | $client = new Client(); | 39 | $httpMockClient = new HttpMockClient(); |
42 | 40 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], json_encode(['code' => 'wunderbar_code']))); | |
43 | $mock = new Mock([ | ||
44 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['code' => 'wunderbar_code']))), | ||
45 | ]); | ||
46 | |||
47 | $client->getEmitter()->attach($mock); | ||
48 | 41 | ||
49 | $pocketImport = $this->getPocketImport(); | 42 | $pocketImport = $this->getPocketImport(); |
50 | $pocketImport->setClient($client); | 43 | $pocketImport->setClient($httpMockClient); |
51 | 44 | ||
52 | $code = $pocketImport->getRequestToken('http://0.0.0.0/redirect'); | 45 | $code = $pocketImport->getRequestToken('http://0.0.0.0/redirect'); |
53 | 46 | ||
@@ -56,16 +49,11 @@ class PocketImportTest extends TestCase | |||
56 | 49 | ||
57 | public function testOAuthRequestBadResponse() | 50 | public function testOAuthRequestBadResponse() |
58 | { | 51 | { |
59 | $client = new Client(); | 52 | $httpMockClient = new HttpMockClient(); |
60 | 53 | $httpMockClient->addResponse(new Response(403)); | |
61 | $mock = new Mock([ | ||
62 | new Response(403), | ||
63 | ]); | ||
64 | |||
65 | $client->getEmitter()->attach($mock); | ||
66 | 54 | ||
67 | $pocketImport = $this->getPocketImport(); | 55 | $pocketImport = $this->getPocketImport(); |
68 | $pocketImport->setClient($client); | 56 | $pocketImport->setClient($httpMockClient); |
69 | 57 | ||
70 | $code = $pocketImport->getRequestToken('http://0.0.0.0/redirect'); | 58 | $code = $pocketImport->getRequestToken('http://0.0.0.0/redirect'); |
71 | 59 | ||
@@ -78,16 +66,11 @@ class PocketImportTest extends TestCase | |||
78 | 66 | ||
79 | public function testOAuthAuthorize() | 67 | public function testOAuthAuthorize() |
80 | { | 68 | { |
81 | $client = new Client(); | 69 | $httpMockClient = new HttpMockClient(); |
82 | 70 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], json_encode(['access_token' => 'wunderbar_token']))); | |
83 | $mock = new Mock([ | ||
84 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | ||
85 | ]); | ||
86 | |||
87 | $client->getEmitter()->attach($mock); | ||
88 | 71 | ||
89 | $pocketImport = $this->getPocketImport(); | 72 | $pocketImport = $this->getPocketImport(); |
90 | $pocketImport->setClient($client); | 73 | $pocketImport->setClient($httpMockClient); |
91 | 74 | ||
92 | $res = $pocketImport->authorize('wunderbar_code'); | 75 | $res = $pocketImport->authorize('wunderbar_code'); |
93 | 76 | ||
@@ -97,16 +80,11 @@ class PocketImportTest extends TestCase | |||
97 | 80 | ||
98 | public function testOAuthAuthorizeBadResponse() | 81 | public function testOAuthAuthorizeBadResponse() |
99 | { | 82 | { |
100 | $client = new Client(); | 83 | $httpMockClient = new HttpMockClient(); |
101 | 84 | $httpMockClient->addResponse(new Response(403)); | |
102 | $mock = new Mock([ | ||
103 | new Response(403), | ||
104 | ]); | ||
105 | |||
106 | $client->getEmitter()->attach($mock); | ||
107 | 85 | ||
108 | $pocketImport = $this->getPocketImport(); | 86 | $pocketImport = $this->getPocketImport(); |
109 | $pocketImport->setClient($client); | 87 | $pocketImport->setClient($httpMockClient); |
110 | 88 | ||
111 | $res = $pocketImport->authorize('wunderbar_code'); | 89 | $res = $pocketImport->authorize('wunderbar_code'); |
112 | 90 | ||
@@ -122,94 +100,90 @@ class PocketImportTest extends TestCase | |||
122 | */ | 100 | */ |
123 | public function testImport() | 101 | public function testImport() |
124 | { | 102 | { |
125 | $client = new Client(); | 103 | $httpMockClient = new HttpMockClient(); |
126 | 104 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], json_encode(['access_token' => 'wunderbar_token']))); | |
127 | $mock = new Mock([ | 105 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], <<<'JSON' |
128 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | 106 | { |
129 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(' | 107 | "status": 1, |
130 | { | 108 | "list": { |
131 | "status": 1, | 109 | "229279689": { |
132 | "list": { | 110 | "item_id": "229279689", |
133 | "229279689": { | 111 | "resolved_id": "229279689", |
134 | "item_id": "229279689", | 112 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", |
135 | "resolved_id": "229279689", | 113 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", |
136 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | 114 | "favorite": "1", |
137 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | 115 | "status": "1", |
138 | "favorite": "1", | 116 | "time_added": "1473020899", |
139 | "status": "1", | 117 | "time_updated": "1473020899", |
140 | "time_added": "1473020899", | 118 | "time_read": "0", |
141 | "time_updated": "1473020899", | 119 | "time_favorited": "0", |
142 | "time_read": "0", | 120 | "sort_id": 0, |
143 | "time_favorited": "0", | 121 | "resolved_title": "The Massive Ryder Cup Preview", |
144 | "sort_id": 0, | 122 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", |
145 | "resolved_title": "The Massive Ryder Cup Preview", | 123 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", |
146 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | 124 | "is_article": "1", |
147 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | 125 | "is_index": "0", |
148 | "is_article": "1", | 126 | "has_video": "1", |
149 | "is_index": "0", | 127 | "has_image": "1", |
150 | "has_video": "1", | 128 | "word_count": "3197", |
151 | "has_image": "1", | 129 | "images": { |
152 | "word_count": "3197", | 130 | "1": { |
153 | "images": { | 131 | "item_id": "229279689", |
154 | "1": { | 132 | "image_id": "1", |
155 | "item_id": "229279689", | 133 | "src": "http://a.espncdn.com/combiner/i?img=/photo/2012/0927/grant_g_ryder_cr_640.jpg&w=640&h=360", |
156 | "image_id": "1", | 134 | "width": "0", |
157 | "src": "http://a.espncdn.com/combiner/i?img=/photo/2012/0927/grant_g_ryder_cr_640.jpg&w=640&h=360", | 135 | "height": "0", |
158 | "width": "0", | 136 | "credit": "Jamie Squire/Getty Images", |
159 | "height": "0", | 137 | "caption": "" |
160 | "credit": "Jamie Squire/Getty Images", | ||
161 | "caption": "" | ||
162 | } | ||
163 | }, | ||
164 | "videos": { | ||
165 | "1": { | ||
166 | "item_id": "229279689", | ||
167 | "video_id": "1", | ||
168 | "src": "http://www.youtube.com/v/Er34PbFkVGk?version=3&hl=en_US&rel=0", | ||
169 | "width": "420", | ||
170 | "height": "315", | ||
171 | "type": "1", | ||
172 | "vid": "Er34PbFkVGk" | ||
173 | } | ||
174 | }, | ||
175 | "tags": { | ||
176 | "grantland": { | ||
177 | "item_id": "1147652870", | ||
178 | "tag": "grantland" | ||
179 | }, | ||
180 | "Ryder Cup": { | ||
181 | "item_id": "1147652870", | ||
182 | "tag": "Ryder Cup" | ||
183 | } | ||
184 | } | 138 | } |
185 | }, | 139 | }, |
186 | "229279690": { | 140 | "videos": { |
187 | "item_id": "229279689", | 141 | "1": { |
188 | "resolved_id": "229279689", | 142 | "item_id": "229279689", |
189 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | 143 | "video_id": "1", |
190 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | 144 | "src": "http://www.youtube.com/v/Er34PbFkVGk?version=3&hl=en_US&rel=0", |
191 | "favorite": "1", | 145 | "width": "420", |
192 | "status": "1", | 146 | "height": "315", |
193 | "time_added": "1473020899", | 147 | "type": "1", |
194 | "time_updated": "1473020899", | 148 | "vid": "Er34PbFkVGk" |
195 | "time_read": "0", | 149 | } |
196 | "time_favorited": "0", | 150 | }, |
197 | "sort_id": 1, | 151 | "tags": { |
198 | "resolved_title": "The Massive Ryder Cup Preview", | 152 | "grantland": { |
199 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | 153 | "item_id": "1147652870", |
200 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | 154 | "tag": "grantland" |
201 | "is_article": "1", | 155 | }, |
202 | "is_index": "0", | 156 | "Ryder Cup": { |
203 | "has_video": "0", | 157 | "item_id": "1147652870", |
204 | "has_image": "0", | 158 | "tag": "Ryder Cup" |
205 | "word_count": "3197" | 159 | } |
206 | } | 160 | } |
161 | }, | ||
162 | "229279690": { | ||
163 | "item_id": "229279689", | ||
164 | "resolved_id": "229279689", | ||
165 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | ||
166 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | ||
167 | "favorite": "1", | ||
168 | "status": "1", | ||
169 | "time_added": "1473020899", | ||
170 | "time_updated": "1473020899", | ||
171 | "time_read": "0", | ||
172 | "time_favorited": "0", | ||
173 | "sort_id": 1, | ||
174 | "resolved_title": "The Massive Ryder Cup Preview", | ||
175 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | ||
176 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | ||
177 | "is_article": "1", | ||
178 | "is_index": "0", | ||
179 | "has_video": "0", | ||
180 | "has_image": "0", | ||
181 | "word_count": "3197" | ||
207 | } | 182 | } |
208 | } | 183 | } |
209 | ')), | 184 | } |
210 | ]); | 185 | JSON |
211 | 186 | )); | |
212 | $client->getEmitter()->attach($mock); | ||
213 | 187 | ||
214 | $pocketImport = $this->getPocketImport('ConsumerKey', 1); | 188 | $pocketImport = $this->getPocketImport('ConsumerKey', 1); |
215 | 189 | ||
@@ -240,7 +214,7 @@ class PocketImportTest extends TestCase | |||
240 | ->method('updateEntry') | 214 | ->method('updateEntry') |
241 | ->willReturn($entry); | 215 | ->willReturn($entry); |
242 | 216 | ||
243 | $pocketImport->setClient($client); | 217 | $pocketImport->setClient($httpMockClient); |
244 | $pocketImport->authorize('wunderbar_code'); | 218 | $pocketImport->authorize('wunderbar_code'); |
245 | 219 | ||
246 | $res = $pocketImport->import(); | 220 | $res = $pocketImport->import(); |
@@ -254,56 +228,52 @@ class PocketImportTest extends TestCase | |||
254 | */ | 228 | */ |
255 | public function testImportAndMarkAllAsRead() | 229 | public function testImportAndMarkAllAsRead() |
256 | { | 230 | { |
257 | $client = new Client(); | 231 | $httpMockClient = new HttpMockClient(); |
258 | 232 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], json_encode(['access_token' => 'wunderbar_token']))); | |
259 | $mock = new Mock([ | 233 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], <<<'JSON' |
260 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | 234 | { |
261 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(' | 235 | "status": 1, |
262 | { | 236 | "list": { |
263 | "status": 1, | 237 | "229279689": { |
264 | "list": { | 238 | "item_id": "229279689", |
265 | "229279689": { | 239 | "resolved_id": "229279689", |
266 | "item_id": "229279689", | 240 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", |
267 | "resolved_id": "229279689", | 241 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", |
268 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | 242 | "favorite": "1", |
269 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | 243 | "status": "1", |
270 | "favorite": "1", | 244 | "time_added": "1473020899", |
271 | "status": "1", | 245 | "time_updated": "1473020899", |
272 | "time_added": "1473020899", | 246 | "time_read": "0", |
273 | "time_updated": "1473020899", | 247 | "time_favorited": "0", |
274 | "time_read": "0", | 248 | "sort_id": 0, |
275 | "time_favorited": "0", | 249 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", |
276 | "sort_id": 0, | 250 | "is_article": "1", |
277 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | 251 | "has_video": "1", |
278 | "is_article": "1", | 252 | "has_image": "1", |
279 | "has_video": "1", | 253 | "word_count": "3197" |
280 | "has_image": "1", | 254 | }, |
281 | "word_count": "3197" | 255 | "229279690": { |
282 | }, | 256 | "item_id": "229279689", |
283 | "229279690": { | 257 | "resolved_id": "229279689", |
284 | "item_id": "229279689", | 258 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview/2", |
285 | "resolved_id": "229279689", | 259 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", |
286 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview/2", | 260 | "favorite": "1", |
287 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | 261 | "status": "0", |
288 | "favorite": "1", | 262 | "time_added": "1473020899", |
289 | "status": "0", | 263 | "time_updated": "1473020899", |
290 | "time_added": "1473020899", | 264 | "time_read": "0", |
291 | "time_updated": "1473020899", | 265 | "time_favorited": "0", |
292 | "time_read": "0", | 266 | "sort_id": 1, |
293 | "time_favorited": "0", | 267 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", |
294 | "sort_id": 1, | 268 | "is_article": "1", |
295 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | 269 | "has_video": "0", |
296 | "is_article": "1", | 270 | "has_image": "0", |
297 | "has_video": "0", | 271 | "word_count": "3197" |
298 | "has_image": "0", | ||
299 | "word_count": "3197" | ||
300 | } | ||
301 | } | 272 | } |
302 | } | 273 | } |
303 | ')), | 274 | } |
304 | ]); | 275 | JSON |
305 | 276 | )); | |
306 | $client->getEmitter()->attach($mock); | ||
307 | 277 | ||
308 | $pocketImport = $this->getPocketImport('ConsumerKey', 2); | 278 | $pocketImport = $this->getPocketImport('ConsumerKey', 2); |
309 | 279 | ||
@@ -335,7 +305,7 @@ class PocketImportTest extends TestCase | |||
335 | ->method('updateEntry') | 305 | ->method('updateEntry') |
336 | ->willReturn($entry); | 306 | ->willReturn($entry); |
337 | 307 | ||
338 | $pocketImport->setClient($client); | 308 | $pocketImport->setClient($httpMockClient); |
339 | $pocketImport->authorize('wunderbar_code'); | 309 | $pocketImport->authorize('wunderbar_code'); |
340 | 310 | ||
341 | $res = $pocketImport->setMarkAsRead(true)->import(); | 311 | $res = $pocketImport->setMarkAsRead(true)->import(); |
@@ -349,7 +319,7 @@ class PocketImportTest extends TestCase | |||
349 | */ | 319 | */ |
350 | public function testImportWithRabbit() | 320 | public function testImportWithRabbit() |
351 | { | 321 | { |
352 | $client = new Client(); | 322 | $httpMockClient = new HttpMockClient(); |
353 | 323 | ||
354 | $body = <<<'JSON' | 324 | $body = <<<'JSON' |
355 | { | 325 | { |
@@ -374,19 +344,16 @@ class PocketImportTest extends TestCase | |||
374 | } | 344 | } |
375 | JSON; | 345 | JSON; |
376 | 346 | ||
377 | $mock = new Mock([ | 347 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], json_encode(['access_token' => 'wunderbar_token']))); |
378 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | 348 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], <<<JSON |
379 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(' | 349 | { |
380 | { | 350 | "status": 1, |
381 | "status": 1, | 351 | "list": { |
382 | "list": { | 352 | "229279690": $body |
383 | "229279690": ' . $body . ' | ||
384 | } | ||
385 | } | 353 | } |
386 | ')), | 354 | } |
387 | ]); | 355 | JSON |
388 | 356 | )); | |
389 | $client->getEmitter()->attach($mock); | ||
390 | 357 | ||
391 | $pocketImport = $this->getPocketImport(); | 358 | $pocketImport = $this->getPocketImport(); |
392 | 359 | ||
@@ -420,7 +387,7 @@ JSON; | |||
420 | ->method('publish') | 387 | ->method('publish') |
421 | ->with(json_encode($bodyAsArray)); | 388 | ->with(json_encode($bodyAsArray)); |
422 | 389 | ||
423 | $pocketImport->setClient($client); | 390 | $pocketImport->setClient($httpMockClient); |
424 | $pocketImport->setProducer($producer); | 391 | $pocketImport->setProducer($producer); |
425 | $pocketImport->authorize('wunderbar_code'); | 392 | $pocketImport->authorize('wunderbar_code'); |
426 | 393 | ||
@@ -435,7 +402,7 @@ JSON; | |||
435 | */ | 402 | */ |
436 | public function testImportWithRedis() | 403 | public function testImportWithRedis() |
437 | { | 404 | { |
438 | $client = new Client(); | 405 | $httpMockClient = new HttpMockClient(); |
439 | 406 | ||
440 | $body = <<<'JSON' | 407 | $body = <<<'JSON' |
441 | { | 408 | { |
@@ -460,19 +427,16 @@ JSON; | |||
460 | } | 427 | } |
461 | JSON; | 428 | JSON; |
462 | 429 | ||
463 | $mock = new Mock([ | 430 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], json_encode(['access_token' => 'wunderbar_token']))); |
464 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | 431 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], <<<JSON |
465 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(' | 432 | { |
466 | { | 433 | "status": 1, |
467 | "status": 1, | 434 | "list": { |
468 | "list": { | 435 | "229279690": $body |
469 | "229279690": ' . $body . ' | ||
470 | } | ||
471 | } | 436 | } |
472 | ')), | 437 | } |
473 | ]); | 438 | JSON |
474 | 439 | )); | |
475 | $client->getEmitter()->attach($mock); | ||
476 | 440 | ||
477 | $pocketImport = $this->getPocketImport(); | 441 | $pocketImport = $this->getPocketImport(); |
478 | 442 | ||
@@ -499,7 +463,7 @@ JSON; | |||
499 | $queue = new RedisQueue($redisMock, 'pocket'); | 463 | $queue = new RedisQueue($redisMock, 'pocket'); |
500 | $producer = new Producer($queue); | 464 | $producer = new Producer($queue); |
501 | 465 | ||
502 | $pocketImport->setClient($client); | 466 | $pocketImport->setClient($httpMockClient); |
503 | $pocketImport->setProducer($producer); | 467 | $pocketImport->setProducer($producer); |
504 | $pocketImport->authorize('wunderbar_code'); | 468 | $pocketImport->authorize('wunderbar_code'); |
505 | 469 | ||
@@ -513,17 +477,13 @@ JSON; | |||
513 | 477 | ||
514 | public function testImportBadResponse() | 478 | public function testImportBadResponse() |
515 | { | 479 | { |
516 | $client = new Client(); | 480 | $httpMockClient = new HttpMockClient(); |
517 | 481 | ||
518 | $mock = new Mock([ | 482 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], json_encode(['access_token' => 'wunderbar_token']))); |
519 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | 483 | $httpMockClient->addResponse(new Response(403)); |
520 | new Response(403), | ||
521 | ]); | ||
522 | |||
523 | $client->getEmitter()->attach($mock); | ||
524 | 484 | ||
525 | $pocketImport = $this->getPocketImport(); | 485 | $pocketImport = $this->getPocketImport(); |
526 | $pocketImport->setClient($client); | 486 | $pocketImport->setClient($httpMockClient); |
527 | $pocketImport->authorize('wunderbar_code'); | 487 | $pocketImport->authorize('wunderbar_code'); |
528 | 488 | ||
529 | $res = $pocketImport->import(); | 489 | $res = $pocketImport->import(); |
@@ -537,25 +497,23 @@ JSON; | |||
537 | 497 | ||
538 | public function testImportWithExceptionFromGraby() | 498 | public function testImportWithExceptionFromGraby() |
539 | { | 499 | { |
540 | $client = new Client(); | 500 | $httpMockClient = new HttpMockClient(); |
541 | 501 | ||
542 | $mock = new Mock([ | 502 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], json_encode(['access_token' => 'wunderbar_token']))); |
543 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | 503 | $httpMockClient->addResponse(new Response(200, ['Content-Type' => 'application/json'], <<<'JSON' |
544 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(' | 504 | { |
545 | { | 505 | "status": 1, |
546 | "status": 1, | 506 | "list": { |
547 | "list": { | 507 | "229279689": { |
548 | "229279689": { | 508 | "status": "1", |
549 | "status": "1", | 509 | "favorite": "1", |
550 | "favorite": "1", | 510 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview" |
551 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview" | ||
552 | } | ||
553 | } | 511 | } |
554 | } | 512 | } |
555 | ')), | 513 | } |
556 | ]); | 514 | |
557 | 515 | JSON | |
558 | $client->getEmitter()->attach($mock); | 516 | )); |
559 | 517 | ||
560 | $pocketImport = $this->getPocketImport('ConsumerKey', 1); | 518 | $pocketImport = $this->getPocketImport('ConsumerKey', 1); |
561 | 519 | ||
@@ -579,7 +537,7 @@ JSON; | |||
579 | ->method('updateEntry') | 537 | ->method('updateEntry') |
580 | ->will($this->throwException(new \Exception())); | 538 | ->will($this->throwException(new \Exception())); |
581 | 539 | ||
582 | $pocketImport->setClient($client); | 540 | $pocketImport->setClient($httpMockClient); |
583 | $pocketImport->authorize('wunderbar_code'); | 541 | $pocketImport->authorize('wunderbar_code'); |
584 | 542 | ||
585 | $res = $pocketImport->import(); | 543 | $res = $pocketImport->import(); |
diff --git a/web/wallassets/material.css b/web/wallassets/material.css index 31f2cfeb..2baf1b1e 100644 --- a/web/wallassets/material.css +++ b/web/wallassets/material.css | |||
@@ -1,2 +1,2 @@ | |||
1 | .materialize-red{background-color:#e51c23!important}.materialize-red-text{color:#e51c23!important}.materialize-red.lighten-5{background-color:#fdeaeb!important}.materialize-red-text.text-lighten-5{color:#fdeaeb!important}.materialize-red.lighten-4{background-color:#f8c1c3!important}.materialize-red-text.text-lighten-4{color:#f8c1c3!important}.materialize-red.lighten-3{background-color:#f3989b!important}.materialize-red-text.text-lighten-3{color:#f3989b!important}.materialize-red.lighten-2{background-color:#ee6e73!important}.materialize-red-text.text-lighten-2{color:#ee6e73!important}.materialize-red.lighten-1{background-color:#ea454b!important}.materialize-red-text.text-lighten-1{color:#ea454b!important}.materialize-red.darken-1{background-color:#d0181e!important}.materialize-red-text.text-darken-1{color:#d0181e!important}.materialize-red.darken-2{background-color:#b9151b!important}.materialize-red-text.text-darken-2{color:#b9151b!important}.materialize-red.darken-3{background-color:#a21318!important}.materialize-red-text.text-darken-3{color:#a21318!important}.materialize-red.darken-4{background-color:#8b1014!important}.materialize-red-text.text-darken-4{color:#8b1014!important}.red{background-color:#f44336!important}.red-text{color:#f44336!important}.red.lighten-5{background-color:#ffebee!important}.red-text.text-lighten-5{color:#ffebee!important}.red.lighten-4{background-color:#ffcdd2!important}.red-text.text-lighten-4{color:#ffcdd2!important}.red.lighten-3{background-color:#ef9a9a!important}.red-text.text-lighten-3{color:#ef9a9a!important}.red.lighten-2{background-color:#e57373!important}.red-text.text-lighten-2{color:#e57373!important}.red.lighten-1{background-color:#ef5350!important}.red-text.text-lighten-1{color:#ef5350!important}.red.darken-1{background-color:#e53935!important}.red-text.text-darken-1{color:#e53935!important}.red.darken-2{background-color:#d32f2f!important}.red-text.text-darken-2{color:#d32f2f!important}.red.darken-3{background-color:#c62828!important}.red-text.text-darken-3{color:#c62828!important}.red.darken-4{background-color:#b71c1c!important}.red-text.text-darken-4{color:#b71c1c!important}.red.accent-1{background-color:#ff8a80!important}.red-text.text-accent-1{color:#ff8a80!important}.red.accent-2{background-color:#ff5252!important}.red-text.text-accent-2{color:#ff5252!important}.red.accent-3{background-color:#ff1744!important}.red-text.text-accent-3{color:#ff1744!important}.red.accent-4{background-color:#d50000!important}.red-text.text-accent-4{color:#d50000!important}.pink{background-color:#e91e63!important}.pink-text{color:#e91e63!important}.pink.lighten-5{background-color:#fce4ec!important}.pink-text.text-lighten-5{color:#fce4ec!important}.pink.lighten-4{background-color:#f8bbd0!important}.pink-text.text-lighten-4{color:#f8bbd0!important}.pink.lighten-3{background-color:#f48fb1!important}.pink-text.text-lighten-3{color:#f48fb1!important}.pink.lighten-2{background-color:#f06292!important}.pink-text.text-lighten-2{color:#f06292!important}.pink.lighten-1{background-color:#ec407a!important}.pink-text.text-lighten-1{color:#ec407a!important}.pink.darken-1{background-color:#d81b60!important}.pink-text.text-darken-1{color:#d81b60!important}.pink.darken-2{background-color:#c2185b!important}.pink-text.text-darken-2{color:#c2185b!important}.pink.darken-3{background-color:#ad1457!important}.pink-text.text-darken-3{color:#ad1457!important}.pink.darken-4{background-color:#880e4f!important}.pink-text.text-darken-4{color:#880e4f!important}.pink.accent-1{background-color:#ff80ab!important}.pink-text.text-accent-1{color:#ff80ab!important}.pink.accent-2{background-color:#ff4081!important}.pink-text.text-accent-2{color:#ff4081!important}.pink.accent-3{background-color:#f50057!important}.pink-text.text-accent-3{color:#f50057!important}.pink.accent-4{background-color:#c51162!important}.pink-text.text-accent-4{color:#c51162!important}.purple{background-color:#9c27b0!important}.purple-text{color:#9c27b0!important}.purple.lighten-5{background-color:#f3e5f5!important}.purple-text.text-lighten-5{color:#f3e5f5!important}.purple.lighten-4{background-color:#e1bee7!important}.purple-text.text-lighten-4{color:#e1bee7!important}.purple.lighten-3{background-color:#ce93d8!important}.purple-text.text-lighten-3{color:#ce93d8!important}.purple.lighten-2{background-color:#ba68c8!important}.purple-text.text-lighten-2{color:#ba68c8!important}.purple.lighten-1{background-color:#ab47bc!important}.purple-text.text-lighten-1{color:#ab47bc!important}.purple.darken-1{background-color:#8e24aa!important}.purple-text.text-darken-1{color:#8e24aa!important}.purple.darken-2{background-color:#7b1fa2!important}.purple-text.text-darken-2{color:#7b1fa2!important}.purple.darken-3{background-color:#6a1b9a!important}.purple-text.text-darken-3{color:#6a1b9a!important}.purple.darken-4{background-color:#4a148c!important}.purple-text.text-darken-4{color:#4a148c!important}.purple.accent-1{background-color:#ea80fc!important}.purple-text.text-accent-1{color:#ea80fc!important}.purple.accent-2{background-color:#e040fb!important}.purple-text.text-accent-2{color:#e040fb!important}.purple.accent-3{background-color:#d500f9!important}.purple-text.text-accent-3{color:#d500f9!important}.purple.accent-4{background-color:#a0f!important}.purple-text.text-accent-4{color:#a0f!important}.deep-purple{background-color:#673ab7!important}.deep-purple-text{color:#673ab7!important}.deep-purple.lighten-5{background-color:#ede7f6!important}.deep-purple-text.text-lighten-5{color:#ede7f6!important}.deep-purple.lighten-4{background-color:#d1c4e9!important}.deep-purple-text.text-lighten-4{color:#d1c4e9!important}.deep-purple.lighten-3{background-color:#b39ddb!important}.deep-purple-text.text-lighten-3{color:#b39ddb!important}.deep-purple.lighten-2{background-color:#9575cd!important}.deep-purple-text.text-lighten-2{color:#9575cd!important}.deep-purple.lighten-1{background-color:#7e57c2!important}.deep-purple-text.text-lighten-1{color:#7e57c2!important}.deep-purple.darken-1{background-color:#5e35b1!important}.deep-purple-text.text-darken-1{color:#5e35b1!important}.deep-purple.darken-2{background-color:#512da8!important}.deep-purple-text.text-darken-2{color:#512da8!important}.deep-purple.darken-3{background-color:#4527a0!important}.deep-purple-text.text-darken-3{color:#4527a0!important}.deep-purple.darken-4{background-color:#311b92!important}.deep-purple-text.text-darken-4{color:#311b92!important}.deep-purple.accent-1{background-color:#b388ff!important}.deep-purple-text.text-accent-1{color:#b388ff!important}.deep-purple.accent-2{background-color:#7c4dff!important}.deep-purple-text.text-accent-2{color:#7c4dff!important}.deep-purple.accent-3{background-color:#651fff!important}.deep-purple-text.text-accent-3{color:#651fff!important}.deep-purple.accent-4{background-color:#6200ea!important}.deep-purple-text.text-accent-4{color:#6200ea!important}.indigo{background-color:#3f51b5!important}.indigo-text{color:#3f51b5!important}.indigo.lighten-5{background-color:#e8eaf6!important}.indigo-text.text-lighten-5{color:#e8eaf6!important}.indigo.lighten-4{background-color:#c5cae9!important}.indigo-text.text-lighten-4{color:#c5cae9!important}.indigo.lighten-3{background-color:#9fa8da!important}.indigo-text.text-lighten-3{color:#9fa8da!important}.indigo.lighten-2{background-color:#7986cb!important}.indigo-text.text-lighten-2{color:#7986cb!important}.indigo.lighten-1{background-color:#5c6bc0!important}.indigo-text.text-lighten-1{color:#5c6bc0!important}.indigo.darken-1{background-color:#3949ab!important}.indigo-text.text-darken-1{color:#3949ab!important}.indigo.darken-2{background-color:#303f9f!important}.indigo-text.text-darken-2{color:#303f9f!important}.indigo.darken-3{background-color:#283593!important}.indigo-text.text-darken-3{color:#283593!important}.indigo.darken-4{background-color:#1a237e!important}.indigo-text.text-darken-4{color:#1a237e!important}.indigo.accent-1{background-color:#8c9eff!important}.indigo-text.text-accent-1{color:#8c9eff!important}.indigo.accent-2{background-color:#536dfe!important}.indigo-text.text-accent-2{color:#536dfe!important}.indigo.accent-3{background-color:#3d5afe!important}.indigo-text.text-accent-3{color:#3d5afe!important}.indigo.accent-4{background-color:#304ffe!important}.indigo-text.text-accent-4{color:#304ffe!important}.blue{background-color:#2196f3!important}.blue-text{color:#2196f3!important}.blue.lighten-5{background-color:#e3f2fd!important}.blue-text.text-lighten-5{color:#e3f2fd!important}.blue.lighten-4{background-color:#bbdefb!important}.blue-text.text-lighten-4{color:#bbdefb!important}.blue.lighten-3{background-color:#90caf9!important}.blue-text.text-lighten-3{color:#90caf9!important}.blue.lighten-2{background-color:#64b5f6!important}.blue-text.text-lighten-2{color:#64b5f6!important}.blue.lighten-1{background-color:#42a5f5!important}.blue-text.text-lighten-1{color:#42a5f5!important}.blue.darken-1{background-color:#1e88e5!important}.blue-text.text-darken-1{color:#1e88e5!important}.blue.darken-2{background-color:#1976d2!important}.blue-text.text-darken-2{color:#1976d2!important}.blue.darken-3{background-color:#1565c0!important}.blue-text.text-darken-3{color:#1565c0!important}.blue.darken-4{background-color:#0d47a1!important}.blue-text.text-darken-4{color:#0d47a1!important}.blue.accent-1{background-color:#82b1ff!important}.blue-text.text-accent-1{color:#82b1ff!important}.blue.accent-2{background-color:#448aff!important}.blue-text.text-accent-2{color:#448aff!important}.blue.accent-3{background-color:#2979ff!important}.blue-text.text-accent-3{color:#2979ff!important}.blue.accent-4{background-color:#2962ff!important}.blue-text.text-accent-4{color:#2962ff!important}.light-blue{background-color:#03a9f4!important}.light-blue-text{color:#03a9f4!important}.light-blue.lighten-5{background-color:#e1f5fe!important}.light-blue-text.text-lighten-5{color:#e1f5fe!important}.light-blue.lighten-4{background-color:#b3e5fc!important}.light-blue-text.text-lighten-4{color:#b3e5fc!important}.light-blue.lighten-3{background-color:#81d4fa!important}.light-blue-text.text-lighten-3{color:#81d4fa!important}.light-blue.lighten-2{background-color:#4fc3f7!important}.light-blue-text.text-lighten-2{color:#4fc3f7!important}.light-blue.lighten-1{background-color:#29b6f6!important}.light-blue-text.text-lighten-1{color:#29b6f6!important}.light-blue.darken-1{background-color:#039be5!important}.light-blue-text.text-darken-1{color:#039be5!important}.light-blue.darken-2{background-color:#0288d1!important}.light-blue-text.text-darken-2{color:#0288d1!important}.light-blue.darken-3{background-color:#0277bd!important}.light-blue-text.text-darken-3{color:#0277bd!important}.light-blue.darken-4{background-color:#01579b!important}.light-blue-text.text-darken-4{color:#01579b!important}.light-blue.accent-1{background-color:#80d8ff!important}.light-blue-text.text-accent-1{color:#80d8ff!important}.light-blue.accent-2{background-color:#40c4ff!important}.light-blue-text.text-accent-2{color:#40c4ff!important}.light-blue.accent-3{background-color:#00b0ff!important}.light-blue-text.text-accent-3{color:#00b0ff!important}.light-blue.accent-4{background-color:#0091ea!important}.light-blue-text.text-accent-4{color:#0091ea!important}.cyan{background-color:#00bcd4!important}.cyan-text{color:#00bcd4!important}.cyan.lighten-5{background-color:#e0f7fa!important}.cyan-text.text-lighten-5{color:#e0f7fa!important}.cyan.lighten-4{background-color:#b2ebf2!important}.cyan-text.text-lighten-4{color:#b2ebf2!important}.cyan.lighten-3{background-color:#80deea!important}.cyan-text.text-lighten-3{color:#80deea!important}.cyan.lighten-2{background-color:#4dd0e1!important}.cyan-text.text-lighten-2{color:#4dd0e1!important}.cyan.lighten-1{background-color:#26c6da!important}.cyan-text.text-lighten-1{color:#26c6da!important}.cyan.darken-1{background-color:#00acc1!important}.cyan-text.text-darken-1{color:#00acc1!important}.cyan.darken-2{background-color:#0097a7!important}.cyan-text.text-darken-2{color:#0097a7!important}.cyan.darken-3{background-color:#00838f!important}.cyan-text.text-darken-3{color:#00838f!important}.cyan.darken-4{background-color:#006064!important}.cyan-text.text-darken-4{color:#006064!important}.cyan.accent-1{background-color:#84ffff!important}.cyan-text.text-accent-1{color:#84ffff!important}.cyan.accent-2{background-color:#18ffff!important}.cyan-text.text-accent-2{color:#18ffff!important}.cyan.accent-3{background-color:#00e5ff!important}.cyan-text.text-accent-3{color:#00e5ff!important}.cyan.accent-4{background-color:#00b8d4!important}.cyan-text.text-accent-4{color:#00b8d4!important}.teal{background-color:#009688!important}.teal-text{color:#009688!important}.teal.lighten-5{background-color:#e0f2f1!important}.teal-text.text-lighten-5{color:#e0f2f1!important}.teal.lighten-4{background-color:#b2dfdb!important}.teal-text.text-lighten-4{color:#b2dfdb!important}.teal.lighten-3{background-color:#80cbc4!important}.teal-text.text-lighten-3{color:#80cbc4!important}.teal.lighten-2{background-color:#4db6ac!important}.teal-text.text-lighten-2{color:#4db6ac!important}.teal.lighten-1{background-color:#26a69a!important}.teal-text.text-lighten-1{color:#26a69a!important}.teal.darken-1{background-color:#00897b!important}.teal-text.text-darken-1{color:#00897b!important}.teal.darken-2{background-color:#00796b!important}.teal-text.text-darken-2{color:#00796b!important}.teal.darken-3{background-color:#00695c!important}.teal-text.text-darken-3{color:#00695c!important}.teal.darken-4{background-color:#004d40!important}.teal-text.text-darken-4{color:#004d40!important}.teal.accent-1{background-color:#a7ffeb!important}.teal-text.text-accent-1{color:#a7ffeb!important}.teal.accent-2{background-color:#64ffda!important}.teal-text.text-accent-2{color:#64ffda!important}.teal.accent-3{background-color:#1de9b6!important}.teal-text.text-accent-3{color:#1de9b6!important}.teal.accent-4{background-color:#00bfa5!important}.teal-text.text-accent-4{color:#00bfa5!important}.green{background-color:#4caf50!important}.green-text{color:#4caf50!important}.green.lighten-5{background-color:#e8f5e9!important}.green-text.text-lighten-5{color:#e8f5e9!important}.green.lighten-4{background-color:#c8e6c9!important}.green-text.text-lighten-4{color:#c8e6c9!important}.green.lighten-3{background-color:#a5d6a7!important}.green-text.text-lighten-3{color:#a5d6a7!important}.green.lighten-2{background-color:#81c784!important}.green-text.text-lighten-2{color:#81c784!important}.green.lighten-1{background-color:#66bb6a!important}.green-text.text-lighten-1{color:#66bb6a!important}.green.darken-1{background-color:#43a047!important}.green-text.text-darken-1{color:#43a047!important}.green.darken-2{background-color:#388e3c!important}.green-text.text-darken-2{color:#388e3c!important}.green.darken-3{background-color:#2e7d32!important}.green-text.text-darken-3{color:#2e7d32!important}.green.darken-4{background-color:#1b5e20!important}.green-text.text-darken-4{color:#1b5e20!important}.green.accent-1{background-color:#b9f6ca!important}.green-text.text-accent-1{color:#b9f6ca!important}.green.accent-2{background-color:#69f0ae!important}.green-text.text-accent-2{color:#69f0ae!important}.green.accent-3{background-color:#00e676!important}.green-text.text-accent-3{color:#00e676!important}.green.accent-4{background-color:#00c853!important}.green-text.text-accent-4{color:#00c853!important}.light-green{background-color:#8bc34a!important}.light-green-text{color:#8bc34a!important}.light-green.lighten-5{background-color:#f1f8e9!important}.light-green-text.text-lighten-5{color:#f1f8e9!important}.light-green.lighten-4{background-color:#dcedc8!important}.light-green-text.text-lighten-4{color:#dcedc8!important}.light-green.lighten-3{background-color:#c5e1a5!important}.light-green-text.text-lighten-3{color:#c5e1a5!important}.light-green.lighten-2{background-color:#aed581!important}.light-green-text.text-lighten-2{color:#aed581!important}.light-green.lighten-1{background-color:#9ccc65!important}.light-green-text.text-lighten-1{color:#9ccc65!important}.light-green.darken-1{background-color:#7cb342!important}.light-green-text.text-darken-1{color:#7cb342!important}.light-green.darken-2{background-color:#689f38!important}.light-green-text.text-darken-2{color:#689f38!important}.light-green.darken-3{background-color:#558b2f!important}.light-green-text.text-darken-3{color:#558b2f!important}.light-green.darken-4{background-color:#33691e!important}.light-green-text.text-darken-4{color:#33691e!important}.light-green.accent-1{background-color:#ccff90!important}.light-green-text.text-accent-1{color:#ccff90!important}.light-green.accent-2{background-color:#b2ff59!important}.light-green-text.text-accent-2{color:#b2ff59!important}.light-green.accent-3{background-color:#76ff03!important}.light-green-text.text-accent-3{color:#76ff03!important}.light-green.accent-4{background-color:#64dd17!important}.light-green-text.text-accent-4{color:#64dd17!important}.lime{background-color:#cddc39!important}.lime-text{color:#cddc39!important}.lime.lighten-5{background-color:#f9fbe7!important}.lime-text.text-lighten-5{color:#f9fbe7!important}.lime.lighten-4{background-color:#f0f4c3!important}.lime-text.text-lighten-4{color:#f0f4c3!important}.lime.lighten-3{background-color:#e6ee9c!important}.lime-text.text-lighten-3{color:#e6ee9c!important}.lime.lighten-2{background-color:#dce775!important}.lime-text.text-lighten-2{color:#dce775!important}.lime.lighten-1{background-color:#d4e157!important}.lime-text.text-lighten-1{color:#d4e157!important}.lime.darken-1{background-color:#c0ca33!important}.lime-text.text-darken-1{color:#c0ca33!important}.lime.darken-2{background-color:#afb42b!important}.lime-text.text-darken-2{color:#afb42b!important}.lime.darken-3{background-color:#9e9d24!important}.lime-text.text-darken-3{color:#9e9d24!important}.lime.darken-4{background-color:#827717!important}.lime-text.text-darken-4{color:#827717!important}.lime.accent-1{background-color:#f4ff81!important}.lime-text.text-accent-1{color:#f4ff81!important}.lime.accent-2{background-color:#eeff41!important}.lime-text.text-accent-2{color:#eeff41!important}.lime.accent-3{background-color:#c6ff00!important}.lime-text.text-accent-3{color:#c6ff00!important}.lime.accent-4{background-color:#aeea00!important}.lime-text.text-accent-4{color:#aeea00!important}.yellow{background-color:#ffeb3b!important}.yellow-text{color:#ffeb3b!important}.yellow.lighten-5{background-color:#fffde7!important}.yellow-text.text-lighten-5{color:#fffde7!important}.yellow.lighten-4{background-color:#fff9c4!important}.yellow-text.text-lighten-4{color:#fff9c4!important}.yellow.lighten-3{background-color:#fff59d!important}.yellow-text.text-lighten-3{color:#fff59d!important}.yellow.lighten-2{background-color:#fff176!important}.yellow-text.text-lighten-2{color:#fff176!important}.yellow.lighten-1{background-color:#ffee58!important}.yellow-text.text-lighten-1{color:#ffee58!important}.yellow.darken-1{background-color:#fdd835!important}.yellow-text.text-darken-1{color:#fdd835!important}.yellow.darken-2{background-color:#fbc02d!important}.yellow-text.text-darken-2{color:#fbc02d!important}.yellow.darken-3{background-color:#f9a825!important}.yellow-text.text-darken-3{color:#f9a825!important}.yellow.darken-4{background-color:#f57f17!important}.yellow-text.text-darken-4{color:#f57f17!important}.yellow.accent-1{background-color:#ffff8d!important}.yellow-text.text-accent-1{color:#ffff8d!important}.yellow.accent-2{background-color:#ff0!important}.yellow-text.text-accent-2{color:#ff0!important}.yellow.accent-3{background-color:#ffea00!important}.yellow-text.text-accent-3{color:#ffea00!important}.yellow.accent-4{background-color:#ffd600!important}.yellow-text.text-accent-4{color:#ffd600!important}.amber{background-color:#ffc107!important}.amber-text{color:#ffc107!important}.amber.lighten-5{background-color:#fff8e1!important}.amber-text.text-lighten-5{color:#fff8e1!important}.amber.lighten-4{background-color:#ffecb3!important}.amber-text.text-lighten-4{color:#ffecb3!important}.amber.lighten-3{background-color:#ffe082!important}.amber-text.text-lighten-3{color:#ffe082!important}.amber.lighten-2{background-color:#ffd54f!important}.amber-text.text-lighten-2{color:#ffd54f!important}.amber.lighten-1{background-color:#ffca28!important}.amber-text.text-lighten-1{color:#ffca28!important}.amber.darken-1{background-color:#ffb300!important}.amber-text.text-darken-1{color:#ffb300!important}.amber.darken-2{background-color:#ffa000!important}.amber-text.text-darken-2{color:#ffa000!important}.amber.darken-3{background-color:#ff8f00!important}.amber-text.text-darken-3{color:#ff8f00!important}.amber.darken-4{background-color:#ff6f00!important}.amber-text.text-darken-4{color:#ff6f00!important}.amber.accent-1{background-color:#ffe57f!important}.amber-text.text-accent-1{color:#ffe57f!important}.amber.accent-2{background-color:#ffd740!important}.amber-text.text-accent-2{color:#ffd740!important}.amber.accent-3{background-color:#ffc400!important}.amber-text.text-accent-3{color:#ffc400!important}.amber.accent-4{background-color:#ffab00!important}.amber-text.text-accent-4{color:#ffab00!important}.orange{background-color:#ff9800!important}.orange-text{color:#ff9800!important}.orange.lighten-5{background-color:#fff3e0!important}.orange-text.text-lighten-5{color:#fff3e0!important}.orange.lighten-4{background-color:#ffe0b2!important}.orange-text.text-lighten-4{color:#ffe0b2!important}.orange.lighten-3{background-color:#ffcc80!important}.orange-text.text-lighten-3{color:#ffcc80!important}.orange.lighten-2{background-color:#ffb74d!important}.orange-text.text-lighten-2{color:#ffb74d!important}.orange.lighten-1{background-color:#ffa726!important}.orange-text.text-lighten-1{color:#ffa726!important}.orange.darken-1{background-color:#fb8c00!important}.orange-text.text-darken-1{color:#fb8c00!important}.orange.darken-2{background-color:#f57c00!important}.orange-text.text-darken-2{color:#f57c00!important}.orange.darken-3{background-color:#ef6c00!important}.orange-text.text-darken-3{color:#ef6c00!important}.orange.darken-4{background-color:#e65100!important}.orange-text.text-darken-4{color:#e65100!important}.orange.accent-1{background-color:#ffd180!important}.orange-text.text-accent-1{color:#ffd180!important}.orange.accent-2{background-color:#ffab40!important}.orange-text.text-accent-2{color:#ffab40!important}.orange.accent-3{background-color:#ff9100!important}.orange-text.text-accent-3{color:#ff9100!important}.orange.accent-4{background-color:#ff6d00!important}.orange-text.text-accent-4{color:#ff6d00!important}.deep-orange{background-color:#ff5722!important}.deep-orange-text{color:#ff5722!important}.deep-orange.lighten-5{background-color:#fbe9e7!important}.deep-orange-text.text-lighten-5{color:#fbe9e7!important}.deep-orange.lighten-4{background-color:#ffccbc!important}.deep-orange-text.text-lighten-4{color:#ffccbc!important}.deep-orange.lighten-3{background-color:#ffab91!important}.deep-orange-text.text-lighten-3{color:#ffab91!important}.deep-orange.lighten-2{background-color:#ff8a65!important}.deep-orange-text.text-lighten-2{color:#ff8a65!important}.deep-orange.lighten-1{background-color:#ff7043!important}.deep-orange-text.text-lighten-1{color:#ff7043!important}.deep-orange.darken-1{background-color:#f4511e!important}.deep-orange-text.text-darken-1{color:#f4511e!important}.deep-orange.darken-2{background-color:#e64a19!important}.deep-orange-text.text-darken-2{color:#e64a19!important}.deep-orange.darken-3{background-color:#d84315!important}.deep-orange-text.text-darken-3{color:#d84315!important}.deep-orange.darken-4{background-color:#bf360c!important}.deep-orange-text.text-darken-4{color:#bf360c!important}.deep-orange.accent-1{background-color:#ff9e80!important}.deep-orange-text.text-accent-1{color:#ff9e80!important}.deep-orange.accent-2{background-color:#ff6e40!important}.deep-orange-text.text-accent-2{color:#ff6e40!important}.deep-orange.accent-3{background-color:#ff3d00!important}.deep-orange-text.text-accent-3{color:#ff3d00!important}.deep-orange.accent-4{background-color:#dd2c00!important}.deep-orange-text.text-accent-4{color:#dd2c00!important}.brown{background-color:#795548!important}.brown-text{color:#795548!important}.brown.lighten-5{background-color:#efebe9!important}.brown-text.text-lighten-5{color:#efebe9!important}.brown.lighten-4{background-color:#d7ccc8!important}.brown-text.text-lighten-4{color:#d7ccc8!important}.brown.lighten-3{background-color:#bcaaa4!important}.brown-text.text-lighten-3{color:#bcaaa4!important}.brown.lighten-2{background-color:#a1887f!important}.brown-text.text-lighten-2{color:#a1887f!important}.brown.lighten-1{background-color:#8d6e63!important}.brown-text.text-lighten-1{color:#8d6e63!important}.brown.darken-1{background-color:#6d4c41!important}.brown-text.text-darken-1{color:#6d4c41!important}.brown.darken-2{background-color:#5d4037!important}.brown-text.text-darken-2{color:#5d4037!important}.brown.darken-3{background-color:#4e342e!important}.brown-text.text-darken-3{color:#4e342e!important}.brown.darken-4{background-color:#3e2723!important}.brown-text.text-darken-4{color:#3e2723!important}.blue-grey{background-color:#607d8b!important}.blue-grey-text{color:#607d8b!important}.blue-grey.lighten-5{background-color:#eceff1!important}.blue-grey-text.text-lighten-5{color:#eceff1!important}.blue-grey.lighten-4{background-color:#cfd8dc!important}.blue-grey-text.text-lighten-4{color:#cfd8dc!important}.blue-grey.lighten-3{background-color:#b0bec5!important}.blue-grey-text.text-lighten-3{color:#b0bec5!important}.blue-grey.lighten-2{background-color:#90a4ae!important}.blue-grey-text.text-lighten-2{color:#90a4ae!important}.blue-grey.lighten-1{background-color:#78909c!important}.blue-grey-text.text-lighten-1{color:#78909c!important}.blue-grey.darken-1{background-color:#546e7a!important}.blue-grey-text.text-darken-1{color:#546e7a!important}.blue-grey.darken-2{background-color:#455a64!important}.blue-grey-text.text-darken-2{color:#455a64!important}.blue-grey.darken-3{background-color:#37474f!important}.blue-grey-text.text-darken-3{color:#37474f!important}.blue-grey.darken-4{background-color:#263238!important}.blue-grey-text.text-darken-4{color:#263238!important}.grey{background-color:#9e9e9e!important}.grey-text{color:#9e9e9e!important}.grey.lighten-5{background-color:#fafafa!important}.grey-text.text-lighten-5{color:#fafafa!important}.grey.lighten-4{background-color:#f5f5f5!important}.grey-text.text-lighten-4{color:#f5f5f5!important}.grey.lighten-3{background-color:#eee!important}.grey-text.text-lighten-3{color:#eee!important}.grey.lighten-2{background-color:#e0e0e0!important}.grey-text.text-lighten-2{color:#e0e0e0!important}.grey.lighten-1{background-color:#bdbdbd!important}.grey-text.text-lighten-1{color:#bdbdbd!important}.grey.darken-1{background-color:#757575!important}.grey-text.text-darken-1{color:#757575!important}.grey.darken-2{background-color:#616161!important}.grey-text.text-darken-2{color:#616161!important}.grey.darken-3{background-color:#424242!important}.grey-text.text-darken-3{color:#424242!important}.grey.darken-4{background-color:#212121!important}.grey-text.text-darken-4{color:#212121!important}.black{background-color:#000!important}.black-text{color:#000!important}.white{background-color:#fff!important}.white-text{color:#fff!important}.transparent{background-color:transparent!important}.transparent-text{color:transparent!important}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default) li{list-style-type:none}a{color:#039be5;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.clearfix{clear:both}.z-depth-0{box-shadow:none!important}.btn,.btn-floating,.btn-large,.card,.card-panel,.collapsible,.dropdown-content,.side-nav,.toast,.z-depth-1,nav{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.btn-floating:hover,.btn-large:hover,.btn:hover,.z-depth-1-half{box-shadow:0 3px 3px 0 rgba(0,0,0,.14),0 1px 7px 0 rgba(0,0,0,.12),0 3px 1px -1px rgba(0,0,0,.2)}.z-depth-2{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.3)}.z-depth-3{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.3)}.modal,.z-depth-4{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.3)}.z-depth-5{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.3)}.hoverable{transition:box-shadow .25s;box-shadow:0}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width:992px){.pagination{width:100%}.pagination li.next,.pagination li.prev{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:hsla(0,0%,100%,.7)}.breadcrumb [class*=mdi-],.breadcrumb [class^=mdi-],.breadcrumb i,.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:"\E5CC";color:hsla(0,0%,100%,.7);vertical-align:top;display:inline-block;font-family:Material Icons;font-weight:400;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{top:0;left:0;right:0;z-index:-1}.parallax,.parallax img{position:absolute;bottom:0}.parallax img{display:none;left:50%;min-width:100%;min-height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-bottom,.pin-top{position:relative}.pinned{position:fixed!important}.fade-in,ul.staggered-list li{opacity:0}.fade-in{-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width:600px){.hide-on-small-and-down,.hide-on-small-only{display:none!important}}@media only screen and (max-width:992px){.hide-on-med-and-down{display:none!important}}@media only screen and (min-width:601px){.hide-on-med-and-up{display:none!important}}@media only screen and (min-width:600px) and (max-width:992px){.hide-on-med-only{display:none!important}}@media only screen and (min-width:993px){.hide-on-large-only{display:none!important}}@media only screen and (min-width:993px){.show-on-large{display:block!important}}@media only screen and (min-width:600px) and (max-width:992px){.show-on-medium{display:block!important}}@media only screen and (max-width:600px){.show-on-small{display:block!important}}@media only screen and (min-width:601px){.show-on-medium-and-up{display:block!important}}@media only screen and (max-width:992px){.show-on-medium-and-down{display:block!important}}@media only screen and (max-width:600px){.center-on-small-only{text-align:center}}.page-footer{padding-top:20px;background-color:#ee6e73}.page-footer .footer-copyright{overflow:hidden;min-height:50px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:10px 0;color:hsla(0,0%,100%,.8);background-color:rgba(51,51,51,.08)}table,td,th{border:none}table{width:100%;display:table}table.bordered>tbody>tr,table.bordered>thead>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered tbody tr td,table.centered thead tr th{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width:992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:"\A0"}table.responsive-table td,table.responsive-table th{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th:before{content:"\A0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:.5rem 0 1rem;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;transition:.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container embed,.video-container iframe,.video-container object{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:.5rem 0 1rem;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;transition:width .3s linear}.progress .determinate,.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{-webkit-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.progress .indeterminate:after,.progress .indeterminate:before{content:"";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right}.progress .indeterminate:after{-webkit-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}.hide{display:none!important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left!important}.right{float:right!important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0!important}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;box-sizing:border-box}span.badge.new{font-weight:300;font-size:.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]:after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-top:calc(1.5rem - 11px)}.side-nav span.badge{margin-top:13px}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga";font-feature-settings:"liga"}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width:601px){.container{width:85%}}@media only screen and (min-width:993px){.container{width:70%}}.container .row{margin-left:-.75rem;margin-right:-.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*=pull-],.row .col[class*=push-]{position:relative}.row .col.s1{width:8.3333333333%}.row .col.s1,.row .col.s2{margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%}.row .col.s3{width:25%}.row .col.s3,.row .col.s4{margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%}.row .col.s5{width:41.6666666667%}.row .col.s5,.row .col.s6{margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%}.row .col.s7{width:58.3333333333%}.row .col.s7,.row .col.s8{margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%}.row .col.s9{width:75%}.row .col.s9,.row .col.s10{margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%}.row .col.s11{width:91.6666666667%}.row .col.s11,.row .col.s12{margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width:601px){.row .col.m1{width:8.3333333333%}.row .col.m1,.row .col.m2{margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%}.row .col.m3{width:25%}.row .col.m3,.row .col.m4{margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%}.row .col.m5{width:41.6666666667%}.row .col.m5,.row .col.m6{margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%}.row .col.m7{width:58.3333333333%}.row .col.m7,.row .col.m8{margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%}.row .col.m9{width:75%}.row .col.m9,.row .col.m10{margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%}.row .col.m11{width:91.6666666667%}.row .col.m11,.row .col.m12{margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width:993px){.row .col.l1{width:8.3333333333%}.row .col.l1,.row .col.l2{margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%}.row .col.l3{width:25%}.row .col.l3,.row .col.l4{margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%}.row .col.l5{width:41.6666666667%}.row .col.l5,.row .col.l6{margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%}.row .col.l7{width:58.3333333333%}.row .col.l7,.row .col.l8{margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%}.row .col.l9{width:75%}.row .col.l9,.row .col.l10{margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%}.row .col.l11{width:91.6666666667%}.row .col.l11,.row .col.l12{margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}@media only screen and (min-width:1201px){.row .col.xl1{width:8.3333333333%}.row .col.xl1,.row .col.xl2{margin-left:auto;left:auto;right:auto}.row .col.xl2{width:16.6666666667%}.row .col.xl3{width:25%}.row .col.xl3,.row .col.xl4{margin-left:auto;left:auto;right:auto}.row .col.xl4{width:33.3333333333%}.row .col.xl5{width:41.6666666667%}.row .col.xl5,.row .col.xl6{margin-left:auto;left:auto;right:auto}.row .col.xl6{width:50%}.row .col.xl7{width:58.3333333333%}.row .col.xl7,.row .col.xl8{margin-left:auto;left:auto;right:auto}.row .col.xl8{width:66.6666666667%}.row .col.xl9{width:75%}.row .col.xl9,.row .col.xl10{margin-left:auto;left:auto;right:auto}.row .col.xl10{width:83.3333333333%}.row .col.xl11{width:91.6666666667%}.row .col.xl11,.row .col.xl12{margin-left:auto;left:auto;right:auto}.row .col.xl12{width:100%}.row .col.offset-xl1{margin-left:8.3333333333%}.row .col.pull-xl1{right:8.3333333333%}.row .col.push-xl1{left:8.3333333333%}.row .col.offset-xl2{margin-left:16.6666666667%}.row .col.pull-xl2{right:16.6666666667%}.row .col.push-xl2{left:16.6666666667%}.row .col.offset-xl3{margin-left:25%}.row .col.pull-xl3{right:25%}.row .col.push-xl3{left:25%}.row .col.offset-xl4{margin-left:33.3333333333%}.row .col.pull-xl4{right:33.3333333333%}.row .col.push-xl4{left:33.3333333333%}.row .col.offset-xl5{margin-left:41.6666666667%}.row .col.pull-xl5{right:41.6666666667%}.row .col.push-xl5{left:41.6666666667%}.row .col.offset-xl6{margin-left:50%}.row .col.pull-xl6{right:50%}.row .col.push-xl6{left:50%}.row .col.offset-xl7{margin-left:58.3333333333%}.row .col.pull-xl7{right:58.3333333333%}.row .col.push-xl7{left:58.3333333333%}.row .col.offset-xl8{margin-left:66.6666666667%}.row .col.pull-xl8{right:66.6666666667%}.row .col.push-xl8{left:66.6666666667%}.row .col.offset-xl9{margin-left:75%}.row .col.pull-xl9{right:75%}.row .col.push-xl9{left:75%}.row .col.offset-xl10{margin-left:83.3333333333%}.row .col.pull-xl10{right:83.3333333333%}.row .col.push-xl10{left:83.3333333333%}.row .col.offset-xl11{margin-left:91.6666666667%}.row .col.pull-xl11{right:91.6666666667%}.row .col.push-xl11{left:91.6666666667%}.row .col.offset-xl12{margin-left:100%}.row .col.pull-xl12{right:100%}.row .col.push-xl12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav [class*=mdi-],nav [class^=mdi-],nav i,nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width:993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px;margin:0 18px}nav .button-collapse i{height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width:992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:.5rem}nav .brand-logo.right{right:.5rem;left:auto}}nav .brand-logo.right{right:.5rem;padding:0}nav .brand-logo [class*=mdi-],nav .brand-logo [class^=mdi-],nav .brand-logo i,nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,.1)}nav ul a{transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-flat,nav ul a.btn-floating,nav ul a.btn-large{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=date]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=text]:valid,nav .input-field input[type=url]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:hsla(0,0%,100%,.7);transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width:601px){nav.nav-extended .nav-wrapper{min-height:64px}nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:Roboto;src:local(Roboto Thin),url(fonts/Roboto-Thin.woff2) format("woff2"),url(fonts/Roboto-Thin.woff) format("woff");font-weight:100}@font-face{font-family:Roboto;src:local(Roboto Light),url(fonts/Roboto-Light.woff2) format("woff2"),url(fonts/Roboto-Light.woff) format("woff");font-weight:300}@font-face{font-family:Roboto;src:local(Roboto Regular),url(fonts/Roboto-Regular.woff2) format("woff2"),url(fonts/Roboto-Regular.woff) format("woff");font-weight:400}@font-face{font-family:Roboto;src:local(Roboto Medium),url(fonts/Roboto-Medium.woff2) format("woff2"),url(fonts/Roboto-Medium.woff) format("woff");font-weight:500}@font-face{font-family:Roboto;src:local(Roboto Bold),url(fonts/Roboto-Bold.woff2) format("woff2"),url(fonts/Roboto-Bold.woff) format("woff");font-weight:700}a{text-decoration:none}html{line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;color:rgba(0,0,0,.87)}@media only screen and (min-width:0){html{font-size:14px}}@media only screen and (min-width:992px){html{font-size:14.5px}}@media only screen and (min-width:1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;margin:2.1rem 0 1.68rem}h1,h2{line-height:110%}h2{font-size:3.56rem;margin:1.78rem 0 1.424rem}h3{font-size:2.92rem;margin:1.46rem 0 1.168rem}h3,h4{line-height:110%}h4{font-size:2.28rem;margin:1.14rem 0 .912rem}h5{font-size:1.64rem;margin:.82rem 0 .656rem}h5,h6{line-height:110%}h6{font-size:1rem;margin:.5rem 0 .4rem}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width:360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width:390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width:420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width:450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width:480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width:510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width:540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width:570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width:600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width:630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width:660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width:690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width:720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width:750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width:780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width:810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width:840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width:870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width:900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width:930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width:960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width:360px){.flow-text{font-size:1.2rem}}.scale-transition{transition:-webkit-transform .3s cubic-bezier(.53,.01,.36,1.63)!important;transition:transform .3s cubic-bezier(.53,.01,.36,1.63)!important;transition:transform .3s cubic-bezier(.53,.01,.36,1.63),-webkit-transform .3s cubic-bezier(.53,.01,.36,1.63)!important}.scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .2s!important;transition:transform .2s!important;transition:transform .2s,-webkit-transform .2s!important}.scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)}.card-panel{padding:24px}.card,.card-panel{transition:box-shadow .25s;margin:.5rem 0 1rem;border-radius:2px;background-color:#fff}.card{position:relative}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.large,.card.medium,.card.small{position:relative}.card.large .card-image,.card.medium .card-image,.card.small .card-image{max-height:60%;overflow:hidden}.card.large .card-image+.card-content,.card.medium .card-image+.card-content,.card.small .card-image+.card-content{max-height:40%}.card.large .card-content,.card.medium .card-content,.card.small .card-content{max-height:100%;overflow:hidden}.card.large .card-action,.card.medium .card-action,.card.small .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.large .card-image,.card.horizontal.medium .card-image,.card.horizontal.small .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.large .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.small .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px}.card .card-content{padding:24px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px}.card .card-content .card-title i{line-height:32px}.card .card-action{position:relative;background-color:inherit;border-top:1px solid hsla(0,0%,63%,.2);padding:16px 24px}.card .card-action:last-child{border-radius:0 0 2px 2px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width:600px){#toast-container{min-width:100%;bottom:0}}@media only screen and (min-width:601px) and (max-width:992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width:993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:35px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.toast .btn,.toast .btn-flat,.toast .btn-large{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width:600px){.toast{width:100%;border-radius:0}}@media only screen and (min-width:601px) and (max-width:992px){.toast{float:left}}@media only screen and (min-width:993px){.toast{float:right}}.tabs{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap}.tabs.tabs-transparent{background-color:transparent}.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover,.tabs.tabs-transparent .tab a{color:hsla(0,0%,100%,.7)}.tabs.tabs-transparent .tab a.active,.tabs.tabs-transparent .tab a:hover{color:#fff}.tabs.tabs-transparent .indicator{background-color:#fff}.tabs.tabs-fixed-width{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs.tabs-fixed-width .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase}.tabs .tab a{color:rgba(238,110,115,.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;transition:color .28s ease}.tabs .tab a.active,.tabs .tab a:hover{background-color:transparent;color:#ee6e73}.tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,.7);cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left,right}@media only screen and (max-width:992px){.tabs{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none}.backdrop,.material-tooltip{opacity:0;position:absolute;visibility:hidden}.backdrop{height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0;transform-origin:50% 0}.btn,.btn-flat,.btn-large{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn-flat.disabled,.btn-flat:disabled,.btn-flat[disabled],.btn-floating.disabled,.btn-floating:disabled,.btn-floating[disabled],.btn-large.disabled,.btn-large:disabled,.btn-large[disabled],.btn.disabled,.btn:disabled,.btn[disabled],.disabled.btn-large,[disabled].btn-large{pointer-events:none;background-color:#dfdfdf!important;box-shadow:none;color:#9f9f9f!important;cursor:default}.btn-flat.disabled:hover,.btn-flat:disabled:hover,.btn-flat[disabled]:hover,.btn-floating.disabled:hover,.btn-floating:disabled:hover,.btn-floating[disabled]:hover,.btn-large.disabled:hover,.btn-large:disabled:hover,.btn-large[disabled]:hover,.btn.disabled:hover,.btn:disabled:hover,.btn[disabled]:hover,.disabled.btn-large:hover,[disabled].btn-large:hover{background-color:#dfdfdf!important;color:#9f9f9f!important}.btn,.btn-flat,.btn-floating,.btn-large{font-size:1rem;outline:0}.btn-flat i,.btn-floating i,.btn-large i,.btn i{font-size:1.3rem;line-height:inherit}.btn-floating:focus,.btn-large:focus,.btn:focus{background-color:#1d7d74}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;transition:.2s ease-out;cursor:pointer}.btn-large:hover,.btn:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:40px;height:40px;line-height:40px;padding:0;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating,.btn-floating:hover{background-color:#26a69a}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:56px;height:56px}.btn-floating.btn-large.halfway-fab{bottom:-28px}.btn-floating.btn-large i{line-height:56px}.btn-floating.halfway-fab{position:absolute;right:24px;bottom:-20px}.btn-floating.halfway-fab.left{right:auto;left:24px}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn.toolbar{padding:0;height:56px}.fixed-action-btn.toolbar.active>a i{opacity:0}.fixed-action-btn.toolbar ul{display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0}.fixed-action-btn.toolbar ul li{-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;transition:none}.fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;box-shadow:none;color:#fff;line-height:56px;z-index:1}.fixed-action-btn.toolbar ul li a i{line-height:inherit}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)}.btn-flat{box-shadow:none;color:#343434;cursor:pointer;transition:background-color .2s}.btn-flat,.btn-flat:active,.btn-flat:focus{background-color:transparent}.btn-flat:focus,.btn-flat:hover{background-color:rgba(0,0,0,.1);box-shadow:none}.btn-flat:active{background-color:rgba(0,0,0,.2)}.btn-flat.disabled{background-color:transparent!important;color:#b3b3b3!important;cursor:default}.btn-large{height:54px;line-height:54px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width,height}.dropdown-content li{clear:both;color:rgba(0,0,0,.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li.active,.dropdown-content li.selected,.dropdown-content li:hover{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:0;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit;float:left;margin:0 24px 0 0;width:24px}.input-field.col .dropdown-content [type=checkbox]+label{top:1px;left:0;height:18px}.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,.2);transition:all .7s ease-out;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:hsla(0,0%,100%,.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,.7)}.waves-effect input[type=button],.waves-effect input[type=reset],.waves-effect input[type=submit]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{transition:none!important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0)}.waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top,opacity}@media only screen and (max-width:992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-flat,.modal .modal-footer .btn-large{float:right;margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom,opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;box-sizing:border-box;padding:2rem}.side-nav .collapsible,.side-nav.fixed .collapsible{border:none;box-shadow:none}.side-nav .collapsible li,.side-nav.fixed .collapsible li{padding:0}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.side-nav .collapsible-header:hover,.side-nav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,.05)}.side-nav .collapsible-header i,.side-nav.fixed .collapsible-header i{line-height:inherit}.side-nav .collapsible-body,.side-nav.fixed .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a,.side-nav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 24px;transition:margin .35s cubic-bezier(.25,.46,.45,.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip>img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;box-shadow:none;margin:0 0 20px;min-height:45px;outline:none;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .chip.selected{background-color:#26a69a;color:#fff}.chips .input{background:none;border:0;color:rgba(0,0,0,.6);display:inline-block;font-size:1rem;height:3rem;line-height:32px;outline:0;margin:0;padding:0!important;width:120px!important}.chips .input:focus{border:0!important;box-shadow:none!important}.chips .autocomplete-content{margin-top:0}.prefix~.chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty~label{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{top:0;right:0;background-color:#292929;will-change:opacity}#materialbox-overlay,.materialbox-caption{position:fixed;bottom:0;left:0;z-index:1000}.materialbox-caption{display:none;color:#fff;line-height:50px;width:100%;text-align:center;padding:0 15%;height:50px;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder,::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input:not([type]),input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 20px;padding:0;box-shadow:none;box-sizing:content-box;transition:all .3s}input:not([type]):disabled,input:not([type])[readonly=readonly],input[type=date]:disabled,input[type=date][readonly=readonly],input[type=datetime-local]:disabled,input[type=datetime-local][readonly=readonly],input[type=datetime]:disabled,input[type=datetime][readonly=readonly],input[type=email]:disabled,input[type=email][readonly=readonly],input[type=number]:disabled,input[type=number][readonly=readonly],input[type=password]:disabled,input[type=password][readonly=readonly],input[type=search]:disabled,input[type=search][readonly=readonly],input[type=tel]:disabled,input[type=tel][readonly=readonly],input[type=text]:disabled,input[type=text][readonly=readonly],input[type=time]:disabled,input[type=time][readonly=readonly],input[type=url]:disabled,input[type=url][readonly=readonly],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly=readonly]{color:rgba(0,0,0,.26);border-bottom:1px dotted rgba(0,0,0,.26)}input:not([type]):disabled+label,input:not([type])[readonly=readonly]+label,input[type=date]:disabled+label,input[type=date][readonly=readonly]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly=readonly]+label,input[type=datetime]:disabled+label,input[type=datetime][readonly=readonly]+label,input[type=email]:disabled+label,input[type=email][readonly=readonly]+label,input[type=number]:disabled+label,input[type=number][readonly=readonly]+label,input[type=password]:disabled+label,input[type=password][readonly=readonly]+label,input[type=search]:disabled+label,input[type=search][readonly=readonly]+label,input[type=tel]:disabled+label,input[type=tel][readonly=readonly]+label,input[type=text]:disabled+label,input[type=text][readonly=readonly]+label,input[type=time]:disabled+label,input[type=time][readonly=readonly]+label,input[type=url]:disabled+label,input[type=url][readonly=readonly]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly=readonly]+label{color:rgba(0,0,0,.26)}input:not([type]):focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=datetime]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=search]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=text]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=url]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}input:not([type]):focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=datetime]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=text]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input:not([type]).valid,input:not([type]):focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=datetime].valid,input[type=datetime]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=text].valid,input[type=text]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4caf50;box-shadow:0 1px 0 0 #4caf50}input:not([type]).valid+label:after,input:not([type]):focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=datetime].valid+label:after,input[type=datetime]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4caf50;opacity:1}input:not([type]).invalid,input:not([type]):focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=datetime].invalid,input[type=datetime]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=text].invalid,input[type=text]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #f44336;box-shadow:0 1px 0 0 #f44336}input:not([type]).invalid+label:after,input:not([type]):focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=datetime].invalid+label:after,input[type=datetime]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#f44336;opacity:1}input:not([type]).validate+label,input[type=date].validate+label,input[type=datetime-local].validate+label,input[type=datetime].validate+label,input[type=email].validate+label,input[type=number].validate+label,input[type=password].validate+label,input[type=search].validate+label,input[type=tel].validate+label,input[type=text].validate+label,input[type=time].validate+label,input[type=url].validate+label,textarea.materialize-textarea.validate+label{width:100%;pointer-events:none}input:not([type])+label:after,input[type=date]+label:after,input[type=datetime-local]+label:after,input[type=datetime]+label:after,input[type=email]+label:after,input[type=number]+label:after,input[type=password]+label:after,input[type=search]+label:after,input[type=tel]+label:after,input[type=text]+label:after,input[type=time]+label:after,input[type=url]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:60px;opacity:0;transition:opacity .2s ease-out,color .2s ease-out}.input-field{position:relative;margin-top:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline .select-dropdown,.input-field.inline input{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix~.validate~label,.input-field.col .prefix~label{width:calc(100% - 3rem - 1.5rem)}.input-field label{color:#9e9e9e;position:absolute;top:.8rem;left:0;font-size:1rem;cursor:text;transition:.2s ease-out;text-align:initial}.input-field label:not(.label-icon).active{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix~.autocomplete-content,.input-field .prefix~.validate~label,.input-field .prefix~input,.input-field .prefix~label,.input-field .prefix~textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix~label{margin-left:3rem}@media only screen and (max-width:992px){.input-field .prefix~input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width:600px){.input-field .prefix~input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus~.material-icons,.input-field input[type=search]:focus~.mdi-navigation-close{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search]~.material-icons,.input-field input[type=search]~.mdi-navigation-close{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:color .3s}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:.8rem 0 1.6rem;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem;position:absolute;top:0}.autocomplete-content{margin-top:-20px;display:block;opacity:1;position:static}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}[type=radio]:checked,[type=radio]:not(:checked){position:absolute;left:-9999px;opacity:0}[type=radio]:checked+label,[type=radio]:not(:checked)+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type=radio]+label:after,[type=radio]+label:before{content:"";position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;transition:.28s ease}[type=radio].with-gap:checked+label:after,[type=radio].with-gap:checked+label:before,[type=radio]:checked+label:after,[type=radio]:checked+label:before,[type=radio]:not(:checked)+label:after,[type=radio]:not(:checked)+label:before{border-radius:50%}[type=radio]:not(:checked)+label:after,[type=radio]:not(:checked)+label:before{border:2px solid #5a5a5a}[type=radio]:not(:checked)+label:after{-webkit-transform:scale(0);transform:scale(0)}[type=radio]:checked+label:before{border:2px solid transparent}[type=radio].with-gap:checked+label:after,[type=radio].with-gap:checked+label:before,[type=radio]:checked+label:after{border:2px solid #26a69a}[type=radio].with-gap:checked+label:after,[type=radio]:checked+label:after{background-color:#26a69a}[type=radio]:checked+label:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type=radio].with-gap:checked+label:after{-webkit-transform:scale(.5);transform:scale(.5)}[type=radio].tabbed:focus+label:before{box-shadow:0 0 0 10px rgba(0,0,0,.1)}[type=radio].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,.26)}[type=radio].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,.26)}[type=radio]:disabled:checked+label:before,[type=radio]:disabled:not(:checked)+label:before{background-color:transparent;border-color:rgba(0,0,0,.26)}[type=radio]:disabled+label{color:rgba(0,0,0,.26)}[type=radio]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,.26)}[type=radio]:disabled:checked+label:after{background-color:rgba(0,0,0,.26);border-color:#bdbdbd}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type=checkbox]:checked,[type=checkbox]:not(:checked){position:absolute;left:-9999px;opacity:0}[type=checkbox]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type=checkbox]+label:before,[type=checkbox]:not(.filled-in)+label:after{content:"";position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;transition:.2s}[type=checkbox]:not(.filled-in)+label:after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type=checkbox]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,.26)}[type=checkbox].tabbed:focus+label:after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;box-shadow:0 0 0 10px rgba(0,0,0,.1);background-color:rgba(0,0,0,.1)}[type=checkbox]:checked+label:before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type=checkbox]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);border-bottom:2px solid rgba(0,0,0,.26)}[type=checkbox]:indeterminate+label:before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type=checkbox]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);background-color:transparent}[type=checkbox].filled-in+label:after{border-radius:2px}[type=checkbox].filled-in+label:after,[type=checkbox].filled-in+label:before{content:"";left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}[type=checkbox].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotate(37deg);transform:rotate(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type=checkbox].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0;z-index:0}[type=checkbox].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotate(37deg);transform:rotate(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type=checkbox].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type=checkbox].filled-in.tabbed:focus+label:after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,.1)}[type=checkbox].filled-in.tabbed:checked:focus+label:after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[type=checkbox].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type=checkbox].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#bdbdbd}[type=checkbox].filled-in:disabled:checked+label:before{background-color:transparent}[type=checkbox].filled-in:disabled:checked+label:after{background-color:#bdbdbd;border-color:#bdbdbd}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a;left:24px}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background .3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#f1f1f1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-3px;transition:left .3s ease,background .3s ease,box-shadow .1s ease}input[type=checkbox]:checked:not(:disabled).tabbed:focus~.lever:after,input[type=checkbox]:checked:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(38,166,154,.1)}input[type=checkbox]:not(:disabled).tabbed:focus~.lever:after,input[type=checkbox]:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#bdbdbd}select{display:none}select.browser-default{display:block}select{background-color:hsla(0,0%,100%,.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 20px;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:0;bottom:0;height:10px;margin:auto 0;font-size:10px;line-height:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}select:disabled{color:rgba(0,0,0,.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,.3)}.select-wrapper i{color:rgba(0,0,0,.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,.3);background-color:transparent}.prefix~.select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix~label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,.4)}.select-dropdown li.optgroup~li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;top:10px;left:0;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;margin-left:7px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#26a69a;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0;transition:.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid #fff}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ee6e73}.side-nav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:calc(100% + 60px);height:100%;padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.side-nav .collapsible{margin:0}.side-nav li{float:none;line-height:48px}.side-nav li.active{background-color:rgba(0,0,0,.05)}.side-nav li>a{color:rgba(0,0,0,.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.side-nav li>a:hover{background-color:rgba(0,0,0,.05)}.side-nav li>a.btn,.side-nav li>a.btn-flat,.side-nav li>a.btn-floating,.side-nav li>a.btn-large{margin:10px 15px}.side-nav li>a.btn,.side-nav li>a.btn-floating,.side-nav li>a.btn-large{color:#fff}.side-nav li>a.btn-flat{color:#343434}.side-nav li>a.btn-large:hover,.side-nav li>a.btn:hover{background-color:#2bbbad}.side-nav li>a.btn-floating:hover{background-color:#26a69a}.side-nav li>a>[class^=mdi-],.side-nav li>a>i,.side-nav li>a>i.material-icons,.side-nav li>a li>a>[class*=mdi-]{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,.54)}.side-nav .divider{margin:8px 0 0}.side-nav .subheader{cursor:auto;pointer-events:none;color:rgba(0,0,0,.54);font-size:14px;font-weight:500;line-height:48px}.side-nav .subheader:hover{background-color:transparent}.side-nav .userView{position:relative;padding:32px 32px 0;margin-bottom:8px}.side-nav .userView>a{height:auto;padding:0}.side-nav .userView>a:hover{background-color:transparent}.side-nav .userView .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.side-nav .userView .circle,.side-nav .userView .email,.side-nav .userView .name{display:block}.side-nav .userView .circle{height:64px;width:64px}.side-nav .userView .email,.side-nav .userView .name{font-size:14px;line-height:24px}.side-nav .userView .name{margin-top:16px;font-weight:500}.side-nav .userView .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width:992px){.side-nav.fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.side-nav a{padding:0 16px}.side-nav .userView{padding:16px 16px 0}}.side-nav .collapsible-body>ul:not(.collapsible)>li.active,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.side-nav .collapsible-body>ul:not(.collapsible)>li.active a,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}.side-nav .collapsible-body{padding:0}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:50px;height:50px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(1turn)}}@keyframes container-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-green-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(3turn)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(3turn);transform:rotate(3turn)}}@-webkit-keyframes blue-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes blue-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@-webkit-keyframes red-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}@keyframes green-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{0%{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1);animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:50%}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4caf50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0 50%;transform-origin:0 50%}.carousel.carousel-slider{top:0;left:0;height:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{display:none;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item>img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:hsla(0,0%,100%,.5);transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.carousel .carousel-item:not(.active) .materialboxed,.carousel.scrolling .carousel-item .materialboxed{pointer-events:none}.tap-target-wrapper{width:800px;height:800px;position:fixed;z-index:1000;visibility:hidden;transition:visibility 0s .3s}.tap-target-wrapper.open{visibility:visible;transition:visibility 0s}.tap-target-wrapper.open .tap-target{opacity:.95;transition:opacity .3s ease-in-out,-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out,opacity .3s ease-in-out;transition:transform .3s ease-in-out,opacity .3s ease-in-out,-webkit-transform .3s ease-in-out}.tap-target-wrapper.open .tap-target,.tap-target-wrapper.open .tap-target-wave:before{-webkit-transform:scale(1);transform:scale(1)}.tap-target-wrapper.open .tap-target-wave:after{visibility:visible;-webkit-animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;transition:opacity .3s,visibility 0s 1s,-webkit-transform .3s;transition:opacity .3s,transform .3s,visibility 0s 1s;transition:opacity .3s,transform .3s,visibility 0s 1s,-webkit-transform .3s}.tap-target{position:absolute;font-size:1rem;border-radius:50%;background-color:#ee6e73;box-shadow:0 20px 20px 0 rgba(0,0,0,.14),0 10px 50px 0 rgba(0,0,0,.12),0 30px 10px -20px rgba(0,0,0,.2);width:100%;height:100%;opacity:0;-webkit-transform:scale(0);transform:scale(0);transition:opacity .3s ease-in-out,-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out,opacity .3s ease-in-out;transition:transform .3s ease-in-out,opacity .3s ease-in-out,-webkit-transform .3s ease-in-out}.tap-target-content{position:relative;display:table-cell}.tap-target-wave{position:absolute;border-radius:50%;z-index:10001}.tap-target-wave:after,.tap-target-wave:before{content:"";display:block;position:absolute;width:100%;height:100%;border-radius:50%;background-color:#fff}.tap-target-wave:before{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.tap-target-wave:after{visibility:hidden;transition:opacity .3s,visibility 0s,-webkit-transform .3s;transition:opacity .3s,transform .3s,visibility 0s;transition:opacity .3s,transform .3s,visibility 0s,-webkit-transform .3s;z-index:-1}.tap-target-origin{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:10002;position:absolute!important}.tap-target-origin:not(.btn):not(.btn-large),.tap-target-origin:not(.btn):not(.btn-large):hover{background:none}@media only screen and (max-width:600px){.tap-target,.tap-target-wrapper{width:600px;height:600px}}.pulse{overflow:initial;position:relative}.pulse:before{content:"";display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:inherit;border-radius:inherit;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;z-index:-1}@-webkit-keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}to{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}@keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}to{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.picker__frame,.picker__holder{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;transition:background .15s ease-out,top 0s .15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all .15s ease-out}@media (min-height:28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height:40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height:28.875em){.picker__wrap{display:block}}.picker__box{background:#fff;display:table-cell;vertical-align:middle}@media (min-height:28.875em){.picker__box{display:block;border:1px solid #777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,.32);transition:background .15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height:35.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__input.picker__input--active{border-color:#e3f2fd}.picker__frame{margin:0 auto;max-width:325px}@media (min-height:38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#fff;width:40%}.picker__select--year.browser-default{display:inline;background-color:#fff;width:26%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,.05)}.picker__nav--next,.picker__nav--prev{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:before,.picker__nav--disabled:before:hover,.picker__nav--disabled:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em}.picker__table,.picker__table td,.picker__table th{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#ddd;font-weight:500}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover{cursor:pointer}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{-webkit-transform:scale(.75);transform:scale(.75);background:#0089ec}.picker--focused .picker__day--disabled,.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__footer{text-align:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.picker__button--clear,.picker__button--close,.picker__button--today{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--clear:focus,.picker__button--close:focus,.picker__button--today:focus{background:#b1dcfb;border-color:rgba(0,0,0,.05);outline:none}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{position:relative;display:inline-block;height:0}.picker__button--clear:before,.picker__button--today:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#26a69a;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--next:hover,.picker__nav--prev:hover{cursor:pointer;color:#000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:hsla(0,0%,100%,.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{border-radius:50%;-webkit-transform:scale(.9);transform:scale(.9);background-color:#26a69a;color:#fff}.picker--focused .picker__day--selected.picker__day--outfocus,.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#26a69a}.picker__nav--next:before,.picker__nav--prev:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #676767}button.picker__clear:focus,button.picker__close:focus,button.picker__today:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__list-item--highlighted,.picker__list-item:hover{border-color:#0089ec;z-index:10}.picker--focused .picker__list-item--highlighted,.picker__list-item--highlighted:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker--focused .picker__list-item--selected,.picker__list-item--selected,.picker__list-item--selected:hover{background:#0089ec;color:#fff;z-index:10}.picker--focused .picker__list-item--disabled,.picker__list-item--disabled,.picker__list-item--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:focus,.picker--time .picker__button--clear:hover{color:#000;background:#b1dcfb;background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:none}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:focus:before,.picker--time .picker__button--clear:hover:before{color:#fff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height:40.125em){.picker--time .picker__box{margin-bottom:5em}}.annotator-filter *,.annotator-notice,.annotator-widget *{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:400;text-align:left;margin:0;padding:0;background:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;-moz-box-shadow:none;-webkit-box-shadow:none;-o-box-shadow:none;box-shadow:none;color:#909090}.annotator-adder{background-image:url(img/annotator-icon-sprite.png);background-repeat:no-repeat}.annotator-editor a:after,.annotator-filter .annotator-filter-navigation button:after,.annotator-filter .annotator-filter-property .annotator-filter-clear,.annotator-resize,.annotator-viewer .annotator-controls a,.annotator-viewer .annotator-controls button,.annotator-widget:after{background-image:url(img/annotator-glyph-sprite.png);background-repeat:no-repeat}.annotator-hl{background:#ffff0a;background:rgba(255,255,10,.3);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4DFFFF0A, endColorstr=#4DFFFF0A)"}.annotator-hl-temporary{background:#007cff;background:rgba(0,124,255,.3);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4D007CFF, endColorstr=#4D007CFF)"}.annotator-wrapper{position:relative}.annotator-adder,.annotator-notice,.annotator-outer{z-index:1020}.annotator-filter{z-index:1010}.annotator-adder,.annotator-notice,.annotator-outer,.annotator-widget{position:absolute;font-size:10px;line-height:1}.annotator-hide{display:none;visibility:hidden}.annotator-adder{margin-top:-48px;margin-left:-24px;width:48px;height:48px;background-position:0 0}.annotator-adder:hover{background-position:top}.annotator-adder:active{background-position:100%}.annotator-adder button{display:block;width:36px;height:41px;margin:0 auto;border:none;background:none;text-indent:-999em;cursor:pointer}.annotator-outer{width:0;height:0}.annotator-widget{margin:0;padding:0;bottom:15px;left:-18px;min-width:265px;background-color:#fbfbfb;background-color:hsla(0,0%,98%,.98);border:1px solid #7a7a7a;border:1px solid hsla(0,0%,48%,.6);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.2);-moz-box-shadow:0 5px 15px rgba(0,0,0,.2);-o-box-shadow:0 5px 15px rgba(0,0,0,.2);box-shadow:0 5px 15px rgba(0,0,0,.2)}.annotator-invert-x .annotator-widget{left:auto;right:-18px}.annotator-invert-y .annotator-widget{bottom:auto;top:8px}.annotator-widget strong{font-weight:700}.annotator-widget .annotator-item,.annotator-widget .annotator-listing{padding:0;margin:0;list-style:none}.annotator-widget:after{content:"";display:block;width:18px;height:10px;background-position:0 0;position:absolute;bottom:-10px;left:8px}.annotator-invert-x .annotator-widget:after{left:auto;right:8px}.annotator-invert-y .annotator-widget:after{background-position:0 -15px;bottom:auto;top:-9px}.annotator-editor .annotator-item input,.annotator-editor .annotator-item textarea,.annotator-widget .annotator-item{position:relative;font-size:12px}.annotator-viewer .annotator-item{border-top:2px solid #7a7a7a;border-top:2px solid hsla(0,0%,48%,.2)}.annotator-widget .annotator-item:first-child{border-top:none}.annotator-editor .annotator-item,.annotator-viewer div{border-top:1px solid #858585;border-top:1px solid hsla(0,0%,52%,.11)}.annotator-viewer div{padding:6px}.annotator-viewer .annotator-item ol,.annotator-viewer .annotator-item ul{padding:4px 16px}.annotator-editor .annotator-item:first-child textarea,.annotator-viewer div:first-of-type{padding-top:12px;padding-bottom:12px;color:#3c3c3c;font-size:13px;font-style:italic;line-height:1.3;border-top:none}.annotator-viewer .annotator-controls{position:relative;top:5px;right:5px;padding-left:5px;opacity:0;-webkit-transition:opacity .2s ease-in;-moz-transition:opacity .2s ease-in;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in;float:right}.annotator-viewer li .annotator-controls.annotator-visible,.annotator-viewer li:hover .annotator-controls{opacity:1}.annotator-viewer .annotator-controls a,.annotator-viewer .annotator-controls button{cursor:pointer;display:inline-block;width:13px;height:13px;margin-left:2px;border:none;opacity:.2;text-indent:-900em;background-color:transparent;outline:none}.annotator-viewer .annotator-controls a:focus,.annotator-viewer .annotator-controls a:hover,.annotator-viewer .annotator-controls button:focus,.annotator-viewer .annotator-controls button:hover{opacity:.9}.annotator-viewer .annotator-controls a:active,.annotator-viewer .annotator-controls button:active{opacity:1}.annotator-viewer .annotator-controls button[disabled]{display:none}.annotator-viewer .annotator-controls .annotator-edit{background-position:0 -60px}.annotator-viewer .annotator-controls .annotator-delete{background-position:0 -75px}.annotator-viewer .annotator-controls .annotator-link{background-position:0 -270px}.annotator-editor .annotator-item{position:relative}.annotator-editor .annotator-item label{top:0;display:inline;cursor:pointer;font-size:12px}.annotator-editor .annotator-item input,.annotator-editor .annotator-item textarea{display:block;min-width:100%;padding:10px 8px;border:none;margin:0;color:#3c3c3c;background:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;resize:none}.annotator-editor .annotator-item textarea::-webkit-scrollbar{height:8px;width:8px}.annotator-editor .annotator-item textarea::-webkit-scrollbar-track-piece{margin:13px 0 3px;background-color:#e5e5e5;-webkit-border-radius:4px}.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:vertical{height:25px;background-color:#ccc;-webkit-border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1)}.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:horizontal{width:25px;background-color:#ccc;-webkit-border-radius:4px}.annotator-editor .annotator-item:first-child textarea{min-height:5.5em;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.annotator-editor .annotator-item input:focus,.annotator-editor .annotator-item textarea:focus{background-color:#f3f3f3;outline:none}.annotator-editor .annotator-item input[type=checkbox],.annotator-editor .annotator-item input[type=radio]{width:auto;min-width:0;padding:0;display:inline;margin:0 4px 0 0;cursor:pointer}.annotator-editor .annotator-checkbox{padding:8px 6px}.annotator-editor .annotator-controls,.annotator-filter,.annotator-filter .annotator-filter-navigation button{text-align:right;padding:3px;border-top:1px solid #d4d4d4;background-color:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),color-stop(.6,#dcdcdc),to(#d2d2d2));background-image:-moz-linear-gradient(to bottom,#f5f5f5,#dcdcdc 60%,#d2d2d2);background-image:-webkit-linear-gradient(180deg,#f5f5f5,#dcdcdc 60%,#d2d2d2);background-image:linear-gradient(180deg,#f5f5f5,#dcdcdc 60%,#d2d2d2);-webkit-box-shadow:inset 1px 0 0 hsla(0,0%,100%,.7),inset -1px 0 0 hsla(0,0%,100%,.7),inset 0 1px 0 hsla(0,0%,100%,.7);-moz-box-shadow:inset 1px 0 0 hsla(0,0%,100%,.7),inset -1px 0 0 hsla(0,0%,100%,.7),inset 0 1px 0 hsla(0,0%,100%,.7);-o-box-shadow:inset 1px 0 0 hsla(0,0%,100%,.7),inset -1px 0 0 hsla(0,0%,100%,.7),inset 0 1px 0 hsla(0,0%,100%,.7);box-shadow:inset 1px 0 0 hsla(0,0%,100%,.7),inset -1px 0 0 hsla(0,0%,100%,.7),inset 0 1px 0 hsla(0,0%,100%,.7);-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.annotator-editor.annotator-invert-y .annotator-controls{border-top:none;border-bottom:1px solid #b4b4b4;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.annotator-editor a,.annotator-filter .annotator-filter-property label{position:relative;display:inline-block;padding:0 6px 0 22px;color:#363636;text-shadow:0 1px 0 hsla(0,0%,100%,.75);text-decoration:none;line-height:24px;font-size:12px;font-weight:700;border:1px solid #a2a2a2;background-color:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),color-stop(.5,#d2d2d2),color-stop(.5,#bebebe),to(#d2d2d2));background-image:-moz-linear-gradient(to bottom,#f5f5f5,#d2d2d2 50%,#bebebe 50%,#d2d2d2);background-image:-webkit-linear-gradient(180deg,#f5f5f5,#d2d2d2 50%,#bebebe 0,#d2d2d2);background-image:linear-gradient(180deg,#f5f5f5,#d2d2d2 50%,#bebebe 0,#d2d2d2);-webkit-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-moz-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-o-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px}.annotator-editor a:after{position:absolute;top:50%;left:5px;display:block;content:"";width:15px;height:15px;margin-top:-7px;background-position:0 -90px}.annotator-editor a.annotator-focus,.annotator-editor a:focus,.annotator-editor a:hover,.annotator-filter .annotator-filter-active label,.annotator-filter .annotator-filter-navigation button:hover{outline:none;border-color:#435aa0;background-color:#3865f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#7691fb),color-stop(.5,#5075fb),color-stop(.5,#3865f9),to(#3665fa));background-image:-moz-linear-gradient(to bottom,#7691fb,#5075fb 50%,#3865f9 50%,#3665fa);background-image:-webkit-linear-gradient(180deg,#7691fb,#5075fb 50%,#3865f9 0,#3665fa);background-image:linear-gradient(180deg,#7691fb,#5075fb 50%,#3865f9 0,#3665fa);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.42)}.annotator-editor a:focus:after,.annotator-editor a:hover:after{margin-top:-8px;background-position:0 -105px}.annotator-editor a:active,.annotator-filter .annotator-filter-navigation button:active{border-color:#700c49;background-color:#d12e8e;background-image:-webkit-gradient(linear,left top,left bottom,from(#fc7cca),color-stop(.5,#e85db2),color-stop(.5,#d12e8e),to(#ff009c));background-image:-moz-linear-gradient(to bottom,#fc7cca,#e85db2 50%,#d12e8e 50%,#ff009c);background-image:-webkit-linear-gradient(180deg,#fc7cca,#e85db2 50%,#d12e8e 0,#ff009c);background-image:linear-gradient(180deg,#fc7cca,#e85db2 50%,#d12e8e 0,#ff009c)}.annotator-editor a.annotator-save:after{background-position:0 -120px}.annotator-editor a.annotator-save.annotator-focus:after,.annotator-editor a.annotator-save:focus:after,.annotator-editor a.annotator-save:hover:after{margin-top:-8px;background-position:0 -135px}.annotator-editor .annotator-widget:after{background-position:0 -30px}.annotator-editor.annotator-invert-y .annotator-widget .annotator-controls{background-color:#f2f2f2}.annotator-editor.annotator-invert-y .annotator-widget:after{background-position:0 -45px;height:11px}.annotator-resize{position:absolute;top:0;right:0;width:12px;height:12px;background-position:2px -150px}.annotator-invert-x .annotator-resize{right:auto;left:0;background-position:0 -195px}.annotator-invert-y .annotator-resize{top:auto;bottom:0;background-position:2px -165px}.annotator-invert-y.annotator-invert-x .annotator-resize{background-position:0 -180px}.annotator-notice{color:#fff;position:fixed;top:-54px;left:0;width:100%;font-size:14px;line-height:50px;text-align:center;background:#000;background:rgba(0,0,0,.9);border-bottom:4px solid #d4d4d4;-webkit-transition:top .4s ease-out;-moz-transition:top .4s ease-out;-o-transition:top .4s ease-out;transition:top .4s ease-out}.annotator-notice-success{border-color:#3665f9}.annotator-notice-error{border-color:#ff7e00}.annotator-notice p{margin:0}.annotator-notice a{color:#fff}.annotator-notice-show{top:0}.annotator-tags{margin-bottom:-2px}.annotator-tags .annotator-tag{display:inline-block;padding:0 8px;margin-bottom:2px;line-height:1.6;font-weight:700;background-color:#e6e6e6;-webkit-border-radius:8px;-moz-border-radius:8px;-o-border-radius:8px;border-radius:8px}.annotator-filter{position:fixed;top:0;right:0;left:0;text-align:left;line-height:0;border:none;border-bottom:1px solid #878787;padding-left:10px;padding-right:10px;-webkit-border-radius:0;-moz-border-radius:0;-o-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.3);-moz-box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.3);-o-box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.3);box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.3)}.annotator-filter strong{font-size:12px;font-weight:700;color:#3c3c3c;text-shadow:0 1px 0 hsla(0,0%,100%,.7);position:relative;top:-9px}.annotator-filter .annotator-filter-navigation,.annotator-filter .annotator-filter-property{position:relative;display:inline-block;overflow:hidden;line-height:10px;padding:2px 0;margin-right:8px}.annotator-filter .annotator-filter-navigation button,.annotator-filter .annotator-filter-property label{text-align:left;display:block;float:left;line-height:20px;-webkit-border-radius:10px 0 0 10px;-moz-border-radius:10px 0 0 10px;-o-border-radius:10px 0 0 10px;border-radius:10px 0 0 10px}.annotator-filter .annotator-filter-property label{padding-left:8px}.annotator-filter .annotator-filter-property input{display:block;float:right;-webkit-appearance:none;background-color:#fff;border:1px solid #878787;border-left:none;padding:2px 4px;line-height:16px;min-height:16px;font-size:12px;width:150px;color:#333;background-color:#f8f8f8;-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);-o-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px rgba(0,0,0,.2)}.annotator-filter .annotator-filter-property input:focus{outline:none;background-color:#fff}.annotator-filter .annotator-filter-clear{position:absolute;right:3px;top:6px;border:none;text-indent:-900em;width:15px;height:15px;background-position:0 -90px;opacity:.4}.annotator-filter .annotator-filter-clear:focus,.annotator-filter .annotator-filter-clear:hover{opacity:.8}.annotator-filter .annotator-filter-clear:active{opacity:1}.annotator-filter .annotator-filter-navigation button{border:1px solid #a2a2a2;padding:0;text-indent:-900px;width:20px;min-height:22px;-webkit-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-moz-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-o-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8)}.annotator-filter .annotator-filter-navigation button,.annotator-filter .annotator-filter-navigation button:focus,.annotator-filter .annotator-filter-navigation button:hover{color:transparent}.annotator-filter .annotator-filter-navigation button:after{position:absolute;top:8px;left:8px;content:"";display:block;width:9px;height:9px;background-position:0 -210px}.annotator-filter .annotator-filter-navigation button:hover:after{background-position:0 -225px}.annotator-filter .annotator-filter-navigation .annotator-filter-next{-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;border-left:none}.annotator-filter .annotator-filter-navigation .annotator-filter-next:after{left:auto;right:7px;background-position:0 -240px}.annotator-filter .annotator-filter-navigation .annotator-filter-next:hover:after{background-position:0 -255px}.annotator-hl-active{background:#ffff0a;background:rgba(255,255,10,.8);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#CCFFFF0A, endColorstr=#CCFFFF0A)"}.annotator-hl-filtered{background-color:transparent}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(fonts/MaterialIcons-Regular.eot);src:local("Material Icons"),local("MaterialIcons-Regular"),url(fonts/MaterialIcons-Regular.woff2) format("woff2"),url(fonts/MaterialIcons-Regular.woff) format("woff"),url(fonts/MaterialIcons-Regular.ttf) format("truetype")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}@font-face{font-family:Lato;font-weight:100;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-hairline.woff2) format("woff2"),url(fonts/lato-hairline.woff) format("woff")}@font-face{font-family:Lato;font-weight:100;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-hairline-italic.woff2) format("woff2"),url(fonts/lato-hairline-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:200;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-thin.woff2) format("woff2"),url(fonts/lato-thin.woff) format("woff")}@font-face{font-family:Lato;font-weight:200;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-thin-italic.woff2) format("woff2"),url(fonts/lato-thin-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:300;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-light.woff2) format("woff2"),url(fonts/lato-light.woff) format("woff")}@font-face{font-family:Lato;font-weight:300;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-light-italic.woff2) format("woff2"),url(fonts/lato-light-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:400;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-normal.woff2) format("woff2"),url(fonts/lato-normal.woff) format("woff")}@font-face{font-family:Lato;font-weight:400;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-normal-italic.woff2) format("woff2"),url(fonts/lato-normal-italic.woff) format("woff")}@font-face{font-family:Lato Medium;font-weight:400;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-medium.woff2) format("woff2"),url(fonts/lato-medium.woff) format("woff")}@font-face{font-family:Lato Medium;font-weight:400;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-medium-italic.woff2) format("woff2"),url(fonts/lato-medium-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:500;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-semibold.woff2) format("woff2"),url(fonts/lato-semibold.woff) format("woff")}@font-face{font-family:Lato;font-weight:500;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-semibold-italic.woff2) format("woff2"),url(fonts/lato-semibold-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:600;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-bold.woff2) format("woff2"),url(fonts/lato-bold.woff) format("woff")}@font-face{font-family:Lato;font-weight:600;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-bold-italic.woff2) format("woff2"),url(fonts/lato-bold-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:800;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-heavy.woff2) format("woff2"),url(fonts/lato-heavy.woff) format("woff")}@font-face{font-family:Lato;font-weight:800;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-heavy-italic.woff2) format("woff2"),url(fonts/lato-heavy-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:900;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-black.woff2) format("woff2"),url(fonts/lato-black.woff) format("woff")}@font-face{font-family:Lato;font-weight:900;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-black-italic.woff2) format("woff2"),url(fonts/lato-black-italic.woff) format("woff")}.material-icons.md-18{font-size:18px}.material-icons.md-24{font-size:24px}.material-icons.md-36{font-size:36px}.material-icons.md-48{font-size:48px}.material-icons.md-dark{color:rgba(0,0,0,.54)}.material-icons.md-dark.md-inactive{color:rgba(0,0,0,.26)}.material-icons.md-light{color:#fff}.material-icons.md-light.md-inactive{color:hsla(0,0%,100%,.3)}.hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-built_in,.hljs-class .hljs-title{color:#c18401}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}#article{font-size:20px;margin:0 auto;max-width:45em}#article article{color:#424242;font-size:18px;line-height:1.7em;overflow-wrap:break-word}#article article h1,#article article h2,#article article h3,#article article h4,#article article h5,#article article h6{color:#212121}#article article h1 strong,#article article h2 strong,#article article h3 strong,#article article h4 strong,#article article h5 strong,#article article h6 strong{font-weight:500}#article article h6{font-size:1.2rem}#article article h5{font-size:1.6rem}#article article h4{font-size:1.9rem}#article article h3{font-size:2.2rem}#article article h2{font-size:2.5rem}#article article h1{font-size:2.7rem}#article article a{border-bottom:1px dotted #03a9f4;text-decoration:none}#article article a:hover{border-bottom-style:solid}#article article ul{padding-left:30px}#article article ul,#article article ul li{list-style-type:disc}#article article blockquote{font-style:italic}#article article strong{font-weight:700}#article figure,#article img{max-width:100%;height:auto}#article pre{box-sizing:border-box;margin:0 0 1.75em;border:1px solid #e3f2fd;width:100%;padding:10px;font-family:monospace;font-size:.8em;white-space:pre;overflow:auto;background:#f5f5f5;border-radius:3px}#article>header>h1{font-size:2em;margin:2.1rem 0 .68rem}#article aside .tools{display:flex;flex-flow:row wrap}#article aside .tools .stats{font-size:.8em;margin:8px 5px 5px}#article aside .tools .stats li{display:inline-flex;vertical-align:middle;margin:3px 5px}#article aside .tools .stats li i.material-icons{color:#3e3e3e;margin-right:3px}#article aside .tools .stats a{color:#000;text-decoration:none}#article aside .tools .tags{float:right;margin:5px 15px 10px}#article aside .chip{background-color:rgba(0,151,167,.85);padding:0 15px 0 10px;margin:auto 2px;border-radius:6px}#article aside .chip a,#article aside .chip i{color:#fff}#article aside .chip i.material-icons{float:right;font-size:20px;line-height:32px;padding-left:8px}.reader-mode{width:70px!important;transition:width .2s ease}.reader-mode .collapsible-body{height:0;overflow:hidden}.reader-mode span{opacity:0;transition:opacity .2s ease}.reader-mode:hover{width:260px!important}.reader-mode:hover .collapsible-body{height:auto}.reader-mode:hover .collapsible-body li a i.material-icons{margin:auto 5px auto -8px}.reader-mode:hover span{opacity:1}.progress{position:fixed;top:0;width:100%;height:3px;margin:0;z-index:9999}main #content{padding:0 .5rem}main ul.row{margin:.4rem 0 0;padding:0 .75rem}.data .card .card-body{height:19em;overflow:hidden}.card .card-content .card-title,.card .card-reveal .card-title{line-height:22.8px;max-height:80px;font-size:19px;font-family:roberto,Helvetica Neue,Helvetica,Arial,sans-serif}.card .card-stacked .card-content .card-title{display:inline-block}.card .card-content .activator,.card .card-reveal .activator{cursor:pointer;font-family:Material Icons}.card .card-content i.right,.card .card-reveal i.right{margin-left:0}.card .card-content .original{line-height:24px;font-size:15px}.card .card-entry-labels{position:absolute;top:10px;z-index:90;max-width:50%}.card .card-entry-labels-hidden{margin:2.5px auto}.card .card-entry-labels-hidden li{display:inline-block;background-color:rgba(0,151,167,.85);margin:0 5px;padding:5px 12px;border-radius:3px;color:#fff;max-height:2em;max-width:calc(100% - 15px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .card-content .estimatedTime{margin-bottom:10px}.card .card-action{padding:10px 5px 10px 15px}.card .card-action ul.links{margin:0;font-size:24px;line-height:24px}.card .card-action a{color:#fff;margin:0}.card .card-action a:hover{color:#fff}.card .card-action ul.tools li a.tool{margin-right:5px!important}.card .card-action .reading-time{display:inline-flex;vertical-align:middle}.card .card-action .reading-time .card-created-at,.card .card-action .reading-time .card-reading-time{display:inline-flex}.card .card-action .reading-time span{margin-right:5px}.card .card-image{height:10em}.card .card-fullimage{height:13.5em}.card.sw{max-width:370px;margin-left:auto;margin-right:auto}a.original:not(.waves-effect){text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block}.card-stacked .preview,.card .card-fullimage .preview,.card .card-image .preview{height:100%;background:no-repeat 50%/cover;background-color:#efefef;display:block}.card-stacked .preview--default,.card .card-fullimage .preview--default,.card .card-image .preview--default{background-size:contain}.card-entry-labels li,.card-tag-labels li{margin:10px 10px 10px auto;padding:5px 12px 5px 16px!important;background-color:rgba(0,151,167,.85);border-radius:3px;color:#fff;cursor:default}.card-entry-labels li{text-overflow:ellipsis;white-space:nowrap;border-radius:0 3px 3px 0;overflow:hidden}.card-tag-labels li{display:flex;justify-content:space-between}#list .chip a,.card-entry-labels-hidden a,.card-entry-labels a,.card-entry-tags a,.card-tag-labels a{text-decoration:none;font-weight:400;color:#fff}.card-tag-labels a{height:100%;align-items:center}.card-tag-form,.card-tag-link{display:flex;min-width:100px;flex-grow:1}.card-tag-form input{margin-bottom:0;height:2rem}.card-tag-rss{display:flex}.card-tag-labels{display:flex;flex-wrap:wrap}.card-tag-labels li{margin:10px;flex-basis:19%;flex-grow:1;align-items:center}.card-stacked{display:flex;flex-flow:row wrap}.card-stacked:hover ul.tools-list{display:inline;text-align:right}.card-stacked .card-preview{max-width:100px;max-height:50px;margin-right:10px;flex:1}.card-stacked div.metadata .chip{background-color:rgba(0,151,167,.85);padding:0 7px;margin:auto 2px;border-radius:6px;line-height:22px;height:22px}.card-stacked div.metadata .chip a,.card-stacked div.metadata .chip i{color:#fff}.card-stacked div.metadata .chip i.material-icons{float:right;font-size:20px;line-height:32px;padding-left:8px}.card-stacked div.card-content{flex:4}.card-stacked ul.tools-list{flex:1;display:none;flex-basis:5em;align-self:flex-end;float:right;max-width:6em}.card-stacked .tags{display:inline-block}#content .collection .collection-item{min-height:65px;height:auto}.quickstart .card .card-action a,.quickstart .card .card-action a:hover{color:#fff!important}.settings .div_tabs{padding-bottom:15px}.collection{margin:15px 15px 0}.collection .collection-item{padding:7px;height:65px}.results{display:flex;padding:1rem 1rem 0;flex-wrap:wrap;justify-content:space-between}.results .nb-results{display:inline-flex}.results a{color:#444}.pagination ul{display:flex;margin:0;flex-wrap:wrap;justify-content:space-around}.pagination ul .next.disabled,.pagination ul .prev.disabled{display:none}.pagination li{padding:0}.pagination a,.pagination span{padding:0 10px;height:30px;display:block;line-height:30px}.pagination .disabled{margin-right:10px;margin-left:10px}.pagination li.active span{padding:0 10px;height:30px;display:block;color:#fff}.footer-text{margin:.7rem .5rem}.hidden,.picker__date-display{display:none}footer.page-footer{margin-top:10px;padding-top:0}footer .row{margin-bottom:10px}#filters button{padding:0;width:100%}#filters div.with-checkbox{height:3rem;margin-top:0}body{display:flex;min-height:100vh;flex-direction:column;background:#fafafa}body.login main{padding:0;min-height:100vh}.border-bottom{border-bottom:1px solid #ddd}#content,.valign-wrapper,main{height:100%}.typo-logo{max-width:150px}#main{flex:1 0 auto}#main .logo a{height:100pt}#main .logo img{height:100pt;width:100pt}#main .logo:hover{background:transparent}nav{height:auto;line-height:normal}nav input{color:#aaa}nav ul a:hover{background-color:initial}.nav-panel-item .button-collapse{margin-left:0;margin-right:.5rem;padding:0 .5rem;height:auto;line-height:1;background-color:transparent;border:none}.nav-panel-item{display:flex;padding:.6rem .4rem .6rem .75rem;flex-wrap:wrap;justify-content:space-between;align-items:center}.nav-panel-item .material-icons{height:46px;line-height:46px}.nav-input{display:none}.nav-panel-buttom{display:flex;flex-grow:1;justify-content:flex-end}.nav-panel-item .add,.nav-panel-item .search,.nav-panels .close{color:#444!important}.nav-panels{transition:background .2s ease}.nav-panels .action{margin:0;font-size:2.1rem}.nav-panels .input-field input{display:block;line-height:inherit;height:3rem}.nav-panels .input-field input:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.nav-panel-top{display:flex;align-items:center}.input-field.nav-panel-item label{left:1rem}.input-field.nav-panel-item .close{color:transparent;cursor:pointer;font-size:2rem;transition:color .3s}.input-field.nav-panel-item{display:flex;flex:1;flex-wrap:nowrap;align-items:center}.input-field.nav-panel-add.disabled,.input-field.nav-panel-add.disabled input{background-color:#f5f5f5}.nav-form-button{padding:0;background-color:transparent;border:none}.nav-form-button:focus{background-color:inherit}.nav-form-button,.nav-panel-item .close{margin:0 1%}#button_export,#button_filters{display:none}@media (min-width:993px){.button-collapse{display:none}}.side-nav{width:240px}.side-nav li{padding:0}.side-nav li.logo>a:hover{background:initial}.side-nav a{margin:0}.side-nav.fixed a{font-size:13px;line-height:44px;height:44px}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{height:45px;line-height:44px;padding:0 20px}.side-nav>li.logo{line-height:0;text-align:center}.bold>a{font-weight:700}span.numberItems{float:right}div.settings div.file-field div,div.settings div.file-field ul{margin-top:40px}div.settings div.file-field div{margin-top:inherit}.input-field label.active{font-size:1rem}nav .input-field input{margin:0;padding-left:.5rem}.tabs{display:flex}.tab{flex:1}@font-face{font-family:icomoon;src:url(fonts/IcoMoon-Free.ttf);font-weight:400;font-style:normal}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;width:1em;height:1em;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}.material-icons .md-18{font-size:18px}.material-icons .md-24{font-size:24px}.material-icons .md-36{font-size:36px}.material-icons .md-48{font-size:48px}.material-icons .md-dark{color:rgba(0,0,0,.54)}.material-icons .md-dark .md-inactive{color:rgba(0,0,0,.26)}.material-icons .md-light{color:#fff}.material-icons .md-light .md-inactive{color:hsla(0,0%,100%,.3)}[class*=" icon-"]:before,[class^=icon-]:before{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;background-size:24px;letter-spacing:0;font-feature-settings:"liga"}.icon-eye:before{content:"\E9CE"}.icon-no-eye:before{content:"\E9D1"}.icon-calendar:before{content:"\E953"}.icon-mail:before{content:"\EA86"}.icon-time:before{content:"\E952"}a.icon-image{background-repeat:no-repeat;padding-right:.4em!important;padding-left:0!important;margin-left:25px}a.icon-image:before{content:"";display:block;width:24px;height:24px;float:left;margin:7px 1.5px 0 0}a.icon-image.carrot:before{background:url(themes/_global/img/icons/carrot-icon--black.png) no-repeat 50%/90%}a.icon-image.diaspora:before{background:url(themes/_global/img/icons/diaspora-icon--black.png) no-repeat 50%/80%}a.icon-image.unmark:before{background:url(themes/_global/img/icons/unmark-icon--black.png) no-repeat 50%/80%}a.icon-image.shaarli:before{background:url(themes/_global/img/icons/shaarli.png) no-repeat 50%/80%}a.icon-image.scuttle:before{background:url(themes/_global/img/icons/scuttle.png) no-repeat 50%/80%}.icon-google-plus2:before{content:"\EA89"}.icon-facebook2:before{content:"\EA8D"}.icon-twitter:before{content:"\EA96"}.icon-apple:before{content:"\EABF"}.icon-android:before{content:"\EAC1"}.icon-chrome:before{content:"\EAE5"}.icon-firefox:before{content:"\EAE6"}.icon-link:before{content:"\E9CB"}footer [class*=" icon-"],footer [class^=icon-]{font-size:2em;transition:text-shadow .2s ease;padding-right:10px}footer [class*=" icon-"]:hover,footer [class^=icon-]:hover{text-shadow:0 0 10px rgba(0,0,0,.3)}@media print{body{font-family:Serif;background-color:#fff}@page{margin:1cm}img{max-width:100%!important}#article .mbm a,#article>aside,#article_toolbar,#links,#slide-out,#sort,.entry+.results,.hide-on-large-only,.messages,.progress,.top_link,body>footer,body>header,div.tools,header div{display:none!important}main{padding-left:0!important}#article{margin:inherit!important}article{border:none!important}.vieworiginal a:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.pagination span.current{border-style:dashed}#main{margin:0;padding:0}#article,#main{width:100%}}@media only screen and (min-width:992px){body:not(.entry):not(.login) main,footer,nav{padding-left:240px}.pagination{margin-left:auto}.card-tag-labels li{max-width:50%}}@media screen and (min-width:993px){body.entry main #content{padding-left:70px}}@media only screen and (max-width:992px){footer,header,main,nav{padding-left:0}table{display:block;overflow:auto}iframe{max-width:100%;height:auto}.nav-panels .action{padding-right:.75rem}.nav-panel-buttom{justify-content:space-between}#article{max-width:35em;margin-left:auto;margin-right:auto;font-size:18px}#article>header>h1{font-size:1.33em}.reader-mode{width:240px!important}.reader-mode span{opacity:1}.tabs{display:inline-block;height:auto}.tab{min-width:100%}.indicator{display:none}.pagination li{margin-bottom:.5rem}.pagination li.next,.pagination li.prev{width:auto}.drag-target+.drag-target{height:50%}.drag-target+.drag-target+.drag-target{top:50%}}@media only screen and (min-width:1200px) and (max-width:1650px){.row .col.l3{width:33.33333%;margin-left:0}}@media only screen and (min-width:993px) and (max-width:1200px){.row .col.l1{width:25%;margin-left:0}.row .col.l2{width:33.33333%;margin-left:0}.row .col.l3{width:41.66667%;margin-left:0}.row .col.l4{width:50%;margin-left:0}.row .col.l5{width:58.33333%;margin-left:0}.row .col.l6{width:66.66667%;margin-left:0}.row .col.l7{width:75%;margin-left:0}.row .col.l8{width:83.33333%;margin-left:0}.row .col.l9{width:91.66667%;margin-left:0}.row .col.l10{width:100%;margin-left:0}}@media only screen and (max-width:350px){.nb-results{display:none}.row .col,main ul.row{padding:0}}@media screen and (max-width:310px),screen and (min-width:601px) and (max-width:660px),screen and (min-width:993px) and (max-width:1050px),screen and (min-width:1201px) and (max-width:1250px){.card .card-action .reading-time .card-created-at{display:none}} | 1 | .materialize-red{background-color:#e51c23!important}.materialize-red-text{color:#e51c23!important}.materialize-red.lighten-5{background-color:#fdeaeb!important}.materialize-red-text.text-lighten-5{color:#fdeaeb!important}.materialize-red.lighten-4{background-color:#f8c1c3!important}.materialize-red-text.text-lighten-4{color:#f8c1c3!important}.materialize-red.lighten-3{background-color:#f3989b!important}.materialize-red-text.text-lighten-3{color:#f3989b!important}.materialize-red.lighten-2{background-color:#ee6e73!important}.materialize-red-text.text-lighten-2{color:#ee6e73!important}.materialize-red.lighten-1{background-color:#ea454b!important}.materialize-red-text.text-lighten-1{color:#ea454b!important}.materialize-red.darken-1{background-color:#d0181e!important}.materialize-red-text.text-darken-1{color:#d0181e!important}.materialize-red.darken-2{background-color:#b9151b!important}.materialize-red-text.text-darken-2{color:#b9151b!important}.materialize-red.darken-3{background-color:#a21318!important}.materialize-red-text.text-darken-3{color:#a21318!important}.materialize-red.darken-4{background-color:#8b1014!important}.materialize-red-text.text-darken-4{color:#8b1014!important}.red{background-color:#f44336!important}.red-text{color:#f44336!important}.red.lighten-5{background-color:#ffebee!important}.red-text.text-lighten-5{color:#ffebee!important}.red.lighten-4{background-color:#ffcdd2!important}.red-text.text-lighten-4{color:#ffcdd2!important}.red.lighten-3{background-color:#ef9a9a!important}.red-text.text-lighten-3{color:#ef9a9a!important}.red.lighten-2{background-color:#e57373!important}.red-text.text-lighten-2{color:#e57373!important}.red.lighten-1{background-color:#ef5350!important}.red-text.text-lighten-1{color:#ef5350!important}.red.darken-1{background-color:#e53935!important}.red-text.text-darken-1{color:#e53935!important}.red.darken-2{background-color:#d32f2f!important}.red-text.text-darken-2{color:#d32f2f!important}.red.darken-3{background-color:#c62828!important}.red-text.text-darken-3{color:#c62828!important}.red.darken-4{background-color:#b71c1c!important}.red-text.text-darken-4{color:#b71c1c!important}.red.accent-1{background-color:#ff8a80!important}.red-text.text-accent-1{color:#ff8a80!important}.red.accent-2{background-color:#ff5252!important}.red-text.text-accent-2{color:#ff5252!important}.red.accent-3{background-color:#ff1744!important}.red-text.text-accent-3{color:#ff1744!important}.red.accent-4{background-color:#d50000!important}.red-text.text-accent-4{color:#d50000!important}.pink{background-color:#e91e63!important}.pink-text{color:#e91e63!important}.pink.lighten-5{background-color:#fce4ec!important}.pink-text.text-lighten-5{color:#fce4ec!important}.pink.lighten-4{background-color:#f8bbd0!important}.pink-text.text-lighten-4{color:#f8bbd0!important}.pink.lighten-3{background-color:#f48fb1!important}.pink-text.text-lighten-3{color:#f48fb1!important}.pink.lighten-2{background-color:#f06292!important}.pink-text.text-lighten-2{color:#f06292!important}.pink.lighten-1{background-color:#ec407a!important}.pink-text.text-lighten-1{color:#ec407a!important}.pink.darken-1{background-color:#d81b60!important}.pink-text.text-darken-1{color:#d81b60!important}.pink.darken-2{background-color:#c2185b!important}.pink-text.text-darken-2{color:#c2185b!important}.pink.darken-3{background-color:#ad1457!important}.pink-text.text-darken-3{color:#ad1457!important}.pink.darken-4{background-color:#880e4f!important}.pink-text.text-darken-4{color:#880e4f!important}.pink.accent-1{background-color:#ff80ab!important}.pink-text.text-accent-1{color:#ff80ab!important}.pink.accent-2{background-color:#ff4081!important}.pink-text.text-accent-2{color:#ff4081!important}.pink.accent-3{background-color:#f50057!important}.pink-text.text-accent-3{color:#f50057!important}.pink.accent-4{background-color:#c51162!important}.pink-text.text-accent-4{color:#c51162!important}.purple{background-color:#9c27b0!important}.purple-text{color:#9c27b0!important}.purple.lighten-5{background-color:#f3e5f5!important}.purple-text.text-lighten-5{color:#f3e5f5!important}.purple.lighten-4{background-color:#e1bee7!important}.purple-text.text-lighten-4{color:#e1bee7!important}.purple.lighten-3{background-color:#ce93d8!important}.purple-text.text-lighten-3{color:#ce93d8!important}.purple.lighten-2{background-color:#ba68c8!important}.purple-text.text-lighten-2{color:#ba68c8!important}.purple.lighten-1{background-color:#ab47bc!important}.purple-text.text-lighten-1{color:#ab47bc!important}.purple.darken-1{background-color:#8e24aa!important}.purple-text.text-darken-1{color:#8e24aa!important}.purple.darken-2{background-color:#7b1fa2!important}.purple-text.text-darken-2{color:#7b1fa2!important}.purple.darken-3{background-color:#6a1b9a!important}.purple-text.text-darken-3{color:#6a1b9a!important}.purple.darken-4{background-color:#4a148c!important}.purple-text.text-darken-4{color:#4a148c!important}.purple.accent-1{background-color:#ea80fc!important}.purple-text.text-accent-1{color:#ea80fc!important}.purple.accent-2{background-color:#e040fb!important}.purple-text.text-accent-2{color:#e040fb!important}.purple.accent-3{background-color:#d500f9!important}.purple-text.text-accent-3{color:#d500f9!important}.purple.accent-4{background-color:#a0f!important}.purple-text.text-accent-4{color:#a0f!important}.deep-purple{background-color:#673ab7!important}.deep-purple-text{color:#673ab7!important}.deep-purple.lighten-5{background-color:#ede7f6!important}.deep-purple-text.text-lighten-5{color:#ede7f6!important}.deep-purple.lighten-4{background-color:#d1c4e9!important}.deep-purple-text.text-lighten-4{color:#d1c4e9!important}.deep-purple.lighten-3{background-color:#b39ddb!important}.deep-purple-text.text-lighten-3{color:#b39ddb!important}.deep-purple.lighten-2{background-color:#9575cd!important}.deep-purple-text.text-lighten-2{color:#9575cd!important}.deep-purple.lighten-1{background-color:#7e57c2!important}.deep-purple-text.text-lighten-1{color:#7e57c2!important}.deep-purple.darken-1{background-color:#5e35b1!important}.deep-purple-text.text-darken-1{color:#5e35b1!important}.deep-purple.darken-2{background-color:#512da8!important}.deep-purple-text.text-darken-2{color:#512da8!important}.deep-purple.darken-3{background-color:#4527a0!important}.deep-purple-text.text-darken-3{color:#4527a0!important}.deep-purple.darken-4{background-color:#311b92!important}.deep-purple-text.text-darken-4{color:#311b92!important}.deep-purple.accent-1{background-color:#b388ff!important}.deep-purple-text.text-accent-1{color:#b388ff!important}.deep-purple.accent-2{background-color:#7c4dff!important}.deep-purple-text.text-accent-2{color:#7c4dff!important}.deep-purple.accent-3{background-color:#651fff!important}.deep-purple-text.text-accent-3{color:#651fff!important}.deep-purple.accent-4{background-color:#6200ea!important}.deep-purple-text.text-accent-4{color:#6200ea!important}.indigo{background-color:#3f51b5!important}.indigo-text{color:#3f51b5!important}.indigo.lighten-5{background-color:#e8eaf6!important}.indigo-text.text-lighten-5{color:#e8eaf6!important}.indigo.lighten-4{background-color:#c5cae9!important}.indigo-text.text-lighten-4{color:#c5cae9!important}.indigo.lighten-3{background-color:#9fa8da!important}.indigo-text.text-lighten-3{color:#9fa8da!important}.indigo.lighten-2{background-color:#7986cb!important}.indigo-text.text-lighten-2{color:#7986cb!important}.indigo.lighten-1{background-color:#5c6bc0!important}.indigo-text.text-lighten-1{color:#5c6bc0!important}.indigo.darken-1{background-color:#3949ab!important}.indigo-text.text-darken-1{color:#3949ab!important}.indigo.darken-2{background-color:#303f9f!important}.indigo-text.text-darken-2{color:#303f9f!important}.indigo.darken-3{background-color:#283593!important}.indigo-text.text-darken-3{color:#283593!important}.indigo.darken-4{background-color:#1a237e!important}.indigo-text.text-darken-4{color:#1a237e!important}.indigo.accent-1{background-color:#8c9eff!important}.indigo-text.text-accent-1{color:#8c9eff!important}.indigo.accent-2{background-color:#536dfe!important}.indigo-text.text-accent-2{color:#536dfe!important}.indigo.accent-3{background-color:#3d5afe!important}.indigo-text.text-accent-3{color:#3d5afe!important}.indigo.accent-4{background-color:#304ffe!important}.indigo-text.text-accent-4{color:#304ffe!important}.blue{background-color:#2196f3!important}.blue-text{color:#2196f3!important}.blue.lighten-5{background-color:#e3f2fd!important}.blue-text.text-lighten-5{color:#e3f2fd!important}.blue.lighten-4{background-color:#bbdefb!important}.blue-text.text-lighten-4{color:#bbdefb!important}.blue.lighten-3{background-color:#90caf9!important}.blue-text.text-lighten-3{color:#90caf9!important}.blue.lighten-2{background-color:#64b5f6!important}.blue-text.text-lighten-2{color:#64b5f6!important}.blue.lighten-1{background-color:#42a5f5!important}.blue-text.text-lighten-1{color:#42a5f5!important}.blue.darken-1{background-color:#1e88e5!important}.blue-text.text-darken-1{color:#1e88e5!important}.blue.darken-2{background-color:#1976d2!important}.blue-text.text-darken-2{color:#1976d2!important}.blue.darken-3{background-color:#1565c0!important}.blue-text.text-darken-3{color:#1565c0!important}.blue.darken-4{background-color:#0d47a1!important}.blue-text.text-darken-4{color:#0d47a1!important}.blue.accent-1{background-color:#82b1ff!important}.blue-text.text-accent-1{color:#82b1ff!important}.blue.accent-2{background-color:#448aff!important}.blue-text.text-accent-2{color:#448aff!important}.blue.accent-3{background-color:#2979ff!important}.blue-text.text-accent-3{color:#2979ff!important}.blue.accent-4{background-color:#2962ff!important}.blue-text.text-accent-4{color:#2962ff!important}.light-blue{background-color:#03a9f4!important}.light-blue-text{color:#03a9f4!important}.light-blue.lighten-5{background-color:#e1f5fe!important}.light-blue-text.text-lighten-5{color:#e1f5fe!important}.light-blue.lighten-4{background-color:#b3e5fc!important}.light-blue-text.text-lighten-4{color:#b3e5fc!important}.light-blue.lighten-3{background-color:#81d4fa!important}.light-blue-text.text-lighten-3{color:#81d4fa!important}.light-blue.lighten-2{background-color:#4fc3f7!important}.light-blue-text.text-lighten-2{color:#4fc3f7!important}.light-blue.lighten-1{background-color:#29b6f6!important}.light-blue-text.text-lighten-1{color:#29b6f6!important}.light-blue.darken-1{background-color:#039be5!important}.light-blue-text.text-darken-1{color:#039be5!important}.light-blue.darken-2{background-color:#0288d1!important}.light-blue-text.text-darken-2{color:#0288d1!important}.light-blue.darken-3{background-color:#0277bd!important}.light-blue-text.text-darken-3{color:#0277bd!important}.light-blue.darken-4{background-color:#01579b!important}.light-blue-text.text-darken-4{color:#01579b!important}.light-blue.accent-1{background-color:#80d8ff!important}.light-blue-text.text-accent-1{color:#80d8ff!important}.light-blue.accent-2{background-color:#40c4ff!important}.light-blue-text.text-accent-2{color:#40c4ff!important}.light-blue.accent-3{background-color:#00b0ff!important}.light-blue-text.text-accent-3{color:#00b0ff!important}.light-blue.accent-4{background-color:#0091ea!important}.light-blue-text.text-accent-4{color:#0091ea!important}.cyan{background-color:#00bcd4!important}.cyan-text{color:#00bcd4!important}.cyan.lighten-5{background-color:#e0f7fa!important}.cyan-text.text-lighten-5{color:#e0f7fa!important}.cyan.lighten-4{background-color:#b2ebf2!important}.cyan-text.text-lighten-4{color:#b2ebf2!important}.cyan.lighten-3{background-color:#80deea!important}.cyan-text.text-lighten-3{color:#80deea!important}.cyan.lighten-2{background-color:#4dd0e1!important}.cyan-text.text-lighten-2{color:#4dd0e1!important}.cyan.lighten-1{background-color:#26c6da!important}.cyan-text.text-lighten-1{color:#26c6da!important}.cyan.darken-1{background-color:#00acc1!important}.cyan-text.text-darken-1{color:#00acc1!important}.cyan.darken-2{background-color:#0097a7!important}.cyan-text.text-darken-2{color:#0097a7!important}.cyan.darken-3{background-color:#00838f!important}.cyan-text.text-darken-3{color:#00838f!important}.cyan.darken-4{background-color:#006064!important}.cyan-text.text-darken-4{color:#006064!important}.cyan.accent-1{background-color:#84ffff!important}.cyan-text.text-accent-1{color:#84ffff!important}.cyan.accent-2{background-color:#18ffff!important}.cyan-text.text-accent-2{color:#18ffff!important}.cyan.accent-3{background-color:#00e5ff!important}.cyan-text.text-accent-3{color:#00e5ff!important}.cyan.accent-4{background-color:#00b8d4!important}.cyan-text.text-accent-4{color:#00b8d4!important}.teal{background-color:#009688!important}.teal-text{color:#009688!important}.teal.lighten-5{background-color:#e0f2f1!important}.teal-text.text-lighten-5{color:#e0f2f1!important}.teal.lighten-4{background-color:#b2dfdb!important}.teal-text.text-lighten-4{color:#b2dfdb!important}.teal.lighten-3{background-color:#80cbc4!important}.teal-text.text-lighten-3{color:#80cbc4!important}.teal.lighten-2{background-color:#4db6ac!important}.teal-text.text-lighten-2{color:#4db6ac!important}.teal.lighten-1{background-color:#26a69a!important}.teal-text.text-lighten-1{color:#26a69a!important}.teal.darken-1{background-color:#00897b!important}.teal-text.text-darken-1{color:#00897b!important}.teal.darken-2{background-color:#00796b!important}.teal-text.text-darken-2{color:#00796b!important}.teal.darken-3{background-color:#00695c!important}.teal-text.text-darken-3{color:#00695c!important}.teal.darken-4{background-color:#004d40!important}.teal-text.text-darken-4{color:#004d40!important}.teal.accent-1{background-color:#a7ffeb!important}.teal-text.text-accent-1{color:#a7ffeb!important}.teal.accent-2{background-color:#64ffda!important}.teal-text.text-accent-2{color:#64ffda!important}.teal.accent-3{background-color:#1de9b6!important}.teal-text.text-accent-3{color:#1de9b6!important}.teal.accent-4{background-color:#00bfa5!important}.teal-text.text-accent-4{color:#00bfa5!important}.green{background-color:#4caf50!important}.green-text{color:#4caf50!important}.green.lighten-5{background-color:#e8f5e9!important}.green-text.text-lighten-5{color:#e8f5e9!important}.green.lighten-4{background-color:#c8e6c9!important}.green-text.text-lighten-4{color:#c8e6c9!important}.green.lighten-3{background-color:#a5d6a7!important}.green-text.text-lighten-3{color:#a5d6a7!important}.green.lighten-2{background-color:#81c784!important}.green-text.text-lighten-2{color:#81c784!important}.green.lighten-1{background-color:#66bb6a!important}.green-text.text-lighten-1{color:#66bb6a!important}.green.darken-1{background-color:#43a047!important}.green-text.text-darken-1{color:#43a047!important}.green.darken-2{background-color:#388e3c!important}.green-text.text-darken-2{color:#388e3c!important}.green.darken-3{background-color:#2e7d32!important}.green-text.text-darken-3{color:#2e7d32!important}.green.darken-4{background-color:#1b5e20!important}.green-text.text-darken-4{color:#1b5e20!important}.green.accent-1{background-color:#b9f6ca!important}.green-text.text-accent-1{color:#b9f6ca!important}.green.accent-2{background-color:#69f0ae!important}.green-text.text-accent-2{color:#69f0ae!important}.green.accent-3{background-color:#00e676!important}.green-text.text-accent-3{color:#00e676!important}.green.accent-4{background-color:#00c853!important}.green-text.text-accent-4{color:#00c853!important}.light-green{background-color:#8bc34a!important}.light-green-text{color:#8bc34a!important}.light-green.lighten-5{background-color:#f1f8e9!important}.light-green-text.text-lighten-5{color:#f1f8e9!important}.light-green.lighten-4{background-color:#dcedc8!important}.light-green-text.text-lighten-4{color:#dcedc8!important}.light-green.lighten-3{background-color:#c5e1a5!important}.light-green-text.text-lighten-3{color:#c5e1a5!important}.light-green.lighten-2{background-color:#aed581!important}.light-green-text.text-lighten-2{color:#aed581!important}.light-green.lighten-1{background-color:#9ccc65!important}.light-green-text.text-lighten-1{color:#9ccc65!important}.light-green.darken-1{background-color:#7cb342!important}.light-green-text.text-darken-1{color:#7cb342!important}.light-green.darken-2{background-color:#689f38!important}.light-green-text.text-darken-2{color:#689f38!important}.light-green.darken-3{background-color:#558b2f!important}.light-green-text.text-darken-3{color:#558b2f!important}.light-green.darken-4{background-color:#33691e!important}.light-green-text.text-darken-4{color:#33691e!important}.light-green.accent-1{background-color:#ccff90!important}.light-green-text.text-accent-1{color:#ccff90!important}.light-green.accent-2{background-color:#b2ff59!important}.light-green-text.text-accent-2{color:#b2ff59!important}.light-green.accent-3{background-color:#76ff03!important}.light-green-text.text-accent-3{color:#76ff03!important}.light-green.accent-4{background-color:#64dd17!important}.light-green-text.text-accent-4{color:#64dd17!important}.lime{background-color:#cddc39!important}.lime-text{color:#cddc39!important}.lime.lighten-5{background-color:#f9fbe7!important}.lime-text.text-lighten-5{color:#f9fbe7!important}.lime.lighten-4{background-color:#f0f4c3!important}.lime-text.text-lighten-4{color:#f0f4c3!important}.lime.lighten-3{background-color:#e6ee9c!important}.lime-text.text-lighten-3{color:#e6ee9c!important}.lime.lighten-2{background-color:#dce775!important}.lime-text.text-lighten-2{color:#dce775!important}.lime.lighten-1{background-color:#d4e157!important}.lime-text.text-lighten-1{color:#d4e157!important}.lime.darken-1{background-color:#c0ca33!important}.lime-text.text-darken-1{color:#c0ca33!important}.lime.darken-2{background-color:#afb42b!important}.lime-text.text-darken-2{color:#afb42b!important}.lime.darken-3{background-color:#9e9d24!important}.lime-text.text-darken-3{color:#9e9d24!important}.lime.darken-4{background-color:#827717!important}.lime-text.text-darken-4{color:#827717!important}.lime.accent-1{background-color:#f4ff81!important}.lime-text.text-accent-1{color:#f4ff81!important}.lime.accent-2{background-color:#eeff41!important}.lime-text.text-accent-2{color:#eeff41!important}.lime.accent-3{background-color:#c6ff00!important}.lime-text.text-accent-3{color:#c6ff00!important}.lime.accent-4{background-color:#aeea00!important}.lime-text.text-accent-4{color:#aeea00!important}.yellow{background-color:#ffeb3b!important}.yellow-text{color:#ffeb3b!important}.yellow.lighten-5{background-color:#fffde7!important}.yellow-text.text-lighten-5{color:#fffde7!important}.yellow.lighten-4{background-color:#fff9c4!important}.yellow-text.text-lighten-4{color:#fff9c4!important}.yellow.lighten-3{background-color:#fff59d!important}.yellow-text.text-lighten-3{color:#fff59d!important}.yellow.lighten-2{background-color:#fff176!important}.yellow-text.text-lighten-2{color:#fff176!important}.yellow.lighten-1{background-color:#ffee58!important}.yellow-text.text-lighten-1{color:#ffee58!important}.yellow.darken-1{background-color:#fdd835!important}.yellow-text.text-darken-1{color:#fdd835!important}.yellow.darken-2{background-color:#fbc02d!important}.yellow-text.text-darken-2{color:#fbc02d!important}.yellow.darken-3{background-color:#f9a825!important}.yellow-text.text-darken-3{color:#f9a825!important}.yellow.darken-4{background-color:#f57f17!important}.yellow-text.text-darken-4{color:#f57f17!important}.yellow.accent-1{background-color:#ffff8d!important}.yellow-text.text-accent-1{color:#ffff8d!important}.yellow.accent-2{background-color:#ff0!important}.yellow-text.text-accent-2{color:#ff0!important}.yellow.accent-3{background-color:#ffea00!important}.yellow-text.text-accent-3{color:#ffea00!important}.yellow.accent-4{background-color:#ffd600!important}.yellow-text.text-accent-4{color:#ffd600!important}.amber{background-color:#ffc107!important}.amber-text{color:#ffc107!important}.amber.lighten-5{background-color:#fff8e1!important}.amber-text.text-lighten-5{color:#fff8e1!important}.amber.lighten-4{background-color:#ffecb3!important}.amber-text.text-lighten-4{color:#ffecb3!important}.amber.lighten-3{background-color:#ffe082!important}.amber-text.text-lighten-3{color:#ffe082!important}.amber.lighten-2{background-color:#ffd54f!important}.amber-text.text-lighten-2{color:#ffd54f!important}.amber.lighten-1{background-color:#ffca28!important}.amber-text.text-lighten-1{color:#ffca28!important}.amber.darken-1{background-color:#ffb300!important}.amber-text.text-darken-1{color:#ffb300!important}.amber.darken-2{background-color:#ffa000!important}.amber-text.text-darken-2{color:#ffa000!important}.amber.darken-3{background-color:#ff8f00!important}.amber-text.text-darken-3{color:#ff8f00!important}.amber.darken-4{background-color:#ff6f00!important}.amber-text.text-darken-4{color:#ff6f00!important}.amber.accent-1{background-color:#ffe57f!important}.amber-text.text-accent-1{color:#ffe57f!important}.amber.accent-2{background-color:#ffd740!important}.amber-text.text-accent-2{color:#ffd740!important}.amber.accent-3{background-color:#ffc400!important}.amber-text.text-accent-3{color:#ffc400!important}.amber.accent-4{background-color:#ffab00!important}.amber-text.text-accent-4{color:#ffab00!important}.orange{background-color:#ff9800!important}.orange-text{color:#ff9800!important}.orange.lighten-5{background-color:#fff3e0!important}.orange-text.text-lighten-5{color:#fff3e0!important}.orange.lighten-4{background-color:#ffe0b2!important}.orange-text.text-lighten-4{color:#ffe0b2!important}.orange.lighten-3{background-color:#ffcc80!important}.orange-text.text-lighten-3{color:#ffcc80!important}.orange.lighten-2{background-color:#ffb74d!important}.orange-text.text-lighten-2{color:#ffb74d!important}.orange.lighten-1{background-color:#ffa726!important}.orange-text.text-lighten-1{color:#ffa726!important}.orange.darken-1{background-color:#fb8c00!important}.orange-text.text-darken-1{color:#fb8c00!important}.orange.darken-2{background-color:#f57c00!important}.orange-text.text-darken-2{color:#f57c00!important}.orange.darken-3{background-color:#ef6c00!important}.orange-text.text-darken-3{color:#ef6c00!important}.orange.darken-4{background-color:#e65100!important}.orange-text.text-darken-4{color:#e65100!important}.orange.accent-1{background-color:#ffd180!important}.orange-text.text-accent-1{color:#ffd180!important}.orange.accent-2{background-color:#ffab40!important}.orange-text.text-accent-2{color:#ffab40!important}.orange.accent-3{background-color:#ff9100!important}.orange-text.text-accent-3{color:#ff9100!important}.orange.accent-4{background-color:#ff6d00!important}.orange-text.text-accent-4{color:#ff6d00!important}.deep-orange{background-color:#ff5722!important}.deep-orange-text{color:#ff5722!important}.deep-orange.lighten-5{background-color:#fbe9e7!important}.deep-orange-text.text-lighten-5{color:#fbe9e7!important}.deep-orange.lighten-4{background-color:#ffccbc!important}.deep-orange-text.text-lighten-4{color:#ffccbc!important}.deep-orange.lighten-3{background-color:#ffab91!important}.deep-orange-text.text-lighten-3{color:#ffab91!important}.deep-orange.lighten-2{background-color:#ff8a65!important}.deep-orange-text.text-lighten-2{color:#ff8a65!important}.deep-orange.lighten-1{background-color:#ff7043!important}.deep-orange-text.text-lighten-1{color:#ff7043!important}.deep-orange.darken-1{background-color:#f4511e!important}.deep-orange-text.text-darken-1{color:#f4511e!important}.deep-orange.darken-2{background-color:#e64a19!important}.deep-orange-text.text-darken-2{color:#e64a19!important}.deep-orange.darken-3{background-color:#d84315!important}.deep-orange-text.text-darken-3{color:#d84315!important}.deep-orange.darken-4{background-color:#bf360c!important}.deep-orange-text.text-darken-4{color:#bf360c!important}.deep-orange.accent-1{background-color:#ff9e80!important}.deep-orange-text.text-accent-1{color:#ff9e80!important}.deep-orange.accent-2{background-color:#ff6e40!important}.deep-orange-text.text-accent-2{color:#ff6e40!important}.deep-orange.accent-3{background-color:#ff3d00!important}.deep-orange-text.text-accent-3{color:#ff3d00!important}.deep-orange.accent-4{background-color:#dd2c00!important}.deep-orange-text.text-accent-4{color:#dd2c00!important}.brown{background-color:#795548!important}.brown-text{color:#795548!important}.brown.lighten-5{background-color:#efebe9!important}.brown-text.text-lighten-5{color:#efebe9!important}.brown.lighten-4{background-color:#d7ccc8!important}.brown-text.text-lighten-4{color:#d7ccc8!important}.brown.lighten-3{background-color:#bcaaa4!important}.brown-text.text-lighten-3{color:#bcaaa4!important}.brown.lighten-2{background-color:#a1887f!important}.brown-text.text-lighten-2{color:#a1887f!important}.brown.lighten-1{background-color:#8d6e63!important}.brown-text.text-lighten-1{color:#8d6e63!important}.brown.darken-1{background-color:#6d4c41!important}.brown-text.text-darken-1{color:#6d4c41!important}.brown.darken-2{background-color:#5d4037!important}.brown-text.text-darken-2{color:#5d4037!important}.brown.darken-3{background-color:#4e342e!important}.brown-text.text-darken-3{color:#4e342e!important}.brown.darken-4{background-color:#3e2723!important}.brown-text.text-darken-4{color:#3e2723!important}.blue-grey{background-color:#607d8b!important}.blue-grey-text{color:#607d8b!important}.blue-grey.lighten-5{background-color:#eceff1!important}.blue-grey-text.text-lighten-5{color:#eceff1!important}.blue-grey.lighten-4{background-color:#cfd8dc!important}.blue-grey-text.text-lighten-4{color:#cfd8dc!important}.blue-grey.lighten-3{background-color:#b0bec5!important}.blue-grey-text.text-lighten-3{color:#b0bec5!important}.blue-grey.lighten-2{background-color:#90a4ae!important}.blue-grey-text.text-lighten-2{color:#90a4ae!important}.blue-grey.lighten-1{background-color:#78909c!important}.blue-grey-text.text-lighten-1{color:#78909c!important}.blue-grey.darken-1{background-color:#546e7a!important}.blue-grey-text.text-darken-1{color:#546e7a!important}.blue-grey.darken-2{background-color:#455a64!important}.blue-grey-text.text-darken-2{color:#455a64!important}.blue-grey.darken-3{background-color:#37474f!important}.blue-grey-text.text-darken-3{color:#37474f!important}.blue-grey.darken-4{background-color:#263238!important}.blue-grey-text.text-darken-4{color:#263238!important}.grey{background-color:#9e9e9e!important}.grey-text{color:#9e9e9e!important}.grey.lighten-5{background-color:#fafafa!important}.grey-text.text-lighten-5{color:#fafafa!important}.grey.lighten-4{background-color:#f5f5f5!important}.grey-text.text-lighten-4{color:#f5f5f5!important}.grey.lighten-3{background-color:#eee!important}.grey-text.text-lighten-3{color:#eee!important}.grey.lighten-2{background-color:#e0e0e0!important}.grey-text.text-lighten-2{color:#e0e0e0!important}.grey.lighten-1{background-color:#bdbdbd!important}.grey-text.text-lighten-1{color:#bdbdbd!important}.grey.darken-1{background-color:#757575!important}.grey-text.text-darken-1{color:#757575!important}.grey.darken-2{background-color:#616161!important}.grey-text.text-darken-2{color:#616161!important}.grey.darken-3{background-color:#424242!important}.grey-text.text-darken-3{color:#424242!important}.grey.darken-4{background-color:#212121!important}.grey-text.text-darken-4{color:#212121!important}.black{background-color:#000!important}.black-text{color:#000!important}.white{background-color:#fff!important}.white-text{color:#fff!important}.transparent{background-color:transparent!important}.transparent-text{color:transparent!important}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default) li{list-style-type:none}a{color:#039be5;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.clearfix{clear:both}.z-depth-0{box-shadow:none!important}.btn,.btn-floating,.btn-large,.card,.card-panel,.collapsible,.dropdown-content,.side-nav,.toast,.z-depth-1,nav{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.btn-floating:hover,.btn-large:hover,.btn:hover,.z-depth-1-half{box-shadow:0 3px 3px 0 rgba(0,0,0,.14),0 1px 7px 0 rgba(0,0,0,.12),0 3px 1px -1px rgba(0,0,0,.2)}.z-depth-2{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.3)}.z-depth-3{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.3)}.modal,.z-depth-4{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.3)}.z-depth-5{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.3)}.hoverable{transition:box-shadow .25s;box-shadow:0}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width:992px){.pagination{width:100%}.pagination li.next,.pagination li.prev{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:hsla(0,0%,100%,.7)}.breadcrumb [class*=mdi-],.breadcrumb [class^=mdi-],.breadcrumb i,.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:"\E5CC";color:hsla(0,0%,100%,.7);vertical-align:top;display:inline-block;font-family:Material Icons;font-weight:400;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{top:0;left:0;right:0;z-index:-1}.parallax,.parallax img{position:absolute;bottom:0}.parallax img{display:none;left:50%;min-width:100%;min-height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-bottom,.pin-top{position:relative}.pinned{position:fixed!important}.fade-in,ul.staggered-list li{opacity:0}.fade-in{-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width:600px){.hide-on-small-and-down,.hide-on-small-only{display:none!important}}@media only screen and (max-width:992px){.hide-on-med-and-down{display:none!important}}@media only screen and (min-width:601px){.hide-on-med-and-up{display:none!important}}@media only screen and (min-width:600px) and (max-width:992px){.hide-on-med-only{display:none!important}}@media only screen and (min-width:993px){.hide-on-large-only{display:none!important}}@media only screen and (min-width:993px){.show-on-large{display:block!important}}@media only screen and (min-width:600px) and (max-width:992px){.show-on-medium{display:block!important}}@media only screen and (max-width:600px){.show-on-small{display:block!important}}@media only screen and (min-width:601px){.show-on-medium-and-up{display:block!important}}@media only screen and (max-width:992px){.show-on-medium-and-down{display:block!important}}@media only screen and (max-width:600px){.center-on-small-only{text-align:center}}.page-footer{padding-top:20px;background-color:#ee6e73}.page-footer .footer-copyright{overflow:hidden;min-height:50px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:10px 0;color:hsla(0,0%,100%,.8);background-color:rgba(51,51,51,.08)}table,td,th{border:none}table{width:100%;display:table}table.bordered>tbody>tr,table.bordered>thead>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered tbody tr td,table.centered thead tr th{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width:992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:"\A0"}table.responsive-table td,table.responsive-table th{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th:before{content:"\A0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:.5rem 0 1rem;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;transition:.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container embed,.video-container iframe,.video-container object{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:.5rem 0 1rem;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;transition:width .3s linear}.progress .determinate,.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{-webkit-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.progress .indeterminate:after,.progress .indeterminate:before{content:"";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right}.progress .indeterminate:after{-webkit-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}.hide{display:none!important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left!important}.right{float:right!important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0!important}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;box-sizing:border-box}span.badge.new{font-weight:300;font-size:.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]:after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-top:calc(1.5rem - 11px)}.side-nav span.badge{margin-top:13px}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga";font-feature-settings:"liga"}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width:601px){.container{width:85%}}@media only screen and (min-width:993px){.container{width:70%}}.container .row{margin-left:-.75rem;margin-right:-.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*=pull-],.row .col[class*=push-]{position:relative}.row .col.s1{width:8.3333333333%}.row .col.s1,.row .col.s2{margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%}.row .col.s3{width:25%}.row .col.s3,.row .col.s4{margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%}.row .col.s5{width:41.6666666667%}.row .col.s5,.row .col.s6{margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%}.row .col.s7{width:58.3333333333%}.row .col.s7,.row .col.s8{margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%}.row .col.s9{width:75%}.row .col.s9,.row .col.s10{margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%}.row .col.s11{width:91.6666666667%}.row .col.s11,.row .col.s12{margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width:601px){.row .col.m1{width:8.3333333333%}.row .col.m1,.row .col.m2{margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%}.row .col.m3{width:25%}.row .col.m3,.row .col.m4{margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%}.row .col.m5{width:41.6666666667%}.row .col.m5,.row .col.m6{margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%}.row .col.m7{width:58.3333333333%}.row .col.m7,.row .col.m8{margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%}.row .col.m9{width:75%}.row .col.m9,.row .col.m10{margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%}.row .col.m11{width:91.6666666667%}.row .col.m11,.row .col.m12{margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width:993px){.row .col.l1{width:8.3333333333%}.row .col.l1,.row .col.l2{margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%}.row .col.l3{width:25%}.row .col.l3,.row .col.l4{margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%}.row .col.l5{width:41.6666666667%}.row .col.l5,.row .col.l6{margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%}.row .col.l7{width:58.3333333333%}.row .col.l7,.row .col.l8{margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%}.row .col.l9{width:75%}.row .col.l9,.row .col.l10{margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%}.row .col.l11{width:91.6666666667%}.row .col.l11,.row .col.l12{margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}@media only screen and (min-width:1201px){.row .col.xl1{width:8.3333333333%}.row .col.xl1,.row .col.xl2{margin-left:auto;left:auto;right:auto}.row .col.xl2{width:16.6666666667%}.row .col.xl3{width:25%}.row .col.xl3,.row .col.xl4{margin-left:auto;left:auto;right:auto}.row .col.xl4{width:33.3333333333%}.row .col.xl5{width:41.6666666667%}.row .col.xl5,.row .col.xl6{margin-left:auto;left:auto;right:auto}.row .col.xl6{width:50%}.row .col.xl7{width:58.3333333333%}.row .col.xl7,.row .col.xl8{margin-left:auto;left:auto;right:auto}.row .col.xl8{width:66.6666666667%}.row .col.xl9{width:75%}.row .col.xl9,.row .col.xl10{margin-left:auto;left:auto;right:auto}.row .col.xl10{width:83.3333333333%}.row .col.xl11{width:91.6666666667%}.row .col.xl11,.row .col.xl12{margin-left:auto;left:auto;right:auto}.row .col.xl12{width:100%}.row .col.offset-xl1{margin-left:8.3333333333%}.row .col.pull-xl1{right:8.3333333333%}.row .col.push-xl1{left:8.3333333333%}.row .col.offset-xl2{margin-left:16.6666666667%}.row .col.pull-xl2{right:16.6666666667%}.row .col.push-xl2{left:16.6666666667%}.row .col.offset-xl3{margin-left:25%}.row .col.pull-xl3{right:25%}.row .col.push-xl3{left:25%}.row .col.offset-xl4{margin-left:33.3333333333%}.row .col.pull-xl4{right:33.3333333333%}.row .col.push-xl4{left:33.3333333333%}.row .col.offset-xl5{margin-left:41.6666666667%}.row .col.pull-xl5{right:41.6666666667%}.row .col.push-xl5{left:41.6666666667%}.row .col.offset-xl6{margin-left:50%}.row .col.pull-xl6{right:50%}.row .col.push-xl6{left:50%}.row .col.offset-xl7{margin-left:58.3333333333%}.row .col.pull-xl7{right:58.3333333333%}.row .col.push-xl7{left:58.3333333333%}.row .col.offset-xl8{margin-left:66.6666666667%}.row .col.pull-xl8{right:66.6666666667%}.row .col.push-xl8{left:66.6666666667%}.row .col.offset-xl9{margin-left:75%}.row .col.pull-xl9{right:75%}.row .col.push-xl9{left:75%}.row .col.offset-xl10{margin-left:83.3333333333%}.row .col.pull-xl10{right:83.3333333333%}.row .col.push-xl10{left:83.3333333333%}.row .col.offset-xl11{margin-left:91.6666666667%}.row .col.pull-xl11{right:91.6666666667%}.row .col.push-xl11{left:91.6666666667%}.row .col.offset-xl12{margin-left:100%}.row .col.pull-xl12{right:100%}.row .col.push-xl12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav [class*=mdi-],nav [class^=mdi-],nav i,nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width:993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px;margin:0 18px}nav .button-collapse i{height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width:992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:.5rem}nav .brand-logo.right{right:.5rem;left:auto}}nav .brand-logo.right{right:.5rem;padding:0}nav .brand-logo [class*=mdi-],nav .brand-logo [class^=mdi-],nav .brand-logo i,nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,.1)}nav ul a{transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-flat,nav ul a.btn-floating,nav ul a.btn-large{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=date]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=text]:valid,nav .input-field input[type=url]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:hsla(0,0%,100%,.7);transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width:601px){nav.nav-extended .nav-wrapper{min-height:64px}nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:Roboto;src:local(Roboto Thin),url(fonts/Roboto-Thin.woff2) format("woff2"),url(fonts/Roboto-Thin.woff) format("woff");font-weight:100}@font-face{font-family:Roboto;src:local(Roboto Light),url(fonts/Roboto-Light.woff2) format("woff2"),url(fonts/Roboto-Light.woff) format("woff");font-weight:300}@font-face{font-family:Roboto;src:local(Roboto Regular),url(fonts/Roboto-Regular.woff2) format("woff2"),url(fonts/Roboto-Regular.woff) format("woff");font-weight:400}@font-face{font-family:Roboto;src:local(Roboto Medium),url(fonts/Roboto-Medium.woff2) format("woff2"),url(fonts/Roboto-Medium.woff) format("woff");font-weight:500}@font-face{font-family:Roboto;src:local(Roboto Bold),url(fonts/Roboto-Bold.woff2) format("woff2"),url(fonts/Roboto-Bold.woff) format("woff");font-weight:700}a{text-decoration:none}html{line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;color:rgba(0,0,0,.87)}@media only screen and (min-width:0){html{font-size:14px}}@media only screen and (min-width:992px){html{font-size:14.5px}}@media only screen and (min-width:1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;margin:2.1rem 0 1.68rem}h1,h2{line-height:110%}h2{font-size:3.56rem;margin:1.78rem 0 1.424rem}h3{font-size:2.92rem;margin:1.46rem 0 1.168rem}h3,h4{line-height:110%}h4{font-size:2.28rem;margin:1.14rem 0 .912rem}h5{font-size:1.64rem;margin:.82rem 0 .656rem}h5,h6{line-height:110%}h6{font-size:1rem;margin:.5rem 0 .4rem}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width:360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width:390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width:420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width:450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width:480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width:510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width:540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width:570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width:600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width:630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width:660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width:690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width:720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width:750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width:780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width:810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width:840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width:870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width:900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width:930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width:960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width:360px){.flow-text{font-size:1.2rem}}.scale-transition{transition:-webkit-transform .3s cubic-bezier(.53,.01,.36,1.63)!important;transition:transform .3s cubic-bezier(.53,.01,.36,1.63)!important;transition:transform .3s cubic-bezier(.53,.01,.36,1.63),-webkit-transform .3s cubic-bezier(.53,.01,.36,1.63)!important}.scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .2s!important;transition:transform .2s!important;transition:transform .2s,-webkit-transform .2s!important}.scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)}.card-panel{padding:24px}.card,.card-panel{transition:box-shadow .25s;margin:.5rem 0 1rem;border-radius:2px;background-color:#fff}.card{position:relative}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.large,.card.medium,.card.small{position:relative}.card.large .card-image,.card.medium .card-image,.card.small .card-image{max-height:60%;overflow:hidden}.card.large .card-image+.card-content,.card.medium .card-image+.card-content,.card.small .card-image+.card-content{max-height:40%}.card.large .card-content,.card.medium .card-content,.card.small .card-content{max-height:100%;overflow:hidden}.card.large .card-action,.card.medium .card-action,.card.small .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.large .card-image,.card.horizontal.medium .card-image,.card.horizontal.small .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.large .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.small .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px}.card .card-content{padding:24px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px}.card .card-content .card-title i{line-height:32px}.card .card-action{position:relative;background-color:inherit;border-top:1px solid hsla(0,0%,63%,.2);padding:16px 24px}.card .card-action:last-child{border-radius:0 0 2px 2px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width:600px){#toast-container{min-width:100%;bottom:0}}@media only screen and (min-width:601px) and (max-width:992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width:993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:35px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.toast .btn,.toast .btn-flat,.toast .btn-large{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width:600px){.toast{width:100%;border-radius:0}}@media only screen and (min-width:601px) and (max-width:992px){.toast{float:left}}@media only screen and (min-width:993px){.toast{float:right}}.tabs{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap}.tabs.tabs-transparent{background-color:transparent}.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover,.tabs.tabs-transparent .tab a{color:hsla(0,0%,100%,.7)}.tabs.tabs-transparent .tab a.active,.tabs.tabs-transparent .tab a:hover{color:#fff}.tabs.tabs-transparent .indicator{background-color:#fff}.tabs.tabs-fixed-width{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs.tabs-fixed-width .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase}.tabs .tab a{color:rgba(238,110,115,.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;transition:color .28s ease}.tabs .tab a.active,.tabs .tab a:hover{background-color:transparent;color:#ee6e73}.tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,.7);cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left,right}@media only screen and (max-width:992px){.tabs{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none}.backdrop,.material-tooltip{opacity:0;position:absolute;visibility:hidden}.backdrop{height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0;transform-origin:50% 0}.btn,.btn-flat,.btn-large{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn-flat.disabled,.btn-flat:disabled,.btn-flat[disabled],.btn-floating.disabled,.btn-floating:disabled,.btn-floating[disabled],.btn-large.disabled,.btn-large:disabled,.btn-large[disabled],.btn.disabled,.btn:disabled,.btn[disabled],.disabled.btn-large,[disabled].btn-large{pointer-events:none;background-color:#dfdfdf!important;box-shadow:none;color:#9f9f9f!important;cursor:default}.btn-flat.disabled:hover,.btn-flat:disabled:hover,.btn-flat[disabled]:hover,.btn-floating.disabled:hover,.btn-floating:disabled:hover,.btn-floating[disabled]:hover,.btn-large.disabled:hover,.btn-large:disabled:hover,.btn-large[disabled]:hover,.btn.disabled:hover,.btn:disabled:hover,.btn[disabled]:hover,.disabled.btn-large:hover,[disabled].btn-large:hover{background-color:#dfdfdf!important;color:#9f9f9f!important}.btn,.btn-flat,.btn-floating,.btn-large{font-size:1rem;outline:0}.btn-flat i,.btn-floating i,.btn-large i,.btn i{font-size:1.3rem;line-height:inherit}.btn-floating:focus,.btn-large:focus,.btn:focus{background-color:#1d7d74}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;transition:.2s ease-out;cursor:pointer}.btn-large:hover,.btn:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:40px;height:40px;line-height:40px;padding:0;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating,.btn-floating:hover{background-color:#26a69a}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:56px;height:56px}.btn-floating.btn-large.halfway-fab{bottom:-28px}.btn-floating.btn-large i{line-height:56px}.btn-floating.halfway-fab{position:absolute;right:24px;bottom:-20px}.btn-floating.halfway-fab.left{right:auto;left:24px}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn.toolbar{padding:0;height:56px}.fixed-action-btn.toolbar.active>a i{opacity:0}.fixed-action-btn.toolbar ul{display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0}.fixed-action-btn.toolbar ul li{-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;transition:none}.fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;box-shadow:none;color:#fff;line-height:56px;z-index:1}.fixed-action-btn.toolbar ul li a i{line-height:inherit}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)}.btn-flat{box-shadow:none;color:#343434;cursor:pointer;transition:background-color .2s}.btn-flat,.btn-flat:active,.btn-flat:focus{background-color:transparent}.btn-flat:focus,.btn-flat:hover{background-color:rgba(0,0,0,.1);box-shadow:none}.btn-flat:active{background-color:rgba(0,0,0,.2)}.btn-flat.disabled{background-color:transparent!important;color:#b3b3b3!important;cursor:default}.btn-large{height:54px;line-height:54px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width,height}.dropdown-content li{clear:both;color:rgba(0,0,0,.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li.active,.dropdown-content li.selected,.dropdown-content li:hover{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:0;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit;float:left;margin:0 24px 0 0;width:24px}.input-field.col .dropdown-content [type=checkbox]+label{top:1px;left:0;height:18px}.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,.2);transition:all .7s ease-out;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:hsla(0,0%,100%,.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,.7)}.waves-effect input[type=button],.waves-effect input[type=reset],.waves-effect input[type=submit]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{transition:none!important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0)}.waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top,opacity}@media only screen and (max-width:992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-flat,.modal .modal-footer .btn-large{float:right;margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom,opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;box-sizing:border-box;padding:2rem}.side-nav .collapsible,.side-nav.fixed .collapsible{border:none;box-shadow:none}.side-nav .collapsible li,.side-nav.fixed .collapsible li{padding:0}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.side-nav .collapsible-header:hover,.side-nav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,.05)}.side-nav .collapsible-header i,.side-nav.fixed .collapsible-header i{line-height:inherit}.side-nav .collapsible-body,.side-nav.fixed .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a,.side-nav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 24px;transition:margin .35s cubic-bezier(.25,.46,.45,.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip>img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;box-shadow:none;margin:0 0 20px;min-height:45px;outline:none;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .chip.selected{background-color:#26a69a;color:#fff}.chips .input{background:none;border:0;color:rgba(0,0,0,.6);display:inline-block;font-size:1rem;height:3rem;line-height:32px;outline:0;margin:0;padding:0!important;width:120px!important}.chips .input:focus{border:0!important;box-shadow:none!important}.chips .autocomplete-content{margin-top:0}.prefix~.chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty~label{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{top:0;right:0;background-color:#292929;will-change:opacity}#materialbox-overlay,.materialbox-caption{position:fixed;bottom:0;left:0;z-index:1000}.materialbox-caption{display:none;color:#fff;line-height:50px;width:100%;text-align:center;padding:0 15%;height:50px;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder,::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input:not([type]),input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 20px;padding:0;box-shadow:none;box-sizing:content-box;transition:all .3s}input:not([type]):disabled,input:not([type])[readonly=readonly],input[type=date]:disabled,input[type=date][readonly=readonly],input[type=datetime-local]:disabled,input[type=datetime-local][readonly=readonly],input[type=datetime]:disabled,input[type=datetime][readonly=readonly],input[type=email]:disabled,input[type=email][readonly=readonly],input[type=number]:disabled,input[type=number][readonly=readonly],input[type=password]:disabled,input[type=password][readonly=readonly],input[type=search]:disabled,input[type=search][readonly=readonly],input[type=tel]:disabled,input[type=tel][readonly=readonly],input[type=text]:disabled,input[type=text][readonly=readonly],input[type=time]:disabled,input[type=time][readonly=readonly],input[type=url]:disabled,input[type=url][readonly=readonly],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly=readonly]{color:rgba(0,0,0,.26);border-bottom:1px dotted rgba(0,0,0,.26)}input:not([type]):disabled+label,input:not([type])[readonly=readonly]+label,input[type=date]:disabled+label,input[type=date][readonly=readonly]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly=readonly]+label,input[type=datetime]:disabled+label,input[type=datetime][readonly=readonly]+label,input[type=email]:disabled+label,input[type=email][readonly=readonly]+label,input[type=number]:disabled+label,input[type=number][readonly=readonly]+label,input[type=password]:disabled+label,input[type=password][readonly=readonly]+label,input[type=search]:disabled+label,input[type=search][readonly=readonly]+label,input[type=tel]:disabled+label,input[type=tel][readonly=readonly]+label,input[type=text]:disabled+label,input[type=text][readonly=readonly]+label,input[type=time]:disabled+label,input[type=time][readonly=readonly]+label,input[type=url]:disabled+label,input[type=url][readonly=readonly]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly=readonly]+label{color:rgba(0,0,0,.26)}input:not([type]):focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=datetime]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=search]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=text]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=url]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}input:not([type]):focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=datetime]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=text]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input:not([type]).valid,input:not([type]):focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=datetime].valid,input[type=datetime]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=text].valid,input[type=text]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4caf50;box-shadow:0 1px 0 0 #4caf50}input:not([type]).valid+label:after,input:not([type]):focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=datetime].valid+label:after,input[type=datetime]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4caf50;opacity:1}input:not([type]).invalid,input:not([type]):focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=datetime].invalid,input[type=datetime]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=text].invalid,input[type=text]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #f44336;box-shadow:0 1px 0 0 #f44336}input:not([type]).invalid+label:after,input:not([type]):focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=datetime].invalid+label:after,input[type=datetime]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#f44336;opacity:1}input:not([type]).validate+label,input[type=date].validate+label,input[type=datetime-local].validate+label,input[type=datetime].validate+label,input[type=email].validate+label,input[type=number].validate+label,input[type=password].validate+label,input[type=search].validate+label,input[type=tel].validate+label,input[type=text].validate+label,input[type=time].validate+label,input[type=url].validate+label,textarea.materialize-textarea.validate+label{width:100%;pointer-events:none}input:not([type])+label:after,input[type=date]+label:after,input[type=datetime-local]+label:after,input[type=datetime]+label:after,input[type=email]+label:after,input[type=number]+label:after,input[type=password]+label:after,input[type=search]+label:after,input[type=tel]+label:after,input[type=text]+label:after,input[type=time]+label:after,input[type=url]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:60px;opacity:0;transition:opacity .2s ease-out,color .2s ease-out}.input-field{position:relative;margin-top:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline .select-dropdown,.input-field.inline input{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix~.validate~label,.input-field.col .prefix~label{width:calc(100% - 3rem - 1.5rem)}.input-field label{color:#9e9e9e;position:absolute;top:.8rem;left:0;font-size:1rem;cursor:text;transition:.2s ease-out;text-align:initial}.input-field label:not(.label-icon).active{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix~.autocomplete-content,.input-field .prefix~.validate~label,.input-field .prefix~input,.input-field .prefix~label,.input-field .prefix~textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix~label{margin-left:3rem}@media only screen and (max-width:992px){.input-field .prefix~input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width:600px){.input-field .prefix~input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus~.material-icons,.input-field input[type=search]:focus~.mdi-navigation-close{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search]~.material-icons,.input-field input[type=search]~.mdi-navigation-close{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:color .3s}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:.8rem 0 1.6rem;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem;position:absolute;top:0}.autocomplete-content{margin-top:-20px;display:block;opacity:1;position:static}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}[type=radio]:checked,[type=radio]:not(:checked){position:absolute;left:-9999px;opacity:0}[type=radio]:checked+label,[type=radio]:not(:checked)+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type=radio]+label:after,[type=radio]+label:before{content:"";position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;transition:.28s ease}[type=radio].with-gap:checked+label:after,[type=radio].with-gap:checked+label:before,[type=radio]:checked+label:after,[type=radio]:checked+label:before,[type=radio]:not(:checked)+label:after,[type=radio]:not(:checked)+label:before{border-radius:50%}[type=radio]:not(:checked)+label:after,[type=radio]:not(:checked)+label:before{border:2px solid #5a5a5a}[type=radio]:not(:checked)+label:after{-webkit-transform:scale(0);transform:scale(0)}[type=radio]:checked+label:before{border:2px solid transparent}[type=radio].with-gap:checked+label:after,[type=radio].with-gap:checked+label:before,[type=radio]:checked+label:after{border:2px solid #26a69a}[type=radio].with-gap:checked+label:after,[type=radio]:checked+label:after{background-color:#26a69a}[type=radio]:checked+label:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type=radio].with-gap:checked+label:after{-webkit-transform:scale(.5);transform:scale(.5)}[type=radio].tabbed:focus+label:before{box-shadow:0 0 0 10px rgba(0,0,0,.1)}[type=radio].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,.26)}[type=radio].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,.26)}[type=radio]:disabled:checked+label:before,[type=radio]:disabled:not(:checked)+label:before{background-color:transparent;border-color:rgba(0,0,0,.26)}[type=radio]:disabled+label{color:rgba(0,0,0,.26)}[type=radio]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,.26)}[type=radio]:disabled:checked+label:after{background-color:rgba(0,0,0,.26);border-color:#bdbdbd}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type=checkbox]:checked,[type=checkbox]:not(:checked){position:absolute;left:-9999px;opacity:0}[type=checkbox]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type=checkbox]+label:before,[type=checkbox]:not(.filled-in)+label:after{content:"";position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;transition:.2s}[type=checkbox]:not(.filled-in)+label:after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type=checkbox]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,.26)}[type=checkbox].tabbed:focus+label:after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;box-shadow:0 0 0 10px rgba(0,0,0,.1);background-color:rgba(0,0,0,.1)}[type=checkbox]:checked+label:before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type=checkbox]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);border-bottom:2px solid rgba(0,0,0,.26)}[type=checkbox]:indeterminate+label:before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type=checkbox]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);background-color:transparent}[type=checkbox].filled-in+label:after{border-radius:2px}[type=checkbox].filled-in+label:after,[type=checkbox].filled-in+label:before{content:"";left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}[type=checkbox].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotate(37deg);transform:rotate(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type=checkbox].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0;z-index:0}[type=checkbox].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotate(37deg);transform:rotate(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type=checkbox].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type=checkbox].filled-in.tabbed:focus+label:after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,.1)}[type=checkbox].filled-in.tabbed:checked:focus+label:after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[type=checkbox].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type=checkbox].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#bdbdbd}[type=checkbox].filled-in:disabled:checked+label:before{background-color:transparent}[type=checkbox].filled-in:disabled:checked+label:after{background-color:#bdbdbd;border-color:#bdbdbd}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a;left:24px}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background .3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#f1f1f1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-3px;transition:left .3s ease,background .3s ease,box-shadow .1s ease}input[type=checkbox]:checked:not(:disabled).tabbed:focus~.lever:after,input[type=checkbox]:checked:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(38,166,154,.1)}input[type=checkbox]:not(:disabled).tabbed:focus~.lever:after,input[type=checkbox]:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#bdbdbd}select{display:none}select.browser-default{display:block}select{background-color:hsla(0,0%,100%,.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 20px;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:0;bottom:0;height:10px;margin:auto 0;font-size:10px;line-height:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}select:disabled{color:rgba(0,0,0,.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,.3)}.select-wrapper i{color:rgba(0,0,0,.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,.3);background-color:transparent}.prefix~.select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix~label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,.4)}.select-dropdown li.optgroup~li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;top:10px;left:0;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;margin-left:7px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#26a69a;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0;transition:.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid #fff}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ee6e73}.side-nav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:calc(100% + 60px);height:100%;padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.side-nav .collapsible{margin:0}.side-nav li{float:none;line-height:48px}.side-nav li.active{background-color:rgba(0,0,0,.05)}.side-nav li>a{color:rgba(0,0,0,.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.side-nav li>a:hover{background-color:rgba(0,0,0,.05)}.side-nav li>a.btn,.side-nav li>a.btn-flat,.side-nav li>a.btn-floating,.side-nav li>a.btn-large{margin:10px 15px}.side-nav li>a.btn,.side-nav li>a.btn-floating,.side-nav li>a.btn-large{color:#fff}.side-nav li>a.btn-flat{color:#343434}.side-nav li>a.btn-large:hover,.side-nav li>a.btn:hover{background-color:#2bbbad}.side-nav li>a.btn-floating:hover{background-color:#26a69a}.side-nav li>a>[class^=mdi-],.side-nav li>a>i,.side-nav li>a>i.material-icons,.side-nav li>a li>a>[class*=mdi-]{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,.54)}.side-nav .divider{margin:8px 0 0}.side-nav .subheader{cursor:auto;pointer-events:none;color:rgba(0,0,0,.54);font-size:14px;font-weight:500;line-height:48px}.side-nav .subheader:hover{background-color:transparent}.side-nav .userView{position:relative;padding:32px 32px 0;margin-bottom:8px}.side-nav .userView>a{height:auto;padding:0}.side-nav .userView>a:hover{background-color:transparent}.side-nav .userView .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.side-nav .userView .circle,.side-nav .userView .email,.side-nav .userView .name{display:block}.side-nav .userView .circle{height:64px;width:64px}.side-nav .userView .email,.side-nav .userView .name{font-size:14px;line-height:24px}.side-nav .userView .name{margin-top:16px;font-weight:500}.side-nav .userView .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width:992px){.side-nav.fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.side-nav a{padding:0 16px}.side-nav .userView{padding:16px 16px 0}}.side-nav .collapsible-body>ul:not(.collapsible)>li.active,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.side-nav .collapsible-body>ul:not(.collapsible)>li.active a,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}.side-nav .collapsible-body{padding:0}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:50px;height:50px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(1turn)}}@keyframes container-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-green-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(3turn)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(3turn);transform:rotate(3turn)}}@-webkit-keyframes blue-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes blue-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@-webkit-keyframes red-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}@keyframes green-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{0%{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1);animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:50%}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4caf50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0 50%;transform-origin:0 50%}.carousel.carousel-slider{top:0;left:0;height:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{display:none;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item>img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:hsla(0,0%,100%,.5);transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.carousel .carousel-item:not(.active) .materialboxed,.carousel.scrolling .carousel-item .materialboxed{pointer-events:none}.tap-target-wrapper{width:800px;height:800px;position:fixed;z-index:1000;visibility:hidden;transition:visibility 0s .3s}.tap-target-wrapper.open{visibility:visible;transition:visibility 0s}.tap-target-wrapper.open .tap-target{opacity:.95;transition:opacity .3s ease-in-out,-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out,opacity .3s ease-in-out;transition:transform .3s ease-in-out,opacity .3s ease-in-out,-webkit-transform .3s ease-in-out}.tap-target-wrapper.open .tap-target,.tap-target-wrapper.open .tap-target-wave:before{-webkit-transform:scale(1);transform:scale(1)}.tap-target-wrapper.open .tap-target-wave:after{visibility:visible;-webkit-animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;transition:opacity .3s,visibility 0s 1s,-webkit-transform .3s;transition:opacity .3s,transform .3s,visibility 0s 1s;transition:opacity .3s,transform .3s,visibility 0s 1s,-webkit-transform .3s}.tap-target{position:absolute;font-size:1rem;border-radius:50%;background-color:#ee6e73;box-shadow:0 20px 20px 0 rgba(0,0,0,.14),0 10px 50px 0 rgba(0,0,0,.12),0 30px 10px -20px rgba(0,0,0,.2);width:100%;height:100%;opacity:0;-webkit-transform:scale(0);transform:scale(0);transition:opacity .3s ease-in-out,-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out,opacity .3s ease-in-out;transition:transform .3s ease-in-out,opacity .3s ease-in-out,-webkit-transform .3s ease-in-out}.tap-target-content{position:relative;display:table-cell}.tap-target-wave{position:absolute;border-radius:50%;z-index:10001}.tap-target-wave:after,.tap-target-wave:before{content:"";display:block;position:absolute;width:100%;height:100%;border-radius:50%;background-color:#fff}.tap-target-wave:before{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.tap-target-wave:after{visibility:hidden;transition:opacity .3s,visibility 0s,-webkit-transform .3s;transition:opacity .3s,transform .3s,visibility 0s;transition:opacity .3s,transform .3s,visibility 0s,-webkit-transform .3s;z-index:-1}.tap-target-origin{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:10002;position:absolute!important}.tap-target-origin:not(.btn):not(.btn-large),.tap-target-origin:not(.btn):not(.btn-large):hover{background:none}@media only screen and (max-width:600px){.tap-target,.tap-target-wrapper{width:600px;height:600px}}.pulse{overflow:initial;position:relative}.pulse:before{content:"";display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:inherit;border-radius:inherit;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;z-index:-1}@-webkit-keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}to{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}@keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}to{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.picker__frame,.picker__holder{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;transition:background .15s ease-out,top 0s .15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all .15s ease-out}@media (min-height:28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height:40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height:28.875em){.picker__wrap{display:block}}.picker__box{background:#fff;display:table-cell;vertical-align:middle}@media (min-height:28.875em){.picker__box{display:block;border:1px solid #777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,.32);transition:background .15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height:35.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__input.picker__input--active{border-color:#e3f2fd}.picker__frame{margin:0 auto;max-width:325px}@media (min-height:38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#fff;width:40%}.picker__select--year.browser-default{display:inline;background-color:#fff;width:26%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,.05)}.picker__nav--next,.picker__nav--prev{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:before,.picker__nav--disabled:before:hover,.picker__nav--disabled:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em}.picker__table,.picker__table td,.picker__table th{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#ddd;font-weight:500}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover{cursor:pointer}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{-webkit-transform:scale(.75);transform:scale(.75);background:#0089ec}.picker--focused .picker__day--disabled,.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__footer{text-align:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.picker__button--clear,.picker__button--close,.picker__button--today{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--clear:focus,.picker__button--close:focus,.picker__button--today:focus{background:#b1dcfb;border-color:rgba(0,0,0,.05);outline:none}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{position:relative;display:inline-block;height:0}.picker__button--clear:before,.picker__button--today:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#26a69a;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--next:hover,.picker__nav--prev:hover{cursor:pointer;color:#000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:hsla(0,0%,100%,.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{border-radius:50%;-webkit-transform:scale(.9);transform:scale(.9);background-color:#26a69a;color:#fff}.picker--focused .picker__day--selected.picker__day--outfocus,.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#26a69a}.picker__nav--next:before,.picker__nav--prev:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #676767}button.picker__clear:focus,button.picker__close:focus,button.picker__today:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__list-item--highlighted,.picker__list-item:hover{border-color:#0089ec;z-index:10}.picker--focused .picker__list-item--highlighted,.picker__list-item--highlighted:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker--focused .picker__list-item--selected,.picker__list-item--selected,.picker__list-item--selected:hover{background:#0089ec;color:#fff;z-index:10}.picker--focused .picker__list-item--disabled,.picker__list-item--disabled,.picker__list-item--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:focus,.picker--time .picker__button--clear:hover{color:#000;background:#b1dcfb;background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:none}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:focus:before,.picker--time .picker__button--clear:hover:before{color:#fff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height:40.125em){.picker--time .picker__box{margin-bottom:5em}}.annotator-filter *,.annotator-notice,.annotator-widget *{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:400;text-align:left;margin:0;padding:0;background:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;-moz-box-shadow:none;-webkit-box-shadow:none;-o-box-shadow:none;box-shadow:none;color:#909090}.annotator-adder{background-image:url(img/annotator-icon-sprite.png);background-repeat:no-repeat}.annotator-editor a:after,.annotator-filter .annotator-filter-navigation button:after,.annotator-filter .annotator-filter-property .annotator-filter-clear,.annotator-resize,.annotator-viewer .annotator-controls a,.annotator-viewer .annotator-controls button,.annotator-widget:after{background-image:url(img/annotator-glyph-sprite.png);background-repeat:no-repeat}.annotator-hl{background:#ffff0a;background:rgba(255,255,10,.3);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4DFFFF0A, endColorstr=#4DFFFF0A)"}.annotator-hl-temporary{background:#007cff;background:rgba(0,124,255,.3);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4D007CFF, endColorstr=#4D007CFF)"}.annotator-wrapper{position:relative}.annotator-adder,.annotator-notice,.annotator-outer{z-index:1020}.annotator-filter{z-index:1010}.annotator-adder,.annotator-notice,.annotator-outer,.annotator-widget{position:absolute;font-size:10px;line-height:1}.annotator-hide{display:none;visibility:hidden}.annotator-adder{margin-top:-48px;margin-left:-24px;width:48px;height:48px;background-position:0 0}.annotator-adder:hover{background-position:top}.annotator-adder:active{background-position:100%}.annotator-adder button{display:block;width:36px;height:41px;margin:0 auto;border:none;background:none;text-indent:-999em;cursor:pointer}.annotator-outer{width:0;height:0}.annotator-widget{margin:0;padding:0;bottom:15px;left:-18px;min-width:265px;background-color:#fbfbfb;background-color:hsla(0,0%,98%,.98);border:1px solid #7a7a7a;border:1px solid hsla(0,0%,48%,.6);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.2);-moz-box-shadow:0 5px 15px rgba(0,0,0,.2);-o-box-shadow:0 5px 15px rgba(0,0,0,.2);box-shadow:0 5px 15px rgba(0,0,0,.2)}.annotator-invert-x .annotator-widget{left:auto;right:-18px}.annotator-invert-y .annotator-widget{bottom:auto;top:8px}.annotator-widget strong{font-weight:700}.annotator-widget .annotator-item,.annotator-widget .annotator-listing{padding:0;margin:0;list-style:none}.annotator-widget:after{content:"";display:block;width:18px;height:10px;background-position:0 0;position:absolute;bottom:-10px;left:8px}.annotator-invert-x .annotator-widget:after{left:auto;right:8px}.annotator-invert-y .annotator-widget:after{background-position:0 -15px;bottom:auto;top:-9px}.annotator-editor .annotator-item input,.annotator-editor .annotator-item textarea,.annotator-widget .annotator-item{position:relative;font-size:12px}.annotator-viewer .annotator-item{border-top:2px solid #7a7a7a;border-top:2px solid hsla(0,0%,48%,.2)}.annotator-widget .annotator-item:first-child{border-top:none}.annotator-editor .annotator-item,.annotator-viewer div{border-top:1px solid #858585;border-top:1px solid hsla(0,0%,52%,.11)}.annotator-viewer div{padding:6px}.annotator-viewer .annotator-item ol,.annotator-viewer .annotator-item ul{padding:4px 16px}.annotator-editor .annotator-item:first-child textarea,.annotator-viewer div:first-of-type{padding-top:12px;padding-bottom:12px;color:#3c3c3c;font-size:13px;font-style:italic;line-height:1.3;border-top:none}.annotator-viewer .annotator-controls{position:relative;top:5px;right:5px;padding-left:5px;opacity:0;-webkit-transition:opacity .2s ease-in;-moz-transition:opacity .2s ease-in;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in;float:right}.annotator-viewer li .annotator-controls.annotator-visible,.annotator-viewer li:hover .annotator-controls{opacity:1}.annotator-viewer .annotator-controls a,.annotator-viewer .annotator-controls button{cursor:pointer;display:inline-block;width:13px;height:13px;margin-left:2px;border:none;opacity:.2;text-indent:-900em;background-color:transparent;outline:none}.annotator-viewer .annotator-controls a:focus,.annotator-viewer .annotator-controls a:hover,.annotator-viewer .annotator-controls button:focus,.annotator-viewer .annotator-controls button:hover{opacity:.9}.annotator-viewer .annotator-controls a:active,.annotator-viewer .annotator-controls button:active{opacity:1}.annotator-viewer .annotator-controls button[disabled]{display:none}.annotator-viewer .annotator-controls .annotator-edit{background-position:0 -60px}.annotator-viewer .annotator-controls .annotator-delete{background-position:0 -75px}.annotator-viewer .annotator-controls .annotator-link{background-position:0 -270px}.annotator-editor .annotator-item{position:relative}.annotator-editor .annotator-item label{top:0;display:inline;cursor:pointer;font-size:12px}.annotator-editor .annotator-item input,.annotator-editor .annotator-item textarea{display:block;min-width:100%;padding:10px 8px;border:none;margin:0;color:#3c3c3c;background:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;resize:none}.annotator-editor .annotator-item textarea::-webkit-scrollbar{height:8px;width:8px}.annotator-editor .annotator-item textarea::-webkit-scrollbar-track-piece{margin:13px 0 3px;background-color:#e5e5e5;-webkit-border-radius:4px}.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:vertical{height:25px;background-color:#ccc;-webkit-border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1)}.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:horizontal{width:25px;background-color:#ccc;-webkit-border-radius:4px}.annotator-editor .annotator-item:first-child textarea{min-height:5.5em;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.annotator-editor .annotator-item input:focus,.annotator-editor .annotator-item textarea:focus{background-color:#f3f3f3;outline:none}.annotator-editor .annotator-item input[type=checkbox],.annotator-editor .annotator-item input[type=radio]{width:auto;min-width:0;padding:0;display:inline;margin:0 4px 0 0;cursor:pointer}.annotator-editor .annotator-checkbox{padding:8px 6px}.annotator-editor .annotator-controls,.annotator-filter,.annotator-filter .annotator-filter-navigation button{text-align:right;padding:3px;border-top:1px solid #d4d4d4;background-color:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),color-stop(.6,#dcdcdc),to(#d2d2d2));background-image:-moz-linear-gradient(to bottom,#f5f5f5,#dcdcdc 60%,#d2d2d2);background-image:-webkit-linear-gradient(180deg,#f5f5f5,#dcdcdc 60%,#d2d2d2);background-image:linear-gradient(180deg,#f5f5f5,#dcdcdc 60%,#d2d2d2);-webkit-box-shadow:inset 1px 0 0 hsla(0,0%,100%,.7),inset -1px 0 0 hsla(0,0%,100%,.7),inset 0 1px 0 hsla(0,0%,100%,.7);-moz-box-shadow:inset 1px 0 0 hsla(0,0%,100%,.7),inset -1px 0 0 hsla(0,0%,100%,.7),inset 0 1px 0 hsla(0,0%,100%,.7);-o-box-shadow:inset 1px 0 0 hsla(0,0%,100%,.7),inset -1px 0 0 hsla(0,0%,100%,.7),inset 0 1px 0 hsla(0,0%,100%,.7);box-shadow:inset 1px 0 0 hsla(0,0%,100%,.7),inset -1px 0 0 hsla(0,0%,100%,.7),inset 0 1px 0 hsla(0,0%,100%,.7);-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.annotator-editor.annotator-invert-y .annotator-controls{border-top:none;border-bottom:1px solid #b4b4b4;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.annotator-editor a,.annotator-filter .annotator-filter-property label{position:relative;display:inline-block;padding:0 6px 0 22px;color:#363636;text-shadow:0 1px 0 hsla(0,0%,100%,.75);text-decoration:none;line-height:24px;font-size:12px;font-weight:700;border:1px solid #a2a2a2;background-color:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),color-stop(.5,#d2d2d2),color-stop(.5,#bebebe),to(#d2d2d2));background-image:-moz-linear-gradient(to bottom,#f5f5f5,#d2d2d2 50%,#bebebe 50%,#d2d2d2);background-image:-webkit-linear-gradient(180deg,#f5f5f5,#d2d2d2 50%,#bebebe 0,#d2d2d2);background-image:linear-gradient(180deg,#f5f5f5,#d2d2d2 50%,#bebebe 0,#d2d2d2);-webkit-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-moz-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-o-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px}.annotator-editor a:after{position:absolute;top:50%;left:5px;display:block;content:"";width:15px;height:15px;margin-top:-7px;background-position:0 -90px}.annotator-editor a.annotator-focus,.annotator-editor a:focus,.annotator-editor a:hover,.annotator-filter .annotator-filter-active label,.annotator-filter .annotator-filter-navigation button:hover{outline:none;border-color:#435aa0;background-color:#3865f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#7691fb),color-stop(.5,#5075fb),color-stop(.5,#3865f9),to(#3665fa));background-image:-moz-linear-gradient(to bottom,#7691fb,#5075fb 50%,#3865f9 50%,#3665fa);background-image:-webkit-linear-gradient(180deg,#7691fb,#5075fb 50%,#3865f9 0,#3665fa);background-image:linear-gradient(180deg,#7691fb,#5075fb 50%,#3865f9 0,#3665fa);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.42)}.annotator-editor a:focus:after,.annotator-editor a:hover:after{margin-top:-8px;background-position:0 -105px}.annotator-editor a:active,.annotator-filter .annotator-filter-navigation button:active{border-color:#700c49;background-color:#d12e8e;background-image:-webkit-gradient(linear,left top,left bottom,from(#fc7cca),color-stop(.5,#e85db2),color-stop(.5,#d12e8e),to(#ff009c));background-image:-moz-linear-gradient(to bottom,#fc7cca,#e85db2 50%,#d12e8e 50%,#ff009c);background-image:-webkit-linear-gradient(180deg,#fc7cca,#e85db2 50%,#d12e8e 0,#ff009c);background-image:linear-gradient(180deg,#fc7cca,#e85db2 50%,#d12e8e 0,#ff009c)}.annotator-editor a.annotator-save:after{background-position:0 -120px}.annotator-editor a.annotator-save.annotator-focus:after,.annotator-editor a.annotator-save:focus:after,.annotator-editor a.annotator-save:hover:after{margin-top:-8px;background-position:0 -135px}.annotator-editor .annotator-widget:after{background-position:0 -30px}.annotator-editor.annotator-invert-y .annotator-widget .annotator-controls{background-color:#f2f2f2}.annotator-editor.annotator-invert-y .annotator-widget:after{background-position:0 -45px;height:11px}.annotator-resize{position:absolute;top:0;right:0;width:12px;height:12px;background-position:2px -150px}.annotator-invert-x .annotator-resize{right:auto;left:0;background-position:0 -195px}.annotator-invert-y .annotator-resize{top:auto;bottom:0;background-position:2px -165px}.annotator-invert-y.annotator-invert-x .annotator-resize{background-position:0 -180px}.annotator-notice{color:#fff;position:fixed;top:-54px;left:0;width:100%;font-size:14px;line-height:50px;text-align:center;background:#000;background:rgba(0,0,0,.9);border-bottom:4px solid #d4d4d4;-webkit-transition:top .4s ease-out;-moz-transition:top .4s ease-out;-o-transition:top .4s ease-out;transition:top .4s ease-out}.annotator-notice-success{border-color:#3665f9}.annotator-notice-error{border-color:#ff7e00}.annotator-notice p{margin:0}.annotator-notice a{color:#fff}.annotator-notice-show{top:0}.annotator-tags{margin-bottom:-2px}.annotator-tags .annotator-tag{display:inline-block;padding:0 8px;margin-bottom:2px;line-height:1.6;font-weight:700;background-color:#e6e6e6;-webkit-border-radius:8px;-moz-border-radius:8px;-o-border-radius:8px;border-radius:8px}.annotator-filter{position:fixed;top:0;right:0;left:0;text-align:left;line-height:0;border:none;border-bottom:1px solid #878787;padding-left:10px;padding-right:10px;-webkit-border-radius:0;-moz-border-radius:0;-o-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.3);-moz-box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.3);-o-box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.3);box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.3)}.annotator-filter strong{font-size:12px;font-weight:700;color:#3c3c3c;text-shadow:0 1px 0 hsla(0,0%,100%,.7);position:relative;top:-9px}.annotator-filter .annotator-filter-navigation,.annotator-filter .annotator-filter-property{position:relative;display:inline-block;overflow:hidden;line-height:10px;padding:2px 0;margin-right:8px}.annotator-filter .annotator-filter-navigation button,.annotator-filter .annotator-filter-property label{text-align:left;display:block;float:left;line-height:20px;-webkit-border-radius:10px 0 0 10px;-moz-border-radius:10px 0 0 10px;-o-border-radius:10px 0 0 10px;border-radius:10px 0 0 10px}.annotator-filter .annotator-filter-property label{padding-left:8px}.annotator-filter .annotator-filter-property input{display:block;float:right;-webkit-appearance:none;background-color:#fff;border:1px solid #878787;border-left:none;padding:2px 4px;line-height:16px;min-height:16px;font-size:12px;width:150px;color:#333;background-color:#f8f8f8;-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);-o-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px rgba(0,0,0,.2)}.annotator-filter .annotator-filter-property input:focus{outline:none;background-color:#fff}.annotator-filter .annotator-filter-clear{position:absolute;right:3px;top:6px;border:none;text-indent:-900em;width:15px;height:15px;background-position:0 -90px;opacity:.4}.annotator-filter .annotator-filter-clear:focus,.annotator-filter .annotator-filter-clear:hover{opacity:.8}.annotator-filter .annotator-filter-clear:active{opacity:1}.annotator-filter .annotator-filter-navigation button{border:1px solid #a2a2a2;padding:0;text-indent:-900px;width:20px;min-height:22px;-webkit-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-moz-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);-o-box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8);box-shadow:inset 0 0 5px hsla(0,0%,100%,.2),inset 0 0 1px hsla(0,0%,100%,.8)}.annotator-filter .annotator-filter-navigation button,.annotator-filter .annotator-filter-navigation button:focus,.annotator-filter .annotator-filter-navigation button:hover{color:transparent}.annotator-filter .annotator-filter-navigation button:after{position:absolute;top:8px;left:8px;content:"";display:block;width:9px;height:9px;background-position:0 -210px}.annotator-filter .annotator-filter-navigation button:hover:after{background-position:0 -225px}.annotator-filter .annotator-filter-navigation .annotator-filter-next{-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;border-left:none}.annotator-filter .annotator-filter-navigation .annotator-filter-next:after{left:auto;right:7px;background-position:0 -240px}.annotator-filter .annotator-filter-navigation .annotator-filter-next:hover:after{background-position:0 -255px}.annotator-hl-active{background:#ffff0a;background:rgba(255,255,10,.8);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#CCFFFF0A, endColorstr=#CCFFFF0A)"}.annotator-hl-filtered{background-color:transparent}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(fonts/MaterialIcons-Regular.eot);src:local("Material Icons"),local("MaterialIcons-Regular"),url(fonts/MaterialIcons-Regular.woff2) format("woff2"),url(fonts/MaterialIcons-Regular.woff) format("woff"),url(fonts/MaterialIcons-Regular.ttf) format("truetype")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}@font-face{font-family:Lato;font-weight:100;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-hairline.woff2) format("woff2"),url(fonts/lato-hairline.woff) format("woff")}@font-face{font-family:Lato;font-weight:100;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-hairline-italic.woff2) format("woff2"),url(fonts/lato-hairline-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:200;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-thin.woff2) format("woff2"),url(fonts/lato-thin.woff) format("woff")}@font-face{font-family:Lato;font-weight:200;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-thin-italic.woff2) format("woff2"),url(fonts/lato-thin-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:300;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-light.woff2) format("woff2"),url(fonts/lato-light.woff) format("woff")}@font-face{font-family:Lato;font-weight:300;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-light-italic.woff2) format("woff2"),url(fonts/lato-light-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:400;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-normal.woff2) format("woff2"),url(fonts/lato-normal.woff) format("woff")}@font-face{font-family:Lato;font-weight:400;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-normal-italic.woff2) format("woff2"),url(fonts/lato-normal-italic.woff) format("woff")}@font-face{font-family:Lato Medium;font-weight:400;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-medium.woff2) format("woff2"),url(fonts/lato-medium.woff) format("woff")}@font-face{font-family:Lato Medium;font-weight:400;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-medium-italic.woff2) format("woff2"),url(fonts/lato-medium-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:500;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-semibold.woff2) format("woff2"),url(fonts/lato-semibold.woff) format("woff")}@font-face{font-family:Lato;font-weight:500;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-semibold-italic.woff2) format("woff2"),url(fonts/lato-semibold-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:600;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-bold.woff2) format("woff2"),url(fonts/lato-bold.woff) format("woff")}@font-face{font-family:Lato;font-weight:600;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-bold-italic.woff2) format("woff2"),url(fonts/lato-bold-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:800;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-heavy.woff2) format("woff2"),url(fonts/lato-heavy.woff) format("woff")}@font-face{font-family:Lato;font-weight:800;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-heavy-italic.woff2) format("woff2"),url(fonts/lato-heavy-italic.woff) format("woff")}@font-face{font-family:Lato;font-weight:900;font-style:normal;text-rendering:optimizeLegibility;src:url(fonts/lato-black.woff2) format("woff2"),url(fonts/lato-black.woff) format("woff")}@font-face{font-family:Lato;font-weight:900;font-style:italic;text-rendering:optimizeLegibility;src:url(fonts/lato-black-italic.woff2) format("woff2"),url(fonts/lato-black-italic.woff) format("woff")}.material-icons.md-18{font-size:18px}.material-icons.md-24{font-size:24px}.material-icons.md-36{font-size:36px}.material-icons.md-48{font-size:48px}.material-icons.md-dark{color:rgba(0,0,0,.54)}.material-icons.md-dark.md-inactive{color:rgba(0,0,0,.26)}.material-icons.md-light{color:#fff}.material-icons.md-light.md-inactive{color:hsla(0,0%,100%,.3)}.hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-built_in,.hljs-class .hljs-title{color:#c18401}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}#article{font-size:20px;margin:0 auto;max-width:45em}#article article{color:#424242;font-size:18px;line-height:1.7em;overflow-wrap:break-word}#article article h1,#article article h2,#article article h3,#article article h4,#article article h5,#article article h6{color:#212121}#article article h1 strong,#article article h2 strong,#article article h3 strong,#article article h4 strong,#article article h5 strong,#article article h6 strong{font-weight:500}#article article h6{font-size:1.2rem}#article article h5{font-size:1.6rem}#article article h4{font-size:1.9rem}#article article h3{font-size:2.2rem}#article article h2{font-size:2.5rem}#article article h1{font-size:2.7rem}#article article a{border-bottom:1px dotted #03a9f4;text-decoration:none}#article article a:hover{border-bottom-style:solid}#article article ul{padding-left:30px}#article article ul,#article article ul li{list-style-type:disc}#article article blockquote{font-style:italic}#article article strong{font-weight:700}#article figure,#article img{max-width:100%;height:auto}#article pre{box-sizing:border-box;margin:0 0 1.75em;border:1px solid #e3f2fd;width:100%;padding:10px;font-family:monospace;font-size:.8em;white-space:pre;overflow:auto;background:#f5f5f5;border-radius:3px}#article>header>h1{font-size:2em;margin:2.1rem 0 .68rem}#article aside .tools{display:flex;flex-flow:row wrap}#article aside .tools .stats{font-size:.8em;margin:8px 5px 5px}#article aside .tools .stats li{display:inline-flex;vertical-align:middle;margin:3px 5px}#article aside .tools .stats li i.material-icons{color:#3e3e3e;margin-right:3px}#article aside .tools .stats a{color:#000;text-decoration:none}#article aside .tools .tags{float:right;margin:5px 15px 10px}#article aside .chip{background-color:rgba(0,151,167,.85);padding:0 15px 0 10px;margin:auto 2px;border-radius:6px}#article aside .chip a,#article aside .chip i{color:#fff}#article aside .chip i.material-icons{float:right;font-size:20px;line-height:32px;padding-left:8px}.reader-mode{width:70px!important;transition:width .2s ease}.reader-mode .collapsible-body{height:0;overflow:hidden}.reader-mode span{opacity:0;transition:opacity .2s ease}.reader-mode:hover{width:260px!important}.reader-mode:hover .collapsible-body{height:auto}.reader-mode:hover .collapsible-body li a i.material-icons{margin:auto 5px auto -8px}.reader-mode:hover span{opacity:1}.progress{position:fixed;top:0;width:100%;height:3px;margin:0;z-index:9999}main #content{padding:0 .5rem}main ul.row{margin:.4rem 0 0;padding:0 .75rem}.data .card .card-body{height:19em;overflow:hidden}.card .card-content .card-title,.card .card-reveal .card-title{line-height:22.8px;max-height:80px;font-size:19px;font-family:roberto,Helvetica Neue,Helvetica,Arial,sans-serif}.card .card-stacked .card-content .card-title{display:inline-block}.card .card-content .activator,.card .card-reveal .activator{cursor:pointer;font-family:Material Icons}.card .card-content i.right,.card .card-reveal i.right{margin-left:0}.card .card-content .original{line-height:24px;font-size:15px}.card .card-entry-labels{position:absolute;top:10px;z-index:90;max-width:50%}.card .card-entry-labels-hidden{margin:2.5px auto}.card .card-entry-labels-hidden li{display:inline-block;background-color:rgba(0,151,167,.85);margin:0 5px;padding:5px 12px;border-radius:3px;color:#fff;max-height:2em;max-width:calc(100% - 15px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .card-content .estimatedTime{margin-bottom:10px}.card .card-action{padding:10px 5px 10px 15px}.card .card-action ul.links{margin:0;font-size:24px;line-height:24px}.card .card-action a{color:#fff;margin:0}.card .card-action a:hover{color:#fff}.card .card-action ul.tools li a.tool{margin-right:5px!important}.card .card-action .reading-time{display:inline-flex;vertical-align:middle}.card .card-action .reading-time .card-created-at,.card .card-action .reading-time .card-reading-time{display:inline-flex}.card .card-action .reading-time span{margin-right:5px}.card .card-image{height:10em}.card .card-fullimage{height:13.5em}.card.sw{max-width:370px;margin-left:auto;margin-right:auto}a.original:not(.waves-effect){text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block}.card-stacked .preview,.card .card-fullimage .preview,.card .card-image .preview{height:100%;background:no-repeat 50%/cover;background-color:#efefef;display:block}.card-stacked .preview--default,.card .card-fullimage .preview--default,.card .card-image .preview--default{background-size:contain}.card-entry-labels li,.card-tag-labels li{margin:10px 10px 10px auto;padding:5px 12px 5px 16px!important;background-color:rgba(0,151,167,.85);border-radius:3px;color:#fff;cursor:default}.card-entry-labels li{text-overflow:ellipsis;white-space:nowrap;border-radius:0 3px 3px 0;overflow:hidden}.card-tag-labels li{display:flex;justify-content:space-between}#list .chip a,.card-entry-labels-hidden a,.card-entry-labels a,.card-entry-tags a,.card-tag-labels a{text-decoration:none;font-weight:400;color:#fff}.card-tag-labels a{height:100%;align-items:center}.card-tag-form,.card-tag-link{display:flex;min-width:100px;flex-grow:1}.card-tag-form input{margin-bottom:0;height:2rem}.card-tag-rss{display:flex}.card-tag-labels{display:flex;flex-wrap:wrap}.card-tag-labels li{margin:10px;flex-basis:19%;flex-grow:1;align-items:center}.card-stacked{display:flex;flex-flow:row wrap}.card-stacked:hover ul.tools-list{display:inline;text-align:right}.card-stacked .card-preview{max-width:100px;max-height:50px;margin-right:10px;flex:1}.card-stacked div.metadata{overflow:hidden;height:1.5em;display:flex}.card-stacked div.metadata ul.tags{margin-left:4px}.card-stacked div.metadata .chip{background-color:rgba(0,151,167,.85);padding:0 7px;margin:auto 1px;border-radius:6px;line-height:22px;height:22px}.card-stacked div.metadata .chip a,.card-stacked div.metadata .chip i{color:#fff}.card-stacked div.metadata .chip i.material-icons{float:right;font-size:20px;line-height:32px;padding-left:8px}.card-stacked div.metadata .reading-time{display:inline-flex;vertical-align:middle;padding:0 5px;flex-wrap:wrap;margin-left:auto}.card-stacked div.metadata .reading-time .card-created-at,.card-stacked div.metadata .reading-time .card-reading-time{display:inline-flex}.card-stacked div.metadata .reading-time span{margin-right:5px}.card-stacked div.metadata .reading-time i.material-icons{font-size:20px}.card-stacked div.card-content{flex:4}.card-stacked ul.tools-list{flex:1;display:none;flex-basis:5em;align-self:flex-end;float:right;max-width:6em}.card-stacked .tags{display:inline-block}#content .collection .collection-item{min-height:65px;height:auto}.quickstart .card .card-action a,.quickstart .card .card-action a:hover{color:#fff!important}.settings .div_tabs{padding-bottom:15px}.collection{margin:15px 15px 0}.collection .collection-item{padding:7px;height:65px}.results{display:flex;padding:1rem 1rem 0;flex-wrap:wrap;justify-content:space-between}.results .nb-results{display:inline-flex}.results a{color:#444}.pagination ul{display:flex;margin:0;flex-wrap:wrap;justify-content:space-around}.pagination ul .next.disabled,.pagination ul .prev.disabled{display:none}.pagination li{padding:0}.pagination a,.pagination span{padding:0 10px;height:30px;display:block;line-height:30px}.pagination .disabled{margin-right:10px;margin-left:10px}.pagination li.active span{padding:0 10px;height:30px;display:block;color:#fff}.footer-text{margin:.7rem .5rem}.hidden,.picker__date-display{display:none}footer.page-footer{margin-top:10px;padding-top:0}footer .row{margin-bottom:10px}#filters button{padding:0;width:100%}#filters div.with-checkbox{height:3rem;margin-top:0}body{display:flex;min-height:100vh;flex-direction:column;background:#fafafa}body.login main{padding:0;min-height:100vh}.border-bottom{border-bottom:1px solid #ddd}#content,.valign-wrapper,main{height:100%}.typo-logo{max-width:150px}#main{flex:1 0 auto}#main .logo a{height:100pt}#main .logo img{height:100pt;width:100pt}#main .logo:hover{background:transparent}nav{height:auto;line-height:normal}nav input{color:#aaa}nav ul a:hover{background-color:initial}.nav-panel-item .button-collapse{margin-left:0;margin-right:.5rem;padding:0 .5rem;height:auto;line-height:1;background-color:transparent;border:none}.nav-panel-item{display:flex;padding:.6rem .4rem .6rem .75rem;flex-wrap:wrap;justify-content:space-between;align-items:center}.nav-panel-item .material-icons{height:46px;line-height:46px}.nav-input{display:none}.nav-panel-buttom{display:flex;flex-grow:1;justify-content:flex-end}.nav-panel-item .add,.nav-panel-item .search,.nav-panels .close{color:#444!important}.nav-panels{transition:background .2s ease}.nav-panels .action{margin:0;font-size:2.1rem}.nav-panels .input-field input{display:block;line-height:inherit;height:3rem}.nav-panels .input-field input:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.nav-panel-top{display:flex;align-items:center}.input-field.nav-panel-item label{left:1rem}.input-field.nav-panel-item .close{color:transparent;cursor:pointer;font-size:2rem;transition:color .3s}.input-field.nav-panel-item{display:flex;flex:1;flex-wrap:nowrap;align-items:center}.input-field.nav-panel-add.disabled,.input-field.nav-panel-add.disabled input{background-color:#f5f5f5}.nav-form-button{padding:0;background-color:transparent;border:none}.nav-form-button:focus{background-color:inherit}.nav-form-button,.nav-panel-item .close{margin:0 1%}#button_export,#button_filters{display:none}@media (min-width:993px){.button-collapse{display:none}}.side-nav{width:240px}.side-nav li{padding:0}.side-nav li.logo>a:hover{background:initial}.side-nav a{margin:0}.side-nav.fixed a{font-size:13px;line-height:44px;height:44px}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{height:45px;line-height:44px;padding:0 20px}.side-nav>li.logo{line-height:0;text-align:center}.bold>a{font-weight:700}span.numberItems{float:right}div.settings div.file-field div,div.settings div.file-field ul{margin-top:40px}div.settings div.file-field div{margin-top:inherit}.input-field label.active{font-size:1rem}nav .input-field input{margin:0;padding-left:.5rem}.tabs{display:flex}.tab{flex:1}@font-face{font-family:icomoon;src:url(fonts/IcoMoon-Free.ttf);font-weight:400;font-style:normal}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;width:1em;height:1em;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}.material-icons .md-18{font-size:18px}.material-icons .md-24{font-size:24px}.material-icons .md-36{font-size:36px}.material-icons .md-48{font-size:48px}.material-icons .md-dark{color:rgba(0,0,0,.54)}.material-icons .md-dark .md-inactive{color:rgba(0,0,0,.26)}.material-icons .md-light{color:#fff}.material-icons .md-light .md-inactive{color:hsla(0,0%,100%,.3)}[class*=" icon-"]:before,[class^=icon-]:before{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;background-size:24px;letter-spacing:0;font-feature-settings:"liga"}.icon-eye:before{content:"\E9CE"}.icon-no-eye:before{content:"\E9D1"}.icon-calendar:before{content:"\E953"}.icon-mail:before{content:"\EA86"}.icon-time:before{content:"\E952"}a.icon-image{background-repeat:no-repeat;padding-right:.4em!important;padding-left:0!important;margin-left:25px}a.icon-image:before{content:"";display:block;width:24px;height:24px;float:left;margin:7px 1.5px 0 0}a.icon-image.carrot:before{background:url(themes/_global/img/icons/carrot-icon--black.png) no-repeat 50%/90%}a.icon-image.diaspora:before{background:url(themes/_global/img/icons/diaspora-icon--black.png) no-repeat 50%/80%}a.icon-image.unmark:before{background:url(themes/_global/img/icons/unmark-icon--black.png) no-repeat 50%/80%}a.icon-image.shaarli:before{background:url(themes/_global/img/icons/shaarli.png) no-repeat 50%/80%}a.icon-image.scuttle:before{background:url(themes/_global/img/icons/scuttle.png) no-repeat 50%/80%}.icon-google-plus2:before{content:"\EA89"}.icon-facebook2:before{content:"\EA8D"}.icon-twitter:before{content:"\EA96"}.icon-apple:before{content:"\EABF"}.icon-android:before{content:"\EAC1"}.icon-chrome:before{content:"\EAE5"}.icon-firefox:before{content:"\EAE6"}.icon-link:before{content:"\E9CB"}footer [class*=" icon-"],footer [class^=icon-]{font-size:2em;transition:text-shadow .2s ease;padding-right:10px}footer [class*=" icon-"]:hover,footer [class^=icon-]:hover{text-shadow:0 0 10px rgba(0,0,0,.3)}@media print{body{font-family:Serif;background-color:#fff}@page{margin:1cm}img{max-width:100%!important}#article .mbm a,#article>aside,#article_toolbar,#links,#slide-out,#sort,.entry+.results,.hide-on-large-only,.messages,.progress,.top_link,body>footer,body>header,div.tools,header div{display:none!important}main{padding-left:0!important}#article{margin:inherit!important}article{border:none!important}.vieworiginal a:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.pagination span.current{border-style:dashed}#main{margin:0;padding:0}#article,#main{width:100%}}@media only screen and (min-width:992px){body:not(.entry):not(.login) main,footer,nav{padding-left:240px}.pagination{margin-left:auto}.card-tag-labels li{max-width:50%}}@media screen and (min-width:993px){body.entry main #content{padding-left:70px}}@media only screen and (max-width:992px){footer,header,main,nav{padding-left:0}table{display:block;overflow:auto}iframe{max-width:100%;height:auto}.nav-panels .action{padding-right:.75rem}.nav-panel-buttom{justify-content:space-between}#article{max-width:35em;margin-left:auto;margin-right:auto;font-size:18px}#article>header>h1{font-size:1.33em}.reader-mode{width:240px!important}.reader-mode span{opacity:1}.tabs{display:inline-block;height:auto}.tab{min-width:100%}.indicator{display:none}.pagination li{margin-bottom:.5rem}.pagination li.next,.pagination li.prev{width:auto}.drag-target+.drag-target{height:50%}.drag-target+.drag-target+.drag-target{top:50%}}@media only screen and (min-width:1200px) and (max-width:1650px){.row .col.l3{width:33.33333%;margin-left:0}}@media only screen and (min-width:993px) and (max-width:1200px){.row .col.l1{width:25%;margin-left:0}.row .col.l2{width:33.33333%;margin-left:0}.row .col.l3{width:41.66667%;margin-left:0}.row .col.l4{width:50%;margin-left:0}.row .col.l5{width:58.33333%;margin-left:0}.row .col.l6{width:66.66667%;margin-left:0}.row .col.l7{width:75%;margin-left:0}.row .col.l8{width:83.33333%;margin-left:0}.row .col.l9{width:91.66667%;margin-left:0}.row .col.l10{width:100%;margin-left:0}}@media only screen and (max-width:350px){.nb-results{display:none}.row .col,main ul.row{padding:0}.card-stacked div.metadata .reading-time{display:none}}@media screen and (max-width:310px),screen and (min-width:601px) and (max-width:660px),screen and (min-width:993px) and (max-width:1050px),screen and (min-width:1201px) and (max-width:1250px){.card .card-action .reading-time .card-created-at{display:none}} |
2 | /*# sourceMappingURL=material.css.map*/ \ No newline at end of file | 2 | /*# sourceMappingURL=material.css.map*/ \ No newline at end of file |